From 22e65d1a0b90264e05ea661d7b901b547523f1e9 Mon Sep 17 00:00:00 2001 From: V-Coder Date: Sun, 21 Nov 2021 14:44:41 +0330 Subject: [PATCH 01/12] Inherit from ERC20Permit Add IDEI.sol Add IDEUS.sol --- src/hardhat/contracts/DEI/DEI.sol | 13 +-- src/hardhat/contracts/DEI/IDEI.sol | 57 +++++-------- src/hardhat/contracts/DEUS/DEUS.sol | 18 ++-- src/hardhat/contracts/DEUS/IDEUS.sol | 46 ++-------- .../contracts/ERC20/draft-ERC20Permit.sol | 85 +++++++++++++++++++ .../Uniswap/Interfaces/IUniswapV2Pair.sol | 15 +--- 6 files changed, 126 insertions(+), 108 deletions(-) create mode 100644 src/hardhat/contracts/ERC20/draft-ERC20Permit.sol diff --git a/src/hardhat/contracts/DEI/DEI.sol b/src/hardhat/contracts/DEI/DEI.sol index 9fe47842..0b10cacc 100755 --- a/src/hardhat/contracts/DEI/DEI.sol +++ b/src/hardhat/contracts/DEI/DEI.sol @@ -25,18 +25,13 @@ pragma solidity ^0.8.0; // Reviewer(s) / Contributor(s) // Sam Sun: https://github.com/samczsun -import "../Common/Context.sol"; -import "../ERC20/IERC20.sol"; -import "../ERC20/ERC20Custom.sol"; -import "../ERC20/ERC20.sol"; -import "../Staking/Owned.sol"; -import "../DEUS/DEUS.sol"; import "./Pools/DEIPool.sol"; import "../Oracle/Oracle.sol"; import "../Oracle/ReserveTracker.sol"; -import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import "../ERC20/draft-ERC20Permit.sol"; +import "../Governance/AccessControl.sol"; -contract DEIStablecoin is ERC20Custom, AccessControl { +contract DEIStablecoin is ERC20Permit, AccessControl { using ECDSA for bytes32; /* ========== STATE VARIABLES ========== */ @@ -121,7 +116,7 @@ contract DEIStablecoin is ERC20Custom, AccessControl { string memory _symbol, address _creator_address, address _trusty_address - ){ + ) ERC20Permit(name) { require( _creator_address != address(0), "DEI: zero address detected." diff --git a/src/hardhat/contracts/DEI/IDEI.sol b/src/hardhat/contracts/DEI/IDEI.sol index bc97ce5c..b0b1400e 100644 --- a/src/hardhat/contracts/DEI/IDEI.sol +++ b/src/hardhat/contracts/DEI/IDEI.sol @@ -4,44 +4,31 @@ // SPDX-License-Identifier: GPL-2.0-or-later interface IDEIStablecoin { - + function name() external view returns (string memory); + function symbol() external view returns (string memory); function totalSupply() external view returns (uint256); - function global_collateral_ratio() external view returns (uint256); - + function dei_pools(address _address) external view returns (bool); + function dei_pools_array() external view returns (address[] memory); function verify_price(bytes32 sighash, bytes[] calldata sigs) external view returns (bool); - - function dei_info(uint256 eth_usd_price, uint256 eth_collat_price) - external - view - returns ( - uint256, - uint256, - uint256 - ); - - function globalCollateralValue(uint256[] memory collat_usd_price) external view returns (uint256); - - function refreshCollateralRatio(uint256 dei_price_cur, uint256 expireBlock, bytes[] calldata sigs) external; - - function pool_burn_from(address b_address, uint256 b_amount) external; - - function pool_mint(address m_address, uint256 m_amount) external; - - function addPool(address pool_address) external; - - function removePool(address pool_address) external; - - function setDEIStep(uint256 _new_step) external; - - function setPriceTarget(uint256 _new_price_target) external; - - function setRefreshCooldown(uint256 _new_cooldown) external; - - function setDEUSAddress(address _deus_address) external; - - function setPriceBand(uint256 _price_band) external; - + function dei_info(uint256[] memory collat_usd_price) external view returns (uint256, uint256, uint256); + function getChainID() external view returns (uint256); + function globalCollateralValue(uint256[] memory collat_usd_price) external view returns (uint256); + function refreshCollateralRatio(uint deus_price, uint dei_price, uint256 expire_block, bytes[] calldata sigs) external; + function useGrowthRatio(bool _use_growth_ratio) external; + function setGrowthRatioBands(uint256 _GR_top_band, uint256 _GR_bottom_band) external; + function setPriceBands(uint256 _top_band, uint256 _bottom_band) external; + function activateDIP(bool _activate) external; + function pool_burn_from(address b_address, uint256 b_amount) external; + function pool_mint(address m_address, uint256 m_amount) external; + function addPool(address pool_address) external; + function removePool(address pool_address) external; + function setNameAndSymbol(string memory _name, string memory _symbol) external; + function setOracle(address _oracle) external; + function setDEIStep(uint256 _new_step) external; + function setReserveTracker(address _reserve_tracker_address) external; + function setRefreshCooldown(uint256 _new_cooldown) external; + function setDEUSAddress(address _deus_address) external; function toggleCollateralRatio() external; } diff --git a/src/hardhat/contracts/DEUS/DEUS.sol b/src/hardhat/contracts/DEUS/DEUS.sol index f2989341..8e194af4 100755 --- a/src/hardhat/contracts/DEUS/DEUS.sol +++ b/src/hardhat/contracts/DEUS/DEUS.sol @@ -25,13 +25,11 @@ pragma solidity ^0.8.9; // Reviewer(s) / Contributor(s) // Sam Sun: https://github.com/samczsun -import "../Common/Context.sol"; -import "../ERC20/ERC20Custom.sol"; -import "../ERC20/IERC20.sol"; -import "../DEI/DEI.sol"; +import "../DEI/IDEI.sol"; +import "../ERC20/draft-ERC20Permit.sol"; import "../Governance/AccessControl.sol"; -contract DEUSToken is ERC20Custom, AccessControl { +contract DEUSToken is ERC20Permit, AccessControl { /* ========== STATE VARIABLES ========== */ @@ -41,7 +39,7 @@ contract DEUSToken is ERC20Custom, AccessControl { uint256 public constant genesis_supply = 166670e18; // 166670 is printed upon genesis - DEIStablecoin private DEI; + address public dei_contract_address; bytes32 public constant TRUSTY_ROLE = keccak256("TRUSTY_ROLE"); bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); @@ -50,7 +48,7 @@ contract DEUSToken is ERC20Custom, AccessControl { modifier onlyPoolsOrMinters() { require( - DEI.dei_pools(msg.sender) == true || hasRole(MINTER_ROLE, msg.sender), + IDEIStablecoin(dei_contract_address).dei_pools(msg.sender) == true || hasRole(MINTER_ROLE, msg.sender), "DEUS: Only dei pools or minters are allowed to do this operation" ); _; @@ -58,7 +56,7 @@ contract DEUSToken is ERC20Custom, AccessControl { modifier onlyPools() { require( - DEI.dei_pools(msg.sender) == true, + IDEIStablecoin(dei_contract_address).dei_pools(msg.sender) == true, "DEUS: Only dei pools are allowed to do this operation" ); _; @@ -76,7 +74,7 @@ contract DEUSToken is ERC20Custom, AccessControl { string memory _symbol, address _creator_address, address _trusty_address - ) { + ) ERC20Permit(name) { require(_creator_address != address(0), "DEUS::constructor: zero address detected"); name = _name; symbol = _symbol; @@ -99,7 +97,7 @@ contract DEUSToken is ERC20Custom, AccessControl { { require(dei_contract_address != address(0), "DEUS::setDEIAddress: Zero address detected"); - DEI = DEIStablecoin(dei_contract_address); + dei_contract_address = dei_contract_address; emit DEIAddressSet(dei_contract_address); } diff --git a/src/hardhat/contracts/DEUS/IDEUS.sol b/src/hardhat/contracts/DEUS/IDEUS.sol index 764f362c..0f706618 100644 --- a/src/hardhat/contracts/DEUS/IDEUS.sol +++ b/src/hardhat/contracts/DEUS/IDEUS.sol @@ -4,47 +4,13 @@ // SPDX-License-Identifier: GPL-2.0-or-later interface IDEUSToken { - function setDEIAddress(address dei_contract_address) external; - function mint(address to, uint256 amount) external; - - // This function is what other dei pools will call to mint new DEUS (similar to the DEI mint) - function pool_mint(address m_address, uint256 m_amount) external; - - // This function is what other dei pools will call to burn DEUS + function name() external view returns (string memory); + function symbol() external view returns (string memory); function pool_burn_from(address b_address, uint256 b_amount) external; - - function toggleVotes() external; - - /* ========== OVERRIDDEN PUBLIC FUNCTIONS ========== */ - - function transfer(address recipient, uint256 amount) external returns (bool); - - function transferFrom( - address sender, - address recipient, - uint256 amount - ) external returns (bool); - - /* ========== PUBLIC FUNCTIONS ========== */ - - /** - * @notice Gets the current votes balance for `account` - * @param account The address to get votes balance - * @return The number of current votes for `account` - */ - function getCurrentVotes(address account) external view returns (uint96); - - /** - * @notice Determine the prior number of votes for an account as of a block number - * @dev Block number must be a finalized block or else this function will revert to prevent misinformation. - * @param account The address of the account to check - * @param blockNumber The block number to get the vote balance at - * @return The number of votes the account had as of the given block - */ - function getPriorVotes(address account, uint256 blockNumber) - external - view - returns (uint96); + function pool_mint(address m_address, uint256 m_amount) external; + function mint(address to, uint256 amount) external; + function setDEIAddress(address dei_contract_address) external; + function setNameAndSymbol(string memory _name, string memory _symbol) external; } //Dar panah khoda \ No newline at end of file diff --git a/src/hardhat/contracts/ERC20/draft-ERC20Permit.sol b/src/hardhat/contracts/ERC20/draft-ERC20Permit.sol new file mode 100644 index 00000000..52984174 --- /dev/null +++ b/src/hardhat/contracts/ERC20/draft-ERC20Permit.sol @@ -0,0 +1,85 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.0; + +import "./ERC20Custom.sol"; +import "@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol"; +import "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol"; +import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import "@openzeppelin/contracts/utils/Counters.sol"; + +/** + * @dev Implementation 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. + * + * _Available since v3.4._ + */ +abstract contract ERC20Permit is ERC20Custom, IERC20Permit, EIP712 { + using Counters for Counters.Counter; + + mapping(address => Counters.Counter) private _nonces; + + // solhint-disable-next-line var-name-mixedcase + bytes32 private immutable _PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); + + /** + * @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `"1"`. + * + * It's a good idea to use the same `name` that is defined as the ERC20 token name. + */ + constructor(string memory name) EIP712(name, "1") {} + + /** + * @dev See {IERC20Permit-permit}. + */ + function permit( + address owner, + address spender, + uint256 value, + uint256 deadline, + uint8 v, + bytes32 r, + bytes32 s + ) public virtual override { + require(block.timestamp <= deadline, "ERC20Permit: expired deadline"); + + bytes32 structHash = keccak256(abi.encode(_PERMIT_TYPEHASH, owner, spender, value, _useNonce(owner), deadline)); + + bytes32 hash = _hashTypedDataV4(structHash); + + address signer = ECDSA.recover(hash, v, r, s); + require(signer == owner, "ERC20Permit: invalid signature"); + + _approve(owner, spender, value); + } + + /** + * @dev See {IERC20Permit-nonces}. + */ + function nonces(address owner) public view virtual override returns (uint256) { + return _nonces[owner].current(); + } + + /** + * @dev See {IERC20Permit-DOMAIN_SEPARATOR}. + */ + // solhint-disable-next-line func-name-mixedcase + function DOMAIN_SEPARATOR() external view override returns (bytes32) { + return _domainSeparatorV4(); + } + + /** + * @dev "Consume a nonce": return the current value and increment. + * + * _Available since v4.1._ + */ + function _useNonce(address owner) internal virtual returns (uint256 current) { + Counters.Counter storage nonce = _nonces[owner]; + current = nonce.current(); + nonce.increment(); + } +} diff --git a/src/hardhat/contracts/Uniswap/Interfaces/IUniswapV2Pair.sol b/src/hardhat/contracts/Uniswap/Interfaces/IUniswapV2Pair.sol index 0e5c8d6e..41b5e904 100755 --- a/src/hardhat/contracts/Uniswap/Interfaces/IUniswapV2Pair.sol +++ b/src/hardhat/contracts/Uniswap/Interfaces/IUniswapV2Pair.sol @@ -49,18 +49,5 @@ interface IUniswapV2Pair { function skim(address to) external; function sync() external; - function initialize(address, address) external; - - - - - - - - - - - - - + function initialize(address, address) external; } From d082c89f70c72d71277c60886662b0e682c97b38 Mon Sep 17 00:00:00 2001 From: V-Coder Date: Mon, 22 Nov 2021 09:50:28 +0330 Subject: [PATCH 02/12] Comment toggleVotes() command --- src/hardhat/scripts/deploy_bsc.js | 2 +- src/hardhat/scripts/deploy_fantom.js | 2 +- src/hardhat/scripts/deploy_rinkeby.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/hardhat/scripts/deploy_bsc.js b/src/hardhat/scripts/deploy_bsc.js index 244120e6..643b188f 100644 --- a/src/hardhat/scripts/deploy_bsc.js +++ b/src/hardhat/scripts/deploy_bsc.js @@ -171,7 +171,7 @@ async function main() { await deus.setDEIAddress(dei.address); await deus.grantRole(deus.MINTER_ROLE(), stakingDEI_DEUS.address); await deus.grantRole(deus.MINTER_ROLE(), stakingDEI_USDC.address); - await deus.toggleVotes(); + // await deus.toggleVotes(); await reserveTracker.addDEUSPair(dei_deusAddress); diff --git a/src/hardhat/scripts/deploy_fantom.js b/src/hardhat/scripts/deploy_fantom.js index 1741a07e..4714c6b9 100644 --- a/src/hardhat/scripts/deploy_fantom.js +++ b/src/hardhat/scripts/deploy_fantom.js @@ -171,7 +171,7 @@ async function main() { await deus.setDEIAddress(dei.address); await deus.grantRole(deus.MINTER_ROLE(), stakingDEI_DEUS.address); await deus.grantRole(deus.MINTER_ROLE(), stakingDEI_USDC.address); - await deus.toggleVotes(); + // await deus.toggleVotes(); // Note: we dont support onchain voting now await reserveTracker.addDEUSPair(dei_deusAddress); diff --git a/src/hardhat/scripts/deploy_rinkeby.js b/src/hardhat/scripts/deploy_rinkeby.js index ce48fd56..c60dfb43 100644 --- a/src/hardhat/scripts/deploy_rinkeby.js +++ b/src/hardhat/scripts/deploy_rinkeby.js @@ -171,7 +171,7 @@ async function main() { await deus.setDEIAddress(dei.address); await deus.grantRole(deus.MINTER_ROLE(), stakingDEI_DEUS.address); await deus.grantRole(deus.MINTER_ROLE(), stakingDEI_USDC.address); - await deus.toggleVotes(); + // await deus.toggleVotes(); await reserveTracker.addDEUSPair(dei_deusAddress); From e9363cf390e87c5d933d8e95963c935457e9d594 Mon Sep 17 00:00:00 2001 From: V-Coder Date: Mon, 22 Nov 2021 10:19:34 +0330 Subject: [PATCH 03/12] Remove old files --- .../ERC20/Variants/CRV_DAO_ERC20_Mock.sol | 11 - src/hardhat/contracts/ERC20/Variants/Comp.sol | 304 ------- src/hardhat/contracts/ERC20/Variants/FNX.sol | 8 - .../ERC20/Variants/FRAX3CRV_Mock.sol | 11 - .../ERC20/Variants/FRAX3CRV_V2_Mock.sol | 11 - .../contracts/ERC20/Variants/FarmToken.sol | 8 - .../contracts/ERC20/Variants/IDLEToken.sol | 8 - .../contracts/ERC20/Variants/IQToken.sol | 8 - src/hardhat/contracts/ERC20/Variants/OHM.sol | 8 - .../contracts/ERC20/Variants/RookToken.sol | 8 - .../contracts/ERC20/Variants/SushiToken.sol | 245 ------ src/hardhat/contracts/ERC20/WETH.sol | 769 ------------------ src/hardhat/contracts/Staking/Pausable.sol | 46 -- 13 files changed, 1445 deletions(-) delete mode 100644 src/hardhat/contracts/ERC20/Variants/CRV_DAO_ERC20_Mock.sol delete mode 100644 src/hardhat/contracts/ERC20/Variants/Comp.sol delete mode 100644 src/hardhat/contracts/ERC20/Variants/FNX.sol delete mode 100644 src/hardhat/contracts/ERC20/Variants/FRAX3CRV_Mock.sol delete mode 100644 src/hardhat/contracts/ERC20/Variants/FRAX3CRV_V2_Mock.sol delete mode 100644 src/hardhat/contracts/ERC20/Variants/FarmToken.sol delete mode 100644 src/hardhat/contracts/ERC20/Variants/IDLEToken.sol delete mode 100644 src/hardhat/contracts/ERC20/Variants/IQToken.sol delete mode 100644 src/hardhat/contracts/ERC20/Variants/OHM.sol delete mode 100644 src/hardhat/contracts/ERC20/Variants/RookToken.sol delete mode 100644 src/hardhat/contracts/ERC20/Variants/SushiToken.sol delete mode 100755 src/hardhat/contracts/ERC20/WETH.sol delete mode 100755 src/hardhat/contracts/Staking/Pausable.sol diff --git a/src/hardhat/contracts/ERC20/Variants/CRV_DAO_ERC20_Mock.sol b/src/hardhat/contracts/ERC20/Variants/CRV_DAO_ERC20_Mock.sol deleted file mode 100644 index 89fa113e..00000000 --- a/src/hardhat/contracts/ERC20/Variants/CRV_DAO_ERC20_Mock.sol +++ /dev/null @@ -1,11 +0,0 @@ -// SPDX-License-Identifier: MIT - -pragma solidity >=0.6.11; - -import "../ERC20.sol"; - -contract CRV_DAO_ERC20_Mock is ERC20 { - constructor() - ERC20("Curve DAO Token", "CRV") - {} -} \ No newline at end of file diff --git a/src/hardhat/contracts/ERC20/Variants/Comp.sol b/src/hardhat/contracts/ERC20/Variants/Comp.sol deleted file mode 100644 index 42be3336..00000000 --- a/src/hardhat/contracts/ERC20/Variants/Comp.sol +++ /dev/null @@ -1,304 +0,0 @@ -// SPDX-License-Identifier: MIT -/** - *Submitted for verification at Etherscan.io on 2020-03-04 -*/ -pragma solidity >=0.6.11; - -contract Comp { - // EIP-20 token name for this token - string public constant name = "Compound"; - - // EIP-20 token symbol for this token - string public constant symbol = "COMP"; - - // EIP-20 token decimals for this token - uint8 public constant decimals = 18; - - // Total number of tokens in circulation - uint public constant totalSupply = 10000000e18; // 10 million Comp - - // Allowance amounts on behalf of others - mapping (address => mapping (address => uint96)) internal allowances; - - // Official record of token balances for each account - mapping (address => uint96) internal balances; - - // A record of each accounts delegate - mapping (address => address) public delegates; - - // A checkpoint for marking number of votes from a given block - struct Checkpoint { - uint32 fromBlock; - uint96 votes; - } - - // A record of votes checkpoints for each account, by index - mapping (address => mapping (uint32 => Checkpoint)) public checkpoints; - - // The number of checkpoints for each account - mapping (address => uint32) public numCheckpoints; - - // The EIP-712 typehash for the contract's domain - bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)"); - - // The EIP-712 typehash for the delegation struct used by the contract - bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)"); - - // A record of states for signing / validating signatures - mapping (address => uint) public nonces; - - // An event thats emitted when an account changes its delegate - event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate); - - // An event thats emitted when a delegate account's vote balance changes - event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance); - - // The standard EIP-20 transfer event - event Transfer(address indexed from, address indexed to, uint256 amount); - - // The standard EIP-20 approval event - event Approval(address indexed owner, address indexed spender, uint256 amount); - - /** - * @notice Construct a new Comp token - * @param account The initial account to grant all the tokens - */ - constructor(address account) public { - balances[account] = uint96(totalSupply); - emit Transfer(address(0), account, totalSupply); - } - - /** - * @notice Get the number of tokens `spender` is approved to spend on behalf of `account` - * @param account The address of the account holding the funds - * @param spender The address of the account spending the funds - * @return The number of tokens approved - */ - function allowance(address account, address spender) external view returns (uint) { - return allowances[account][spender]; - } - - /** - * @notice Approve `spender` to transfer up to `amount` from `src` - * @dev This will overwrite the approval amount for `spender` - * and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve) - * @param spender The address of the account which may transfer tokens - * @param rawAmount The number of tokens that are approved (2^256-1 means infinite) - * @return Whether or not the approval succeeded - */ - function approve(address spender, uint rawAmount) external returns (bool) { - uint96 amount; - if (rawAmount == type(uint).max) { - amount = type(uint96).max; - } else { - amount = safe96(rawAmount, "Comp::approve: amount exceeds 96 bits"); - } - - allowances[msg.sender][spender] = amount; - - emit Approval(msg.sender, spender, amount); - return true; - } - - /** - * @notice Get the number of tokens held by the `account` - * @param account The address of the account to get the balance of - * @return The number of tokens held - */ - function balanceOf(address account) external view returns (uint) { - return balances[account]; - } - - /** - * @notice Transfer `amount` tokens from `msg.sender` to `dst` - * @param dst The address of the destination account - * @param rawAmount The number of tokens to transfer - * @return Whether or not the transfer succeeded - */ - function transfer(address dst, uint rawAmount) external returns (bool) { - uint96 amount = safe96(rawAmount, "Comp::transfer: amount exceeds 96 bits"); - _transferTokens(msg.sender, dst, amount); - return true; - } - - /** - * @notice Transfer `amount` tokens from `src` to `dst` - * @param src The address of the source account - * @param dst The address of the destination account - * @param rawAmount The number of tokens to transfer - * @return Whether or not the transfer succeeded - */ - function transferFrom(address src, address dst, uint rawAmount) external returns (bool) { - address spender = msg.sender; - uint96 spenderAllowance = allowances[src][spender]; - uint96 amount = safe96(rawAmount, "Comp::approve: amount exceeds 96 bits"); - - if (spender != src && spenderAllowance != type(uint96).max) { - uint96 newAllowance = sub96(spenderAllowance, amount, "Comp::transferFrom: transfer amount exceeds spender allowance"); - allowances[src][spender] = newAllowance; - - emit Approval(src, spender, newAllowance); - } - - _transferTokens(src, dst, amount); - return true; - } - - /** - * @notice Delegate votes from `msg.sender` to `delegatee` - * @param delegatee The address to delegate votes to - */ - function delegate(address delegatee) public { - return _delegate(msg.sender, delegatee); - } - - /** - * @notice Delegates votes from signatory to `delegatee` - * @param delegatee The address to delegate votes to - * @param nonce The contract state required to match the signature - * @param expiry The time at which to expire the signature - * @param v The recovery byte of the signature - * @param r Half of the ECDSA signature pair - * @param s Half of the ECDSA signature pair - */ - function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public { - bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this))); - bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry)); - bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); - address signatory = ecrecover(digest, v, r, s); - require(signatory != address(0), "Comp::delegateBySig: invalid signature"); - require(nonce == nonces[signatory]++, "Comp::delegateBySig: invalid nonce"); - require(block.timestamp <= expiry, "Comp::delegateBySig: signature expired"); - return _delegate(signatory, delegatee); - } - - /** - * @notice Gets the current votes balance for `account` - * @param account The address to get votes balance - * @return The number of current votes for `account` - */ - function getCurrentVotes(address account) external view returns (uint96) { - uint32 nCheckpoints = numCheckpoints[account]; - return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0; - } - - /** - * @notice Determine the prior number of votes for an account as of a block number - * @dev Block number must be a finalized block or else this function will revert to prevent misinformation. - * @param account The address of the account to check - * @param blockNumber The block number to get the vote balance at - * @return The number of votes the account had as of the given block - */ - function getPriorVotes(address account, uint blockNumber) public view returns (uint96) { - require(blockNumber < block.number, "Comp::getPriorVotes: not yet determined"); - - uint32 nCheckpoints = numCheckpoints[account]; - if (nCheckpoints == 0) { - return 0; - } - - // First check most recent balance - if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) { - return checkpoints[account][nCheckpoints - 1].votes; - } - - // Next check implicit zero balance - if (checkpoints[account][0].fromBlock > blockNumber) { - return 0; - } - - uint32 lower = 0; - uint32 upper = nCheckpoints - 1; - while (upper > lower) { - uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow - Checkpoint memory cp = checkpoints[account][center]; - if (cp.fromBlock == blockNumber) { - return cp.votes; - } else if (cp.fromBlock < blockNumber) { - lower = center; - } else { - upper = center - 1; - } - } - return checkpoints[account][lower].votes; - } - - function _delegate(address delegator, address delegatee) internal { - address currentDelegate = delegates[delegator]; - uint96 delegatorBalance = balances[delegator]; - delegates[delegator] = delegatee; - - emit DelegateChanged(delegator, currentDelegate, delegatee); - - _moveDelegates(currentDelegate, delegatee, delegatorBalance); - } - - function _transferTokens(address src, address dst, uint96 amount) internal { - require(src != address(0), "Comp::_transferTokens: cannot transfer from the zero address"); - require(dst != address(0), "Comp::_transferTokens: cannot transfer to the zero address"); - - balances[src] = sub96(balances[src], amount, "Comp::_transferTokens: transfer amount exceeds balance"); - balances[dst] = add96(balances[dst], amount, "Comp::_transferTokens: transfer amount overflows"); - emit Transfer(src, dst, amount); - - _moveDelegates(delegates[src], delegates[dst], amount); - } - - function _moveDelegates(address srcRep, address dstRep, uint96 amount) internal { - if (srcRep != dstRep && amount > 0) { - if (srcRep != address(0)) { - uint32 srcRepNum = numCheckpoints[srcRep]; - uint96 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0; - uint96 srcRepNew = sub96(srcRepOld, amount, "Comp::_moveVotes: vote amount underflows"); - _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew); - } - - if (dstRep != address(0)) { - uint32 dstRepNum = numCheckpoints[dstRep]; - uint96 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0; - uint96 dstRepNew = add96(dstRepOld, amount, "Comp::_moveVotes: vote amount overflows"); - _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew); - } - } - } - - function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint96 oldVotes, uint96 newVotes) internal { - uint32 blockNumber = safe32(block.number, "Comp::_writeCheckpoint: block number exceeds 32 bits"); - - if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) { - checkpoints[delegatee][nCheckpoints - 1].votes = newVotes; - } else { - checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes); - numCheckpoints[delegatee] = nCheckpoints + 1; - } - - emit DelegateVotesChanged(delegatee, oldVotes, newVotes); - } - - function safe32(uint n, string memory errorMessage) internal pure returns (uint32) { - require(n < 2**32, errorMessage); - return uint32(n); - } - - function safe96(uint n, string memory errorMessage) internal pure returns (uint96) { - require(n < 2**96, errorMessage); - return uint96(n); - } - - function add96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) { - uint96 c = a + b; - require(c >= a, errorMessage); - return c; - } - - function sub96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) { - require(b <= a, errorMessage); - return a - b; - } - - function getChainId() internal view returns (uint) { - uint256 chainId; - assembly { chainId := chainid() } - return chainId; - } -} \ No newline at end of file diff --git a/src/hardhat/contracts/ERC20/Variants/FNX.sol b/src/hardhat/contracts/ERC20/Variants/FNX.sol deleted file mode 100644 index 6254ea0b..00000000 --- a/src/hardhat/contracts/ERC20/Variants/FNX.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.11; -import "../ERC20.sol"; - -// Mock Farm token -contract FNX is ERC20("FinNexus", "FNX") { - -} \ No newline at end of file diff --git a/src/hardhat/contracts/ERC20/Variants/FRAX3CRV_Mock.sol b/src/hardhat/contracts/ERC20/Variants/FRAX3CRV_Mock.sol deleted file mode 100644 index 1ca74bda..00000000 --- a/src/hardhat/contracts/ERC20/Variants/FRAX3CRV_Mock.sol +++ /dev/null @@ -1,11 +0,0 @@ -// SPDX-License-Identifier: MIT - -pragma solidity >=0.6.11; - -import "../ERC20.sol"; - -contract FRAX3CRV_Mock is ERC20 { - constructor() - ERC20("Curve.fi Factory USD Metapool: Frax", "FRAX3CRV-f") - {} -} \ No newline at end of file diff --git a/src/hardhat/contracts/ERC20/Variants/FRAX3CRV_V2_Mock.sol b/src/hardhat/contracts/ERC20/Variants/FRAX3CRV_V2_Mock.sol deleted file mode 100644 index 8ed0dfd8..00000000 --- a/src/hardhat/contracts/ERC20/Variants/FRAX3CRV_V2_Mock.sol +++ /dev/null @@ -1,11 +0,0 @@ -// SPDX-License-Identifier: MIT - -pragma solidity >=0.6.11; - -import "../ERC20.sol"; - -contract FRAX3CRV_V2_Mock is ERC20 { - constructor() - ERC20("Curve.fi Factory USD Metapool: Frax", "FRAX3CRV-f-2") - {} -} \ No newline at end of file diff --git a/src/hardhat/contracts/ERC20/Variants/FarmToken.sol b/src/hardhat/contracts/ERC20/Variants/FarmToken.sol deleted file mode 100644 index ad9cba09..00000000 --- a/src/hardhat/contracts/ERC20/Variants/FarmToken.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.11; -import "../ERC20.sol"; - -// Mock Farm token -contract FarmToken is ERC20("FARM Reward Token", "FARM") { - -} \ No newline at end of file diff --git a/src/hardhat/contracts/ERC20/Variants/IDLEToken.sol b/src/hardhat/contracts/ERC20/Variants/IDLEToken.sol deleted file mode 100644 index 1af7b5c2..00000000 --- a/src/hardhat/contracts/ERC20/Variants/IDLEToken.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.11; -import "../ERC20.sol"; - -// Mock IDLE token -contract IDLEToken is ERC20("Idle", "IDLE") { - -} \ No newline at end of file diff --git a/src/hardhat/contracts/ERC20/Variants/IQToken.sol b/src/hardhat/contracts/ERC20/Variants/IQToken.sol deleted file mode 100644 index 887bf48a..00000000 --- a/src/hardhat/contracts/ERC20/Variants/IQToken.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.11; -import "../ERC20.sol"; - -// Mock IQ token -contract IQToken is ERC20("Everipedia IQ", "IQ") { - -} \ No newline at end of file diff --git a/src/hardhat/contracts/ERC20/Variants/OHM.sol b/src/hardhat/contracts/ERC20/Variants/OHM.sol deleted file mode 100644 index 3f12a0bc..00000000 --- a/src/hardhat/contracts/ERC20/Variants/OHM.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.11; -import "../ERC20.sol"; - -// Mock Farm token -contract OHM is ERC20("Olympus", "OHM") { - -} \ No newline at end of file diff --git a/src/hardhat/contracts/ERC20/Variants/RookToken.sol b/src/hardhat/contracts/ERC20/Variants/RookToken.sol deleted file mode 100644 index 655a9720..00000000 --- a/src/hardhat/contracts/ERC20/Variants/RookToken.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.11; -import "../ERC20.sol"; - -// Mock Rook token -contract RookToken is ERC20("ROOK", "ROOK") { - -} \ No newline at end of file diff --git a/src/hardhat/contracts/ERC20/Variants/SushiToken.sol b/src/hardhat/contracts/ERC20/Variants/SushiToken.sol deleted file mode 100644 index bfc8ecf0..00000000 --- a/src/hardhat/contracts/ERC20/Variants/SushiToken.sol +++ /dev/null @@ -1,245 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.11; - -import "../ERC20.sol"; -import "../../Common/Ownable.sol"; - - -// SushiToken with Governance. -contract SushiToken is ERC20("SushiToken", "SUSHI"), Ownable { - // Creates `_amount` token to `_to`. Must only be called by the owner (MasterChef). - function mint(address _to, uint256 _amount) public onlyOwner { - _mint(_to, _amount); - _moveDelegates(address(0), _delegates[_to], _amount); - } - - // Copied and modified from YAM code: - // https://github.com/yam-finance/yam-protocol/blob/master/contracts/token/YAMGovernanceStorage.sol - // https://github.com/yam-finance/yam-protocol/blob/master/contracts/token/YAMGovernance.sol - // Which is copied and modified from COMPOUND: - // https://github.com/compound-finance/compound-protocol/blob/master/contracts/Governance/Comp.sol - - // A record of each accounts delegate - mapping (address => address) internal _delegates; - - // A checkpoint for marking number of votes from a given block - struct Checkpoint { - uint32 fromBlock; - uint256 votes; - } - - // A record of votes checkpoints for each account, by index - mapping (address => mapping (uint32 => Checkpoint)) public checkpoints; - - // The number of checkpoints for each account - mapping (address => uint32) public numCheckpoints; - - // The EIP-712 typehash for the contract's domain - bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)"); - - // The EIP-712 typehash for the delegation struct used by the contract - bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)"); - - // A record of states for signing / validating signatures - mapping (address => uint) public nonces; - - // An event thats emitted when an account changes its delegate - event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate); - - // An event thats emitted when a delegate account's vote balance changes - event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance); - - /** - * @notice Delegate votes from `msg.sender` to `delegatee` - * @param delegator The address to get delegatee for - */ - function delegates(address delegator) - external - view - returns (address) - { - return _delegates[delegator]; - } - - /** - * @notice Delegate votes from `msg.sender` to `delegatee` - * @param delegatee The address to delegate votes to - */ - function delegate(address delegatee) external { - return _delegate(msg.sender, delegatee); - } - - /** - * @notice Delegates votes from signatory to `delegatee` - * @param delegatee The address to delegate votes to - * @param nonce The contract state required to match the signature - * @param expiry The time at which to expire the signature - * @param v The recovery byte of the signature - * @param r Half of the ECDSA signature pair - * @param s Half of the ECDSA signature pair - */ - function delegateBySig( - address delegatee, - uint nonce, - uint expiry, - uint8 v, - bytes32 r, - bytes32 s - ) - external - { - bytes32 domainSeparator = keccak256( - abi.encode( - DOMAIN_TYPEHASH, - keccak256(bytes(name())), - getChainId(), - address(this) - ) - ); - - bytes32 structHash = keccak256( - abi.encode( - DELEGATION_TYPEHASH, - delegatee, - nonce, - expiry - ) - ); - - bytes32 digest = keccak256( - abi.encodePacked( - "\x19\x01", - domainSeparator, - structHash - ) - ); - - address signatory = ecrecover(digest, v, r, s); - require(signatory != address(0), "SUSHI::delegateBySig: invalid signature"); - require(nonce == nonces[signatory]++, "SUSHI::delegateBySig: invalid nonce"); - require(now <= expiry, "SUSHI::delegateBySig: signature expired"); - return _delegate(signatory, delegatee); - } - - /** - * @notice Gets the current votes balance for `account` - * @param account The address to get votes balance - * @return The number of current votes for `account` - */ - function getCurrentVotes(address account) - external - view - returns (uint256) - { - uint32 nCheckpoints = numCheckpoints[account]; - return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0; - } - - /** - * @notice Determine the prior number of votes for an account as of a block number - * @dev Block number must be a finalized block or else this function will revert to prevent misinformation. - * @param account The address of the account to check - * @param blockNumber The block number to get the vote balance at - * @return The number of votes the account had as of the given block - */ - function getPriorVotes(address account, uint blockNumber) - external - view - returns (uint256) - { - require(blockNumber < block.number, "SUSHI::getPriorVotes: not yet determined"); - - uint32 nCheckpoints = numCheckpoints[account]; - if (nCheckpoints == 0) { - return 0; - } - - // First check most recent balance - if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) { - return checkpoints[account][nCheckpoints - 1].votes; - } - - // Next check implicit zero balance - if (checkpoints[account][0].fromBlock > blockNumber) { - return 0; - } - - uint32 lower = 0; - uint32 upper = nCheckpoints - 1; - while (upper > lower) { - uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow - Checkpoint memory cp = checkpoints[account][center]; - if (cp.fromBlock == blockNumber) { - return cp.votes; - } else if (cp.fromBlock < blockNumber) { - lower = center; - } else { - upper = center - 1; - } - } - return checkpoints[account][lower].votes; - } - - function _delegate(address delegator, address delegatee) - internal - { - address currentDelegate = _delegates[delegator]; - uint256 delegatorBalance = balanceOf(delegator); // balance of underlying SUSHIs (not scaled); - _delegates[delegator] = delegatee; - - emit DelegateChanged(delegator, currentDelegate, delegatee); - - _moveDelegates(currentDelegate, delegatee, delegatorBalance); - } - - function _moveDelegates(address srcRep, address dstRep, uint256 amount) internal { - if (srcRep != dstRep && amount > 0) { - if (srcRep != address(0)) { - // decrease old representative - uint32 srcRepNum = numCheckpoints[srcRep]; - uint256 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0; - uint256 srcRepNew = srcRepOld.sub(amount); - _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew); - } - - if (dstRep != address(0)) { - // increase new representative - uint32 dstRepNum = numCheckpoints[dstRep]; - uint256 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0; - uint256 dstRepNew = dstRepOld.add(amount); - _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew); - } - } - } - - function _writeCheckpoint( - address delegatee, - uint32 nCheckpoints, - uint256 oldVotes, - uint256 newVotes - ) - internal - { - uint32 blockNumber = safe32(block.number, "SUSHI::_writeCheckpoint: block number exceeds 32 bits"); - - if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) { - checkpoints[delegatee][nCheckpoints - 1].votes = newVotes; - } else { - checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes); - numCheckpoints[delegatee] = nCheckpoints + 1; - } - - emit DelegateVotesChanged(delegatee, oldVotes, newVotes); - } - - function safe32(uint n, string memory errorMessage) internal pure returns (uint32) { - require(n < 2**32, errorMessage); - return uint32(n); - } - - function getChainId() internal pure returns (uint) { - uint256 chainId; - assembly { chainId := chainid() } - return chainId; - } -} \ No newline at end of file diff --git a/src/hardhat/contracts/ERC20/WETH.sol b/src/hardhat/contracts/ERC20/WETH.sol deleted file mode 100755 index d55664a7..00000000 --- a/src/hardhat/contracts/ERC20/WETH.sol +++ /dev/null @@ -1,769 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.6.11; - -import './IWETH.sol'; - -// Copyright (C) 2015, 2016, 2017 Dapphub - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -contract WETH is IWETH { - string public name = "Wrapped Ether"; - string public symbol = "WETH"; - uint8 public decimals = 18; - - event Approval(address indexed src, address indexed guy, uint wad); - event Transfer(address indexed src, address indexed dst, uint wad); - event Deposit(address indexed dst, uint wad); - event Withdrawal(address indexed src, uint wad); - - mapping (address => uint) public balanceOf; - mapping (address => mapping (address => uint)) public allowance; - - fallback() external payable { - deposit(); - } - - receive() external payable { } - - constructor (address _creator_address ) public - { - balanceOf[_creator_address] = 1000000e18; // this is for testing only - } - - - function deposit() public override payable { - balanceOf[msg.sender] += msg.value; - emit Deposit(msg.sender, msg.value); - } - function withdraw(uint wad) override public { - require(balanceOf[msg.sender] >= wad); - balanceOf[msg.sender] -= wad; - msg.sender.transfer(wad); - emit Withdrawal(msg.sender, wad); - } - - function totalSupply() public view returns (uint) { - return address(this).balance; - } - - function approve(address guy, uint wad) public returns (bool) { - allowance[msg.sender][guy] = wad; - emit Approval(msg.sender, guy, wad); - return true; - } - - function transfer(address dst, uint wad) public override returns (bool) { - return transferFrom(msg.sender, dst, wad); - } - - function transferFrom(address src, address dst, uint wad) - public - override - returns (bool) - { - require(balanceOf[src] >= wad); - - if (src != msg.sender && allowance[src][msg.sender] != type(uint).max) { - require(allowance[src][msg.sender] >= wad); - allowance[src][msg.sender] -= wad; - } - - balanceOf[src] -= wad; - balanceOf[dst] += wad; - - emit Transfer(src, dst, wad); - - return true; - } -} - - -/* - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. - -*/ \ No newline at end of file diff --git a/src/hardhat/contracts/Staking/Pausable.sol b/src/hardhat/contracts/Staking/Pausable.sol deleted file mode 100755 index 818cbe84..00000000 --- a/src/hardhat/contracts/Staking/Pausable.sol +++ /dev/null @@ -1,46 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -pragma solidity >=0.6.11; - -// Inheritance -import "./Owned.sol"; - -// https://docs.synthetix.io/contracts/Pausable -abstract contract Pausable is Owned { - uint public lastPauseTime; - bool public paused; - - constructor() internal { - // This contract is abstract, and thus cannot be instantiated directly - require(owner != address(0), "Owner must be set"); - // Paused will be false, and lastPauseTime will be 0 upon initialisation - } - - /** - * @notice Change the paused state of the contract - * @dev Only the contract owner may call this. - */ - function setPaused(bool _paused) external onlyOwner { - // Ensure we're actually changing the state before we do anything - if (_paused == paused) { - return; - } - - // Set our paused state. - paused = _paused; - - // If applicable, set the last pause time. - if (paused) { - lastPauseTime = block.timestamp; - } - - // Let everyone know that our pause state has changed. - emit PauseChanged(paused); - } - - event PauseChanged(bool isPaused); - - modifier notPaused { - require(!paused, "This action cannot be performed while the contract is paused"); - _; - } -} \ No newline at end of file From 8a9155b98a2137accc1ba8f3d3ce85a89a318814 Mon Sep 17 00:00:00 2001 From: V-Coder Date: Mon, 22 Nov 2021 14:27:01 +0330 Subject: [PATCH 04/12] Refactor --- src/hardhat/contracts/DEI/DEI.sol | 106 +- src/hardhat/contracts/DEI/Pools/DEIPool.sol | 42 +- .../contracts/DEI/Pools/DEIPoolLibrary.sol | 3 - src/hardhat/contracts/DEUS/DEUS.sol | 180 ++- src/hardhat/contracts/Oracle/Oracle.sol | 2 +- .../contracts/Oracle/ReserveTracker.sol | 12 +- src/hardhat/flattens/PIDController.sol | 1 - src/hardhat/flattens/ReserveTracker.sol | 1145 ----------------- src/hardhat/scripts/deploy_bsc.js | 6 +- .../scripts/deploy_contracts/deploy_dei.js | 3 +- .../scripts/deploy_contracts/deploy_deus.js | 3 +- src/hardhat/scripts/deploy_fantom.js | 6 +- src/hardhat/scripts/deploy_rinkeby.js | 6 +- 13 files changed, 160 insertions(+), 1355 deletions(-) delete mode 100644 src/hardhat/flattens/PIDController.sol delete mode 100644 src/hardhat/flattens/ReserveTracker.sol diff --git a/src/hardhat/contracts/DEI/DEI.sol b/src/hardhat/contracts/DEI/DEI.sol index 0b10cacc..6c16ce16 100755 --- a/src/hardhat/contracts/DEI/DEI.sol +++ b/src/hardhat/contracts/DEI/DEI.sol @@ -35,13 +35,12 @@ contract DEIStablecoin is ERC20Permit, AccessControl { using ECDSA for bytes32; /* ========== STATE VARIABLES ========== */ - address public oracle; string public symbol; string public name; uint8 public constant decimals = 18; - address public creator_address; + address public oracle; address public deus_address; - uint256 public constant genesis_supply = 10000e18; // genesis supply is 10k on Mainnet. This is to help with establishing the Uniswap pools, as they need liquidity + uint256 public constant genesis_supply = 10000e18; // genesis supply is 10k. This is to help with establishing the Uniswap pools, as they need liquidity address public reserve_tracker_address; // The addresses in this array are added by the oracle and these contracts are able to mint DEI @@ -59,7 +58,6 @@ contract DEIStablecoin is ERC20Permit, AccessControl { bytes32 public constant COLLATERAL_RATIO_PAUSER = keccak256("COLLATERAL_RATIO_PAUSER"); bytes32 public constant TRUSTY_ROLE = keccak256("TRUSTY_ROLE"); - bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); bool public collateral_ratio_paused = false; @@ -79,20 +77,6 @@ contract DEIStablecoin is ERC20Permit, AccessControl { /* ========== MODIFIERS ========== */ - modifier onlyCollateralRatioPauser() { - require(hasRole(COLLATERAL_RATIO_PAUSER, msg.sender), "DEI: you are not the collateral ratio pauser"); - _; - } - - modifier onlyPoolsOrMinters() { - require( - dei_pools[msg.sender] == true || - hasRole(MINTER_ROLE, msg.sender), - "DEI: you are not minter" - ); - _; - } - modifier onlyPools() { require( dei_pools[msg.sender] == true, @@ -101,7 +85,7 @@ contract DEIStablecoin is ERC20Permit, AccessControl { _; } - modifier onlyByTrusty() { + modifier onlyTrusty() { require( hasRole(TRUSTY_ROLE, msg.sender), "DEI: you are not the owner" @@ -114,23 +98,21 @@ contract DEIStablecoin is ERC20Permit, AccessControl { constructor( string memory _name, string memory _symbol, - address _creator_address, address _trusty_address ) ERC20Permit(name) { require( - _creator_address != address(0), + _trusty_address != address(0), "DEI: zero address detected." ); name = _name; symbol = _symbol; - creator_address = _creator_address; - _setupRole(DEFAULT_ADMIN_ROLE, _trusty_address); - _mint(creator_address, genesis_supply); - _setupRole(COLLATERAL_RATIO_PAUSER, creator_address); dei_step = 2500; // 6 decimals of precision, equal to 0.25% global_collateral_ratio = 800000; // Dei system starts off fully collateralized (6 decimals of precision) refresh_cooldown = 300; // Refresh cooldown period is set to 5 minutes (300 seconds) at genesis + _setupRole(DEFAULT_ADMIN_ROLE, _trusty_address); + _setupRole(COLLATERAL_RATIO_PAUSER, _trusty_address); _setupRole(TRUSTY_ROLE, _trusty_address); + _mint(_trusty_address, genesis_supply); // Upon genesis, if GR changes by more than 1% percent, enable change of collateral ratio GR_top_band = 1000; @@ -180,12 +162,12 @@ contract DEIStablecoin is ERC20Permit, AccessControl { } function getChainID() public view returns (uint256) { - uint256 id; - assembly { - id := chainid() - } - return id; - } + uint256 id; + assembly { + id := chainid() + } + return id; + } /* ========== PUBLIC FUNCTIONS ========== */ @@ -205,8 +187,8 @@ contract DEIStablecoin is ERC20Permit, AccessControl { address(this), dei_price, expire_block, - getChainID() - )); + getChainID() + )); verify_price(sighash, sigs); @@ -248,53 +230,49 @@ contract DEIStablecoin is ERC20Permit, AccessControl { } - function useGrowthRatio(bool _use_growth_ratio) external onlyByTrusty { + function setUseGrowthRatio(bool _use_growth_ratio) external onlyTrusty { use_growth_ratio = _use_growth_ratio; emit UseGrowthRatioSet(_use_growth_ratio); } - function setGrowthRatioBands(uint256 _GR_top_band, uint256 _GR_bottom_band) external onlyByTrusty { + function setGrowthRatioBands(uint256 _GR_top_band, uint256 _GR_bottom_band) external onlyTrusty { GR_top_band = _GR_top_band; GR_bottom_band = _GR_bottom_band; emit GrowthRatioBandSet( _GR_top_band, _GR_bottom_band); } - function setPriceBands(uint256 _top_band, uint256 _bottom_band) external onlyByTrusty { + function setPriceBands(uint256 _top_band, uint256 _bottom_band) external onlyTrusty { DEI_top_band = _top_band; DEI_bottom_band = _bottom_band; emit PriceBandSet(_top_band, _bottom_band); } - function activateDIP(bool _activate) external onlyByTrusty { + function activateDIP(bool _activate) external onlyTrusty { DIP = _activate; emit DIPSet(_activate); } // Used by pools when user redeems - function pool_burn_from(address b_address, uint256 b_amount) - public - onlyPools - { + function pool_burn_from(address b_address, uint256 b_amount) public onlyPools { super._burnFrom(b_address, b_amount); emit DEIBurned(b_address, msg.sender, b_amount); } // This function is what other dei pools will call to mint new DEI - function pool_mint(address m_address, uint256 m_amount) public onlyPoolsOrMinters { + function pool_mint(address m_address, uint256 m_amount) public onlyPools { super._mint(m_address, m_amount); emit DEIMinted(msg.sender, m_address, m_amount); } - /* ========== RESTRICTED FUNCTIONS ========== */ // Adds collateral addresses supported, such as tether and busd, must be ERC20 function addPool(address pool_address) external - onlyByTrusty + onlyTrusty { require(pool_address != address(0), "DEI::addPool: Zero address detected"); require(dei_pools[pool_address] == false, "DEI::addPool: Address already exists"); @@ -308,10 +286,9 @@ contract DEIStablecoin is ERC20Permit, AccessControl { // Remove a pool function removePool(address pool_address) external - onlyByTrusty + onlyTrusty { require(pool_address != address(0), "DEI::removePool: Zero address detected"); - require(dei_pools[pool_address] == true, "DEI::removePool: Address nonexistant"); // Delete from the mapping @@ -328,52 +305,38 @@ contract DEIStablecoin is ERC20Permit, AccessControl { emit PoolRemoved(pool_address); } - // Change name + symbol of Token - function setNameAndSymbol(string memory _name, string memory _symbol) external onlyByTrusty { + function setNameAndSymbol(string memory _name, string memory _symbol) external onlyTrusty { name = _name; symbol = _symbol; + + emit NameAndSymbolSet(name, symbol); } - function setOracle(address _oracle) - external - onlyByTrusty - { + function setOracle(address _oracle) external onlyTrusty { oracle = _oracle; emit OracleSet(_oracle); } - function setDEIStep(uint256 _new_step) - external - onlyByTrusty - { + function setDEIStep(uint256 _new_step) external onlyTrusty { dei_step = _new_step; emit DEIStepSet(_new_step); } - function setReserveTracker(address _reserve_tracker_address) - external - onlyByTrusty - { + function setReserveTracker(address _reserve_tracker_address) external onlyTrusty { reserve_tracker_address = _reserve_tracker_address; emit ReserveTrackerSet(_reserve_tracker_address); } - function setRefreshCooldown(uint256 _new_cooldown) - external - onlyByTrusty - { + function setRefreshCooldown(uint256 _new_cooldown) external onlyTrusty { refresh_cooldown = _new_cooldown; emit RefreshCooldownSet(_new_cooldown); } - function setDEUSAddress(address _deus_address) - external - onlyByTrusty - { + function setDEUSAddress(address _deus_address) external onlyTrusty { require(_deus_address != address(0), "DEI::setDEUSAddress: Zero address detected"); deus_address = _deus_address; @@ -381,10 +344,8 @@ contract DEIStablecoin is ERC20Permit, AccessControl { emit DEUSAddressSet(_deus_address); } - function toggleCollateralRatio() - external - onlyCollateralRatioPauser - { + function toggleCollateralRatio() external { + require(hasRole(COLLATERAL_RATIO_PAUSER, msg.sender), "DEI: you are not the collateral ratio pauser"); collateral_ratio_paused = !collateral_ratio_paused; emit CollateralRatioToggled(collateral_ratio_paused); @@ -409,6 +370,7 @@ contract DEIStablecoin is ERC20Permit, AccessControl { event UseGrowthRatioSet( bool use_growth_ratio); event DIPSet(bool activate); event GrowthRatioBandSet(uint256 GR_top_band, uint256 GR_bottom_band); + event NameAndSymbolSet(string name, string symbol); } //Dar panah khoda diff --git a/src/hardhat/contracts/DEI/Pools/DEIPool.sol b/src/hardhat/contracts/DEI/Pools/DEIPool.sol index ebd462eb..c558de8e 100755 --- a/src/hardhat/contracts/DEI/Pools/DEIPool.sol +++ b/src/hardhat/contracts/DEI/Pools/DEIPool.sol @@ -34,14 +34,14 @@ import "./DEIPoolLibrary.sol"; contract DEIPool is AccessControl { - struct RecollateralizeDEI { + struct RecollateralizeDEI { uint256 collateral_amount; uint256 pool_collateral_price; uint256[] collateral_price; uint256 deus_current_price; uint256 expireBlock; bytes[] sigs; - } + } /* ========== STATE VARIABLES ========== */ @@ -92,7 +92,7 @@ contract DEIPool is AccessControl { bytes32 private constant REDEEM_PAUSER = keccak256("REDEEM_PAUSER"); bytes32 private constant BUYBACK_PAUSER = keccak256("BUYBACK_PAUSER"); bytes32 private constant RECOLLATERALIZE_PAUSER = keccak256("RECOLLATERALIZE_PAUSER"); - bytes32 public constant TRUSTY_ROLE = keccak256("TRUSTY_ROLE"); + bytes32 public constant TRUSTY_ROLE = keccak256("TRUSTY_ROLE"); bytes32 public constant DAO_SHARE_COLLECTOR = keccak256("DAO_SHARE_COLLECTOR"); bytes32 public constant PARAMETER_SETTER_ROLE = keccak256("PARAMETER_SETTER_ROLE"); @@ -104,7 +104,7 @@ contract DEIPool is AccessControl { /* ========== MODIFIERS ========== */ - modifier onlyByTrusty() { + modifier onlyTrusty() { require( hasRole(TRUSTY_ROLE, msg.sender), "POOL::you are not trusty" @@ -155,8 +155,8 @@ contract DEIPool is AccessControl { _setupRole(REDEEM_PAUSER, _trusty_address); _setupRole(RECOLLATERALIZE_PAUSER, _trusty_address); _setupRole(BUYBACK_PAUSER, _trusty_address); - _setupRole(TRUSTY_ROLE, _trusty_address); - _setupRole(PARAMETER_SETTER_ROLE, _trusty_address); + _setupRole(TRUSTY_ROLE, _trusty_address); + _setupRole(PARAMETER_SETTER_ROLE, _trusty_address); } /* ========== VIEWS ========== */ @@ -181,12 +181,12 @@ contract DEIPool is AccessControl { } function getChainID() public view returns (uint256) { - uint256 id; - assembly { - id := chainid() - } - return id; - } + uint256 id; + assembly { + id := chainid() + } + return id; + } /* ========== PUBLIC FUNCTIONS ========== */ @@ -207,7 +207,7 @@ contract DEIPool is AccessControl { ); require(expireBlock >= block.number, "POOL::mint1t1DEI: signature is expired"); - bytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, expireBlock, getChainID())); + bytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, expireBlock, getChainID())); require(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), "POOL::mint1t1DEI: invalid signatures"); uint256 collateral_amount_d18 = collateral_amount * (10**missing_decimals); @@ -322,7 +322,7 @@ contract DEIPool is AccessControl { ); require(expireBlock >= block.number, "POOL::mintAlgorithmicDEI: signature is expired."); - bytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, expireBlock, getChainID())); + bytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, expireBlock, getChainID())); require(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), "POOL::redeem1t1DEI: invalid signatures"); // Need to adjust for decimals of collateral @@ -481,13 +481,13 @@ contract DEIPool is AccessControl { require(inputs.expireBlock >= block.number, "POOL::recollateralizeDEI: signature is expired."); bytes32 sighash = keccak256(abi.encodePacked( - collateral_address, - inputs.collateral_price, - deus_contract_address, - inputs.deus_current_price, - inputs.expireBlock, + collateral_address, + inputs.collateral_price, + deus_contract_address, + inputs.deus_current_price, + inputs.expireBlock, getChainID() - )); + )); require(IDEIStablecoin(dei_contract_address).verify_price(sighash, inputs.sigs), "POOL::recollateralizeDEI: invalid signatures"); uint256 collateral_amount_d18 = inputs.collateral_amount * (10**missing_decimals); @@ -567,7 +567,7 @@ contract DEIPool is AccessControl { emit daoShareCollected(amount, to); } - function emergencyWithdrawERC20(address token, uint amount, address to) external onlyByTrusty { + function emergencyWithdrawERC20(address token, uint amount, address to) external onlyTrusty { IERC20(token).transfer(to, amount); } diff --git a/src/hardhat/contracts/DEI/Pools/DEIPoolLibrary.sol b/src/hardhat/contracts/DEI/Pools/DEIPoolLibrary.sol index c797087d..80bc55c3 100755 --- a/src/hardhat/contracts/DEI/Pools/DEIPoolLibrary.sol +++ b/src/hardhat/contracts/DEI/Pools/DEIPoolLibrary.sol @@ -37,7 +37,6 @@ contract DEIPoolLibrary { return (deus_amount_d18 * deus_price_usd) / (1e6); } - // Must be internal because of the struct function calcMintFractionalDEI(MintFD_Params memory params) public pure returns (uint256, uint256) { // Since solidity truncates division, every division operation must be the last operation in the equation to ensure minimum error // The contract must check the proper ratio was sent to mint DEI. We do this by seeing the minimum mintable DEI based on each amount @@ -63,7 +62,6 @@ contract DEIPoolLibrary { return (DEI_amount * (1e6)) / col_price_usd; } - // Must be internal because of the struct function calcBuyBackDEUS(BuybackDEUS_Params memory params) public pure returns (uint256) { // If the total collateral value is higher than the amount required at the current collateral ratio then buy back up to the possible DEUS with the desired collateral require(params.excess_collateral_dollar_value_d18 > 0, "No excess collateral to buy back!"); @@ -86,7 +84,6 @@ contract DEIPoolLibrary { uint256 target_collat_value = (total_supply * global_collateral_ratio) / (1e6); // We want 18 decimals of precision so divide by 1e6; total_supply is 1e18 and global_collateral_ratio is 1e6 // Subtract the current value of collateral from the target value needed, if higher than 0 then system needs to recollateralize return target_collat_value - global_collat_value; // If recollateralization is not needed, throws a subtraction underflow - // return(recollateralization_left); } function calcRecollateralizeDEIInner( diff --git a/src/hardhat/contracts/DEUS/DEUS.sol b/src/hardhat/contracts/DEUS/DEUS.sol index 8e194af4..631d7193 100755 --- a/src/hardhat/contracts/DEUS/DEUS.sol +++ b/src/hardhat/contracts/DEUS/DEUS.sol @@ -2,7 +2,7 @@ // Bime Abolfazl // SPDX-License-Identifier: GPL-2.0-or-later -pragma solidity ^0.8.9; +pragma solidity ^0.8.10; // ================================================================================================================= // _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| | @@ -31,102 +31,96 @@ import "../Governance/AccessControl.sol"; contract DEUSToken is ERC20Permit, AccessControl { - /* ========== STATE VARIABLES ========== */ - - string public symbol; - string public name; - uint8 public constant decimals = 18; - - uint256 public constant genesis_supply = 166670e18; // 166670 is printed upon genesis - - address public dei_contract_address; - - bytes32 public constant TRUSTY_ROLE = keccak256("TRUSTY_ROLE"); - bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); - - /* ========== MODIFIERS ========== */ - - modifier onlyPoolsOrMinters() { - require( - IDEIStablecoin(dei_contract_address).dei_pools(msg.sender) == true || hasRole(MINTER_ROLE, msg.sender), - "DEUS: Only dei pools or minters are allowed to do this operation" - ); - _; - } - - modifier onlyPools() { - require( - IDEIStablecoin(dei_contract_address).dei_pools(msg.sender) == true, - "DEUS: Only dei pools are allowed to do this operation" - ); - _; - } - - modifier onlyByTrusty() { - require(hasRole(TRUSTY_ROLE, msg.sender), "DEUS: You are not trusty"); - _; - } - - /* ========== CONSTRUCTOR ========== */ - - constructor( - string memory _name, - string memory _symbol, - address _creator_address, - address _trusty_address - ) ERC20Permit(name) { - require(_creator_address != address(0), "DEUS::constructor: zero address detected"); - name = _name; - symbol = _symbol; - _setupRole(DEFAULT_ADMIN_ROLE, _trusty_address); - _setupRole(TRUSTY_ROLE, _trusty_address); - _mint(_creator_address, genesis_supply); - } - - /* ========== RESTRICTED FUNCTIONS ========== */ - - // Change name + symbol of Token - function setNameAndSymbol(string memory _name, string memory _symbol) external onlyByTrusty { + /* ========== STATE VARIABLES ========== */ + + string public symbol; + string public name; + uint8 public constant decimals = 18; + + uint256 public constant genesis_supply = 10; // genesis supply has been minted on ETH & Polygon + + address public dei_contract_address; + + bytes32 public constant TRUSTY_ROLE = keccak256("TRUSTY_ROLE"); + bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); + + /* ========== MODIFIERS ========== */ + + + // Note: Used by staking contracts to mint rewards + modifier onlyMinters() { + require(hasRole(MINTER_ROLE, msg.sender), "DEUS: Only minters are allowed to do this operation"); + _; + } + + modifier onlyPools() { + require(IDEIStablecoin(dei_contract_address).dei_pools(msg.sender), "DEUS: Only dei pools are allowed to do this operation"); + _; + } + + modifier onlyTrusty() { + require(hasRole(TRUSTY_ROLE, msg.sender), "DEUS: You are not trusty"); + _; + } + + /* ========== CONSTRUCTOR ========== */ + + constructor( + string memory _name, + string memory _symbol, + address _trusty_address + ) ERC20Permit(name) { + require(_trusty_address != address(0), "DEUS::constructor: zero address detected"); name = _name; symbol = _symbol; + _setupRole(DEFAULT_ADMIN_ROLE, _trusty_address); + _setupRole(TRUSTY_ROLE, _trusty_address); + _mint(_trusty_address, genesis_supply); + } + + + /* ========== RESTRICTED FUNCTIONS ========== */ + + function setNameAndSymbol(string memory _name, string memory _symbol) external onlyTrusty { + name = _name; + symbol = _symbol; + + emit NameAndSymbolSet(name, symbol); + } + + function setDEIAddress(address _dei_contract_address) + external + onlyTrusty + { + require(_dei_contract_address != address(0), "DEUS::setDEIAddress: Zero address detected"); + + dei_contract_address = _dei_contract_address; + + emit DEIAddressSet(dei_contract_address); + } + + // Note: Used by staking contracts to mint rewards + function mint(address to, uint256 amount) public onlyMinters { + _mint(to, amount); + } + + // This function is what other dei pools will call to mint new DEUS (similar to the DEI mint) and staking contracts can call this function too. + function pool_mint(address m_address, uint256 m_amount) external onlyPools { + super._mint(m_address, m_amount); + emit DEUSMinted(address(this), m_address, m_amount); + } + + // This function is what other dei pools will call to burn DEUS + function pool_burn_from(address b_address, uint256 b_amount) external onlyPools { + super._burnFrom(b_address, b_amount); + emit DEUSBurned(b_address, address(this), b_amount); } - function setDEIAddress(address dei_contract_address) - external - onlyByTrusty - { - require(dei_contract_address != address(0), "DEUS::setDEIAddress: Zero address detected"); - - dei_contract_address = dei_contract_address; - - emit DEIAddressSet(dei_contract_address); - } - - function mint(address to, uint256 amount) public onlyPoolsOrMinters { - _mint(to, amount); - } - - // This function is what other dei pools will call to mint new DEUS (similar to the DEI mint) and staking contracts can call this function too. - function pool_mint(address m_address, uint256 m_amount) external onlyPoolsOrMinters { - super._mint(m_address, m_amount); - emit DEUSMinted(address(this), m_address, m_amount); - } - - // This function is what other dei pools will call to burn DEUS - function pool_burn_from(address b_address, uint256 b_amount) - external - onlyPools - { - super._burnFrom(b_address, b_amount); - emit DEUSBurned(b_address, address(this), b_amount); - } - - /* ========== EVENTS ========== */ - // Track DEUS burned - event DEUSBurned(address indexed from, address indexed to, uint256 amount); - // Track DEUS minted - event DEUSMinted(address indexed from, address indexed to, uint256 amount); - event DEIAddressSet(address addr); + /* ========== EVENTS ========== */ + event DEUSBurned(address indexed from, address indexed to, uint256 amount); + event DEUSMinted(address indexed from, address indexed to, uint256 amount); + event DEIAddressSet(address addr); + event NameAndSymbolSet(string name, string symbol); } //Dar panah khoda \ No newline at end of file diff --git a/src/hardhat/contracts/Oracle/Oracle.sol b/src/hardhat/contracts/Oracle/Oracle.sol index 653735fb..6121f2ec 100644 --- a/src/hardhat/contracts/Oracle/Oracle.sol +++ b/src/hardhat/contracts/Oracle/Oracle.sol @@ -44,7 +44,7 @@ contract Oracle is AccessControl { { require( hasRole(TRUSTY_ROLE, msg.sender), - "ORACLE::setMinimumRequiredSignature: You are not a setter" + "ORACLE::setMinimumRequiredSignature: You are not trusty" ); minimumRequiredSignature = _minimumRequiredSignature; diff --git a/src/hardhat/contracts/Oracle/ReserveTracker.sol b/src/hardhat/contracts/Oracle/ReserveTracker.sol index bf36753c..8c84ae49 100644 --- a/src/hardhat/contracts/Oracle/ReserveTracker.sol +++ b/src/hardhat/contracts/Oracle/ReserveTracker.sol @@ -33,7 +33,7 @@ import "../Governance/AccessControl.sol"; contract ReserveTracker is AccessControl { // Roles - bytes32 public constant OWNER_ROLE = keccak256("OWNER_ROLE"); + bytes32 public constant TRUSTY_ROLE = keccak256("TRUSTY_ROLE"); // Various precisions uint256 private PRICE_PRECISION = 1e6; @@ -50,8 +50,8 @@ contract ReserveTracker is AccessControl { // ========== MODIFIERS ========== - modifier onlyByOwner() { - require(hasRole(OWNER_ROLE, msg.sender), "Caller is not owner"); + modifier onlyTrusty() { + require(hasRole(TRUSTY_ROLE, msg.sender), "Caller is not trusty"); _; } @@ -64,7 +64,7 @@ contract ReserveTracker is AccessControl { dei_contract_address = _dei_contract_address; deus_contract_address = _deus_contract_address; _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); - _setupRole(OWNER_ROLE, msg.sender); + _setupRole(TRUSTY_ROLE, msg.sender); } // ========== VIEWS ========== @@ -89,14 +89,14 @@ contract ReserveTracker is AccessControl { } // Adds collateral addresses supported, such as tether and busd, must be ERC20 - function addDEUSPair(address pair_address) public onlyByOwner { + function addDEUSPair(address pair_address) public onlyTrusty { require(deus_pairs[pair_address] == false, "Address already exists"); deus_pairs[pair_address] = true; deus_pairs_array.push(pair_address); } // Remove a pool - function removeDEUSPair(address pair_address) public onlyByOwner { + function removeDEUSPair(address pair_address) public onlyTrusty { require(deus_pairs[pair_address] == true, "Address nonexistant"); // Delete from the mapping diff --git a/src/hardhat/flattens/PIDController.sol b/src/hardhat/flattens/PIDController.sol deleted file mode 100644 index 8b137891..00000000 --- a/src/hardhat/flattens/PIDController.sol +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/hardhat/flattens/ReserveTracker.sol b/src/hardhat/flattens/ReserveTracker.sol deleted file mode 100644 index 01c36d08..00000000 --- a/src/hardhat/flattens/ReserveTracker.sol +++ /dev/null @@ -1,1145 +0,0 @@ -// Sources flattened with hardhat v2.5.0 https://hardhat.org - -// File contracts/Math/SafeMath.sol - -// SPDX-License-Identifier: GPL-2.0-or-later -pragma solidity ^0.8.7; - -// ================================================================================================================= -// _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| | -// _| _| _| _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| | -// _| _| _|_|_| _| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_|_|_| | -// _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| | -// _|_|_| _|_|_|_| _|_| _|_|_| _| _| _| _| _|_|_| _| _| _|_|_| _|_|_| | -// ================================================================================================================= -// ==================================================================== -// =========================== ReserveTracker ========================= -// ==================================================================== -// Deus Finance: https://github.com/DeusFinance - -// Primary Author(s) -// Jason Huan: https://github.com/jasonhuan -// Sam Kazemian: https://github.com/samkazemian -// Vahid: https://github.com/vahid-dev -// SAYaghoubnejad: https://github.com/SAYaghoubnejad - -// Reviewer(s) / Contributor(s) -// Travis Moore: https://github.com/FortisFortuna - -pragma solidity >=0.6.11; - -/** - * @dev 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. - */ -library SafeMath { - /** - * @dev Returns the addition of two unsigned integers, reverting on - * overflow. - * - * Counterpart to Solidity's `+` operator. - * - * Requirements: - * - Addition cannot overflow. - */ - function add(uint256 a, uint256 b) internal pure returns (uint256) { - uint256 c = a + b; - require(c >= a, "SafeMath: addition overflow"); - - return c; - } - - /** - * @dev Returns the subtraction of two unsigned integers, reverting on - * overflow (when the result is negative). - * - * Counterpart to Solidity's `-` operator. - * - * Requirements: - * - Subtraction cannot overflow. - */ - function sub(uint256 a, uint256 b) internal pure returns (uint256) { - return sub(a, b, "SafeMath: subtraction overflow"); - } - - /** - * @dev Returns the subtraction of two unsigned integers, reverting with custom message on - * overflow (when the result is negative). - * - * Counterpart to Solidity's `-` operator. - * - * Requirements: - * - Subtraction cannot overflow. - * - * _Available since v2.4.0._ - */ - function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { - require(b <= a, errorMessage); - uint256 c = a - b; - - return c; - } - - /** - * @dev Returns the multiplication of two unsigned integers, reverting on - * overflow. - * - * Counterpart to Solidity's `*` operator. - * - * Requirements: - * - Multiplication cannot overflow. - */ - function mul(uint256 a, uint256 b) internal pure returns (uint256) { - // Gas optimization: this is cheaper than requiring 'a' not being zero, but the - // benefit is lost if 'b' is also tested. - // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 - if (a == 0) { - return 0; - } - - uint256 c = a * b; - require(c / a == b, "SafeMath: multiplication overflow"); - - return c; - } - - /** - * @dev Returns the integer division of two unsigned integers. Reverts on - * division by zero. The result is rounded towards zero. - * - * Counterpart to Solidity's `/` operator. Note: this function uses a - * `revert` opcode (which leaves remaining gas untouched) while Solidity - * uses an invalid opcode to revert (consuming all remaining gas). - * - * Requirements: - * - The divisor cannot be zero. - */ - function div(uint256 a, uint256 b) internal pure returns (uint256) { - return div(a, b, "SafeMath: division by zero"); - } - - /** - * @dev Returns the integer division of two unsigned integers. Reverts with custom message on - * division by zero. The result is rounded towards zero. - * - * Counterpart to Solidity's `/` operator. Note: this function uses a - * `revert` opcode (which leaves remaining gas untouched) while Solidity - * uses an invalid opcode to revert (consuming all remaining gas). - * - * Requirements: - * - The divisor cannot be zero. - * - * _Available since v2.4.0._ - */ - function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { - // Solidity only automatically asserts when dividing by 0 - require(b > 0, errorMessage); - uint256 c = a / b; - // assert(a == b * c + a % b); // There is no case in which this doesn't hold - - return c; - } - - /** - * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), - * Reverts when dividing by zero. - * - * Counterpart to Solidity's `%` operator. This function uses a `revert` - * opcode (which leaves remaining gas untouched) while Solidity uses an - * invalid opcode to revert (consuming all remaining gas). - * - * Requirements: - * - The divisor cannot be zero. - */ - function mod(uint256 a, uint256 b) internal pure returns (uint256) { - return mod(a, b, "SafeMath: modulo by zero"); - } - - /** - * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), - * Reverts with custom message when dividing by zero. - * - * Counterpart to Solidity's `%` operator. This function uses a `revert` - * opcode (which leaves remaining gas untouched) while Solidity uses an - * invalid opcode to revert (consuming all remaining gas). - * - * Requirements: - * - The divisor cannot be zero. - * - * _Available since v2.4.0._ - */ - function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { - require(b != 0, errorMessage); - return a % b; - } -} - - -// File contracts/Math/Math.sol - - -pragma solidity >=0.6.11; - -/** - * @dev Standard math utilities missing in the Solidity language. - */ -library Math { - /** - * @dev Returns the largest of two numbers. - */ - function max(uint256 a, uint256 b) internal pure returns (uint256) { - return a >= b ? a : b; - } - - /** - * @dev Returns the smallest of two numbers. - */ - function min(uint256 a, uint256 b) internal pure returns (uint256) { - return a < b ? a : b; - } - - /** - * @dev Returns the average of two numbers. The result is rounded towards - * zero. - */ - function average(uint256 a, uint256 b) internal pure returns (uint256) { - // (a + b) / 2 can overflow, so we distribute - return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2); - } - - // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method) - function sqrt(uint y) internal pure returns (uint z) { - if (y > 3) { - z = y; - uint x = y / 2 + 1; - while (x < z) { - z = x; - x = (y / x + x) / 2; - } - } else if (y != 0) { - z = 1; - } - } -} - - -// File contracts/Uniswap/Interfaces/IUniswapV2Pair.sol - - -pragma solidity >=0.6.11; - -interface IUniswapV2Pair { - event Approval(address indexed owner, address indexed spender, uint value); - event Transfer(address indexed from, address indexed to, uint value); - - function name() external pure returns (string memory); - function symbol() external pure returns (string memory); - function decimals() external pure returns (uint8); - function totalSupply() external view returns (uint); - function balanceOf(address owner) external view returns (uint); - function allowance(address owner, address spender) external view returns (uint); - - function approve(address spender, uint value) external returns (bool); - function transfer(address to, uint value) external returns (bool); - function transferFrom(address from, address to, uint value) external returns (bool); - - function DOMAIN_SEPARATOR() external view returns (bytes32); - function PERMIT_TYPEHASH() external pure returns (bytes32); - function nonces(address owner) external view returns (uint); - - function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; - - event Mint(address indexed sender, uint amount0, uint amount1); - event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); - event Swap( - address indexed sender, - uint amount0In, - uint amount1In, - uint amount0Out, - uint amount1Out, - address indexed to - ); - event Sync(uint112 reserve0, uint112 reserve1); - - function MINIMUM_LIQUIDITY() external pure returns (uint); - function factory() external view returns (address); - function token0() external view returns (address); - function token1() external view returns (address); - function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); - function price0CumulativeLast() external view returns (uint); - function price1CumulativeLast() external view returns (uint); - function kLast() external view returns (uint); - - function mint(address to) external returns (uint liquidity); - function burn(address to) external returns (uint amount0, uint amount1); - function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; - function skim(address to) external; - function sync() external; - - function initialize(address, address) external; - - - - - - - - - - - - - -} - - -// File contracts/Utils/EnumerableSet.sol - - - -pragma solidity >=0.6.11; - -/** - * @dev 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.0.0, only sets of type `address` (`AddressSet`) and `uint256` - * (`UintSet`) are supported. - */ -library EnumerableSet { - // To implement this library for multiple types with as little code - // repetition as possible, we write it in terms of a generic Set type with - // bytes32 values. - // The Set implementation uses private functions, and user-facing - // implementations (such as AddressSet) are just wrappers around the - // underlying Set. - // This means that we can only create new EnumerableSets for types that fit - // in bytes32. - - struct Set { - // Storage of set values - bytes32[] _values; - - // Position of the value in the `values` array, plus 1 because index 0 - // means a value is not in the set. - mapping (bytes32 => uint256) _indexes; - } - - /** - * @dev Add a value to a set. O(1). - * - * Returns true if the value was added to the set, that is if it was not - * already present. - */ - function _add(Set storage set, bytes32 value) private returns (bool) { - if (!_contains(set, value)) { - set._values.push(value); - // The value is stored at length-1, but we add 1 to all indexes - // and use 0 as a sentinel value - set._indexes[value] = set._values.length; - return true; - } else { - return false; - } - } - - /** - * @dev Removes a value from a set. O(1). - * - * Returns true if the value was removed from the set, that is if it was - * present. - */ - function _remove(Set storage set, bytes32 value) private returns (bool) { - // We read and store the value's index to prevent multiple reads from the same storage slot - uint256 valueIndex = set._indexes[value]; - - if (valueIndex != 0) { // Equivalent to contains(set, value) - // To delete an element from the _values array in O(1), we swap the element to delete with the last one in - // the array, and then remove the last element (sometimes called as 'swap and pop'). - // This modifies the order of the array, as noted in {at}. - - uint256 toDeleteIndex = valueIndex - 1; - uint256 lastIndex = set._values.length - 1; - - // When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs - // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement. - - bytes32 lastvalue = set._values[lastIndex]; - - // Move the last value to the index where the value to delete is - set._values[toDeleteIndex] = lastvalue; - // Update the index for the moved value - set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based - - // Delete the slot where the moved value was stored - set._values.pop(); - - // Delete the index for the deleted slot - delete set._indexes[value]; - - return true; - } else { - return false; - } - } - - /** - * @dev Returns true if the value is in the set. O(1). - */ - function _contains(Set storage set, bytes32 value) private view returns (bool) { - return set._indexes[value] != 0; - } - - /** - * @dev Returns the number of values on the set. O(1). - */ - function _length(Set storage set) private view returns (uint256) { - return set._values.length; - } - - /** - * @dev Returns the value stored at position `index` in the set. O(1). - * - * Note that there are no guarantees on the ordering of values inside the - * array, and it may change when more values are added or removed. - * - * Requirements: - * - * - `index` must be strictly less than {length}. - */ - function _at(Set storage set, uint256 index) private view returns (bytes32) { - require(set._values.length > index, "EnumerableSet: index out of bounds"); - return set._values[index]; - } - - // AddressSet - - struct AddressSet { - Set _inner; - } - - /** - * @dev Add a value to a set. O(1). - * - * Returns true if the value was added to the set, that is if it was not - * already present. - */ - function add(AddressSet storage set, address value) internal returns (bool) { - return _add(set._inner, bytes32(bytes20(value))); - } - - /** - * @dev Removes a value from a set. O(1). - * - * Returns true if the value was removed from the set, that is if it was - * present. - */ - function remove(AddressSet storage set, address value) internal returns (bool) { - return _remove(set._inner, bytes32(bytes20(value))); - } - - /** - * @dev Returns true if the value is in the set. O(1). - */ - function contains(AddressSet storage set, address value) internal view returns (bool) { - return _contains(set._inner, bytes32(bytes20(value))); - } - - /** - * @dev Returns the number of values in the set. O(1). - */ - function length(AddressSet storage set) internal view returns (uint256) { - return _length(set._inner); - } - - /** - * @dev Returns the value stored at position `index` in the set. O(1). - * - * Note that there are no guarantees on the ordering of values inside the - * array, and it may change when more values are added or removed. - * - * Requirements: - * - * - `index` must be strictly less than {length}. - */ - function at(AddressSet storage set, uint256 index) internal view returns (address) { - return address(bytes20(_at(set._inner, index))); - } - - - // UintSet - - struct UintSet { - Set _inner; - } - - /** - * @dev Add a value to a set. O(1). - * - * Returns true if the value was added to the set, that is if it was not - * already present. - */ - function add(UintSet storage set, uint256 value) internal returns (bool) { - return _add(set._inner, bytes32(value)); - } - - /** - * @dev Removes a value from a set. O(1). - * - * Returns true if the value was removed from the set, that is if it was - * present. - */ - function remove(UintSet storage set, uint256 value) internal returns (bool) { - return _remove(set._inner, bytes32(value)); - } - - /** - * @dev Returns true if the value is in the set. O(1). - */ - function contains(UintSet storage set, uint256 value) internal view returns (bool) { - return _contains(set._inner, bytes32(value)); - } - - /** - * @dev Returns the number of values on the set. O(1). - */ - function length(UintSet storage set) internal view returns (uint256) { - return _length(set._inner); - } - - /** - * @dev Returns the value stored at position `index` in the set. O(1). - * - * Note that there are no guarantees on the ordering of values inside the - * array, and it may change when more values are added or removed. - * - * Requirements: - * - * - `index` must be strictly less than {length}. - */ - function at(UintSet storage set, uint256 index) internal view returns (uint256) { - return uint256(_at(set._inner, index)); - } -} - - -// File contracts/Utils/Address.sol - - -pragma solidity >=0.6.11 <0.9.0; - -/** - * @dev Collection of functions related to the address type - */ -library Address { - /** - * @dev Returns true if `account` is a contract. - * - * [IMPORTANT] - * ==== - * It is unsafe to assume that an address for which this function returns - * false is an externally-owned account (EOA) and not a contract. - * - * Among others, `isContract` will return false for the following - * types of addresses: - * - * - an externally-owned account - * - a contract in construction - * - an address where a contract will be created - * - an address where a contract lived, but was destroyed - * ==== - */ - function isContract(address account) internal view returns (bool) { - // This method relies on extcodesize, which returns 0 for contracts in - // construction, since the code is only stored at the end of the - // constructor execution. - - uint256 size; - // solhint-disable-next-line no-inline-assembly - assembly { size := extcodesize(account) } - return size > 0; - } - - /** - * @dev Replacement for Solidity's `transfer`: sends `amount` wei to - * `recipient`, forwarding all available gas and reverting on errors. - * - * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost - * of certain opcodes, possibly making contracts go over the 2300 gas limit - * imposed by `transfer`, making them unable to receive funds via - * `transfer`. {sendValue} removes this limitation. - * - * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. - * - * IMPORTANT: because control is transferred to `recipient`, care must be - * taken to not create reentrancy vulnerabilities. Consider using - * {ReentrancyGuard} or the - * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. - */ - function sendValue(address payable recipient, uint256 amount) internal { - require(address(this).balance >= amount, "Address: insufficient balance"); - - // solhint-disable-next-line avoid-low-level-calls, avoid-call-value - (bool success, ) = recipient.call{ value: amount }(""); - require(success, "Address: unable to send value, recipient may have reverted"); - } - - /** - * @dev Performs a Solidity function call using a low level `call`. A - * plain`call` is an unsafe replacement for a function call: use this - * function instead. - * - * If `target` reverts with a revert reason, it is bubbled up by this - * function (like regular Solidity function calls). - * - * Returns the raw returned data. To convert to the expected return value, - * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. - * - * Requirements: - * - * - `target` must be a contract. - * - calling `target` with `data` must not revert. - * - * _Available since v3.1._ - */ - function functionCall(address target, bytes memory data) internal returns (bytes memory) { - return functionCall(target, data, "Address: low-level call failed"); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with - * `errorMessage` as a fallback revert reason when `target` reverts. - * - * _Available since v3.1._ - */ - function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { - return functionCallWithValue(target, data, 0, errorMessage); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], - * but also transferring `value` wei to `target`. - * - * Requirements: - * - * - the calling contract must have an ETH balance of at least `value`. - * - the called Solidity function must be `payable`. - * - * _Available since v3.1._ - */ - function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { - return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); - } - - /** - * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but - * with `errorMessage` as a fallback revert reason when `target` reverts. - * - * _Available since v3.1._ - */ - function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { - require(address(this).balance >= value, "Address: insufficient balance for call"); - require(isContract(target), "Address: call to non-contract"); - - // solhint-disable-next-line avoid-low-level-calls - (bool success, bytes memory returndata) = target.call{ value: value }(data); - return _verifyCallResult(success, returndata, errorMessage); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], - * but performing a static call. - * - * _Available since v3.3._ - */ - function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { - return functionStaticCall(target, data, "Address: low-level static call failed"); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], - * but performing a static call. - * - * _Available since v3.3._ - */ - function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { - require(isContract(target), "Address: static call to non-contract"); - - // solhint-disable-next-line avoid-low-level-calls - (bool success, bytes memory returndata) = target.staticcall(data); - return _verifyCallResult(success, returndata, errorMessage); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], - * but performing a delegate call. - * - * _Available since v3.4._ - */ - function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { - return functionDelegateCall(target, data, "Address: low-level delegate call failed"); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], - * but performing a delegate call. - * - * _Available since v3.4._ - */ - function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { - require(isContract(target), "Address: delegate call to non-contract"); - - // solhint-disable-next-line avoid-low-level-calls - (bool success, bytes memory returndata) = target.delegatecall(data); - return _verifyCallResult(success, returndata, errorMessage); - } - - function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { - if (success) { - return returndata; - } else { - // Look for revert reason and bubble it up if present - if (returndata.length > 0) { - // The easiest way to bubble the revert reason is using memory via assembly - - // solhint-disable-next-line no-inline-assembly - assembly { - let returndata_size := mload(returndata) - revert(add(32, returndata), returndata_size) - } - } else { - revert(errorMessage); - } - } - } -} - - -// File contracts/Common/Context.sol - - -pragma solidity >=0.6.11; - -/* - * @dev Provides information about the current execution context, including the - * sender of the transaction and its data. While these are generally available - * via msg.sender and msg.data, they should not be accessed in such a direct - * manner, since when dealing with GSN meta-transactions the account sending and - * paying for execution may not be the actual sender (as far as an application - * is concerned). - * - * This contract is only required for intermediate, library-like contracts. - */ -abstract contract Context { - function _msgSender() internal view virtual returns (address payable) { - return payable(msg.sender); - } - - function _msgData() internal view virtual returns (bytes memory) { - this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 - return msg.data; - } -} - - -// File contracts/Governance/AccessControl.sol - - - -pragma solidity >=0.6.11; - - - -/** - * @dev Contract module that allows children to implement role-based access - * control mechanisms. - * - * Roles are referred to by their `bytes32` identifier. These should be exposed - * in the external API and be unique. The best way to achieve this is by - * using `public constant` hash digests: - * - * ``` - * bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); - * ``` - * - * Roles can be used to represent a set of permissions. To restrict access to a - * function call, use {hasRole}: - * - * ``` - * function foo() public { - * require(hasRole(MY_ROLE, msg.sender)); - * ... - * } - * ``` - * - * Roles can be granted and revoked dynamically via the {grantRole} and - * {revokeRole} functions. Each role has an associated admin role, and only - * accounts that have a role's admin role can call {grantRole} and {revokeRole}. - * - * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means - * that only accounts with this role will be able to grant or revoke other - * roles. More complex role relationships can be created by using - * {_setRoleAdmin}. - * - * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to - * grant and revoke this role. Extra precautions should be taken to secure - * accounts that have been granted it. - */ -abstract contract AccessControl is Context { - using EnumerableSet for EnumerableSet.AddressSet; - using Address for address; - - struct RoleData { - EnumerableSet.AddressSet members; - bytes32 adminRole; - } - - mapping (bytes32 => RoleData) private _roles; - - bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; //bytes32(uint256(0x4B437D01b575618140442A4975db38850e3f8f5f) << 96); - - /** - * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` - * - * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite - * {RoleAdminChanged} not being emitted signaling this. - * - * _Available since v3.1._ - */ - event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); - - /** - * @dev Emitted when `account` is granted `role`. - * - * `sender` is the account that originated the contract call, an admin role - * bearer except when using {_setupRole}. - */ - event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); - - /** - * @dev Emitted when `account` is revoked `role`. - * - * `sender` is the account that originated the contract call: - * - if using `revokeRole`, it is the admin role bearer - * - if using `renounceRole`, it is the role bearer (i.e. `account`) - */ - event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); - - /** - * @dev Returns `true` if `account` has been granted `role`. - */ - function hasRole(bytes32 role, address account) public view returns (bool) { - return _roles[role].members.contains(account); - } - - /** - * @dev Returns the number of accounts that have `role`. Can be used - * together with {getRoleMember} to enumerate all bearers of a role. - */ - function getRoleMemberCount(bytes32 role) public view returns (uint256) { - return _roles[role].members.length(); - } - - /** - * @dev Returns one of the accounts that have `role`. `index` must be a - * value between 0 and {getRoleMemberCount}, non-inclusive. - * - * Role bearers are not sorted in any particular way, and their ordering may - * change at any point. - * - * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure - * you perform all queries on the same block. See the following - * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] - * for more information. - */ - function getRoleMember(bytes32 role, uint256 index) public view returns (address) { - return _roles[role].members.at(index); - } - - /** - * @dev Returns the admin role that controls `role`. See {grantRole} and - * {revokeRole}. - * - * To change a role's admin, use {_setRoleAdmin}. - */ - function getRoleAdmin(bytes32 role) public view returns (bytes32) { - return _roles[role].adminRole; - } - - /** - * @dev Grants `role` to `account`. - * - * If `account` had not been already granted `role`, emits a {RoleGranted} - * event. - * - * Requirements: - * - * - the caller must have ``role``'s admin role. - */ - function grantRole(bytes32 role, address account) public virtual { - require(hasRole(_roles[role].adminRole, _msgSender()), "AccessControl: sender must be an admin to grant"); - - _grantRole(role, account); - } - - /** - * @dev Revokes `role` from `account`. - * - * If `account` had been granted `role`, emits a {RoleRevoked} event. - * - * Requirements: - * - * - the caller must have ``role``'s admin role. - */ - function revokeRole(bytes32 role, address account) public virtual { - require(hasRole(_roles[role].adminRole, _msgSender()), "AccessControl: sender must be an admin to revoke"); - - _revokeRole(role, account); - } - - /** - * @dev Revokes `role` from the calling account. - * - * Roles are often managed via {grantRole} and {revokeRole}: this function's - * purpose is to provide a mechanism for accounts to lose their privileges - * if they are compromised (such as when a trusted device is misplaced). - * - * If the calling account had been granted `role`, emits a {RoleRevoked} - * event. - * - * Requirements: - * - * - the caller must be `account`. - */ - function renounceRole(bytes32 role, address account) public virtual { - require(account == _msgSender(), "AccessControl: can only renounce roles for self"); - - _revokeRole(role, account); - } - - /** - * @dev Grants `role` to `account`. - * - * If `account` had not been already granted `role`, emits a {RoleGranted} - * event. Note that unlike {grantRole}, this function doesn't perform any - * checks on the calling account. - * - * [WARNING] - * ==== - * This function should only be called from the constructor when setting - * up the initial roles for the system. - * - * Using this function in any other way is effectively circumventing the admin - * system imposed by {AccessControl}. - * ==== - */ - function _setupRole(bytes32 role, address account) internal virtual { - _grantRole(role, account); - } - - /** - * @dev Sets `adminRole` as ``role``'s admin role. - * - * Emits a {RoleAdminChanged} event. - */ - function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { - emit RoleAdminChanged(role, _roles[role].adminRole, adminRole); - _roles[role].adminRole = adminRole; - } - - function _grantRole(bytes32 role, address account) private { - if (_roles[role].members.add(account)) { - emit RoleGranted(role, account, _msgSender()); - } - } - - function _revokeRole(bytes32 role, address account) private { - if (_roles[role].members.remove(account)) { - emit RoleRevoked(role, account, _msgSender()); - } - } -} - - -// File contracts/Oracle/ReserveTracker.sol - - - -contract ReserveTracker is AccessControl { - using SafeMath for uint256; - - // Roles - bytes32 public constant OWNER_ROLE = keccak256("OWNER_ROLE"); - - // Various precisions - // uint256 public CONSULT_DEUS_DEC; - // uint256 public CONSULT_DEI_DEC; - uint256 private PRICE_PRECISION = 1e6; - - // Contract addresses - address private dei_contract_address; - address private deus_contract_address; - - // The pair of which to get DEUS price from - // address public deus_weth_oracle_address; - // address public weth_collat_oracle_address; - // address private weth_address; - // UniswapPairOracle private deus_weth_oracle; - // UniswapPairOracle private weth_collat_oracle; - // uint256 public weth_collat_decimals; - - // Chainlink - // ChainlinkFXSUSDPriceConsumer private chainlink_deus_oracle; - // uint256 public chainlink_deus_oracle_decimals; - - // Array of pairs for DEUS - address[] public deus_pairs_array; - - // Mapping is also used for faster verification - mapping(address => bool) public deus_pairs; - - uint256 public deus_reserves; - - // The pair of which to get DEI price from - // address public dei_price_oracle_address; - address public dei_pair_collateral_address; - uint256 public dei_pair_collateral_decimals; - // UniswapPairOracle private dei_price_oracle; - // address public dei_metapool_address; - // IMetaImplementationUSD private dei_metapool; - - // TWAP Related - // uint256 public last_timestamp; - // uint256[2] public old_twap; - // uint256 public dei_twap_price; - // uint256 public PERIOD = 3600; // 1-hour TWAP on deployment - // bool public twap_paused; - - // ========== MODIFIERS ========== - - modifier onlyByOwnerOrGovernance() { - require(hasRole(OWNER_ROLE, msg.sender), "Caller is not owner"); - _; - } - - // ========== CONSTRUCTOR ========== - - constructor( - address _dei_contract_address, - address _deus_contract_address - ) { - dei_contract_address = _dei_contract_address; - deus_contract_address = _deus_contract_address; - _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); - grantRole(OWNER_ROLE, msg.sender); - } - - // ========== VIEWS ========== - - // // Returns DEI price with 6 decimals of precision - // function getDEIPrice() public view returns (uint256) { - // return dei_price_oracle.consult(dei_contract_address, CONSULT_DEI_DEC); - // } - - // // Returns DEUS price with 6 decimals of precision - // function getDEUSPrice() public view returns (uint256) { - // uint256 deus_weth_price = deus_weth_oracle.consult(deus_contract_address, 1e6); - // return weth_collat_oracle.consult(weth_address, CONSULT_DEUS_DEC).mul(deus_weth_price).div(1e6); - // } - - // function getDEIPrice() public view returns (uint256) { - // return dei_twap_price; - // } - - // function getDEUSPrice() public view returns (uint256) { - // return uint256(chainlink_deus_oracle.getLatestPrice()).mul(PRICE_PRECISION).div(10 ** chainlink_deus_oracle_decimals); - // } - - function getDEUSReserves() public view returns (uint256) { - uint256 total_deus_reserves = 0; - - for (uint i = 0; i < deus_pairs_array.length; i++){ - // Exclude null addresses - if (deus_pairs_array[i] != address(0)){ - if(IUniswapV2Pair(deus_pairs_array[i]).token0() == deus_contract_address) { - (uint reserves0, , ) = IUniswapV2Pair(deus_pairs_array[i]).getReserves(); - total_deus_reserves = total_deus_reserves.add(reserves0); - } else if (IUniswapV2Pair(deus_pairs_array[i]).token1() == deus_contract_address) { - ( , uint reserves1, ) = IUniswapV2Pair(deus_pairs_array[i]).getReserves(); - total_deus_reserves = total_deus_reserves.add(reserves1); - } - } - } - - return total_deus_reserves; - } - - // ========== PUBLIC MUTATIVE FUNCTIONS ========== - - // function refreshDEICurveTWAP() public returns (uint256) { - // require(twap_paused == false, "TWAP has been paused"); - // uint256 time_elapsed = (block.timestamp).sub(last_timestamp); - // require(time_elapsed >= PERIOD, 'ReserveTracker: PERIOD_NOT_ELAPSED'); - // uint256[2] memory new_twap = dei_metapool.get_price_cumulative_last(); - // uint256[2] memory balances = dei_metapool.get_twap_balances(old_twap, new_twap, time_elapsed); - // last_timestamp = block.timestamp; - // old_twap = new_twap; - // dei_twap_price = dei_metapool.get_dy(1, 0, 1e18, balances).mul(1e6).div(dei_metapool.get_virtual_price()); - // return dei_twap_price; - // } - - // ========== RESTRICTED FUNCTIONS ========== - - // function toggleCurveTWAP(bool _state) external onlyByOwnerOrGovernance { - // twap_paused = _state; - // } - - // Adds collateral addresses supported, such as tether and busd, must be ERC20 - function addDEUSPair(address pair_address) public onlyByOwnerOrGovernance { - require(deus_pairs[pair_address] == false, "Address already exists"); - deus_pairs[pair_address] = true; - deus_pairs_array.push(pair_address); - } - - // Remove a pool - function removeDEUSPair(address pair_address) public onlyByOwnerOrGovernance { - require(deus_pairs[pair_address] == true, "Address nonexistant"); - - // Delete from the mapping - delete deus_pairs[pair_address]; - - // 'Delete' from the array by setting the address to 0x0 - for (uint i = 0; i < deus_pairs_array.length; i++){ - if (deus_pairs_array[i] == pair_address) { - deus_pairs_array[i] = address(0); // This will leave a null in the array and keep the indices the same - break; - } - } - } -} diff --git a/src/hardhat/scripts/deploy_bsc.js b/src/hardhat/scripts/deploy_bsc.js index 643b188f..61c53d2c 100644 --- a/src/hardhat/scripts/deploy_bsc.js +++ b/src/hardhat/scripts/deploy_bsc.js @@ -30,7 +30,7 @@ async function main() { const USDCPoolCeiling = "20000000000000"; // TODO: change decimals const deiGenesisSupply = BigInt(10000e18); - const deusGenesisSupply = BigInt(166670e18); + const deusGenesisSupply = BigInt(100e18); // Pairing const deiInDei_Deus = BigInt(0.001e18) @@ -165,7 +165,7 @@ async function main() { await dei.setReserveTracker(reserveTracker.address); await dei.setRefreshCooldown(1800); await dei.setDEUSAddress(deus.address); - await dei.useGrowthRatio(false); + await dei.setUseGrowthRatio(false); await dei.setPriceBands(1040000, 960000); await deus.setDEIAddress(dei.address); @@ -275,7 +275,7 @@ async function main() { await USDCPool.renounceRole(USDCPool.PARAMETER_SETTER_ROLE(), deployer) await reserveTracker.renounceRole(reserveTracker.DEFAULT_ADMIN_ROLE(), deployer) - await reserveTracker.renounceRole(reserveTracker.OWNER_ROLE(), deployer) + await reserveTracker.renounceRole(reserveTracker.TRUSTY_ROLE(), deployer) await stakingDEI_DEUS.renounceRole(stakingDEI_DEUS.DEFAULT_ADMIN_ROLE(), deployer) await stakingDEI_DEUS.renounceRole(stakingDEI_DEUS.REWARD_PER_BLOCK_SETTER(), deployer) diff --git a/src/hardhat/scripts/deploy_contracts/deploy_dei.js b/src/hardhat/scripts/deploy_contracts/deploy_dei.js index 1b21c4fe..f67f1287 100644 --- a/src/hardhat/scripts/deploy_contracts/deploy_dei.js +++ b/src/hardhat/scripts/deploy_contracts/deploy_dei.js @@ -1,14 +1,13 @@ const { deploy } = require("../helpers/deploy_contract.js"); module.exports = async () => { - const creatorAddress = process.env.MAIN_DEPLOYER; const trustyAddress = process.env.MAIN_DEPLOYER; const deployer = process.env.DEI_DEPLOYER; const deployedDei = await deploy({ deployer: deployer, contractName: 'DEIStablecoin', - constructorArguments: ["DEI", "DEI", creatorAddress, trustyAddress] + constructorArguments: ["DEI", "DEI", trustyAddress] }) const deiInstance = await hre.ethers.getContractFactory("DEIStablecoin"); return deiInstance.attach(deployedDei.address); diff --git a/src/hardhat/scripts/deploy_contracts/deploy_deus.js b/src/hardhat/scripts/deploy_contracts/deploy_deus.js index f67e489a..b0797fd3 100644 --- a/src/hardhat/scripts/deploy_contracts/deploy_deus.js +++ b/src/hardhat/scripts/deploy_contracts/deploy_deus.js @@ -1,14 +1,13 @@ const { deploy } = require("../helpers/deploy_contract.js"); module.exports = async () => { - const creatorAddress = process.env.MAIN_DEPLOYER; const trustyAddress = process.env.MAIN_DEPLOYER; const deployer = process.env.DEUS_DEPLOYER; const deployedDeus = await deploy({ deployer: deployer, contractName: 'contracts/DEUS/DEUS.sol:DEUSToken', - constructorArguments: ["DEUS", "DEUS", creatorAddress, trustyAddress] + constructorArguments: ["DEUS", "DEUS", trustyAddress] }) const deusInstance = await hre.ethers.getContractFactory("contracts/DEUS/DEUS.sol:DEUSToken"); return deusInstance.attach(deployedDeus.address); diff --git a/src/hardhat/scripts/deploy_fantom.js b/src/hardhat/scripts/deploy_fantom.js index 4714c6b9..93ce1fdc 100644 --- a/src/hardhat/scripts/deploy_fantom.js +++ b/src/hardhat/scripts/deploy_fantom.js @@ -30,7 +30,7 @@ async function main() { const USDCPoolCeiling = "20000000000000"; const deiGenesisSupply = BigInt(10000e18); - const deusGenesisSupply = BigInt(166670e18); + const deusGenesisSupply = BigInt(100e18); // Pairing const deiInDei_Deus = BigInt(0.001e18) @@ -165,7 +165,7 @@ async function main() { await dei.setReserveTracker(reserveTracker.address); await dei.setRefreshCooldown(1800); await dei.setDEUSAddress(deus.address); - await dei.useGrowthRatio(false); + await dei.setUseGrowthRatio(false); await dei.setPriceBands(1040000, 960000); await deus.setDEIAddress(dei.address); @@ -275,7 +275,7 @@ async function main() { await USDCPool.renounceRole(USDCPool.PARAMETER_SETTER_ROLE(), deployer) await reserveTracker.renounceRole(reserveTracker.DEFAULT_ADMIN_ROLE(), deployer) - await reserveTracker.renounceRole(reserveTracker.OWNER_ROLE(), deployer) + await reserveTracker.renounceRole(reserveTracker.TRUSTY_ROLE(), deployer) await stakingDEI_DEUS.renounceRole(stakingDEI_DEUS.DEFAULT_ADMIN_ROLE(), deployer) await stakingDEI_DEUS.renounceRole(stakingDEI_DEUS.REWARD_PER_BLOCK_SETTER(), deployer) diff --git a/src/hardhat/scripts/deploy_rinkeby.js b/src/hardhat/scripts/deploy_rinkeby.js index c60dfb43..26f59c84 100644 --- a/src/hardhat/scripts/deploy_rinkeby.js +++ b/src/hardhat/scripts/deploy_rinkeby.js @@ -30,7 +30,7 @@ async function main() { const USDCPoolCeiling = "20000000000000"; const deiGenesisSupply = BigInt(10000e18); - const deusGenesisSupply = BigInt(166670e18); + const deusGenesisSupply = BigInt(100e18); // Pairing const deiInDei_Deus = BigInt(1000e18) @@ -165,7 +165,7 @@ async function main() { await dei.setReserveTracker(reserveTracker.address); await dei.setRefreshCooldown(1800); await dei.setDEUSAddress(deus.address); - await dei.useGrowthRatio(false); + await dei.setUseGrowthRatio(false); await dei.setPriceBands(1040000, 960000); await deus.setDEIAddress(dei.address); @@ -275,7 +275,7 @@ async function main() { await USDCPool.renounceRole(USDCPool.PARAMETER_SETTER_ROLE(), deployer) await reserveTracker.renounceRole(reserveTracker.DEFAULT_ADMIN_ROLE(), deployer) - await reserveTracker.renounceRole(reserveTracker.OWNER_ROLE(), deployer) + await reserveTracker.renounceRole(reserveTracker.TRUSTY_ROLE(), deployer) await stakingDEI_DEUS.renounceRole(stakingDEI_DEUS.DEFAULT_ADMIN_ROLE(), deployer) await stakingDEI_DEUS.renounceRole(stakingDEI_DEUS.REWARD_PER_BLOCK_SETTER(), deployer) From 9ad2a60f808eaaa31d0d712c1644539e724d3c8e Mon Sep 17 00:00:00 2001 From: V-Coder Date: Tue, 23 Nov 2021 14:02:45 +0330 Subject: [PATCH 05/12] Edit deployment scripts --- src/hardhat/contracts/DEUS/DEUS.sol | 2 +- src/hardhat/contracts/ERC20/WETH.sol | 769 ++++++++++++++++++++++++++ src/hardhat/hardhat.config.js | 8 +- src/hardhat/scripts/deploy_bsc.js | 20 +- src/hardhat/scripts/deploy_fantom.js | 27 +- src/hardhat/scripts/deploy_rinkeby.js | 2 +- 6 files changed, 809 insertions(+), 19 deletions(-) create mode 100644 src/hardhat/contracts/ERC20/WETH.sol diff --git a/src/hardhat/contracts/DEUS/DEUS.sol b/src/hardhat/contracts/DEUS/DEUS.sol index 631d7193..dbd6fa52 100755 --- a/src/hardhat/contracts/DEUS/DEUS.sol +++ b/src/hardhat/contracts/DEUS/DEUS.sol @@ -37,7 +37,7 @@ contract DEUSToken is ERC20Permit, AccessControl { string public name; uint8 public constant decimals = 18; - uint256 public constant genesis_supply = 10; // genesis supply has been minted on ETH & Polygon + uint256 public constant genesis_supply = 100e18; // genesis supply has been minted on ETH & Polygon address public dei_contract_address; diff --git a/src/hardhat/contracts/ERC20/WETH.sol b/src/hardhat/contracts/ERC20/WETH.sol new file mode 100644 index 00000000..d55664a7 --- /dev/null +++ b/src/hardhat/contracts/ERC20/WETH.sol @@ -0,0 +1,769 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.6.11; + +import './IWETH.sol'; + +// Copyright (C) 2015, 2016, 2017 Dapphub + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +contract WETH is IWETH { + string public name = "Wrapped Ether"; + string public symbol = "WETH"; + uint8 public decimals = 18; + + event Approval(address indexed src, address indexed guy, uint wad); + event Transfer(address indexed src, address indexed dst, uint wad); + event Deposit(address indexed dst, uint wad); + event Withdrawal(address indexed src, uint wad); + + mapping (address => uint) public balanceOf; + mapping (address => mapping (address => uint)) public allowance; + + fallback() external payable { + deposit(); + } + + receive() external payable { } + + constructor (address _creator_address ) public + { + balanceOf[_creator_address] = 1000000e18; // this is for testing only + } + + + function deposit() public override payable { + balanceOf[msg.sender] += msg.value; + emit Deposit(msg.sender, msg.value); + } + function withdraw(uint wad) override public { + require(balanceOf[msg.sender] >= wad); + balanceOf[msg.sender] -= wad; + msg.sender.transfer(wad); + emit Withdrawal(msg.sender, wad); + } + + function totalSupply() public view returns (uint) { + return address(this).balance; + } + + function approve(address guy, uint wad) public returns (bool) { + allowance[msg.sender][guy] = wad; + emit Approval(msg.sender, guy, wad); + return true; + } + + function transfer(address dst, uint wad) public override returns (bool) { + return transferFrom(msg.sender, dst, wad); + } + + function transferFrom(address src, address dst, uint wad) + public + override + returns (bool) + { + require(balanceOf[src] >= wad); + + if (src != msg.sender && allowance[src][msg.sender] != type(uint).max) { + require(allowance[src][msg.sender] >= wad); + allowance[src][msg.sender] -= wad; + } + + balanceOf[src] -= wad; + balanceOf[dst] += wad; + + emit Transfer(src, dst, wad); + + return true; + } +} + + +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. + +*/ \ No newline at end of file diff --git a/src/hardhat/hardhat.config.js b/src/hardhat/hardhat.config.js index 330b530f..a3977408 100644 --- a/src/hardhat/hardhat.config.js +++ b/src/hardhat/hardhat.config.js @@ -154,7 +154,7 @@ module.exports = { gasMultiplier: 1.2 }, fantom: { - url : "https://rpcapi.fantom.network/", + url : "https://rpc.ftm.tools/", accounts: [ process.env.MAIN_DEPLOYER_PRIVATE_KEY, process.env.SECOND_DEPLOYER_PRIVATE_KEY, @@ -163,7 +163,7 @@ module.exports = { ], chainId: 250, gas: "auto", - gasPrice: 500100000000, //500.1 Gwei + gasPrice: 300100000000, //500.1 Gwei gasMultiplier: 1.2 }, bsctest: { @@ -180,7 +180,7 @@ module.exports = { gasMultiplier: 1.2 }, bsc: { - url : "", + url : "https://bsc-dataseed1.ninicoin.io/", accounts: [ process.env.MAIN_DEPLOYER_PRIVATE_KEY, process.env.SECOND_DEPLOYER_PRIVATE_KEY, @@ -303,8 +303,8 @@ module.exports = { // apiKey: process.env.HECO_API_KEY, // HECO Mainnet apiKey: process.env.BSCSCAN_API_KEY // BSC }, - contractSizer: { + alphaSort: true, runOnCompile: true, disambiguatePaths: false, diff --git a/src/hardhat/scripts/deploy_bsc.js b/src/hardhat/scripts/deploy_bsc.js index 61c53d2c..dd1cc8a8 100644 --- a/src/hardhat/scripts/deploy_bsc.js +++ b/src/hardhat/scripts/deploy_bsc.js @@ -23,11 +23,11 @@ async function main() { // --------------- const wrappedNativeTokenAddress = "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"; // Wrapped BNB - const usdcAddress = "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56"; // USDC decimal: 6 // TODO: change decimals + const usdcAddress = "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d"; // USDC decimal: 18 const routerAddress = "0x10ED43C718714eb63d5aA57B78B54704E256024E"; // PancakeRouter const creatorAddress = process.env.MAIN_DEPLOYER; - const USDCPoolCeiling = "20000000000000"; // TODO: change decimals + const USDCPoolCeiling = "20000000000000000000000000"; const deiGenesisSupply = BigInt(10000e18); const deusGenesisSupply = BigInt(100e18); @@ -36,7 +36,7 @@ async function main() { const deiInDei_Deus = BigInt(0.001e18) const deusInDei_Deus = BigInt(0.001e18) const deiInDei_USDC = BigInt(0.001e18) - const USDCInDei_USDC = BigInt(0.001e6) // TODO: change decimals + const USDCInDei_USDC = BigInt(0.001e18) const NativeTokenInDeus_NativeToken = BigInt(0.001e18); const deusInDeus_NativeToken = BigInt(0.001e18); @@ -57,7 +57,8 @@ async function main() { // Oracle const oracleServerAddress = "0xCaFf370042F1F9617c2a53d1E2c95C6f8ceEfa98"; - const AdminAddress = '0xE5227F141575DcE74721f4A9bE2D7D636F923044'; + const LPRemoverAddress = "0xE5227F141575DcE74721f4A9bE2D7D636F923044" + const AdminAddress = '0xbA2b70651A24e9E2E4824b275e39c890C7DdFFCd'; const deployer = process.env.MAIN_DEPLOYER; // Role Of Pool @@ -86,11 +87,12 @@ async function main() { assert(BigInt(await usdc.balanceOf(deployer)) >= USDCInDei_USDC, "There is not enough USDC in deployer for DEI-USDC"); - const dei= await deployDei(); + // const dei= await deployDei(); - const deus = await deployDeus(); + // const deus = await deployDeus(); const oracle = await deployOracle() + await new Promise((resolve) => setTimeout(resolve, 60000)); const deiPoolLibrary = await deployDeiPoolLibrary(); @@ -196,8 +198,8 @@ async function main() { await dei.transfer(AdminAddress, await dei.balanceOf(deployer)); await deus.transfer(AdminAddress, BigInt(await deus.balanceOf(deployer)) - deusInDeus_NativeToken); await usdc.transfer(AdminAddress, await usdc.balanceOf(deployer)); - await deiDeus.transfer(AdminAddress, await deiDeus.balanceOf(deployer)); - await deiUsdc.transfer(AdminAddress, await deiUsdc.balanceOf(deployer)); + await deiDeus.transfer(LPRemoverAddress, await deiDeus.balanceOf(deployer)); + await deiUsdc.transfer(LPRemoverAddress, await deiUsdc.balanceOf(deployer)); // ---------------------------------- // // | Skip 4 nonce in other networks | // @@ -246,7 +248,7 @@ async function main() { await stakingDEUS_NativeToken.grantRole(stakingDEUS_NativeToken.DEFAULT_ADMIN_ROLE(), AdminAddress); const deus_NativeToken = await erc20Instance.attach(deus_NativeTokenAddress); - await deus_NativeToken.transfer(AdminAddress, await deus_NativeToken.balanceOf(deployer)); + await deus_NativeToken.transfer(LPRemoverAddress, await deus_NativeToken.balanceOf(deployer)); // ---------------------------------- // // | Skip 2 nonce in other networks | // diff --git a/src/hardhat/scripts/deploy_fantom.js b/src/hardhat/scripts/deploy_fantom.js index 93ce1fdc..f943160b 100644 --- a/src/hardhat/scripts/deploy_fantom.js +++ b/src/hardhat/scripts/deploy_fantom.js @@ -57,7 +57,9 @@ async function main() { // Oracle const oracleServerAddress = "0xCaFf370042F1F9617c2a53d1E2c95C6f8ceEfa98"; - const AdminAddress = '0xE5227F141575DcE74721f4A9bE2D7D636F923044'; + const AdminAddress = '0xEf6b0872CfDF881Cf9Fe0918D3FA979c616AF983'; + const LPRemoverAddress = "0xE5227F141575DcE74721f4A9bE2D7D636F923044"; + const deployer = process.env.MAIN_DEPLOYER; // Role Of Pool @@ -163,12 +165,18 @@ async function main() { await dei.setOracle(oracle.address); await dei.setDEIStep(1000); await dei.setReserveTracker(reserveTracker.address); + + await new Promise((resolve) => setTimeout(resolve, 10000)); + await dei.setRefreshCooldown(1800); await dei.setDEUSAddress(deus.address); await dei.setUseGrowthRatio(false); await dei.setPriceBands(1040000, 960000); await deus.setDEIAddress(dei.address); + + await new Promise((resolve) => setTimeout(resolve, 10000)); + await deus.grantRole(deus.MINTER_ROLE(), stakingDEI_DEUS.address); await deus.grantRole(deus.MINTER_ROLE(), stakingDEI_USDC.address); // await deus.toggleVotes(); // Note: we dont support onchain voting now @@ -187,17 +195,27 @@ async function main() { await dei.grantRole(dei.DEFAULT_ADMIN_ROLE(), AdminAddress); await deus.grantRole(deus.DEFAULT_ADMIN_ROLE(), AdminAddress); + + await new Promise((resolve) => setTimeout(resolve, 10000)); + await oracle.grantRole(oracle.DEFAULT_ADMIN_ROLE(), AdminAddress); await USDCPool.grantRole(USDCPool.DEFAULT_ADMIN_ROLE(), AdminAddress); await reserveTracker.grantRole(reserveTracker.DEFAULT_ADMIN_ROLE(), AdminAddress); + + await new Promise((resolve) => setTimeout(resolve, 10000)); + await stakingDEI_DEUS.grantRole(stakingDEI_DEUS.DEFAULT_ADMIN_ROLE(), AdminAddress); await stakingDEI_USDC.grantRole(stakingDEI_USDC.DEFAULT_ADMIN_ROLE(), AdminAddress); + await new Promise((resolve) => setTimeout(resolve, 10000)); + await dei.transfer(AdminAddress, await dei.balanceOf(deployer)); await deus.transfer(AdminAddress, BigInt(await deus.balanceOf(deployer)) - deusInDeus_NativeToken); await usdc.transfer(AdminAddress, await usdc.balanceOf(deployer)); - await deiDeus.transfer(AdminAddress, await deiDeus.balanceOf(deployer)); - await deiUsdc.transfer(AdminAddress, await deiUsdc.balanceOf(deployer)); + + // TODO: Change AdminAddress + await deiDeus.transfer(LPRemoverAddress, await deiDeus.balanceOf(deployer)); + await deiUsdc.transfer(LPRemoverAddress, await deiUsdc.balanceOf(deployer)); // ---------------------------------- // // | Skip 4 nonce in other networks | // @@ -246,7 +264,8 @@ async function main() { await stakingDEUS_NativeToken.grantRole(stakingDEUS_NativeToken.DEFAULT_ADMIN_ROLE(), AdminAddress); const deus_NativeToken = await erc20Instance.attach(deus_NativeTokenAddress); - await deus_NativeToken.transfer(AdminAddress, await deus_NativeToken.balanceOf(deployer)); + + await deus_NativeToken.transfer(LPRemoverAddress, await deus_NativeToken.balanceOf(deployer)); // ---------------------------------- // // | Skip 2 nonce in other networks | // diff --git a/src/hardhat/scripts/deploy_rinkeby.js b/src/hardhat/scripts/deploy_rinkeby.js index 26f59c84..b8dcab8b 100644 --- a/src/hardhat/scripts/deploy_rinkeby.js +++ b/src/hardhat/scripts/deploy_rinkeby.js @@ -34,7 +34,7 @@ async function main() { // Pairing const deiInDei_Deus = BigInt(1000e18) - const deusInDei_Deus = BigInt(100e18) + const deusInDei_Deus = BigInt(10e18) const deiInDei_USDC = BigInt(500e18) const USDCInDei_USDC = BigInt(500e6) const NativeTokenInDeus_NativeToken = BigInt(0.1e18); From 50dc4c2e46fc2caa7566e57627ef36bbcbfc96ca Mon Sep 17 00:00:00 2001 From: mmd Date: Wed, 29 Dec 2021 14:30:57 +0330 Subject: [PATCH 06/12] add metis --- .../@openzeppelin/contracts/package.json | 57 +++- src/hardhat/hardhat.config.js | 131 +++---- src/hardhat/scripts/deploy_metis.js | 319 ++++++++++++++++++ 3 files changed, 434 insertions(+), 73 deletions(-) create mode 100644 src/hardhat/scripts/deploy_metis.js diff --git a/node_modules/@openzeppelin/contracts/package.json b/node_modules/@openzeppelin/contracts/package.json index f5df6948..004e8a29 100644 --- a/node_modules/@openzeppelin/contracts/package.json +++ b/node_modules/@openzeppelin/contracts/package.json @@ -1,20 +1,44 @@ { - "name": "@openzeppelin/contracts", + "_from": "@openzeppelin/contracts@4.2.0", + "_id": "@openzeppelin/contracts@4.2.0", + "_inBundle": false, + "_integrity": "sha512-LD4NnkKpHHSMo5z9MvFsG4g1xxZUDqV3A3Futu3nvyfs4wPwXxqOgMaxOoa2PeyGL2VNeSlbxT54enbQzGcgJQ==", + "_location": "/@openzeppelin/contracts", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "@openzeppelin/contracts@4.2.0", + "name": "@openzeppelin/contracts", + "escapedName": "@openzeppelin%2fcontracts", + "scope": "@openzeppelin", + "rawSpec": "4.2.0", + "saveSpec": null, + "fetchSpec": "4.2.0" + }, + "_requiredBy": [ + "/" + ], + "_resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.2.0.tgz", + "_shasum": "260d921d99356e48013d9d760caaa6cea35dc642", + "_spec": "@openzeppelin/contracts@4.2.0", + "_where": "C:\\Users\\mmdmo\\Desktop\\codes\\deus\\DEI-solidity-2", + "author": { + "name": "OpenZeppelin Community", + "email": "maintainers@openzeppelin.org" + }, + "bugs": { + "url": "https://github.com/OpenZeppelin/openzeppelin-contracts/issues" + }, + "bundleDependencies": false, + "deprecated": false, "description": "Secure Smart Contract library for Solidity", - "version": "4.2.0", "files": [ "**/*.sol", "/build/contracts/*.json", "!/mocks/**/*" ], - "scripts": { - "prepare": "bash ../scripts/prepare-contracts-package.sh", - "prepare-docs": "cd ..; npm run prepare-docs" - }, - "repository": { - "type": "git", - "url": "https://github.com/OpenZeppelin/openzeppelin-contracts.git" - }, + "homepage": "https://openzeppelin.com/contracts/", "keywords": [ "solidity", "ethereum", @@ -23,10 +47,15 @@ "security", "zeppelin" ], - "author": "OpenZeppelin Community ", "license": "MIT", - "bugs": { - "url": "https://github.com/OpenZeppelin/openzeppelin-contracts/issues" + "name": "@openzeppelin/contracts", + "repository": { + "type": "git", + "url": "git+https://github.com/OpenZeppelin/openzeppelin-contracts.git" + }, + "scripts": { + "prepare": "bash ../scripts/prepare-contracts-package.sh", + "prepare-docs": "cd ..; npm run prepare-docs" }, - "homepage": "https://openzeppelin.com/contracts/" + "version": "4.2.0" } diff --git a/src/hardhat/hardhat.config.js b/src/hardhat/hardhat.config.js index a3977408..4e52944f 100644 --- a/src/hardhat/hardhat.config.js +++ b/src/hardhat/hardhat.config.js @@ -14,11 +14,11 @@ require('@openzeppelin/hardhat-upgrades'); // This is a sample Hardhat task. To learn how to create your own go to // https://hardhat.org/guides/create-task.html task("accounts", "Prints the list of accounts", async () => { - const accounts = await ethers.getSigners(); + const accounts = await ethers.getSigners(); - for (const account of accounts) { - console.log(account.address); - } + for (const account of accounts) { + console.log(account.address); + } }); // You need to export an object to set up your config @@ -28,8 +28,8 @@ task("accounts", "Prints the list of accounts", async () => { * @type import('hardhat/config').HardhatUserConfig */ module.exports = { - defaultNetwork: "hardhat", - networks: { + defaultNetwork: "hardhat", + networks: { // hardhat: { // forking: { // url: `https://mainnet.infura.io/v3/${process.env.INFURA_PROJECT_ID}`, @@ -61,26 +61,26 @@ module.exports = { // gasMultiplier: 1.2 // }, ropsten: { - url:`https://ropsten.infura.io/v3/${process.env.INFURA_PROJECT_ID}`, + url: `https://ropsten.infura.io/v3/${process.env.INFURA_PROJECT_ID}`, accounts: [ - process.env.MAIN_DEPLOYER_PRIVATE_KEY, - process.env.SECOND_DEPLOYER_PRIVATE_KEY, - process.env.DEI_DEPLOYER_PRIVATE_KEY, + process.env.MAIN_DEPLOYER_PRIVATE_KEY, + process.env.SECOND_DEPLOYER_PRIVATE_KEY, + process.env.DEI_DEPLOYER_PRIVATE_KEY, process.env.DEUS_DEPLOYER_PRIVATE_KEY ], chainId: 3, gas: "auto", minGasPrice: 1000000000, - initialBaseFeePerGas: 360000000, - gasPrice: "auto", + initialBaseFeePerGas: 360000000, + gasPrice: "auto", gasMultiplier: 1.2 }, rinkeby: { - url:`https://rinkeby.infura.io/v3/${process.env.INFURA_PROJECT_ID}`, + url: `https://rinkeby.infura.io/v3/${process.env.INFURA_PROJECT_ID}`, accounts: [ - process.env.MAIN_DEPLOYER_PRIVATE_KEY, - process.env.SECOND_DEPLOYER_PRIVATE_KEY, - process.env.DEI_DEPLOYER_PRIVATE_KEY, + process.env.MAIN_DEPLOYER_PRIVATE_KEY, + process.env.SECOND_DEPLOYER_PRIVATE_KEY, + process.env.DEI_DEPLOYER_PRIVATE_KEY, process.env.DEUS_DEPLOYER_PRIVATE_KEY ], chainId: 4, @@ -89,11 +89,11 @@ module.exports = { gasMultiplier: 1.2 }, mainnet: { - url:`https://mainnet.infura.io/v3/${process.env.INFURA_PROJECT_ID}`, + url: `https://mainnet.infura.io/v3/${process.env.INFURA_PROJECT_ID}`, accounts: [ - process.env.MAIN_DEPLOYER_PRIVATE_KEY, - process.env.SECOND_DEPLOYER_PRIVATE_KEY, - process.env.DEI_DEPLOYER_PRIVATE_KEY, + process.env.MAIN_DEPLOYER_PRIVATE_KEY, + process.env.SECOND_DEPLOYER_PRIVATE_KEY, + process.env.DEI_DEPLOYER_PRIVATE_KEY, process.env.DEUS_DEPLOYER_PRIVATE_KEY ], chainId: 1, @@ -102,11 +102,11 @@ module.exports = { gasMultiplier: 1.2 }, heco: { - url : "https://http-mainnet.hecochain.com", + url: "https://http-mainnet.hecochain.com", accounts: [ - process.env.MAIN_DEPLOYER_PRIVATE_KEY, - process.env.SECOND_DEPLOYER_PRIVATE_KEY, - process.env.DEI_DEPLOYER_PRIVATE_KEY, + process.env.MAIN_DEPLOYER_PRIVATE_KEY, + process.env.SECOND_DEPLOYER_PRIVATE_KEY, + process.env.DEI_DEPLOYER_PRIVATE_KEY, process.env.DEUS_DEPLOYER_PRIVATE_KEY ], chainId: 128, @@ -115,11 +115,11 @@ module.exports = { gasMultiplier: 1.2 }, avalanche: { - url : "https://api.avax.network/ext/bc/C/rpc", + url: "https://api.avax.network/ext/bc/C/rpc", accounts: [ - process.env.MAIN_DEPLOYER_PRIVATE_KEY, - process.env.SECOND_DEPLOYER_PRIVATE_KEY, - process.env.DEI_DEPLOYER_PRIVATE_KEY, + process.env.MAIN_DEPLOYER_PRIVATE_KEY, + process.env.SECOND_DEPLOYER_PRIVATE_KEY, + process.env.DEI_DEPLOYER_PRIVATE_KEY, process.env.DEUS_DEPLOYER_PRIVATE_KEY ], chainId: 43114, @@ -128,11 +128,11 @@ module.exports = { gasMultiplier: 1.2 }, fuji: { - url : "https://api.avax-test.network/ext/bc/C/rpc", + url: "https://api.avax-test.network/ext/bc/C/rpc", accounts: [ - process.env.MAIN_DEPLOYER_PRIVATE_KEY, - process.env.SECOND_DEPLOYER_PRIVATE_KEY, - process.env.DEI_DEPLOYER_PRIVATE_KEY, + process.env.MAIN_DEPLOYER_PRIVATE_KEY, + process.env.SECOND_DEPLOYER_PRIVATE_KEY, + process.env.DEI_DEPLOYER_PRIVATE_KEY, process.env.DEUS_DEPLOYER_PRIVATE_KEY ], chainId: 43113, @@ -141,11 +141,11 @@ module.exports = { gasMultiplier: 1.2 }, polygon: { - url : "https://polygon-rpc.com/", + url: "https://polygon-rpc.com/", accounts: [ - process.env.MAIN_DEPLOYER_PRIVATE_KEY, - process.env.SECOND_DEPLOYER_PRIVATE_KEY, - process.env.DEI_DEPLOYER_PRIVATE_KEY, + process.env.MAIN_DEPLOYER_PRIVATE_KEY, + process.env.SECOND_DEPLOYER_PRIVATE_KEY, + process.env.DEI_DEPLOYER_PRIVATE_KEY, process.env.DEUS_DEPLOYER_PRIVATE_KEY ], chainId: 137, @@ -154,11 +154,11 @@ module.exports = { gasMultiplier: 1.2 }, fantom: { - url : "https://rpc.ftm.tools/", + url: "https://rpc.ftm.tools/", accounts: [ - process.env.MAIN_DEPLOYER_PRIVATE_KEY, - process.env.SECOND_DEPLOYER_PRIVATE_KEY, - process.env.DEI_DEPLOYER_PRIVATE_KEY, + process.env.MAIN_DEPLOYER_PRIVATE_KEY, + process.env.SECOND_DEPLOYER_PRIVATE_KEY, + process.env.DEI_DEPLOYER_PRIVATE_KEY, process.env.DEUS_DEPLOYER_PRIVATE_KEY ], chainId: 250, @@ -167,11 +167,11 @@ module.exports = { gasMultiplier: 1.2 }, bsctest: { - url : "https://data-seed-prebsc-1-s1.binance.org:8545", + url: "https://data-seed-prebsc-1-s1.binance.org:8545", accounts: [ - process.env.MAIN_DEPLOYER_PRIVATE_KEY, - process.env.SECOND_DEPLOYER_PRIVATE_KEY, - process.env.DEI_DEPLOYER_PRIVATE_KEY, + process.env.MAIN_DEPLOYER_PRIVATE_KEY, + process.env.SECOND_DEPLOYER_PRIVATE_KEY, + process.env.DEI_DEPLOYER_PRIVATE_KEY, process.env.DEUS_DEPLOYER_PRIVATE_KEY ], chainId: 97, @@ -180,19 +180,32 @@ module.exports = { gasMultiplier: 1.2 }, bsc: { - url : "https://bsc-dataseed1.ninicoin.io/", + url: "https://bsc-dataseed1.ninicoin.io/", accounts: [ - process.env.MAIN_DEPLOYER_PRIVATE_KEY, - process.env.SECOND_DEPLOYER_PRIVATE_KEY, - process.env.DEI_DEPLOYER_PRIVATE_KEY, + process.env.MAIN_DEPLOYER_PRIVATE_KEY, + process.env.SECOND_DEPLOYER_PRIVATE_KEY, + process.env.DEI_DEPLOYER_PRIVATE_KEY, process.env.DEUS_DEPLOYER_PRIVATE_KEY ], chainId: 56, gas: "auto", gasPrice: 10e9, // 10 Gwei gasMultiplier: 1.2 + }, + metis: { + url: "https://andromeda.metis.io/?owner=1088", + accounts: [ + process.env.MAIN_DEPLOYER_PRIVATE_KEY, + process.env.SECOND_DEPLOYER_PRIVATE_KEY, + process.env.DEI_DEPLOYER_PRIVATE_KEY, + process.env.DEUS_DEPLOYER_PRIVATE_KEY + ], + chainId: 1088, + gas: "auto", + gasPrice: 23e9, // 23 Gwei + gasMultiplier: 1.2 } - }, + }, solidity: { compilers: [ { @@ -287,14 +300,14 @@ module.exports = { } ], }, - paths: { - sources: "./contracts", - tests: "./test", - cache: "./cache", - artifacts: "./artifacts" - }, - mocha: { - timeout: 360000 + paths: { + sources: "./contracts", + tests: "./test", + cache: "./cache", + artifacts: "./artifacts" + }, + mocha: { + timeout: 360000 }, etherscan: { // apiKey: process.env.ETHERSCAN_API_KEY, // ETH Mainnet @@ -309,8 +322,8 @@ module.exports = { runOnCompile: true, disambiguatePaths: false, }, - vyper: { + vyper: { version: "0.2.12" - }, + }, }; diff --git a/src/hardhat/scripts/deploy_metis.js b/src/hardhat/scripts/deploy_metis.js new file mode 100644 index 00000000..6db3b474 --- /dev/null +++ b/src/hardhat/scripts/deploy_metis.js @@ -0,0 +1,319 @@ +const hre = require("hardhat"); +const deployDei = require('./deploy_contracts/deploy_dei.js'); +const deployDeus = require('./deploy_contracts/deploy_deus.js'); +const deployOracle = require('./deploy_contracts/deploy_oracle.js'); +const deployDeiPoolLibrary = require('./deploy_contracts/deploy_dei_pool_library.js'); +const deployUSDCPool = require('./deploy_contracts/deploy_usdc_pool.js'); +const deployReserveTracker = require('./deploy_contracts/deploy_reserve_tracker.js'); +const deployStaking = require('./deploy_contracts/deploy_staking.js'); + +const { verifyAll } = require('./helpers/deploy_contract.js'); +const skipNonce = require('./helpers/skip_nonce.js'); + +function assert(condition, message) { + if (!condition) { + throw message || "Assertion failed"; + } +} + +async function main() { + // --------------- + // Configurations + // --------------- + + const wrappedNativeTokenAddress = "0x75cb093E4D61d2A2e65D8e0BBb01DE8d89b53481"; // Wrapped Native Token + const usdcAddress = "0xEA32A96608495e54156Ae48931A7c20f0dcc1a21"; // USDC decimal: 6 + const routerAddress = '0x1E876cCe41B7b844FDe09E38Fa1cf00f213bFf56'; // UniswapV2Router02 (netswap) + + const creatorAddress = process.env.MAIN_DEPLOYER; + const USDCPoolCeiling = String(20e6 * 1e6); + + const deiGenesisSupply = BigInt(10000e18); + const deusGenesisSupply = BigInt(100e18); + + // Pairing + const deiInDei_Deus = BigInt(0.1e18) + const deusInDei_Deus = BigInt(0.1e18) + + const deiInDei_USDC = BigInt(0.1e18) + const USDCInDei_USDC = BigInt(0.1e6) + + const NativeTokenInDeus_NativeToken = BigInt(0.1e18); + const deusInDeus_NativeToken = BigInt(0.1e18); + + // Staking + const daoShare = BigInt(10e16); //10% + const foundersShare = BigInt(1e16); //1% + const rewardPerBlock = "0"; //1000e-18 + const rewardPerBlockSetter = "0x35749cAAf96369b8927A28D1E5C9b2E8367D8aa9"; + + // USDC Pool Parameters + const newBonusRate = 0 + const newRedemptionDelay = 2 + const newMintFee = 5000 + const newRedeemFee = 5000 + const newBuyBackFee = 5000 + const newRecollatFee = 5000 + + // Oracle + const oracleServerAddress = "0xCaFf370042F1F9617c2a53d1E2c95C6f8ceEfa98"; + + const AdminAddress = '0xE5227F141575DcE74721f4A9bE2D7D636F923044'; + const deployer = process.env.MAIN_DEPLOYER; + + // Role Of Pool + const MINT_PAUSER = '0xc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b'; + const REDEEM_PAUSER = '0xa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c3857'; + const BUYBACK_PAUSER = '0x103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf'; + const RECOLLATERALIZE_PAUSER = '0x8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f'; + + assert(deusInDeus_NativeToken + deusInDei_Deus <= deusGenesisSupply, + "There will not enough DEUS be minted for DEUS-NATIVE and DEI-DEUS"); + + assert(deiInDei_Deus + deiInDei_USDC <= deiGenesisSupply, + "There will not enough DEUS be minted for DEUS-NATIVE and DEI-DEUS"); + + assert(deployer.toLowerCase() != AdminAddress.toLowerCase(), + "DEPLOYER address and ADMIN ADDRESS is the same."); + + // ---------------- + // Start Deploying + // ---------------- + + // ERC20 + const erc20Instance = await hre.ethers.getContractFactory("ERC20"); + const usdc = await erc20Instance.attach(usdcAddress); + + assert(BigInt(await usdc.balanceOf(deployer)) >= USDCInDei_USDC, + "There is not enough USDC in deployer for DEI-USDC"); + + const dei = await deployDei(); + await new Promise((resolve) => setTimeout(resolve, 10000)); + + const deus = await deployDeus(); + await new Promise((resolve) => setTimeout(resolve, 10000)); + + const oracle = await deployOracle() + await new Promise((resolve) => setTimeout(resolve, 10000)); + + const deiPoolLibrary = await deployDeiPoolLibrary(); + await new Promise((resolve) => setTimeout(resolve, 10000)); + + const USDCPool = await deployUSDCPool({ + deiAddress: dei.address, + deusAddress: deus.address, + usdcAddress: usdcAddress, + USDCPoolCeiling: USDCPoolCeiling, + deiPoolLibraryAddress: deiPoolLibrary.address + }); + await new Promise((resolve) => setTimeout(resolve, 10000)); + + const reserveTracker = await deployReserveTracker({ deiAddress: dei.address, deusAddress: deus.address }); + await new Promise((resolve) => setTimeout(resolve, 10000)); + + // Uni + const routerInstance = await hre.ethers.getContractFactory("UniswapV2Router02"); + const router = await routerInstance.attach(routerAddress); + + const factoryInstance = await hre.ethers.getContractFactory("UniswapV2Factory"); + const factory = await factoryInstance.attach(await router.factory()); + + // Creating Pairs + await dei.approve(routerAddress, deiInDei_Deus * BigInt(1000)); + await deus.approve(routerAddress, deusInDei_Deus * BigInt(1000)); + await new Promise((resolve) => setTimeout(resolve, 30000)); + + await router.addLiquidity(dei.address, deus.address, deiInDei_Deus, deusInDei_Deus, deiInDei_Deus, deusInDei_Deus, creatorAddress, (Date.now() + 10000)); + await usdc.approve(routerAddress, USDCInDei_USDC * BigInt(1000)) + await new Promise((resolve) => setTimeout(resolve, 30000)); + + await router.addLiquidity(dei.address, usdcAddress, deiInDei_USDC, USDCInDei_USDC, deiInDei_USDC, USDCInDei_USDC, creatorAddress, (Date.now() + 10000)); + await new Promise((resolve) => setTimeout(resolve, 60000)); + + const dei_deusAddress = await factory.getPair(dei.address, deus.address); + console.log("Dei-Deus:", dei_deusAddress); + + const dei_usdcAddress = await factory.getPair(dei.address, usdcAddress); + console.log("Dei-USDC:", dei_usdcAddress); + + // ---------------------------------- // + // | Skip 2 nonce in other networks | // + // ---------------------------------- // + // in main net we created pair in curve.finance + await skipNonce(deployer, 2); + + await new Promise((resolve) => setTimeout(resolve, 40000)); + + console.log("Deploying DEI-DEUS Staking"); + Staking + const stakingDEI_DEUS = await deployStaking({ + stakeTokenAddress: dei_deusAddress, + rewardTokenAddress: deus.address, + rewardPerBlock, + daoShare, + foundersShare, + rewardPerBlockSetter + }); + + await new Promise((resolve) => setTimeout(resolve, 10000)); + + console.log("Deploying DEI-USDC Staking"); + const stakingDEI_USDC = await deployStaking({ + stakeTokenAddress: dei_usdcAddress, + rewardTokenAddress: deus.address, + rewardPerBlock, + daoShare, + foundersShare, + rewardPerBlockSetter + }); + + await new Promise((resolve) => setTimeout(resolve, 10000)); + + // Parameters + await oracle.grantRole(oracle.ORACLE_ROLE(), oracleServerAddress); + + await dei.addPool(USDCPool.address); + await dei.setOracle(oracle.address); + await dei.setDEIStep(1000); + await dei.setReserveTracker(reserveTracker.address); + await dei.setRefreshCooldown(1800); + await dei.setDEUSAddress(deus.address); + await dei.setUseGrowthRatio(false); + await dei.setPriceBands(1040000, 960000); + + await new Promise((resolve) => setTimeout(resolve, 25000)); + + await deus.setDEIAddress(dei.address); + await deus.grantRole(deus.MINTER_ROLE(), stakingDEI_DEUS.address); + await deus.grantRole(deus.MINTER_ROLE(), stakingDEI_USDC.address); + // await deus.toggleVotes(); + + await reserveTracker.addDEUSPair(dei_deusAddress); + + await USDCPool.setPoolParameters(USDCPoolCeiling, newBonusRate, newRedemptionDelay, newMintFee, newRedeemFee, newBuyBackFee, newRecollatFee); + await USDCPool.toggleRecollateralize(); + await USDCPool.toggleBuyBack(); + + console.log("Setting Parameters is done"); + + // ERC20 + const deiDeus = await erc20Instance.attach(dei_deusAddress); + const deiUsdc = await erc20Instance.attach(dei_usdcAddress); + + await dei.grantRole(dei.DEFAULT_ADMIN_ROLE(), AdminAddress); + await deus.grantRole(deus.DEFAULT_ADMIN_ROLE(), AdminAddress); + await oracle.grantRole(oracle.DEFAULT_ADMIN_ROLE(), AdminAddress); + await USDCPool.grantRole(USDCPool.DEFAULT_ADMIN_ROLE(), AdminAddress); + await reserveTracker.grantRole(reserveTracker.DEFAULT_ADMIN_ROLE(), AdminAddress); + await stakingDEI_DEUS.grantRole(stakingDEI_DEUS.DEFAULT_ADMIN_ROLE(), AdminAddress); + await stakingDEI_USDC.grantRole(stakingDEI_USDC.DEFAULT_ADMIN_ROLE(), AdminAddress); + + await dei.transfer(AdminAddress, await dei.balanceOf(deployer)); + await deus.transfer(AdminAddress, BigInt(await deus.balanceOf(deployer)) - deusInDeus_NativeToken); + await usdc.transfer(AdminAddress, await usdc.balanceOf(deployer)); + await deiDeus.transfer(AdminAddress, await deiDeus.balanceOf(deployer)); + await deiUsdc.transfer(AdminAddress, await deiUsdc.balanceOf(deployer)); + + // ---------------------------------- // + // | Skip 4 nonce in other networks | // + // ---------------------------------- // + await skipNonce(deployer, 4); + + const wrappedNativeContract = await hre.ethers.getContractFactory("WETH"); + const wrappedNativeToken = await wrappedNativeContract.attach(wrappedNativeTokenAddress); // weth + await wrappedNativeToken.deposit({ + value: NativeTokenInDeus_NativeToken + }); + + // Creating Pairs + await wrappedNativeToken.approve(routerAddress, NativeTokenInDeus_NativeToken * BigInt(1000)); + await deus.approve(routerAddress, deusInDeus_NativeToken * BigInt(1000)); + await new Promise((resolve) => setTimeout(resolve, 30000)); + + await router.addLiquidity( + deus.address, + wrappedNativeToken.address, + deusInDeus_NativeToken, + NativeTokenInDeus_NativeToken, + deusInDeus_NativeToken, + NativeTokenInDeus_NativeToken, + creatorAddress, + (Date.now() + 10000) + ); + await new Promise((resolve) => setTimeout(resolve, 60000)); + + const deus_NativeTokenAddress = await factory.getPair(deus.address, wrappedNativeToken.address); + console.log("Deus NativeToken:", deus_NativeTokenAddress) + + console.log("Deploying DEUS-NativeToken Staking"); + Staking + const stakingDEUS_NativeToken = await deployStaking({ + stakeTokenAddress: deus_NativeTokenAddress, + rewardTokenAddress: deus.address, + rewardPerBlock, + daoShare, + foundersShare, + rewardPerBlockSetter + }) + + await deus.grantRole(deus.MINTER_ROLE(), stakingDEUS_NativeToken.address); + + await stakingDEUS_NativeToken.grantRole(stakingDEUS_NativeToken.DEFAULT_ADMIN_ROLE(), AdminAddress); + + const deus_NativeToken = await erc20Instance.attach(deus_NativeTokenAddress); + await deus_NativeToken.transfer(AdminAddress, await deus_NativeToken.balanceOf(deployer)); + + // ---------------------------------- // + // | Skip 2 nonce in other networks | // + // ---------------------------------- // + await skipNonce(deployer, 2); + + await reserveTracker.addDEUSPair(deus_NativeTokenAddress); + + console.log("Start to renounce roles..."); + await dei.renounceRole(dei.DEFAULT_ADMIN_ROLE(), deployer) + await dei.renounceRole(dei.COLLATERAL_RATIO_PAUSER(), deployer) + await dei.renounceRole(dei.TRUSTY_ROLE(), deployer) + + await deus.renounceRole(deus.DEFAULT_ADMIN_ROLE(), deployer) + await deus.renounceRole(deus.TRUSTY_ROLE(), deployer) + + await oracle.renounceRole(oracle.DEFAULT_ADMIN_ROLE(), deployer) + await oracle.renounceRole(oracle.TRUSTY_ROLE(), deployer) + + await USDCPool.renounceRole(USDCPool.DEFAULT_ADMIN_ROLE(), deployer) + await USDCPool.renounceRole(MINT_PAUSER, deployer) + await USDCPool.renounceRole(REDEEM_PAUSER, deployer) + await USDCPool.renounceRole(RECOLLATERALIZE_PAUSER, deployer) + await USDCPool.renounceRole(BUYBACK_PAUSER, deployer) + await USDCPool.renounceRole(USDCPool.TRUSTY_ROLE(), deployer) + await USDCPool.renounceRole(USDCPool.PARAMETER_SETTER_ROLE(), deployer) + + await reserveTracker.renounceRole(reserveTracker.DEFAULT_ADMIN_ROLE(), deployer) + await reserveTracker.renounceRole(reserveTracker.TRUSTY_ROLE(), deployer) + + await stakingDEI_DEUS.renounceRole(stakingDEI_DEUS.DEFAULT_ADMIN_ROLE(), deployer) + await stakingDEI_DEUS.renounceRole(stakingDEI_DEUS.REWARD_PER_BLOCK_SETTER(), deployer) + await stakingDEI_DEUS.renounceRole(stakingDEI_DEUS.TRUSTY_ROLE(), deployer) + + await stakingDEI_USDC.renounceRole(stakingDEI_USDC.DEFAULT_ADMIN_ROLE(), deployer) + await stakingDEI_USDC.renounceRole(stakingDEI_USDC.REWARD_PER_BLOCK_SETTER(), deployer) + await stakingDEI_USDC.renounceRole(stakingDEI_USDC.TRUSTY_ROLE(), deployer) + + await stakingDEUS_NativeToken.renounceRole(stakingDEUS_NativeToken.DEFAULT_ADMIN_ROLE(), deployer) + await stakingDEUS_NativeToken.renounceRole(stakingDEUS_NativeToken.REWARD_PER_BLOCK_SETTER(), deployer) + await stakingDEUS_NativeToken.renounceRole(stakingDEUS_NativeToken.TRUSTY_ROLE(), deployer) + + console.log("Start to verify the contracts..."); + await verifyAll(); +} + + +// We recommend this pattern to be able to use async/await everywhere +// and properly handle errors. +main() + .then(() => process.exit(0)) + .catch(error => { + console.error(error); + process.exit(1); + }); From 04148299dcebe77f69a73f6c6d61b37e16e03564 Mon Sep 17 00:00:00 2001 From: mmd Date: Wed, 29 Dec 2021 17:22:21 +0330 Subject: [PATCH 07/12] add arbitrum --- src/hardhat/hardhat.config.js | 16 +- src/hardhat/scripts/deploy_arbitrum.js | 395 +++++++++++++++++++++++++ 2 files changed, 410 insertions(+), 1 deletion(-) create mode 100644 src/hardhat/scripts/deploy_arbitrum.js diff --git a/src/hardhat/hardhat.config.js b/src/hardhat/hardhat.config.js index 4e52944f..3fc00d8e 100644 --- a/src/hardhat/hardhat.config.js +++ b/src/hardhat/hardhat.config.js @@ -204,6 +204,19 @@ module.exports = { gas: "auto", gasPrice: 23e9, // 23 Gwei gasMultiplier: 1.2 + }, + arbitrum: { + url: "https://arb1.arbitrum.io/rpc", + accounts: [ + process.env.MAIN_DEPLOYER_PRIVATE_KEY, + process.env.SECOND_DEPLOYER_PRIVATE_KEY, + process.env.DEI_DEPLOYER_PRIVATE_KEY, + process.env.DEUS_DEPLOYER_PRIVATE_KEY + ], + chainId: 42161, + gas: "auto", + gasPrice: 'auto', + gasMultiplier: 1.2 } }, solidity: { @@ -314,7 +327,8 @@ module.exports = { // apiKey: process.env.FANTOM_API_KEY, // FANTOM Mainnet // apiKey: process.env.POLYGON_API_KEY, // ETH Mainnet // apiKey: process.env.HECO_API_KEY, // HECO Mainnet - apiKey: process.env.BSCSCAN_API_KEY // BSC + // apiKey: process.env.BSCSCAN_API_KEY // BSC + apiKey: process.env.ARBISCAN_API_KEY, // Arbitrum }, contractSizer: { diff --git a/src/hardhat/scripts/deploy_arbitrum.js b/src/hardhat/scripts/deploy_arbitrum.js new file mode 100644 index 00000000..5fa6484c --- /dev/null +++ b/src/hardhat/scripts/deploy_arbitrum.js @@ -0,0 +1,395 @@ +const hre = require("hardhat"); +const deployDei = require('./deploy_contracts/deploy_dei.js'); +const deployDeus = require('./deploy_contracts/deploy_deus.js'); +const deployOracle = require('./deploy_contracts/deploy_oracle.js'); +const deployDeiPoolLibrary = require('./deploy_contracts/deploy_dei_pool_library.js'); +const deployUSDCPool = require('./deploy_contracts/deploy_usdc_pool.js'); +const deployReserveTracker = require('./deploy_contracts/deploy_reserve_tracker.js'); +const deployStaking = require('./deploy_contracts/deploy_staking.js'); + +const { verifyAll } = require('./helpers/deploy_contract.js'); +const skipNonce = require('./helpers/skip_nonce.js'); + +function assert(condition, message) { + if (!condition) { + throw message || "Assertion failed"; + } +} + +async function main() { + + + // --------------- + // Configurations + // --------------- + + const wrappedNativeTokenAddress = "0x82af49447d8a07e3bd95bd0d56f35241523fbab1"; // Wrapped eth + const usdcAddress = "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8"; // USDC decimal: 6 + const routerAddress = "0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506"; // Sushi Swap + + const creatorAddress = process.env.MAIN_DEPLOYER; + const USDCPoolCeiling = 20e6 * 1e6; + + const deiGenesisSupply = BigInt(10000e18); + const deusGenesisSupply = BigInt(100e18); + + // Pairing + const deiInDei_Deus = BigInt(0.001e18) + const deusInDei_Deus = BigInt(0.001e18) + const deiInDei_USDC = BigInt(0.001e18) + const USDCInDei_USDC = BigInt(0.001e6) + const NativeTokenInDeus_NativeToken = BigInt(0.001e18); + const deusInDeus_NativeToken = BigInt(0.001e18); + + // Staking + const daoShare = BigInt(10e16); //10% + const foundersShare = BigInt(1e16); //1% + const rewardPerBlock = "0"; //1000e-18 + const rewardPerBlockSetter = "0x35749cAAf96369b8927A28D1E5C9b2E8367D8aa9"; + + // USDC Pool Parameters + const newBonusRate = 0 + const newRedemptionDelay = 2 + const newMintFee = 5000 + const newRedeemFee = 5000 + const newBuyBackFee = 5000 + const newRecollatFee = 5000 + + // Oracle + const oracleServerAddress = "0xCaFf370042F1F9617c2a53d1E2c95C6f8ceEfa98"; + + const LPRemoverAddress = "0xE5227F141575DcE74721f4A9bE2D7D636F923044" + const AdminAddress = '0xE5227F141575DcE74721f4A9bE2D7D636F923044'; + const deployer = process.env.MAIN_DEPLOYER; + + // Role Of Pool + const MINT_PAUSER = '0xc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b'; + const REDEEM_PAUSER = '0xa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c3857'; + const BUYBACK_PAUSER = '0x103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf'; + const RECOLLATERALIZE_PAUSER = '0x8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f'; + + assert(deusInDeus_NativeToken + deusInDei_Deus <= deusGenesisSupply, + "There will not enough DEUS be minted for DEUS-NATIVE and DEI-DEUS"); + + assert(deiInDei_Deus + deiInDei_USDC <= deiGenesisSupply, + "There will not enough DEUS be minted for DEUS-NATIVE and DEI-DEUS"); + + assert(deployer.toLowerCase() != AdminAddress.toLowerCase(), + "DEPLOYER address and ADMIN ADDRESS is the same."); + + + const contracts = [ + { + address: '0xDE12c7959E1a72bbe8a5f7A1dc8f8EeF9Ab011B3', + constructorArguments: ["DEI", "DEI", process.env.MAIN_DEPLOYER], + verified: true + }, + { + address: '0xDE5ed76E7c05eC5e4572CfC88d1ACEA165109E44', + constructorArguments: ["DEUS", "DEUS", process.env.MAIN_DEPLOYER], + verified: true + }, + { + address: '0x3967e99B02d86ffc84fb69Fd9a7C136952906201', + constructorArguments: [process.env.MAIN_DEPLOYER, "1", process.env.MAIN_DEPLOYER], + verified: true + }, + { + address: '0xc63eAf6BC162531b153Dfc61F225E62d2edB4488', + constructorArguments: [], + verified: true + }, + { + address: '0xa0F395aD5df1Fceb319e162CCf1Ef6645dE8508f', + constructorArguments: [ + '0xDE12c7959E1a72bbe8a5f7A1dc8f8EeF9Ab011B3', + '0xDE5ed76E7c05eC5e4572CfC88d1ACEA165109E44', + '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', + process.env.MAIN_DEPLOYER, + process.env.MAIN_DEPLOYER, + 20e6 * 1e6, + '0xc63eAf6BC162531b153Dfc61F225E62d2edB4488' + ], + verified: true + }, + { + address: '0xCbcdFF7E0779F25d7a72C243ac8C25410c67Dbd2', + constructorArguments: [ + '0xDE12c7959E1a72bbe8a5f7A1dc8f8EeF9Ab011B3', + '0xDE5ed76E7c05eC5e4572CfC88d1ACEA165109E44' + ], + verified: true + }, + { + address: '0x4e5D8794f08F2792DC51016d0a4b9A205cAFc63A', + constructorArguments: [ + '0x9444937604f8e95db2A8895DD7E119CAF1238f01', + '0xDE5ed76E7c05eC5e4572CfC88d1ACEA165109E44', + rewardPerBlock, + daoShare, + foundersShare, + process.env.MAIN_DEPLOYER, + process.env.MAIN_DEPLOYER, + rewardPerBlockSetter + ], + verified: true + }, + { + address: '0xa78Ea447ce5AA4669A5f0cD8D27bF5883E1Bf20f', + constructorArguments: [ + '0xe3d676DF35e1d98a8504b9C01Ad302d5ebaDf0f9', + '0xDE5ed76E7c05eC5e4572CfC88d1ACEA165109E44', + rewardPerBlock, + daoShare, + foundersShare, + process.env.MAIN_DEPLOYER, + process.env.MAIN_DEPLOYER, + rewardPerBlockSetter + ], + verified: true + }, + ]; + + + for (const contract of contracts) { + try { + await hre.run('verify:verify', contract); + } catch (err) { + console.log("error on ", contract['address']); + } + } + + return; + + // ---------------- + // Start Deploying + // ---------------- + + // ERC20 + const erc20Instance = await hre.ethers.getContractFactory("ERC20"); + const usdc = await erc20Instance.attach(usdcAddress); + + assert(BigInt(await usdc.balanceOf(deployer)) >= USDCInDei_USDC, + "There is not enough USDC in deployer for DEI-USDC"); + + const dei = await deployDei(); + + const deus = await deployDeus(); + + const oracle = await deployOracle() + await new Promise((resolve) => setTimeout(resolve, 60000)); + + const deiPoolLibrary = await deployDeiPoolLibrary(); + + await new Promise((resolve) => setTimeout(resolve, 10000)); + const USDCPool = await deployUSDCPool({ + deiAddress: dei.address, + deusAddress: deus.address, + usdcAddress: usdcAddress, + USDCPoolCeiling: USDCPoolCeiling, + deiPoolLibraryAddress: deiPoolLibrary.address + }); + + await new Promise((resolve) => setTimeout(resolve, 10000)); + const reserveTracker = await deployReserveTracker({ deiAddress: dei.address, deusAddress: deus.address }); + + // Uni + const routerInstance = await hre.ethers.getContractFactory("UniswapV2Router02"); + const router = await routerInstance.attach(routerAddress); + + const factoryInstance = await hre.ethers.getContractFactory("UniswapV2Factory"); + const factory = await factoryInstance.attach(await router.factory()); + + // Creating Pairs + await dei.approve(routerAddress, deiInDei_Deus * BigInt(1000)); + await deus.approve(routerAddress, deusInDei_Deus * BigInt(1000)); + await new Promise((resolve) => setTimeout(resolve, 30000)); + + await router.addLiquidity(dei.address, deus.address, deiInDei_Deus, deusInDei_Deus, deiInDei_Deus, deusInDei_Deus, creatorAddress, (Date.now() + 10000)); + await usdc.approve(routerAddress, USDCInDei_USDC * BigInt(1000)) + await new Promise((resolve) => setTimeout(resolve, 30000)); + + await router.addLiquidity(dei.address, usdcAddress, deiInDei_USDC, USDCInDei_USDC, deiInDei_USDC, USDCInDei_USDC, creatorAddress, (Date.now() + 10000)); + await new Promise((resolve) => setTimeout(resolve, 60000)); + + const dei_deusAddress = await factory.getPair(dei.address, deus.address); + console.log("Dei-Deus:", dei_deusAddress); + + const dei_usdcAddress = await factory.getPair(dei.address, usdcAddress); + console.log("Dei-USDC:", dei_usdcAddress); + + // ---------------------------------- // + // | Skip 2 nonce in other networks | // + // ---------------------------------- // + // in main net we created pair in curve.finance + await skipNonce(deployer, 2); + + console.log("Deploying DEI-DEUS Staking"); + // Staking + const stakingDEI_DEUS = await deployStaking({ + stakeTokenAddress: dei_deusAddress, + rewardTokenAddress: deus.address, + rewardPerBlock, + daoShare, + foundersShare, + rewardPerBlockSetter + }); + + await new Promise((resolve) => setTimeout(resolve, 10000)); + console.log("Deploying DEI-USDC Staking"); + const stakingDEI_USDC = await deployStaking({ + stakeTokenAddress: dei_usdcAddress, + rewardTokenAddress: deus.address, + rewardPerBlock, + daoShare, + foundersShare, + rewardPerBlockSetter + }); + + // Parameters + await oracle.grantRole(oracle.ORACLE_ROLE(), oracleServerAddress); + + await dei.addPool(USDCPool.address); + await dei.setOracle(oracle.address); + await dei.setDEIStep(1000); + await dei.setReserveTracker(reserveTracker.address); + await dei.setRefreshCooldown(1800); + await dei.setDEUSAddress(deus.address); + await dei.setUseGrowthRatio(false); + await dei.setPriceBands(1040000, 960000); + + await deus.setDEIAddress(dei.address); + await deus.grantRole(deus.MINTER_ROLE(), stakingDEI_DEUS.address); + await deus.grantRole(deus.MINTER_ROLE(), stakingDEI_USDC.address); + // await deus.toggleVotes(); + + await reserveTracker.addDEUSPair(dei_deusAddress); + + await USDCPool.setPoolParameters(USDCPoolCeiling, newBonusRate, newRedemptionDelay, newMintFee, newRedeemFee, newBuyBackFee, newRecollatFee); + await USDCPool.toggleRecollateralize(); + await USDCPool.toggleBuyBack(); + + console.log("Setting Parameters is done"); + + // ERC20 + const deiDeus = await erc20Instance.attach(dei_deusAddress); + const deiUsdc = await erc20Instance.attach(dei_usdcAddress); + + await dei.grantRole(dei.DEFAULT_ADMIN_ROLE(), AdminAddress); + await deus.grantRole(deus.DEFAULT_ADMIN_ROLE(), AdminAddress); + await oracle.grantRole(oracle.DEFAULT_ADMIN_ROLE(), AdminAddress); + await USDCPool.grantRole(USDCPool.DEFAULT_ADMIN_ROLE(), AdminAddress); + await reserveTracker.grantRole(reserveTracker.DEFAULT_ADMIN_ROLE(), AdminAddress); + await stakingDEI_DEUS.grantRole(stakingDEI_DEUS.DEFAULT_ADMIN_ROLE(), AdminAddress); + await stakingDEI_USDC.grantRole(stakingDEI_USDC.DEFAULT_ADMIN_ROLE(), AdminAddress); + + await dei.transfer(AdminAddress, await dei.balanceOf(deployer)); + await deus.transfer(AdminAddress, BigInt(await deus.balanceOf(deployer)) - deusInDeus_NativeToken); + await usdc.transfer(AdminAddress, await usdc.balanceOf(deployer)); + await deiDeus.transfer(LPRemoverAddress, await deiDeus.balanceOf(deployer)); + await deiUsdc.transfer(LPRemoverAddress, await deiUsdc.balanceOf(deployer)); + + // ---------------------------------- // + // | Skip 4 nonce in other networks | // + // ---------------------------------- // + await skipNonce(deployer, 4); + + const wrappedNativeContract = await hre.ethers.getContractFactory("WETH"); + const wrappedNativeToken = await wrappedNativeContract.attach(wrappedNativeTokenAddress); // weth + await wrappedNativeToken.deposit({ + value: NativeTokenInDeus_NativeToken + }); + + // Creating Pairs + await wrappedNativeToken.approve(routerAddress, NativeTokenInDeus_NativeToken * BigInt(1000)); + await deus.approve(routerAddress, deusInDeus_NativeToken * BigInt(1000)); + await new Promise((resolve) => setTimeout(resolve, 30000)); + + await new Promise((resolve) => setTimeout(resolve, 10000)); + await router.addLiquidity( + deus.address, + wrappedNativeToken.address, + deusInDeus_NativeToken, + NativeTokenInDeus_NativeToken, + deusInDeus_NativeToken, + NativeTokenInDeus_NativeToken, + creatorAddress, + (Date.now() + 10000) + ); + await new Promise((resolve) => setTimeout(resolve, 60000)); + + const deus_NativeTokenAddress = await factory.getPair(deus.address, wrappedNativeToken.address); + console.log("Deus NativeToken:", deus_NativeTokenAddress) + + console.log("Deploying DEUS-NativeToken Staking"); + // Staking + const stakingDEUS_NativeToken = await deployStaking({ + stakeTokenAddress: deus_NativeTokenAddress, + rewardTokenAddress: deus.address, + rewardPerBlock, + daoShare, + foundersShare, + rewardPerBlockSetter + }) + + await deus.grantRole(deus.MINTER_ROLE(), stakingDEUS_NativeToken.address); + + await stakingDEUS_NativeToken.grantRole(stakingDEUS_NativeToken.DEFAULT_ADMIN_ROLE(), AdminAddress); + + const deus_NativeToken = await erc20Instance.attach(deus_NativeTokenAddress); + await deus_NativeToken.transfer(LPRemoverAddress, await deus_NativeToken.balanceOf(deployer)); + + // ---------------------------------- // + // | Skip 2 nonce in other networks | // + // ---------------------------------- // + await skipNonce(deployer, 2); + + await reserveTracker.addDEUSPair(deus_NativeTokenAddress); + + console.log("Start to renounce roles..."); + await dei.renounceRole(dei.DEFAULT_ADMIN_ROLE(), deployer) + await dei.renounceRole(dei.COLLATERAL_RATIO_PAUSER(), deployer) + await dei.renounceRole(dei.TRUSTY_ROLE(), deployer) + + await deus.renounceRole(deus.DEFAULT_ADMIN_ROLE(), deployer) + await deus.renounceRole(deus.TRUSTY_ROLE(), deployer) + + await oracle.renounceRole(oracle.DEFAULT_ADMIN_ROLE(), deployer) + await oracle.renounceRole(oracle.TRUSTY_ROLE(), deployer) + + await USDCPool.renounceRole(USDCPool.DEFAULT_ADMIN_ROLE(), deployer) + await USDCPool.renounceRole(MINT_PAUSER, deployer) + await USDCPool.renounceRole(REDEEM_PAUSER, deployer) + await USDCPool.renounceRole(RECOLLATERALIZE_PAUSER, deployer) + await USDCPool.renounceRole(BUYBACK_PAUSER, deployer) + await USDCPool.renounceRole(USDCPool.TRUSTY_ROLE(), deployer) + await USDCPool.renounceRole(USDCPool.PARAMETER_SETTER_ROLE(), deployer) + + await reserveTracker.renounceRole(reserveTracker.DEFAULT_ADMIN_ROLE(), deployer) + await reserveTracker.renounceRole(reserveTracker.TRUSTY_ROLE(), deployer) + + await stakingDEI_DEUS.renounceRole(stakingDEI_DEUS.DEFAULT_ADMIN_ROLE(), deployer) + await stakingDEI_DEUS.renounceRole(stakingDEI_DEUS.REWARD_PER_BLOCK_SETTER(), deployer) + await stakingDEI_DEUS.renounceRole(stakingDEI_DEUS.TRUSTY_ROLE(), deployer) + + await stakingDEI_USDC.renounceRole(stakingDEI_USDC.DEFAULT_ADMIN_ROLE(), deployer) + await stakingDEI_USDC.renounceRole(stakingDEI_USDC.REWARD_PER_BLOCK_SETTER(), deployer) + await stakingDEI_USDC.renounceRole(stakingDEI_USDC.TRUSTY_ROLE(), deployer) + + await stakingDEUS_NativeToken.renounceRole(stakingDEUS_NativeToken.DEFAULT_ADMIN_ROLE(), deployer) + await stakingDEUS_NativeToken.renounceRole(stakingDEUS_NativeToken.REWARD_PER_BLOCK_SETTER(), deployer) + await stakingDEUS_NativeToken.renounceRole(stakingDEUS_NativeToken.TRUSTY_ROLE(), deployer) + + console.log("Start to verify the contracts..."); + await verifyAll(); +} + + +// We recommend this pattern to be able to use async/await everywhere +// and properly handle errors. +main() + .then(() => process.exit(0)) + .catch(error => { + console.error(error); + process.exit(1); + }); From d482a287abdf7771b7d42e59e0ad86d08bfa8c67 Mon Sep 17 00:00:00 2001 From: mmd Date: Mon, 3 Jan 2022 18:33:11 +0330 Subject: [PATCH 08/12] update hardhat config and add modify_chain helper --- src/hardhat/hardhat.config.js | 22 ++++++++++- src/hardhat/scripts/helpers/modify_chain.js | 44 +++++++++++++++++++++ 2 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 src/hardhat/scripts/helpers/modify_chain.js diff --git a/src/hardhat/hardhat.config.js b/src/hardhat/hardhat.config.js index 3fc00d8e..d125f0e5 100644 --- a/src/hardhat/hardhat.config.js +++ b/src/hardhat/hardhat.config.js @@ -217,6 +217,24 @@ module.exports = { gas: "auto", gasPrice: 'auto', gasMultiplier: 1.2 + }, + localhostOptimism: { + url: 'http://127.0.0.1:8547/', + accounts: [ + process.env.MAIN_DEPLOYER_PRIVATE_KEY, + process.env.SECOND_DEPLOYER_PRIVATE_KEY, + process.env.DEI_DEPLOYER_PRIVATE_KEY, + process.env.DEUS_DEPLOYER_PRIVATE_KEY + ], + }, + localhostMainnet: { + url: 'http://127.0.0.1:8545/', + accounts: [ + process.env.MAIN_DEPLOYER_PRIVATE_KEY, + process.env.SECOND_DEPLOYER_PRIVATE_KEY, + process.env.DEI_DEPLOYER_PRIVATE_KEY, + process.env.DEUS_DEPLOYER_PRIVATE_KEY + ], } }, solidity: { @@ -323,12 +341,12 @@ module.exports = { timeout: 360000 }, etherscan: { - // apiKey: process.env.ETHERSCAN_API_KEY, // ETH Mainnet + apiKey: process.env.ETHERSCAN_API_KEY, // ETH Mainnet // apiKey: process.env.FANTOM_API_KEY, // FANTOM Mainnet // apiKey: process.env.POLYGON_API_KEY, // ETH Mainnet // apiKey: process.env.HECO_API_KEY, // HECO Mainnet // apiKey: process.env.BSCSCAN_API_KEY // BSC - apiKey: process.env.ARBISCAN_API_KEY, // Arbitrum + // apiKey: process.env.ARBISCAN_API_KEY, // Arbitrum }, contractSizer: { diff --git a/src/hardhat/scripts/helpers/modify_chain.js b/src/hardhat/scripts/helpers/modify_chain.js new file mode 100644 index 00000000..48fc9056 --- /dev/null +++ b/src/hardhat/scripts/helpers/modify_chain.js @@ -0,0 +1,44 @@ +const hre = require("hardhat"); + +async function setBalance(account, balance = "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff") { + await hre.network.provider.request({ + method: "hardhat_setBalance", + params: [ + account, + balance, + ] + }); +} + +async function impersonate(account) { + await hre.network.provider.request({ + method: "hardhat_impersonateAccount", + params: [account], + }); + + return await hre.ethers.getSigner(account) +} + +async function getBalanceOf(tokenAddress, address, removeDecimals = false) { + const ERC20 = await hre.ethers.getContractFactory("ERC20"); + const token = ERC20.attach(tokenAddress); + let balance = await token.balanceOf(address) + if (removeDecimals) { + balance /= 10 ** (await token.decimals()) + } + return balance +} + +async function transfer(tokenAddress, fromAddress, toAddress, amount) { + const signer = await impersonate(fromAddress) + const ERC20 = await hre.ethers.getContractFactory("ERC20", signer); + const token = ERC20.attach(tokenAddress); + await token.transfer(toAddress, amount) +} + +module.exports = { + impersonate, + transfer, + getBalanceOf, + setBalance, +} \ No newline at end of file From fba5b73952bae7b94fd010e54553e3ed7cd31157 Mon Sep 17 00:00:00 2001 From: mmd Date: Wed, 5 Jan 2022 16:37:15 +0330 Subject: [PATCH 09/12] add dei readme --- src/hardhat/contracts/DEI/readme.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 src/hardhat/contracts/DEI/readme.md diff --git a/src/hardhat/contracts/DEI/readme.md b/src/hardhat/contracts/DEI/readme.md new file mode 100644 index 00000000..7b2ed768 --- /dev/null +++ b/src/hardhat/contracts/DEI/readme.md @@ -0,0 +1,9 @@ +# Deployed contract addresses + +Chain | Address +-|- +Mainnet | 0xDE12c7959E1a72bbe8a5f7A1dc8f8EeF9Ab011B3 +Polygon | 0xDE12c7959E1a72bbe8a5f7A1dc8f8EeF9Ab011B3 +Fantom | 0xDE12c7959E1a72bbe8a5f7A1dc8f8EeF9Ab011B3 +Metis | 0xDE12c7959E1a72bbe8a5f7A1dc8f8EeF9Ab011B3 +Arbitrum | 0xDE12c7959E1a72bbe8a5f7A1dc8f8EeF9Ab011B3 \ No newline at end of file From c82674a9dcab552f217b6520285767abbb6aeb97 Mon Sep 17 00:00:00 2001 From: Kazem Date: Sat, 8 Jan 2022 17:38:34 +0330 Subject: [PATCH 10/12] add readme --- src/hardhat/contracts/DEI/Pools/DEIPoolV2.sol | 57 ------------------- src/hardhat/contracts/DEI/Pools/Pool_DAI.sol | 29 ---------- src/hardhat/contracts/DEI/Pools/Pool_HUSD.sol | 29 ---------- src/hardhat/contracts/DEI/Pools/readme.md | 9 +++ src/hardhat/contracts/DEUS/readme.md | 9 +++ src/hardhat/contracts/Staking/readme.md | 20 +++++++ 6 files changed, 38 insertions(+), 115 deletions(-) delete mode 100644 src/hardhat/contracts/DEI/Pools/DEIPoolV2.sol delete mode 100755 src/hardhat/contracts/DEI/Pools/Pool_DAI.sol delete mode 100755 src/hardhat/contracts/DEI/Pools/Pool_HUSD.sol create mode 100644 src/hardhat/contracts/DEI/Pools/readme.md create mode 100644 src/hardhat/contracts/DEUS/readme.md create mode 100644 src/hardhat/contracts/Staking/readme.md diff --git a/src/hardhat/contracts/DEI/Pools/DEIPoolV2.sol b/src/hardhat/contracts/DEI/Pools/DEIPoolV2.sol deleted file mode 100644 index afcf9727..00000000 --- a/src/hardhat/contracts/DEI/Pools/DEIPoolV2.sol +++ /dev/null @@ -1,57 +0,0 @@ -// TODO: change licence -// SPDX-License-Identifier: MIT -// Be name Khoda -// Bime Abolfazl - -pragma solidity ^0.8.9; -pragma abicoder v2; -// ================================================================================================================= -// _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| | -// _| _| _| _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| | -// _| _| _|_|_| _| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_|_|_| | -// _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| | -// _|_|_| _|_|_|_| _|_| _|_|_| _| _| _| _| _|_|_| _| _| _|_|_| _|_|_| | -// ================================================================================================================= -// ============================= DEIPoolV2 ============================ -// ==================================================================== -// DEUS Finance: https://github.com/DeusFinance - -// Primary Author(s) -// Vahid Gh: https://github.com/vahid-dev - -// Reviewer(s) / Contributor(s) - - -contract DEIPoolV2 { - - /* ========== STATE VARIABLES ========== */ - - - - /* ========== MODIFIERS ========== */ - - - - /* ========== CONSTRUCTOR ========== */ - - - - /* ========== PUBLIC FUNCTIONS ========== */ - - - - /* ========== VIEWS ========== */ - - - - /* ========== RESTRICTED FUNCTIONS ========== */ - - - - /* ========== EVENTS ========== */ - - - -} - -//Dar panah khoda diff --git a/src/hardhat/contracts/DEI/Pools/Pool_DAI.sol b/src/hardhat/contracts/DEI/Pools/Pool_DAI.sol deleted file mode 100755 index da9d65f5..00000000 --- a/src/hardhat/contracts/DEI/Pools/Pool_DAI.sol +++ /dev/null @@ -1,29 +0,0 @@ -// Be name Khoda -// Bime Abolfazl - -// SPDX-License-Identifier: GPL-2.0-or-later -pragma solidity >=0.6.11; - -import "./DEIPool.sol"; - -contract Pool_DAI is DEIPool { - address public DAI_address; - constructor( - address _dei_contract_address, - address _deus_contract_address, - address _collateral_address, - address _trusty_address, - address _admin_address, - uint256 _pool_ceiling, - address _library - ) - DEIPool(_dei_contract_address, _deus_contract_address, _collateral_address, _trusty_address, _admin_address, _pool_ceiling, _library) - public { - require(_collateral_address != address(0), "Zero address detected"); - - _setupRole(DEFAULT_ADMIN_ROLE, _msgSender()); - DAI_address = _collateral_address; - } -} - -//Dar panah khoda \ No newline at end of file diff --git a/src/hardhat/contracts/DEI/Pools/Pool_HUSD.sol b/src/hardhat/contracts/DEI/Pools/Pool_HUSD.sol deleted file mode 100755 index 1146b859..00000000 --- a/src/hardhat/contracts/DEI/Pools/Pool_HUSD.sol +++ /dev/null @@ -1,29 +0,0 @@ -// Be name Khoda -// Bime Abolfazl - -// SPDX-License-Identifier: GPL-2.0-or-later -pragma solidity >=0.6.11; - -import "./DEIPool.sol"; - -contract Pool_HUSD is DEIPool { - address public HUSD_address; - constructor( - address _dei_contract_address, - address _deus_contract_address, - address _collateral_address, - address _trusty_address, - address _admin_address, - uint256 _pool_ceiling, - address _library - ) - DEIPool(_dei_contract_address, _deus_contract_address, _collateral_address, _trusty_address, _admin_address, _pool_ceiling, _library) - public { - require(_collateral_address != address(0), "Zero address detected"); - - _setupRole(DEFAULT_ADMIN_ROLE, _msgSender()); - HUSD_address = _collateral_address; - } -} - -//Dar panah khoda \ No newline at end of file diff --git a/src/hardhat/contracts/DEI/Pools/readme.md b/src/hardhat/contracts/DEI/Pools/readme.md new file mode 100644 index 00000000..204662e9 --- /dev/null +++ b/src/hardhat/contracts/DEI/Pools/readme.md @@ -0,0 +1,9 @@ +# Pool Usdc contract addresses + +Chain | Address +-|- +Mainnet | 0xa0F395aD5df1Fceb319e162CCf1Ef6645dE8508f +Polygon | 0xa0F395aD5df1Fceb319e162CCf1Ef6645dE8508f +Fantom | 0xa0F395aD5df1Fceb319e162CCf1Ef6645dE8508f +Metis | 0xa0F395aD5df1Fceb319e162CCf1Ef6645dE8508f +Arbitrum | 0xa0F395aD5df1Fceb319e162CCf1Ef6645dE8508f \ No newline at end of file diff --git a/src/hardhat/contracts/DEUS/readme.md b/src/hardhat/contracts/DEUS/readme.md new file mode 100644 index 00000000..2d4be42a --- /dev/null +++ b/src/hardhat/contracts/DEUS/readme.md @@ -0,0 +1,9 @@ +# Deployed contract addresses + +Chain | Address +-|- +Mainnet | 0xDE5ed76E7c05eC5e4572CfC88d1ACEA165109E44 +Polygon | 0xDE5ed76E7c05eC5e4572CfC88d1ACEA165109E44 +Fantom | 0xDE5ed76E7c05eC5e4572CfC88d1ACEA165109E44 +Metis | 0xDE5ed76E7c05eC5e4572CfC88d1ACEA165109E44 +Arbitrum | 0xDE5ed76E7c05eC5e4572CfC88d1ACEA165109E44 \ No newline at end of file diff --git a/src/hardhat/contracts/Staking/readme.md b/src/hardhat/contracts/Staking/readme.md new file mode 100644 index 00000000..33e0ee51 --- /dev/null +++ b/src/hardhat/contracts/Staking/readme.md @@ -0,0 +1,20 @@ +# Staking Dei-Deus contract addresses + +Chain | Address +-|- +Mainnet | 0x4e5D8794f08F2792DC51016d0a4b9A205cAFc63A +Polygon | 0x4e5D8794f08F2792DC51016d0a4b9A205cAFc63A + +# Staking Dei-Usdc contract addresses + +Chain | Address +-|- +Mainnet | 0xa78Ea447ce5AA4669A5f0cD8D27bF5883E1Bf20f +Polygon | 0xa78Ea447ce5AA4669A5f0cD8D27bF5883E1Bf20f + +# Staking Deus-Native contract addresses + +Chain | Address +-|- +Mainnet | 0x4C48f1421F62d923d9130834135FB4A58E2F4298 +Polygon | 0x4C48f1421F62d923d9130834135FB4A58E2F4298 \ No newline at end of file From c8b3fd5c2d0d99eea7400b1d7056f24769aa82d9 Mon Sep 17 00:00:00 2001 From: Kazem Date: Sat, 8 Jan 2022 17:42:42 +0330 Subject: [PATCH 11/12] add readme --- src/hardhat/contracts/Staking/readme.md | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/hardhat/contracts/Staking/readme.md b/src/hardhat/contracts/Staking/readme.md index 33e0ee51..7fc3cc66 100644 --- a/src/hardhat/contracts/Staking/readme.md +++ b/src/hardhat/contracts/Staking/readme.md @@ -17,4 +17,25 @@ Polygon | 0xa78Ea447ce5AA4669A5f0cD8D27bF5883E1Bf20f Chain | Address -|- Mainnet | 0x4C48f1421F62d923d9130834135FB4A58E2F4298 -Polygon | 0x4C48f1421F62d923d9130834135FB4A58E2F4298 \ No newline at end of file +Polygon | 0x4C48f1421F62d923d9130834135FB4A58E2F4298 + +# Dei-Deus Lp addresses + +Chain | Address +-|- +Mainnet | 0xd6dd359B8C9d18CCB3FE8627060F88D1776d2993 +Polygon | 0x2Bc3ce6D7cfc0B476E60aDaA1B27DE76DB95EE4e + +# Dei-Usdc Lp addresses + +Chain | Address +-|- +Mainnet | 0x6870F9b4DD5d34C7FC53D0d85D9dBd1aAB339BF7 +Polygon | 0xD4F9134ba896FB6901CD6A5EA4EEB683eb1c15c6 + +# Deus-Native Lp addresses + +Chain | Address +-|- +Mainnet | 0x367E2D443988E4b222FBFdAFDb35eeB7ddA9FBB7 +Polygon | 0x6152943b506211ce1FA872702a1b0bc594Cfa2d2 \ No newline at end of file From 1e90f09994b19c01b2f6e6a5407738ddaac64373 Mon Sep 17 00:00:00 2001 From: V-Coder Date: Sun, 9 Jan 2022 14:10:48 +0330 Subject: [PATCH 12/12] cleanup directories --- .../IERC20Permit.dbg.json | 4 + .../draft-IERC20Permit.sol/IERC20Permit.json | 86 + .../utils/Counters.sol/Counters.dbg.json | 4 + .../utils/Counters.sol/Counters.json | 10 + .../cryptography/ECDSA.sol/ECDSA.dbg.json | 4 + .../utils/cryptography/ECDSA.sol/ECDSA.json | 10 + .../draft-EIP712.sol/EIP712.dbg.json | 4 + .../cryptography/draft-EIP712.sol/EIP712.json | 10 + .../182b41f591ef2465d6c9bbd4fc5b26a9.json | 54389 +++ .../194db023d77d2de1e0a5b1b8667e7a16.json | 1896 + .../36a19eee347e9afe5dc7fbfa349bb293.json | 4491 + .../3bb7c9fe44c5918ab8079a758e4f3c18.json | 587 + .../4307b0d46cd92cef19f6019223420ca5.json | 2567 + .../4379f7a7e90ec4224805b9ed7de86d97.json | 53227 ++ .../45f74077c6313ac919099b51529f6569.json | 845 + .../4b49a453f903a20ab018cc07dc8ac3ad.json | 150 + .../51a26ee47a81853244b8cbfafc116d4f.json | 3308 + .../58bd5ffd63228c61538fb821e8a2de3d.json | 900 + .../808708eefcf7951d3fef300aa4bbb87e.json | 2404 + .../86b4065249f5a55fd00cca9c75aad057.json | 1320 + .../97e70caa3e02ef80482beb1782c00554.json | 14123 + .../a5c2336dcd813008d0af5fd231e1eb45.json | 835 + .../bb8d59f3a7a2a485b603276e00bcd4a5.json | 547 + .../c711a20ba259c6a2d94e00a1efe2a0cb.json | 2241 + .../c887ad884643e1c706a3fa87fe50383e.json | 1549 + .../d1ece953ed017d623e632c196097c6c1.json | 995 + .../e442c70280793b4492ada7e044c0460f.json | 380394 +++++++++++++++ .../f9073a711ac5d4ac2bdf81541504b7c4.json | 6903 + .../fa9e1c7854482b87fad8afb999ef0119.json | 4209 + .../Common/Context.sol/Context.dbg.json | 4 + .../contracts/Common/Context.sol/Context.json | 10 + .../Common/Ownable.sol/Ownable.dbg.json | 4 + .../contracts/Common/Ownable.sol/Ownable.json | 63 + .../DEI/DEI.sol/DEIStablecoin.dbg.json | 4 + .../contracts/DEI/DEI.sol/DEIStablecoin.json | 1485 + .../DEI/IDEI.sol/IDEIStablecoin.dbg.json | 4 + .../DEI/IDEI.sol/IDEIStablecoin.json | 422 + .../DEI/Pools/DEIPool.sol/DEIPool.dbg.json | 4 + .../DEI/Pools/DEIPool.sol/DEIPool.json | 1140 + .../DEIPoolLibrary.dbg.json | 4 + .../DEIPoolLibrary.sol/DEIPoolLibrary.json | 248 + .../Pools/DEIPoolV2.sol/DEIPoolV2.dbg.json | 4 + .../DEI/Pools/DEIPoolV2.sol/DEIPoolV2.json | 10 + .../DEI/Pools/IDEIPool.sol/IDEIPool.dbg.json | 4 + .../DEI/Pools/IDEIPool.sol/IDEIPool.json | 391 + .../DEI/Pools/Pool_DAI.sol/Pool_DAI.dbg.json | 4 + .../DEI/Pools/Pool_DAI.sol/Pool_DAI.json | 1153 + .../Pools/Pool_HUSD.sol/Pool_HUSD.dbg.json | 4 + .../DEI/Pools/Pool_HUSD.sol/Pool_HUSD.json | 1153 + .../Pools/Pool_USDC.sol/Pool_USDC.dbg.json | 4 + .../DEI/Pools/Pool_USDC.sol/Pool_USDC.json | 1153 + .../DEUS/DEUS.sol/DEUSToken.dbg.json | 4 + .../contracts/DEUS/DEUS.sol/DEUSToken.json | 855 + .../DEUS/IDEUS.sol/IDEUSToken.dbg.json | 4 + .../contracts/DEUS/IDEUS.sol/IDEUSToken.json | 122 + .../ERC165/ERC165.sol/ERC165.dbg.json | 4 + .../contracts/ERC165/ERC165.sol/ERC165.json | 30 + .../ERC165/IERC165.sol/IERC165.dbg.json | 4 + .../contracts/ERC165/IERC165.sol/IERC165.json | 30 + .../contracts/ERC20/ERC20.sol/ERC20.dbg.json | 4 + .../contracts/ERC20/ERC20.sol/ERC20.json | 328 + .../ERC20Custom.sol/ERC20Custom.dbg.json | 4 + .../ERC20/ERC20Custom.sol/ERC20Custom.json | 273 + .../ERC20/IERC20.sol/IERC20.dbg.json | 4 + .../contracts/ERC20/IERC20.sol/IERC20.json | 194 + .../IERC20_Detailed.dbg.json | 4 + .../IERC20_Detailed.sol/IERC20_Detailed.json | 233 + .../contracts/ERC20/IWETH.sol/IWETH.dbg.json | 4 + .../contracts/ERC20/IWETH.sol/IWETH.json | 84 + .../ERC20/SafeERC20.sol/SafeERC20.dbg.json | 4 + .../ERC20/SafeERC20.sol/SafeERC20.json | 10 + .../contracts/ERC20/WETH.sol/WETH.dbg.json | 4 + artifacts/contracts/ERC20/WETH.sol/WETH.json | 310 + .../ERC20Permit.dbg.json | 4 + .../draft-ERC20Permit.sol/ERC20Permit.json | 348 + .../ERC721/ERC721.sol/ERC721.dbg.json | 4 + .../contracts/ERC721/ERC721.sol/ERC721.json | 426 + .../ERC721/IERC721.sol/IERC721.dbg.json | 4 + .../contracts/ERC721/IERC721.sol/IERC721.json | 296 + .../IERC721Enumerable.dbg.json | 4 + .../IERC721Enumerable.json | 352 + .../IERC721Metadata.dbg.json | 4 + .../IERC721Metadata.sol/IERC721Metadata.json | 341 + .../IERC721Receiver.dbg.json | 4 + .../IERC721Receiver.sol/IERC721Receiver.json | 45 + .../Common/Context.sol/Context.dbg.json | 4 + .../V8_0_0/Common/Context.sol/Context.json | 10 + .../AccessControl.sol/AccessControl.dbg.json | 4 + .../AccessControl.sol/AccessControl.json | 239 + .../Math/SafeMath.sol/SafeMath.dbg.json | 4 + .../V8_0_0/Math/SafeMath.sol/SafeMath.json | 10 + .../V8_0_0/Utils/Address.sol/Address.dbg.json | 4 + .../V8_0_0/Utils/Address.sol/Address.json | 10 + .../EnumerableMap.sol/EnumerableMap.dbg.json | 4 + .../EnumerableMap.sol/EnumerableMap.json | 10 + .../EnumerableSet.sol/EnumerableSet.dbg.json | 4 + .../EnumerableSet.sol/EnumerableSet.json | 10 + .../V8_0_0/Utils/Strings.sol/Strings.dbg.json | 4 + .../V8_0_0/Utils/Strings.sol/Strings.json | 10 + .../AccessControl.sol/AccessControl.dbg.json | 4 + .../AccessControl.sol/AccessControl.json | 239 + .../Math/Babylonian.sol/Babylonian.dbg.json | 4 + .../Math/Babylonian.sol/Babylonian.json | 10 + .../Math/FixedPoint.sol/FixedPoint.dbg.json | 4 + .../Math/FixedPoint.sol/FixedPoint.json | 10 + .../MagnitudesAndPowers.dbg.json | 4 + .../MagnitudesAndPowers.json | 30 + .../contracts/Math/Math.sol/Math.dbg.json | 4 + artifacts/contracts/Math/Math.sol/Math.json | 10 + .../SafeDecimalMath.dbg.json | 4 + .../SafeDecimalMath.sol/SafeDecimalMath.json | 89 + .../Math/SafeMath.sol/SafeMath.dbg.json | 4 + .../contracts/Math/SafeMath.sol/SafeMath.json | 10 + .../SignedSafeMath.dbg.json | 4 + .../SignedSafeMath.sol/SignedSafeMath.json | 10 + .../Math/UQ112x112.sol/UQ112x112.dbg.json | 4 + .../Math/UQ112x112.sol/UQ112x112.json | 10 + .../Oracle/Oracle.sol/Oracle.dbg.json | 4 + .../contracts/Oracle/Oracle.sol/Oracle.json | 336 + .../ReserveTracker.dbg.json | 4 + .../ReserveTracker.sol/ReserveTracker.json | 345 + .../Staking/Owned.sol/Owned.dbg.json | 4 + .../contracts/Staking/Owned.sol/Owned.json | 100 + .../Staking/Staking.sol/DEUSToken.dbg.json | 4 + .../Staking/Staking.sol/DEUSToken.json | 29 + .../Staking/Staking.sol/IERC20.dbg.json | 4 + .../contracts/Staking/Staking.sol/IERC20.json | 83 + .../Staking/Staking.sol/Staking.dbg.json | 4 + .../Staking/Staking.sol/Staking.json | 875 + .../IUniswapV2Callee.dbg.json | 4 + .../IUniswapV2Callee.json | 39 + .../IUniswapV2ERC20.dbg.json | 4 + .../IUniswapV2ERC20.sol/IUniswapV2ERC20.json | 321 + .../IUniswapV2Factory.dbg.json | 4 + .../IUniswapV2Factory.json | 174 + .../IUniswapV2Pair.dbg.json | 4 + .../IUniswapV2Pair.sol/IUniswapV2Pair.json | 662 + .../IUniswapV2Router01.dbg.json | 4 + .../IUniswapV2Router01.json | 760 + .../IUniswapV2Router02.dbg.json | 4 + .../IUniswapV2Router02.json | 962 + .../TransferHelper.dbg.json | 4 + .../TransferHelper.sol/TransferHelper.json | 10 + .../UniswapV2ERC20.dbg.json | 4 + .../UniswapV2ERC20.sol/UniswapV2ERC20.json | 326 + .../UniswapV2Factory.dbg.json | 4 + .../UniswapV2Factory.json | 185 + .../UniswapV2Library.dbg.json | 4 + .../UniswapV2Library.json | 10 + .../UniswapV2Pair.sol/UniswapV2Pair.dbg.json | 4 + .../UniswapV2Pair.sol/UniswapV2Pair.json | 667 + .../UniswapV2Router02.sol/IERC20.dbg.json | 4 + .../Uniswap/UniswapV2Router02.sol/IERC20.json | 233 + .../IUniswapV2Factory.dbg.json | 4 + .../IUniswapV2Factory.json | 174 + .../IUniswapV2Pair.dbg.json | 4 + .../UniswapV2Router02.sol/IUniswapV2Pair.json | 662 + .../IUniswapV2Router01.dbg.json | 4 + .../IUniswapV2Router01.json | 760 + .../IUniswapV2Router02.dbg.json | 4 + .../IUniswapV2Router02.json | 962 + .../UniswapV2Router02.sol/IWETH.dbg.json | 4 + .../Uniswap/UniswapV2Router02.sol/IWETH.json | 55 + .../UniswapV2Router02.sol/SafeMath.dbg.json | 4 + .../UniswapV2Router02.sol/SafeMath.json | 10 + .../TransferHelper.dbg.json | 4 + .../UniswapV2Router02.sol/TransferHelper.json | 10 + .../UniswapV2Library.dbg.json | 4 + .../UniswapV2Library.json | 10 + .../UniswapV2Router02.dbg.json | 4 + .../UniswapV2Router02.json | 982 + .../Utils/Address.sol/Address.dbg.json | 4 + .../contracts/Utils/Address.sol/Address.json | 10 + .../Utils/BlockMiner.sol/BlockMiner.dbg.json | 4 + .../Utils/BlockMiner.sol/BlockMiner.json | 49 + .../BundleUtils.sol/BundleUtils.dbg.json | 4 + .../Utils/BundleUtils.sol/BundleUtils.json | 54 + .../EnumerableSet.sol/EnumerableSet.dbg.json | 4 + .../EnumerableSet.sol/EnumerableSet.json | 10 + .../MigrationHelper.dbg.json | 4 + .../MigrationHelper.sol/MigrationHelper.json | 61 + .../Utils/Migrations.sol/Migrations.dbg.json | 4 + .../Utils/Migrations.sol/Migrations.json | 55 + .../ReentrancyGuard.dbg.json | 4 + .../ReentrancyGuard.sol/ReentrancyGuard.json | 10 + .../StorageSlot.sol/StorageSlot.dbg.json | 4 + .../Utils/StorageSlot.sol/StorageSlot.json | 10 + .../StringHelpers.sol/StringHelpers.dbg.json | 4 + .../StringHelpers.sol/StringHelpers.json | 10 + cache/solidity-files-cache.json | 3194 + cache/validations.json | 3528 + .../Common/Context.sol | 0 .../Common/Ownable.sol | 0 .../contracts => contracts}/DEI/DEI.sol | 0 .../contracts => contracts}/DEI/IDEI.sol | 0 .../DEI/Pools/DEIPool.sol | 0 .../DEI/Pools/DEIPoolLibrary.sol | 0 .../DEI/Pools/IDEIPool.sol | 0 .../DEI/Pools/Pool_USDC.sol | 0 .../DEI/Pools/readme.md | 0 .../contracts => contracts}/DEI/readme.md | 0 .../contracts => contracts}/DEUS/DEUS.sol | 0 .../contracts => contracts}/DEUS/IDEUS.sol | 0 .../contracts => contracts}/DEUS/readme.md | 0 .../contracts => contracts}/ERC165/ERC165.sol | 0 .../ERC165/IERC165.sol | 0 .../contracts => contracts}/ERC20/ERC20.sol | 0 .../ERC20/ERC20Custom.sol | 0 .../contracts => contracts}/ERC20/IERC20.sol | 0 .../ERC20/IERC20_Detailed.sol | 0 .../contracts => contracts}/ERC20/IWETH.sol | 0 .../ERC20/SafeERC20.sol | 0 .../contracts => contracts}/ERC20/WETH.sol | 0 .../ERC20/draft-ERC20Permit.sol | 0 .../contracts => contracts}/ERC721/ERC721.sol | 0 .../ERC721/IERC721.sol | 0 .../ERC721/IERC721Enumerable.sol | 0 .../ERC721/IERC721Metadata.sol | 0 .../ERC721/IERC721Receiver.sol | 0 .../ERC721/V8_0_0/Common/Context.sol | 0 .../V8_0_0/Governance/AccessControl.sol | 0 .../ERC721/V8_0_0/Math/SafeMath.sol | 0 .../ERC721/V8_0_0/Utils/Address.sol | 0 .../ERC721/V8_0_0/Utils/EnumerableMap.sol | 0 .../ERC721/V8_0_0/Utils/EnumerableSet.sol | 0 .../ERC721/V8_0_0/Utils/Strings.sol | 0 .../Governance/AccessControl.sol | 0 .../Math/Babylonian.sol | 0 .../Math/FixedPoint.sol | 0 .../Math/MagnitudesAndPowers.sol | 0 .../contracts => contracts}/Math/Math.sol | 0 .../Math/SafeDecimalMath.sol | 0 .../contracts => contracts}/Math/SafeMath.sol | 0 .../Math/SignedSafeMath.sol | 0 .../Math/UQ112x112.sol | 0 .../contracts => contracts}/Oracle/Oracle.sol | 0 .../Oracle/ReserveTracker.sol | 0 .../contracts => contracts}/Staking/Owned.sol | 0 .../Staking/Staking.sol | 0 .../contracts => contracts}/Staking/readme.md | 0 .../Uniswap/Interfaces/IUniswapV2Callee.sol | 0 .../Uniswap/Interfaces/IUniswapV2ERC20.sol | 0 .../Uniswap/Interfaces/IUniswapV2Factory.sol | 0 .../Uniswap/Interfaces/IUniswapV2Pair.sol | 0 .../Uniswap/Interfaces/IUniswapV2Router01.sol | 0 .../Uniswap/Interfaces/IUniswapV2Router02.sol | 0 .../Uniswap/TransferHelper.sol | 0 .../Uniswap/UniswapV2ERC20.sol | 0 .../Uniswap/UniswapV2Factory.sol | 0 .../Uniswap/UniswapV2Library.sol | 0 .../Uniswap/UniswapV2Pair.sol | 0 .../Uniswap/UniswapV2Router02.sol | 0 .../contracts => contracts}/Utils/Address.sol | 0 .../Utils/BlockMiner.sol | 0 .../Utils/BundleUtils.sol | 0 .../Utils/EnumerableSet.sol | 0 .../Utils/MigrationHelper.sol | 0 .../Utils/Migrations.sol | 0 .../Utils/ReentrancyGuard.sol | 0 .../Utils/StorageSlot.sol | 0 .../Utils/StringHelpers.sol | 0 .../hardhat.config.js => hardhat.config.js | 0 package.json | 101 - .../scripts => scripts}/deploy_arbitrum.js | 0 .../hardhat/scripts => scripts}/deploy_bsc.js | 0 .../scripts => scripts}/deploy_bsctest.js | 0 .../deploy_contracts/deploy_dei.js | 0 .../deploy_dei_pool_library.js | 0 .../deploy_contracts/deploy_deus.js | 0 .../deploy_contracts/deploy_oracle.js | 0 .../deploy_reserve_tracker.js | 0 .../deploy_contracts/deploy_staking.js | 0 .../deploy_contracts/deploy_usdc_pool.js | 0 .../scripts => scripts}/deploy_fantom.js | 0 .../scripts => scripts}/deploy_mainnet.js | 0 .../scripts => scripts}/deploy_metis.js | 0 .../scripts => scripts}/deploy_rinkeby.js | 0 .../helpers/deploy_contract.js | 0 .../helpers/modify_chain.js | 0 .../scripts => scripts}/helpers/skip_nonce.js | 0 src/misc/utilities.ts | 84 - src/types/constants.ts | 944 - truffle-config.js | 71 - 283 files changed, 567287 insertions(+), 1200 deletions(-) create mode 100644 artifacts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json create mode 100644 artifacts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.json create mode 100644 artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.dbg.json create mode 100644 artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.json create mode 100644 artifacts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.dbg.json create mode 100644 artifacts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.json create mode 100644 artifacts/@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol/EIP712.dbg.json create mode 100644 artifacts/@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol/EIP712.json create mode 100644 artifacts/build-info/182b41f591ef2465d6c9bbd4fc5b26a9.json create mode 100644 artifacts/build-info/194db023d77d2de1e0a5b1b8667e7a16.json create mode 100644 artifacts/build-info/36a19eee347e9afe5dc7fbfa349bb293.json create mode 100644 artifacts/build-info/3bb7c9fe44c5918ab8079a758e4f3c18.json create mode 100644 artifacts/build-info/4307b0d46cd92cef19f6019223420ca5.json create mode 100644 artifacts/build-info/4379f7a7e90ec4224805b9ed7de86d97.json create mode 100644 artifacts/build-info/45f74077c6313ac919099b51529f6569.json create mode 100644 artifacts/build-info/4b49a453f903a20ab018cc07dc8ac3ad.json create mode 100644 artifacts/build-info/51a26ee47a81853244b8cbfafc116d4f.json create mode 100644 artifacts/build-info/58bd5ffd63228c61538fb821e8a2de3d.json create mode 100644 artifacts/build-info/808708eefcf7951d3fef300aa4bbb87e.json create mode 100644 artifacts/build-info/86b4065249f5a55fd00cca9c75aad057.json create mode 100644 artifacts/build-info/97e70caa3e02ef80482beb1782c00554.json create mode 100644 artifacts/build-info/a5c2336dcd813008d0af5fd231e1eb45.json create mode 100644 artifacts/build-info/bb8d59f3a7a2a485b603276e00bcd4a5.json create mode 100644 artifacts/build-info/c711a20ba259c6a2d94e00a1efe2a0cb.json create mode 100644 artifacts/build-info/c887ad884643e1c706a3fa87fe50383e.json create mode 100644 artifacts/build-info/d1ece953ed017d623e632c196097c6c1.json create mode 100644 artifacts/build-info/e442c70280793b4492ada7e044c0460f.json create mode 100644 artifacts/build-info/f9073a711ac5d4ac2bdf81541504b7c4.json create mode 100644 artifacts/build-info/fa9e1c7854482b87fad8afb999ef0119.json create mode 100644 artifacts/contracts/Common/Context.sol/Context.dbg.json create mode 100644 artifacts/contracts/Common/Context.sol/Context.json create mode 100644 artifacts/contracts/Common/Ownable.sol/Ownable.dbg.json create mode 100644 artifacts/contracts/Common/Ownable.sol/Ownable.json create mode 100644 artifacts/contracts/DEI/DEI.sol/DEIStablecoin.dbg.json create mode 100644 artifacts/contracts/DEI/DEI.sol/DEIStablecoin.json create mode 100644 artifacts/contracts/DEI/IDEI.sol/IDEIStablecoin.dbg.json create mode 100644 artifacts/contracts/DEI/IDEI.sol/IDEIStablecoin.json create mode 100644 artifacts/contracts/DEI/Pools/DEIPool.sol/DEIPool.dbg.json create mode 100644 artifacts/contracts/DEI/Pools/DEIPool.sol/DEIPool.json create mode 100644 artifacts/contracts/DEI/Pools/DEIPoolLibrary.sol/DEIPoolLibrary.dbg.json create mode 100644 artifacts/contracts/DEI/Pools/DEIPoolLibrary.sol/DEIPoolLibrary.json create mode 100644 artifacts/contracts/DEI/Pools/DEIPoolV2.sol/DEIPoolV2.dbg.json create mode 100644 artifacts/contracts/DEI/Pools/DEIPoolV2.sol/DEIPoolV2.json create mode 100644 artifacts/contracts/DEI/Pools/IDEIPool.sol/IDEIPool.dbg.json create mode 100644 artifacts/contracts/DEI/Pools/IDEIPool.sol/IDEIPool.json create mode 100644 artifacts/contracts/DEI/Pools/Pool_DAI.sol/Pool_DAI.dbg.json create mode 100644 artifacts/contracts/DEI/Pools/Pool_DAI.sol/Pool_DAI.json create mode 100644 artifacts/contracts/DEI/Pools/Pool_HUSD.sol/Pool_HUSD.dbg.json create mode 100644 artifacts/contracts/DEI/Pools/Pool_HUSD.sol/Pool_HUSD.json create mode 100644 artifacts/contracts/DEI/Pools/Pool_USDC.sol/Pool_USDC.dbg.json create mode 100644 artifacts/contracts/DEI/Pools/Pool_USDC.sol/Pool_USDC.json create mode 100644 artifacts/contracts/DEUS/DEUS.sol/DEUSToken.dbg.json create mode 100644 artifacts/contracts/DEUS/DEUS.sol/DEUSToken.json create mode 100644 artifacts/contracts/DEUS/IDEUS.sol/IDEUSToken.dbg.json create mode 100644 artifacts/contracts/DEUS/IDEUS.sol/IDEUSToken.json create mode 100644 artifacts/contracts/ERC165/ERC165.sol/ERC165.dbg.json create mode 100644 artifacts/contracts/ERC165/ERC165.sol/ERC165.json create mode 100644 artifacts/contracts/ERC165/IERC165.sol/IERC165.dbg.json create mode 100644 artifacts/contracts/ERC165/IERC165.sol/IERC165.json create mode 100644 artifacts/contracts/ERC20/ERC20.sol/ERC20.dbg.json create mode 100644 artifacts/contracts/ERC20/ERC20.sol/ERC20.json create mode 100644 artifacts/contracts/ERC20/ERC20Custom.sol/ERC20Custom.dbg.json create mode 100644 artifacts/contracts/ERC20/ERC20Custom.sol/ERC20Custom.json create mode 100644 artifacts/contracts/ERC20/IERC20.sol/IERC20.dbg.json create mode 100644 artifacts/contracts/ERC20/IERC20.sol/IERC20.json create mode 100644 artifacts/contracts/ERC20/IERC20_Detailed.sol/IERC20_Detailed.dbg.json create mode 100644 artifacts/contracts/ERC20/IERC20_Detailed.sol/IERC20_Detailed.json create mode 100644 artifacts/contracts/ERC20/IWETH.sol/IWETH.dbg.json create mode 100644 artifacts/contracts/ERC20/IWETH.sol/IWETH.json create mode 100644 artifacts/contracts/ERC20/SafeERC20.sol/SafeERC20.dbg.json create mode 100644 artifacts/contracts/ERC20/SafeERC20.sol/SafeERC20.json create mode 100644 artifacts/contracts/ERC20/WETH.sol/WETH.dbg.json create mode 100644 artifacts/contracts/ERC20/WETH.sol/WETH.json create mode 100644 artifacts/contracts/ERC20/draft-ERC20Permit.sol/ERC20Permit.dbg.json create mode 100644 artifacts/contracts/ERC20/draft-ERC20Permit.sol/ERC20Permit.json create mode 100644 artifacts/contracts/ERC721/ERC721.sol/ERC721.dbg.json create mode 100644 artifacts/contracts/ERC721/ERC721.sol/ERC721.json create mode 100644 artifacts/contracts/ERC721/IERC721.sol/IERC721.dbg.json create mode 100644 artifacts/contracts/ERC721/IERC721.sol/IERC721.json create mode 100644 artifacts/contracts/ERC721/IERC721Enumerable.sol/IERC721Enumerable.dbg.json create mode 100644 artifacts/contracts/ERC721/IERC721Enumerable.sol/IERC721Enumerable.json create mode 100644 artifacts/contracts/ERC721/IERC721Metadata.sol/IERC721Metadata.dbg.json create mode 100644 artifacts/contracts/ERC721/IERC721Metadata.sol/IERC721Metadata.json create mode 100644 artifacts/contracts/ERC721/IERC721Receiver.sol/IERC721Receiver.dbg.json create mode 100644 artifacts/contracts/ERC721/IERC721Receiver.sol/IERC721Receiver.json create mode 100644 artifacts/contracts/ERC721/V8_0_0/Common/Context.sol/Context.dbg.json create mode 100644 artifacts/contracts/ERC721/V8_0_0/Common/Context.sol/Context.json create mode 100644 artifacts/contracts/ERC721/V8_0_0/Governance/AccessControl.sol/AccessControl.dbg.json create mode 100644 artifacts/contracts/ERC721/V8_0_0/Governance/AccessControl.sol/AccessControl.json create mode 100644 artifacts/contracts/ERC721/V8_0_0/Math/SafeMath.sol/SafeMath.dbg.json create mode 100644 artifacts/contracts/ERC721/V8_0_0/Math/SafeMath.sol/SafeMath.json create mode 100644 artifacts/contracts/ERC721/V8_0_0/Utils/Address.sol/Address.dbg.json create mode 100644 artifacts/contracts/ERC721/V8_0_0/Utils/Address.sol/Address.json create mode 100644 artifacts/contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol/EnumerableMap.dbg.json create mode 100644 artifacts/contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol/EnumerableMap.json create mode 100644 artifacts/contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol/EnumerableSet.dbg.json create mode 100644 artifacts/contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol/EnumerableSet.json create mode 100644 artifacts/contracts/ERC721/V8_0_0/Utils/Strings.sol/Strings.dbg.json create mode 100644 artifacts/contracts/ERC721/V8_0_0/Utils/Strings.sol/Strings.json create mode 100644 artifacts/contracts/Governance/AccessControl.sol/AccessControl.dbg.json create mode 100644 artifacts/contracts/Governance/AccessControl.sol/AccessControl.json create mode 100644 artifacts/contracts/Math/Babylonian.sol/Babylonian.dbg.json create mode 100644 artifacts/contracts/Math/Babylonian.sol/Babylonian.json create mode 100644 artifacts/contracts/Math/FixedPoint.sol/FixedPoint.dbg.json create mode 100644 artifacts/contracts/Math/FixedPoint.sol/FixedPoint.json create mode 100644 artifacts/contracts/Math/MagnitudesAndPowers.sol/MagnitudesAndPowers.dbg.json create mode 100644 artifacts/contracts/Math/MagnitudesAndPowers.sol/MagnitudesAndPowers.json create mode 100644 artifacts/contracts/Math/Math.sol/Math.dbg.json create mode 100644 artifacts/contracts/Math/Math.sol/Math.json create mode 100644 artifacts/contracts/Math/SafeDecimalMath.sol/SafeDecimalMath.dbg.json create mode 100644 artifacts/contracts/Math/SafeDecimalMath.sol/SafeDecimalMath.json create mode 100644 artifacts/contracts/Math/SafeMath.sol/SafeMath.dbg.json create mode 100644 artifacts/contracts/Math/SafeMath.sol/SafeMath.json create mode 100644 artifacts/contracts/Math/SignedSafeMath.sol/SignedSafeMath.dbg.json create mode 100644 artifacts/contracts/Math/SignedSafeMath.sol/SignedSafeMath.json create mode 100644 artifacts/contracts/Math/UQ112x112.sol/UQ112x112.dbg.json create mode 100644 artifacts/contracts/Math/UQ112x112.sol/UQ112x112.json create mode 100644 artifacts/contracts/Oracle/Oracle.sol/Oracle.dbg.json create mode 100644 artifacts/contracts/Oracle/Oracle.sol/Oracle.json create mode 100644 artifacts/contracts/Oracle/ReserveTracker.sol/ReserveTracker.dbg.json create mode 100644 artifacts/contracts/Oracle/ReserveTracker.sol/ReserveTracker.json create mode 100644 artifacts/contracts/Staking/Owned.sol/Owned.dbg.json create mode 100644 artifacts/contracts/Staking/Owned.sol/Owned.json create mode 100644 artifacts/contracts/Staking/Staking.sol/DEUSToken.dbg.json create mode 100644 artifacts/contracts/Staking/Staking.sol/DEUSToken.json create mode 100644 artifacts/contracts/Staking/Staking.sol/IERC20.dbg.json create mode 100644 artifacts/contracts/Staking/Staking.sol/IERC20.json create mode 100644 artifacts/contracts/Staking/Staking.sol/Staking.dbg.json create mode 100644 artifacts/contracts/Staking/Staking.sol/Staking.json create mode 100644 artifacts/contracts/Uniswap/Interfaces/IUniswapV2Callee.sol/IUniswapV2Callee.dbg.json create mode 100644 artifacts/contracts/Uniswap/Interfaces/IUniswapV2Callee.sol/IUniswapV2Callee.json create mode 100644 artifacts/contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol/IUniswapV2ERC20.dbg.json create mode 100644 artifacts/contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol/IUniswapV2ERC20.json create mode 100644 artifacts/contracts/Uniswap/Interfaces/IUniswapV2Factory.sol/IUniswapV2Factory.dbg.json create mode 100644 artifacts/contracts/Uniswap/Interfaces/IUniswapV2Factory.sol/IUniswapV2Factory.json create mode 100644 artifacts/contracts/Uniswap/Interfaces/IUniswapV2Pair.sol/IUniswapV2Pair.dbg.json create mode 100644 artifacts/contracts/Uniswap/Interfaces/IUniswapV2Pair.sol/IUniswapV2Pair.json create mode 100644 artifacts/contracts/Uniswap/Interfaces/IUniswapV2Router01.sol/IUniswapV2Router01.dbg.json create mode 100644 artifacts/contracts/Uniswap/Interfaces/IUniswapV2Router01.sol/IUniswapV2Router01.json create mode 100644 artifacts/contracts/Uniswap/Interfaces/IUniswapV2Router02.sol/IUniswapV2Router02.dbg.json create mode 100644 artifacts/contracts/Uniswap/Interfaces/IUniswapV2Router02.sol/IUniswapV2Router02.json create mode 100644 artifacts/contracts/Uniswap/TransferHelper.sol/TransferHelper.dbg.json create mode 100644 artifacts/contracts/Uniswap/TransferHelper.sol/TransferHelper.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2ERC20.sol/UniswapV2ERC20.dbg.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2ERC20.sol/UniswapV2ERC20.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Factory.sol/UniswapV2Factory.dbg.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Factory.sol/UniswapV2Factory.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Library.sol/UniswapV2Library.dbg.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Library.sol/UniswapV2Library.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Pair.sol/UniswapV2Pair.dbg.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Pair.sol/UniswapV2Pair.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Router02.sol/IERC20.dbg.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Router02.sol/IERC20.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Factory.dbg.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Factory.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Pair.dbg.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Pair.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Router01.dbg.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Router01.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Router02.dbg.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Router02.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Router02.sol/IWETH.dbg.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Router02.sol/IWETH.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Router02.sol/SafeMath.dbg.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Router02.sol/SafeMath.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Router02.sol/TransferHelper.dbg.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Router02.sol/TransferHelper.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Router02.sol/UniswapV2Library.dbg.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Router02.sol/UniswapV2Library.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Router02.sol/UniswapV2Router02.dbg.json create mode 100644 artifacts/contracts/Uniswap/UniswapV2Router02.sol/UniswapV2Router02.json create mode 100644 artifacts/contracts/Utils/Address.sol/Address.dbg.json create mode 100644 artifacts/contracts/Utils/Address.sol/Address.json create mode 100644 artifacts/contracts/Utils/BlockMiner.sol/BlockMiner.dbg.json create mode 100644 artifacts/contracts/Utils/BlockMiner.sol/BlockMiner.json create mode 100644 artifacts/contracts/Utils/BundleUtils.sol/BundleUtils.dbg.json create mode 100644 artifacts/contracts/Utils/BundleUtils.sol/BundleUtils.json create mode 100644 artifacts/contracts/Utils/EnumerableSet.sol/EnumerableSet.dbg.json create mode 100644 artifacts/contracts/Utils/EnumerableSet.sol/EnumerableSet.json create mode 100644 artifacts/contracts/Utils/MigrationHelper.sol/MigrationHelper.dbg.json create mode 100644 artifacts/contracts/Utils/MigrationHelper.sol/MigrationHelper.json create mode 100644 artifacts/contracts/Utils/Migrations.sol/Migrations.dbg.json create mode 100644 artifacts/contracts/Utils/Migrations.sol/Migrations.json create mode 100644 artifacts/contracts/Utils/ReentrancyGuard.sol/ReentrancyGuard.dbg.json create mode 100644 artifacts/contracts/Utils/ReentrancyGuard.sol/ReentrancyGuard.json create mode 100644 artifacts/contracts/Utils/StorageSlot.sol/StorageSlot.dbg.json create mode 100644 artifacts/contracts/Utils/StorageSlot.sol/StorageSlot.json create mode 100644 artifacts/contracts/Utils/StringHelpers.sol/StringHelpers.dbg.json create mode 100644 artifacts/contracts/Utils/StringHelpers.sol/StringHelpers.json create mode 100644 cache/solidity-files-cache.json create mode 100644 cache/validations.json rename {src/hardhat/contracts => contracts}/Common/Context.sol (100%) rename {src/hardhat/contracts => contracts}/Common/Ownable.sol (100%) rename {src/hardhat/contracts => contracts}/DEI/DEI.sol (100%) rename {src/hardhat/contracts => contracts}/DEI/IDEI.sol (100%) rename {src/hardhat/contracts => contracts}/DEI/Pools/DEIPool.sol (100%) rename {src/hardhat/contracts => contracts}/DEI/Pools/DEIPoolLibrary.sol (100%) rename {src/hardhat/contracts => contracts}/DEI/Pools/IDEIPool.sol (100%) rename {src/hardhat/contracts => contracts}/DEI/Pools/Pool_USDC.sol (100%) rename {src/hardhat/contracts => contracts}/DEI/Pools/readme.md (100%) rename {src/hardhat/contracts => contracts}/DEI/readme.md (100%) rename {src/hardhat/contracts => contracts}/DEUS/DEUS.sol (100%) rename {src/hardhat/contracts => contracts}/DEUS/IDEUS.sol (100%) rename {src/hardhat/contracts => contracts}/DEUS/readme.md (100%) rename {src/hardhat/contracts => contracts}/ERC165/ERC165.sol (100%) rename {src/hardhat/contracts => contracts}/ERC165/IERC165.sol (100%) rename {src/hardhat/contracts => contracts}/ERC20/ERC20.sol (100%) rename {src/hardhat/contracts => contracts}/ERC20/ERC20Custom.sol (100%) rename {src/hardhat/contracts => contracts}/ERC20/IERC20.sol (100%) rename {src/hardhat/contracts => contracts}/ERC20/IERC20_Detailed.sol (100%) rename {src/hardhat/contracts => contracts}/ERC20/IWETH.sol (100%) rename {src/hardhat/contracts => contracts}/ERC20/SafeERC20.sol (100%) rename {src/hardhat/contracts => contracts}/ERC20/WETH.sol (100%) rename {src/hardhat/contracts => contracts}/ERC20/draft-ERC20Permit.sol (100%) rename {src/hardhat/contracts => contracts}/ERC721/ERC721.sol (100%) rename {src/hardhat/contracts => contracts}/ERC721/IERC721.sol (100%) rename {src/hardhat/contracts => contracts}/ERC721/IERC721Enumerable.sol (100%) rename {src/hardhat/contracts => contracts}/ERC721/IERC721Metadata.sol (100%) rename {src/hardhat/contracts => contracts}/ERC721/IERC721Receiver.sol (100%) rename {src/hardhat/contracts => contracts}/ERC721/V8_0_0/Common/Context.sol (100%) rename {src/hardhat/contracts => contracts}/ERC721/V8_0_0/Governance/AccessControl.sol (100%) rename {src/hardhat/contracts => contracts}/ERC721/V8_0_0/Math/SafeMath.sol (100%) rename {src/hardhat/contracts => contracts}/ERC721/V8_0_0/Utils/Address.sol (100%) rename {src/hardhat/contracts => contracts}/ERC721/V8_0_0/Utils/EnumerableMap.sol (100%) rename {src/hardhat/contracts => contracts}/ERC721/V8_0_0/Utils/EnumerableSet.sol (100%) rename {src/hardhat/contracts => contracts}/ERC721/V8_0_0/Utils/Strings.sol (100%) rename {src/hardhat/contracts => contracts}/Governance/AccessControl.sol (100%) rename {src/hardhat/contracts => contracts}/Math/Babylonian.sol (100%) rename {src/hardhat/contracts => contracts}/Math/FixedPoint.sol (100%) rename {src/hardhat/contracts => contracts}/Math/MagnitudesAndPowers.sol (100%) rename {src/hardhat/contracts => contracts}/Math/Math.sol (100%) rename {src/hardhat/contracts => contracts}/Math/SafeDecimalMath.sol (100%) rename {src/hardhat/contracts => contracts}/Math/SafeMath.sol (100%) rename {src/hardhat/contracts => contracts}/Math/SignedSafeMath.sol (100%) rename {src/hardhat/contracts => contracts}/Math/UQ112x112.sol (100%) rename {src/hardhat/contracts => contracts}/Oracle/Oracle.sol (100%) rename {src/hardhat/contracts => contracts}/Oracle/ReserveTracker.sol (100%) rename {src/hardhat/contracts => contracts}/Staking/Owned.sol (100%) rename {src/hardhat/contracts => contracts}/Staking/Staking.sol (100%) rename {src/hardhat/contracts => contracts}/Staking/readme.md (100%) rename {src/hardhat/contracts => contracts}/Uniswap/Interfaces/IUniswapV2Callee.sol (100%) rename {src/hardhat/contracts => contracts}/Uniswap/Interfaces/IUniswapV2ERC20.sol (100%) rename {src/hardhat/contracts => contracts}/Uniswap/Interfaces/IUniswapV2Factory.sol (100%) rename {src/hardhat/contracts => contracts}/Uniswap/Interfaces/IUniswapV2Pair.sol (100%) rename {src/hardhat/contracts => contracts}/Uniswap/Interfaces/IUniswapV2Router01.sol (100%) rename {src/hardhat/contracts => contracts}/Uniswap/Interfaces/IUniswapV2Router02.sol (100%) rename {src/hardhat/contracts => contracts}/Uniswap/TransferHelper.sol (100%) rename {src/hardhat/contracts => contracts}/Uniswap/UniswapV2ERC20.sol (100%) rename {src/hardhat/contracts => contracts}/Uniswap/UniswapV2Factory.sol (100%) rename {src/hardhat/contracts => contracts}/Uniswap/UniswapV2Library.sol (100%) rename {src/hardhat/contracts => contracts}/Uniswap/UniswapV2Pair.sol (100%) rename {src/hardhat/contracts => contracts}/Uniswap/UniswapV2Router02.sol (100%) rename {src/hardhat/contracts => contracts}/Utils/Address.sol (100%) rename {src/hardhat/contracts => contracts}/Utils/BlockMiner.sol (100%) rename {src/hardhat/contracts => contracts}/Utils/BundleUtils.sol (100%) rename {src/hardhat/contracts => contracts}/Utils/EnumerableSet.sol (100%) rename {src/hardhat/contracts => contracts}/Utils/MigrationHelper.sol (100%) rename {src/hardhat/contracts => contracts}/Utils/Migrations.sol (100%) rename {src/hardhat/contracts => contracts}/Utils/ReentrancyGuard.sol (100%) rename {src/hardhat/contracts => contracts}/Utils/StorageSlot.sol (100%) rename {src/hardhat/contracts => contracts}/Utils/StringHelpers.sol (100%) rename src/hardhat/hardhat.config.js => hardhat.config.js (100%) delete mode 100755 package.json rename {src/hardhat/scripts => scripts}/deploy_arbitrum.js (100%) rename {src/hardhat/scripts => scripts}/deploy_bsc.js (100%) rename {src/hardhat/scripts => scripts}/deploy_bsctest.js (100%) rename {src/hardhat/scripts => scripts}/deploy_contracts/deploy_dei.js (100%) rename {src/hardhat/scripts => scripts}/deploy_contracts/deploy_dei_pool_library.js (100%) rename {src/hardhat/scripts => scripts}/deploy_contracts/deploy_deus.js (100%) rename {src/hardhat/scripts => scripts}/deploy_contracts/deploy_oracle.js (100%) rename {src/hardhat/scripts => scripts}/deploy_contracts/deploy_reserve_tracker.js (100%) rename {src/hardhat/scripts => scripts}/deploy_contracts/deploy_staking.js (100%) rename {src/hardhat/scripts => scripts}/deploy_contracts/deploy_usdc_pool.js (100%) rename {src/hardhat/scripts => scripts}/deploy_fantom.js (100%) rename {src/hardhat/scripts => scripts}/deploy_mainnet.js (100%) rename {src/hardhat/scripts => scripts}/deploy_metis.js (100%) rename {src/hardhat/scripts => scripts}/deploy_rinkeby.js (100%) rename {src/hardhat/scripts => scripts}/helpers/deploy_contract.js (100%) rename {src/hardhat/scripts => scripts}/helpers/modify_chain.js (100%) rename {src/hardhat/scripts => scripts}/helpers/skip_nonce.js (100%) delete mode 100644 src/misc/utilities.ts delete mode 100755 src/types/constants.ts delete mode 100644 truffle-config.js diff --git a/artifacts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json b/artifacts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json new file mode 100644 index 00000000..be51885a --- /dev/null +++ b/artifacts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.json b/artifacts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.json new file mode 100644 index 00000000..483a3e1a --- /dev/null +++ b/artifacts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.json @@ -0,0 +1,86 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC20Permit", + "sourceName": "@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "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" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.dbg.json b/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.dbg.json new file mode 100644 index 00000000..b4959490 --- /dev/null +++ b/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.json b/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.json new file mode 100644 index 00000000..ffd16281 --- /dev/null +++ b/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Counters", + "sourceName": "@openzeppelin/contracts/utils/Counters.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bb219c296f3935bc53f9bd5c532831879d70edfd17ef6c4a7dce9d653b2da36264736f6c634300080a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bb219c296f3935bc53f9bd5c532831879d70edfd17ef6c4a7dce9d653b2da36264736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.dbg.json b/artifacts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.dbg.json new file mode 100644 index 00000000..18e036ed --- /dev/null +++ b/artifacts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.json b/artifacts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.json new file mode 100644 index 00000000..37f4c102 --- /dev/null +++ b/artifacts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ECDSA", + "sourceName": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220515008b9193cb0f6891bd852f15890080911960ea4bc09b9a356284184b66de564736f6c634300080a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220515008b9193cb0f6891bd852f15890080911960ea4bc09b9a356284184b66de564736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol/EIP712.dbg.json b/artifacts/@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol/EIP712.dbg.json new file mode 100644 index 00000000..18e036ed --- /dev/null +++ b/artifacts/@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol/EIP712.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol/EIP712.json b/artifacts/@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol/EIP712.json new file mode 100644 index 00000000..3e430f89 --- /dev/null +++ b/artifacts/@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol/EIP712.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "EIP712", + "sourceName": "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol", + "abi": [], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/build-info/182b41f591ef2465d6c9bbd4fc5b26a9.json b/artifacts/build-info/182b41f591ef2465d6c9bbd4fc5b26a9.json new file mode 100644 index 00000000..c38cf1ba --- /dev/null +++ b/artifacts/build-info/182b41f591ef2465d6c9bbd4fc5b26a9.json @@ -0,0 +1,54389 @@ +{ + "id": "182b41f591ef2465d6c9bbd4fc5b26a9", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.6.6", + "solcLongVersion": "0.6.6+commit.6c089d02", + "input": { + "language": "Solidity", + "sources": { + "contracts/Uniswap/UniswapV2Router02.sol": { + "content": "/**\n *Submitted for verification at Etherscan.io on 2020-06-05\n*/\n\npragma solidity =0.6.6;\n\ninterface IUniswapV2Factory {\n event PairCreated(address indexed token0, address indexed token1, address pair, uint);\n\n function feeTo() external view returns (address);\n function feeToSetter() external view returns (address);\n\n function getPair(address tokenA, address tokenB) external view returns (address pair);\n function allPairs(uint) external view returns (address pair);\n function allPairsLength() external view returns (uint);\n\n function createPair(address tokenA, address tokenB) external returns (address pair);\n\n function setFeeTo(address) external;\n function setFeeToSetter(address) external;\n}\n\ninterface IUniswapV2Pair {\n event Approval(address indexed owner, address indexed spender, uint value);\n event Transfer(address indexed from, address indexed to, uint value);\n\n function name() external pure returns (string memory);\n function symbol() external pure returns (string memory);\n function decimals() external pure returns (uint8);\n function totalSupply() external view returns (uint);\n function balanceOf(address owner) external view returns (uint);\n function allowance(address owner, address spender) external view returns (uint);\n\n function approve(address spender, uint value) external returns (bool);\n function transfer(address to, uint value) external returns (bool);\n function transferFrom(address from, address to, uint value) external returns (bool);\n\n function DOMAIN_SEPARATOR() external view returns (bytes32);\n function PERMIT_TYPEHASH() external pure returns (bytes32);\n function nonces(address owner) external view returns (uint);\n\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\n\n event Mint(address indexed sender, uint amount0, uint amount1);\n event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\n event Swap(\n address indexed sender,\n uint amount0In,\n uint amount1In,\n uint amount0Out,\n uint amount1Out,\n address indexed to\n );\n event Sync(uint112 reserve0, uint112 reserve1);\n\n function MINIMUM_LIQUIDITY() external pure returns (uint);\n function factory() external view returns (address);\n function token0() external view returns (address);\n function token1() external view returns (address);\n function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\n function price0CumulativeLast() external view returns (uint);\n function price1CumulativeLast() external view returns (uint);\n function kLast() external view returns (uint);\n\n function mint(address to) external returns (uint liquidity);\n function burn(address to) external returns (uint amount0, uint amount1);\n function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;\n function skim(address to) external;\n function sync() external;\n\n function initialize(address, address) external;\n}\n\ninterface IUniswapV2Router01 {\n function factory() external pure returns (address);\n function WETH() external pure returns (address);\n\n function addLiquidity(\n address tokenA,\n address tokenB,\n uint amountADesired,\n uint amountBDesired,\n uint amountAMin,\n uint amountBMin,\n address to,\n uint deadline\n ) external returns (uint amountA, uint amountB, uint liquidity);\n function addLiquidityETH(\n address token,\n uint amountTokenDesired,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline\n ) external payable returns (uint amountToken, uint amountETH, uint liquidity);\n function removeLiquidity(\n address tokenA,\n address tokenB,\n uint liquidity,\n uint amountAMin,\n uint amountBMin,\n address to,\n uint deadline\n ) external returns (uint amountA, uint amountB);\n function removeLiquidityETH(\n address token,\n uint liquidity,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline\n ) external returns (uint amountToken, uint amountETH);\n function removeLiquidityWithPermit(\n address tokenA,\n address tokenB,\n uint liquidity,\n uint amountAMin,\n uint amountBMin,\n address to,\n uint deadline,\n bool approveMax, uint8 v, bytes32 r, bytes32 s\n ) external returns (uint amountA, uint amountB);\n function removeLiquidityETHWithPermit(\n address token,\n uint liquidity,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline,\n bool approveMax, uint8 v, bytes32 r, bytes32 s\n ) external returns (uint amountToken, uint amountETH);\n function swapExactTokensForTokens(\n uint amountIn,\n uint amountOutMin,\n address[] calldata path,\n address to,\n uint deadline\n ) external returns (uint[] memory amounts);\n function swapTokensForExactTokens(\n uint amountOut,\n uint amountInMax,\n address[] calldata path,\n address to,\n uint deadline\n ) external returns (uint[] memory amounts);\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\n external\n payable\n returns (uint[] memory amounts);\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\n external\n returns (uint[] memory amounts);\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\n external\n returns (uint[] memory amounts);\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\n external\n payable\n returns (uint[] memory amounts);\n\n function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);\n function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);\n function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);\n}\n\ninterface IUniswapV2Router02 is IUniswapV2Router01 {\n function removeLiquidityETHSupportingFeeOnTransferTokens(\n address token,\n uint liquidity,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline\n ) external returns (uint amountETH);\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\n address token,\n uint liquidity,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline,\n bool approveMax, uint8 v, bytes32 r, bytes32 s\n ) external returns (uint amountETH);\n\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\n uint amountIn,\n uint amountOutMin,\n address[] calldata path,\n address to,\n uint deadline\n ) external;\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\n uint amountOutMin,\n address[] calldata path,\n address to,\n uint deadline\n ) external payable;\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\n uint amountIn,\n uint amountOutMin,\n address[] calldata path,\n address to,\n uint deadline\n ) external;\n}\n\ninterface IERC20 {\n event Approval(address indexed owner, address indexed spender, uint value);\n event Transfer(address indexed from, address indexed to, uint value);\n\n function name() external view returns (string memory);\n function symbol() external view returns (string memory);\n function decimals() external view returns (uint8);\n function totalSupply() external view returns (uint);\n function balanceOf(address owner) external view returns (uint);\n function allowance(address owner, address spender) external view returns (uint);\n\n function approve(address spender, uint value) external returns (bool);\n function transfer(address to, uint value) external returns (bool);\n function transferFrom(address from, address to, uint value) external returns (bool);\n}\n\ninterface IWETH {\n function deposit() external payable;\n function transfer(address to, uint value) external returns (bool);\n function withdraw(uint) external;\n}\n\ncontract UniswapV2Router02 is IUniswapV2Router02 {\n using SafeMath for uint;\n\n address public immutable override factory;\n address public immutable override WETH;\n\n modifier ensure(uint deadline) {\n require(deadline >= block.timestamp, 'UniswapV2Router: EXPIRED');\n _;\n }\n\n constructor(address _factory, address _WETH) public {\n factory = _factory;\n WETH = _WETH;\n }\n\n receive() external payable {\n assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract\n }\n\n // **** ADD LIQUIDITY ****\n function _addLiquidity(\n address tokenA,\n address tokenB,\n uint amountADesired,\n uint amountBDesired,\n uint amountAMin,\n uint amountBMin\n ) internal virtual returns (uint amountA, uint amountB) {\n // create the pair if it doesn't exist yet\n if (IUniswapV2Factory(factory).getPair(tokenA, tokenB) == address(0)) {\n IUniswapV2Factory(factory).createPair(tokenA, tokenB);\n }\n (uint reserveA, uint reserveB) = UniswapV2Library.getReserves(factory, tokenA, tokenB);\n if (reserveA == 0 && reserveB == 0) {\n (amountA, amountB) = (amountADesired, amountBDesired);\n } else {\n uint amountBOptimal = UniswapV2Library.quote(amountADesired, reserveA, reserveB);\n if (amountBOptimal <= amountBDesired) {\n require(amountBOptimal >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\n (amountA, amountB) = (amountADesired, amountBOptimal);\n } else {\n uint amountAOptimal = UniswapV2Library.quote(amountBDesired, reserveB, reserveA);\n assert(amountAOptimal <= amountADesired);\n require(amountAOptimal >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\n (amountA, amountB) = (amountAOptimal, amountBDesired);\n }\n }\n }\n function addLiquidity(\n address tokenA,\n address tokenB,\n uint amountADesired,\n uint amountBDesired,\n uint amountAMin,\n uint amountBMin,\n address to,\n uint deadline\n ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {\n (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\n TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);\n TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);\n liquidity = IUniswapV2Pair(pair).mint(to);\n }\n function addLiquidityETH(\n address token,\n uint amountTokenDesired,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline\n ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) {\n (amountToken, amountETH) = _addLiquidity(\n token,\n WETH,\n amountTokenDesired,\n msg.value,\n amountTokenMin,\n amountETHMin\n );\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\n TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);\n IWETH(WETH).deposit{value: amountETH}();\n assert(IWETH(WETH).transfer(pair, amountETH));\n liquidity = IUniswapV2Pair(pair).mint(to);\n // refund dust eth, if any\n if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH);\n }\n\n // **** REMOVE LIQUIDITY ****\n function removeLiquidity(\n address tokenA,\n address tokenB,\n uint liquidity,\n uint amountAMin,\n uint amountBMin,\n address to,\n uint deadline\n ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\n IUniswapV2Pair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair\n (uint amount0, uint amount1) = IUniswapV2Pair(pair).burn(to);\n (address token0,) = UniswapV2Library.sortTokens(tokenA, tokenB);\n (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);\n require(amountA >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\n require(amountB >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\n }\n function removeLiquidityETH(\n address token,\n uint liquidity,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline\n ) public virtual override ensure(deadline) returns (uint amountToken, uint amountETH) {\n (amountToken, amountETH) = removeLiquidity(\n token,\n WETH,\n liquidity,\n amountTokenMin,\n amountETHMin,\n address(this),\n deadline\n );\n TransferHelper.safeTransfer(token, to, amountToken);\n IWETH(WETH).withdraw(amountETH);\n TransferHelper.safeTransferETH(to, amountETH);\n }\n function removeLiquidityWithPermit(\n address tokenA,\n address tokenB,\n uint liquidity,\n uint amountAMin,\n uint amountBMin,\n address to,\n uint deadline,\n bool approveMax, uint8 v, bytes32 r, bytes32 s\n ) external virtual override returns (uint amountA, uint amountB) {\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\n uint value = approveMax ? uint(-1) : liquidity;\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\n (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);\n }\n function removeLiquidityETHWithPermit(\n address token,\n uint liquidity,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline,\n bool approveMax, uint8 v, bytes32 r, bytes32 s\n ) external virtual override returns (uint amountToken, uint amountETH) {\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\n uint value = approveMax ? uint(-1) : liquidity;\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\n (amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline);\n }\n\n // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****\n function removeLiquidityETHSupportingFeeOnTransferTokens(\n address token,\n uint liquidity,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline\n ) public virtual override ensure(deadline) returns (uint amountETH) {\n (, amountETH) = removeLiquidity(\n token,\n WETH,\n liquidity,\n amountTokenMin,\n amountETHMin,\n address(this),\n deadline\n );\n TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this)));\n IWETH(WETH).withdraw(amountETH);\n TransferHelper.safeTransferETH(to, amountETH);\n }\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\n address token,\n uint liquidity,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline,\n bool approveMax, uint8 v, bytes32 r, bytes32 s\n ) external virtual override returns (uint amountETH) {\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\n uint value = approveMax ? uint(-1) : liquidity;\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\n amountETH = removeLiquidityETHSupportingFeeOnTransferTokens(\n token, liquidity, amountTokenMin, amountETHMin, to, deadline\n );\n }\n\n // **** SWAP ****\n // requires the initial amount to have already been sent to the first pair\n function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual {\n for (uint i; i < path.length - 1; i++) {\n (address input, address output) = (path[i], path[i + 1]);\n (address token0,) = UniswapV2Library.sortTokens(input, output);\n uint amountOut = amounts[i + 1];\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\n IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output)).swap(\n amount0Out, amount1Out, to, new bytes(0)\n );\n }\n }\n function swapExactTokensForTokens(\n uint amountIn,\n uint amountOutMin,\n address[] calldata path,\n address to,\n uint deadline\n ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\n TransferHelper.safeTransferFrom(\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\n );\n _swap(amounts, path, to);\n }\n function swapTokensForExactTokens(\n uint amountOut,\n uint amountInMax,\n address[] calldata path,\n address to,\n uint deadline\n ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\n require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\n TransferHelper.safeTransferFrom(\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\n );\n _swap(amounts, path, to);\n }\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\n external\n virtual\n override\n payable\n ensure(deadline)\n returns (uint[] memory amounts)\n {\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\n amounts = UniswapV2Library.getAmountsOut(factory, msg.value, path);\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\n IWETH(WETH).deposit{value: amounts[0]}();\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\n _swap(amounts, path, to);\n }\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\n external\n virtual\n override\n ensure(deadline)\n returns (uint[] memory amounts)\n {\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\n require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\n TransferHelper.safeTransferFrom(\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\n );\n _swap(amounts, path, address(this));\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\n TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\n }\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\n external\n virtual\n override\n ensure(deadline)\n returns (uint[] memory amounts)\n {\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\n TransferHelper.safeTransferFrom(\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\n );\n _swap(amounts, path, address(this));\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\n TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\n }\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\n external\n virtual\n override\n payable\n ensure(deadline)\n returns (uint[] memory amounts)\n {\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\n require(amounts[0] <= msg.value, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\n IWETH(WETH).deposit{value: amounts[0]}();\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\n _swap(amounts, path, to);\n // refund dust eth, if any\n if (msg.value > amounts[0]) TransferHelper.safeTransferETH(msg.sender, msg.value - amounts[0]);\n }\n\n // **** SWAP (supporting fee-on-transfer tokens) ****\n // requires the initial amount to have already been sent to the first pair\n function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual {\n for (uint i; i < path.length - 1; i++) {\n (address input, address output) = (path[i], path[i + 1]);\n (address token0,) = UniswapV2Library.sortTokens(input, output);\n IUniswapV2Pair pair = IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output));\n uint amountInput;\n uint amountOutput;\n { // scope to avoid stack too deep errors\n (uint reserve0, uint reserve1,) = pair.getReserves();\n (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\n amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);\n amountOutput = UniswapV2Library.getAmountOut(amountInput, reserveInput, reserveOutput);\n }\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\n pair.swap(amount0Out, amount1Out, to, new bytes(0));\n }\n }\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\n uint amountIn,\n uint amountOutMin,\n address[] calldata path,\n address to,\n uint deadline\n ) external virtual override ensure(deadline) {\n TransferHelper.safeTransferFrom(\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\n );\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\n _swapSupportingFeeOnTransferTokens(path, to);\n require(\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\n 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\n );\n }\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\n uint amountOutMin,\n address[] calldata path,\n address to,\n uint deadline\n )\n external\n virtual\n override\n payable\n ensure(deadline)\n {\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\n uint amountIn = msg.value;\n IWETH(WETH).deposit{value: amountIn}();\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn));\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\n _swapSupportingFeeOnTransferTokens(path, to);\n require(\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\n 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\n );\n }\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\n uint amountIn,\n uint amountOutMin,\n address[] calldata path,\n address to,\n uint deadline\n )\n external\n virtual\n override\n ensure(deadline)\n {\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\n TransferHelper.safeTransferFrom(\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\n );\n _swapSupportingFeeOnTransferTokens(path, address(this));\n uint amountOut = IERC20(WETH).balanceOf(address(this));\n require(amountOut >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\n IWETH(WETH).withdraw(amountOut);\n TransferHelper.safeTransferETH(to, amountOut);\n }\n\n // **** LIBRARY FUNCTIONS ****\n function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) {\n return UniswapV2Library.quote(amountA, reserveA, reserveB);\n }\n\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)\n public\n pure\n virtual\n override\n returns (uint amountOut)\n {\n return UniswapV2Library.getAmountOut(amountIn, reserveIn, reserveOut);\n }\n\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)\n public\n pure\n virtual\n override\n returns (uint amountIn)\n {\n return UniswapV2Library.getAmountIn(amountOut, reserveIn, reserveOut);\n }\n\n function getAmountsOut(uint amountIn, address[] memory path)\n public\n view\n virtual\n override\n returns (uint[] memory amounts)\n {\n return UniswapV2Library.getAmountsOut(factory, amountIn, path);\n }\n\n function getAmountsIn(uint amountOut, address[] memory path)\n public\n view\n virtual\n override\n returns (uint[] memory amounts)\n {\n return UniswapV2Library.getAmountsIn(factory, amountOut, path);\n }\n}\n\n// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)\n\nlibrary SafeMath {\n function add(uint x, uint y) internal pure returns (uint z) {\n require((z = x + y) >= x, 'ds-math-add-overflow');\n }\n\n function sub(uint x, uint y) internal pure returns (uint z) {\n require((z = x - y) <= x, 'ds-math-sub-underflow');\n }\n\n function mul(uint x, uint y) internal pure returns (uint z) {\n require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');\n }\n}\n\nlibrary UniswapV2Library {\n using SafeMath for uint;\n\n // returns sorted token addresses, used to handle return values from pairs sorted in this order\n function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {\n require(tokenA != tokenB, 'UniswapV2Library: IDENTICAL_ADDRESSES');\n (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);\n require(token0 != address(0), 'UniswapV2Library: ZERO_ADDRESS');\n }\n\n // calculates the CREATE2 address for a pair without making any external calls\n function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {\n (address token0, address token1) = sortTokens(tokenA, tokenB);\n pair = address(uint(keccak256(abi.encodePacked(\n hex'ff',\n factory,\n keccak256(abi.encodePacked(token0, token1)),\n hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // init code hash\n ))));\n }\n\n // fetches and sorts the reserves for a pair\n function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {\n (address token0,) = sortTokens(tokenA, tokenB);\n (uint reserve0, uint reserve1,) = IUniswapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves();\n (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\n }\n\n // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset\n function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {\n require(amountA > 0, 'UniswapV2Library: INSUFFICIENT_AMOUNT');\n require(reserveA > 0 && reserveB > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\n amountB = amountA.mul(reserveB) / reserveA;\n }\n\n // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {\n require(amountIn > 0, 'UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT');\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\n uint amountInWithFee = amountIn.mul(997);\n uint numerator = amountInWithFee.mul(reserveOut);\n uint denominator = reserveIn.mul(1000).add(amountInWithFee);\n amountOut = numerator / denominator;\n }\n\n // given an output amount of an asset and pair reserves, returns a required input amount of the other asset\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {\n require(amountOut > 0, 'UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT');\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\n uint numerator = reserveIn.mul(amountOut).mul(1000);\n uint denominator = reserveOut.sub(amountOut).mul(997);\n amountIn = (numerator / denominator).add(1);\n }\n\n // performs chained getAmountOut calculations on any number of pairs\n function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\n amounts = new uint[](path.length);\n amounts[0] = amountIn;\n for (uint i; i < path.length - 1; i++) {\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]);\n amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);\n }\n }\n\n // performs chained getAmountIn calculations on any number of pairs\n function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\n amounts = new uint[](path.length);\n amounts[amounts.length - 1] = amountOut;\n for (uint i = path.length - 1; i > 0; i--) {\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);\n amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);\n }\n }\n}\n\n// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false\nlibrary TransferHelper {\n function safeApprove(address token, address to, uint value) internal {\n // bytes4(keccak256(bytes('approve(address,uint256)')));\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');\n }\n\n function safeTransfer(address token, address to, uint value) internal {\n // bytes4(keccak256(bytes('transfer(address,uint256)')));\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');\n }\n\n function safeTransferFrom(address token, address from, address to, uint value) internal {\n // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');\n }\n\n function safeTransferETH(address to, uint value) internal {\n (bool success,) = to.call{value:value}(new bytes(0));\n require(success, 'TransferHelper: ETH_TRANSFER_FAILED');\n }\n}" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "output": { + "contracts": { + "contracts/Uniswap/UniswapV2Router02.sol": { + "IERC20": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "name()": "06fdde03", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/Uniswap/UniswapV2Router02.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Uniswap/UniswapV2Router02.sol\":{\"content\":\"/**\\n *Submitted for verification at Etherscan.io on 2020-06-05\\n*/\\n\\npragma solidity =0.6.6;\\n\\ninterface IUniswapV2Factory {\\n event PairCreated(address indexed token0, address indexed token1, address pair, uint);\\n\\n function feeTo() external view returns (address);\\n function feeToSetter() external view returns (address);\\n\\n function getPair(address tokenA, address tokenB) external view returns (address pair);\\n function allPairs(uint) external view returns (address pair);\\n function allPairsLength() external view returns (uint);\\n\\n function createPair(address tokenA, address tokenB) external returns (address pair);\\n\\n function setFeeTo(address) external;\\n function setFeeToSetter(address) external;\\n}\\n\\ninterface IUniswapV2Pair {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external pure returns (string memory);\\n function symbol() external pure returns (string memory);\\n function decimals() external pure returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n function PERMIT_TYPEHASH() external pure returns (bytes32);\\n function nonces(address owner) external view returns (uint);\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\\n\\n event Mint(address indexed sender, uint amount0, uint amount1);\\n event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\\n event Swap(\\n address indexed sender,\\n uint amount0In,\\n uint amount1In,\\n uint amount0Out,\\n uint amount1Out,\\n address indexed to\\n );\\n event Sync(uint112 reserve0, uint112 reserve1);\\n\\n function MINIMUM_LIQUIDITY() external pure returns (uint);\\n function factory() external view returns (address);\\n function token0() external view returns (address);\\n function token1() external view returns (address);\\n function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\\n function price0CumulativeLast() external view returns (uint);\\n function price1CumulativeLast() external view returns (uint);\\n function kLast() external view returns (uint);\\n\\n function mint(address to) external returns (uint liquidity);\\n function burn(address to) external returns (uint amount0, uint amount1);\\n function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;\\n function skim(address to) external;\\n function sync() external;\\n\\n function initialize(address, address) external;\\n}\\n\\ninterface IUniswapV2Router01 {\\n function factory() external pure returns (address);\\n function WETH() external pure returns (address);\\n\\n function addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB, uint liquidity);\\n function addLiquidityETH(\\n address token,\\n uint amountTokenDesired,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external payable returns (uint amountToken, uint amountETH, uint liquidity);\\n function removeLiquidity(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETH(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountToken, uint amountETH);\\n function removeLiquidityWithPermit(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETHWithPermit(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountToken, uint amountETH);\\n function swapExactTokensForTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapTokensForExactTokens(\\n uint amountOut,\\n uint amountInMax,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n\\n function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);\\n function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);\\n function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);\\n}\\n\\ninterface IUniswapV2Router02 is IUniswapV2Router01 {\\n function removeLiquidityETHSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountETH);\\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountETH);\\n\\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external;\\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external payable;\\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external;\\n}\\n\\ninterface IERC20 {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external view returns (string memory);\\n function symbol() external view returns (string memory);\\n function decimals() external view returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n}\\n\\ninterface IWETH {\\n function deposit() external payable;\\n function transfer(address to, uint value) external returns (bool);\\n function withdraw(uint) external;\\n}\\n\\ncontract UniswapV2Router02 is IUniswapV2Router02 {\\n using SafeMath for uint;\\n\\n address public immutable override factory;\\n address public immutable override WETH;\\n\\n modifier ensure(uint deadline) {\\n require(deadline >= block.timestamp, 'UniswapV2Router: EXPIRED');\\n _;\\n }\\n\\n constructor(address _factory, address _WETH) public {\\n factory = _factory;\\n WETH = _WETH;\\n }\\n\\n receive() external payable {\\n assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract\\n }\\n\\n // **** ADD LIQUIDITY ****\\n function _addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin\\n ) internal virtual returns (uint amountA, uint amountB) {\\n // create the pair if it doesn't exist yet\\n if (IUniswapV2Factory(factory).getPair(tokenA, tokenB) == address(0)) {\\n IUniswapV2Factory(factory).createPair(tokenA, tokenB);\\n }\\n (uint reserveA, uint reserveB) = UniswapV2Library.getReserves(factory, tokenA, tokenB);\\n if (reserveA == 0 && reserveB == 0) {\\n (amountA, amountB) = (amountADesired, amountBDesired);\\n } else {\\n uint amountBOptimal = UniswapV2Library.quote(amountADesired, reserveA, reserveB);\\n if (amountBOptimal <= amountBDesired) {\\n require(amountBOptimal >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\\n (amountA, amountB) = (amountADesired, amountBOptimal);\\n } else {\\n uint amountAOptimal = UniswapV2Library.quote(amountBDesired, reserveB, reserveA);\\n assert(amountAOptimal <= amountADesired);\\n require(amountAOptimal >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\\n (amountA, amountB) = (amountAOptimal, amountBDesired);\\n }\\n }\\n }\\n function addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {\\n (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);\\n TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);\\n liquidity = IUniswapV2Pair(pair).mint(to);\\n }\\n function addLiquidityETH(\\n address token,\\n uint amountTokenDesired,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) {\\n (amountToken, amountETH) = _addLiquidity(\\n token,\\n WETH,\\n amountTokenDesired,\\n msg.value,\\n amountTokenMin,\\n amountETHMin\\n );\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);\\n IWETH(WETH).deposit{value: amountETH}();\\n assert(IWETH(WETH).transfer(pair, amountETH));\\n liquidity = IUniswapV2Pair(pair).mint(to);\\n // refund dust eth, if any\\n if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH);\\n }\\n\\n // **** REMOVE LIQUIDITY ****\\n function removeLiquidity(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n IUniswapV2Pair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair\\n (uint amount0, uint amount1) = IUniswapV2Pair(pair).burn(to);\\n (address token0,) = UniswapV2Library.sortTokens(tokenA, tokenB);\\n (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);\\n require(amountA >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\\n require(amountB >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\\n }\\n function removeLiquidityETH(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountToken, uint amountETH) {\\n (amountToken, amountETH) = removeLiquidity(\\n token,\\n WETH,\\n liquidity,\\n amountTokenMin,\\n amountETHMin,\\n address(this),\\n deadline\\n );\\n TransferHelper.safeTransfer(token, to, amountToken);\\n IWETH(WETH).withdraw(amountETH);\\n TransferHelper.safeTransferETH(to, amountETH);\\n }\\n function removeLiquidityWithPermit(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountA, uint amountB) {\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);\\n }\\n function removeLiquidityETHWithPermit(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountToken, uint amountETH) {\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n (amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline);\\n }\\n\\n // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****\\n function removeLiquidityETHSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountETH) {\\n (, amountETH) = removeLiquidity(\\n token,\\n WETH,\\n liquidity,\\n amountTokenMin,\\n amountETHMin,\\n address(this),\\n deadline\\n );\\n TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this)));\\n IWETH(WETH).withdraw(amountETH);\\n TransferHelper.safeTransferETH(to, amountETH);\\n }\\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountETH) {\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n amountETH = removeLiquidityETHSupportingFeeOnTransferTokens(\\n token, liquidity, amountTokenMin, amountETHMin, to, deadline\\n );\\n }\\n\\n // **** SWAP ****\\n // requires the initial amount to have already been sent to the first pair\\n function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual {\\n for (uint i; i < path.length - 1; i++) {\\n (address input, address output) = (path[i], path[i + 1]);\\n (address token0,) = UniswapV2Library.sortTokens(input, output);\\n uint amountOut = amounts[i + 1];\\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));\\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\\n IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output)).swap(\\n amount0Out, amount1Out, to, new bytes(0)\\n );\\n }\\n }\\n function swapExactTokensForTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, to);\\n }\\n function swapTokensForExactTokens(\\n uint amountOut,\\n uint amountInMax,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, to);\\n }\\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsOut(factory, msg.value, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n IWETH(WETH).deposit{value: amounts[0]}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\\n _swap(amounts, path, to);\\n }\\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, address(this));\\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\\n TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\\n }\\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, address(this));\\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\\n TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\\n }\\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= msg.value, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n IWETH(WETH).deposit{value: amounts[0]}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\\n _swap(amounts, path, to);\\n // refund dust eth, if any\\n if (msg.value > amounts[0]) TransferHelper.safeTransferETH(msg.sender, msg.value - amounts[0]);\\n }\\n\\n // **** SWAP (supporting fee-on-transfer tokens) ****\\n // requires the initial amount to have already been sent to the first pair\\n function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual {\\n for (uint i; i < path.length - 1; i++) {\\n (address input, address output) = (path[i], path[i + 1]);\\n (address token0,) = UniswapV2Library.sortTokens(input, output);\\n IUniswapV2Pair pair = IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output));\\n uint amountInput;\\n uint amountOutput;\\n { // scope to avoid stack too deep errors\\n (uint reserve0, uint reserve1,) = pair.getReserves();\\n (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\\n amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);\\n amountOutput = UniswapV2Library.getAmountOut(amountInput, reserveInput, reserveOutput);\\n }\\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));\\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\\n pair.swap(amount0Out, amount1Out, to, new bytes(0));\\n }\\n }\\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) {\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\\n );\\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\\n _swapSupportingFeeOnTransferTokens(path, to);\\n require(\\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\\n 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\\n );\\n }\\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n )\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n uint amountIn = msg.value;\\n IWETH(WETH).deposit{value: amountIn}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn));\\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\\n _swapSupportingFeeOnTransferTokens(path, to);\\n require(\\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\\n 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\\n );\\n }\\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n )\\n external\\n virtual\\n override\\n ensure(deadline)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\\n );\\n _swapSupportingFeeOnTransferTokens(path, address(this));\\n uint amountOut = IERC20(WETH).balanceOf(address(this));\\n require(amountOut >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n IWETH(WETH).withdraw(amountOut);\\n TransferHelper.safeTransferETH(to, amountOut);\\n }\\n\\n // **** LIBRARY FUNCTIONS ****\\n function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) {\\n return UniswapV2Library.quote(amountA, reserveA, reserveB);\\n }\\n\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)\\n public\\n pure\\n virtual\\n override\\n returns (uint amountOut)\\n {\\n return UniswapV2Library.getAmountOut(amountIn, reserveIn, reserveOut);\\n }\\n\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)\\n public\\n pure\\n virtual\\n override\\n returns (uint amountIn)\\n {\\n return UniswapV2Library.getAmountIn(amountOut, reserveIn, reserveOut);\\n }\\n\\n function getAmountsOut(uint amountIn, address[] memory path)\\n public\\n view\\n virtual\\n override\\n returns (uint[] memory amounts)\\n {\\n return UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n }\\n\\n function getAmountsIn(uint amountOut, address[] memory path)\\n public\\n view\\n virtual\\n override\\n returns (uint[] memory amounts)\\n {\\n return UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n }\\n}\\n\\n// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)\\n\\nlibrary SafeMath {\\n function add(uint x, uint y) internal pure returns (uint z) {\\n require((z = x + y) >= x, 'ds-math-add-overflow');\\n }\\n\\n function sub(uint x, uint y) internal pure returns (uint z) {\\n require((z = x - y) <= x, 'ds-math-sub-underflow');\\n }\\n\\n function mul(uint x, uint y) internal pure returns (uint z) {\\n require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');\\n }\\n}\\n\\nlibrary UniswapV2Library {\\n using SafeMath for uint;\\n\\n // returns sorted token addresses, used to handle return values from pairs sorted in this order\\n function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {\\n require(tokenA != tokenB, 'UniswapV2Library: IDENTICAL_ADDRESSES');\\n (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);\\n require(token0 != address(0), 'UniswapV2Library: ZERO_ADDRESS');\\n }\\n\\n // calculates the CREATE2 address for a pair without making any external calls\\n function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {\\n (address token0, address token1) = sortTokens(tokenA, tokenB);\\n pair = address(uint(keccak256(abi.encodePacked(\\n hex'ff',\\n factory,\\n keccak256(abi.encodePacked(token0, token1)),\\n hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // init code hash\\n ))));\\n }\\n\\n // fetches and sorts the reserves for a pair\\n function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {\\n (address token0,) = sortTokens(tokenA, tokenB);\\n (uint reserve0, uint reserve1,) = IUniswapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves();\\n (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\\n }\\n\\n // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset\\n function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {\\n require(amountA > 0, 'UniswapV2Library: INSUFFICIENT_AMOUNT');\\n require(reserveA > 0 && reserveB > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n amountB = amountA.mul(reserveB) / reserveA;\\n }\\n\\n // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {\\n require(amountIn > 0, 'UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT');\\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n uint amountInWithFee = amountIn.mul(997);\\n uint numerator = amountInWithFee.mul(reserveOut);\\n uint denominator = reserveIn.mul(1000).add(amountInWithFee);\\n amountOut = numerator / denominator;\\n }\\n\\n // given an output amount of an asset and pair reserves, returns a required input amount of the other asset\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {\\n require(amountOut > 0, 'UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT');\\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n uint numerator = reserveIn.mul(amountOut).mul(1000);\\n uint denominator = reserveOut.sub(amountOut).mul(997);\\n amountIn = (numerator / denominator).add(1);\\n }\\n\\n // performs chained getAmountOut calculations on any number of pairs\\n function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {\\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\\n amounts = new uint[](path.length);\\n amounts[0] = amountIn;\\n for (uint i; i < path.length - 1; i++) {\\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]);\\n amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);\\n }\\n }\\n\\n // performs chained getAmountIn calculations on any number of pairs\\n function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {\\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\\n amounts = new uint[](path.length);\\n amounts[amounts.length - 1] = amountOut;\\n for (uint i = path.length - 1; i > 0; i--) {\\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);\\n amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);\\n }\\n }\\n}\\n\\n// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false\\nlibrary TransferHelper {\\n function safeApprove(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('approve(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');\\n }\\n\\n function safeTransfer(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transfer(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');\\n }\\n\\n function safeTransferFrom(address token, address from, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');\\n }\\n\\n function safeTransferETH(address to, uint value) internal {\\n (bool success,) = to.call{value:value}(new bytes(0));\\n require(success, 'TransferHelper: ETH_TRANSFER_FAILED');\\n }\\n}\",\"keccak256\":\"0x1b5e0bbc6654c73ae262f53687cc1c2de95c813c0a3f98f74b1448a36a84d011\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "methods": {} + } + }, + "IUniswapV2Factory": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token0", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token1", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "pair", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "PairCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "allPairs", + "outputs": [ + { + "internalType": "address", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "allPairsLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + } + ], + "name": "createPair", + "outputs": [ + { + "internalType": "address", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "feeTo", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "feeToSetter", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + } + ], + "name": "getPair", + "outputs": [ + { + "internalType": "address", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "setFeeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "setFeeToSetter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "allPairs(uint256)": "1e3dd18b", + "allPairsLength()": "574f2ba3", + "createPair(address,address)": "c9c65396", + "feeTo()": "017e7e58", + "feeToSetter()": "094b7415", + "getPair(address,address)": "e6a43905", + "setFeeTo(address)": "f46901ed", + "setFeeToSetter(address)": "a2e74af6" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"createPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeToSetter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeToSetter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/Uniswap/UniswapV2Router02.sol\":\"IUniswapV2Factory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Uniswap/UniswapV2Router02.sol\":{\"content\":\"/**\\n *Submitted for verification at Etherscan.io on 2020-06-05\\n*/\\n\\npragma solidity =0.6.6;\\n\\ninterface IUniswapV2Factory {\\n event PairCreated(address indexed token0, address indexed token1, address pair, uint);\\n\\n function feeTo() external view returns (address);\\n function feeToSetter() external view returns (address);\\n\\n function getPair(address tokenA, address tokenB) external view returns (address pair);\\n function allPairs(uint) external view returns (address pair);\\n function allPairsLength() external view returns (uint);\\n\\n function createPair(address tokenA, address tokenB) external returns (address pair);\\n\\n function setFeeTo(address) external;\\n function setFeeToSetter(address) external;\\n}\\n\\ninterface IUniswapV2Pair {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external pure returns (string memory);\\n function symbol() external pure returns (string memory);\\n function decimals() external pure returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n function PERMIT_TYPEHASH() external pure returns (bytes32);\\n function nonces(address owner) external view returns (uint);\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\\n\\n event Mint(address indexed sender, uint amount0, uint amount1);\\n event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\\n event Swap(\\n address indexed sender,\\n uint amount0In,\\n uint amount1In,\\n uint amount0Out,\\n uint amount1Out,\\n address indexed to\\n );\\n event Sync(uint112 reserve0, uint112 reserve1);\\n\\n function MINIMUM_LIQUIDITY() external pure returns (uint);\\n function factory() external view returns (address);\\n function token0() external view returns (address);\\n function token1() external view returns (address);\\n function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\\n function price0CumulativeLast() external view returns (uint);\\n function price1CumulativeLast() external view returns (uint);\\n function kLast() external view returns (uint);\\n\\n function mint(address to) external returns (uint liquidity);\\n function burn(address to) external returns (uint amount0, uint amount1);\\n function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;\\n function skim(address to) external;\\n function sync() external;\\n\\n function initialize(address, address) external;\\n}\\n\\ninterface IUniswapV2Router01 {\\n function factory() external pure returns (address);\\n function WETH() external pure returns (address);\\n\\n function addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB, uint liquidity);\\n function addLiquidityETH(\\n address token,\\n uint amountTokenDesired,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external payable returns (uint amountToken, uint amountETH, uint liquidity);\\n function removeLiquidity(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETH(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountToken, uint amountETH);\\n function removeLiquidityWithPermit(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETHWithPermit(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountToken, uint amountETH);\\n function swapExactTokensForTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapTokensForExactTokens(\\n uint amountOut,\\n uint amountInMax,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n\\n function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);\\n function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);\\n function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);\\n}\\n\\ninterface IUniswapV2Router02 is IUniswapV2Router01 {\\n function removeLiquidityETHSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountETH);\\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountETH);\\n\\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external;\\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external payable;\\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external;\\n}\\n\\ninterface IERC20 {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external view returns (string memory);\\n function symbol() external view returns (string memory);\\n function decimals() external view returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n}\\n\\ninterface IWETH {\\n function deposit() external payable;\\n function transfer(address to, uint value) external returns (bool);\\n function withdraw(uint) external;\\n}\\n\\ncontract UniswapV2Router02 is IUniswapV2Router02 {\\n using SafeMath for uint;\\n\\n address public immutable override factory;\\n address public immutable override WETH;\\n\\n modifier ensure(uint deadline) {\\n require(deadline >= block.timestamp, 'UniswapV2Router: EXPIRED');\\n _;\\n }\\n\\n constructor(address _factory, address _WETH) public {\\n factory = _factory;\\n WETH = _WETH;\\n }\\n\\n receive() external payable {\\n assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract\\n }\\n\\n // **** ADD LIQUIDITY ****\\n function _addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin\\n ) internal virtual returns (uint amountA, uint amountB) {\\n // create the pair if it doesn't exist yet\\n if (IUniswapV2Factory(factory).getPair(tokenA, tokenB) == address(0)) {\\n IUniswapV2Factory(factory).createPair(tokenA, tokenB);\\n }\\n (uint reserveA, uint reserveB) = UniswapV2Library.getReserves(factory, tokenA, tokenB);\\n if (reserveA == 0 && reserveB == 0) {\\n (amountA, amountB) = (amountADesired, amountBDesired);\\n } else {\\n uint amountBOptimal = UniswapV2Library.quote(amountADesired, reserveA, reserveB);\\n if (amountBOptimal <= amountBDesired) {\\n require(amountBOptimal >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\\n (amountA, amountB) = (amountADesired, amountBOptimal);\\n } else {\\n uint amountAOptimal = UniswapV2Library.quote(amountBDesired, reserveB, reserveA);\\n assert(amountAOptimal <= amountADesired);\\n require(amountAOptimal >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\\n (amountA, amountB) = (amountAOptimal, amountBDesired);\\n }\\n }\\n }\\n function addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {\\n (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);\\n TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);\\n liquidity = IUniswapV2Pair(pair).mint(to);\\n }\\n function addLiquidityETH(\\n address token,\\n uint amountTokenDesired,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) {\\n (amountToken, amountETH) = _addLiquidity(\\n token,\\n WETH,\\n amountTokenDesired,\\n msg.value,\\n amountTokenMin,\\n amountETHMin\\n );\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);\\n IWETH(WETH).deposit{value: amountETH}();\\n assert(IWETH(WETH).transfer(pair, amountETH));\\n liquidity = IUniswapV2Pair(pair).mint(to);\\n // refund dust eth, if any\\n if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH);\\n }\\n\\n // **** REMOVE LIQUIDITY ****\\n function removeLiquidity(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n IUniswapV2Pair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair\\n (uint amount0, uint amount1) = IUniswapV2Pair(pair).burn(to);\\n (address token0,) = UniswapV2Library.sortTokens(tokenA, tokenB);\\n (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);\\n require(amountA >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\\n require(amountB >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\\n }\\n function removeLiquidityETH(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountToken, uint amountETH) {\\n (amountToken, amountETH) = removeLiquidity(\\n token,\\n WETH,\\n liquidity,\\n amountTokenMin,\\n amountETHMin,\\n address(this),\\n deadline\\n );\\n TransferHelper.safeTransfer(token, to, amountToken);\\n IWETH(WETH).withdraw(amountETH);\\n TransferHelper.safeTransferETH(to, amountETH);\\n }\\n function removeLiquidityWithPermit(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountA, uint amountB) {\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);\\n }\\n function removeLiquidityETHWithPermit(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountToken, uint amountETH) {\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n (amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline);\\n }\\n\\n // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****\\n function removeLiquidityETHSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountETH) {\\n (, amountETH) = removeLiquidity(\\n token,\\n WETH,\\n liquidity,\\n amountTokenMin,\\n amountETHMin,\\n address(this),\\n deadline\\n );\\n TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this)));\\n IWETH(WETH).withdraw(amountETH);\\n TransferHelper.safeTransferETH(to, amountETH);\\n }\\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountETH) {\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n amountETH = removeLiquidityETHSupportingFeeOnTransferTokens(\\n token, liquidity, amountTokenMin, amountETHMin, to, deadline\\n );\\n }\\n\\n // **** SWAP ****\\n // requires the initial amount to have already been sent to the first pair\\n function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual {\\n for (uint i; i < path.length - 1; i++) {\\n (address input, address output) = (path[i], path[i + 1]);\\n (address token0,) = UniswapV2Library.sortTokens(input, output);\\n uint amountOut = amounts[i + 1];\\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));\\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\\n IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output)).swap(\\n amount0Out, amount1Out, to, new bytes(0)\\n );\\n }\\n }\\n function swapExactTokensForTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, to);\\n }\\n function swapTokensForExactTokens(\\n uint amountOut,\\n uint amountInMax,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, to);\\n }\\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsOut(factory, msg.value, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n IWETH(WETH).deposit{value: amounts[0]}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\\n _swap(amounts, path, to);\\n }\\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, address(this));\\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\\n TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\\n }\\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, address(this));\\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\\n TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\\n }\\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= msg.value, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n IWETH(WETH).deposit{value: amounts[0]}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\\n _swap(amounts, path, to);\\n // refund dust eth, if any\\n if (msg.value > amounts[0]) TransferHelper.safeTransferETH(msg.sender, msg.value - amounts[0]);\\n }\\n\\n // **** SWAP (supporting fee-on-transfer tokens) ****\\n // requires the initial amount to have already been sent to the first pair\\n function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual {\\n for (uint i; i < path.length - 1; i++) {\\n (address input, address output) = (path[i], path[i + 1]);\\n (address token0,) = UniswapV2Library.sortTokens(input, output);\\n IUniswapV2Pair pair = IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output));\\n uint amountInput;\\n uint amountOutput;\\n { // scope to avoid stack too deep errors\\n (uint reserve0, uint reserve1,) = pair.getReserves();\\n (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\\n amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);\\n amountOutput = UniswapV2Library.getAmountOut(amountInput, reserveInput, reserveOutput);\\n }\\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));\\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\\n pair.swap(amount0Out, amount1Out, to, new bytes(0));\\n }\\n }\\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) {\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\\n );\\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\\n _swapSupportingFeeOnTransferTokens(path, to);\\n require(\\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\\n 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\\n );\\n }\\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n )\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n uint amountIn = msg.value;\\n IWETH(WETH).deposit{value: amountIn}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn));\\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\\n _swapSupportingFeeOnTransferTokens(path, to);\\n require(\\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\\n 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\\n );\\n }\\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n )\\n external\\n virtual\\n override\\n ensure(deadline)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\\n );\\n _swapSupportingFeeOnTransferTokens(path, address(this));\\n uint amountOut = IERC20(WETH).balanceOf(address(this));\\n require(amountOut >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n IWETH(WETH).withdraw(amountOut);\\n TransferHelper.safeTransferETH(to, amountOut);\\n }\\n\\n // **** LIBRARY FUNCTIONS ****\\n function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) {\\n return UniswapV2Library.quote(amountA, reserveA, reserveB);\\n }\\n\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)\\n public\\n pure\\n virtual\\n override\\n returns (uint amountOut)\\n {\\n return UniswapV2Library.getAmountOut(amountIn, reserveIn, reserveOut);\\n }\\n\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)\\n public\\n pure\\n virtual\\n override\\n returns (uint amountIn)\\n {\\n return UniswapV2Library.getAmountIn(amountOut, reserveIn, reserveOut);\\n }\\n\\n function getAmountsOut(uint amountIn, address[] memory path)\\n public\\n view\\n virtual\\n override\\n returns (uint[] memory amounts)\\n {\\n return UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n }\\n\\n function getAmountsIn(uint amountOut, address[] memory path)\\n public\\n view\\n virtual\\n override\\n returns (uint[] memory amounts)\\n {\\n return UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n }\\n}\\n\\n// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)\\n\\nlibrary SafeMath {\\n function add(uint x, uint y) internal pure returns (uint z) {\\n require((z = x + y) >= x, 'ds-math-add-overflow');\\n }\\n\\n function sub(uint x, uint y) internal pure returns (uint z) {\\n require((z = x - y) <= x, 'ds-math-sub-underflow');\\n }\\n\\n function mul(uint x, uint y) internal pure returns (uint z) {\\n require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');\\n }\\n}\\n\\nlibrary UniswapV2Library {\\n using SafeMath for uint;\\n\\n // returns sorted token addresses, used to handle return values from pairs sorted in this order\\n function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {\\n require(tokenA != tokenB, 'UniswapV2Library: IDENTICAL_ADDRESSES');\\n (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);\\n require(token0 != address(0), 'UniswapV2Library: ZERO_ADDRESS');\\n }\\n\\n // calculates the CREATE2 address for a pair without making any external calls\\n function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {\\n (address token0, address token1) = sortTokens(tokenA, tokenB);\\n pair = address(uint(keccak256(abi.encodePacked(\\n hex'ff',\\n factory,\\n keccak256(abi.encodePacked(token0, token1)),\\n hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // init code hash\\n ))));\\n }\\n\\n // fetches and sorts the reserves for a pair\\n function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {\\n (address token0,) = sortTokens(tokenA, tokenB);\\n (uint reserve0, uint reserve1,) = IUniswapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves();\\n (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\\n }\\n\\n // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset\\n function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {\\n require(amountA > 0, 'UniswapV2Library: INSUFFICIENT_AMOUNT');\\n require(reserveA > 0 && reserveB > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n amountB = amountA.mul(reserveB) / reserveA;\\n }\\n\\n // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {\\n require(amountIn > 0, 'UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT');\\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n uint amountInWithFee = amountIn.mul(997);\\n uint numerator = amountInWithFee.mul(reserveOut);\\n uint denominator = reserveIn.mul(1000).add(amountInWithFee);\\n amountOut = numerator / denominator;\\n }\\n\\n // given an output amount of an asset and pair reserves, returns a required input amount of the other asset\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {\\n require(amountOut > 0, 'UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT');\\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n uint numerator = reserveIn.mul(amountOut).mul(1000);\\n uint denominator = reserveOut.sub(amountOut).mul(997);\\n amountIn = (numerator / denominator).add(1);\\n }\\n\\n // performs chained getAmountOut calculations on any number of pairs\\n function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {\\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\\n amounts = new uint[](path.length);\\n amounts[0] = amountIn;\\n for (uint i; i < path.length - 1; i++) {\\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]);\\n amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);\\n }\\n }\\n\\n // performs chained getAmountIn calculations on any number of pairs\\n function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {\\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\\n amounts = new uint[](path.length);\\n amounts[amounts.length - 1] = amountOut;\\n for (uint i = path.length - 1; i > 0; i--) {\\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);\\n amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);\\n }\\n }\\n}\\n\\n// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false\\nlibrary TransferHelper {\\n function safeApprove(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('approve(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');\\n }\\n\\n function safeTransfer(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transfer(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');\\n }\\n\\n function safeTransferFrom(address token, address from, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');\\n }\\n\\n function safeTransferETH(address to, uint value) internal {\\n (bool success,) = to.call{value:value}(new bytes(0));\\n require(success, 'TransferHelper: ETH_TRANSFER_FAILED');\\n }\\n}\",\"keccak256\":\"0x1b5e0bbc6654c73ae262f53687cc1c2de95c813c0a3f98f74b1448a36a84d011\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "methods": {} + } + }, + "IUniswapV2Pair": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Burn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "Mint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0In", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1In", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0Out", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1Out", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Swap", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint112", + "name": "reserve0", + "type": "uint112" + }, + { + "indexed": false, + "internalType": "uint112", + "name": "reserve1", + "type": "uint112" + } + ], + "name": "Sync", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MINIMUM_LIQUIDITY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "burn", + "outputs": [ + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getReserves", + "outputs": [ + { + "internalType": "uint112", + "name": "reserve0", + "type": "uint112" + }, + { + "internalType": "uint112", + "name": "reserve1", + "type": "uint112" + }, + { + "internalType": "uint32", + "name": "blockTimestampLast", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "kLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "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" + }, + { + "inputs": [], + "name": "price0CumulativeLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "price1CumulativeLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "skim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount0Out", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Out", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "swap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "sync", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "token0", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token1", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "DOMAIN_SEPARATOR()": "3644e515", + "MINIMUM_LIQUIDITY()": "ba9a7a56", + "PERMIT_TYPEHASH()": "30adf81f", + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "burn(address)": "89afcb44", + "decimals()": "313ce567", + "factory()": "c45a0155", + "getReserves()": "0902f1ac", + "initialize(address,address)": "485cc955", + "kLast()": "7464fc3d", + "mint(address)": "6a627842", + "name()": "06fdde03", + "nonces(address)": "7ecebe00", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf", + "price0CumulativeLast()": "5909c0d5", + "price1CumulativeLast()": "5a3d5493", + "skim(address)": "bc25cf77", + "swap(uint256,uint256,address,bytes)": "022c0d9f", + "symbol()": "95d89b41", + "sync()": "fff6cae9", + "token0()": "0dfe1681", + "token1()": "d21220a7", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"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\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/Uniswap/UniswapV2Router02.sol\":\"IUniswapV2Pair\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Uniswap/UniswapV2Router02.sol\":{\"content\":\"/**\\n *Submitted for verification at Etherscan.io on 2020-06-05\\n*/\\n\\npragma solidity =0.6.6;\\n\\ninterface IUniswapV2Factory {\\n event PairCreated(address indexed token0, address indexed token1, address pair, uint);\\n\\n function feeTo() external view returns (address);\\n function feeToSetter() external view returns (address);\\n\\n function getPair(address tokenA, address tokenB) external view returns (address pair);\\n function allPairs(uint) external view returns (address pair);\\n function allPairsLength() external view returns (uint);\\n\\n function createPair(address tokenA, address tokenB) external returns (address pair);\\n\\n function setFeeTo(address) external;\\n function setFeeToSetter(address) external;\\n}\\n\\ninterface IUniswapV2Pair {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external pure returns (string memory);\\n function symbol() external pure returns (string memory);\\n function decimals() external pure returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n function PERMIT_TYPEHASH() external pure returns (bytes32);\\n function nonces(address owner) external view returns (uint);\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\\n\\n event Mint(address indexed sender, uint amount0, uint amount1);\\n event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\\n event Swap(\\n address indexed sender,\\n uint amount0In,\\n uint amount1In,\\n uint amount0Out,\\n uint amount1Out,\\n address indexed to\\n );\\n event Sync(uint112 reserve0, uint112 reserve1);\\n\\n function MINIMUM_LIQUIDITY() external pure returns (uint);\\n function factory() external view returns (address);\\n function token0() external view returns (address);\\n function token1() external view returns (address);\\n function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\\n function price0CumulativeLast() external view returns (uint);\\n function price1CumulativeLast() external view returns (uint);\\n function kLast() external view returns (uint);\\n\\n function mint(address to) external returns (uint liquidity);\\n function burn(address to) external returns (uint amount0, uint amount1);\\n function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;\\n function skim(address to) external;\\n function sync() external;\\n\\n function initialize(address, address) external;\\n}\\n\\ninterface IUniswapV2Router01 {\\n function factory() external pure returns (address);\\n function WETH() external pure returns (address);\\n\\n function addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB, uint liquidity);\\n function addLiquidityETH(\\n address token,\\n uint amountTokenDesired,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external payable returns (uint amountToken, uint amountETH, uint liquidity);\\n function removeLiquidity(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETH(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountToken, uint amountETH);\\n function removeLiquidityWithPermit(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETHWithPermit(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountToken, uint amountETH);\\n function swapExactTokensForTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapTokensForExactTokens(\\n uint amountOut,\\n uint amountInMax,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n\\n function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);\\n function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);\\n function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);\\n}\\n\\ninterface IUniswapV2Router02 is IUniswapV2Router01 {\\n function removeLiquidityETHSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountETH);\\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountETH);\\n\\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external;\\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external payable;\\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external;\\n}\\n\\ninterface IERC20 {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external view returns (string memory);\\n function symbol() external view returns (string memory);\\n function decimals() external view returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n}\\n\\ninterface IWETH {\\n function deposit() external payable;\\n function transfer(address to, uint value) external returns (bool);\\n function withdraw(uint) external;\\n}\\n\\ncontract UniswapV2Router02 is IUniswapV2Router02 {\\n using SafeMath for uint;\\n\\n address public immutable override factory;\\n address public immutable override WETH;\\n\\n modifier ensure(uint deadline) {\\n require(deadline >= block.timestamp, 'UniswapV2Router: EXPIRED');\\n _;\\n }\\n\\n constructor(address _factory, address _WETH) public {\\n factory = _factory;\\n WETH = _WETH;\\n }\\n\\n receive() external payable {\\n assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract\\n }\\n\\n // **** ADD LIQUIDITY ****\\n function _addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin\\n ) internal virtual returns (uint amountA, uint amountB) {\\n // create the pair if it doesn't exist yet\\n if (IUniswapV2Factory(factory).getPair(tokenA, tokenB) == address(0)) {\\n IUniswapV2Factory(factory).createPair(tokenA, tokenB);\\n }\\n (uint reserveA, uint reserveB) = UniswapV2Library.getReserves(factory, tokenA, tokenB);\\n if (reserveA == 0 && reserveB == 0) {\\n (amountA, amountB) = (amountADesired, amountBDesired);\\n } else {\\n uint amountBOptimal = UniswapV2Library.quote(amountADesired, reserveA, reserveB);\\n if (amountBOptimal <= amountBDesired) {\\n require(amountBOptimal >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\\n (amountA, amountB) = (amountADesired, amountBOptimal);\\n } else {\\n uint amountAOptimal = UniswapV2Library.quote(amountBDesired, reserveB, reserveA);\\n assert(amountAOptimal <= amountADesired);\\n require(amountAOptimal >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\\n (amountA, amountB) = (amountAOptimal, amountBDesired);\\n }\\n }\\n }\\n function addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {\\n (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);\\n TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);\\n liquidity = IUniswapV2Pair(pair).mint(to);\\n }\\n function addLiquidityETH(\\n address token,\\n uint amountTokenDesired,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) {\\n (amountToken, amountETH) = _addLiquidity(\\n token,\\n WETH,\\n amountTokenDesired,\\n msg.value,\\n amountTokenMin,\\n amountETHMin\\n );\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);\\n IWETH(WETH).deposit{value: amountETH}();\\n assert(IWETH(WETH).transfer(pair, amountETH));\\n liquidity = IUniswapV2Pair(pair).mint(to);\\n // refund dust eth, if any\\n if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH);\\n }\\n\\n // **** REMOVE LIQUIDITY ****\\n function removeLiquidity(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n IUniswapV2Pair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair\\n (uint amount0, uint amount1) = IUniswapV2Pair(pair).burn(to);\\n (address token0,) = UniswapV2Library.sortTokens(tokenA, tokenB);\\n (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);\\n require(amountA >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\\n require(amountB >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\\n }\\n function removeLiquidityETH(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountToken, uint amountETH) {\\n (amountToken, amountETH) = removeLiquidity(\\n token,\\n WETH,\\n liquidity,\\n amountTokenMin,\\n amountETHMin,\\n address(this),\\n deadline\\n );\\n TransferHelper.safeTransfer(token, to, amountToken);\\n IWETH(WETH).withdraw(amountETH);\\n TransferHelper.safeTransferETH(to, amountETH);\\n }\\n function removeLiquidityWithPermit(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountA, uint amountB) {\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);\\n }\\n function removeLiquidityETHWithPermit(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountToken, uint amountETH) {\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n (amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline);\\n }\\n\\n // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****\\n function removeLiquidityETHSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountETH) {\\n (, amountETH) = removeLiquidity(\\n token,\\n WETH,\\n liquidity,\\n amountTokenMin,\\n amountETHMin,\\n address(this),\\n deadline\\n );\\n TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this)));\\n IWETH(WETH).withdraw(amountETH);\\n TransferHelper.safeTransferETH(to, amountETH);\\n }\\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountETH) {\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n amountETH = removeLiquidityETHSupportingFeeOnTransferTokens(\\n token, liquidity, amountTokenMin, amountETHMin, to, deadline\\n );\\n }\\n\\n // **** SWAP ****\\n // requires the initial amount to have already been sent to the first pair\\n function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual {\\n for (uint i; i < path.length - 1; i++) {\\n (address input, address output) = (path[i], path[i + 1]);\\n (address token0,) = UniswapV2Library.sortTokens(input, output);\\n uint amountOut = amounts[i + 1];\\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));\\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\\n IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output)).swap(\\n amount0Out, amount1Out, to, new bytes(0)\\n );\\n }\\n }\\n function swapExactTokensForTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, to);\\n }\\n function swapTokensForExactTokens(\\n uint amountOut,\\n uint amountInMax,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, to);\\n }\\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsOut(factory, msg.value, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n IWETH(WETH).deposit{value: amounts[0]}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\\n _swap(amounts, path, to);\\n }\\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, address(this));\\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\\n TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\\n }\\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, address(this));\\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\\n TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\\n }\\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= msg.value, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n IWETH(WETH).deposit{value: amounts[0]}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\\n _swap(amounts, path, to);\\n // refund dust eth, if any\\n if (msg.value > amounts[0]) TransferHelper.safeTransferETH(msg.sender, msg.value - amounts[0]);\\n }\\n\\n // **** SWAP (supporting fee-on-transfer tokens) ****\\n // requires the initial amount to have already been sent to the first pair\\n function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual {\\n for (uint i; i < path.length - 1; i++) {\\n (address input, address output) = (path[i], path[i + 1]);\\n (address token0,) = UniswapV2Library.sortTokens(input, output);\\n IUniswapV2Pair pair = IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output));\\n uint amountInput;\\n uint amountOutput;\\n { // scope to avoid stack too deep errors\\n (uint reserve0, uint reserve1,) = pair.getReserves();\\n (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\\n amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);\\n amountOutput = UniswapV2Library.getAmountOut(amountInput, reserveInput, reserveOutput);\\n }\\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));\\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\\n pair.swap(amount0Out, amount1Out, to, new bytes(0));\\n }\\n }\\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) {\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\\n );\\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\\n _swapSupportingFeeOnTransferTokens(path, to);\\n require(\\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\\n 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\\n );\\n }\\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n )\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n uint amountIn = msg.value;\\n IWETH(WETH).deposit{value: amountIn}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn));\\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\\n _swapSupportingFeeOnTransferTokens(path, to);\\n require(\\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\\n 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\\n );\\n }\\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n )\\n external\\n virtual\\n override\\n ensure(deadline)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\\n );\\n _swapSupportingFeeOnTransferTokens(path, address(this));\\n uint amountOut = IERC20(WETH).balanceOf(address(this));\\n require(amountOut >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n IWETH(WETH).withdraw(amountOut);\\n TransferHelper.safeTransferETH(to, amountOut);\\n }\\n\\n // **** LIBRARY FUNCTIONS ****\\n function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) {\\n return UniswapV2Library.quote(amountA, reserveA, reserveB);\\n }\\n\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)\\n public\\n pure\\n virtual\\n override\\n returns (uint amountOut)\\n {\\n return UniswapV2Library.getAmountOut(amountIn, reserveIn, reserveOut);\\n }\\n\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)\\n public\\n pure\\n virtual\\n override\\n returns (uint amountIn)\\n {\\n return UniswapV2Library.getAmountIn(amountOut, reserveIn, reserveOut);\\n }\\n\\n function getAmountsOut(uint amountIn, address[] memory path)\\n public\\n view\\n virtual\\n override\\n returns (uint[] memory amounts)\\n {\\n return UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n }\\n\\n function getAmountsIn(uint amountOut, address[] memory path)\\n public\\n view\\n virtual\\n override\\n returns (uint[] memory amounts)\\n {\\n return UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n }\\n}\\n\\n// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)\\n\\nlibrary SafeMath {\\n function add(uint x, uint y) internal pure returns (uint z) {\\n require((z = x + y) >= x, 'ds-math-add-overflow');\\n }\\n\\n function sub(uint x, uint y) internal pure returns (uint z) {\\n require((z = x - y) <= x, 'ds-math-sub-underflow');\\n }\\n\\n function mul(uint x, uint y) internal pure returns (uint z) {\\n require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');\\n }\\n}\\n\\nlibrary UniswapV2Library {\\n using SafeMath for uint;\\n\\n // returns sorted token addresses, used to handle return values from pairs sorted in this order\\n function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {\\n require(tokenA != tokenB, 'UniswapV2Library: IDENTICAL_ADDRESSES');\\n (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);\\n require(token0 != address(0), 'UniswapV2Library: ZERO_ADDRESS');\\n }\\n\\n // calculates the CREATE2 address for a pair without making any external calls\\n function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {\\n (address token0, address token1) = sortTokens(tokenA, tokenB);\\n pair = address(uint(keccak256(abi.encodePacked(\\n hex'ff',\\n factory,\\n keccak256(abi.encodePacked(token0, token1)),\\n hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // init code hash\\n ))));\\n }\\n\\n // fetches and sorts the reserves for a pair\\n function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {\\n (address token0,) = sortTokens(tokenA, tokenB);\\n (uint reserve0, uint reserve1,) = IUniswapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves();\\n (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\\n }\\n\\n // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset\\n function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {\\n require(amountA > 0, 'UniswapV2Library: INSUFFICIENT_AMOUNT');\\n require(reserveA > 0 && reserveB > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n amountB = amountA.mul(reserveB) / reserveA;\\n }\\n\\n // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {\\n require(amountIn > 0, 'UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT');\\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n uint amountInWithFee = amountIn.mul(997);\\n uint numerator = amountInWithFee.mul(reserveOut);\\n uint denominator = reserveIn.mul(1000).add(amountInWithFee);\\n amountOut = numerator / denominator;\\n }\\n\\n // given an output amount of an asset and pair reserves, returns a required input amount of the other asset\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {\\n require(amountOut > 0, 'UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT');\\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n uint numerator = reserveIn.mul(amountOut).mul(1000);\\n uint denominator = reserveOut.sub(amountOut).mul(997);\\n amountIn = (numerator / denominator).add(1);\\n }\\n\\n // performs chained getAmountOut calculations on any number of pairs\\n function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {\\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\\n amounts = new uint[](path.length);\\n amounts[0] = amountIn;\\n for (uint i; i < path.length - 1; i++) {\\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]);\\n amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);\\n }\\n }\\n\\n // performs chained getAmountIn calculations on any number of pairs\\n function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {\\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\\n amounts = new uint[](path.length);\\n amounts[amounts.length - 1] = amountOut;\\n for (uint i = path.length - 1; i > 0; i--) {\\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);\\n amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);\\n }\\n }\\n}\\n\\n// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false\\nlibrary TransferHelper {\\n function safeApprove(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('approve(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');\\n }\\n\\n function safeTransfer(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transfer(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');\\n }\\n\\n function safeTransferFrom(address token, address from, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');\\n }\\n\\n function safeTransferETH(address to, uint value) internal {\\n (bool success,) = to.call{value:value}(new bytes(0));\\n require(success, 'TransferHelper: ETH_TRANSFER_FAILED');\\n }\\n}\",\"keccak256\":\"0x1b5e0bbc6654c73ae262f53687cc1c2de95c813c0a3f98f74b1448a36a84d011\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "methods": {} + } + }, + "IUniswapV2Router01": { + "abi": [ + { + "inputs": [], + "name": "WETH", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountTokenDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveB", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapETHForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "WETH()": "ad5c4648", + "addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)": "e8e33700", + "addLiquidityETH(address,uint256,uint256,uint256,address,uint256)": "f305d719", + "factory()": "c45a0155", + "getAmountIn(uint256,uint256,uint256)": "85f8c259", + "getAmountOut(uint256,uint256,uint256)": "054d50d4", + "getAmountsIn(uint256,address[])": "1f00ca74", + "getAmountsOut(uint256,address[])": "d06ca61f", + "quote(uint256,uint256,uint256)": "ad615dec", + "removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)": "baa2abde", + "removeLiquidityETH(address,uint256,uint256,uint256,address,uint256)": "02751cec", + "removeLiquidityETHWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "ded9382a", + "removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "2195995c", + "swapETHForExactTokens(uint256,address[],address,uint256)": "fb3bdb41", + "swapExactETHForTokens(uint256,address[],address,uint256)": "7ff36ab5", + "swapExactTokensForETH(uint256,uint256,address[],address,uint256)": "18cbafe5", + "swapExactTokensForTokens(uint256,uint256,address[],address,uint256)": "38ed1739", + "swapTokensForExactETH(uint256,uint256,address[],address,uint256)": "4a25d94a", + "swapTokensForExactTokens(uint256,uint256,address[],address,uint256)": "8803dbee" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/Uniswap/UniswapV2Router02.sol\":\"IUniswapV2Router01\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Uniswap/UniswapV2Router02.sol\":{\"content\":\"/**\\n *Submitted for verification at Etherscan.io on 2020-06-05\\n*/\\n\\npragma solidity =0.6.6;\\n\\ninterface IUniswapV2Factory {\\n event PairCreated(address indexed token0, address indexed token1, address pair, uint);\\n\\n function feeTo() external view returns (address);\\n function feeToSetter() external view returns (address);\\n\\n function getPair(address tokenA, address tokenB) external view returns (address pair);\\n function allPairs(uint) external view returns (address pair);\\n function allPairsLength() external view returns (uint);\\n\\n function createPair(address tokenA, address tokenB) external returns (address pair);\\n\\n function setFeeTo(address) external;\\n function setFeeToSetter(address) external;\\n}\\n\\ninterface IUniswapV2Pair {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external pure returns (string memory);\\n function symbol() external pure returns (string memory);\\n function decimals() external pure returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n function PERMIT_TYPEHASH() external pure returns (bytes32);\\n function nonces(address owner) external view returns (uint);\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\\n\\n event Mint(address indexed sender, uint amount0, uint amount1);\\n event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\\n event Swap(\\n address indexed sender,\\n uint amount0In,\\n uint amount1In,\\n uint amount0Out,\\n uint amount1Out,\\n address indexed to\\n );\\n event Sync(uint112 reserve0, uint112 reserve1);\\n\\n function MINIMUM_LIQUIDITY() external pure returns (uint);\\n function factory() external view returns (address);\\n function token0() external view returns (address);\\n function token1() external view returns (address);\\n function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\\n function price0CumulativeLast() external view returns (uint);\\n function price1CumulativeLast() external view returns (uint);\\n function kLast() external view returns (uint);\\n\\n function mint(address to) external returns (uint liquidity);\\n function burn(address to) external returns (uint amount0, uint amount1);\\n function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;\\n function skim(address to) external;\\n function sync() external;\\n\\n function initialize(address, address) external;\\n}\\n\\ninterface IUniswapV2Router01 {\\n function factory() external pure returns (address);\\n function WETH() external pure returns (address);\\n\\n function addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB, uint liquidity);\\n function addLiquidityETH(\\n address token,\\n uint amountTokenDesired,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external payable returns (uint amountToken, uint amountETH, uint liquidity);\\n function removeLiquidity(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETH(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountToken, uint amountETH);\\n function removeLiquidityWithPermit(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETHWithPermit(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountToken, uint amountETH);\\n function swapExactTokensForTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapTokensForExactTokens(\\n uint amountOut,\\n uint amountInMax,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n\\n function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);\\n function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);\\n function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);\\n}\\n\\ninterface IUniswapV2Router02 is IUniswapV2Router01 {\\n function removeLiquidityETHSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountETH);\\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountETH);\\n\\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external;\\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external payable;\\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external;\\n}\\n\\ninterface IERC20 {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external view returns (string memory);\\n function symbol() external view returns (string memory);\\n function decimals() external view returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n}\\n\\ninterface IWETH {\\n function deposit() external payable;\\n function transfer(address to, uint value) external returns (bool);\\n function withdraw(uint) external;\\n}\\n\\ncontract UniswapV2Router02 is IUniswapV2Router02 {\\n using SafeMath for uint;\\n\\n address public immutable override factory;\\n address public immutable override WETH;\\n\\n modifier ensure(uint deadline) {\\n require(deadline >= block.timestamp, 'UniswapV2Router: EXPIRED');\\n _;\\n }\\n\\n constructor(address _factory, address _WETH) public {\\n factory = _factory;\\n WETH = _WETH;\\n }\\n\\n receive() external payable {\\n assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract\\n }\\n\\n // **** ADD LIQUIDITY ****\\n function _addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin\\n ) internal virtual returns (uint amountA, uint amountB) {\\n // create the pair if it doesn't exist yet\\n if (IUniswapV2Factory(factory).getPair(tokenA, tokenB) == address(0)) {\\n IUniswapV2Factory(factory).createPair(tokenA, tokenB);\\n }\\n (uint reserveA, uint reserveB) = UniswapV2Library.getReserves(factory, tokenA, tokenB);\\n if (reserveA == 0 && reserveB == 0) {\\n (amountA, amountB) = (amountADesired, amountBDesired);\\n } else {\\n uint amountBOptimal = UniswapV2Library.quote(amountADesired, reserveA, reserveB);\\n if (amountBOptimal <= amountBDesired) {\\n require(amountBOptimal >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\\n (amountA, amountB) = (amountADesired, amountBOptimal);\\n } else {\\n uint amountAOptimal = UniswapV2Library.quote(amountBDesired, reserveB, reserveA);\\n assert(amountAOptimal <= amountADesired);\\n require(amountAOptimal >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\\n (amountA, amountB) = (amountAOptimal, amountBDesired);\\n }\\n }\\n }\\n function addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {\\n (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);\\n TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);\\n liquidity = IUniswapV2Pair(pair).mint(to);\\n }\\n function addLiquidityETH(\\n address token,\\n uint amountTokenDesired,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) {\\n (amountToken, amountETH) = _addLiquidity(\\n token,\\n WETH,\\n amountTokenDesired,\\n msg.value,\\n amountTokenMin,\\n amountETHMin\\n );\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);\\n IWETH(WETH).deposit{value: amountETH}();\\n assert(IWETH(WETH).transfer(pair, amountETH));\\n liquidity = IUniswapV2Pair(pair).mint(to);\\n // refund dust eth, if any\\n if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH);\\n }\\n\\n // **** REMOVE LIQUIDITY ****\\n function removeLiquidity(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n IUniswapV2Pair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair\\n (uint amount0, uint amount1) = IUniswapV2Pair(pair).burn(to);\\n (address token0,) = UniswapV2Library.sortTokens(tokenA, tokenB);\\n (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);\\n require(amountA >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\\n require(amountB >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\\n }\\n function removeLiquidityETH(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountToken, uint amountETH) {\\n (amountToken, amountETH) = removeLiquidity(\\n token,\\n WETH,\\n liquidity,\\n amountTokenMin,\\n amountETHMin,\\n address(this),\\n deadline\\n );\\n TransferHelper.safeTransfer(token, to, amountToken);\\n IWETH(WETH).withdraw(amountETH);\\n TransferHelper.safeTransferETH(to, amountETH);\\n }\\n function removeLiquidityWithPermit(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountA, uint amountB) {\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);\\n }\\n function removeLiquidityETHWithPermit(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountToken, uint amountETH) {\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n (amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline);\\n }\\n\\n // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****\\n function removeLiquidityETHSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountETH) {\\n (, amountETH) = removeLiquidity(\\n token,\\n WETH,\\n liquidity,\\n amountTokenMin,\\n amountETHMin,\\n address(this),\\n deadline\\n );\\n TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this)));\\n IWETH(WETH).withdraw(amountETH);\\n TransferHelper.safeTransferETH(to, amountETH);\\n }\\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountETH) {\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n amountETH = removeLiquidityETHSupportingFeeOnTransferTokens(\\n token, liquidity, amountTokenMin, amountETHMin, to, deadline\\n );\\n }\\n\\n // **** SWAP ****\\n // requires the initial amount to have already been sent to the first pair\\n function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual {\\n for (uint i; i < path.length - 1; i++) {\\n (address input, address output) = (path[i], path[i + 1]);\\n (address token0,) = UniswapV2Library.sortTokens(input, output);\\n uint amountOut = amounts[i + 1];\\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));\\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\\n IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output)).swap(\\n amount0Out, amount1Out, to, new bytes(0)\\n );\\n }\\n }\\n function swapExactTokensForTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, to);\\n }\\n function swapTokensForExactTokens(\\n uint amountOut,\\n uint amountInMax,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, to);\\n }\\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsOut(factory, msg.value, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n IWETH(WETH).deposit{value: amounts[0]}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\\n _swap(amounts, path, to);\\n }\\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, address(this));\\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\\n TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\\n }\\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, address(this));\\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\\n TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\\n }\\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= msg.value, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n IWETH(WETH).deposit{value: amounts[0]}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\\n _swap(amounts, path, to);\\n // refund dust eth, if any\\n if (msg.value > amounts[0]) TransferHelper.safeTransferETH(msg.sender, msg.value - amounts[0]);\\n }\\n\\n // **** SWAP (supporting fee-on-transfer tokens) ****\\n // requires the initial amount to have already been sent to the first pair\\n function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual {\\n for (uint i; i < path.length - 1; i++) {\\n (address input, address output) = (path[i], path[i + 1]);\\n (address token0,) = UniswapV2Library.sortTokens(input, output);\\n IUniswapV2Pair pair = IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output));\\n uint amountInput;\\n uint amountOutput;\\n { // scope to avoid stack too deep errors\\n (uint reserve0, uint reserve1,) = pair.getReserves();\\n (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\\n amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);\\n amountOutput = UniswapV2Library.getAmountOut(amountInput, reserveInput, reserveOutput);\\n }\\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));\\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\\n pair.swap(amount0Out, amount1Out, to, new bytes(0));\\n }\\n }\\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) {\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\\n );\\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\\n _swapSupportingFeeOnTransferTokens(path, to);\\n require(\\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\\n 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\\n );\\n }\\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n )\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n uint amountIn = msg.value;\\n IWETH(WETH).deposit{value: amountIn}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn));\\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\\n _swapSupportingFeeOnTransferTokens(path, to);\\n require(\\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\\n 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\\n );\\n }\\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n )\\n external\\n virtual\\n override\\n ensure(deadline)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\\n );\\n _swapSupportingFeeOnTransferTokens(path, address(this));\\n uint amountOut = IERC20(WETH).balanceOf(address(this));\\n require(amountOut >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n IWETH(WETH).withdraw(amountOut);\\n TransferHelper.safeTransferETH(to, amountOut);\\n }\\n\\n // **** LIBRARY FUNCTIONS ****\\n function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) {\\n return UniswapV2Library.quote(amountA, reserveA, reserveB);\\n }\\n\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)\\n public\\n pure\\n virtual\\n override\\n returns (uint amountOut)\\n {\\n return UniswapV2Library.getAmountOut(amountIn, reserveIn, reserveOut);\\n }\\n\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)\\n public\\n pure\\n virtual\\n override\\n returns (uint amountIn)\\n {\\n return UniswapV2Library.getAmountIn(amountOut, reserveIn, reserveOut);\\n }\\n\\n function getAmountsOut(uint amountIn, address[] memory path)\\n public\\n view\\n virtual\\n override\\n returns (uint[] memory amounts)\\n {\\n return UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n }\\n\\n function getAmountsIn(uint amountOut, address[] memory path)\\n public\\n view\\n virtual\\n override\\n returns (uint[] memory amounts)\\n {\\n return UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n }\\n}\\n\\n// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)\\n\\nlibrary SafeMath {\\n function add(uint x, uint y) internal pure returns (uint z) {\\n require((z = x + y) >= x, 'ds-math-add-overflow');\\n }\\n\\n function sub(uint x, uint y) internal pure returns (uint z) {\\n require((z = x - y) <= x, 'ds-math-sub-underflow');\\n }\\n\\n function mul(uint x, uint y) internal pure returns (uint z) {\\n require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');\\n }\\n}\\n\\nlibrary UniswapV2Library {\\n using SafeMath for uint;\\n\\n // returns sorted token addresses, used to handle return values from pairs sorted in this order\\n function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {\\n require(tokenA != tokenB, 'UniswapV2Library: IDENTICAL_ADDRESSES');\\n (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);\\n require(token0 != address(0), 'UniswapV2Library: ZERO_ADDRESS');\\n }\\n\\n // calculates the CREATE2 address for a pair without making any external calls\\n function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {\\n (address token0, address token1) = sortTokens(tokenA, tokenB);\\n pair = address(uint(keccak256(abi.encodePacked(\\n hex'ff',\\n factory,\\n keccak256(abi.encodePacked(token0, token1)),\\n hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // init code hash\\n ))));\\n }\\n\\n // fetches and sorts the reserves for a pair\\n function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {\\n (address token0,) = sortTokens(tokenA, tokenB);\\n (uint reserve0, uint reserve1,) = IUniswapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves();\\n (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\\n }\\n\\n // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset\\n function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {\\n require(amountA > 0, 'UniswapV2Library: INSUFFICIENT_AMOUNT');\\n require(reserveA > 0 && reserveB > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n amountB = amountA.mul(reserveB) / reserveA;\\n }\\n\\n // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {\\n require(amountIn > 0, 'UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT');\\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n uint amountInWithFee = amountIn.mul(997);\\n uint numerator = amountInWithFee.mul(reserveOut);\\n uint denominator = reserveIn.mul(1000).add(amountInWithFee);\\n amountOut = numerator / denominator;\\n }\\n\\n // given an output amount of an asset and pair reserves, returns a required input amount of the other asset\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {\\n require(amountOut > 0, 'UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT');\\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n uint numerator = reserveIn.mul(amountOut).mul(1000);\\n uint denominator = reserveOut.sub(amountOut).mul(997);\\n amountIn = (numerator / denominator).add(1);\\n }\\n\\n // performs chained getAmountOut calculations on any number of pairs\\n function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {\\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\\n amounts = new uint[](path.length);\\n amounts[0] = amountIn;\\n for (uint i; i < path.length - 1; i++) {\\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]);\\n amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);\\n }\\n }\\n\\n // performs chained getAmountIn calculations on any number of pairs\\n function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {\\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\\n amounts = new uint[](path.length);\\n amounts[amounts.length - 1] = amountOut;\\n for (uint i = path.length - 1; i > 0; i--) {\\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);\\n amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);\\n }\\n }\\n}\\n\\n// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false\\nlibrary TransferHelper {\\n function safeApprove(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('approve(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');\\n }\\n\\n function safeTransfer(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transfer(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');\\n }\\n\\n function safeTransferFrom(address token, address from, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');\\n }\\n\\n function safeTransferETH(address to, uint value) internal {\\n (bool success,) = to.call{value:value}(new bytes(0));\\n require(success, 'TransferHelper: ETH_TRANSFER_FAILED');\\n }\\n}\",\"keccak256\":\"0x1b5e0bbc6654c73ae262f53687cc1c2de95c813c0a3f98f74b1448a36a84d011\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "methods": {} + } + }, + "IUniswapV2Router02": { + "abi": [ + { + "inputs": [], + "name": "WETH", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountTokenDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveB", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETHSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapETHForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETHSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "WETH()": "ad5c4648", + "addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)": "e8e33700", + "addLiquidityETH(address,uint256,uint256,uint256,address,uint256)": "f305d719", + "factory()": "c45a0155", + "getAmountIn(uint256,uint256,uint256)": "85f8c259", + "getAmountOut(uint256,uint256,uint256)": "054d50d4", + "getAmountsIn(uint256,address[])": "1f00ca74", + "getAmountsOut(uint256,address[])": "d06ca61f", + "quote(uint256,uint256,uint256)": "ad615dec", + "removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)": "baa2abde", + "removeLiquidityETH(address,uint256,uint256,uint256,address,uint256)": "02751cec", + "removeLiquidityETHSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256)": "af2979eb", + "removeLiquidityETHWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "ded9382a", + "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "5b0d5984", + "removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "2195995c", + "swapETHForExactTokens(uint256,address[],address,uint256)": "fb3bdb41", + "swapExactETHForTokens(uint256,address[],address,uint256)": "7ff36ab5", + "swapExactETHForTokensSupportingFeeOnTransferTokens(uint256,address[],address,uint256)": "b6f9de95", + "swapExactTokensForETH(uint256,uint256,address[],address,uint256)": "18cbafe5", + "swapExactTokensForETHSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)": "791ac947", + "swapExactTokensForTokens(uint256,uint256,address[],address,uint256)": "38ed1739", + "swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)": "5c11d795", + "swapTokensForExactETH(uint256,uint256,address[],address,uint256)": "4a25d94a", + "swapTokensForExactTokens(uint256,uint256,address[],address,uint256)": "8803dbee" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETHSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETHSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/Uniswap/UniswapV2Router02.sol\":\"IUniswapV2Router02\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Uniswap/UniswapV2Router02.sol\":{\"content\":\"/**\\n *Submitted for verification at Etherscan.io on 2020-06-05\\n*/\\n\\npragma solidity =0.6.6;\\n\\ninterface IUniswapV2Factory {\\n event PairCreated(address indexed token0, address indexed token1, address pair, uint);\\n\\n function feeTo() external view returns (address);\\n function feeToSetter() external view returns (address);\\n\\n function getPair(address tokenA, address tokenB) external view returns (address pair);\\n function allPairs(uint) external view returns (address pair);\\n function allPairsLength() external view returns (uint);\\n\\n function createPair(address tokenA, address tokenB) external returns (address pair);\\n\\n function setFeeTo(address) external;\\n function setFeeToSetter(address) external;\\n}\\n\\ninterface IUniswapV2Pair {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external pure returns (string memory);\\n function symbol() external pure returns (string memory);\\n function decimals() external pure returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n function PERMIT_TYPEHASH() external pure returns (bytes32);\\n function nonces(address owner) external view returns (uint);\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\\n\\n event Mint(address indexed sender, uint amount0, uint amount1);\\n event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\\n event Swap(\\n address indexed sender,\\n uint amount0In,\\n uint amount1In,\\n uint amount0Out,\\n uint amount1Out,\\n address indexed to\\n );\\n event Sync(uint112 reserve0, uint112 reserve1);\\n\\n function MINIMUM_LIQUIDITY() external pure returns (uint);\\n function factory() external view returns (address);\\n function token0() external view returns (address);\\n function token1() external view returns (address);\\n function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\\n function price0CumulativeLast() external view returns (uint);\\n function price1CumulativeLast() external view returns (uint);\\n function kLast() external view returns (uint);\\n\\n function mint(address to) external returns (uint liquidity);\\n function burn(address to) external returns (uint amount0, uint amount1);\\n function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;\\n function skim(address to) external;\\n function sync() external;\\n\\n function initialize(address, address) external;\\n}\\n\\ninterface IUniswapV2Router01 {\\n function factory() external pure returns (address);\\n function WETH() external pure returns (address);\\n\\n function addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB, uint liquidity);\\n function addLiquidityETH(\\n address token,\\n uint amountTokenDesired,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external payable returns (uint amountToken, uint amountETH, uint liquidity);\\n function removeLiquidity(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETH(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountToken, uint amountETH);\\n function removeLiquidityWithPermit(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETHWithPermit(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountToken, uint amountETH);\\n function swapExactTokensForTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapTokensForExactTokens(\\n uint amountOut,\\n uint amountInMax,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n\\n function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);\\n function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);\\n function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);\\n}\\n\\ninterface IUniswapV2Router02 is IUniswapV2Router01 {\\n function removeLiquidityETHSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountETH);\\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountETH);\\n\\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external;\\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external payable;\\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external;\\n}\\n\\ninterface IERC20 {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external view returns (string memory);\\n function symbol() external view returns (string memory);\\n function decimals() external view returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n}\\n\\ninterface IWETH {\\n function deposit() external payable;\\n function transfer(address to, uint value) external returns (bool);\\n function withdraw(uint) external;\\n}\\n\\ncontract UniswapV2Router02 is IUniswapV2Router02 {\\n using SafeMath for uint;\\n\\n address public immutable override factory;\\n address public immutable override WETH;\\n\\n modifier ensure(uint deadline) {\\n require(deadline >= block.timestamp, 'UniswapV2Router: EXPIRED');\\n _;\\n }\\n\\n constructor(address _factory, address _WETH) public {\\n factory = _factory;\\n WETH = _WETH;\\n }\\n\\n receive() external payable {\\n assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract\\n }\\n\\n // **** ADD LIQUIDITY ****\\n function _addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin\\n ) internal virtual returns (uint amountA, uint amountB) {\\n // create the pair if it doesn't exist yet\\n if (IUniswapV2Factory(factory).getPair(tokenA, tokenB) == address(0)) {\\n IUniswapV2Factory(factory).createPair(tokenA, tokenB);\\n }\\n (uint reserveA, uint reserveB) = UniswapV2Library.getReserves(factory, tokenA, tokenB);\\n if (reserveA == 0 && reserveB == 0) {\\n (amountA, amountB) = (amountADesired, amountBDesired);\\n } else {\\n uint amountBOptimal = UniswapV2Library.quote(amountADesired, reserveA, reserveB);\\n if (amountBOptimal <= amountBDesired) {\\n require(amountBOptimal >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\\n (amountA, amountB) = (amountADesired, amountBOptimal);\\n } else {\\n uint amountAOptimal = UniswapV2Library.quote(amountBDesired, reserveB, reserveA);\\n assert(amountAOptimal <= amountADesired);\\n require(amountAOptimal >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\\n (amountA, amountB) = (amountAOptimal, amountBDesired);\\n }\\n }\\n }\\n function addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {\\n (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);\\n TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);\\n liquidity = IUniswapV2Pair(pair).mint(to);\\n }\\n function addLiquidityETH(\\n address token,\\n uint amountTokenDesired,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) {\\n (amountToken, amountETH) = _addLiquidity(\\n token,\\n WETH,\\n amountTokenDesired,\\n msg.value,\\n amountTokenMin,\\n amountETHMin\\n );\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);\\n IWETH(WETH).deposit{value: amountETH}();\\n assert(IWETH(WETH).transfer(pair, amountETH));\\n liquidity = IUniswapV2Pair(pair).mint(to);\\n // refund dust eth, if any\\n if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH);\\n }\\n\\n // **** REMOVE LIQUIDITY ****\\n function removeLiquidity(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n IUniswapV2Pair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair\\n (uint amount0, uint amount1) = IUniswapV2Pair(pair).burn(to);\\n (address token0,) = UniswapV2Library.sortTokens(tokenA, tokenB);\\n (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);\\n require(amountA >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\\n require(amountB >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\\n }\\n function removeLiquidityETH(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountToken, uint amountETH) {\\n (amountToken, amountETH) = removeLiquidity(\\n token,\\n WETH,\\n liquidity,\\n amountTokenMin,\\n amountETHMin,\\n address(this),\\n deadline\\n );\\n TransferHelper.safeTransfer(token, to, amountToken);\\n IWETH(WETH).withdraw(amountETH);\\n TransferHelper.safeTransferETH(to, amountETH);\\n }\\n function removeLiquidityWithPermit(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountA, uint amountB) {\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);\\n }\\n function removeLiquidityETHWithPermit(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountToken, uint amountETH) {\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n (amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline);\\n }\\n\\n // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****\\n function removeLiquidityETHSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountETH) {\\n (, amountETH) = removeLiquidity(\\n token,\\n WETH,\\n liquidity,\\n amountTokenMin,\\n amountETHMin,\\n address(this),\\n deadline\\n );\\n TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this)));\\n IWETH(WETH).withdraw(amountETH);\\n TransferHelper.safeTransferETH(to, amountETH);\\n }\\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountETH) {\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n amountETH = removeLiquidityETHSupportingFeeOnTransferTokens(\\n token, liquidity, amountTokenMin, amountETHMin, to, deadline\\n );\\n }\\n\\n // **** SWAP ****\\n // requires the initial amount to have already been sent to the first pair\\n function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual {\\n for (uint i; i < path.length - 1; i++) {\\n (address input, address output) = (path[i], path[i + 1]);\\n (address token0,) = UniswapV2Library.sortTokens(input, output);\\n uint amountOut = amounts[i + 1];\\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));\\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\\n IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output)).swap(\\n amount0Out, amount1Out, to, new bytes(0)\\n );\\n }\\n }\\n function swapExactTokensForTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, to);\\n }\\n function swapTokensForExactTokens(\\n uint amountOut,\\n uint amountInMax,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, to);\\n }\\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsOut(factory, msg.value, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n IWETH(WETH).deposit{value: amounts[0]}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\\n _swap(amounts, path, to);\\n }\\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, address(this));\\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\\n TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\\n }\\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, address(this));\\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\\n TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\\n }\\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= msg.value, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n IWETH(WETH).deposit{value: amounts[0]}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\\n _swap(amounts, path, to);\\n // refund dust eth, if any\\n if (msg.value > amounts[0]) TransferHelper.safeTransferETH(msg.sender, msg.value - amounts[0]);\\n }\\n\\n // **** SWAP (supporting fee-on-transfer tokens) ****\\n // requires the initial amount to have already been sent to the first pair\\n function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual {\\n for (uint i; i < path.length - 1; i++) {\\n (address input, address output) = (path[i], path[i + 1]);\\n (address token0,) = UniswapV2Library.sortTokens(input, output);\\n IUniswapV2Pair pair = IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output));\\n uint amountInput;\\n uint amountOutput;\\n { // scope to avoid stack too deep errors\\n (uint reserve0, uint reserve1,) = pair.getReserves();\\n (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\\n amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);\\n amountOutput = UniswapV2Library.getAmountOut(amountInput, reserveInput, reserveOutput);\\n }\\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));\\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\\n pair.swap(amount0Out, amount1Out, to, new bytes(0));\\n }\\n }\\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) {\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\\n );\\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\\n _swapSupportingFeeOnTransferTokens(path, to);\\n require(\\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\\n 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\\n );\\n }\\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n )\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n uint amountIn = msg.value;\\n IWETH(WETH).deposit{value: amountIn}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn));\\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\\n _swapSupportingFeeOnTransferTokens(path, to);\\n require(\\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\\n 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\\n );\\n }\\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n )\\n external\\n virtual\\n override\\n ensure(deadline)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\\n );\\n _swapSupportingFeeOnTransferTokens(path, address(this));\\n uint amountOut = IERC20(WETH).balanceOf(address(this));\\n require(amountOut >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n IWETH(WETH).withdraw(amountOut);\\n TransferHelper.safeTransferETH(to, amountOut);\\n }\\n\\n // **** LIBRARY FUNCTIONS ****\\n function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) {\\n return UniswapV2Library.quote(amountA, reserveA, reserveB);\\n }\\n\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)\\n public\\n pure\\n virtual\\n override\\n returns (uint amountOut)\\n {\\n return UniswapV2Library.getAmountOut(amountIn, reserveIn, reserveOut);\\n }\\n\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)\\n public\\n pure\\n virtual\\n override\\n returns (uint amountIn)\\n {\\n return UniswapV2Library.getAmountIn(amountOut, reserveIn, reserveOut);\\n }\\n\\n function getAmountsOut(uint amountIn, address[] memory path)\\n public\\n view\\n virtual\\n override\\n returns (uint[] memory amounts)\\n {\\n return UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n }\\n\\n function getAmountsIn(uint amountOut, address[] memory path)\\n public\\n view\\n virtual\\n override\\n returns (uint[] memory amounts)\\n {\\n return UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n }\\n}\\n\\n// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)\\n\\nlibrary SafeMath {\\n function add(uint x, uint y) internal pure returns (uint z) {\\n require((z = x + y) >= x, 'ds-math-add-overflow');\\n }\\n\\n function sub(uint x, uint y) internal pure returns (uint z) {\\n require((z = x - y) <= x, 'ds-math-sub-underflow');\\n }\\n\\n function mul(uint x, uint y) internal pure returns (uint z) {\\n require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');\\n }\\n}\\n\\nlibrary UniswapV2Library {\\n using SafeMath for uint;\\n\\n // returns sorted token addresses, used to handle return values from pairs sorted in this order\\n function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {\\n require(tokenA != tokenB, 'UniswapV2Library: IDENTICAL_ADDRESSES');\\n (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);\\n require(token0 != address(0), 'UniswapV2Library: ZERO_ADDRESS');\\n }\\n\\n // calculates the CREATE2 address for a pair without making any external calls\\n function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {\\n (address token0, address token1) = sortTokens(tokenA, tokenB);\\n pair = address(uint(keccak256(abi.encodePacked(\\n hex'ff',\\n factory,\\n keccak256(abi.encodePacked(token0, token1)),\\n hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // init code hash\\n ))));\\n }\\n\\n // fetches and sorts the reserves for a pair\\n function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {\\n (address token0,) = sortTokens(tokenA, tokenB);\\n (uint reserve0, uint reserve1,) = IUniswapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves();\\n (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\\n }\\n\\n // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset\\n function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {\\n require(amountA > 0, 'UniswapV2Library: INSUFFICIENT_AMOUNT');\\n require(reserveA > 0 && reserveB > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n amountB = amountA.mul(reserveB) / reserveA;\\n }\\n\\n // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {\\n require(amountIn > 0, 'UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT');\\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n uint amountInWithFee = amountIn.mul(997);\\n uint numerator = amountInWithFee.mul(reserveOut);\\n uint denominator = reserveIn.mul(1000).add(amountInWithFee);\\n amountOut = numerator / denominator;\\n }\\n\\n // given an output amount of an asset and pair reserves, returns a required input amount of the other asset\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {\\n require(amountOut > 0, 'UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT');\\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n uint numerator = reserveIn.mul(amountOut).mul(1000);\\n uint denominator = reserveOut.sub(amountOut).mul(997);\\n amountIn = (numerator / denominator).add(1);\\n }\\n\\n // performs chained getAmountOut calculations on any number of pairs\\n function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {\\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\\n amounts = new uint[](path.length);\\n amounts[0] = amountIn;\\n for (uint i; i < path.length - 1; i++) {\\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]);\\n amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);\\n }\\n }\\n\\n // performs chained getAmountIn calculations on any number of pairs\\n function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {\\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\\n amounts = new uint[](path.length);\\n amounts[amounts.length - 1] = amountOut;\\n for (uint i = path.length - 1; i > 0; i--) {\\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);\\n amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);\\n }\\n }\\n}\\n\\n// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false\\nlibrary TransferHelper {\\n function safeApprove(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('approve(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');\\n }\\n\\n function safeTransfer(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transfer(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');\\n }\\n\\n function safeTransferFrom(address token, address from, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');\\n }\\n\\n function safeTransferETH(address to, uint value) internal {\\n (bool success,) = to.call{value:value}(new bytes(0));\\n require(success, 'TransferHelper: ETH_TRANSFER_FAILED');\\n }\\n}\",\"keccak256\":\"0x1b5e0bbc6654c73ae262f53687cc1c2de95c813c0a3f98f74b1448a36a84d011\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "methods": {} + } + }, + "IWETH": { + "abi": [ + { + "inputs": [], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "deposit()": "d0e30db0", + "transfer(address,uint256)": "a9059cbb", + "withdraw(uint256)": "2e1a7d4d" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/Uniswap/UniswapV2Router02.sol\":\"IWETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Uniswap/UniswapV2Router02.sol\":{\"content\":\"/**\\n *Submitted for verification at Etherscan.io on 2020-06-05\\n*/\\n\\npragma solidity =0.6.6;\\n\\ninterface IUniswapV2Factory {\\n event PairCreated(address indexed token0, address indexed token1, address pair, uint);\\n\\n function feeTo() external view returns (address);\\n function feeToSetter() external view returns (address);\\n\\n function getPair(address tokenA, address tokenB) external view returns (address pair);\\n function allPairs(uint) external view returns (address pair);\\n function allPairsLength() external view returns (uint);\\n\\n function createPair(address tokenA, address tokenB) external returns (address pair);\\n\\n function setFeeTo(address) external;\\n function setFeeToSetter(address) external;\\n}\\n\\ninterface IUniswapV2Pair {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external pure returns (string memory);\\n function symbol() external pure returns (string memory);\\n function decimals() external pure returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n function PERMIT_TYPEHASH() external pure returns (bytes32);\\n function nonces(address owner) external view returns (uint);\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\\n\\n event Mint(address indexed sender, uint amount0, uint amount1);\\n event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\\n event Swap(\\n address indexed sender,\\n uint amount0In,\\n uint amount1In,\\n uint amount0Out,\\n uint amount1Out,\\n address indexed to\\n );\\n event Sync(uint112 reserve0, uint112 reserve1);\\n\\n function MINIMUM_LIQUIDITY() external pure returns (uint);\\n function factory() external view returns (address);\\n function token0() external view returns (address);\\n function token1() external view returns (address);\\n function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\\n function price0CumulativeLast() external view returns (uint);\\n function price1CumulativeLast() external view returns (uint);\\n function kLast() external view returns (uint);\\n\\n function mint(address to) external returns (uint liquidity);\\n function burn(address to) external returns (uint amount0, uint amount1);\\n function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;\\n function skim(address to) external;\\n function sync() external;\\n\\n function initialize(address, address) external;\\n}\\n\\ninterface IUniswapV2Router01 {\\n function factory() external pure returns (address);\\n function WETH() external pure returns (address);\\n\\n function addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB, uint liquidity);\\n function addLiquidityETH(\\n address token,\\n uint amountTokenDesired,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external payable returns (uint amountToken, uint amountETH, uint liquidity);\\n function removeLiquidity(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETH(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountToken, uint amountETH);\\n function removeLiquidityWithPermit(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETHWithPermit(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountToken, uint amountETH);\\n function swapExactTokensForTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapTokensForExactTokens(\\n uint amountOut,\\n uint amountInMax,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n\\n function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);\\n function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);\\n function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);\\n}\\n\\ninterface IUniswapV2Router02 is IUniswapV2Router01 {\\n function removeLiquidityETHSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountETH);\\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountETH);\\n\\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external;\\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external payable;\\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external;\\n}\\n\\ninterface IERC20 {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external view returns (string memory);\\n function symbol() external view returns (string memory);\\n function decimals() external view returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n}\\n\\ninterface IWETH {\\n function deposit() external payable;\\n function transfer(address to, uint value) external returns (bool);\\n function withdraw(uint) external;\\n}\\n\\ncontract UniswapV2Router02 is IUniswapV2Router02 {\\n using SafeMath for uint;\\n\\n address public immutable override factory;\\n address public immutable override WETH;\\n\\n modifier ensure(uint deadline) {\\n require(deadline >= block.timestamp, 'UniswapV2Router: EXPIRED');\\n _;\\n }\\n\\n constructor(address _factory, address _WETH) public {\\n factory = _factory;\\n WETH = _WETH;\\n }\\n\\n receive() external payable {\\n assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract\\n }\\n\\n // **** ADD LIQUIDITY ****\\n function _addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin\\n ) internal virtual returns (uint amountA, uint amountB) {\\n // create the pair if it doesn't exist yet\\n if (IUniswapV2Factory(factory).getPair(tokenA, tokenB) == address(0)) {\\n IUniswapV2Factory(factory).createPair(tokenA, tokenB);\\n }\\n (uint reserveA, uint reserveB) = UniswapV2Library.getReserves(factory, tokenA, tokenB);\\n if (reserveA == 0 && reserveB == 0) {\\n (amountA, amountB) = (amountADesired, amountBDesired);\\n } else {\\n uint amountBOptimal = UniswapV2Library.quote(amountADesired, reserveA, reserveB);\\n if (amountBOptimal <= amountBDesired) {\\n require(amountBOptimal >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\\n (amountA, amountB) = (amountADesired, amountBOptimal);\\n } else {\\n uint amountAOptimal = UniswapV2Library.quote(amountBDesired, reserveB, reserveA);\\n assert(amountAOptimal <= amountADesired);\\n require(amountAOptimal >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\\n (amountA, amountB) = (amountAOptimal, amountBDesired);\\n }\\n }\\n }\\n function addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {\\n (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);\\n TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);\\n liquidity = IUniswapV2Pair(pair).mint(to);\\n }\\n function addLiquidityETH(\\n address token,\\n uint amountTokenDesired,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) {\\n (amountToken, amountETH) = _addLiquidity(\\n token,\\n WETH,\\n amountTokenDesired,\\n msg.value,\\n amountTokenMin,\\n amountETHMin\\n );\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);\\n IWETH(WETH).deposit{value: amountETH}();\\n assert(IWETH(WETH).transfer(pair, amountETH));\\n liquidity = IUniswapV2Pair(pair).mint(to);\\n // refund dust eth, if any\\n if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH);\\n }\\n\\n // **** REMOVE LIQUIDITY ****\\n function removeLiquidity(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n IUniswapV2Pair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair\\n (uint amount0, uint amount1) = IUniswapV2Pair(pair).burn(to);\\n (address token0,) = UniswapV2Library.sortTokens(tokenA, tokenB);\\n (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);\\n require(amountA >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\\n require(amountB >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\\n }\\n function removeLiquidityETH(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountToken, uint amountETH) {\\n (amountToken, amountETH) = removeLiquidity(\\n token,\\n WETH,\\n liquidity,\\n amountTokenMin,\\n amountETHMin,\\n address(this),\\n deadline\\n );\\n TransferHelper.safeTransfer(token, to, amountToken);\\n IWETH(WETH).withdraw(amountETH);\\n TransferHelper.safeTransferETH(to, amountETH);\\n }\\n function removeLiquidityWithPermit(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountA, uint amountB) {\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);\\n }\\n function removeLiquidityETHWithPermit(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountToken, uint amountETH) {\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n (amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline);\\n }\\n\\n // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****\\n function removeLiquidityETHSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountETH) {\\n (, amountETH) = removeLiquidity(\\n token,\\n WETH,\\n liquidity,\\n amountTokenMin,\\n amountETHMin,\\n address(this),\\n deadline\\n );\\n TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this)));\\n IWETH(WETH).withdraw(amountETH);\\n TransferHelper.safeTransferETH(to, amountETH);\\n }\\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountETH) {\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n amountETH = removeLiquidityETHSupportingFeeOnTransferTokens(\\n token, liquidity, amountTokenMin, amountETHMin, to, deadline\\n );\\n }\\n\\n // **** SWAP ****\\n // requires the initial amount to have already been sent to the first pair\\n function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual {\\n for (uint i; i < path.length - 1; i++) {\\n (address input, address output) = (path[i], path[i + 1]);\\n (address token0,) = UniswapV2Library.sortTokens(input, output);\\n uint amountOut = amounts[i + 1];\\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));\\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\\n IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output)).swap(\\n amount0Out, amount1Out, to, new bytes(0)\\n );\\n }\\n }\\n function swapExactTokensForTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, to);\\n }\\n function swapTokensForExactTokens(\\n uint amountOut,\\n uint amountInMax,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, to);\\n }\\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsOut(factory, msg.value, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n IWETH(WETH).deposit{value: amounts[0]}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\\n _swap(amounts, path, to);\\n }\\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, address(this));\\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\\n TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\\n }\\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, address(this));\\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\\n TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\\n }\\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= msg.value, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n IWETH(WETH).deposit{value: amounts[0]}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\\n _swap(amounts, path, to);\\n // refund dust eth, if any\\n if (msg.value > amounts[0]) TransferHelper.safeTransferETH(msg.sender, msg.value - amounts[0]);\\n }\\n\\n // **** SWAP (supporting fee-on-transfer tokens) ****\\n // requires the initial amount to have already been sent to the first pair\\n function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual {\\n for (uint i; i < path.length - 1; i++) {\\n (address input, address output) = (path[i], path[i + 1]);\\n (address token0,) = UniswapV2Library.sortTokens(input, output);\\n IUniswapV2Pair pair = IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output));\\n uint amountInput;\\n uint amountOutput;\\n { // scope to avoid stack too deep errors\\n (uint reserve0, uint reserve1,) = pair.getReserves();\\n (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\\n amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);\\n amountOutput = UniswapV2Library.getAmountOut(amountInput, reserveInput, reserveOutput);\\n }\\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));\\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\\n pair.swap(amount0Out, amount1Out, to, new bytes(0));\\n }\\n }\\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) {\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\\n );\\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\\n _swapSupportingFeeOnTransferTokens(path, to);\\n require(\\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\\n 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\\n );\\n }\\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n )\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n uint amountIn = msg.value;\\n IWETH(WETH).deposit{value: amountIn}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn));\\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\\n _swapSupportingFeeOnTransferTokens(path, to);\\n require(\\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\\n 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\\n );\\n }\\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n )\\n external\\n virtual\\n override\\n ensure(deadline)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\\n );\\n _swapSupportingFeeOnTransferTokens(path, address(this));\\n uint amountOut = IERC20(WETH).balanceOf(address(this));\\n require(amountOut >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n IWETH(WETH).withdraw(amountOut);\\n TransferHelper.safeTransferETH(to, amountOut);\\n }\\n\\n // **** LIBRARY FUNCTIONS ****\\n function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) {\\n return UniswapV2Library.quote(amountA, reserveA, reserveB);\\n }\\n\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)\\n public\\n pure\\n virtual\\n override\\n returns (uint amountOut)\\n {\\n return UniswapV2Library.getAmountOut(amountIn, reserveIn, reserveOut);\\n }\\n\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)\\n public\\n pure\\n virtual\\n override\\n returns (uint amountIn)\\n {\\n return UniswapV2Library.getAmountIn(amountOut, reserveIn, reserveOut);\\n }\\n\\n function getAmountsOut(uint amountIn, address[] memory path)\\n public\\n view\\n virtual\\n override\\n returns (uint[] memory amounts)\\n {\\n return UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n }\\n\\n function getAmountsIn(uint amountOut, address[] memory path)\\n public\\n view\\n virtual\\n override\\n returns (uint[] memory amounts)\\n {\\n return UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n }\\n}\\n\\n// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)\\n\\nlibrary SafeMath {\\n function add(uint x, uint y) internal pure returns (uint z) {\\n require((z = x + y) >= x, 'ds-math-add-overflow');\\n }\\n\\n function sub(uint x, uint y) internal pure returns (uint z) {\\n require((z = x - y) <= x, 'ds-math-sub-underflow');\\n }\\n\\n function mul(uint x, uint y) internal pure returns (uint z) {\\n require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');\\n }\\n}\\n\\nlibrary UniswapV2Library {\\n using SafeMath for uint;\\n\\n // returns sorted token addresses, used to handle return values from pairs sorted in this order\\n function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {\\n require(tokenA != tokenB, 'UniswapV2Library: IDENTICAL_ADDRESSES');\\n (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);\\n require(token0 != address(0), 'UniswapV2Library: ZERO_ADDRESS');\\n }\\n\\n // calculates the CREATE2 address for a pair without making any external calls\\n function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {\\n (address token0, address token1) = sortTokens(tokenA, tokenB);\\n pair = address(uint(keccak256(abi.encodePacked(\\n hex'ff',\\n factory,\\n keccak256(abi.encodePacked(token0, token1)),\\n hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // init code hash\\n ))));\\n }\\n\\n // fetches and sorts the reserves for a pair\\n function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {\\n (address token0,) = sortTokens(tokenA, tokenB);\\n (uint reserve0, uint reserve1,) = IUniswapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves();\\n (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\\n }\\n\\n // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset\\n function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {\\n require(amountA > 0, 'UniswapV2Library: INSUFFICIENT_AMOUNT');\\n require(reserveA > 0 && reserveB > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n amountB = amountA.mul(reserveB) / reserveA;\\n }\\n\\n // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {\\n require(amountIn > 0, 'UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT');\\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n uint amountInWithFee = amountIn.mul(997);\\n uint numerator = amountInWithFee.mul(reserveOut);\\n uint denominator = reserveIn.mul(1000).add(amountInWithFee);\\n amountOut = numerator / denominator;\\n }\\n\\n // given an output amount of an asset and pair reserves, returns a required input amount of the other asset\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {\\n require(amountOut > 0, 'UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT');\\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n uint numerator = reserveIn.mul(amountOut).mul(1000);\\n uint denominator = reserveOut.sub(amountOut).mul(997);\\n amountIn = (numerator / denominator).add(1);\\n }\\n\\n // performs chained getAmountOut calculations on any number of pairs\\n function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {\\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\\n amounts = new uint[](path.length);\\n amounts[0] = amountIn;\\n for (uint i; i < path.length - 1; i++) {\\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]);\\n amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);\\n }\\n }\\n\\n // performs chained getAmountIn calculations on any number of pairs\\n function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {\\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\\n amounts = new uint[](path.length);\\n amounts[amounts.length - 1] = amountOut;\\n for (uint i = path.length - 1; i > 0; i--) {\\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);\\n amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);\\n }\\n }\\n}\\n\\n// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false\\nlibrary TransferHelper {\\n function safeApprove(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('approve(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');\\n }\\n\\n function safeTransfer(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transfer(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');\\n }\\n\\n function safeTransferFrom(address token, address from, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');\\n }\\n\\n function safeTransferETH(address to, uint value) internal {\\n (bool success,) = to.call{value:value}(new bytes(0));\\n require(success, 'TransferHelper: ETH_TRANSFER_FAILED');\\n }\\n}\",\"keccak256\":\"0x1b5e0bbc6654c73ae262f53687cc1c2de95c813c0a3f98f74b1448a36a84d011\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "methods": {} + } + }, + "SafeMath": { + "abi": [], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122033876a1c1abe5eaa36ed395a807d77365456cbe4ec38e7959bdef0c9d93ae17064736f6c63430006060033", + "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLER DUP8 PUSH11 0x1C1ABE5EAA36ED395A807D PUSH24 0x365456CBE4EC38E7959BDEF0C9D93AE17064736F6C634300 MOD MOD STOP CALLER ", + "sourceMap": "27045:430:0:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122033876a1c1abe5eaa36ed395a807d77365456cbe4ec38e7959bdef0c9d93ae17064736f6c63430006060033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLER DUP8 PUSH11 0x1C1ABE5EAA36ED395A807D PUSH24 0x365456CBE4EC38E7959BDEF0C9D93AE17064736F6C634300 MOD MOD STOP CALLER ", + "sourceMap": "27045:430:0:-:0;;;;;;12:1:-1;9;2:12" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17200", + "executionCost": "97", + "totalCost": "17297" + }, + "internal": { + "add(uint256,uint256)": "infinite", + "mul(uint256,uint256)": "infinite", + "sub(uint256,uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/Uniswap/UniswapV2Router02.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Uniswap/UniswapV2Router02.sol\":{\"content\":\"/**\\n *Submitted for verification at Etherscan.io on 2020-06-05\\n*/\\n\\npragma solidity =0.6.6;\\n\\ninterface IUniswapV2Factory {\\n event PairCreated(address indexed token0, address indexed token1, address pair, uint);\\n\\n function feeTo() external view returns (address);\\n function feeToSetter() external view returns (address);\\n\\n function getPair(address tokenA, address tokenB) external view returns (address pair);\\n function allPairs(uint) external view returns (address pair);\\n function allPairsLength() external view returns (uint);\\n\\n function createPair(address tokenA, address tokenB) external returns (address pair);\\n\\n function setFeeTo(address) external;\\n function setFeeToSetter(address) external;\\n}\\n\\ninterface IUniswapV2Pair {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external pure returns (string memory);\\n function symbol() external pure returns (string memory);\\n function decimals() external pure returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n function PERMIT_TYPEHASH() external pure returns (bytes32);\\n function nonces(address owner) external view returns (uint);\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\\n\\n event Mint(address indexed sender, uint amount0, uint amount1);\\n event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\\n event Swap(\\n address indexed sender,\\n uint amount0In,\\n uint amount1In,\\n uint amount0Out,\\n uint amount1Out,\\n address indexed to\\n );\\n event Sync(uint112 reserve0, uint112 reserve1);\\n\\n function MINIMUM_LIQUIDITY() external pure returns (uint);\\n function factory() external view returns (address);\\n function token0() external view returns (address);\\n function token1() external view returns (address);\\n function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\\n function price0CumulativeLast() external view returns (uint);\\n function price1CumulativeLast() external view returns (uint);\\n function kLast() external view returns (uint);\\n\\n function mint(address to) external returns (uint liquidity);\\n function burn(address to) external returns (uint amount0, uint amount1);\\n function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;\\n function skim(address to) external;\\n function sync() external;\\n\\n function initialize(address, address) external;\\n}\\n\\ninterface IUniswapV2Router01 {\\n function factory() external pure returns (address);\\n function WETH() external pure returns (address);\\n\\n function addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB, uint liquidity);\\n function addLiquidityETH(\\n address token,\\n uint amountTokenDesired,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external payable returns (uint amountToken, uint amountETH, uint liquidity);\\n function removeLiquidity(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETH(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountToken, uint amountETH);\\n function removeLiquidityWithPermit(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETHWithPermit(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountToken, uint amountETH);\\n function swapExactTokensForTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapTokensForExactTokens(\\n uint amountOut,\\n uint amountInMax,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n\\n function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);\\n function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);\\n function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);\\n}\\n\\ninterface IUniswapV2Router02 is IUniswapV2Router01 {\\n function removeLiquidityETHSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountETH);\\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountETH);\\n\\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external;\\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external payable;\\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external;\\n}\\n\\ninterface IERC20 {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external view returns (string memory);\\n function symbol() external view returns (string memory);\\n function decimals() external view returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n}\\n\\ninterface IWETH {\\n function deposit() external payable;\\n function transfer(address to, uint value) external returns (bool);\\n function withdraw(uint) external;\\n}\\n\\ncontract UniswapV2Router02 is IUniswapV2Router02 {\\n using SafeMath for uint;\\n\\n address public immutable override factory;\\n address public immutable override WETH;\\n\\n modifier ensure(uint deadline) {\\n require(deadline >= block.timestamp, 'UniswapV2Router: EXPIRED');\\n _;\\n }\\n\\n constructor(address _factory, address _WETH) public {\\n factory = _factory;\\n WETH = _WETH;\\n }\\n\\n receive() external payable {\\n assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract\\n }\\n\\n // **** ADD LIQUIDITY ****\\n function _addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin\\n ) internal virtual returns (uint amountA, uint amountB) {\\n // create the pair if it doesn't exist yet\\n if (IUniswapV2Factory(factory).getPair(tokenA, tokenB) == address(0)) {\\n IUniswapV2Factory(factory).createPair(tokenA, tokenB);\\n }\\n (uint reserveA, uint reserveB) = UniswapV2Library.getReserves(factory, tokenA, tokenB);\\n if (reserveA == 0 && reserveB == 0) {\\n (amountA, amountB) = (amountADesired, amountBDesired);\\n } else {\\n uint amountBOptimal = UniswapV2Library.quote(amountADesired, reserveA, reserveB);\\n if (amountBOptimal <= amountBDesired) {\\n require(amountBOptimal >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\\n (amountA, amountB) = (amountADesired, amountBOptimal);\\n } else {\\n uint amountAOptimal = UniswapV2Library.quote(amountBDesired, reserveB, reserveA);\\n assert(amountAOptimal <= amountADesired);\\n require(amountAOptimal >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\\n (amountA, amountB) = (amountAOptimal, amountBDesired);\\n }\\n }\\n }\\n function addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {\\n (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);\\n TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);\\n liquidity = IUniswapV2Pair(pair).mint(to);\\n }\\n function addLiquidityETH(\\n address token,\\n uint amountTokenDesired,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) {\\n (amountToken, amountETH) = _addLiquidity(\\n token,\\n WETH,\\n amountTokenDesired,\\n msg.value,\\n amountTokenMin,\\n amountETHMin\\n );\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);\\n IWETH(WETH).deposit{value: amountETH}();\\n assert(IWETH(WETH).transfer(pair, amountETH));\\n liquidity = IUniswapV2Pair(pair).mint(to);\\n // refund dust eth, if any\\n if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH);\\n }\\n\\n // **** REMOVE LIQUIDITY ****\\n function removeLiquidity(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n IUniswapV2Pair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair\\n (uint amount0, uint amount1) = IUniswapV2Pair(pair).burn(to);\\n (address token0,) = UniswapV2Library.sortTokens(tokenA, tokenB);\\n (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);\\n require(amountA >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\\n require(amountB >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\\n }\\n function removeLiquidityETH(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountToken, uint amountETH) {\\n (amountToken, amountETH) = removeLiquidity(\\n token,\\n WETH,\\n liquidity,\\n amountTokenMin,\\n amountETHMin,\\n address(this),\\n deadline\\n );\\n TransferHelper.safeTransfer(token, to, amountToken);\\n IWETH(WETH).withdraw(amountETH);\\n TransferHelper.safeTransferETH(to, amountETH);\\n }\\n function removeLiquidityWithPermit(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountA, uint amountB) {\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);\\n }\\n function removeLiquidityETHWithPermit(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountToken, uint amountETH) {\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n (amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline);\\n }\\n\\n // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****\\n function removeLiquidityETHSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountETH) {\\n (, amountETH) = removeLiquidity(\\n token,\\n WETH,\\n liquidity,\\n amountTokenMin,\\n amountETHMin,\\n address(this),\\n deadline\\n );\\n TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this)));\\n IWETH(WETH).withdraw(amountETH);\\n TransferHelper.safeTransferETH(to, amountETH);\\n }\\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountETH) {\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n amountETH = removeLiquidityETHSupportingFeeOnTransferTokens(\\n token, liquidity, amountTokenMin, amountETHMin, to, deadline\\n );\\n }\\n\\n // **** SWAP ****\\n // requires the initial amount to have already been sent to the first pair\\n function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual {\\n for (uint i; i < path.length - 1; i++) {\\n (address input, address output) = (path[i], path[i + 1]);\\n (address token0,) = UniswapV2Library.sortTokens(input, output);\\n uint amountOut = amounts[i + 1];\\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));\\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\\n IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output)).swap(\\n amount0Out, amount1Out, to, new bytes(0)\\n );\\n }\\n }\\n function swapExactTokensForTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, to);\\n }\\n function swapTokensForExactTokens(\\n uint amountOut,\\n uint amountInMax,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, to);\\n }\\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsOut(factory, msg.value, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n IWETH(WETH).deposit{value: amounts[0]}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\\n _swap(amounts, path, to);\\n }\\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, address(this));\\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\\n TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\\n }\\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, address(this));\\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\\n TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\\n }\\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= msg.value, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n IWETH(WETH).deposit{value: amounts[0]}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\\n _swap(amounts, path, to);\\n // refund dust eth, if any\\n if (msg.value > amounts[0]) TransferHelper.safeTransferETH(msg.sender, msg.value - amounts[0]);\\n }\\n\\n // **** SWAP (supporting fee-on-transfer tokens) ****\\n // requires the initial amount to have already been sent to the first pair\\n function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual {\\n for (uint i; i < path.length - 1; i++) {\\n (address input, address output) = (path[i], path[i + 1]);\\n (address token0,) = UniswapV2Library.sortTokens(input, output);\\n IUniswapV2Pair pair = IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output));\\n uint amountInput;\\n uint amountOutput;\\n { // scope to avoid stack too deep errors\\n (uint reserve0, uint reserve1,) = pair.getReserves();\\n (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\\n amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);\\n amountOutput = UniswapV2Library.getAmountOut(amountInput, reserveInput, reserveOutput);\\n }\\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));\\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\\n pair.swap(amount0Out, amount1Out, to, new bytes(0));\\n }\\n }\\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) {\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\\n );\\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\\n _swapSupportingFeeOnTransferTokens(path, to);\\n require(\\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\\n 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\\n );\\n }\\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n )\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n uint amountIn = msg.value;\\n IWETH(WETH).deposit{value: amountIn}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn));\\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\\n _swapSupportingFeeOnTransferTokens(path, to);\\n require(\\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\\n 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\\n );\\n }\\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n )\\n external\\n virtual\\n override\\n ensure(deadline)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\\n );\\n _swapSupportingFeeOnTransferTokens(path, address(this));\\n uint amountOut = IERC20(WETH).balanceOf(address(this));\\n require(amountOut >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n IWETH(WETH).withdraw(amountOut);\\n TransferHelper.safeTransferETH(to, amountOut);\\n }\\n\\n // **** LIBRARY FUNCTIONS ****\\n function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) {\\n return UniswapV2Library.quote(amountA, reserveA, reserveB);\\n }\\n\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)\\n public\\n pure\\n virtual\\n override\\n returns (uint amountOut)\\n {\\n return UniswapV2Library.getAmountOut(amountIn, reserveIn, reserveOut);\\n }\\n\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)\\n public\\n pure\\n virtual\\n override\\n returns (uint amountIn)\\n {\\n return UniswapV2Library.getAmountIn(amountOut, reserveIn, reserveOut);\\n }\\n\\n function getAmountsOut(uint amountIn, address[] memory path)\\n public\\n view\\n virtual\\n override\\n returns (uint[] memory amounts)\\n {\\n return UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n }\\n\\n function getAmountsIn(uint amountOut, address[] memory path)\\n public\\n view\\n virtual\\n override\\n returns (uint[] memory amounts)\\n {\\n return UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n }\\n}\\n\\n// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)\\n\\nlibrary SafeMath {\\n function add(uint x, uint y) internal pure returns (uint z) {\\n require((z = x + y) >= x, 'ds-math-add-overflow');\\n }\\n\\n function sub(uint x, uint y) internal pure returns (uint z) {\\n require((z = x - y) <= x, 'ds-math-sub-underflow');\\n }\\n\\n function mul(uint x, uint y) internal pure returns (uint z) {\\n require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');\\n }\\n}\\n\\nlibrary UniswapV2Library {\\n using SafeMath for uint;\\n\\n // returns sorted token addresses, used to handle return values from pairs sorted in this order\\n function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {\\n require(tokenA != tokenB, 'UniswapV2Library: IDENTICAL_ADDRESSES');\\n (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);\\n require(token0 != address(0), 'UniswapV2Library: ZERO_ADDRESS');\\n }\\n\\n // calculates the CREATE2 address for a pair without making any external calls\\n function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {\\n (address token0, address token1) = sortTokens(tokenA, tokenB);\\n pair = address(uint(keccak256(abi.encodePacked(\\n hex'ff',\\n factory,\\n keccak256(abi.encodePacked(token0, token1)),\\n hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // init code hash\\n ))));\\n }\\n\\n // fetches and sorts the reserves for a pair\\n function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {\\n (address token0,) = sortTokens(tokenA, tokenB);\\n (uint reserve0, uint reserve1,) = IUniswapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves();\\n (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\\n }\\n\\n // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset\\n function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {\\n require(amountA > 0, 'UniswapV2Library: INSUFFICIENT_AMOUNT');\\n require(reserveA > 0 && reserveB > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n amountB = amountA.mul(reserveB) / reserveA;\\n }\\n\\n // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {\\n require(amountIn > 0, 'UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT');\\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n uint amountInWithFee = amountIn.mul(997);\\n uint numerator = amountInWithFee.mul(reserveOut);\\n uint denominator = reserveIn.mul(1000).add(amountInWithFee);\\n amountOut = numerator / denominator;\\n }\\n\\n // given an output amount of an asset and pair reserves, returns a required input amount of the other asset\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {\\n require(amountOut > 0, 'UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT');\\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n uint numerator = reserveIn.mul(amountOut).mul(1000);\\n uint denominator = reserveOut.sub(amountOut).mul(997);\\n amountIn = (numerator / denominator).add(1);\\n }\\n\\n // performs chained getAmountOut calculations on any number of pairs\\n function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {\\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\\n amounts = new uint[](path.length);\\n amounts[0] = amountIn;\\n for (uint i; i < path.length - 1; i++) {\\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]);\\n amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);\\n }\\n }\\n\\n // performs chained getAmountIn calculations on any number of pairs\\n function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {\\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\\n amounts = new uint[](path.length);\\n amounts[amounts.length - 1] = amountOut;\\n for (uint i = path.length - 1; i > 0; i--) {\\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);\\n amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);\\n }\\n }\\n}\\n\\n// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false\\nlibrary TransferHelper {\\n function safeApprove(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('approve(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');\\n }\\n\\n function safeTransfer(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transfer(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');\\n }\\n\\n function safeTransferFrom(address token, address from, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');\\n }\\n\\n function safeTransferETH(address to, uint value) internal {\\n (bool success,) = to.call{value:value}(new bytes(0));\\n require(success, 'TransferHelper: ETH_TRANSFER_FAILED');\\n }\\n}\",\"keccak256\":\"0x1b5e0bbc6654c73ae262f53687cc1c2de95c813c0a3f98f74b1448a36a84d011\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "methods": {} + } + }, + "TransferHelper": { + "abi": [], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220520ecb59f8e3e0bad2bb202479a16cd7c603f854ade7d2f068d7cf5eda9feaf864736f6c63430006060033", + "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE 0xE 0xCB MSIZE 0xF8 0xE3 0xE0 0xBA 0xD2 0xBB KECCAK256 0x24 PUSH26 0xA16CD7C603F854ADE7D2F068D7CF5EDA9FEAF864736F6C634300 MOD MOD STOP CALLER ", + "sourceMap": "31923:1350:0:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220520ecb59f8e3e0bad2bb202479a16cd7c603f854ade7d2f068d7cf5eda9feaf864736f6c63430006060033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE 0xE 0xCB MSIZE 0xF8 0xE3 0xE0 0xBA 0xD2 0xBB KECCAK256 0x24 PUSH26 0xA16CD7C603F854ADE7D2F068D7CF5EDA9FEAF864736F6C634300 MOD MOD STOP CALLER ", + "sourceMap": "31923:1350:0:-:0;;;;;;12:1:-1;9;2:12" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17200", + "executionCost": "97", + "totalCost": "17297" + }, + "internal": { + "safeApprove(address,address,uint256)": "infinite", + "safeTransfer(address,address,uint256)": "infinite", + "safeTransferETH(address,uint256)": "infinite", + "safeTransferFrom(address,address,address,uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/Uniswap/UniswapV2Router02.sol\":\"TransferHelper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Uniswap/UniswapV2Router02.sol\":{\"content\":\"/**\\n *Submitted for verification at Etherscan.io on 2020-06-05\\n*/\\n\\npragma solidity =0.6.6;\\n\\ninterface IUniswapV2Factory {\\n event PairCreated(address indexed token0, address indexed token1, address pair, uint);\\n\\n function feeTo() external view returns (address);\\n function feeToSetter() external view returns (address);\\n\\n function getPair(address tokenA, address tokenB) external view returns (address pair);\\n function allPairs(uint) external view returns (address pair);\\n function allPairsLength() external view returns (uint);\\n\\n function createPair(address tokenA, address tokenB) external returns (address pair);\\n\\n function setFeeTo(address) external;\\n function setFeeToSetter(address) external;\\n}\\n\\ninterface IUniswapV2Pair {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external pure returns (string memory);\\n function symbol() external pure returns (string memory);\\n function decimals() external pure returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n function PERMIT_TYPEHASH() external pure returns (bytes32);\\n function nonces(address owner) external view returns (uint);\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\\n\\n event Mint(address indexed sender, uint amount0, uint amount1);\\n event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\\n event Swap(\\n address indexed sender,\\n uint amount0In,\\n uint amount1In,\\n uint amount0Out,\\n uint amount1Out,\\n address indexed to\\n );\\n event Sync(uint112 reserve0, uint112 reserve1);\\n\\n function MINIMUM_LIQUIDITY() external pure returns (uint);\\n function factory() external view returns (address);\\n function token0() external view returns (address);\\n function token1() external view returns (address);\\n function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\\n function price0CumulativeLast() external view returns (uint);\\n function price1CumulativeLast() external view returns (uint);\\n function kLast() external view returns (uint);\\n\\n function mint(address to) external returns (uint liquidity);\\n function burn(address to) external returns (uint amount0, uint amount1);\\n function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;\\n function skim(address to) external;\\n function sync() external;\\n\\n function initialize(address, address) external;\\n}\\n\\ninterface IUniswapV2Router01 {\\n function factory() external pure returns (address);\\n function WETH() external pure returns (address);\\n\\n function addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB, uint liquidity);\\n function addLiquidityETH(\\n address token,\\n uint amountTokenDesired,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external payable returns (uint amountToken, uint amountETH, uint liquidity);\\n function removeLiquidity(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETH(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountToken, uint amountETH);\\n function removeLiquidityWithPermit(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETHWithPermit(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountToken, uint amountETH);\\n function swapExactTokensForTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapTokensForExactTokens(\\n uint amountOut,\\n uint amountInMax,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n\\n function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);\\n function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);\\n function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);\\n}\\n\\ninterface IUniswapV2Router02 is IUniswapV2Router01 {\\n function removeLiquidityETHSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountETH);\\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountETH);\\n\\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external;\\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external payable;\\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external;\\n}\\n\\ninterface IERC20 {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external view returns (string memory);\\n function symbol() external view returns (string memory);\\n function decimals() external view returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n}\\n\\ninterface IWETH {\\n function deposit() external payable;\\n function transfer(address to, uint value) external returns (bool);\\n function withdraw(uint) external;\\n}\\n\\ncontract UniswapV2Router02 is IUniswapV2Router02 {\\n using SafeMath for uint;\\n\\n address public immutable override factory;\\n address public immutable override WETH;\\n\\n modifier ensure(uint deadline) {\\n require(deadline >= block.timestamp, 'UniswapV2Router: EXPIRED');\\n _;\\n }\\n\\n constructor(address _factory, address _WETH) public {\\n factory = _factory;\\n WETH = _WETH;\\n }\\n\\n receive() external payable {\\n assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract\\n }\\n\\n // **** ADD LIQUIDITY ****\\n function _addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin\\n ) internal virtual returns (uint amountA, uint amountB) {\\n // create the pair if it doesn't exist yet\\n if (IUniswapV2Factory(factory).getPair(tokenA, tokenB) == address(0)) {\\n IUniswapV2Factory(factory).createPair(tokenA, tokenB);\\n }\\n (uint reserveA, uint reserveB) = UniswapV2Library.getReserves(factory, tokenA, tokenB);\\n if (reserveA == 0 && reserveB == 0) {\\n (amountA, amountB) = (amountADesired, amountBDesired);\\n } else {\\n uint amountBOptimal = UniswapV2Library.quote(amountADesired, reserveA, reserveB);\\n if (amountBOptimal <= amountBDesired) {\\n require(amountBOptimal >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\\n (amountA, amountB) = (amountADesired, amountBOptimal);\\n } else {\\n uint amountAOptimal = UniswapV2Library.quote(amountBDesired, reserveB, reserveA);\\n assert(amountAOptimal <= amountADesired);\\n require(amountAOptimal >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\\n (amountA, amountB) = (amountAOptimal, amountBDesired);\\n }\\n }\\n }\\n function addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {\\n (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);\\n TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);\\n liquidity = IUniswapV2Pair(pair).mint(to);\\n }\\n function addLiquidityETH(\\n address token,\\n uint amountTokenDesired,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) {\\n (amountToken, amountETH) = _addLiquidity(\\n token,\\n WETH,\\n amountTokenDesired,\\n msg.value,\\n amountTokenMin,\\n amountETHMin\\n );\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);\\n IWETH(WETH).deposit{value: amountETH}();\\n assert(IWETH(WETH).transfer(pair, amountETH));\\n liquidity = IUniswapV2Pair(pair).mint(to);\\n // refund dust eth, if any\\n if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH);\\n }\\n\\n // **** REMOVE LIQUIDITY ****\\n function removeLiquidity(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n IUniswapV2Pair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair\\n (uint amount0, uint amount1) = IUniswapV2Pair(pair).burn(to);\\n (address token0,) = UniswapV2Library.sortTokens(tokenA, tokenB);\\n (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);\\n require(amountA >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\\n require(amountB >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\\n }\\n function removeLiquidityETH(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountToken, uint amountETH) {\\n (amountToken, amountETH) = removeLiquidity(\\n token,\\n WETH,\\n liquidity,\\n amountTokenMin,\\n amountETHMin,\\n address(this),\\n deadline\\n );\\n TransferHelper.safeTransfer(token, to, amountToken);\\n IWETH(WETH).withdraw(amountETH);\\n TransferHelper.safeTransferETH(to, amountETH);\\n }\\n function removeLiquidityWithPermit(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountA, uint amountB) {\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);\\n }\\n function removeLiquidityETHWithPermit(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountToken, uint amountETH) {\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n (amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline);\\n }\\n\\n // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****\\n function removeLiquidityETHSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountETH) {\\n (, amountETH) = removeLiquidity(\\n token,\\n WETH,\\n liquidity,\\n amountTokenMin,\\n amountETHMin,\\n address(this),\\n deadline\\n );\\n TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this)));\\n IWETH(WETH).withdraw(amountETH);\\n TransferHelper.safeTransferETH(to, amountETH);\\n }\\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountETH) {\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n amountETH = removeLiquidityETHSupportingFeeOnTransferTokens(\\n token, liquidity, amountTokenMin, amountETHMin, to, deadline\\n );\\n }\\n\\n // **** SWAP ****\\n // requires the initial amount to have already been sent to the first pair\\n function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual {\\n for (uint i; i < path.length - 1; i++) {\\n (address input, address output) = (path[i], path[i + 1]);\\n (address token0,) = UniswapV2Library.sortTokens(input, output);\\n uint amountOut = amounts[i + 1];\\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));\\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\\n IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output)).swap(\\n amount0Out, amount1Out, to, new bytes(0)\\n );\\n }\\n }\\n function swapExactTokensForTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, to);\\n }\\n function swapTokensForExactTokens(\\n uint amountOut,\\n uint amountInMax,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, to);\\n }\\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsOut(factory, msg.value, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n IWETH(WETH).deposit{value: amounts[0]}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\\n _swap(amounts, path, to);\\n }\\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, address(this));\\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\\n TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\\n }\\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, address(this));\\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\\n TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\\n }\\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= msg.value, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n IWETH(WETH).deposit{value: amounts[0]}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\\n _swap(amounts, path, to);\\n // refund dust eth, if any\\n if (msg.value > amounts[0]) TransferHelper.safeTransferETH(msg.sender, msg.value - amounts[0]);\\n }\\n\\n // **** SWAP (supporting fee-on-transfer tokens) ****\\n // requires the initial amount to have already been sent to the first pair\\n function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual {\\n for (uint i; i < path.length - 1; i++) {\\n (address input, address output) = (path[i], path[i + 1]);\\n (address token0,) = UniswapV2Library.sortTokens(input, output);\\n IUniswapV2Pair pair = IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output));\\n uint amountInput;\\n uint amountOutput;\\n { // scope to avoid stack too deep errors\\n (uint reserve0, uint reserve1,) = pair.getReserves();\\n (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\\n amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);\\n amountOutput = UniswapV2Library.getAmountOut(amountInput, reserveInput, reserveOutput);\\n }\\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));\\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\\n pair.swap(amount0Out, amount1Out, to, new bytes(0));\\n }\\n }\\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) {\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\\n );\\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\\n _swapSupportingFeeOnTransferTokens(path, to);\\n require(\\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\\n 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\\n );\\n }\\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n )\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n uint amountIn = msg.value;\\n IWETH(WETH).deposit{value: amountIn}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn));\\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\\n _swapSupportingFeeOnTransferTokens(path, to);\\n require(\\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\\n 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\\n );\\n }\\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n )\\n external\\n virtual\\n override\\n ensure(deadline)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\\n );\\n _swapSupportingFeeOnTransferTokens(path, address(this));\\n uint amountOut = IERC20(WETH).balanceOf(address(this));\\n require(amountOut >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n IWETH(WETH).withdraw(amountOut);\\n TransferHelper.safeTransferETH(to, amountOut);\\n }\\n\\n // **** LIBRARY FUNCTIONS ****\\n function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) {\\n return UniswapV2Library.quote(amountA, reserveA, reserveB);\\n }\\n\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)\\n public\\n pure\\n virtual\\n override\\n returns (uint amountOut)\\n {\\n return UniswapV2Library.getAmountOut(amountIn, reserveIn, reserveOut);\\n }\\n\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)\\n public\\n pure\\n virtual\\n override\\n returns (uint amountIn)\\n {\\n return UniswapV2Library.getAmountIn(amountOut, reserveIn, reserveOut);\\n }\\n\\n function getAmountsOut(uint amountIn, address[] memory path)\\n public\\n view\\n virtual\\n override\\n returns (uint[] memory amounts)\\n {\\n return UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n }\\n\\n function getAmountsIn(uint amountOut, address[] memory path)\\n public\\n view\\n virtual\\n override\\n returns (uint[] memory amounts)\\n {\\n return UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n }\\n}\\n\\n// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)\\n\\nlibrary SafeMath {\\n function add(uint x, uint y) internal pure returns (uint z) {\\n require((z = x + y) >= x, 'ds-math-add-overflow');\\n }\\n\\n function sub(uint x, uint y) internal pure returns (uint z) {\\n require((z = x - y) <= x, 'ds-math-sub-underflow');\\n }\\n\\n function mul(uint x, uint y) internal pure returns (uint z) {\\n require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');\\n }\\n}\\n\\nlibrary UniswapV2Library {\\n using SafeMath for uint;\\n\\n // returns sorted token addresses, used to handle return values from pairs sorted in this order\\n function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {\\n require(tokenA != tokenB, 'UniswapV2Library: IDENTICAL_ADDRESSES');\\n (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);\\n require(token0 != address(0), 'UniswapV2Library: ZERO_ADDRESS');\\n }\\n\\n // calculates the CREATE2 address for a pair without making any external calls\\n function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {\\n (address token0, address token1) = sortTokens(tokenA, tokenB);\\n pair = address(uint(keccak256(abi.encodePacked(\\n hex'ff',\\n factory,\\n keccak256(abi.encodePacked(token0, token1)),\\n hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // init code hash\\n ))));\\n }\\n\\n // fetches and sorts the reserves for a pair\\n function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {\\n (address token0,) = sortTokens(tokenA, tokenB);\\n (uint reserve0, uint reserve1,) = IUniswapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves();\\n (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\\n }\\n\\n // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset\\n function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {\\n require(amountA > 0, 'UniswapV2Library: INSUFFICIENT_AMOUNT');\\n require(reserveA > 0 && reserveB > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n amountB = amountA.mul(reserveB) / reserveA;\\n }\\n\\n // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {\\n require(amountIn > 0, 'UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT');\\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n uint amountInWithFee = amountIn.mul(997);\\n uint numerator = amountInWithFee.mul(reserveOut);\\n uint denominator = reserveIn.mul(1000).add(amountInWithFee);\\n amountOut = numerator / denominator;\\n }\\n\\n // given an output amount of an asset and pair reserves, returns a required input amount of the other asset\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {\\n require(amountOut > 0, 'UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT');\\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n uint numerator = reserveIn.mul(amountOut).mul(1000);\\n uint denominator = reserveOut.sub(amountOut).mul(997);\\n amountIn = (numerator / denominator).add(1);\\n }\\n\\n // performs chained getAmountOut calculations on any number of pairs\\n function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {\\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\\n amounts = new uint[](path.length);\\n amounts[0] = amountIn;\\n for (uint i; i < path.length - 1; i++) {\\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]);\\n amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);\\n }\\n }\\n\\n // performs chained getAmountIn calculations on any number of pairs\\n function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {\\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\\n amounts = new uint[](path.length);\\n amounts[amounts.length - 1] = amountOut;\\n for (uint i = path.length - 1; i > 0; i--) {\\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);\\n amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);\\n }\\n }\\n}\\n\\n// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false\\nlibrary TransferHelper {\\n function safeApprove(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('approve(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');\\n }\\n\\n function safeTransfer(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transfer(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');\\n }\\n\\n function safeTransferFrom(address token, address from, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');\\n }\\n\\n function safeTransferETH(address to, uint value) internal {\\n (bool success,) = to.call{value:value}(new bytes(0));\\n require(success, 'TransferHelper: ETH_TRANSFER_FAILED');\\n }\\n}\",\"keccak256\":\"0x1b5e0bbc6654c73ae262f53687cc1c2de95c813c0a3f98f74b1448a36a84d011\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "methods": {} + } + }, + "UniswapV2Library": { + "abi": [], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c7f3ad9bdfa35e5089e23c07e70e12889d54bb59d10a0760a91900de8262b5a664736f6c63430006060033", + "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC7 RETURN 0xAD SWAP12 0xDF LOG3 0x5E POP DUP10 0xE2 EXTCODECOPY SMOD 0xE7 0xE SLT DUP9 SWAP14 SLOAD 0xBB MSIZE 0xD1 EXP SMOD PUSH1 0xA9 NOT STOP 0xDE DUP3 PUSH3 0xB5A664 PUSH20 0x6F6C634300060600330000000000000000000000 ", + "sourceMap": "27477:4333:0:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c7f3ad9bdfa35e5089e23c07e70e12889d54bb59d10a0760a91900de8262b5a664736f6c63430006060033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC7 RETURN 0xAD SWAP12 0xDF LOG3 0x5E POP DUP10 0xE2 EXTCODECOPY SMOD 0xE7 0xE SLT DUP9 SWAP14 SLOAD 0xBB MSIZE 0xD1 EXP SMOD PUSH1 0xA9 NOT STOP 0xDE DUP3 PUSH3 0xB5A664 PUSH20 0x6F6C634300060600330000000000000000000000 ", + "sourceMap": "27477:4333:0:-:0;;;;;;12:1:-1;9;2:12" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17200", + "executionCost": "97", + "totalCost": "17297" + }, + "internal": { + "getAmountIn(uint256,uint256,uint256)": "infinite", + "getAmountOut(uint256,uint256,uint256)": "infinite", + "getAmountsIn(address,uint256,address[] memory)": "infinite", + "getAmountsOut(address,uint256,address[] memory)": "infinite", + "getReserves(address,address,address)": "infinite", + "pairFor(address,address,address)": "infinite", + "quote(uint256,uint256,uint256)": "infinite", + "sortTokens(address,address)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/Uniswap/UniswapV2Router02.sol\":\"UniswapV2Library\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Uniswap/UniswapV2Router02.sol\":{\"content\":\"/**\\n *Submitted for verification at Etherscan.io on 2020-06-05\\n*/\\n\\npragma solidity =0.6.6;\\n\\ninterface IUniswapV2Factory {\\n event PairCreated(address indexed token0, address indexed token1, address pair, uint);\\n\\n function feeTo() external view returns (address);\\n function feeToSetter() external view returns (address);\\n\\n function getPair(address tokenA, address tokenB) external view returns (address pair);\\n function allPairs(uint) external view returns (address pair);\\n function allPairsLength() external view returns (uint);\\n\\n function createPair(address tokenA, address tokenB) external returns (address pair);\\n\\n function setFeeTo(address) external;\\n function setFeeToSetter(address) external;\\n}\\n\\ninterface IUniswapV2Pair {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external pure returns (string memory);\\n function symbol() external pure returns (string memory);\\n function decimals() external pure returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n function PERMIT_TYPEHASH() external pure returns (bytes32);\\n function nonces(address owner) external view returns (uint);\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\\n\\n event Mint(address indexed sender, uint amount0, uint amount1);\\n event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\\n event Swap(\\n address indexed sender,\\n uint amount0In,\\n uint amount1In,\\n uint amount0Out,\\n uint amount1Out,\\n address indexed to\\n );\\n event Sync(uint112 reserve0, uint112 reserve1);\\n\\n function MINIMUM_LIQUIDITY() external pure returns (uint);\\n function factory() external view returns (address);\\n function token0() external view returns (address);\\n function token1() external view returns (address);\\n function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\\n function price0CumulativeLast() external view returns (uint);\\n function price1CumulativeLast() external view returns (uint);\\n function kLast() external view returns (uint);\\n\\n function mint(address to) external returns (uint liquidity);\\n function burn(address to) external returns (uint amount0, uint amount1);\\n function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;\\n function skim(address to) external;\\n function sync() external;\\n\\n function initialize(address, address) external;\\n}\\n\\ninterface IUniswapV2Router01 {\\n function factory() external pure returns (address);\\n function WETH() external pure returns (address);\\n\\n function addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB, uint liquidity);\\n function addLiquidityETH(\\n address token,\\n uint amountTokenDesired,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external payable returns (uint amountToken, uint amountETH, uint liquidity);\\n function removeLiquidity(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETH(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountToken, uint amountETH);\\n function removeLiquidityWithPermit(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETHWithPermit(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountToken, uint amountETH);\\n function swapExactTokensForTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapTokensForExactTokens(\\n uint amountOut,\\n uint amountInMax,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n\\n function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);\\n function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);\\n function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);\\n}\\n\\ninterface IUniswapV2Router02 is IUniswapV2Router01 {\\n function removeLiquidityETHSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountETH);\\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountETH);\\n\\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external;\\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external payable;\\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external;\\n}\\n\\ninterface IERC20 {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external view returns (string memory);\\n function symbol() external view returns (string memory);\\n function decimals() external view returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n}\\n\\ninterface IWETH {\\n function deposit() external payable;\\n function transfer(address to, uint value) external returns (bool);\\n function withdraw(uint) external;\\n}\\n\\ncontract UniswapV2Router02 is IUniswapV2Router02 {\\n using SafeMath for uint;\\n\\n address public immutable override factory;\\n address public immutable override WETH;\\n\\n modifier ensure(uint deadline) {\\n require(deadline >= block.timestamp, 'UniswapV2Router: EXPIRED');\\n _;\\n }\\n\\n constructor(address _factory, address _WETH) public {\\n factory = _factory;\\n WETH = _WETH;\\n }\\n\\n receive() external payable {\\n assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract\\n }\\n\\n // **** ADD LIQUIDITY ****\\n function _addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin\\n ) internal virtual returns (uint amountA, uint amountB) {\\n // create the pair if it doesn't exist yet\\n if (IUniswapV2Factory(factory).getPair(tokenA, tokenB) == address(0)) {\\n IUniswapV2Factory(factory).createPair(tokenA, tokenB);\\n }\\n (uint reserveA, uint reserveB) = UniswapV2Library.getReserves(factory, tokenA, tokenB);\\n if (reserveA == 0 && reserveB == 0) {\\n (amountA, amountB) = (amountADesired, amountBDesired);\\n } else {\\n uint amountBOptimal = UniswapV2Library.quote(amountADesired, reserveA, reserveB);\\n if (amountBOptimal <= amountBDesired) {\\n require(amountBOptimal >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\\n (amountA, amountB) = (amountADesired, amountBOptimal);\\n } else {\\n uint amountAOptimal = UniswapV2Library.quote(amountBDesired, reserveB, reserveA);\\n assert(amountAOptimal <= amountADesired);\\n require(amountAOptimal >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\\n (amountA, amountB) = (amountAOptimal, amountBDesired);\\n }\\n }\\n }\\n function addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {\\n (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);\\n TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);\\n liquidity = IUniswapV2Pair(pair).mint(to);\\n }\\n function addLiquidityETH(\\n address token,\\n uint amountTokenDesired,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) {\\n (amountToken, amountETH) = _addLiquidity(\\n token,\\n WETH,\\n amountTokenDesired,\\n msg.value,\\n amountTokenMin,\\n amountETHMin\\n );\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);\\n IWETH(WETH).deposit{value: amountETH}();\\n assert(IWETH(WETH).transfer(pair, amountETH));\\n liquidity = IUniswapV2Pair(pair).mint(to);\\n // refund dust eth, if any\\n if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH);\\n }\\n\\n // **** REMOVE LIQUIDITY ****\\n function removeLiquidity(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n IUniswapV2Pair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair\\n (uint amount0, uint amount1) = IUniswapV2Pair(pair).burn(to);\\n (address token0,) = UniswapV2Library.sortTokens(tokenA, tokenB);\\n (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);\\n require(amountA >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\\n require(amountB >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\\n }\\n function removeLiquidityETH(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountToken, uint amountETH) {\\n (amountToken, amountETH) = removeLiquidity(\\n token,\\n WETH,\\n liquidity,\\n amountTokenMin,\\n amountETHMin,\\n address(this),\\n deadline\\n );\\n TransferHelper.safeTransfer(token, to, amountToken);\\n IWETH(WETH).withdraw(amountETH);\\n TransferHelper.safeTransferETH(to, amountETH);\\n }\\n function removeLiquidityWithPermit(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountA, uint amountB) {\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);\\n }\\n function removeLiquidityETHWithPermit(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountToken, uint amountETH) {\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n (amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline);\\n }\\n\\n // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****\\n function removeLiquidityETHSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountETH) {\\n (, amountETH) = removeLiquidity(\\n token,\\n WETH,\\n liquidity,\\n amountTokenMin,\\n amountETHMin,\\n address(this),\\n deadline\\n );\\n TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this)));\\n IWETH(WETH).withdraw(amountETH);\\n TransferHelper.safeTransferETH(to, amountETH);\\n }\\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountETH) {\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n amountETH = removeLiquidityETHSupportingFeeOnTransferTokens(\\n token, liquidity, amountTokenMin, amountETHMin, to, deadline\\n );\\n }\\n\\n // **** SWAP ****\\n // requires the initial amount to have already been sent to the first pair\\n function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual {\\n for (uint i; i < path.length - 1; i++) {\\n (address input, address output) = (path[i], path[i + 1]);\\n (address token0,) = UniswapV2Library.sortTokens(input, output);\\n uint amountOut = amounts[i + 1];\\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));\\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\\n IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output)).swap(\\n amount0Out, amount1Out, to, new bytes(0)\\n );\\n }\\n }\\n function swapExactTokensForTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, to);\\n }\\n function swapTokensForExactTokens(\\n uint amountOut,\\n uint amountInMax,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, to);\\n }\\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsOut(factory, msg.value, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n IWETH(WETH).deposit{value: amounts[0]}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\\n _swap(amounts, path, to);\\n }\\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, address(this));\\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\\n TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\\n }\\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, address(this));\\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\\n TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\\n }\\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= msg.value, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n IWETH(WETH).deposit{value: amounts[0]}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\\n _swap(amounts, path, to);\\n // refund dust eth, if any\\n if (msg.value > amounts[0]) TransferHelper.safeTransferETH(msg.sender, msg.value - amounts[0]);\\n }\\n\\n // **** SWAP (supporting fee-on-transfer tokens) ****\\n // requires the initial amount to have already been sent to the first pair\\n function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual {\\n for (uint i; i < path.length - 1; i++) {\\n (address input, address output) = (path[i], path[i + 1]);\\n (address token0,) = UniswapV2Library.sortTokens(input, output);\\n IUniswapV2Pair pair = IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output));\\n uint amountInput;\\n uint amountOutput;\\n { // scope to avoid stack too deep errors\\n (uint reserve0, uint reserve1,) = pair.getReserves();\\n (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\\n amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);\\n amountOutput = UniswapV2Library.getAmountOut(amountInput, reserveInput, reserveOutput);\\n }\\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));\\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\\n pair.swap(amount0Out, amount1Out, to, new bytes(0));\\n }\\n }\\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) {\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\\n );\\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\\n _swapSupportingFeeOnTransferTokens(path, to);\\n require(\\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\\n 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\\n );\\n }\\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n )\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n uint amountIn = msg.value;\\n IWETH(WETH).deposit{value: amountIn}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn));\\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\\n _swapSupportingFeeOnTransferTokens(path, to);\\n require(\\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\\n 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\\n );\\n }\\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n )\\n external\\n virtual\\n override\\n ensure(deadline)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\\n );\\n _swapSupportingFeeOnTransferTokens(path, address(this));\\n uint amountOut = IERC20(WETH).balanceOf(address(this));\\n require(amountOut >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n IWETH(WETH).withdraw(amountOut);\\n TransferHelper.safeTransferETH(to, amountOut);\\n }\\n\\n // **** LIBRARY FUNCTIONS ****\\n function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) {\\n return UniswapV2Library.quote(amountA, reserveA, reserveB);\\n }\\n\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)\\n public\\n pure\\n virtual\\n override\\n returns (uint amountOut)\\n {\\n return UniswapV2Library.getAmountOut(amountIn, reserveIn, reserveOut);\\n }\\n\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)\\n public\\n pure\\n virtual\\n override\\n returns (uint amountIn)\\n {\\n return UniswapV2Library.getAmountIn(amountOut, reserveIn, reserveOut);\\n }\\n\\n function getAmountsOut(uint amountIn, address[] memory path)\\n public\\n view\\n virtual\\n override\\n returns (uint[] memory amounts)\\n {\\n return UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n }\\n\\n function getAmountsIn(uint amountOut, address[] memory path)\\n public\\n view\\n virtual\\n override\\n returns (uint[] memory amounts)\\n {\\n return UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n }\\n}\\n\\n// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)\\n\\nlibrary SafeMath {\\n function add(uint x, uint y) internal pure returns (uint z) {\\n require((z = x + y) >= x, 'ds-math-add-overflow');\\n }\\n\\n function sub(uint x, uint y) internal pure returns (uint z) {\\n require((z = x - y) <= x, 'ds-math-sub-underflow');\\n }\\n\\n function mul(uint x, uint y) internal pure returns (uint z) {\\n require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');\\n }\\n}\\n\\nlibrary UniswapV2Library {\\n using SafeMath for uint;\\n\\n // returns sorted token addresses, used to handle return values from pairs sorted in this order\\n function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {\\n require(tokenA != tokenB, 'UniswapV2Library: IDENTICAL_ADDRESSES');\\n (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);\\n require(token0 != address(0), 'UniswapV2Library: ZERO_ADDRESS');\\n }\\n\\n // calculates the CREATE2 address for a pair without making any external calls\\n function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {\\n (address token0, address token1) = sortTokens(tokenA, tokenB);\\n pair = address(uint(keccak256(abi.encodePacked(\\n hex'ff',\\n factory,\\n keccak256(abi.encodePacked(token0, token1)),\\n hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // init code hash\\n ))));\\n }\\n\\n // fetches and sorts the reserves for a pair\\n function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {\\n (address token0,) = sortTokens(tokenA, tokenB);\\n (uint reserve0, uint reserve1,) = IUniswapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves();\\n (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\\n }\\n\\n // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset\\n function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {\\n require(amountA > 0, 'UniswapV2Library: INSUFFICIENT_AMOUNT');\\n require(reserveA > 0 && reserveB > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n amountB = amountA.mul(reserveB) / reserveA;\\n }\\n\\n // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {\\n require(amountIn > 0, 'UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT');\\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n uint amountInWithFee = amountIn.mul(997);\\n uint numerator = amountInWithFee.mul(reserveOut);\\n uint denominator = reserveIn.mul(1000).add(amountInWithFee);\\n amountOut = numerator / denominator;\\n }\\n\\n // given an output amount of an asset and pair reserves, returns a required input amount of the other asset\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {\\n require(amountOut > 0, 'UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT');\\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n uint numerator = reserveIn.mul(amountOut).mul(1000);\\n uint denominator = reserveOut.sub(amountOut).mul(997);\\n amountIn = (numerator / denominator).add(1);\\n }\\n\\n // performs chained getAmountOut calculations on any number of pairs\\n function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {\\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\\n amounts = new uint[](path.length);\\n amounts[0] = amountIn;\\n for (uint i; i < path.length - 1; i++) {\\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]);\\n amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);\\n }\\n }\\n\\n // performs chained getAmountIn calculations on any number of pairs\\n function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {\\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\\n amounts = new uint[](path.length);\\n amounts[amounts.length - 1] = amountOut;\\n for (uint i = path.length - 1; i > 0; i--) {\\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);\\n amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);\\n }\\n }\\n}\\n\\n// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false\\nlibrary TransferHelper {\\n function safeApprove(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('approve(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');\\n }\\n\\n function safeTransfer(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transfer(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');\\n }\\n\\n function safeTransferFrom(address token, address from, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');\\n }\\n\\n function safeTransferETH(address to, uint value) internal {\\n (bool success,) = to.call{value:value}(new bytes(0));\\n require(success, 'TransferHelper: ETH_TRANSFER_FAILED');\\n }\\n}\",\"keccak256\":\"0x1b5e0bbc6654c73ae262f53687cc1c2de95c813c0a3f98f74b1448a36a84d011\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "methods": {} + } + }, + "UniswapV2Router02": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_factory", + "type": "address" + }, + { + "internalType": "address", + "name": "_WETH", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "WETH", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountTokenDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveB", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETHSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapETHForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETHSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "60c06040523480156200001157600080fd5b506040516200573e3803806200573e833981810160405260408110156200003757600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c6155b762000187600039806101ac5280610e5d5280610e985280610fd5528061129852806116f252806118d65280611e1e5280611fa252806120725280612179528061232c52806123c15280612673528061271a52806127ef52806128f452806129dc5280612a5d52806130ec5280613422528061347852806134ac528061352d528061374752806138f7528061398c5250806110c752806111c5528061136b52806113a4528061154f52806117e452806118b45280611aa1528061225f528061240052806125a95280612a9c5280612ddf5280613071528061309a52806130ca52806132a75280613456528061382d52806139cb528061444a528061448d52806147ed52806149ce5280614f49528061502a52806150aa52506155b76000f3fe60806040526004361061018f5760003560e01c80638803dbee116100d6578063c45a01551161007f578063e8e3370011610059578063e8e3370014610c71578063f305d71914610cfe578063fb3bdb4114610d51576101d5565b8063c45a015514610b25578063d06ca61f14610b3a578063ded9382a14610bf1576101d5565b8063af2979eb116100b0578063af2979eb146109c8578063b6f9de9514610a28578063baa2abde14610abb576101d5565b80638803dbee146108af578063ad5c464814610954578063ad615dec14610992576101d5565b80634a25d94a11610138578063791ac94711610112578063791ac947146107415780637ff36ab5146107e657806385f8c25914610879576101d5565b80634a25d94a146105775780635b0d59841461061c5780635c11d7951461069c576101d5565b80631f00ca74116101695780631f00ca74146103905780632195995c1461044757806338ed1739146104d2576101d5565b806302751cec146101da578063054d50d41461025357806318cbafe51461029b576101d5565b366101d5573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101d357fe5b005b600080fd5b3480156101e657600080fd5b5061023a600480360360c08110156101fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610de4565b6040805192835260208301919091528051918290030190f35b34801561025f57600080fd5b506102896004803603606081101561027657600080fd5b5080359060208101359060400135610f37565b60408051918252519081900360200190f35b3480156102a757600080fd5b50610340600480360360a08110156102be57600080fd5b8135916020810135918101906060810160408201356401000000008111156102e557600080fd5b8201836020820111156102f757600080fd5b8035906020019184602083028401116401000000008311171561031957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f4c565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561037c578181015183820152602001610364565b505050509050019250505060405180910390f35b34801561039c57600080fd5b50610340600480360360408110156103b357600080fd5b813591908101906040810160208201356401000000008111156103d557600080fd5b8201836020820111156103e757600080fd5b8035906020019184602083028401116401000000008311171561040957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611364945050505050565b34801561045357600080fd5b5061023a600480360361016081101561046b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561139a565b3480156104de57600080fd5b50610340600480360360a08110156104f557600080fd5b81359160208101359181019060608101604082013564010000000081111561051c57600080fd5b82018360208201111561052e57600080fd5b8035906020019184602083028401116401000000008311171561055057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356114d8565b34801561058357600080fd5b50610340600480360360a081101561059a57600080fd5b8135916020810135918101906060810160408201356401000000008111156105c157600080fd5b8201836020820111156105d357600080fd5b803590602001918460208302840111640100000000831117156105f557600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611669565b34801561062857600080fd5b50610289600480360361014081101561064057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356118ac565b3480156106a857600080fd5b506101d3600480360360a08110156106bf57600080fd5b8135916020810135918101906060810160408201356401000000008111156106e657600080fd5b8201836020820111156106f857600080fd5b8035906020019184602083028401116401000000008311171561071a57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356119fe565b34801561074d57600080fd5b506101d3600480360360a081101561076457600080fd5b81359160208101359181019060608101604082013564010000000081111561078b57600080fd5b82018360208201111561079d57600080fd5b803590602001918460208302840111640100000000831117156107bf57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611d97565b610340600480360360808110156107fc57600080fd5b8135919081019060408101602082013564010000000081111561081e57600080fd5b82018360208201111561083057600080fd5b8035906020019184602083028401116401000000008311171561085257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612105565b34801561088557600080fd5b506102896004803603606081101561089c57600080fd5b5080359060208101359060400135612525565b3480156108bb57600080fd5b50610340600480360360a08110156108d257600080fd5b8135916020810135918101906060810160408201356401000000008111156108f957600080fd5b82018360208201111561090b57600080fd5b8035906020019184602083028401116401000000008311171561092d57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612532565b34801561096057600080fd5b50610969612671565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561099e57600080fd5b50610289600480360360608110156109b557600080fd5b5080359060208101359060400135612695565b3480156109d457600080fd5b50610289600480360360c08110156109eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356126a2565b6101d360048036036080811015610a3e57600080fd5b81359190810190604081016020820135640100000000811115610a6057600080fd5b820183602082011115610a7257600080fd5b80359060200191846020830284011164010000000083111715610a9457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612882565b348015610ac757600080fd5b5061023a600480360360e0811015610ade57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612d65565b348015610b3157600080fd5b5061096961306f565b348015610b4657600080fd5b5061034060048036036040811015610b5d57600080fd5b81359190810190604081016020820135640100000000811115610b7f57600080fd5b820183602082011115610b9157600080fd5b80359060200191846020830284011164010000000083111715610bb357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613093945050505050565b348015610bfd57600080fd5b5061023a6004803603610140811015610c1557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356130c0565b348015610c7d57600080fd5b50610ce06004803603610100811015610c9557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135613218565b60408051938452602084019290925282820152519081900360600190f35b610ce0600480360360c0811015610d1457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356133a7565b61034060048036036080811015610d6757600080fd5b81359190810190604081016020820135640100000000811115610d8957600080fd5b820183602082011115610d9b57600080fd5b80359060200191846020830284011164010000000083111715610dbd57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356136d3565b6000808242811015610e5757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b610e86897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a612d65565b9093509150610e96898685613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050610f2b8583613cff565b50965096945050505050565b6000610f44848484613e3c565b949350505050565b60608142811015610fbe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061102357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6111207f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b9150868260018451038151811061113357fe5b60200260200101511015611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b611257868660008181106111a257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff163361123d7f00000000000000000000000000000000000000000000000000000000000000008a8a60008181106111f157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b600181811061121b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166140c6565b8560008151811061124a57fe5b60200260200101516141b1565b61129682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614381915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836001855103815181106112e257fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561132057600080fd5b505af1158015611334573d6000803e3d6000fd5b50505050611359848360018551038151811061134c57fe5b6020026020010151613cff565b509695505050505050565b60606113917f00000000000000000000000000000000000000000000000000000000000000008484614608565b90505b92915050565b60008060006113ca7f00000000000000000000000000000000000000000000000000000000000000008f8f6140c6565b90506000876113d9578c6113fb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561149757600080fd5b505af11580156114ab573d6000803e3d6000fd5b505050506114be8f8f8f8f8f8f8f612d65565b809450819550505050509b509b9950505050505050505050565b6060814281101561154a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6115a87f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b915086826001845103815181106115bb57fe5b6020026020010151101561161a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b61162a868660008181106111a257fe5b61135982878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b606081428110156116db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061174057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117df57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b61183d7f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150868260008151811061184d57fe5b60200260200101511115611192576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b6000806118fa7f00000000000000000000000000000000000000000000000000000000000000008d7f00000000000000000000000000000000000000000000000000000000000000006140c6565b9050600086611909578b61192b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c48101879052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156119c757600080fd5b505af11580156119db573d6000803e3d6000fd5b505050506119ed8d8d8d8d8d8d6126a2565b9d9c50505050505050505050505050565b8042811015611a6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b611afd85856000818110611a7e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633611af77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a600181811061121b57fe5b8a6141b1565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611b2d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bc657600080fd5b505afa158015611bda573d6000803e3d6000fd5b505050506040513d6020811015611bf057600080fd5b50516040805160208881028281018201909352888252929350611c32929091899189918291850190849080828437600092019190915250889250614796915050565b86611d368288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611c6557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b505afa158015611d12573d6000803e3d6000fd5b505050506040513d6020811015611d2857600080fd5b50519063ffffffff614b2916565b1015611d8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b5050505050505050565b8042811015611e0757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611e6c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b611f1b85856000818110611a7e57fe5b611f59858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614796915050565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015611fe957600080fd5b505afa158015611ffd573d6000803e3d6000fd5b505050506040513d602081101561201357600080fd5b5051905086811015612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156120e357600080fd5b505af11580156120f7573d6000803e3d6000fd5b50505050611d8d8482613cff565b6060814281101561217757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16868660008181106121bb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6122b87f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b915086826001845103815181106122cb57fe5b6020026020010151101561232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061237357fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156123a657600080fd5b505af11580156123ba573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61242c7f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b8460008151811061243957fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156124aa57600080fd5b505af11580156124be573d6000803e3d6000fd5b505050506040513d60208110156124d457600080fd5b50516124dc57fe5b61251b82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b5095945050505050565b6000610f44848484614b9b565b606081428110156125a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6126027f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150868260008151811061261257fe5b6020026020010151111561161a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610f44848484614cbf565b6000814281101561271457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b612743887f00000000000000000000000000000000000000000000000000000000000000008989893089612d65565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519194506127ed92508a91879173ffffffffffffffffffffffffffffffffffffffff8416916370a0823191602480820192602092909190829003018186803b1580156127bc57600080fd5b505afa1580156127d0573d6000803e3d6000fd5b505050506040513d60208110156127e657600080fd5b5051613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b505050506113598483613cff565b80428110156128f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168585600081811061293657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b60003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a4257600080fd5b505af1158015612a56573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612ac87f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b3257600080fd5b505af1158015612b46573d6000803e3d6000fd5b505050506040513d6020811015612b5c57600080fd5b5051612b6457fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612b9457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c2d57600080fd5b505afa158015612c41573d6000803e3d6000fd5b505050506040513d6020811015612c5757600080fd5b50516040805160208981028281018201909352898252929350612c999290918a918a918291850190849080828437600092019190915250899250614796915050565b87611d368289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612ccc57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b6000808242811015612dd857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000612e057f00000000000000000000000000000000000000000000000000000000000000008c8c6140c6565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612e8657600080fd5b505af1158015612e9a573d6000803e3d6000fd5b505050506040513d6020811015612eb057600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b505050506040513d6040811015612f4d57600080fd5b50805160209091015190925090506000612f678e8e614d9f565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614612fa4578183612fa7565b82825b90975095508a871015613005576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154bf6026913960400191505060405180910390fd5b8986101561305e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154256026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606113917f00000000000000000000000000000000000000000000000000000000000000008484613f60565b60008060006131107f00000000000000000000000000000000000000000000000000000000000000008e7f00000000000000000000000000000000000000000000000000000000000000006140c6565b905060008761311f578c613141565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050506132038e8e8e8e8e8e610de4565b909f909e509c50505050505050505050505050565b6000806000834281101561328d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61329b8c8c8c8c8c8c614ef2565b909450925060006132cd7f00000000000000000000000000000000000000000000000000000000000000008e8e6140c6565b90506132db8d3383886141b1565b6132e78c3383876141b1565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561336657600080fd5b505af115801561337a573d6000803e3d6000fd5b505050506040513d602081101561339057600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561341c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61344a8a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c614ef2565b9094509250600061349c7f00000000000000000000000000000000000000000000000000000000000000008c7f00000000000000000000000000000000000000000000000000000000000000006140c6565b90506134aa8b3383886141b1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561351257600080fd5b505af1158015613526573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156135d257600080fd5b505af11580156135e6573d6000803e3d6000fd5b505050506040513d60208110156135fc57600080fd5b505161360457fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561368357600080fd5b505af1158015613697573d6000803e3d6000fd5b505050506040513d60208110156136ad57600080fd5b50519250348410156136c5576136c533853403613cff565b505096509650969350505050565b6060814281101561374557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061378957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461382857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6138867f00000000000000000000000000000000000000000000000000000000000000008888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150348260008151811061389657fe5b602002602001015111156138f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061393e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561397157600080fd5b505af1158015613985573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6139f77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b84600081518110613a0457fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613a7557600080fd5b505af1158015613a89573d6000803e3d6000fd5b505050506040513d6020811015613a9f57600080fd5b5051613aa757fe5b613ae682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b81600081518110613af357fe5b602002602001015134111561251b5761251b3383600081518110613b1357fe5b60200260200101513403613cff565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613bf857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613bbb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c5a576040519150601f19603f3d011682016040523d82523d6000602084013e613c5f565b606091505b5091509150818015613c8d575080511580613c8d5750808060200190516020811015613c8a57600080fd5b50515b613cf857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310613d7657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613d39565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613dd8576040519150601f19603f3d011682016040523d82523d6000602084013e613ddd565b606091505b5050905080613e37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806154e56023913960400191505060405180910390fd5b505050565b6000808411613e96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615557602b913960400191505060405180910390fd5b600083118015613ea65750600082115b613efb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b6000613f0f856103e563ffffffff6151f316565b90506000613f23828563ffffffff6151f316565b90506000613f4983613f3d886103e863ffffffff6151f316565b9063ffffffff61527916565b9050808281613f5457fe5b04979650505050505050565b6060600282511015613fd357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff81118015613feb57600080fd5b50604051908082528060200260200182016040528015614015578160200160208202803683370190505b509050828160008151811061402657fe5b60200260200101818152505060005b60018351038110156140be576000806140788786858151811061405457fe5b602002602001015187866001018151811061406b57fe5b60200260200101516152eb565b9150915061409a84848151811061408b57fe5b60200260200101518383613e3c565b8484600101815181106140a957fe5b60209081029190910101525050600101614035565b509392505050565b60008060006140d58585614d9f565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061428f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101614252565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146142f1576040519150601f19603f3d011682016040523d82523d6000602084013e6142f6565b606091505b5091509150818015614324575080511580614324575080806020019051602081101561432157600080fd5b50515b614379576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806155336024913960400191505060405180910390fd5b505050505050565b60005b60018351038110156146025760008084838151811061439f57fe5b60200260200101518584600101815181106143b657fe5b60200260200101519150915060006143ce8383614d9f565b50905060008785600101815181106143e257fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461442a5782600061442e565b6000835b91509150600060028a510388106144455788614486565b6144867f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061447957fe5b60200260200101516140c6565b90506144b37f000000000000000000000000000000000000000000000000000000000000000088886140c6565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156144fd576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614588578181015183820152602001614570565b50505050905090810190601f1680156145b55780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156145d757600080fd5b505af11580156145eb573d6000803e3d6000fd5b505060019099019850614384975050505050505050565b50505050565b606060028251101561467b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561469357600080fd5b506040519080825280602002602001820160405280156146bd578160200160208202803683370190505b50905082816001835103815181106146d157fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b80156140be576000806147318786600186038151811061471d57fe5b602002602001015187868151811061406b57fe5b9150915061475384848151811061474457fe5b60200260200101518383614b9b565b84600185038151811061476257fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01614701565b60005b6001835103811015613e37576000808483815181106147b457fe5b60200260200101518584600101815181106147cb57fe5b60200260200101519150915060006147e38383614d9f565b50905060006148137f000000000000000000000000000000000000000000000000000000000000000085856140c6565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561486157600080fd5b505afa158015614875573d6000803e3d6000fd5b505050506040513d606081101561488b57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060008073ffffffffffffffffffffffffffffffffffffffff8a8116908916146148d55782846148d8565b83835b9150915061495d828b73ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b955061496a868383613e3c565b9450505050506000808573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146149ae578260006149b2565b6000835b91509150600060028c51038a106149c9578a6149fd565b6149fd7f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061447957fe5b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018781526044830187905273ffffffffffffffffffffffffffffffffffffffff8086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015614aad578181015183820152602001614a95565b50505050905090810190601f168015614ada5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614afc57600080fd5b505af1158015614b10573d6000803e3d6000fd5b50506001909b019a506147999950505050505050505050565b8082038281111561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6000808411614bf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806153d4602c913960400191505060405180910390fd5b600083118015614c055750600082115b614c5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b6000614c7e6103e8614c72868863ffffffff6151f316565b9063ffffffff6151f316565b90506000614c986103e5614c72868963ffffffff614b2916565b9050614cb56001828481614ca857fe5b049063ffffffff61527916565b9695505050505050565b6000808411614d19576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154736025913960400191505060405180910390fd5b600083118015614d295750600082115b614d7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b82614d8f858463ffffffff6151f316565b81614d9657fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614e27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154006025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610614e61578284614e64565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216614eeb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015614f9257600080fd5b505afa158015614fa6573d6000803e3d6000fd5b505050506040513d6020811015614fbc57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614156150a257604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b15801561507557600080fd5b505af1158015615089573d6000803e3d6000fd5b505050506040513d602081101561509f57600080fd5b50505b6000806150d07f00000000000000000000000000000000000000000000000000000000000000008b8b6152eb565b915091508160001480156150e2575080155b156150f2578793508692506151e6565b60006150ff898484614cbf565b905087811161516c5785811015615161576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154256026913960400191505060405180910390fd5b8894509250826151e4565b6000615179898486614cbf565b90508981111561518557fe5b878110156151de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154bf6026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b600081158061520e5750508082028282828161520b57fe5b04145b61139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60008060006152fa8585614d9f565b50905060008061530b8888886140c6565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561535057600080fd5b505afa158015615364573d6000803e3d6000fd5b505050506040513d606081101561537a57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146153c15780826153c4565b81815b9099909850965050505050505056fe556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553556e69737761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459556e697377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54556e69737761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f415f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54a2646970667358221220bcafbb1ae9cb5c3e22b6cc4ee4df3fcf6660cbbf0a654915003877e42ba956ac64736f6c63430006060033", + "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x573E CODESIZE SUB DUP1 PUSH3 0x573E DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x55B7 PUSH3 0x187 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1AC MSTORE DUP1 PUSH2 0xE5D MSTORE DUP1 PUSH2 0xE98 MSTORE DUP1 PUSH2 0xFD5 MSTORE DUP1 PUSH2 0x1298 MSTORE DUP1 PUSH2 0x16F2 MSTORE DUP1 PUSH2 0x18D6 MSTORE DUP1 PUSH2 0x1E1E MSTORE DUP1 PUSH2 0x1FA2 MSTORE DUP1 PUSH2 0x2072 MSTORE DUP1 PUSH2 0x2179 MSTORE DUP1 PUSH2 0x232C MSTORE DUP1 PUSH2 0x23C1 MSTORE DUP1 PUSH2 0x2673 MSTORE DUP1 PUSH2 0x271A MSTORE DUP1 PUSH2 0x27EF MSTORE DUP1 PUSH2 0x28F4 MSTORE DUP1 PUSH2 0x29DC MSTORE DUP1 PUSH2 0x2A5D MSTORE DUP1 PUSH2 0x30EC MSTORE DUP1 PUSH2 0x3422 MSTORE DUP1 PUSH2 0x3478 MSTORE DUP1 PUSH2 0x34AC MSTORE DUP1 PUSH2 0x352D MSTORE DUP1 PUSH2 0x3747 MSTORE DUP1 PUSH2 0x38F7 MSTORE DUP1 PUSH2 0x398C MSTORE POP DUP1 PUSH2 0x10C7 MSTORE DUP1 PUSH2 0x11C5 MSTORE DUP1 PUSH2 0x136B MSTORE DUP1 PUSH2 0x13A4 MSTORE DUP1 PUSH2 0x154F MSTORE DUP1 PUSH2 0x17E4 MSTORE DUP1 PUSH2 0x18B4 MSTORE DUP1 PUSH2 0x1AA1 MSTORE DUP1 PUSH2 0x225F MSTORE DUP1 PUSH2 0x2400 MSTORE DUP1 PUSH2 0x25A9 MSTORE DUP1 PUSH2 0x2A9C MSTORE DUP1 PUSH2 0x2DDF MSTORE DUP1 PUSH2 0x3071 MSTORE DUP1 PUSH2 0x309A MSTORE DUP1 PUSH2 0x30CA MSTORE DUP1 PUSH2 0x32A7 MSTORE DUP1 PUSH2 0x3456 MSTORE DUP1 PUSH2 0x382D MSTORE DUP1 PUSH2 0x39CB MSTORE DUP1 PUSH2 0x444A MSTORE DUP1 PUSH2 0x448D MSTORE DUP1 PUSH2 0x47ED MSTORE DUP1 PUSH2 0x49CE MSTORE DUP1 PUSH2 0x4F49 MSTORE DUP1 PUSH2 0x502A MSTORE DUP1 PUSH2 0x50AA MSTORE POP PUSH2 0x55B7 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x18F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8803DBEE GT PUSH2 0xD6 JUMPI DUP1 PUSH4 0xC45A0155 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xE8E33700 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xE8E33700 EQ PUSH2 0xC71 JUMPI DUP1 PUSH4 0xF305D719 EQ PUSH2 0xCFE JUMPI DUP1 PUSH4 0xFB3BDB41 EQ PUSH2 0xD51 JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0xC45A0155 EQ PUSH2 0xB25 JUMPI DUP1 PUSH4 0xD06CA61F EQ PUSH2 0xB3A JUMPI DUP1 PUSH4 0xDED9382A EQ PUSH2 0xBF1 JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0xAF2979EB GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0xAF2979EB EQ PUSH2 0x9C8 JUMPI DUP1 PUSH4 0xB6F9DE95 EQ PUSH2 0xA28 JUMPI DUP1 PUSH4 0xBAA2ABDE EQ PUSH2 0xABB JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0x8803DBEE EQ PUSH2 0x8AF JUMPI DUP1 PUSH4 0xAD5C4648 EQ PUSH2 0x954 JUMPI DUP1 PUSH4 0xAD615DEC EQ PUSH2 0x992 JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0x4A25D94A GT PUSH2 0x138 JUMPI DUP1 PUSH4 0x791AC947 GT PUSH2 0x112 JUMPI DUP1 PUSH4 0x791AC947 EQ PUSH2 0x741 JUMPI DUP1 PUSH4 0x7FF36AB5 EQ PUSH2 0x7E6 JUMPI DUP1 PUSH4 0x85F8C259 EQ PUSH2 0x879 JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0x4A25D94A EQ PUSH2 0x577 JUMPI DUP1 PUSH4 0x5B0D5984 EQ PUSH2 0x61C JUMPI DUP1 PUSH4 0x5C11D795 EQ PUSH2 0x69C JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0x1F00CA74 GT PUSH2 0x169 JUMPI DUP1 PUSH4 0x1F00CA74 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0x2195995C EQ PUSH2 0x447 JUMPI DUP1 PUSH4 0x38ED1739 EQ PUSH2 0x4D2 JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0x2751CEC EQ PUSH2 0x1DA JUMPI DUP1 PUSH4 0x54D50D4 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x18CBAFE5 EQ PUSH2 0x29B JUMPI PUSH2 0x1D5 JUMP JUMPDEST CALLDATASIZE PUSH2 0x1D5 JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x1D3 JUMPI INVALID JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0xDE4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF37 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF4C 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 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x37C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x364 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x409 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1364 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x453 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x160 DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH2 0x100 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x120 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x140 ADD CALLDATALOAD PUSH2 0x139A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x51C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x52E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x14D8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x59A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1669 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x628 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x140 DUP2 LT ISZERO PUSH2 0x640 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xE0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x100 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x120 ADD CALLDATALOAD PUSH2 0x18AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x6BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x71A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x19FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x74D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x764 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x78B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x79D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x7BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1D97 JUMP JUMPDEST PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x7FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x81E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x830 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x852 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2105 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x885 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2525 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x8D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x8F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x90B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x92D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2532 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x960 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x969 PUSH2 0x2671 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x9B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2695 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x9EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x26A2 JUMP JUMPDEST PUSH2 0x1D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xA3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2882 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xADE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x2D65 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x969 PUSH2 0x306F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xBB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x3093 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x140 DUP2 LT ISZERO PUSH2 0xC15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xE0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x100 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x120 ADD CALLDATALOAD PUSH2 0x30C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0xC95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0xC0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x3218 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xD14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x33A7 JUMP JUMPDEST PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xD67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xDBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x36D3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0xE57 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xE86 DUP10 PUSH32 0x0 DUP11 DUP11 DUP11 ADDRESS DUP11 PUSH2 0x2D65 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0xE96 DUP10 DUP7 DUP6 PUSH2 0x3B22 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP4 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 0xF09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF1D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xF2B DUP6 DUP4 PUSH2 0x3CFF JUMP JUMPDEST POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF44 DUP5 DUP5 DUP5 PUSH2 0x3E3C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0xFBE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP7 DUP7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1023 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x10C2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1120 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3F60 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1133 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x1192 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5508 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1257 DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x11A2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH2 0x123D PUSH32 0x0 DUP11 DUP11 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x11F1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 DUP12 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x121B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x40C6 JUMP JUMPDEST DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x124A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x41B1 JUMP JUMPDEST PUSH2 0x1296 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x4381 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x12E2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD 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 0x1320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1334 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1359 DUP5 DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x134C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3CFF JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1391 PUSH32 0x0 DUP5 DUP5 PUSH2 0x4608 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x13CA PUSH32 0x0 DUP16 DUP16 PUSH2 0x40C6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0x13D9 JUMPI DUP13 PUSH2 0x13FB JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14AB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x14BE DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 PUSH2 0x2D65 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP POP POP SWAP12 POP SWAP12 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x154A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x15A8 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3F60 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x15BB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x161A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5508 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x162A DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x11A2 JUMPI INVALID JUMPDEST PUSH2 0x1359 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x4381 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x16DB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP7 DUP7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1740 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x17DF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x183D PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x4608 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x184D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x1192 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5498 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x18FA PUSH32 0x0 DUP14 PUSH32 0x0 PUSH2 0x40C6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH2 0x1909 JUMPI DUP12 PUSH2 0x192B JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x19ED DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 PUSH2 0x26A2 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1A6E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1AFD DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1A7E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH2 0x1AF7 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1ACD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 DUP11 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x121B JUMPI INVALID JUMPDEST DUP11 PUSH2 0x41B1 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1B2D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x1BC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BDA 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 0x1BF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP9 DUP2 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE SWAP3 SWAP4 POP PUSH2 0x1C32 SWAP3 SWAP1 SWAP2 DUP10 SWAP2 DUP10 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP9 SWAP3 POP PUSH2 0x4796 SWAP2 POP POP JUMP JUMPDEST DUP7 PUSH2 0x1D36 DUP3 DUP9 DUP9 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1C65 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x1CFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D12 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 0x1D28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x4B29 AND JUMP JUMPDEST LT ISZERO PUSH2 0x1D8D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5508 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1E07 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP6 DUP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1E6C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1F0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1F1B DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1A7E JUMPI INVALID JUMPDEST PUSH2 0x1F59 DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x4796 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FFD 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 0x2013 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP7 DUP2 LT ISZERO PUSH2 0x2070 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5508 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x20E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1D8D DUP5 DUP3 PUSH2 0x3CFF JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2177 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x21BB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x225A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x22B8 PUSH32 0x0 CALLVALUE DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3F60 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x22CB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x232A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5508 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2373 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD 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 0x23A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x23BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH2 0x242C PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1ACD JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2439 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x24AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24BE 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 0x24D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x24DC JUMPI INVALID JUMPDEST PUSH2 0x251B DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x4381 SWAP2 POP POP JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF44 DUP5 DUP5 DUP5 PUSH2 0x4B9B JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x25A4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2602 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x4608 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2612 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x161A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5498 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF44 DUP5 DUP5 DUP5 PUSH2 0x4CBF JUMP JUMPDEST PUSH1 0x0 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2714 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2743 DUP9 PUSH32 0x0 DUP10 DUP10 DUP10 ADDRESS DUP10 PUSH2 0x2D65 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH2 0x27ED SWAP3 POP DUP11 SWAP2 DUP8 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27D0 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 0x27E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3B22 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP4 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 0x2860 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2874 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1359 DUP5 DUP4 PUSH2 0x3CFF JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x28F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x2936 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x29D5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 CALLVALUE SWAP1 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x2A42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A56 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH2 0x2AC8 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1ACD JUMPI INVALID JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x2B32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B46 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 0x2B5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2B64 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x2B94 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x2C2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C41 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 0x2C57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP10 DUP2 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP10 DUP3 MSTORE SWAP3 SWAP4 POP PUSH2 0x2C99 SWAP3 SWAP1 SWAP2 DUP11 SWAP2 DUP11 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x4796 SWAP2 POP POP JUMP JUMPDEST DUP8 PUSH2 0x1D36 DUP3 DUP10 DUP10 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x2CCC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x1CFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2DD8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2E05 PUSH32 0x0 DUP13 DUP13 PUSH2 0x40C6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP14 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E9A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2EB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x89AFCB4400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 DUP7 AND SWAP3 PUSH4 0x89AFCB44 SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F37 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x2F67 DUP15 DUP15 PUSH2 0x4D9F JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2FA4 JUMPI DUP2 DUP4 PUSH2 0x2FA7 JUMP JUMPDEST DUP3 DUP3 JUMPDEST SWAP1 SWAP8 POP SWAP6 POP DUP11 DUP8 LT ISZERO PUSH2 0x3005 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x54BF PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 DUP7 LT ISZERO PUSH2 0x305E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5425 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1391 PUSH32 0x0 DUP5 DUP5 PUSH2 0x3F60 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3110 PUSH32 0x0 DUP15 PUSH32 0x0 PUSH2 0x40C6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0x311F JUMPI DUP13 PUSH2 0x3141 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x31F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x3203 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH2 0xDE4 JUMP JUMPDEST SWAP1 SWAP16 SWAP1 SWAP15 POP SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x328D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x329B DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x4EF2 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 PUSH2 0x32CD PUSH32 0x0 DUP15 DUP15 PUSH2 0x40C6 JUMP JUMPDEST SWAP1 POP PUSH2 0x32DB DUP14 CALLER DUP4 DUP9 PUSH2 0x41B1 JUMP JUMPDEST PUSH2 0x32E7 DUP13 CALLER DUP4 DUP8 PUSH2 0x41B1 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x337A 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 0x3390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP5 SWAP14 SWAP4 SWAP13 POP SWAP4 SWAP11 POP SWAP2 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x341C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x344A DUP11 PUSH32 0x0 DUP12 CALLVALUE DUP13 DUP13 PUSH2 0x4EF2 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 PUSH2 0x349C PUSH32 0x0 DUP13 PUSH32 0x0 PUSH2 0x40C6 JUMP JUMPDEST SWAP1 POP PUSH2 0x34AA DUP12 CALLER DUP4 DUP9 PUSH2 0x41B1 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP6 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 0x3512 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3526 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP3 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x35D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x35E6 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 0x35FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3604 JUMPI INVALID JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3683 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3697 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 0x36AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP CALLVALUE DUP5 LT ISZERO PUSH2 0x36C5 JUMPI PUSH2 0x36C5 CALLER DUP6 CALLVALUE SUB PUSH2 0x3CFF JUMP JUMPDEST POP POP SWAP7 POP SWAP7 POP SWAP7 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x3745 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x3789 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x3828 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3886 PUSH32 0x0 DUP9 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x4608 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP CALLVALUE DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3896 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x38F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5498 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x393E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD 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 0x3971 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3985 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH2 0x39F7 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1ACD JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3A04 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x3A75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A89 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 0x3A9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3AA7 JUMPI INVALID JUMPDEST PUSH2 0x3AE6 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x4381 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3AF3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE GT ISZERO PUSH2 0x251B JUMPI PUSH2 0x251B CALLER DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3B13 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE SUB PUSH2 0x3CFF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3BF8 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3BBB 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 0x3C5A 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 0x3C5F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3C8D JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x3C8D JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x3CF8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F4641494C454400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x3D76 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3D39 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 0x3DD8 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 0x3DDD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x3E37 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x54E5 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x3E96 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5557 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x3EA6 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x3EFB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x544B PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3F0F DUP6 PUSH2 0x3E5 PUSH4 0xFFFFFFFF PUSH2 0x51F3 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3F23 DUP3 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x51F3 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3F49 DUP4 PUSH2 0x3F3D DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0x51F3 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x5279 AND JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x3F54 JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x3FD3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056324C6962726172793A20494E56414C49445F504154480000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3FEB 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 0x4015 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4026 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x40BE JUMPI PUSH1 0x0 DUP1 PUSH2 0x4078 DUP8 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x4054 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x406B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x52EB JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x409A DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x408B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x3E3C JUMP JUMPDEST DUP5 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x40A9 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x4035 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x40D5 DUP6 DUP6 PUSH2 0x4D9F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x96E8AC4277198FF8B6F785478AA9A39F403CB768DD02CBEE326C3E7DA348845F PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x428F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4252 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 0x42F1 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 0x42F6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4324 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4324 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4321 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x4379 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5533 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x4602 JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x439F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x43B6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x43CE DUP4 DUP4 PUSH2 0x4D9F JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP8 DUP6 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x43E2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x442A JUMPI DUP3 PUSH1 0x0 PUSH2 0x442E JUMP JUMPDEST PUSH1 0x0 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x2 DUP11 MLOAD SUB DUP9 LT PUSH2 0x4445 JUMPI DUP9 PUSH2 0x4486 JUMP JUMPDEST PUSH2 0x4486 PUSH32 0x0 DUP8 DUP13 DUP12 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0x4479 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x40C6 JUMP JUMPDEST SWAP1 POP PUSH2 0x44B3 PUSH32 0x0 DUP9 DUP9 PUSH2 0x40C6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP5 DUP5 DUP5 PUSH1 0x0 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 0x44FD JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND 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 0x4588 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4570 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x45B5 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 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x45D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x45EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP10 ADD SWAP9 POP PUSH2 0x4384 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x467B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056324C6962726172793A20494E56414C49445F504154480000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4693 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 0x46BD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x46D1 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP2 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD JUMPDEST DUP1 ISZERO PUSH2 0x40BE JUMPI PUSH1 0x0 DUP1 PUSH2 0x4731 DUP8 DUP7 PUSH1 0x1 DUP7 SUB DUP2 MLOAD DUP2 LT PUSH2 0x471D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x406B JUMPI INVALID JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x4753 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x4744 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x4B9B JUMP JUMPDEST DUP5 PUSH1 0x1 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0x4762 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH2 0x4701 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x3E37 JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x47B4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x47CB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x47E3 DUP4 DUP4 PUSH2 0x4D9F JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH2 0x4813 PUSH32 0x0 DUP6 DUP6 PUSH2 0x40C6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4861 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4875 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x488B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND SWAP1 DUP10 AND EQ PUSH2 0x48D5 JUMPI DUP3 DUP5 PUSH2 0x48D8 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x495D DUP3 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x1CFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP6 POP PUSH2 0x496A DUP7 DUP4 DUP4 PUSH2 0x3E3C JUMP JUMPDEST SWAP5 POP POP POP POP POP PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x49AE JUMPI DUP3 PUSH1 0x0 PUSH2 0x49B2 JUMP JUMPDEST PUSH1 0x0 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x2 DUP13 MLOAD SUB DUP11 LT PUSH2 0x49C9 JUMPI DUP11 PUSH2 0x49FD JUMP JUMPDEST PUSH2 0x49FD PUSH32 0x0 DUP10 DUP15 DUP14 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0x4479 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 DUP4 SWAP1 MSTORE PUSH32 0x22C0D9F00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x24 DUP3 ADD DUP8 DUP2 MSTORE PUSH1 0x44 DUP4 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x80 PUSH1 0x84 DUP6 ADD SWAP1 DUP2 MSTORE DUP5 MLOAD PUSH1 0xA4 DUP7 ADD DUP2 SWAP1 MSTORE SWAP7 SWAP8 POP SWAP1 DUP13 AND SWAP6 PUSH4 0x22C0D9F SWAP6 DUP11 SWAP6 DUP11 SWAP6 DUP11 SWAP6 SWAP2 SWAP5 SWAP2 SWAP4 SWAP2 SWAP3 PUSH1 0xC4 DUP7 ADD SWAP3 SWAP1 SWAP2 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4AAD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4A95 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4ADA 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 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4AFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4B10 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP12 ADD SWAP11 POP PUSH2 0x4799 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x1394 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x4BF5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x53D4 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x4C05 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x4C5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x544B PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4C7E PUSH2 0x3E8 PUSH2 0x4C72 DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x51F3 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x51F3 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4C98 PUSH2 0x3E5 PUSH2 0x4C72 DUP7 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x4B29 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x4CB5 PUSH1 0x1 DUP3 DUP5 DUP2 PUSH2 0x4CA8 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x5279 AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x4D19 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5473 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x4D29 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x4D7E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x544B PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x4D8F DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x51F3 AND JUMP JUMPDEST DUP2 PUSH2 0x4D96 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x4E27 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5400 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x4E61 JUMPI DUP3 DUP5 PUSH2 0x4E64 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x4EEB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056324C6962726172793A205A45524F5F414444524553530000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xE6A4390500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xE6A43905 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 0x4F92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4FA6 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 0x4FBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x50A2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0xC9C6539600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xC9C65396 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5075 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5089 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 0x509F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x50D0 PUSH32 0x0 DUP12 DUP12 PUSH2 0x52EB JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ DUP1 ISZERO PUSH2 0x50E2 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x50F2 JUMPI DUP8 SWAP4 POP DUP7 SWAP3 POP PUSH2 0x51E6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50FF DUP10 DUP5 DUP5 PUSH2 0x4CBF JUMP JUMPDEST SWAP1 POP DUP8 DUP2 GT PUSH2 0x516C JUMPI DUP6 DUP2 LT ISZERO PUSH2 0x5161 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5425 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP9 SWAP5 POP SWAP3 POP DUP3 PUSH2 0x51E4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5179 DUP10 DUP5 DUP7 PUSH2 0x4CBF JUMP JUMPDEST SWAP1 POP DUP10 DUP2 GT ISZERO PUSH2 0x5185 JUMPI INVALID JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x51DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x54BF PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP5 POP DUP8 SWAP4 POP JUMPDEST POP JUMPDEST POP POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x520E JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x520B JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x1394 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x1394 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x52FA DUP6 DUP6 PUSH2 0x4D9F JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x530B DUP9 DUP9 DUP9 PUSH2 0x40C6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5350 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5364 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x537A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0x53C1 JUMPI DUP1 DUP3 PUSH2 0x53C4 JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP INVALID SSTORE PUSH15 0x697377617056324C6962726172793A KECCAK256 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x697377617056324C6962726172793A KECCAK256 0x49 DIFFICULTY GASLIMIT 0x4E SLOAD 0x49 NUMBER COINBASE 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 SSTORE PUSH15 0x69737761705632526F757465723A20 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F TIMESTAMP 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x697377617056324C6962726172793A KECCAK256 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE SSTORE PUSH15 0x697377617056324C6962726172793A KECCAK256 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x69737761705632526F757465723A20 GASLIMIT PC NUMBER GASLIMIT MSTORE8 MSTORE8 0x49 JUMP GASLIMIT 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x69737761705632526F757465723A20 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F COINBASE 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SLOAD PUSH19 0x616E7366657248656C7065723A204554485F54 MSTORE COINBASE 0x4E MSTORE8 CHAINID GASLIMIT MSTORE 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY SSTORE PUSH15 0x69737761705632526F757465723A20 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SLOAD PUSH19 0x616E7366657248656C7065723A205452414E53 CHAINID GASLIMIT MSTORE 0x5F CHAINID MSTORE 0x4F 0x4D 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY SSTORE PUSH15 0x697377617056324C6962726172793A KECCAK256 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBC 0xAF 0xBB BYTE 0xE9 0xCB 0x5C RETURNDATACOPY 0x22 0xB6 0xCC 0x4E 0xE4 0xDF EXTCODEHASH 0xCF PUSH7 0x60CBBF0A654915 STOP CODESIZE PUSH24 0xE42BA956AC64736F6C634300060600330000000000000000 ", + "sourceMap": "8822:18115:0:-:0;;;9128:109;5:9:-1;2:2;;;27:1;24;17:12;2:2;9128:109:0;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9128:109:0;;;;;;;-1:-1:-1;;;;;;9190:18:0;;;;;;;;9218:12;;;;;8822:18115;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "immutableReferences": { + "801": [ + { + "length": 32, + "start": 4295 + }, + { + "length": 32, + "start": 4549 + }, + { + "length": 32, + "start": 4971 + }, + { + "length": 32, + "start": 5028 + }, + { + "length": 32, + "start": 5455 + }, + { + "length": 32, + "start": 6116 + }, + { + "length": 32, + "start": 6324 + }, + { + "length": 32, + "start": 6817 + }, + { + "length": 32, + "start": 8799 + }, + { + "length": 32, + "start": 9216 + }, + { + "length": 32, + "start": 9641 + }, + { + "length": 32, + "start": 10908 + }, + { + "length": 32, + "start": 11743 + }, + { + "length": 32, + "start": 12401 + }, + { + "length": 32, + "start": 12442 + }, + { + "length": 32, + "start": 12490 + }, + { + "length": 32, + "start": 12967 + }, + { + "length": 32, + "start": 13398 + }, + { + "length": 32, + "start": 14381 + }, + { + "length": 32, + "start": 14795 + }, + { + "length": 32, + "start": 17482 + }, + { + "length": 32, + "start": 17549 + }, + { + "length": 32, + "start": 18413 + }, + { + "length": 32, + "start": 18894 + }, + { + "length": 32, + "start": 20297 + }, + { + "length": 32, + "start": 20522 + }, + { + "length": 32, + "start": 20650 + } + ], + "804": [ + { + "length": 32, + "start": 428 + }, + { + "length": 32, + "start": 3677 + }, + { + "length": 32, + "start": 3736 + }, + { + "length": 32, + "start": 4053 + }, + { + "length": 32, + "start": 4760 + }, + { + "length": 32, + "start": 5874 + }, + { + "length": 32, + "start": 6358 + }, + { + "length": 32, + "start": 7710 + }, + { + "length": 32, + "start": 8098 + }, + { + "length": 32, + "start": 8306 + }, + { + "length": 32, + "start": 8569 + }, + { + "length": 32, + "start": 9004 + }, + { + "length": 32, + "start": 9153 + }, + { + "length": 32, + "start": 9843 + }, + { + "length": 32, + "start": 10010 + }, + { + "length": 32, + "start": 10223 + }, + { + "length": 32, + "start": 10484 + }, + { + "length": 32, + "start": 10716 + }, + { + "length": 32, + "start": 10845 + }, + { + "length": 32, + "start": 12524 + }, + { + "length": 32, + "start": 13346 + }, + { + "length": 32, + "start": 13432 + }, + { + "length": 32, + "start": 13484 + }, + { + "length": 32, + "start": 13613 + }, + { + "length": 32, + "start": 14151 + }, + { + "length": 32, + "start": 14583 + }, + { + "length": 32, + "start": 14732 + } + ] + }, + "linkReferences": {}, + "object": "60806040526004361061018f5760003560e01c80638803dbee116100d6578063c45a01551161007f578063e8e3370011610059578063e8e3370014610c71578063f305d71914610cfe578063fb3bdb4114610d51576101d5565b8063c45a015514610b25578063d06ca61f14610b3a578063ded9382a14610bf1576101d5565b8063af2979eb116100b0578063af2979eb146109c8578063b6f9de9514610a28578063baa2abde14610abb576101d5565b80638803dbee146108af578063ad5c464814610954578063ad615dec14610992576101d5565b80634a25d94a11610138578063791ac94711610112578063791ac947146107415780637ff36ab5146107e657806385f8c25914610879576101d5565b80634a25d94a146105775780635b0d59841461061c5780635c11d7951461069c576101d5565b80631f00ca74116101695780631f00ca74146103905780632195995c1461044757806338ed1739146104d2576101d5565b806302751cec146101da578063054d50d41461025357806318cbafe51461029b576101d5565b366101d5573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101d357fe5b005b600080fd5b3480156101e657600080fd5b5061023a600480360360c08110156101fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610de4565b6040805192835260208301919091528051918290030190f35b34801561025f57600080fd5b506102896004803603606081101561027657600080fd5b5080359060208101359060400135610f37565b60408051918252519081900360200190f35b3480156102a757600080fd5b50610340600480360360a08110156102be57600080fd5b8135916020810135918101906060810160408201356401000000008111156102e557600080fd5b8201836020820111156102f757600080fd5b8035906020019184602083028401116401000000008311171561031957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f4c565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561037c578181015183820152602001610364565b505050509050019250505060405180910390f35b34801561039c57600080fd5b50610340600480360360408110156103b357600080fd5b813591908101906040810160208201356401000000008111156103d557600080fd5b8201836020820111156103e757600080fd5b8035906020019184602083028401116401000000008311171561040957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611364945050505050565b34801561045357600080fd5b5061023a600480360361016081101561046b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561139a565b3480156104de57600080fd5b50610340600480360360a08110156104f557600080fd5b81359160208101359181019060608101604082013564010000000081111561051c57600080fd5b82018360208201111561052e57600080fd5b8035906020019184602083028401116401000000008311171561055057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356114d8565b34801561058357600080fd5b50610340600480360360a081101561059a57600080fd5b8135916020810135918101906060810160408201356401000000008111156105c157600080fd5b8201836020820111156105d357600080fd5b803590602001918460208302840111640100000000831117156105f557600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611669565b34801561062857600080fd5b50610289600480360361014081101561064057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356118ac565b3480156106a857600080fd5b506101d3600480360360a08110156106bf57600080fd5b8135916020810135918101906060810160408201356401000000008111156106e657600080fd5b8201836020820111156106f857600080fd5b8035906020019184602083028401116401000000008311171561071a57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356119fe565b34801561074d57600080fd5b506101d3600480360360a081101561076457600080fd5b81359160208101359181019060608101604082013564010000000081111561078b57600080fd5b82018360208201111561079d57600080fd5b803590602001918460208302840111640100000000831117156107bf57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611d97565b610340600480360360808110156107fc57600080fd5b8135919081019060408101602082013564010000000081111561081e57600080fd5b82018360208201111561083057600080fd5b8035906020019184602083028401116401000000008311171561085257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612105565b34801561088557600080fd5b506102896004803603606081101561089c57600080fd5b5080359060208101359060400135612525565b3480156108bb57600080fd5b50610340600480360360a08110156108d257600080fd5b8135916020810135918101906060810160408201356401000000008111156108f957600080fd5b82018360208201111561090b57600080fd5b8035906020019184602083028401116401000000008311171561092d57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612532565b34801561096057600080fd5b50610969612671565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561099e57600080fd5b50610289600480360360608110156109b557600080fd5b5080359060208101359060400135612695565b3480156109d457600080fd5b50610289600480360360c08110156109eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356126a2565b6101d360048036036080811015610a3e57600080fd5b81359190810190604081016020820135640100000000811115610a6057600080fd5b820183602082011115610a7257600080fd5b80359060200191846020830284011164010000000083111715610a9457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612882565b348015610ac757600080fd5b5061023a600480360360e0811015610ade57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612d65565b348015610b3157600080fd5b5061096961306f565b348015610b4657600080fd5b5061034060048036036040811015610b5d57600080fd5b81359190810190604081016020820135640100000000811115610b7f57600080fd5b820183602082011115610b9157600080fd5b80359060200191846020830284011164010000000083111715610bb357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613093945050505050565b348015610bfd57600080fd5b5061023a6004803603610140811015610c1557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356130c0565b348015610c7d57600080fd5b50610ce06004803603610100811015610c9557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135613218565b60408051938452602084019290925282820152519081900360600190f35b610ce0600480360360c0811015610d1457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356133a7565b61034060048036036080811015610d6757600080fd5b81359190810190604081016020820135640100000000811115610d8957600080fd5b820183602082011115610d9b57600080fd5b80359060200191846020830284011164010000000083111715610dbd57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356136d3565b6000808242811015610e5757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b610e86897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a612d65565b9093509150610e96898685613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050610f2b8583613cff565b50965096945050505050565b6000610f44848484613e3c565b949350505050565b60608142811015610fbe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061102357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6111207f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b9150868260018451038151811061113357fe5b60200260200101511015611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b611257868660008181106111a257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff163361123d7f00000000000000000000000000000000000000000000000000000000000000008a8a60008181106111f157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b600181811061121b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166140c6565b8560008151811061124a57fe5b60200260200101516141b1565b61129682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614381915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836001855103815181106112e257fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561132057600080fd5b505af1158015611334573d6000803e3d6000fd5b50505050611359848360018551038151811061134c57fe5b6020026020010151613cff565b509695505050505050565b60606113917f00000000000000000000000000000000000000000000000000000000000000008484614608565b90505b92915050565b60008060006113ca7f00000000000000000000000000000000000000000000000000000000000000008f8f6140c6565b90506000876113d9578c6113fb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561149757600080fd5b505af11580156114ab573d6000803e3d6000fd5b505050506114be8f8f8f8f8f8f8f612d65565b809450819550505050509b509b9950505050505050505050565b6060814281101561154a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6115a87f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b915086826001845103815181106115bb57fe5b6020026020010151101561161a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b61162a868660008181106111a257fe5b61135982878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b606081428110156116db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061174057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117df57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b61183d7f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150868260008151811061184d57fe5b60200260200101511115611192576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b6000806118fa7f00000000000000000000000000000000000000000000000000000000000000008d7f00000000000000000000000000000000000000000000000000000000000000006140c6565b9050600086611909578b61192b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c48101879052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156119c757600080fd5b505af11580156119db573d6000803e3d6000fd5b505050506119ed8d8d8d8d8d8d6126a2565b9d9c50505050505050505050505050565b8042811015611a6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b611afd85856000818110611a7e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633611af77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a600181811061121b57fe5b8a6141b1565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611b2d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bc657600080fd5b505afa158015611bda573d6000803e3d6000fd5b505050506040513d6020811015611bf057600080fd5b50516040805160208881028281018201909352888252929350611c32929091899189918291850190849080828437600092019190915250889250614796915050565b86611d368288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611c6557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b505afa158015611d12573d6000803e3d6000fd5b505050506040513d6020811015611d2857600080fd5b50519063ffffffff614b2916565b1015611d8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b5050505050505050565b8042811015611e0757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611e6c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b611f1b85856000818110611a7e57fe5b611f59858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614796915050565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015611fe957600080fd5b505afa158015611ffd573d6000803e3d6000fd5b505050506040513d602081101561201357600080fd5b5051905086811015612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156120e357600080fd5b505af11580156120f7573d6000803e3d6000fd5b50505050611d8d8482613cff565b6060814281101561217757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16868660008181106121bb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6122b87f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b915086826001845103815181106122cb57fe5b6020026020010151101561232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061237357fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156123a657600080fd5b505af11580156123ba573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61242c7f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b8460008151811061243957fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156124aa57600080fd5b505af11580156124be573d6000803e3d6000fd5b505050506040513d60208110156124d457600080fd5b50516124dc57fe5b61251b82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b5095945050505050565b6000610f44848484614b9b565b606081428110156125a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6126027f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150868260008151811061261257fe5b6020026020010151111561161a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610f44848484614cbf565b6000814281101561271457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b612743887f00000000000000000000000000000000000000000000000000000000000000008989893089612d65565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519194506127ed92508a91879173ffffffffffffffffffffffffffffffffffffffff8416916370a0823191602480820192602092909190829003018186803b1580156127bc57600080fd5b505afa1580156127d0573d6000803e3d6000fd5b505050506040513d60208110156127e657600080fd5b5051613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b505050506113598483613cff565b80428110156128f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168585600081811061293657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b60003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a4257600080fd5b505af1158015612a56573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612ac87f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b3257600080fd5b505af1158015612b46573d6000803e3d6000fd5b505050506040513d6020811015612b5c57600080fd5b5051612b6457fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612b9457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c2d57600080fd5b505afa158015612c41573d6000803e3d6000fd5b505050506040513d6020811015612c5757600080fd5b50516040805160208981028281018201909352898252929350612c999290918a918a918291850190849080828437600092019190915250899250614796915050565b87611d368289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612ccc57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b6000808242811015612dd857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000612e057f00000000000000000000000000000000000000000000000000000000000000008c8c6140c6565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612e8657600080fd5b505af1158015612e9a573d6000803e3d6000fd5b505050506040513d6020811015612eb057600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b505050506040513d6040811015612f4d57600080fd5b50805160209091015190925090506000612f678e8e614d9f565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614612fa4578183612fa7565b82825b90975095508a871015613005576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154bf6026913960400191505060405180910390fd5b8986101561305e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154256026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606113917f00000000000000000000000000000000000000000000000000000000000000008484613f60565b60008060006131107f00000000000000000000000000000000000000000000000000000000000000008e7f00000000000000000000000000000000000000000000000000000000000000006140c6565b905060008761311f578c613141565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050506132038e8e8e8e8e8e610de4565b909f909e509c50505050505050505050505050565b6000806000834281101561328d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61329b8c8c8c8c8c8c614ef2565b909450925060006132cd7f00000000000000000000000000000000000000000000000000000000000000008e8e6140c6565b90506132db8d3383886141b1565b6132e78c3383876141b1565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561336657600080fd5b505af115801561337a573d6000803e3d6000fd5b505050506040513d602081101561339057600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561341c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61344a8a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c614ef2565b9094509250600061349c7f00000000000000000000000000000000000000000000000000000000000000008c7f00000000000000000000000000000000000000000000000000000000000000006140c6565b90506134aa8b3383886141b1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561351257600080fd5b505af1158015613526573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156135d257600080fd5b505af11580156135e6573d6000803e3d6000fd5b505050506040513d60208110156135fc57600080fd5b505161360457fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561368357600080fd5b505af1158015613697573d6000803e3d6000fd5b505050506040513d60208110156136ad57600080fd5b50519250348410156136c5576136c533853403613cff565b505096509650969350505050565b6060814281101561374557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061378957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461382857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6138867f00000000000000000000000000000000000000000000000000000000000000008888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150348260008151811061389657fe5b602002602001015111156138f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061393e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561397157600080fd5b505af1158015613985573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6139f77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b84600081518110613a0457fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613a7557600080fd5b505af1158015613a89573d6000803e3d6000fd5b505050506040513d6020811015613a9f57600080fd5b5051613aa757fe5b613ae682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b81600081518110613af357fe5b602002602001015134111561251b5761251b3383600081518110613b1357fe5b60200260200101513403613cff565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613bf857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613bbb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c5a576040519150601f19603f3d011682016040523d82523d6000602084013e613c5f565b606091505b5091509150818015613c8d575080511580613c8d5750808060200190516020811015613c8a57600080fd5b50515b613cf857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310613d7657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613d39565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613dd8576040519150601f19603f3d011682016040523d82523d6000602084013e613ddd565b606091505b5050905080613e37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806154e56023913960400191505060405180910390fd5b505050565b6000808411613e96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615557602b913960400191505060405180910390fd5b600083118015613ea65750600082115b613efb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b6000613f0f856103e563ffffffff6151f316565b90506000613f23828563ffffffff6151f316565b90506000613f4983613f3d886103e863ffffffff6151f316565b9063ffffffff61527916565b9050808281613f5457fe5b04979650505050505050565b6060600282511015613fd357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff81118015613feb57600080fd5b50604051908082528060200260200182016040528015614015578160200160208202803683370190505b509050828160008151811061402657fe5b60200260200101818152505060005b60018351038110156140be576000806140788786858151811061405457fe5b602002602001015187866001018151811061406b57fe5b60200260200101516152eb565b9150915061409a84848151811061408b57fe5b60200260200101518383613e3c565b8484600101815181106140a957fe5b60209081029190910101525050600101614035565b509392505050565b60008060006140d58585614d9f565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061428f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101614252565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146142f1576040519150601f19603f3d011682016040523d82523d6000602084013e6142f6565b606091505b5091509150818015614324575080511580614324575080806020019051602081101561432157600080fd5b50515b614379576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806155336024913960400191505060405180910390fd5b505050505050565b60005b60018351038110156146025760008084838151811061439f57fe5b60200260200101518584600101815181106143b657fe5b60200260200101519150915060006143ce8383614d9f565b50905060008785600101815181106143e257fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461442a5782600061442e565b6000835b91509150600060028a510388106144455788614486565b6144867f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061447957fe5b60200260200101516140c6565b90506144b37f000000000000000000000000000000000000000000000000000000000000000088886140c6565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156144fd576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614588578181015183820152602001614570565b50505050905090810190601f1680156145b55780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156145d757600080fd5b505af11580156145eb573d6000803e3d6000fd5b505060019099019850614384975050505050505050565b50505050565b606060028251101561467b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561469357600080fd5b506040519080825280602002602001820160405280156146bd578160200160208202803683370190505b50905082816001835103815181106146d157fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b80156140be576000806147318786600186038151811061471d57fe5b602002602001015187868151811061406b57fe5b9150915061475384848151811061474457fe5b60200260200101518383614b9b565b84600185038151811061476257fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01614701565b60005b6001835103811015613e37576000808483815181106147b457fe5b60200260200101518584600101815181106147cb57fe5b60200260200101519150915060006147e38383614d9f565b50905060006148137f000000000000000000000000000000000000000000000000000000000000000085856140c6565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561486157600080fd5b505afa158015614875573d6000803e3d6000fd5b505050506040513d606081101561488b57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060008073ffffffffffffffffffffffffffffffffffffffff8a8116908916146148d55782846148d8565b83835b9150915061495d828b73ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b955061496a868383613e3c565b9450505050506000808573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146149ae578260006149b2565b6000835b91509150600060028c51038a106149c9578a6149fd565b6149fd7f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061447957fe5b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018781526044830187905273ffffffffffffffffffffffffffffffffffffffff8086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015614aad578181015183820152602001614a95565b50505050905090810190601f168015614ada5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614afc57600080fd5b505af1158015614b10573d6000803e3d6000fd5b50506001909b019a506147999950505050505050505050565b8082038281111561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6000808411614bf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806153d4602c913960400191505060405180910390fd5b600083118015614c055750600082115b614c5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b6000614c7e6103e8614c72868863ffffffff6151f316565b9063ffffffff6151f316565b90506000614c986103e5614c72868963ffffffff614b2916565b9050614cb56001828481614ca857fe5b049063ffffffff61527916565b9695505050505050565b6000808411614d19576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154736025913960400191505060405180910390fd5b600083118015614d295750600082115b614d7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b82614d8f858463ffffffff6151f316565b81614d9657fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614e27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154006025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610614e61578284614e64565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216614eeb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015614f9257600080fd5b505afa158015614fa6573d6000803e3d6000fd5b505050506040513d6020811015614fbc57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614156150a257604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b15801561507557600080fd5b505af1158015615089573d6000803e3d6000fd5b505050506040513d602081101561509f57600080fd5b50505b6000806150d07f00000000000000000000000000000000000000000000000000000000000000008b8b6152eb565b915091508160001480156150e2575080155b156150f2578793508692506151e6565b60006150ff898484614cbf565b905087811161516c5785811015615161576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154256026913960400191505060405180910390fd5b8894509250826151e4565b6000615179898486614cbf565b90508981111561518557fe5b878110156151de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154bf6026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b600081158061520e5750508082028282828161520b57fe5b04145b61139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60008060006152fa8585614d9f565b50905060008061530b8888886140c6565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561535057600080fd5b505afa158015615364573d6000803e3d6000fd5b505050506040513d606081101561537a57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146153c15780826153c4565b81815b9099909850965050505050505056fe556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553556e69737761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459556e697377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54556e69737761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f415f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54a2646970667358221220bcafbb1ae9cb5c3e22b6cc4ee4df3fcf6660cbbf0a654915003877e42ba956ac64736f6c63430006060033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x18F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8803DBEE GT PUSH2 0xD6 JUMPI DUP1 PUSH4 0xC45A0155 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xE8E33700 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xE8E33700 EQ PUSH2 0xC71 JUMPI DUP1 PUSH4 0xF305D719 EQ PUSH2 0xCFE JUMPI DUP1 PUSH4 0xFB3BDB41 EQ PUSH2 0xD51 JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0xC45A0155 EQ PUSH2 0xB25 JUMPI DUP1 PUSH4 0xD06CA61F EQ PUSH2 0xB3A JUMPI DUP1 PUSH4 0xDED9382A EQ PUSH2 0xBF1 JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0xAF2979EB GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0xAF2979EB EQ PUSH2 0x9C8 JUMPI DUP1 PUSH4 0xB6F9DE95 EQ PUSH2 0xA28 JUMPI DUP1 PUSH4 0xBAA2ABDE EQ PUSH2 0xABB JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0x8803DBEE EQ PUSH2 0x8AF JUMPI DUP1 PUSH4 0xAD5C4648 EQ PUSH2 0x954 JUMPI DUP1 PUSH4 0xAD615DEC EQ PUSH2 0x992 JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0x4A25D94A GT PUSH2 0x138 JUMPI DUP1 PUSH4 0x791AC947 GT PUSH2 0x112 JUMPI DUP1 PUSH4 0x791AC947 EQ PUSH2 0x741 JUMPI DUP1 PUSH4 0x7FF36AB5 EQ PUSH2 0x7E6 JUMPI DUP1 PUSH4 0x85F8C259 EQ PUSH2 0x879 JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0x4A25D94A EQ PUSH2 0x577 JUMPI DUP1 PUSH4 0x5B0D5984 EQ PUSH2 0x61C JUMPI DUP1 PUSH4 0x5C11D795 EQ PUSH2 0x69C JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0x1F00CA74 GT PUSH2 0x169 JUMPI DUP1 PUSH4 0x1F00CA74 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0x2195995C EQ PUSH2 0x447 JUMPI DUP1 PUSH4 0x38ED1739 EQ PUSH2 0x4D2 JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0x2751CEC EQ PUSH2 0x1DA JUMPI DUP1 PUSH4 0x54D50D4 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x18CBAFE5 EQ PUSH2 0x29B JUMPI PUSH2 0x1D5 JUMP JUMPDEST CALLDATASIZE PUSH2 0x1D5 JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x1D3 JUMPI INVALID JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0xDE4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF37 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF4C 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 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x37C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x364 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x409 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1364 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x453 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x160 DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH2 0x100 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x120 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x140 ADD CALLDATALOAD PUSH2 0x139A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x51C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x52E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x14D8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x59A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1669 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x628 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x140 DUP2 LT ISZERO PUSH2 0x640 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xE0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x100 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x120 ADD CALLDATALOAD PUSH2 0x18AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x6BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x71A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x19FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x74D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x764 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x78B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x79D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x7BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1D97 JUMP JUMPDEST PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x7FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x81E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x830 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x852 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2105 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x885 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2525 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x8D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x8F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x90B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x92D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2532 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x960 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x969 PUSH2 0x2671 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x9B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2695 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x9EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x26A2 JUMP JUMPDEST PUSH2 0x1D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xA3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2882 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xADE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x2D65 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x969 PUSH2 0x306F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xBB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x3093 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x140 DUP2 LT ISZERO PUSH2 0xC15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xE0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x100 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x120 ADD CALLDATALOAD PUSH2 0x30C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0xC95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0xC0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x3218 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xD14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x33A7 JUMP JUMPDEST PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xD67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xDBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x36D3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0xE57 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xE86 DUP10 PUSH32 0x0 DUP11 DUP11 DUP11 ADDRESS DUP11 PUSH2 0x2D65 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0xE96 DUP10 DUP7 DUP6 PUSH2 0x3B22 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP4 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 0xF09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF1D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xF2B DUP6 DUP4 PUSH2 0x3CFF JUMP JUMPDEST POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF44 DUP5 DUP5 DUP5 PUSH2 0x3E3C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0xFBE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP7 DUP7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1023 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x10C2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1120 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3F60 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1133 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x1192 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5508 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1257 DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x11A2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH2 0x123D PUSH32 0x0 DUP11 DUP11 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x11F1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 DUP12 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x121B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x40C6 JUMP JUMPDEST DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x124A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x41B1 JUMP JUMPDEST PUSH2 0x1296 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x4381 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x12E2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD 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 0x1320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1334 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1359 DUP5 DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x134C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3CFF JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1391 PUSH32 0x0 DUP5 DUP5 PUSH2 0x4608 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x13CA PUSH32 0x0 DUP16 DUP16 PUSH2 0x40C6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0x13D9 JUMPI DUP13 PUSH2 0x13FB JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14AB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x14BE DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 PUSH2 0x2D65 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP POP POP SWAP12 POP SWAP12 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x154A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x15A8 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3F60 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x15BB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x161A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5508 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x162A DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x11A2 JUMPI INVALID JUMPDEST PUSH2 0x1359 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x4381 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x16DB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP7 DUP7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1740 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x17DF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x183D PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x4608 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x184D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x1192 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5498 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x18FA PUSH32 0x0 DUP14 PUSH32 0x0 PUSH2 0x40C6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH2 0x1909 JUMPI DUP12 PUSH2 0x192B JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x19ED DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 PUSH2 0x26A2 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1A6E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1AFD DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1A7E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH2 0x1AF7 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1ACD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 DUP11 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x121B JUMPI INVALID JUMPDEST DUP11 PUSH2 0x41B1 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1B2D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x1BC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BDA 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 0x1BF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP9 DUP2 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE SWAP3 SWAP4 POP PUSH2 0x1C32 SWAP3 SWAP1 SWAP2 DUP10 SWAP2 DUP10 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP9 SWAP3 POP PUSH2 0x4796 SWAP2 POP POP JUMP JUMPDEST DUP7 PUSH2 0x1D36 DUP3 DUP9 DUP9 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1C65 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x1CFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D12 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 0x1D28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x4B29 AND JUMP JUMPDEST LT ISZERO PUSH2 0x1D8D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5508 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1E07 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP6 DUP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1E6C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1F0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1F1B DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1A7E JUMPI INVALID JUMPDEST PUSH2 0x1F59 DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x4796 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FFD 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 0x2013 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP7 DUP2 LT ISZERO PUSH2 0x2070 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5508 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x20E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1D8D DUP5 DUP3 PUSH2 0x3CFF JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2177 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x21BB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x225A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x22B8 PUSH32 0x0 CALLVALUE DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3F60 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x22CB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x232A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5508 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2373 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD 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 0x23A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x23BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH2 0x242C PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1ACD JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2439 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x24AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24BE 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 0x24D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x24DC JUMPI INVALID JUMPDEST PUSH2 0x251B DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x4381 SWAP2 POP POP JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF44 DUP5 DUP5 DUP5 PUSH2 0x4B9B JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x25A4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2602 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x4608 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2612 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x161A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5498 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF44 DUP5 DUP5 DUP5 PUSH2 0x4CBF JUMP JUMPDEST PUSH1 0x0 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2714 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2743 DUP9 PUSH32 0x0 DUP10 DUP10 DUP10 ADDRESS DUP10 PUSH2 0x2D65 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH2 0x27ED SWAP3 POP DUP11 SWAP2 DUP8 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27D0 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 0x27E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3B22 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP4 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 0x2860 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2874 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1359 DUP5 DUP4 PUSH2 0x3CFF JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x28F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x2936 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x29D5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 CALLVALUE SWAP1 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x2A42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A56 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH2 0x2AC8 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1ACD JUMPI INVALID JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x2B32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B46 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 0x2B5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2B64 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x2B94 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x2C2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C41 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 0x2C57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP10 DUP2 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP10 DUP3 MSTORE SWAP3 SWAP4 POP PUSH2 0x2C99 SWAP3 SWAP1 SWAP2 DUP11 SWAP2 DUP11 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x4796 SWAP2 POP POP JUMP JUMPDEST DUP8 PUSH2 0x1D36 DUP3 DUP10 DUP10 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x2CCC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x1CFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2DD8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2E05 PUSH32 0x0 DUP13 DUP13 PUSH2 0x40C6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP14 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E9A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2EB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x89AFCB4400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 DUP7 AND SWAP3 PUSH4 0x89AFCB44 SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F37 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x2F67 DUP15 DUP15 PUSH2 0x4D9F JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2FA4 JUMPI DUP2 DUP4 PUSH2 0x2FA7 JUMP JUMPDEST DUP3 DUP3 JUMPDEST SWAP1 SWAP8 POP SWAP6 POP DUP11 DUP8 LT ISZERO PUSH2 0x3005 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x54BF PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 DUP7 LT ISZERO PUSH2 0x305E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5425 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1391 PUSH32 0x0 DUP5 DUP5 PUSH2 0x3F60 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3110 PUSH32 0x0 DUP15 PUSH32 0x0 PUSH2 0x40C6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0x311F JUMPI DUP13 PUSH2 0x3141 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x31F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x3203 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH2 0xDE4 JUMP JUMPDEST SWAP1 SWAP16 SWAP1 SWAP15 POP SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x328D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x329B DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x4EF2 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 PUSH2 0x32CD PUSH32 0x0 DUP15 DUP15 PUSH2 0x40C6 JUMP JUMPDEST SWAP1 POP PUSH2 0x32DB DUP14 CALLER DUP4 DUP9 PUSH2 0x41B1 JUMP JUMPDEST PUSH2 0x32E7 DUP13 CALLER DUP4 DUP8 PUSH2 0x41B1 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x337A 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 0x3390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP5 SWAP14 SWAP4 SWAP13 POP SWAP4 SWAP11 POP SWAP2 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x341C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x344A DUP11 PUSH32 0x0 DUP12 CALLVALUE DUP13 DUP13 PUSH2 0x4EF2 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 PUSH2 0x349C PUSH32 0x0 DUP13 PUSH32 0x0 PUSH2 0x40C6 JUMP JUMPDEST SWAP1 POP PUSH2 0x34AA DUP12 CALLER DUP4 DUP9 PUSH2 0x41B1 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP6 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 0x3512 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3526 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP3 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x35D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x35E6 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 0x35FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3604 JUMPI INVALID JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3683 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3697 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 0x36AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP CALLVALUE DUP5 LT ISZERO PUSH2 0x36C5 JUMPI PUSH2 0x36C5 CALLER DUP6 CALLVALUE SUB PUSH2 0x3CFF JUMP JUMPDEST POP POP SWAP7 POP SWAP7 POP SWAP7 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x3745 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x3789 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x3828 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E69737761705632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3886 PUSH32 0x0 DUP9 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x4608 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP CALLVALUE DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3896 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x38F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5498 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x393E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD 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 0x3971 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3985 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH2 0x39F7 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1ACD JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3A04 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x3A75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A89 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 0x3A9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3AA7 JUMPI INVALID JUMPDEST PUSH2 0x3AE6 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 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 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x4381 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3AF3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE GT ISZERO PUSH2 0x251B JUMPI PUSH2 0x251B CALLER DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3B13 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE SUB PUSH2 0x3CFF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3BF8 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3BBB 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 0x3C5A 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 0x3C5F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3C8D JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x3C8D JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x3CF8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F4641494C454400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x3D76 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3D39 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 0x3DD8 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 0x3DDD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x3E37 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x54E5 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x3E96 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5557 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x3EA6 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x3EFB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x544B PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3F0F DUP6 PUSH2 0x3E5 PUSH4 0xFFFFFFFF PUSH2 0x51F3 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3F23 DUP3 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x51F3 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3F49 DUP4 PUSH2 0x3F3D DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0x51F3 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x5279 AND JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x3F54 JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x3FD3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056324C6962726172793A20494E56414C49445F504154480000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3FEB 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 0x4015 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4026 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x40BE JUMPI PUSH1 0x0 DUP1 PUSH2 0x4078 DUP8 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x4054 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x406B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x52EB JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x409A DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x408B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x3E3C JUMP JUMPDEST DUP5 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x40A9 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x4035 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x40D5 DUP6 DUP6 PUSH2 0x4D9F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x96E8AC4277198FF8B6F785478AA9A39F403CB768DD02CBEE326C3E7DA348845F PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x428F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4252 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 0x42F1 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 0x42F6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4324 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4324 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4321 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x4379 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5533 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x4602 JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x439F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x43B6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x43CE DUP4 DUP4 PUSH2 0x4D9F JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP8 DUP6 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x43E2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x442A JUMPI DUP3 PUSH1 0x0 PUSH2 0x442E JUMP JUMPDEST PUSH1 0x0 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x2 DUP11 MLOAD SUB DUP9 LT PUSH2 0x4445 JUMPI DUP9 PUSH2 0x4486 JUMP JUMPDEST PUSH2 0x4486 PUSH32 0x0 DUP8 DUP13 DUP12 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0x4479 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x40C6 JUMP JUMPDEST SWAP1 POP PUSH2 0x44B3 PUSH32 0x0 DUP9 DUP9 PUSH2 0x40C6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP5 DUP5 DUP5 PUSH1 0x0 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 0x44FD JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND 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 0x4588 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4570 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x45B5 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 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x45D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x45EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP10 ADD SWAP9 POP PUSH2 0x4384 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x467B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056324C6962726172793A20494E56414C49445F504154480000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4693 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 0x46BD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x46D1 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP2 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD JUMPDEST DUP1 ISZERO PUSH2 0x40BE JUMPI PUSH1 0x0 DUP1 PUSH2 0x4731 DUP8 DUP7 PUSH1 0x1 DUP7 SUB DUP2 MLOAD DUP2 LT PUSH2 0x471D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x406B JUMPI INVALID JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x4753 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x4744 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x4B9B JUMP JUMPDEST DUP5 PUSH1 0x1 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0x4762 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH2 0x4701 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x3E37 JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x47B4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x47CB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x47E3 DUP4 DUP4 PUSH2 0x4D9F JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH2 0x4813 PUSH32 0x0 DUP6 DUP6 PUSH2 0x40C6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4861 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4875 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x488B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND SWAP1 DUP10 AND EQ PUSH2 0x48D5 JUMPI DUP3 DUP5 PUSH2 0x48D8 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x495D DUP3 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x1CFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP6 POP PUSH2 0x496A DUP7 DUP4 DUP4 PUSH2 0x3E3C JUMP JUMPDEST SWAP5 POP POP POP POP POP PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x49AE JUMPI DUP3 PUSH1 0x0 PUSH2 0x49B2 JUMP JUMPDEST PUSH1 0x0 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x2 DUP13 MLOAD SUB DUP11 LT PUSH2 0x49C9 JUMPI DUP11 PUSH2 0x49FD JUMP JUMPDEST PUSH2 0x49FD PUSH32 0x0 DUP10 DUP15 DUP14 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0x4479 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 DUP4 SWAP1 MSTORE PUSH32 0x22C0D9F00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x24 DUP3 ADD DUP8 DUP2 MSTORE PUSH1 0x44 DUP4 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x80 PUSH1 0x84 DUP6 ADD SWAP1 DUP2 MSTORE DUP5 MLOAD PUSH1 0xA4 DUP7 ADD DUP2 SWAP1 MSTORE SWAP7 SWAP8 POP SWAP1 DUP13 AND SWAP6 PUSH4 0x22C0D9F SWAP6 DUP11 SWAP6 DUP11 SWAP6 DUP11 SWAP6 SWAP2 SWAP5 SWAP2 SWAP4 SWAP2 SWAP3 PUSH1 0xC4 DUP7 ADD SWAP3 SWAP1 SWAP2 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4AAD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4A95 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4ADA 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 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4AFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4B10 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP12 ADD SWAP11 POP PUSH2 0x4799 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x1394 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x4BF5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x53D4 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x4C05 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x4C5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x544B PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4C7E PUSH2 0x3E8 PUSH2 0x4C72 DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x51F3 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x51F3 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4C98 PUSH2 0x3E5 PUSH2 0x4C72 DUP7 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x4B29 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x4CB5 PUSH1 0x1 DUP3 DUP5 DUP2 PUSH2 0x4CA8 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x5279 AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x4D19 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5473 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x4D29 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x4D7E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x544B PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x4D8F DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x51F3 AND JUMP JUMPDEST DUP2 PUSH2 0x4D96 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x4E27 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5400 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x4E61 JUMPI DUP3 DUP5 PUSH2 0x4E64 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x4EEB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056324C6962726172793A205A45524F5F414444524553530000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xE6A4390500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xE6A43905 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 0x4F92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4FA6 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 0x4FBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x50A2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0xC9C6539600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xC9C65396 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5075 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5089 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 0x509F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x50D0 PUSH32 0x0 DUP12 DUP12 PUSH2 0x52EB JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ DUP1 ISZERO PUSH2 0x50E2 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x50F2 JUMPI DUP8 SWAP4 POP DUP7 SWAP3 POP PUSH2 0x51E6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50FF DUP10 DUP5 DUP5 PUSH2 0x4CBF JUMP JUMPDEST SWAP1 POP DUP8 DUP2 GT PUSH2 0x516C JUMPI DUP6 DUP2 LT ISZERO PUSH2 0x5161 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5425 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP9 SWAP5 POP SWAP3 POP DUP3 PUSH2 0x51E4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5179 DUP10 DUP5 DUP7 PUSH2 0x4CBF JUMP JUMPDEST SWAP1 POP DUP10 DUP2 GT ISZERO PUSH2 0x5185 JUMPI INVALID JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x51DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x54BF PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP5 POP DUP8 SWAP4 POP JUMPDEST POP JUMPDEST POP POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x520E JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x520B JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x1394 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x1394 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x52FA DUP6 DUP6 PUSH2 0x4D9F JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x530B DUP9 DUP9 DUP9 PUSH2 0x40C6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5350 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5364 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x537A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0x53C1 JUMPI DUP1 DUP3 PUSH2 0x53C4 JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP INVALID SSTORE PUSH15 0x697377617056324C6962726172793A KECCAK256 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x697377617056324C6962726172793A KECCAK256 0x49 DIFFICULTY GASLIMIT 0x4E SLOAD 0x49 NUMBER COINBASE 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 SSTORE PUSH15 0x69737761705632526F757465723A20 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F TIMESTAMP 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x697377617056324C6962726172793A KECCAK256 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE SSTORE PUSH15 0x697377617056324C6962726172793A KECCAK256 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x69737761705632526F757465723A20 GASLIMIT PC NUMBER GASLIMIT MSTORE8 MSTORE8 0x49 JUMP GASLIMIT 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x69737761705632526F757465723A20 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F COINBASE 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SLOAD PUSH19 0x616E7366657248656C7065723A204554485F54 MSTORE COINBASE 0x4E MSTORE8 CHAINID GASLIMIT MSTORE 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY SSTORE PUSH15 0x69737761705632526F757465723A20 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SLOAD PUSH19 0x616E7366657248656C7065723A205452414E53 CHAINID GASLIMIT MSTORE 0x5F CHAINID MSTORE 0x4F 0x4D 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY SSTORE PUSH15 0x697377617056324C6962726172793A KECCAK256 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBC 0xAF 0xBB BYTE 0xE9 0xCB 0x5C RETURNDATACOPY 0x22 0xB6 0xCC 0x4E 0xE4 0xDF EXTCODEHASH 0xCF PUSH7 0x60CBBF0A654915 STOP CODESIZE PUSH24 0xE42BA956AC64736F6C634300060600330000000000000000 ", + "sourceMap": "8822:18115:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9287:10;:18;9301:4;9287:18;;9280:26;;;;8822:18115;;12:1:-1;9;2:12;13346:653:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;13346:653:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;13346:653:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;25920:254;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25920:254:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25920:254:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;20351:834;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20351:834:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;20351:834:0;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;20351:834:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;20351:834:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;20351:834:0;;-1:-1:-1;20351:834:0;-1:-1:-1;20351:834:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;20351:834:0;;;;;;;;;;;;;;;;;26690:245;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26690:245:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;26690:245:0;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;26690:245:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;26690:245:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;26690:245:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;26690:245:0;;-1:-1:-1;26690:245:0;;-1:-1:-1;;;;;26690:245:0:i;14004:663::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14004:663:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;14004:663:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17628:615::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17628:615:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;17628:615:0;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;17628:615:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;17628:615:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;17628:615:0;;-1:-1:-1;17628:615:0;-1:-1:-1;17628:615:0;;;;;;;;;:::i;19534:812::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19534:812:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;19534:812:0;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;19534:812:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;19534:812:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;19534:812:0;;-1:-1:-1;19534:812:0;-1:-1:-1;19534:812:0;;;;;;;;;:::i;16089:703::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16089:703:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;16089:703:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;23329:698::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23329:698:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;23329:698:0;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;23329:698:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;23329:698:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;23329:698:0;;-1:-1:-1;23329:698:0;-1:-1:-1;23329:698:0;;;;;;;;;:::i;24865:822::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24865:822:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;24865:822:0;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;24865:822:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;24865:822:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;24865:822:0;;-1:-1:-1;24865:822:0;-1:-1:-1;24865:822:0;;;;;;;;;:::i;18846:683::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;18846:683:0;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;18846:683:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;18846:683:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;18846:683:0;;-1:-1:-1;18846:683:0;-1:-1:-1;18846:683:0;;;;;;;;;:::i;26180:253::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26180:253:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;26180:253:0;;;;;;;;;;;;:::i;18248:593::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18248:593:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;18248:593:0;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;18248:593:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;18248:593:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;18248:593:0;;-1:-1:-1;18248:593:0;-1:-1:-1;18248:593:0;;;;;;;;;:::i;8954:38::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8954:38:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25728:186;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25728:186:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25728:186:0;;;;;;;;;;;;:::i;15404:680::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15404:680:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;15404:680:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;24032:828::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;24032:828:0;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;24032:828:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;24032:828:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;24032:828:0;;-1:-1:-1;24032:828:0;-1:-1:-1;24032:828:0;;;;;;;;;:::i;12492:849::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12492:849:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;12492:849:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8907:41::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8907:41:0;;;:::i;26439:245::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26439:245:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;26439:245:0;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;26439:245:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;26439:245:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;26439:245:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;26439:245:0;;-1:-1:-1;26439:245:0;;-1:-1:-1;;;;;26439:245:0:i;14672:656::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14672:656:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;14672:656:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10773:723::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10773:723:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;10773:723:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;11501:951;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;11501:951:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;21190:794::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;21190:794:0;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;21190:794:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;21190:794:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;21190:794:0;;-1:-1:-1;21190:794:0;-1:-1:-1;21190:794:0;;;;;;;;;:::i;13346:653::-;13576:16;13594:14;13557:8;9060:15;9048:8;:27;;9040:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13647:188:::1;13676:5;13695:4;13713:9;13736:14;13764:12;13798:4;13817:8;13647:15;:188::i;:::-;13620:215:::0;;-1:-1:-1;13620:215:0;-1:-1:-1;13845:51:0::1;13873:5:::0;13880:2;13620:215;13845:27:::1;:51::i;:::-;13912:4;13906:20;;;13927:9;13906:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;13906:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;13906:31:0;;;;13947:45;13978:2;13982:9;13947:30;:45::i;:::-;13346:653:::0;;;;;;;;;;:::o;25920:254::-;26068:14;26105:62;26135:8;26145:9;26156:10;26105:29;:62::i;:::-;26098:69;25920:254;-1:-1:-1;;;;25920:254:0:o;20351:834::-;20560:21;20533:8;9060:15;9048:8;:27;;9040:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20605:29:::1;20630:4;20605:29;:4:::0;;20610:15;;;20605:21;;::::1;;;;;;;;;;;;;:29;;;20597:71;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;20688:55;20719:7;20728:8;20738:4;;20688:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;20688:30:0::1;::::0;-1:-1:-1;;;20688:55:0:i:1;:::-;20678:65;;20792:12;20761:7;20786:1;20769:7;:14;:18;20761:27;;;;;;;;;;;;;;:43;;20753:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20862:139;20907:4;;20912:1;20907:7;;;;;;;;;;;;;;;20916:10;20928:51;20953:7;20962:4;;20967:1;20962:7;;;;;;;;;;;;;;;20971:4;;20976:1;20971:7;;;;;;;;;;;;;;;20928:24;:51::i;:::-;20981:7;20989:1;20981:10;;;;;;;;;;;;;;20862:31;:139::i;:::-;21011:35;21017:7;21026:4;;21011:35;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;21040:4:0::1;::::0;-1:-1:-1;21011:5:0::1;::::0;-1:-1:-1;;21011:35:0:i:1;:::-;21062:4;21056:20;;;21077:7;21102:1;21085:7;:14;:18;21077:27;;;;;;;;;;;;;;21056:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;21056:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;21056:49:0;;;;21115:63;21146:2;21150:7;21175:1;21158:7;:14;:18;21150:27;;;;;;;;;;;;;;21115:30;:63::i;:::-;20351:834:::0;;;;;;;;;:::o;26690:245::-;26829:21;26873:55;26903:7;26912:9;26923:4;26873:29;:55::i;:::-;26866:62;;26690:245;;;;;:::o;14004:663::-;14301:12;14315;14339;14354:49;14379:7;14388:6;14396;14354:24;:49::i;:::-;14339:64;;14413:10;14426;:33;;14450:9;14426:33;;;14444:2;14426:33;14469:80;;;;;;14497:10;14469:80;;;;14517:4;14469:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14413:46;;-1:-1:-1;14469:27:0;;;;;;:80;;;;;-1:-1:-1;;14469:80:0;;;;;;;;-1:-1:-1;14469:27:0;:80;;;2:2:-1;;;;27:1;24;17:12;2:2;14469:80:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14469:80:0;;;;14580;14596:6;14604;14612:9;14623:10;14635;14647:2;14651:8;14580:15;:80::i;:::-;14559:101;;;;;;;;14004:663;;;;;;;;;;;;;;;;:::o;17628:615::-;17846:21;17827:8;9060:15;9048:8;:27;;9040:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17889:55:::1;17920:7;17929:8;17939:4;;17889:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;17889:30:0::1;::::0;-1:-1:-1;;;17889:55:0:i:1;:::-;17879:65;;17993:12;17962:7;17987:1;17970:7;:14;:18;17962:27;;;;;;;;;;;;;;:43;;17954:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18063:139;18108:4;;18113:1;18108:7;;;;;;18063:139;18212:24;18218:7;18227:4;;18212:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;18233:2:0;;-1:-1:-1;18212:5:0::1;::::0;-1:-1:-1;;18212:24:0:i:1;19534:812::-:0;19743:21;19716:8;9060:15;9048:8;:27;;9040:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19788:29:::1;19813:4;19788:29;:4:::0;;19793:15;;;19788:21;;::::1;;;;;;;;;;;;;:29;;;19780:71;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;19871:55;19901:7;19910:9;19921:4;;19871:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;19871:29:0::1;::::0;-1:-1:-1;;;19871:55:0:i:1;:::-;19861:65;;19958:11;19944:7;19952:1;19944:10;;;;;;;;;;;;;;:25;;19936:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16089:703:::0;16399:14;16425:12;16440:46;16465:7;16474:5;16481:4;16440:24;:46::i;:::-;16425:61;;16496:10;16509;:33;;16533:9;16509:33;;;16527:2;16509:33;16552:80;;;;;;16580:10;16552:80;;;;16600:4;16552:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16496:46;;-1:-1:-1;16552:27:0;;;;;;:80;;;;;-1:-1:-1;;16552:80:0;;;;;;;;-1:-1:-1;16552:27:0;:80;;;2:2:-1;;;;27:1;24;17:12;2:2;16552:80:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16552:80:0;;;;16654:131;16715:5;16722:9;16733:14;16749:12;16763:2;16767:8;16654:47;:131::i;:::-;16642:143;16089:703;-1:-1:-1;;;;;;;;;;;;;16089:703:0:o;23329:698::-;23557:8;9060:15;9048:8;:27;;9040:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23577:137:::1;23622:4;;23627:1;23622:7;;;;;;;;;;;;;;;23631:10;23643:51;23668:7;23677:4;;23682:1;23677:7;;;;;;;;;;;;;;;23686:4;;23691:1;23686:7;;;;;;23643:51;23696:8;23577:31;:137::i;:::-;23724:18;23752:4:::0;;23757:15;;;23752:21;;::::1;;;;;;;;;;;;;23745:39;;;23785:2;23745:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;23745:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;23745:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;23745:43:0;23798:44:::1;::::0;;23745:43:::1;23798:44:::0;;::::1;::::0;;;;;;;;;;;23745:43;;-1:-1:-1;23798:44:0::1;::::0;;;23833:4;;;;;;23798:44;::::1;::::0;23833:4;;23798:44;23833:4;23798:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;23839:2:0;;-1:-1:-1;23798:34:0::1;::::0;-1:-1:-1;;23798:44:0:i:1;:::-;23939:12:::0;23873:62:::1;23921:13:::0;23880:4;;23885:15;;;23880:21;;::::1;;;;;;;;;;;;;23873:39;;;23913:2;23873:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;23873:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;23873:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;23873:43:0;;:62:::1;:47;:62;:::i;:::-;:78;;23852:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9114:1;23329:698:::0;;;;;;;:::o;24865:822::-;25122:8;9060:15;9048:8;:27;;9040:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25154:29:::1;25179:4;25154:29;:4:::0;;25159:15;;;25154:21;;::::1;;;;;;;;;;;;;:29;;;25146:71;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;25227:137;25272:4;;25277:1;25272:7;;;;;;25227:137;25374:55;25409:4;;25374:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;25423:4:0::1;::::0;-1:-1:-1;25374:34:0::1;::::0;-1:-1:-1;;25374:55:0:i:1;:::-;25456:37;::::0;;;;;25487:4:::1;25456:37;::::0;::::1;::::0;;;25439:14:::1;::::0;25456:22:::1;25463:4;25456:22;::::0;::::1;::::0;:37;;;;;::::1;::::0;;;;;;;;;:22;:37;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;25456:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;25456:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;25456:37:0;;-1:-1:-1;25511:25:0;;::::1;;25503:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25600:4;25594:20;;;25615:9;25594:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;25594:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;25594:31:0;;;;25635:45;25666:2;25670:9;25635:30;:45::i;18846:683::-:0;19056:21;19029:8;9060:15;9048:8;:27;;9040:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19112:4:::1;19101:15;;:4;;19106:1;19101:7;;;;;;;;;;;;;;;:15;;;19093:57;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;19170:56;19201:7;19210:9;19221:4;;19170:56;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;19170:30:0::1;::::0;-1:-1:-1;;;19170:56:0:i:1;:::-;19160:66;;19275:12;19244:7;19269:1;19252:7;:14;:18;19244:27;;;;;;;;;;;;;;:43;;19236:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19351:4;19345:19;;;19372:7;19380:1;19372:10;;;;;;;;;;;;;;19345:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;19345:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;19345:40:0;;;;;19408:4;19402:20;;;19423:51;19448:7;19457:4;;19462:1;19457:7;;;;;;19423:51;19476:7;19484:1;19476:10;;;;;;;;;;;;;;19402:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;19402:85:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;19402:85:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;19402:85:0;19395:93:::1;;;;19498:24;19504:7;19513:4;;19498:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;19519:2:0;;-1:-1:-1;19498:5:0::1;::::0;-1:-1:-1;;19498:24:0:i:1;:::-;18846:683:::0;;;;;;;;:::o;26180:253::-;26328:13;26364:62;26393:9;26404;26415:10;26364:28;:62::i;18248:593::-;18466:21;18447:8;9060:15;9048:8;:27;;9040:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18509:55:::1;18539:7;18548:9;18559:4;;18509:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;18509:29:0::1;::::0;-1:-1:-1;;;18509:55:0:i:1;:::-;18499:65;;18596:11;18582:7;18590:1;18582:10;;;;;;;;;;;;;;:25;;18574:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8954:38:::0;;;:::o;25728:186::-;25825:12;25856:51;25879:7;25888:8;25898;25856:22;:51::i;15404:680::-;15663:14;15644:8;9060:15;9048:8;:27;;9040:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15705:188:::1;15734:5;15753:4;15771:9;15794:14;15822:12;15856:4;15875:8;15705:15;:188::i;:::-;15942:38;::::0;;;;;15974:4:::1;15942:38;::::0;::::1;::::0;;;15689:204;;-1:-1:-1;15903:78:0::1;::::0;-1:-1:-1;15931:5:0;;15938:2;;15942:23:::1;::::0;::::1;::::0;::::1;::::0;:38;;;;;::::1;::::0;;;;;;;;;:23;:38;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;15942:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;15942:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;15942:38:0;15903:27:::1;:78::i;:::-;15997:4;15991:20;;;16012:9;15991:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;15991:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;15991:31:0;;;;16032:45;16063:2;16067:9;16032:30;:45::i;24032:828::-:0;24282:8;9060:15;9048:8;:27;;9040:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24325:4:::1;24314:15;;:4;;24319:1;24314:7;;;;;;;;;;;;;;;:15;;;24306:57;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;24373:13;24389:9;24373:25;;24414:4;24408:19;;;24435:8;24408:38;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;24408:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;24408:38:0;;;;;24469:4;24463:20;;;24484:51;24509:7;24518:4;;24523:1;24518:7;;;;;;24484:51;24537:8;24463:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;24463:83:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;24463:83:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;24463:83:0;24456:91:::1;;;;24557:18;24585:4:::0;;24590:15;;;24585:21;;::::1;;;;;;;;;;;;;24578:39;;;24618:2;24578:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;24578:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;24578:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;24578:43:0;24631:44:::1;::::0;;24578:43:::1;24631:44:::0;;::::1;::::0;;;;;;;;;;;24578:43;;-1:-1:-1;24631:44:0::1;::::0;;;24666:4;;;;;;24631:44;::::1;::::0;24666:4;;24631:44;24666:4;24631:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;24672:2:0;;-1:-1:-1;24631:34:0::1;::::0;-1:-1:-1;;24631:44:0:i:1;:::-;24772:12:::0;24706:62:::1;24754:13:::0;24713:4;;24718:15;;;24713:21;;::::1;;;;;;;;;;;;;24706:39;;;24746:2;24706:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;12492:849:0::0;12738:12;12752;12719:8;9060:15;9048:8;:27;;9040:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12776:12:::1;12791:49;12816:7;12825:6;12833;12791:24;:49::i;:::-;12850:62;::::0;;;;;12884:10:::1;12850:62;::::0;::::1;::::0;:33:::1;::::0;::::1;:62:::0;;;;;;;;;;;;;;12776:64;;-1:-1:-1;12850:33:0;;::::1;::::0;:62;;;;;::::1;::::0;;;;;;;;;-1:-1:-1;12850:33:0;:62;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;12850:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;12850:62:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;12979:29:0::1;::::0;;;;;:25:::1;:29:::0;;::::1;;::::0;::::1;::::0;;;12949:12:::1;::::0;;;12979:25;;::::1;::::0;::::1;::::0;:29;;;;;;;;;;;12949:12;12979:25;:29;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;12979:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;12979:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;12979:29:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;12979:29:0;-1:-1:-1;13019:14:0::1;13038:43;13066:6:::0;13074;13038:27:::1;:43::i;:::-;13018:63;;;13122:6;13112:16;;:6;:16;;;:58;;13153:7;13162;13112:58;;;13132:7;13141;13112:58;13091:79:::0;;-1:-1:-1;13091:79:0;-1:-1:-1;13188:21:0;;::::1;;13180:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13281:10;13270:7;:21;;13262:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9114:1;;;;12492:849:::0;;;;;;;;;;;:::o;8907:41::-;;;:::o;26439:245::-;26578:21;26622:55;26653:7;26662:8;26672:4;26622:30;:55::i;14672:656::-;14953:16;14971:14;14997:12;15012:46;15037:7;15046:5;15053:4;15012:24;:46::i;:::-;14997:61;;15068:10;15081;:33;;15105:9;15081:33;;;15099:2;15081:33;15124:80;;;;;;15152:10;15124:80;;;;15172:4;15124:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15068:46;;-1:-1:-1;15124:27:0;;;;;;:80;;;;;-1:-1:-1;;15124:80:0;;;;;;;;-1:-1:-1;15124:27:0;:80;;;2:2:-1;;;;27:1;24;17:12;2:2;15124:80:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15124:80:0;;;;15241;15260:5;15267:9;15278:14;15294:12;15308:2;15312:8;15241:18;:80::i;:::-;15214:107;;;;-1:-1:-1;14672:656:0;-1:-1:-1;;;;;;;;;;;;;14672:656:0:o;10773:723::-;11052:12;11066;11080:14;11033:8;9060:15;9048:8;:27;;9040:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11127:85:::1;11141:6;11149;11157:14;11173;11189:10;11201;11127:13;:85::i;:::-;11106:106:::0;;-1:-1:-1;11106:106:0;-1:-1:-1;11222:12:0::1;11237:49;11262:7;11271:6:::0;11279;11237:24:::1;:49::i;:::-;11222:64;;11296:66;11328:6;11336:10;11348:4;11354:7;11296:31;:66::i;:::-;11372;11404:6;11412:10;11424:4;11430:7;11372:31;:66::i;:::-;11475:4;11460:25;;;11486:2;11460:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;11460:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;11460:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;11460:29:0;10773:723;;;;-1:-1:-1;11460:29:0;;-1:-1:-1;10773:723:0;;-1:-1:-1;;;;;;;;;10773:723:0:o;11501:951::-;11747:16;11765:14;11781;11728:8;9060:15;9048:8;:27;;9040:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11834:169:::1;11861:5;11880:4;11898:18;11930:9;11953:14;11981:12;11834:13;:169::i;:::-;11807:196:::0;;-1:-1:-1;11807:196:0;-1:-1:-1;12013:12:0::1;12028:46;12053:7;12062:5:::0;12069:4:::1;12028:24;:46::i;:::-;12013:61;;12084:69;12116:5;12123:10;12135:4;12141:11;12084:31;:69::i;:::-;12169:4;12163:19;;;12190:9;12163:39;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;12163:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;12163:39:0;;;;;12225:4;12219:20;;;12240:4;12246:9;12219:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;12219:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;12219:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;12219:37:0;12212:45:::1;;;;12294:4;12279:25;;;12305:2;12279:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;12279:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;12279:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;12279:29:0;;-1:-1:-1;12357:9:0::1;:21:::0;-1:-1:-1;12353:92:0::1;;;12380:65;12411:10;12435:9;12423;:21;12380:30;:65::i;:::-;9114:1;11501:951:::0;;;;;;;;;;;:::o;21190:794::-;21397:21;21370:8;9060:15;9048:8;:27;;9040:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21453:4:::1;21442:15;;:4;;21447:1;21442:7;;;;;;;;;;;;;;;:15;;;21434:57;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;21511:55;21541:7;21550:9;21561:4;;21511:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;21511:29:0::1;::::0;-1:-1:-1;;;21511:55:0:i:1;:::-;21501:65;;21598:9;21584:7;21592:1;21584:10;;;;;;;;;;;;;;:23;;21576:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21667:4;21661:19;;;21688:7;21696:1;21688:10;;;;;;;;;;;;;;21661:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;21661:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;21661:40:0;;;;;21724:4;21718:20;;;21739:51;21764:7;21773:4;;21778:1;21773:7;;;;;;21739:51;21792:7;21800:1;21792:10;;;;;;;;;;;;;;21718:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;21718:85:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;21718:85:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;21718:85:0;21711:93:::1;;;;21814:24;21820:7;21829:4;;21814:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;21835:2:0;;-1:-1:-1;21814:5:0::1;::::0;-1:-1:-1;;21814:24:0:i:1;:::-;21899:7;21907:1;21899:10;;;;;;;;;;;;;;21887:9;:22;21883:94;;;21911:66;21942:10;21966:7;21974:1;21966:10;;;;;;;;;;;;;;21954:9;:22;21911:30;:66::i;32312:357::-:0;32505:45;;;32494:10;32505:45;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;32505:45:0;;;;;;;25:18:-1;;61:17;;96:58;182:15;32505:45:0;179:29:-1;160:49;;32494:57:0;;;;32459:12;;32473:17;;32494:10;;;;32505:45;32494:57;;;25:18:-1;32494:57:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;32494:57:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;32458:93:0;;;;32569:7;:57;;;;-1:-1:-1;32581:11:0;;:16;;:44;;;32612:4;32601:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;32601:24:0;32581:44;32561:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32312:357;;;;;:::o;33079:192::-;33186:12;;;33148;33186;;;;;;;;;33165:7;;;;33179:5;;33165:34;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;33165:34:0;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;33147:52:0;;;33217:7;33209:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33079:192;;;:::o;29530:510::-;29623:14;29668:1;29657:8;:12;29649:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29747:1;29735:9;:13;:31;;;;;29765:1;29752:10;:14;29735:31;29727:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29821:20;29844:17;:8;29857:3;29844:17;:12;:17;:::i;:::-;29821:40;-1:-1:-1;29871:14:0;29888:31;29821:40;29908:10;29888:31;:19;:31;:::i;:::-;29871:48;-1:-1:-1;29929:16:0;29948:40;29972:15;29948:19;:9;29962:4;29948:19;:13;:19;:::i;:::-;:23;:40;:23;:40;:::i;:::-;29929:59;;30022:11;30010:9;:23;;;;;;;29530:510;-1:-1:-1;;;;;;;29530:510:0:o;30703:503::-;30804:21;30860:1;30845:4;:11;:16;;30837:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30927:4;:11;30916:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;30916:23:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;30916:23:0;;30906:33;;30962:8;30949:7;30957:1;30949:10;;;;;;;;;;;;;:21;;;;;30985:6;30980:220;31011:1;30997:4;:11;:15;30993:1;:19;30980:220;;;31034:14;31050:15;31069:42;31081:7;31090:4;31095:1;31090:7;;;;;;;;;;;;;;31099:4;31104:1;31108;31104:5;31099:11;;;;;;;;;;;;;;31069;:42::i;:::-;31033:78;;;;31142:47;31155:7;31163:1;31155:10;;;;;;;;;;;;;;31167:9;31178:10;31142:12;:47::i;:::-;31125:7;31133:1;31137;31133:5;31125:14;;;;;;;;;;;;;;;;;:64;-1:-1:-1;;31014:3:0;;30980:220;;;;30703:503;;;;;:::o;28072:470::-;28161:12;28186:14;28202;28220:26;28231:6;28239;28220:10;:26::i;:::-;28380:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;28380:32:0;;;;;28370:43;;;;;;28286:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;28286:246:0;;;;;;;28276:257;;;;;;;;;28072:470;-1:-1:-1;;;;;28072:470:0:o;32675:398::-;32898:51;;;32887:10;32898:51;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;32898:51:0;;;;;;;25:18:-1;;61:17;;96:58;182:15;32898:51:0;179:29:-1;160:49;;32887:63:0;;;;32852:12;;32866:17;;32887:10;;;;32898:51;32887:63;;;25:18:-1;32887:63:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;32887:63:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;32851:99:0;;;;32968:7;:57;;;;-1:-1:-1;32980:11:0;;:16;;:44;;;33011:4;33000:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;33000:24:0;32980:44;32960:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32675:398;;;;;;:::o;16899:724::-;17005:6;17000:617;17031:1;17017:4;:11;:15;17013:1;:19;17000:617;;;17054:13;17069:14;17088:4;17093:1;17088:7;;;;;;;;;;;;;;17097:4;17102:1;17106;17102:5;17097:11;;;;;;;;;;;;;;17053:56;;;;17124:14;17143:42;17171:5;17178:6;17143:27;:42::i;:::-;17123:62;;;17199:14;17216:7;17224:1;17228;17224:5;17216:14;;;;;;;;;;;;;;17199:31;;17245:15;17262;17290:6;17281:15;;:5;:15;;;:61;;17323:9;17339:1;17281:61;;;17305:1;17309:9;17281:61;17244:98;;;;17356:10;17387:1;17373:4;:11;:15;17369:1;:19;:82;;17448:3;17369:82;;;17391:54;17416:7;17425:6;17433:4;17438:1;17442;17438:5;17433:11;;;;;;;;;;;;;;17391:24;:54::i;:::-;17356:95;;17480:48;17505:7;17514:5;17521:6;17480:24;:48::i;:::-;17465:69;;;17552:10;17564;17576:2;17590:1;17580:12;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;108:14;17580:12:0;87:42:-1;143:17;;-1:-1;17580:12:0;;17465:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17465:141:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17465:141:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;17034:3:0;;;;;-1:-1:-1;17000:617:0;;-1:-1:-1;;;;;;;;17000:617:0;;;16899:724;;;:::o;31284:524::-;31385:21;31441:1;31426:4;:11;:16;;31418:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31508:4;:11;31497:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;31497:23:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;31497:23:0;;31487:33;;31560:9;31530:7;31555:1;31538:7;:14;:18;31530:27;;;;;;;;;;;;;;;;;:39;31593:11;;:15;;31579:223;31610:5;;31579:223;;31637:14;31653:15;31672:42;31684:7;31693:4;31702:1;31698;:5;31693:11;;;;;;;;;;;;;;31706:4;31711:1;31706:7;;;;;;;31672:42;31636:78;;;;31745:46;31757:7;31765:1;31757:10;;;;;;;;;;;;;;31769:9;31780:10;31745:11;:46::i;:::-;31728:7;31740:1;31736;:5;31728:14;;;;;;;;;;;;;;;;;:63;-1:-1:-1;;31617:3:0;;31579:223;;22127:1197;22239:6;22234:1084;22265:1;22251:4;:11;:15;22247:1;:19;22234:1084;;;22288:13;22303:14;22322:4;22327:1;22322:7;;;;;;;;;;;;;;22331:4;22336:1;22340;22336:5;22331:11;;;;;;;;;;;;;;22287:56;;;;22358:14;22377:42;22405:5;22412:6;22377:27;:42::i;:::-;22357:62;;;22433:19;22470:48;22495:7;22504:5;22511:6;22470:24;:48::i;:::-;22433:86;;22533:16;22563:17;22649:13;22664;22682:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22682:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22682:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;22682:18:0;;;;;;;22648:52;;;;;-1:-1:-1;22648:52:0;;-1:-1:-1;22715:17:0;;22756:15;;;;;;;;:61;;22798:8;22808;22756:61;;;22775:8;22785;22756:61;22714:103;;;;22845:56;22888:12;22852:5;22845:23;;;22877:4;22845:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;22845:56:0;22831:70;;22930:71;22960:11;22973:12;22987:13;22930:29;:71::i;:::-;22915:86;;22234:1084;;;;23030:15;23047;23075:6;23066:15;;:5;:15;;;:67;;23111:12;23130:1;23066:67;;;23090:1;23094:12;23066:67;23029:104;;;;23147:10;23178:1;23164:4;:11;:15;23160:1;:19;:82;;23239:3;23160:82;;;23182:54;23207:7;23216:6;23224:4;23229:1;23233;23229:5;23224:11;;;;;;;23182:54;23294:12;;;23304:1;23294:12;;;;;;;;;;23256:51;;;;;;;;;;;;;;;:9;:51;;;;;;;;;;;;;;;;;;;;;;23147:95;;-1:-1:-1;23256:9:0;;;;;;23266:10;;23278;;23147:95;;23294:12;;23256:51;;;;;;;;23294:12;;23256:51;;;;23294:12;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;23256:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23256:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;22268:3:0;;;;;-1:-1:-1;22234:1084:0;;-1:-1:-1;;;;;;;;;;22234:1084:0;27200:127;27283:5;;;27278:16;;;;27270:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30158:466;30251:13;30296:1;30284:9;:13;30276:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30376:1;30364:9;:13;:31;;;;;30394:1;30381:10;:14;30364:31;30356:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30450:14;30467:34;30496:4;30467:24;:9;30481;30467:24;:13;:24;:::i;:::-;:28;:34;:28;:34;:::i;:::-;30450:51;-1:-1:-1;30511:16:0;30530:34;30560:3;30530:25;:10;30545:9;30530:25;:14;:25;:::i;:34::-;30511:53;;30585:32;30615:1;30598:11;30586:9;:23;;;;;;;30585:32;:29;:32;:::i;:::-;30574:43;30158:466;-1:-1:-1;;;;;;30158:466:0:o;29094:317::-;29176:12;29218:1;29208:7;:11;29200:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29290:1;29279:8;:12;:28;;;;;29306:1;29295:8;:12;29279:28;29271:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29396:8;29372:21;:7;29384:8;29372:21;:11;:21;:::i;:::-;:32;;;;;;;29094:317;-1:-1:-1;;;;29094:317:0:o;27638:345::-;27713:14;27729;27773:6;27763:16;;:6;:16;;;;27755:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27859:6;27850:15;;:6;:15;;;:53;;27888:6;27896;27850:53;;;27869:6;27877;27850:53;27831:72;;-1:-1:-1;27831:72:0;-1:-1:-1;27921:20:0;;;27913:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27638:345;;;;;:::o;9405:1363::-;9709:50;;;;;;:64;:50;;;;;;;;;;;;;;;;9616:12;;;;;;9727:7;9709:34;;;;;;:50;;;;;;;;;;;;;;;:34;:50;;;2:2:-1;;;;27:1;24;17:12;2:2;9709:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9709:50:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9709:50:0;:64;;;9705:148;;;9789:53;;;;;;:37;:53;;;;;;;;;;;;;;;;9807:7;9789:37;;;;;;:53;;;;;;;;;;;;;;;-1:-1:-1;9789:37:0;:53;;;2:2:-1;;;;27:1;24;17:12;2:2;9789:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9789:53:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;9705:148:0;9863:13;9878;9895:53;9924:7;9933:6;9941;9895:28;:53::i;:::-;9862:86;;;;9962:8;9974:1;9962:13;:30;;;;-1:-1:-1;9979:13:0;;9962:30;9958:804;;;10030:14;;-1:-1:-1;10046:14:0;;-1:-1:-1;9958:804:0;;;10092:19;10114:58;10137:14;10153:8;10163;10114:22;:58::i;:::-;10092:80;;10208:14;10190;:32;10186:566;;10268:10;10250:14;:28;;10242:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10361:14;;-1:-1:-1;10377:14:0;-1:-1:-1;10377:14:0;10186:566;;;10431:19;10453:58;10476:14;10492:8;10502;10453:22;:58::i;:::-;10431:80;;10554:14;10536;:32;;10529:40;;;;10613:10;10595:14;:28;;10587:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10706:14;-1:-1:-1;10722:14:0;;-1:-1:-1;10186:566:0;9958:804;;9405:1363;;;;;;;;;;;:::o;27333:140::-;27385:6;27411;;;:30;;-1:-1:-1;;27426:5:0;;;27440:1;27435;27426:5;27435:1;27421:15;;;;;:20;27411:30;27403:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27068:126;27151:5;;;27146:16;;;;27138:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28597:387;28690:13;28705;28731:14;28750:26;28761:6;28769;28750:10;:26::i;:::-;28730:46;;;28787:13;28802;28835:32;28843:7;28852:6;28860;28835:7;:32::i;:::-;28820:60;;;:62;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;28820:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28820:62:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;28820:62:0;;;;;;;28786:96;;;;;-1:-1:-1;28786:96:0;;-1:-1:-1;28915:16:0;;;;;;;;:62;;28958:8;28968;28915:62;;;28935:8;28945;28915:62;28892:85;;;;-1:-1:-1;28597:387:0;-1:-1:-1;;;;;;;28597:387:0:o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "4388600", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "WETH()": "infinite", + "addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)": "infinite", + "addLiquidityETH(address,uint256,uint256,uint256,address,uint256)": "infinite", + "factory()": "infinite", + "getAmountIn(uint256,uint256,uint256)": "infinite", + "getAmountOut(uint256,uint256,uint256)": "infinite", + "getAmountsIn(uint256,address[])": "infinite", + "getAmountsOut(uint256,address[])": "infinite", + "quote(uint256,uint256,uint256)": "infinite", + "removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)": "infinite", + "removeLiquidityETH(address,uint256,uint256,uint256,address,uint256)": "infinite", + "removeLiquidityETHSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256)": "infinite", + "removeLiquidityETHWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "infinite", + "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "infinite", + "removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "infinite", + "swapETHForExactTokens(uint256,address[],address,uint256)": "infinite", + "swapExactETHForTokens(uint256,address[],address,uint256)": "infinite", + "swapExactETHForTokensSupportingFeeOnTransferTokens(uint256,address[],address,uint256)": "infinite", + "swapExactTokensForETH(uint256,uint256,address[],address,uint256)": "infinite", + "swapExactTokensForETHSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)": "infinite", + "swapExactTokensForTokens(uint256,uint256,address[],address,uint256)": "infinite", + "swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)": "infinite", + "swapTokensForExactETH(uint256,uint256,address[],address,uint256)": "infinite", + "swapTokensForExactTokens(uint256,uint256,address[],address,uint256)": "infinite" + }, + "internal": { + "_addLiquidity(address,address,uint256,uint256,uint256,uint256)": "infinite", + "_swap(uint256[] memory,address[] memory,address)": "infinite", + "_swapSupportingFeeOnTransferTokens(address[] memory,address)": "infinite" + } + }, + "methodIdentifiers": { + "WETH()": "ad5c4648", + "addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)": "e8e33700", + "addLiquidityETH(address,uint256,uint256,uint256,address,uint256)": "f305d719", + "factory()": "c45a0155", + "getAmountIn(uint256,uint256,uint256)": "85f8c259", + "getAmountOut(uint256,uint256,uint256)": "054d50d4", + "getAmountsIn(uint256,address[])": "1f00ca74", + "getAmountsOut(uint256,address[])": "d06ca61f", + "quote(uint256,uint256,uint256)": "ad615dec", + "removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)": "baa2abde", + "removeLiquidityETH(address,uint256,uint256,uint256,address,uint256)": "02751cec", + "removeLiquidityETHSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256)": "af2979eb", + "removeLiquidityETHWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "ded9382a", + "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "5b0d5984", + "removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "2195995c", + "swapETHForExactTokens(uint256,address[],address,uint256)": "fb3bdb41", + "swapExactETHForTokens(uint256,address[],address,uint256)": "7ff36ab5", + "swapExactETHForTokensSupportingFeeOnTransferTokens(uint256,address[],address,uint256)": "b6f9de95", + "swapExactTokensForETH(uint256,uint256,address[],address,uint256)": "18cbafe5", + "swapExactTokensForETHSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)": "791ac947", + "swapExactTokensForTokens(uint256,uint256,address[],address,uint256)": "38ed1739", + "swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)": "5c11d795", + "swapTokensForExactETH(uint256,uint256,address[],address,uint256)": "4a25d94a", + "swapTokensForExactTokens(uint256,uint256,address[],address,uint256)": "8803dbee" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_WETH\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETHSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETHSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/Uniswap/UniswapV2Router02.sol\":\"UniswapV2Router02\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Uniswap/UniswapV2Router02.sol\":{\"content\":\"/**\\n *Submitted for verification at Etherscan.io on 2020-06-05\\n*/\\n\\npragma solidity =0.6.6;\\n\\ninterface IUniswapV2Factory {\\n event PairCreated(address indexed token0, address indexed token1, address pair, uint);\\n\\n function feeTo() external view returns (address);\\n function feeToSetter() external view returns (address);\\n\\n function getPair(address tokenA, address tokenB) external view returns (address pair);\\n function allPairs(uint) external view returns (address pair);\\n function allPairsLength() external view returns (uint);\\n\\n function createPair(address tokenA, address tokenB) external returns (address pair);\\n\\n function setFeeTo(address) external;\\n function setFeeToSetter(address) external;\\n}\\n\\ninterface IUniswapV2Pair {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external pure returns (string memory);\\n function symbol() external pure returns (string memory);\\n function decimals() external pure returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n function PERMIT_TYPEHASH() external pure returns (bytes32);\\n function nonces(address owner) external view returns (uint);\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\\n\\n event Mint(address indexed sender, uint amount0, uint amount1);\\n event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\\n event Swap(\\n address indexed sender,\\n uint amount0In,\\n uint amount1In,\\n uint amount0Out,\\n uint amount1Out,\\n address indexed to\\n );\\n event Sync(uint112 reserve0, uint112 reserve1);\\n\\n function MINIMUM_LIQUIDITY() external pure returns (uint);\\n function factory() external view returns (address);\\n function token0() external view returns (address);\\n function token1() external view returns (address);\\n function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\\n function price0CumulativeLast() external view returns (uint);\\n function price1CumulativeLast() external view returns (uint);\\n function kLast() external view returns (uint);\\n\\n function mint(address to) external returns (uint liquidity);\\n function burn(address to) external returns (uint amount0, uint amount1);\\n function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;\\n function skim(address to) external;\\n function sync() external;\\n\\n function initialize(address, address) external;\\n}\\n\\ninterface IUniswapV2Router01 {\\n function factory() external pure returns (address);\\n function WETH() external pure returns (address);\\n\\n function addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB, uint liquidity);\\n function addLiquidityETH(\\n address token,\\n uint amountTokenDesired,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external payable returns (uint amountToken, uint amountETH, uint liquidity);\\n function removeLiquidity(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETH(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountToken, uint amountETH);\\n function removeLiquidityWithPermit(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETHWithPermit(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountToken, uint amountETH);\\n function swapExactTokensForTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapTokensForExactTokens(\\n uint amountOut,\\n uint amountInMax,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n\\n function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);\\n function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);\\n function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);\\n}\\n\\ninterface IUniswapV2Router02 is IUniswapV2Router01 {\\n function removeLiquidityETHSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountETH);\\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountETH);\\n\\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external;\\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external payable;\\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external;\\n}\\n\\ninterface IERC20 {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external view returns (string memory);\\n function symbol() external view returns (string memory);\\n function decimals() external view returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n}\\n\\ninterface IWETH {\\n function deposit() external payable;\\n function transfer(address to, uint value) external returns (bool);\\n function withdraw(uint) external;\\n}\\n\\ncontract UniswapV2Router02 is IUniswapV2Router02 {\\n using SafeMath for uint;\\n\\n address public immutable override factory;\\n address public immutable override WETH;\\n\\n modifier ensure(uint deadline) {\\n require(deadline >= block.timestamp, 'UniswapV2Router: EXPIRED');\\n _;\\n }\\n\\n constructor(address _factory, address _WETH) public {\\n factory = _factory;\\n WETH = _WETH;\\n }\\n\\n receive() external payable {\\n assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract\\n }\\n\\n // **** ADD LIQUIDITY ****\\n function _addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin\\n ) internal virtual returns (uint amountA, uint amountB) {\\n // create the pair if it doesn't exist yet\\n if (IUniswapV2Factory(factory).getPair(tokenA, tokenB) == address(0)) {\\n IUniswapV2Factory(factory).createPair(tokenA, tokenB);\\n }\\n (uint reserveA, uint reserveB) = UniswapV2Library.getReserves(factory, tokenA, tokenB);\\n if (reserveA == 0 && reserveB == 0) {\\n (amountA, amountB) = (amountADesired, amountBDesired);\\n } else {\\n uint amountBOptimal = UniswapV2Library.quote(amountADesired, reserveA, reserveB);\\n if (amountBOptimal <= amountBDesired) {\\n require(amountBOptimal >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\\n (amountA, amountB) = (amountADesired, amountBOptimal);\\n } else {\\n uint amountAOptimal = UniswapV2Library.quote(amountBDesired, reserveB, reserveA);\\n assert(amountAOptimal <= amountADesired);\\n require(amountAOptimal >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\\n (amountA, amountB) = (amountAOptimal, amountBDesired);\\n }\\n }\\n }\\n function addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {\\n (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);\\n TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);\\n liquidity = IUniswapV2Pair(pair).mint(to);\\n }\\n function addLiquidityETH(\\n address token,\\n uint amountTokenDesired,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) {\\n (amountToken, amountETH) = _addLiquidity(\\n token,\\n WETH,\\n amountTokenDesired,\\n msg.value,\\n amountTokenMin,\\n amountETHMin\\n );\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);\\n IWETH(WETH).deposit{value: amountETH}();\\n assert(IWETH(WETH).transfer(pair, amountETH));\\n liquidity = IUniswapV2Pair(pair).mint(to);\\n // refund dust eth, if any\\n if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH);\\n }\\n\\n // **** REMOVE LIQUIDITY ****\\n function removeLiquidity(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n IUniswapV2Pair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair\\n (uint amount0, uint amount1) = IUniswapV2Pair(pair).burn(to);\\n (address token0,) = UniswapV2Library.sortTokens(tokenA, tokenB);\\n (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);\\n require(amountA >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\\n require(amountB >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\\n }\\n function removeLiquidityETH(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountToken, uint amountETH) {\\n (amountToken, amountETH) = removeLiquidity(\\n token,\\n WETH,\\n liquidity,\\n amountTokenMin,\\n amountETHMin,\\n address(this),\\n deadline\\n );\\n TransferHelper.safeTransfer(token, to, amountToken);\\n IWETH(WETH).withdraw(amountETH);\\n TransferHelper.safeTransferETH(to, amountETH);\\n }\\n function removeLiquidityWithPermit(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountA, uint amountB) {\\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);\\n }\\n function removeLiquidityETHWithPermit(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountToken, uint amountETH) {\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n (amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline);\\n }\\n\\n // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****\\n function removeLiquidityETHSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) public virtual override ensure(deadline) returns (uint amountETH) {\\n (, amountETH) = removeLiquidity(\\n token,\\n WETH,\\n liquidity,\\n amountTokenMin,\\n amountETHMin,\\n address(this),\\n deadline\\n );\\n TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this)));\\n IWETH(WETH).withdraw(amountETH);\\n TransferHelper.safeTransferETH(to, amountETH);\\n }\\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external virtual override returns (uint amountETH) {\\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\\n uint value = approveMax ? uint(-1) : liquidity;\\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\\n amountETH = removeLiquidityETHSupportingFeeOnTransferTokens(\\n token, liquidity, amountTokenMin, amountETHMin, to, deadline\\n );\\n }\\n\\n // **** SWAP ****\\n // requires the initial amount to have already been sent to the first pair\\n function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual {\\n for (uint i; i < path.length - 1; i++) {\\n (address input, address output) = (path[i], path[i + 1]);\\n (address token0,) = UniswapV2Library.sortTokens(input, output);\\n uint amountOut = amounts[i + 1];\\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));\\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\\n IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output)).swap(\\n amount0Out, amount1Out, to, new bytes(0)\\n );\\n }\\n }\\n function swapExactTokensForTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, to);\\n }\\n function swapTokensForExactTokens(\\n uint amountOut,\\n uint amountInMax,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, to);\\n }\\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsOut(factory, msg.value, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n IWETH(WETH).deposit{value: amounts[0]}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\\n _swap(amounts, path, to);\\n }\\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, address(this));\\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\\n TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\\n }\\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]\\n );\\n _swap(amounts, path, address(this));\\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\\n TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\\n }\\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n returns (uint[] memory amounts)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n require(amounts[0] <= msg.value, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\\n IWETH(WETH).deposit{value: amounts[0]}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\\n _swap(amounts, path, to);\\n // refund dust eth, if any\\n if (msg.value > amounts[0]) TransferHelper.safeTransferETH(msg.sender, msg.value - amounts[0]);\\n }\\n\\n // **** SWAP (supporting fee-on-transfer tokens) ****\\n // requires the initial amount to have already been sent to the first pair\\n function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual {\\n for (uint i; i < path.length - 1; i++) {\\n (address input, address output) = (path[i], path[i + 1]);\\n (address token0,) = UniswapV2Library.sortTokens(input, output);\\n IUniswapV2Pair pair = IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output));\\n uint amountInput;\\n uint amountOutput;\\n { // scope to avoid stack too deep errors\\n (uint reserve0, uint reserve1,) = pair.getReserves();\\n (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\\n amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);\\n amountOutput = UniswapV2Library.getAmountOut(amountInput, reserveInput, reserveOutput);\\n }\\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));\\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\\n pair.swap(amount0Out, amount1Out, to, new bytes(0));\\n }\\n }\\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external virtual override ensure(deadline) {\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\\n );\\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\\n _swapSupportingFeeOnTransferTokens(path, to);\\n require(\\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\\n 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\\n );\\n }\\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n )\\n external\\n virtual\\n override\\n payable\\n ensure(deadline)\\n {\\n require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\\n uint amountIn = msg.value;\\n IWETH(WETH).deposit{value: amountIn}();\\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn));\\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\\n _swapSupportingFeeOnTransferTokens(path, to);\\n require(\\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\\n 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\\n );\\n }\\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n )\\n external\\n virtual\\n override\\n ensure(deadline)\\n {\\n require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\\n TransferHelper.safeTransferFrom(\\n path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\\n );\\n _swapSupportingFeeOnTransferTokens(path, address(this));\\n uint amountOut = IERC20(WETH).balanceOf(address(this));\\n require(amountOut >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\\n IWETH(WETH).withdraw(amountOut);\\n TransferHelper.safeTransferETH(to, amountOut);\\n }\\n\\n // **** LIBRARY FUNCTIONS ****\\n function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) {\\n return UniswapV2Library.quote(amountA, reserveA, reserveB);\\n }\\n\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)\\n public\\n pure\\n virtual\\n override\\n returns (uint amountOut)\\n {\\n return UniswapV2Library.getAmountOut(amountIn, reserveIn, reserveOut);\\n }\\n\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)\\n public\\n pure\\n virtual\\n override\\n returns (uint amountIn)\\n {\\n return UniswapV2Library.getAmountIn(amountOut, reserveIn, reserveOut);\\n }\\n\\n function getAmountsOut(uint amountIn, address[] memory path)\\n public\\n view\\n virtual\\n override\\n returns (uint[] memory amounts)\\n {\\n return UniswapV2Library.getAmountsOut(factory, amountIn, path);\\n }\\n\\n function getAmountsIn(uint amountOut, address[] memory path)\\n public\\n view\\n virtual\\n override\\n returns (uint[] memory amounts)\\n {\\n return UniswapV2Library.getAmountsIn(factory, amountOut, path);\\n }\\n}\\n\\n// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)\\n\\nlibrary SafeMath {\\n function add(uint x, uint y) internal pure returns (uint z) {\\n require((z = x + y) >= x, 'ds-math-add-overflow');\\n }\\n\\n function sub(uint x, uint y) internal pure returns (uint z) {\\n require((z = x - y) <= x, 'ds-math-sub-underflow');\\n }\\n\\n function mul(uint x, uint y) internal pure returns (uint z) {\\n require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');\\n }\\n}\\n\\nlibrary UniswapV2Library {\\n using SafeMath for uint;\\n\\n // returns sorted token addresses, used to handle return values from pairs sorted in this order\\n function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {\\n require(tokenA != tokenB, 'UniswapV2Library: IDENTICAL_ADDRESSES');\\n (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);\\n require(token0 != address(0), 'UniswapV2Library: ZERO_ADDRESS');\\n }\\n\\n // calculates the CREATE2 address for a pair without making any external calls\\n function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {\\n (address token0, address token1) = sortTokens(tokenA, tokenB);\\n pair = address(uint(keccak256(abi.encodePacked(\\n hex'ff',\\n factory,\\n keccak256(abi.encodePacked(token0, token1)),\\n hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // init code hash\\n ))));\\n }\\n\\n // fetches and sorts the reserves for a pair\\n function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {\\n (address token0,) = sortTokens(tokenA, tokenB);\\n (uint reserve0, uint reserve1,) = IUniswapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves();\\n (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\\n }\\n\\n // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset\\n function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {\\n require(amountA > 0, 'UniswapV2Library: INSUFFICIENT_AMOUNT');\\n require(reserveA > 0 && reserveB > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n amountB = amountA.mul(reserveB) / reserveA;\\n }\\n\\n // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {\\n require(amountIn > 0, 'UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT');\\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n uint amountInWithFee = amountIn.mul(997);\\n uint numerator = amountInWithFee.mul(reserveOut);\\n uint denominator = reserveIn.mul(1000).add(amountInWithFee);\\n amountOut = numerator / denominator;\\n }\\n\\n // given an output amount of an asset and pair reserves, returns a required input amount of the other asset\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {\\n require(amountOut > 0, 'UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT');\\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n uint numerator = reserveIn.mul(amountOut).mul(1000);\\n uint denominator = reserveOut.sub(amountOut).mul(997);\\n amountIn = (numerator / denominator).add(1);\\n }\\n\\n // performs chained getAmountOut calculations on any number of pairs\\n function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {\\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\\n amounts = new uint[](path.length);\\n amounts[0] = amountIn;\\n for (uint i; i < path.length - 1; i++) {\\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]);\\n amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);\\n }\\n }\\n\\n // performs chained getAmountIn calculations on any number of pairs\\n function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {\\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\\n amounts = new uint[](path.length);\\n amounts[amounts.length - 1] = amountOut;\\n for (uint i = path.length - 1; i > 0; i--) {\\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);\\n amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);\\n }\\n }\\n}\\n\\n// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false\\nlibrary TransferHelper {\\n function safeApprove(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('approve(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');\\n }\\n\\n function safeTransfer(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transfer(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');\\n }\\n\\n function safeTransferFrom(address token, address from, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');\\n }\\n\\n function safeTransferETH(address to, uint value) internal {\\n (bool success,) = to.call{value:value}(new bytes(0));\\n require(success, 'TransferHelper: ETH_TRANSFER_FAILED');\\n }\\n}\",\"keccak256\":\"0x1b5e0bbc6654c73ae262f53687cc1c2de95c813c0a3f98f74b1448a36a84d011\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "methods": {} + } + } + } + }, + "sources": { + "contracts/Uniswap/UniswapV2Router02.sol": { + "ast": { + "absolutePath": "contracts/Uniswap/UniswapV2Router02.sol", + "exportedSymbols": { + "IERC20": [ + 775 + ], + "IUniswapV2Factory": [ + 62 + ], + "IUniswapV2Pair": [ + 302 + ], + "IUniswapV2Router01": [ + 608 + ], + "IUniswapV2Router02": [ + 693 + ], + "IWETH": [ + 793 + ], + "SafeMath": [ + 2895 + ], + "TransferHelper": [ + 3521 + ], + "UniswapV2Library": [ + 3363 + ], + "UniswapV2Router02": [ + 2822 + ] + }, + "id": 3522, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "=", + "0.6", + ".6" + ], + "nodeType": "PragmaDirective", + "src": "67:23:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": null, + "fullyImplemented": false, + "id": 62, + "linearizedBaseContracts": [ + 62 + ], + "name": "IUniswapV2Factory", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": null, + "id": 11, + "name": "PairCreated", + "nodeType": "EventDefinition", + "parameters": { + "id": 10, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3, + "indexed": true, + "mutability": "mutable", + "name": "token0", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11, + "src": "144:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "144:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5, + "indexed": true, + "mutability": "mutable", + "name": "token1", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11, + "src": "168:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "168:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7, + "indexed": false, + "mutability": "mutable", + "name": "pair", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11, + "src": "192:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "192:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9, + "indexed": false, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11, + "src": "206:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "206:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "143:68:0" + }, + "src": "126:86:0" + }, + { + "body": null, + "documentation": null, + "functionSelector": "017e7e58", + "id": 16, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "feeTo", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12, + "nodeType": "ParameterList", + "parameters": [], + "src": "232:2:0" + }, + "returnParameters": { + "id": 15, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 16, + "src": "258:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "258:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "257:9:0" + }, + "scope": 62, + "src": "218:49:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "094b7415", + "id": 21, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "feeToSetter", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 17, + "nodeType": "ParameterList", + "parameters": [], + "src": "292:2:0" + }, + "returnParameters": { + "id": 20, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 19, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 21, + "src": "318:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 18, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "318:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "317:9:0" + }, + "scope": 62, + "src": "272:55:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "e6a43905", + "id": 30, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getPair", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 26, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23, + "mutability": "mutable", + "name": "tokenA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 30, + "src": "350:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 22, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "350:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 25, + "mutability": "mutable", + "name": "tokenB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 30, + "src": "366:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 24, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "366:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "349:32:0" + }, + "returnParameters": { + "id": 29, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 28, + "mutability": "mutable", + "name": "pair", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 30, + "src": "405:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 27, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "405:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "404:14:0" + }, + "scope": 62, + "src": "333:86:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "1e3dd18b", + "id": 37, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allPairs", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 33, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 37, + "src": "442:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 31, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "442:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "441:6:0" + }, + "returnParameters": { + "id": 36, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 35, + "mutability": "mutable", + "name": "pair", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 37, + "src": "471:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 34, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "471:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "470:14:0" + }, + "scope": 62, + "src": "424:61:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "574f2ba3", + "id": 42, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allPairsLength", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 38, + "nodeType": "ParameterList", + "parameters": [], + "src": "513:2:0" + }, + "returnParameters": { + "id": 41, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 40, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 42, + "src": "539:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 39, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "539:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "538:6:0" + }, + "scope": 62, + "src": "490:55:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "c9c65396", + "id": 51, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "createPair", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 47, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44, + "mutability": "mutable", + "name": "tokenA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 51, + "src": "571:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "571:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 46, + "mutability": "mutable", + "name": "tokenB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 51, + "src": "587:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 45, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "587:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "570:32:0" + }, + "returnParameters": { + "id": 50, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 49, + "mutability": "mutable", + "name": "pair", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 51, + "src": "621:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 48, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "621:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "620:14:0" + }, + "scope": 62, + "src": "551:84:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "f46901ed", + "id": 56, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setFeeTo", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 54, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 53, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 56, + "src": "659:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 52, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "659:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "658:9:0" + }, + "returnParameters": { + "id": 55, + "nodeType": "ParameterList", + "parameters": [], + "src": "676:0:0" + }, + "scope": 62, + "src": "641:36:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "a2e74af6", + "id": 61, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setFeeToSetter", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 59, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 61, + "src": "706:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 57, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "706:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "705:9:0" + }, + "returnParameters": { + "id": 60, + "nodeType": "ParameterList", + "parameters": [], + "src": "723:0:0" + }, + "scope": 62, + "src": "682:42:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3522, + "src": "92:634:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": null, + "fullyImplemented": false, + "id": 302, + "linearizedBaseContracts": [ + 302 + ], + "name": "IUniswapV2Pair", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": null, + "id": 70, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 69, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 64, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 70, + "src": "774:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 63, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "774:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 66, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 70, + "src": "797:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 65, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "797:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 68, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 70, + "src": "822:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 67, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "822:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "773:60:0" + }, + "src": "759:75:0" + }, + { + "anonymous": false, + "documentation": null, + "id": 78, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 77, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 72, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 78, + "src": "854:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 71, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "854:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 74, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 78, + "src": "876:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 73, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "876:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 76, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 78, + "src": "896:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 75, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "896:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "853:54:0" + }, + "src": "839:69:0" + }, + { + "body": null, + "documentation": null, + "functionSelector": "06fdde03", + "id": 83, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 79, + "nodeType": "ParameterList", + "parameters": [], + "src": "927:2:0" + }, + "returnParameters": { + "id": 82, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 81, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 83, + "src": "953:13:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 80, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "953:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "952:15:0" + }, + "scope": 302, + "src": "914:54:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "95d89b41", + "id": 88, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 84, + "nodeType": "ParameterList", + "parameters": [], + "src": "988:2:0" + }, + "returnParameters": { + "id": 87, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 86, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 88, + "src": "1014:13:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 85, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1014:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1013:15:0" + }, + "scope": 302, + "src": "973:56:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "313ce567", + "id": 93, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 89, + "nodeType": "ParameterList", + "parameters": [], + "src": "1051:2:0" + }, + "returnParameters": { + "id": 92, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 91, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 93, + "src": "1077:5:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 90, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1077:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1076:7:0" + }, + "scope": 302, + "src": "1034:50:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "18160ddd", + "id": 98, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 94, + "nodeType": "ParameterList", + "parameters": [], + "src": "1109:2:0" + }, + "returnParameters": { + "id": 97, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 96, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 98, + "src": "1135:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 95, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1135:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1134:6:0" + }, + "scope": 302, + "src": "1089:52:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "70a08231", + "id": 105, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 101, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 100, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 105, + "src": "1165:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 99, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1165:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1164:15:0" + }, + "returnParameters": { + "id": 104, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 103, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 105, + "src": "1203:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 102, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1203:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1202:6:0" + }, + "scope": 302, + "src": "1146:63:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "dd62ed3e", + "id": 114, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 110, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 107, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 114, + "src": "1233:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 106, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1233:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 109, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 114, + "src": "1248:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 108, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1248:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1232:32:0" + }, + "returnParameters": { + "id": 113, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 112, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 114, + "src": "1288:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 111, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1288:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1287:6:0" + }, + "scope": 302, + "src": "1214:80:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "095ea7b3", + "id": 123, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 119, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 116, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 123, + "src": "1317:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 115, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1317:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 118, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 123, + "src": "1334:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 117, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1334:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1316:29:0" + }, + "returnParameters": { + "id": 122, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 121, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 123, + "src": "1364:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 120, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1364:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1363:6:0" + }, + "scope": 302, + "src": "1300:70:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "a9059cbb", + "id": 132, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 128, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 125, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 132, + "src": "1393:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 124, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1393:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 127, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 132, + "src": "1405:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 126, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1405:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1392:24:0" + }, + "returnParameters": { + "id": 131, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 130, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 132, + "src": "1435:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 129, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1435:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1434:6:0" + }, + "scope": 302, + "src": "1375:66:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "23b872dd", + "id": 143, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 139, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 134, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 143, + "src": "1468:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 133, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1468:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 136, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 143, + "src": "1482:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 135, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1482:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 138, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 143, + "src": "1494:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 137, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1494:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1467:38:0" + }, + "returnParameters": { + "id": 142, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 141, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 143, + "src": "1524:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 140, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1524:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1523:6:0" + }, + "scope": 302, + "src": "1446:84:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "3644e515", + "id": 148, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "DOMAIN_SEPARATOR", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 144, + "nodeType": "ParameterList", + "parameters": [], + "src": "1561:2:0" + }, + "returnParameters": { + "id": 147, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 146, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 148, + "src": "1587:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 145, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1587:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1586:9:0" + }, + "scope": 302, + "src": "1536:60:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "30adf81f", + "id": 153, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "PERMIT_TYPEHASH", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 149, + "nodeType": "ParameterList", + "parameters": [], + "src": "1625:2:0" + }, + "returnParameters": { + "id": 152, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 151, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 153, + "src": "1651:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 150, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1651:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1650:9:0" + }, + "scope": 302, + "src": "1601:59:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "7ecebe00", + "id": 160, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "nonces", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 156, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 155, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 160, + "src": "1681:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 154, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1681:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1680:15:0" + }, + "returnParameters": { + "id": 159, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 158, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 160, + "src": "1719:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 157, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1719:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1718:6:0" + }, + "scope": 302, + "src": "1665:60:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "d505accf", + "id": 177, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "permit", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 175, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 162, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 177, + "src": "1747:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 161, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1747:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 164, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 177, + "src": "1762:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 163, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1762:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 166, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 177, + "src": "1779:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 165, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1779:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 168, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 177, + "src": "1791:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 167, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1791:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 170, + "mutability": "mutable", + "name": "v", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 177, + "src": "1806:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 169, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1806:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 172, + "mutability": "mutable", + "name": "r", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 177, + "src": "1815:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 171, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1815:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 174, + "mutability": "mutable", + "name": "s", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 177, + "src": "1826:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 173, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1826:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1746:90:0" + }, + "returnParameters": { + "id": 176, + "nodeType": "ParameterList", + "parameters": [], + "src": "1845:0:0" + }, + "scope": 302, + "src": "1731:115:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": null, + "id": 185, + "name": "Mint", + "nodeType": "EventDefinition", + "parameters": { + "id": 184, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 179, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 185, + "src": "1863:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 178, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1863:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 181, + "indexed": false, + "mutability": "mutable", + "name": "amount0", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 185, + "src": "1887:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 180, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1887:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 183, + "indexed": false, + "mutability": "mutable", + "name": "amount1", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 185, + "src": "1901:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 182, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1901:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1862:52:0" + }, + "src": "1852:63:0" + }, + { + "anonymous": false, + "documentation": null, + "id": 195, + "name": "Burn", + "nodeType": "EventDefinition", + "parameters": { + "id": 194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 187, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 195, + "src": "1931:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 186, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1931:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 189, + "indexed": false, + "mutability": "mutable", + "name": "amount0", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 195, + "src": "1955:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 188, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1955:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 191, + "indexed": false, + "mutability": "mutable", + "name": "amount1", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 195, + "src": "1969:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 190, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1969:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 193, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 195, + "src": "1983:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 192, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1983:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1930:72:0" + }, + "src": "1920:83:0" + }, + { + "anonymous": false, + "documentation": null, + "id": 209, + "name": "Swap", + "nodeType": "EventDefinition", + "parameters": { + "id": 208, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 197, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 209, + "src": "2028:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 196, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2028:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 199, + "indexed": false, + "mutability": "mutable", + "name": "amount0In", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 209, + "src": "2060:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 198, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2060:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 201, + "indexed": false, + "mutability": "mutable", + "name": "amount1In", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 209, + "src": "2084:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 200, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2084:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 203, + "indexed": false, + "mutability": "mutable", + "name": "amount0Out", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 209, + "src": "2108:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 202, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2108:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 205, + "indexed": false, + "mutability": "mutable", + "name": "amount1Out", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 209, + "src": "2133:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 204, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2133:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 207, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 209, + "src": "2158:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 206, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2158:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2018:164:0" + }, + "src": "2008:175:0" + }, + { + "anonymous": false, + "documentation": null, + "id": 215, + "name": "Sync", + "nodeType": "EventDefinition", + "parameters": { + "id": 214, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 211, + "indexed": false, + "mutability": "mutable", + "name": "reserve0", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 215, + "src": "2199:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 210, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "2199:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 213, + "indexed": false, + "mutability": "mutable", + "name": "reserve1", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 215, + "src": "2217:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 212, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "2217:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2198:36:0" + }, + "src": "2188:47:0" + }, + { + "body": null, + "documentation": null, + "functionSelector": "ba9a7a56", + "id": 220, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "MINIMUM_LIQUIDITY", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 216, + "nodeType": "ParameterList", + "parameters": [], + "src": "2267:2:0" + }, + "returnParameters": { + "id": 219, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 218, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 220, + "src": "2293:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 217, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2293:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2292:6:0" + }, + "scope": 302, + "src": "2241:58:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "c45a0155", + "id": 225, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "factory", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 221, + "nodeType": "ParameterList", + "parameters": [], + "src": "2320:2:0" + }, + "returnParameters": { + "id": 224, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 223, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 225, + "src": "2346:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 222, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2346:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2345:9:0" + }, + "scope": 302, + "src": "2304:51:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "0dfe1681", + "id": 230, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "token0", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 226, + "nodeType": "ParameterList", + "parameters": [], + "src": "2375:2:0" + }, + "returnParameters": { + "id": 229, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 228, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 230, + "src": "2401:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 227, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2401:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2400:9:0" + }, + "scope": 302, + "src": "2360:50:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "d21220a7", + "id": 235, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "token1", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 231, + "nodeType": "ParameterList", + "parameters": [], + "src": "2430:2:0" + }, + "returnParameters": { + "id": 234, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 233, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 235, + "src": "2456:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 232, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2456:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2455:9:0" + }, + "scope": 302, + "src": "2415:50:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "0902f1ac", + "id": 244, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getReserves", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 236, + "nodeType": "ParameterList", + "parameters": [], + "src": "2490:2:0" + }, + "returnParameters": { + "id": 243, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 238, + "mutability": "mutable", + "name": "reserve0", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 244, + "src": "2516:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 237, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "2516:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 240, + "mutability": "mutable", + "name": "reserve1", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 244, + "src": "2534:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 239, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "2534:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 242, + "mutability": "mutable", + "name": "blockTimestampLast", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 244, + "src": "2552:25:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 241, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "2552:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2515:63:0" + }, + "scope": 302, + "src": "2470:109:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "5909c0d5", + "id": 249, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "price0CumulativeLast", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 245, + "nodeType": "ParameterList", + "parameters": [], + "src": "2613:2:0" + }, + "returnParameters": { + "id": 248, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 247, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 249, + "src": "2639:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 246, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2639:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2638:6:0" + }, + "scope": 302, + "src": "2584:61:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "5a3d5493", + "id": 254, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "price1CumulativeLast", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 250, + "nodeType": "ParameterList", + "parameters": [], + "src": "2679:2:0" + }, + "returnParameters": { + "id": 253, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 252, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 254, + "src": "2705:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 251, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2705:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2704:6:0" + }, + "scope": 302, + "src": "2650:61:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "7464fc3d", + "id": 259, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "kLast", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 255, + "nodeType": "ParameterList", + "parameters": [], + "src": "2730:2:0" + }, + "returnParameters": { + "id": 258, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 257, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 259, + "src": "2756:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 256, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2756:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2755:6:0" + }, + "scope": 302, + "src": "2716:46:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "6a627842", + "id": 266, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 262, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 261, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 266, + "src": "2782:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 260, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2782:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2781:12:0" + }, + "returnParameters": { + "id": 265, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 264, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 266, + "src": "2812:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 263, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2812:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2811:16:0" + }, + "scope": 302, + "src": "2768:60:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "89afcb44", + "id": 275, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "burn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 269, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 268, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 275, + "src": "2847:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 267, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2847:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2846:12:0" + }, + "returnParameters": { + "id": 274, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 271, + "mutability": "mutable", + "name": "amount0", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 275, + "src": "2877:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 270, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2877:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 273, + "mutability": "mutable", + "name": "amount1", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 275, + "src": "2891:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 272, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2891:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2876:28:0" + }, + "scope": 302, + "src": "2833:72:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "022c0d9f", + "id": 286, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swap", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 284, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 277, + "mutability": "mutable", + "name": "amount0Out", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 286, + "src": "2924:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 276, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2924:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 279, + "mutability": "mutable", + "name": "amount1Out", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 286, + "src": "2941:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 278, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2941:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 281, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 286, + "src": "2958:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 280, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2958:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 283, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 286, + "src": "2970:19:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 282, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2970:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2923:67:0" + }, + "returnParameters": { + "id": 285, + "nodeType": "ParameterList", + "parameters": [], + "src": "2999:0:0" + }, + "scope": 302, + "src": "2910:90:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "bc25cf77", + "id": 291, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "skim", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 289, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 288, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 291, + "src": "3019:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 287, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3019:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3018:12:0" + }, + "returnParameters": { + "id": 290, + "nodeType": "ParameterList", + "parameters": [], + "src": "3039:0:0" + }, + "scope": 302, + "src": "3005:35:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "fff6cae9", + "id": 294, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "sync", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 292, + "nodeType": "ParameterList", + "parameters": [], + "src": "3058:2:0" + }, + "returnParameters": { + "id": 293, + "nodeType": "ParameterList", + "parameters": [], + "src": "3069:0:0" + }, + "scope": 302, + "src": "3045:25:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "485cc955", + "id": 301, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "initialize", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 299, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 296, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 301, + "src": "3096:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 295, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3096:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 298, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 301, + "src": "3105:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 297, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3105:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3095:18:0" + }, + "returnParameters": { + "id": 300, + "nodeType": "ParameterList", + "parameters": [], + "src": "3122:0:0" + }, + "scope": 302, + "src": "3076:47:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3522, + "src": "728:2397:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": null, + "fullyImplemented": false, + "id": 608, + "linearizedBaseContracts": [ + 608 + ], + "name": "IUniswapV2Router01", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "functionSelector": "c45a0155", + "id": 307, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "factory", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 303, + "nodeType": "ParameterList", + "parameters": [], + "src": "3178:2:0" + }, + "returnParameters": { + "id": 306, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 305, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 307, + "src": "3204:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 304, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3204:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3203:9:0" + }, + "scope": 608, + "src": "3162:51:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "ad5c4648", + "id": 312, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "WETH", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 308, + "nodeType": "ParameterList", + "parameters": [], + "src": "3231:2:0" + }, + "returnParameters": { + "id": 311, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 310, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 312, + "src": "3257:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 309, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3257:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3256:9:0" + }, + "scope": 608, + "src": "3218:48:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "e8e33700", + "id": 337, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "addLiquidity", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 329, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 314, + "mutability": "mutable", + "name": "tokenA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 337, + "src": "3303:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 313, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3303:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 316, + "mutability": "mutable", + "name": "tokenB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 337, + "src": "3327:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 315, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3327:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 318, + "mutability": "mutable", + "name": "amountADesired", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 337, + "src": "3351:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 317, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3351:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 320, + "mutability": "mutable", + "name": "amountBDesired", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 337, + "src": "3380:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 319, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3380:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 322, + "mutability": "mutable", + "name": "amountAMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 337, + "src": "3409:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 321, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3409:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 324, + "mutability": "mutable", + "name": "amountBMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 337, + "src": "3434:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 323, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3434:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 326, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 337, + "src": "3459:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 325, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3459:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 328, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 337, + "src": "3479:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 327, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3479:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3293:205:0" + }, + "returnParameters": { + "id": 336, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 331, + "mutability": "mutable", + "name": "amountA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 337, + "src": "3517:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 330, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3517:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 333, + "mutability": "mutable", + "name": "amountB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 337, + "src": "3531:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 332, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3531:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 335, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 337, + "src": "3545:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 334, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3545:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3516:44:0" + }, + "scope": 608, + "src": "3272:289:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "f305d719", + "id": 358, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "addLiquidityETH", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 350, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 339, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 358, + "src": "3600:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 338, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3600:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 341, + "mutability": "mutable", + "name": "amountTokenDesired", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 358, + "src": "3623:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 340, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3623:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 343, + "mutability": "mutable", + "name": "amountTokenMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 358, + "src": "3656:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 342, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3656:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 345, + "mutability": "mutable", + "name": "amountETHMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 358, + "src": "3685:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 344, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3685:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 347, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 358, + "src": "3712:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 346, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3712:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 349, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 358, + "src": "3732:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 348, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3732:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3590:161:0" + }, + "returnParameters": { + "id": 357, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 352, + "mutability": "mutable", + "name": "amountToken", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 358, + "src": "3778:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 351, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3778:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 354, + "mutability": "mutable", + "name": "amountETH", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 358, + "src": "3796:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 353, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3796:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 356, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 358, + "src": "3812:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 355, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3812:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3777:50:0" + }, + "scope": 608, + "src": "3566:262:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "baa2abde", + "id": 379, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidity", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 373, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 360, + "mutability": "mutable", + "name": "tokenA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 379, + "src": "3867:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 359, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3867:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 362, + "mutability": "mutable", + "name": "tokenB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 379, + "src": "3891:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 361, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3891:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 364, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 379, + "src": "3915:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 363, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3915:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 366, + "mutability": "mutable", + "name": "amountAMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 379, + "src": "3939:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 365, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3939:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 368, + "mutability": "mutable", + "name": "amountBMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 379, + "src": "3964:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 367, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3964:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 370, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 379, + "src": "3989:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 369, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3989:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 372, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 379, + "src": "4009:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 371, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4009:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3857:171:0" + }, + "returnParameters": { + "id": 378, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 375, + "mutability": "mutable", + "name": "amountA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 379, + "src": "4047:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 374, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4047:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 377, + "mutability": "mutable", + "name": "amountB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 379, + "src": "4061:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 376, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4061:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4046:28:0" + }, + "scope": 608, + "src": "3833:242:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "02751cec", + "id": 398, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidityETH", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 392, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 381, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 398, + "src": "4117:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 380, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4117:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 383, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 398, + "src": "4140:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 382, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4140:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 385, + "mutability": "mutable", + "name": "amountTokenMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 398, + "src": "4164:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 384, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4164:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 387, + "mutability": "mutable", + "name": "amountETHMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 398, + "src": "4193:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 386, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4193:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 389, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 398, + "src": "4220:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 388, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4220:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 391, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 398, + "src": "4240:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 390, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4240:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4107:152:0" + }, + "returnParameters": { + "id": 397, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 394, + "mutability": "mutable", + "name": "amountToken", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 398, + "src": "4278:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 393, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4278:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 396, + "mutability": "mutable", + "name": "amountETH", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 398, + "src": "4296:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 395, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4296:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4277:34:0" + }, + "scope": 608, + "src": "4080:232:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "2195995c", + "id": 427, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidityWithPermit", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 421, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 400, + "mutability": "mutable", + "name": "tokenA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 427, + "src": "4361:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 399, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4361:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 402, + "mutability": "mutable", + "name": "tokenB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 427, + "src": "4385:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 401, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4385:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 404, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 427, + "src": "4409:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 403, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4409:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 406, + "mutability": "mutable", + "name": "amountAMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 427, + "src": "4433:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 405, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4433:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 408, + "mutability": "mutable", + "name": "amountBMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 427, + "src": "4458:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 407, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4458:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 410, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 427, + "src": "4483:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 409, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4483:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 412, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 427, + "src": "4503:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 411, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4503:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 414, + "mutability": "mutable", + "name": "approveMax", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 427, + "src": "4526:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 413, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4526:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 416, + "mutability": "mutable", + "name": "v", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 427, + "src": "4543:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 415, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4543:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 418, + "mutability": "mutable", + "name": "r", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 427, + "src": "4552:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 417, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4552:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 420, + "mutability": "mutable", + "name": "s", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 427, + "src": "4563:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 419, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4563:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4351:227:0" + }, + "returnParameters": { + "id": 426, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 423, + "mutability": "mutable", + "name": "amountA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 427, + "src": "4597:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 422, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4597:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 425, + "mutability": "mutable", + "name": "amountB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 427, + "src": "4611:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 424, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4611:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4596:28:0" + }, + "scope": 608, + "src": "4317:308:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "ded9382a", + "id": 454, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidityETHWithPermit", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 448, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 429, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 454, + "src": "4677:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 428, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4677:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 431, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 454, + "src": "4700:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 430, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4700:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 433, + "mutability": "mutable", + "name": "amountTokenMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 454, + "src": "4724:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 432, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4724:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 435, + "mutability": "mutable", + "name": "amountETHMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 454, + "src": "4753:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 434, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4753:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 437, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 454, + "src": "4780:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 436, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4780:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 439, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 454, + "src": "4800:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 438, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4800:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 441, + "mutability": "mutable", + "name": "approveMax", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 454, + "src": "4823:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 440, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4823:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 443, + "mutability": "mutable", + "name": "v", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 454, + "src": "4840:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 442, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4840:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 445, + "mutability": "mutable", + "name": "r", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 454, + "src": "4849:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 444, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4849:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 447, + "mutability": "mutable", + "name": "s", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 454, + "src": "4860:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 446, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4860:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4667:208:0" + }, + "returnParameters": { + "id": 453, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 450, + "mutability": "mutable", + "name": "amountToken", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 454, + "src": "4894:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 449, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4894:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 452, + "mutability": "mutable", + "name": "amountETH", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 454, + "src": "4912:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 451, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4912:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4893:34:0" + }, + "scope": 608, + "src": "4630:298:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "38ed1739", + "id": 471, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactTokensForTokens", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 466, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 456, + "mutability": "mutable", + "name": "amountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 471, + "src": "4976:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 455, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4976:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 458, + "mutability": "mutable", + "name": "amountOutMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 471, + "src": "4999:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 457, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4999:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 461, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 471, + "src": "5026:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 459, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5026:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 460, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5026:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 463, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 471, + "src": "5059:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 462, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5059:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 465, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 471, + "src": "5079:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 464, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5079:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4966:132:0" + }, + "returnParameters": { + "id": 470, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 469, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 471, + "src": "5117:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 467, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5117:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 468, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5117:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5116:23:0" + }, + "scope": 608, + "src": "4933:207:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "8803dbee", + "id": 488, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapTokensForExactTokens", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 483, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 473, + "mutability": "mutable", + "name": "amountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 488, + "src": "5188:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 472, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5188:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 475, + "mutability": "mutable", + "name": "amountInMax", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 488, + "src": "5212:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 474, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5212:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 478, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 488, + "src": "5238:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 476, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5238:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 477, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5238:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 480, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 488, + "src": "5271:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 479, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5271:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 482, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 488, + "src": "5291:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 481, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5291:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5178:132:0" + }, + "returnParameters": { + "id": 487, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 486, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 488, + "src": "5329:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 484, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5329:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 485, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5329:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5328:23:0" + }, + "scope": 608, + "src": "5145:207:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "7ff36ab5", + "id": 503, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactETHForTokens", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 498, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 490, + "mutability": "mutable", + "name": "amountOutMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 503, + "src": "5388:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 489, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5388:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 493, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 503, + "src": "5407:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 491, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5407:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 492, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5407:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 495, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 503, + "src": "5432:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 494, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5432:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 497, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 503, + "src": "5444:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 496, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5444:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5387:71:0" + }, + "returnParameters": { + "id": 502, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 501, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 503, + "src": "5509:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 499, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5509:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 500, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5509:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5508:23:0" + }, + "scope": 608, + "src": "5357:175:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "4a25d94a", + "id": 520, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapTokensForExactETH", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 515, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 505, + "mutability": "mutable", + "name": "amountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 520, + "src": "5568:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 504, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5568:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 507, + "mutability": "mutable", + "name": "amountInMax", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 520, + "src": "5584:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 506, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5584:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 510, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 520, + "src": "5602:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 508, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5602:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 509, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5602:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 512, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 520, + "src": "5627:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 511, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5627:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 514, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 520, + "src": "5639:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 513, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5639:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5567:86:0" + }, + "returnParameters": { + "id": 519, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 518, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 520, + "src": "5688:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 516, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5688:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 517, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5688:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5687:23:0" + }, + "scope": 608, + "src": "5537:174:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "18cbafe5", + "id": 537, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactTokensForETH", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 532, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 522, + "mutability": "mutable", + "name": "amountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 537, + "src": "5747:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 521, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5747:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 524, + "mutability": "mutable", + "name": "amountOutMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 537, + "src": "5762:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 523, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5762:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 527, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 537, + "src": "5781:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 525, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5781:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 526, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5781:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 529, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 537, + "src": "5806:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 528, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5806:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 531, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 537, + "src": "5818:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 530, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5818:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5746:86:0" + }, + "returnParameters": { + "id": 536, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 535, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 537, + "src": "5867:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 533, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5867:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 534, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5867:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5866:23:0" + }, + "scope": 608, + "src": "5716:174:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "fb3bdb41", + "id": 552, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapETHForExactTokens", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 547, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 539, + "mutability": "mutable", + "name": "amountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 552, + "src": "5926:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 538, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5926:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 542, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 552, + "src": "5942:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 540, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5942:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 541, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5942:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 544, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 552, + "src": "5967:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 543, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5967:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 546, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 552, + "src": "5979:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 545, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5979:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5925:68:0" + }, + "returnParameters": { + "id": 551, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 550, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 552, + "src": "6044:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 548, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6044:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 549, + "length": null, + "nodeType": "ArrayTypeName", + "src": "6044:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6043:23:0" + }, + "scope": 608, + "src": "5895:172:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "ad615dec", + "id": 563, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "quote", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 559, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 554, + "mutability": "mutable", + "name": "amountA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 563, + "src": "6088:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 553, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6088:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 556, + "mutability": "mutable", + "name": "reserveA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 563, + "src": "6102:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 555, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6102:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 558, + "mutability": "mutable", + "name": "reserveB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 563, + "src": "6117:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 557, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6117:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6087:44:0" + }, + "returnParameters": { + "id": 562, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 561, + "mutability": "mutable", + "name": "amountB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 563, + "src": "6155:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 560, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6155:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6154:14:0" + }, + "scope": 608, + "src": "6073:96:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "054d50d4", + "id": 574, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAmountOut", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 570, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 565, + "mutability": "mutable", + "name": "amountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 574, + "src": "6196:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 564, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6196:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 567, + "mutability": "mutable", + "name": "reserveIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 574, + "src": "6211:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 566, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6211:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 569, + "mutability": "mutable", + "name": "reserveOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 574, + "src": "6227:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 568, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6227:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6195:48:0" + }, + "returnParameters": { + "id": 573, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 572, + "mutability": "mutable", + "name": "amountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 574, + "src": "6267:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 571, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6267:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6266:16:0" + }, + "scope": 608, + "src": "6174:109:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "85f8c259", + "id": 585, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAmountIn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 581, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 576, + "mutability": "mutable", + "name": "amountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 585, + "src": "6309:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 575, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6309:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 578, + "mutability": "mutable", + "name": "reserveIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 585, + "src": "6325:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 577, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6325:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 580, + "mutability": "mutable", + "name": "reserveOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 585, + "src": "6341:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 579, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6341:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6308:49:0" + }, + "returnParameters": { + "id": 584, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 583, + "mutability": "mutable", + "name": "amountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 585, + "src": "6381:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 582, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6381:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6380:15:0" + }, + "scope": 608, + "src": "6288:108:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "d06ca61f", + "id": 596, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAmountsOut", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 591, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 587, + "mutability": "mutable", + "name": "amountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 596, + "src": "6424:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 586, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6424:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 590, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 596, + "src": "6439:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 588, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6439:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 589, + "length": null, + "nodeType": "ArrayTypeName", + "src": "6439:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6423:40:0" + }, + "returnParameters": { + "id": 595, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 594, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 596, + "src": "6487:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 592, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6487:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 593, + "length": null, + "nodeType": "ArrayTypeName", + "src": "6487:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6486:23:0" + }, + "scope": 608, + "src": "6401:109:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "1f00ca74", + "id": 607, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAmountsIn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 602, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 598, + "mutability": "mutable", + "name": "amountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 607, + "src": "6537:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 597, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6537:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 601, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 607, + "src": "6553:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 599, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6553:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 600, + "length": null, + "nodeType": "ArrayTypeName", + "src": "6553:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6536:41:0" + }, + "returnParameters": { + "id": 606, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 605, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 607, + "src": "6601:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 603, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6601:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 604, + "length": null, + "nodeType": "ArrayTypeName", + "src": "6601:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6600:23:0" + }, + "scope": 608, + "src": "6515:109:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3522, + "src": "3127:3499:0" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 609, + "name": "IUniswapV2Router01", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 608, + "src": "6660:18:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router01_$608", + "typeString": "contract IUniswapV2Router01" + } + }, + "id": 610, + "nodeType": "InheritanceSpecifier", + "src": "6660:18:0" + } + ], + "contractDependencies": [ + 608 + ], + "contractKind": "interface", + "documentation": null, + "fullyImplemented": false, + "id": 693, + "linearizedBaseContracts": [ + 693, + 608 + ], + "name": "IUniswapV2Router02", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "functionSelector": "af2979eb", + "id": 627, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidityETHSupportingFeeOnTransferTokens", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 623, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 612, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 627, + "src": "6751:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 611, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6751:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 614, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 627, + "src": "6774:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 613, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6774:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 616, + "mutability": "mutable", + "name": "amountTokenMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 627, + "src": "6798:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 615, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6798:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 618, + "mutability": "mutable", + "name": "amountETHMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 627, + "src": "6827:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 617, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6827:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 620, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 627, + "src": "6854:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 619, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6854:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 622, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 627, + "src": "6874:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 621, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6874:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6741:152:0" + }, + "returnParameters": { + "id": 626, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 625, + "mutability": "mutable", + "name": "amountETH", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 627, + "src": "6912:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 624, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6912:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6911:16:0" + }, + "scope": 693, + "src": "6685:243:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "5b0d5984", + "id": 652, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 648, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 629, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 652, + "src": "7009:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 628, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7009:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 631, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 652, + "src": "7032:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 630, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7032:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 633, + "mutability": "mutable", + "name": "amountTokenMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 652, + "src": "7056:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 632, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7056:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 635, + "mutability": "mutable", + "name": "amountETHMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 652, + "src": "7085:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 634, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7085:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 637, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 652, + "src": "7112:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 636, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7112:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 639, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 652, + "src": "7132:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 638, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7132:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 641, + "mutability": "mutable", + "name": "approveMax", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 652, + "src": "7155:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 640, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7155:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 643, + "mutability": "mutable", + "name": "v", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 652, + "src": "7172:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 642, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "7172:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 645, + "mutability": "mutable", + "name": "r", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 652, + "src": "7181:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 644, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7181:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 647, + "mutability": "mutable", + "name": "s", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 652, + "src": "7192:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 646, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7192:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6999:208:0" + }, + "returnParameters": { + "id": 651, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 650, + "mutability": "mutable", + "name": "amountETH", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 652, + "src": "7226:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 649, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7226:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7225:16:0" + }, + "scope": 693, + "src": "6933:309:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "5c11d795", + "id": 666, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 664, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 654, + "mutability": "mutable", + "name": "amountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 666, + "src": "7320:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 653, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7320:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 656, + "mutability": "mutable", + "name": "amountOutMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 666, + "src": "7343:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 655, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7343:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 659, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 666, + "src": "7370:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 657, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7370:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 658, + "length": null, + "nodeType": "ArrayTypeName", + "src": "7370:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 661, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 666, + "src": "7403:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 660, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7403:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 663, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 666, + "src": "7423:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 662, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7423:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7310:132:0" + }, + "returnParameters": { + "id": 665, + "nodeType": "ParameterList", + "parameters": [], + "src": "7451:0:0" + }, + "scope": 693, + "src": "7248:204:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "b6f9de95", + "id": 678, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 676, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 668, + "mutability": "mutable", + "name": "amountOutMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 678, + "src": "7526:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 667, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7526:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 671, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 678, + "src": "7553:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 669, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7553:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 670, + "length": null, + "nodeType": "ArrayTypeName", + "src": "7553:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 673, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 678, + "src": "7586:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 672, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7586:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 675, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 678, + "src": "7606:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 674, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7606:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7516:109:0" + }, + "returnParameters": { + "id": 677, + "nodeType": "ParameterList", + "parameters": [], + "src": "7642:0:0" + }, + "scope": 693, + "src": "7457:186:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "791ac947", + "id": 692, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactTokensForETHSupportingFeeOnTransferTokens", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 690, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 680, + "mutability": "mutable", + "name": "amountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 692, + "src": "7717:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 679, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7717:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 682, + "mutability": "mutable", + "name": "amountOutMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 692, + "src": "7740:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 681, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7740:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 685, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 692, + "src": "7767:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 683, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7767:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 684, + "length": null, + "nodeType": "ArrayTypeName", + "src": "7767:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 687, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 692, + "src": "7800:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 686, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7800:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 689, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 692, + "src": "7820:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 688, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7820:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7707:132:0" + }, + "returnParameters": { + "id": 691, + "nodeType": "ParameterList", + "parameters": [], + "src": "7848:0:0" + }, + "scope": 693, + "src": "7648:201:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3522, + "src": "6628:1223:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": null, + "fullyImplemented": false, + "id": 775, + "linearizedBaseContracts": [ + 775 + ], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": null, + "id": 701, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 700, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 695, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 701, + "src": "7891:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 694, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7891:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 697, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 701, + "src": "7914:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 696, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7914:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 699, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 701, + "src": "7939:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 698, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7939:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7890:60:0" + }, + "src": "7876:75:0" + }, + { + "anonymous": false, + "documentation": null, + "id": 709, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 708, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 703, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 709, + "src": "7971:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 702, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7971:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 705, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 709, + "src": "7993:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 704, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7993:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 707, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 709, + "src": "8013:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 706, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8013:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7970:54:0" + }, + "src": "7956:69:0" + }, + { + "body": null, + "documentation": null, + "functionSelector": "06fdde03", + "id": 714, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 710, + "nodeType": "ParameterList", + "parameters": [], + "src": "8044:2:0" + }, + "returnParameters": { + "id": 713, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 712, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 714, + "src": "8070:13:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 711, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "8070:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8069:15:0" + }, + "scope": 775, + "src": "8031:54:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "95d89b41", + "id": 719, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 715, + "nodeType": "ParameterList", + "parameters": [], + "src": "8105:2:0" + }, + "returnParameters": { + "id": 718, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 717, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 719, + "src": "8131:13:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 716, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "8131:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8130:15:0" + }, + "scope": 775, + "src": "8090:56:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "313ce567", + "id": 724, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 720, + "nodeType": "ParameterList", + "parameters": [], + "src": "8168:2:0" + }, + "returnParameters": { + "id": 723, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 722, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 724, + "src": "8194:5:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 721, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "8194:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8193:7:0" + }, + "scope": 775, + "src": "8151:50:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "18160ddd", + "id": 729, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 725, + "nodeType": "ParameterList", + "parameters": [], + "src": "8226:2:0" + }, + "returnParameters": { + "id": 728, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 727, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 729, + "src": "8252:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 726, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8252:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8251:6:0" + }, + "scope": 775, + "src": "8206:52:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "70a08231", + "id": 736, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 732, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 731, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 736, + "src": "8282:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 730, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8282:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8281:15:0" + }, + "returnParameters": { + "id": 735, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 734, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 736, + "src": "8320:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 733, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8320:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8319:6:0" + }, + "scope": 775, + "src": "8263:63:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "dd62ed3e", + "id": 745, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 741, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 738, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 745, + "src": "8350:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 737, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8350:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 740, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 745, + "src": "8365:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 739, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8365:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8349:32:0" + }, + "returnParameters": { + "id": 744, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 743, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 745, + "src": "8405:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 742, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8405:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8404:6:0" + }, + "scope": 775, + "src": "8331:80:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "095ea7b3", + "id": 754, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 750, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 747, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 754, + "src": "8434:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 746, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8434:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 749, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 754, + "src": "8451:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 748, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8451:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8433:29:0" + }, + "returnParameters": { + "id": 753, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 752, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 754, + "src": "8481:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 751, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8481:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8480:6:0" + }, + "scope": 775, + "src": "8417:70:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "a9059cbb", + "id": 763, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 759, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 756, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 763, + "src": "8510:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 755, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8510:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 758, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 763, + "src": "8522:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 757, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8522:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8509:24:0" + }, + "returnParameters": { + "id": 762, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 761, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 763, + "src": "8552:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 760, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8552:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8551:6:0" + }, + "scope": 775, + "src": "8492:66:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "23b872dd", + "id": 774, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 770, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 765, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 774, + "src": "8585:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 764, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8585:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 767, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 774, + "src": "8599:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 766, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8599:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 769, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 774, + "src": "8611:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 768, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8611:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8584:38:0" + }, + "returnParameters": { + "id": 773, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 772, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 774, + "src": "8641:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 771, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8641:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8640:6:0" + }, + "scope": 775, + "src": "8563:84:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3522, + "src": "7853:796:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": null, + "fullyImplemented": false, + "id": 793, + "linearizedBaseContracts": [ + 793 + ], + "name": "IWETH", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "functionSelector": "d0e30db0", + "id": 778, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "deposit", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 776, + "nodeType": "ParameterList", + "parameters": [], + "src": "8689:2:0" + }, + "returnParameters": { + "id": 777, + "nodeType": "ParameterList", + "parameters": [], + "src": "8708:0:0" + }, + "scope": 793, + "src": "8673:36:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "a9059cbb", + "id": 787, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 783, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 780, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 787, + "src": "8732:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 779, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8732:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 782, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 787, + "src": "8744:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 781, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8744:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8731:24:0" + }, + "returnParameters": { + "id": 786, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 785, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 787, + "src": "8774:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 784, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8774:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8773:6:0" + }, + "scope": 793, + "src": "8714:66:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "2e1a7d4d", + "id": 792, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "withdraw", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 790, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 789, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 792, + "src": "8803:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 788, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8803:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8802:6:0" + }, + "returnParameters": { + "id": 791, + "nodeType": "ParameterList", + "parameters": [], + "src": "8817:0:0" + }, + "scope": 793, + "src": "8785:33:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3522, + "src": "8651:169:0" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 794, + "name": "IUniswapV2Router02", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 693, + "src": "8852:18:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$693", + "typeString": "contract IUniswapV2Router02" + } + }, + "id": 795, + "nodeType": "InheritanceSpecifier", + "src": "8852:18:0" + } + ], + "contractDependencies": [ + 608, + 693 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 2822, + "linearizedBaseContracts": [ + 2822, + 693, + 608 + ], + "name": "UniswapV2Router02", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 798, + "libraryName": { + "contractScope": null, + "id": 796, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2895, + "src": "8883:8:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$2895", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "8877:24:0", + "typeName": { + "id": 797, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8896:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "baseFunctions": [ + 307 + ], + "constant": false, + "functionSelector": "c45a0155", + "id": 801, + "mutability": "immutable", + "name": "factory", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 800, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "8932:8:0" + }, + "scope": 2822, + "src": "8907:41:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 799, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8907:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "baseFunctions": [ + 312 + ], + "constant": false, + "functionSelector": "ad5c4648", + "id": 804, + "mutability": "immutable", + "name": "WETH", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 803, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "8979:8:0" + }, + "scope": 2822, + "src": "8954:38:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 802, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8954:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 817, + "nodeType": "Block", + "src": "9030:92:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 809, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 806, + "src": "9048:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 810, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "9060:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9060:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9048:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e69737761705632526f757465723a2045585049524544", + "id": 813, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9077:26:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1a9d3f3429d6f7d601e79a56388ebaeef879c178f6da38e08a509d9e3994b6a6", + "typeString": "literal_string \"UniswapV2Router: EXPIRED\"" + }, + "value": "UniswapV2Router: EXPIRED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1a9d3f3429d6f7d601e79a56388ebaeef879c178f6da38e08a509d9e3994b6a6", + "typeString": "literal_string \"UniswapV2Router: EXPIRED\"" + } + ], + "id": 808, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9040:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9040:64:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 815, + "nodeType": "ExpressionStatement", + "src": "9040:64:0" + }, + { + "id": 816, + "nodeType": "PlaceholderStatement", + "src": "9114:1:0" + } + ] + }, + "documentation": null, + "id": 818, + "name": "ensure", + "nodeType": "ModifierDefinition", + "overrides": null, + "parameters": { + "id": 807, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 806, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 818, + "src": "9015:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 805, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9015:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9014:15:0" + }, + "src": "8999:123:0", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 833, + "nodeType": "Block", + "src": "9180:57:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 827, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 825, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "9190:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 826, + "name": "_factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 820, + "src": "9200:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9190:18:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 828, + "nodeType": "ExpressionStatement", + "src": "9190:18:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 829, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "9218:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 830, + "name": "_WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 822, + "src": "9225:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9218:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 832, + "nodeType": "ExpressionStatement", + "src": "9218:12:0" + } + ] + }, + "documentation": null, + "id": 834, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 823, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 820, + "mutability": "mutable", + "name": "_factory", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 834, + "src": "9140:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 819, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9140:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 822, + "mutability": "mutable", + "name": "_WETH", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 834, + "src": "9158:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 821, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9158:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9139:33:0" + }, + "returnParameters": { + "id": 824, + "nodeType": "ParameterList", + "parameters": [], + "src": "9180:0:0" + }, + "scope": 2822, + "src": "9128:109:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 844, + "nodeType": "Block", + "src": "9270:98:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 838, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "9287:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9287:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 840, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "9301:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9287:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 837, + "name": "assert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -3, + "src": "9280:6:0", + "typeDescriptions": { + "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9280:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 843, + "nodeType": "ExpressionStatement", + "src": "9280:26:0" + } + ] + }, + "documentation": null, + "id": 845, + "implemented": true, + "kind": "receive", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 835, + "nodeType": "ParameterList", + "parameters": [], + "src": "9250:2:0" + }, + "returnParameters": { + "id": 836, + "nodeType": "ParameterList", + "parameters": [], + "src": "9270:0:0" + }, + "scope": 2822, + "src": "9243:125:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 975, + "nodeType": "Block", + "src": "9644:1124:0", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 868, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 847, + "src": "9744:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 869, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 849, + "src": "9752:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 865, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "9727:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 864, + "name": "IUniswapV2Factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 62, + "src": "9709:17:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV2Factory_$62_$", + "typeString": "type(contract IUniswapV2Factory)" + } + }, + "id": 866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9709:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Factory_$62", + "typeString": "contract IUniswapV2Factory" + } + }, + "id": 867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getPair", + "nodeType": "MemberAccess", + "referencedDeclaration": 30, + "src": "9709:34:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address) view external returns (address)" + } + }, + "id": 870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9709:50:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 873, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9771:1:0", + "subdenomination": null, + "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": 872, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9763:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 871, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9763:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 874, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9763:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9709:64:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 885, + "nodeType": "IfStatement", + "src": "9705:148:0", + "trueBody": { + "id": 884, + "nodeType": "Block", + "src": "9775:78:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 880, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 847, + "src": "9827:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 881, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 849, + "src": "9835:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 877, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "9807:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 876, + "name": "IUniswapV2Factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 62, + "src": "9789:17:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV2Factory_$62_$", + "typeString": "type(contract IUniswapV2Factory)" + } + }, + "id": 878, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9789:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Factory_$62", + "typeString": "contract IUniswapV2Factory" + } + }, + "id": 879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "createPair", + "nodeType": "MemberAccess", + "referencedDeclaration": 51, + "src": "9789:37:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address) external returns (address)" + } + }, + "id": 882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9789:53:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 883, + "nodeType": "ExpressionStatement", + "src": "9789:53:0" + } + ] + } + }, + { + "assignments": [ + 887, + 889 + ], + "declarations": [ + { + "constant": false, + "id": 887, + "mutability": "mutable", + "name": "reserveA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 975, + "src": "9863:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 886, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9863:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 889, + "mutability": "mutable", + "name": "reserveB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 975, + "src": "9878:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 888, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9878:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 896, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 892, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "9924:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 893, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 847, + "src": "9933:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 894, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 849, + "src": "9941:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 890, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "9895:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getReserves", + "nodeType": "MemberAccess", + "referencedDeclaration": 3037, + "src": "9895:28:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (address,address,address) view returns (uint256,uint256)" + } + }, + "id": 895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9895:53:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9862:86:0" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 897, + "name": "reserveA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 887, + "src": "9962:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 898, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9974:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9962:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 900, + "name": "reserveB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 889, + "src": "9979:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 901, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9991:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9979:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9962:30:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 973, + "nodeType": "Block", + "src": "10078:684:0", + "statements": [ + { + "assignments": [ + 914 + ], + "declarations": [ + { + "constant": false, + "id": 914, + "mutability": "mutable", + "name": "amountBOptimal", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 973, + "src": "10092:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 913, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "10092:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 921, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 917, + "name": "amountADesired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "10137:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 918, + "name": "reserveA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 887, + "src": "10153:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 919, + "name": "reserveB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 889, + "src": "10163:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 915, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "10114:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "quote", + "nodeType": "MemberAccess", + "referencedDeclaration": 3076, + "src": "10114:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10114:58:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10092:80:0" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 922, + "name": "amountBOptimal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 914, + "src": "10190:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 923, + "name": "amountBDesired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 853, + "src": "10208:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10190:32:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 971, + "nodeType": "Block", + "src": "10413:339:0", + "statements": [ + { + "assignments": [ + 942 + ], + "declarations": [ + { + "constant": false, + "id": 942, + "mutability": "mutable", + "name": "amountAOptimal", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 971, + "src": "10431:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 941, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "10431:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 949, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 945, + "name": "amountBDesired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 853, + "src": "10476:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 946, + "name": "reserveB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 889, + "src": "10492:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 947, + "name": "reserveA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 887, + "src": "10502:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 943, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "10453:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "quote", + "nodeType": "MemberAccess", + "referencedDeclaration": 3076, + "src": "10453:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10453:58:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10431:80:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 951, + "name": "amountAOptimal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 942, + "src": "10536:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 952, + "name": "amountADesired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "10554:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10536:32:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 950, + "name": "assert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -3, + "src": "10529:6:0", + "typeDescriptions": { + "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10529:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 955, + "nodeType": "ExpressionStatement", + "src": "10529:40:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 959, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 957, + "name": "amountAOptimal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 942, + "src": "10595:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 958, + "name": "amountAMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 855, + "src": "10613:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10595:28:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e69737761705632526f757465723a20494e53554646494349454e545f415f414d4f554e54", + "id": 960, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10625:40:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d1d32edc232bc1da2150d590567c5d6321ade8a80edcd2485e6068d018c7fd67", + "typeString": "literal_string \"UniswapV2Router: INSUFFICIENT_A_AMOUNT\"" + }, + "value": "UniswapV2Router: INSUFFICIENT_A_AMOUNT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d1d32edc232bc1da2150d590567c5d6321ade8a80edcd2485e6068d018c7fd67", + "typeString": "literal_string \"UniswapV2Router: INSUFFICIENT_A_AMOUNT\"" + } + ], + "id": 956, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "10587:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10587:79:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 962, + "nodeType": "ExpressionStatement", + "src": "10587:79:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 963, + "name": "amountA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 860, + "src": "10685:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 964, + "name": "amountB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 862, + "src": "10694:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 965, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "10684:18:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 966, + "name": "amountAOptimal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 942, + "src": "10706:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 967, + "name": "amountBDesired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 853, + "src": "10722:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 968, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10705:32:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "10684:53:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 970, + "nodeType": "ExpressionStatement", + "src": "10684:53:0" + } + ] + }, + "id": 972, + "nodeType": "IfStatement", + "src": "10186:566:0", + "trueBody": { + "id": 940, + "nodeType": "Block", + "src": "10224:183:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 926, + "name": "amountBOptimal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 914, + "src": "10250:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 927, + "name": "amountBMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 857, + "src": "10268:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10250:28:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e69737761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54", + "id": 929, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10280:40:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_508673fa99dd55571c7741114b40754785309d1a2171022cd7c5caaae38fc7b6", + "typeString": "literal_string \"UniswapV2Router: INSUFFICIENT_B_AMOUNT\"" + }, + "value": "UniswapV2Router: INSUFFICIENT_B_AMOUNT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_508673fa99dd55571c7741114b40754785309d1a2171022cd7c5caaae38fc7b6", + "typeString": "literal_string \"UniswapV2Router: INSUFFICIENT_B_AMOUNT\"" + } + ], + "id": 925, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "10242:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10242:79:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 931, + "nodeType": "ExpressionStatement", + "src": "10242:79:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 938, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 932, + "name": "amountA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 860, + "src": "10340:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 933, + "name": "amountB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 862, + "src": "10349:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 934, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "10339:18:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 935, + "name": "amountADesired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "10361:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 936, + "name": "amountBOptimal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 914, + "src": "10377:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 937, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10360:32:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "10339:53:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 939, + "nodeType": "ExpressionStatement", + "src": "10339:53:0" + } + ] + } + } + ] + }, + "id": 974, + "nodeType": "IfStatement", + "src": "9958:804:0", + "trueBody": { + "id": 912, + "nodeType": "Block", + "src": "9994:78:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 910, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 904, + "name": "amountA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 860, + "src": "10009:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 905, + "name": "amountB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 862, + "src": "10018:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 906, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "10008:18:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 907, + "name": "amountADesired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "10030:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 908, + "name": "amountBDesired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 853, + "src": "10046:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 909, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10029:32:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "10008:53:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 911, + "nodeType": "ExpressionStatement", + "src": "10008:53:0" + } + ] + } + } + ] + }, + "documentation": null, + "id": 976, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addLiquidity", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 858, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 847, + "mutability": "mutable", + "name": "tokenA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 976, + "src": "9437:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 846, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9437:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 849, + "mutability": "mutable", + "name": "tokenB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 976, + "src": "9461:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 848, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9461:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 851, + "mutability": "mutable", + "name": "amountADesired", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 976, + "src": "9485:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 850, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9485:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 853, + "mutability": "mutable", + "name": "amountBDesired", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 976, + "src": "9514:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 852, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9514:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 855, + "mutability": "mutable", + "name": "amountAMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 976, + "src": "9543:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 854, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9543:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 857, + "mutability": "mutable", + "name": "amountBMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 976, + "src": "9568:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 856, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9568:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9427:162:0" + }, + "returnParameters": { + "id": 863, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 860, + "mutability": "mutable", + "name": "amountA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 976, + "src": "9616:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 859, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9616:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 862, + "mutability": "mutable", + "name": "amountB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 976, + "src": "9630:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 861, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9630:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9615:28:0" + }, + "scope": 2822, + "src": "9405:1363:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 337 + ], + "body": { + "id": 1056, + "nodeType": "Block", + "src": "11096:400:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 1005, + "name": "amountA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 999, + "src": "11107:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1006, + "name": "amountB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1001, + "src": "11116:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1007, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "11106:18:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1009, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 978, + "src": "11141:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1010, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 980, + "src": "11149:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1011, + "name": "amountADesired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 982, + "src": "11157:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1012, + "name": "amountBDesired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 984, + "src": "11173:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1013, + "name": "amountAMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 986, + "src": "11189:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1014, + "name": "amountBMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 988, + "src": "11201:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1008, + "name": "_addLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "11127:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (address,address,uint256,uint256,uint256,uint256) returns (uint256,uint256)" + } + }, + "id": 1015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11127:85:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "11106:106:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1017, + "nodeType": "ExpressionStatement", + "src": "11106:106:0" + }, + { + "assignments": [ + 1019 + ], + "declarations": [ + { + "constant": false, + "id": 1019, + "mutability": "mutable", + "name": "pair", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1056, + "src": "11222:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1018, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11222:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1026, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1022, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "11262:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1023, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 978, + "src": "11271:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1024, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 980, + "src": "11279:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1020, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "11237:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 1021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pairFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 2987, + "src": "11237:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address,address) pure returns (address)" + } + }, + "id": 1025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11237:49:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11222:64:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1030, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 978, + "src": "11328:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1031, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11336:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11336:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1033, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1019, + "src": "11348:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1034, + "name": "amountA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 999, + "src": "11354:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1027, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3521, + "src": "11296:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$3521_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 1029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 3495, + "src": "11296:31:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256)" + } + }, + "id": 1035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11296:66:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1036, + "nodeType": "ExpressionStatement", + "src": "11296:66:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1040, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 980, + "src": "11404:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1041, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11412:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1042, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11412:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1043, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1019, + "src": "11424:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1044, + "name": "amountB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1001, + "src": "11430:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1037, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3521, + "src": "11372:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$3521_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 1039, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 3495, + "src": "11372:31:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256)" + } + }, + "id": 1045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11372:66:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1046, + "nodeType": "ExpressionStatement", + "src": "11372:66:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 1054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1047, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1003, + "src": "11448:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1052, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 990, + "src": "11486:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1049, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1019, + "src": "11475:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1048, + "name": "IUniswapV2Pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "11460:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$302_$", + "typeString": "type(contract IUniswapV2Pair)" + } + }, + "id": 1050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11460:20:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Pair_$302", + "typeString": "contract IUniswapV2Pair" + } + }, + "id": 1051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 266, + "src": "11460:25:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) external returns (uint256)" + } + }, + "id": 1053, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11460:29:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11448:41:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1055, + "nodeType": "ExpressionStatement", + "src": "11448:41:0" + } + ] + }, + "documentation": null, + "functionSelector": "e8e33700", + "id": 1057, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 996, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 992, + "src": "11033:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 997, + "modifierName": { + "argumentTypes": null, + "id": 995, + "name": "ensure", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 818, + "src": "11026:6:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "11026:16:0" + } + ], + "name": "addLiquidity", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 994, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "11017:8:0" + }, + "parameters": { + "id": 993, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 978, + "mutability": "mutable", + "name": "tokenA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1057, + "src": "10804:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 977, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10804:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 980, + "mutability": "mutable", + "name": "tokenB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1057, + "src": "10828:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 979, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10828:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 982, + "mutability": "mutable", + "name": "amountADesired", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1057, + "src": "10852:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 981, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "10852:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 984, + "mutability": "mutable", + "name": "amountBDesired", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1057, + "src": "10881:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 983, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "10881:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 986, + "mutability": "mutable", + "name": "amountAMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1057, + "src": "10910:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 985, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "10910:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 988, + "mutability": "mutable", + "name": "amountBMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1057, + "src": "10935:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 987, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "10935:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 990, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1057, + "src": "10960:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 989, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10960:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 992, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1057, + "src": "10980:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 991, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "10980:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10794:205:0" + }, + "returnParameters": { + "id": 1004, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 999, + "mutability": "mutable", + "name": "amountA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1057, + "src": "11052:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 998, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11052:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1001, + "mutability": "mutable", + "name": "amountB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1057, + "src": "11066:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1000, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11066:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1003, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1057, + "src": "11080:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1002, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11080:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11051:44:0" + }, + "scope": 2822, + "src": "10773:723:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "baseFunctions": [ + 358 + ], + "body": { + "id": 1158, + "nodeType": "Block", + "src": "11797:655:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 1082, + "name": "amountToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1076, + "src": "11808:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1083, + "name": "amountETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1078, + "src": "11821:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1084, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "11807:24:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1086, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1059, + "src": "11861:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1087, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "11880:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1088, + "name": "amountTokenDesired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1061, + "src": "11898:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1089, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11930:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1090, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11930:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1091, + "name": "amountTokenMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1063, + "src": "11953:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1092, + "name": "amountETHMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1065, + "src": "11981:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1085, + "name": "_addLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "11834:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (address,address,uint256,uint256,uint256,uint256) returns (uint256,uint256)" + } + }, + "id": 1093, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11834:169:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "11807:196:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1095, + "nodeType": "ExpressionStatement", + "src": "11807:196:0" + }, + { + "assignments": [ + 1097 + ], + "declarations": [ + { + "constant": false, + "id": 1097, + "mutability": "mutable", + "name": "pair", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1158, + "src": "12013:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1096, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12013:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1104, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1100, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "12053:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1101, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1059, + "src": "12062:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1102, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "12069:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1098, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "12028:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 1099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pairFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 2987, + "src": "12028:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address,address) pure returns (address)" + } + }, + "id": 1103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12028:46:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12013:61:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1108, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1059, + "src": "12116:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1109, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "12123:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12123:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1111, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1097, + "src": "12135:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1112, + "name": "amountToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1076, + "src": "12141:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1105, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3521, + "src": "12084:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$3521_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 1107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 3495, + "src": "12084:31:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256)" + } + }, + "id": 1113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12084:69:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1114, + "nodeType": "ExpressionStatement", + "src": "12084:69:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1116, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "12169:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1115, + "name": "IWETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 793, + "src": "12163:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IWETH_$793_$", + "typeString": "type(contract IWETH)" + } + }, + "id": 1117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12163:11:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWETH_$793", + "typeString": "contract IWETH" + } + }, + "id": 1118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "deposit", + "nodeType": "MemberAccess", + "referencedDeclaration": 778, + "src": "12163:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$__$returns$__$", + "typeString": "function () payable external" + } + }, + "id": 1120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "argumentTypes": null, + "id": 1119, + "name": "amountETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1078, + "src": "12190:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "12163:37:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$__$returns$__$value", + "typeString": "function () payable external" + } + }, + "id": 1121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12163:39:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1122, + "nodeType": "ExpressionStatement", + "src": "12163:39:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1128, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1097, + "src": "12240:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1129, + "name": "amountETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1078, + "src": "12246:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1125, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "12225:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1124, + "name": "IWETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 793, + "src": "12219:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IWETH_$793_$", + "typeString": "type(contract IWETH)" + } + }, + "id": 1126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12219:11:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWETH_$793", + "typeString": "contract IWETH" + } + }, + "id": 1127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 787, + "src": "12219:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12219:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1123, + "name": "assert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -3, + "src": "12212:6:0", + "typeDescriptions": { + "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12212:45:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1132, + "nodeType": "ExpressionStatement", + "src": "12212:45:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 1140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1133, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1080, + "src": "12267:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1138, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1067, + "src": "12305:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1135, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1097, + "src": "12294:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1134, + "name": "IUniswapV2Pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "12279:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$302_$", + "typeString": "type(contract IUniswapV2Pair)" + } + }, + "id": 1136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12279:20:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Pair_$302", + "typeString": "contract IUniswapV2Pair" + } + }, + "id": 1137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 266, + "src": "12279:25:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) external returns (uint256)" + } + }, + "id": 1139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12279:29:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12267:41:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1141, + "nodeType": "ExpressionStatement", + "src": "12267:41:0" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1142, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "12357:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12357:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 1144, + "name": "amountETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1078, + "src": "12369:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12357:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1157, + "nodeType": "IfStatement", + "src": "12353:92:0", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1149, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "12411:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12411:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1151, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "12423:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12423:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 1153, + "name": "amountETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1078, + "src": "12435:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12423:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1146, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3521, + "src": "12380:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$3521_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 1148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferETH", + "nodeType": "MemberAccess", + "referencedDeclaration": 3520, + "src": "12380:30:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12380:65:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1156, + "nodeType": "ExpressionStatement", + "src": "12380:65:0" + } + } + ] + }, + "documentation": null, + "functionSelector": "f305d719", + "id": 1159, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 1073, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1069, + "src": "11728:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1074, + "modifierName": { + "argumentTypes": null, + "id": 1072, + "name": "ensure", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 818, + "src": "11721:6:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "11721:16:0" + } + ], + "name": "addLiquidityETH", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1071, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "11704:8:0" + }, + "parameters": { + "id": 1070, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1059, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1159, + "src": "11535:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1058, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11535:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1061, + "mutability": "mutable", + "name": "amountTokenDesired", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1159, + "src": "11558:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1060, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11558:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1063, + "mutability": "mutable", + "name": "amountTokenMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1159, + "src": "11591:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1062, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11591:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1065, + "mutability": "mutable", + "name": "amountETHMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1159, + "src": "11620:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1064, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11620:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1067, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1159, + "src": "11647:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1066, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11647:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1069, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1159, + "src": "11667:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1068, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11667:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11525:161:0" + }, + "returnParameters": { + "id": 1081, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1076, + "mutability": "mutable", + "name": "amountToken", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1159, + "src": "11747:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1075, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11747:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1078, + "mutability": "mutable", + "name": "amountETH", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1159, + "src": "11765:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1077, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11765:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1080, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1159, + "src": "11781:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1079, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11781:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11746:50:0" + }, + "scope": 2822, + "src": "11501:951:0", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + }, + { + "baseFunctions": [ + 379 + ], + "body": { + "id": 1251, + "nodeType": "Block", + "src": "12766:575:0", + "statements": [ + { + "assignments": [ + 1185 + ], + "declarations": [ + { + "constant": false, + "id": 1185, + "mutability": "mutable", + "name": "pair", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1251, + "src": "12776:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1184, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12776:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1192, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1188, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "12816:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1189, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1161, + "src": "12825:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1190, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1163, + "src": "12833:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1186, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "12791:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 1187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pairFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 2987, + "src": "12791:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address,address) pure returns (address)" + } + }, + "id": 1191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12791:49:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12776:64:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1197, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "12884:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12884:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1199, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1185, + "src": "12896:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1200, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1165, + "src": "12902:9:0", + "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" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1194, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1185, + "src": "12865:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1193, + "name": "IUniswapV2Pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "12850:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$302_$", + "typeString": "type(contract IUniswapV2Pair)" + } + }, + "id": 1195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12850:20:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Pair_$302", + "typeString": "contract IUniswapV2Pair" + } + }, + "id": 1196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 143, + "src": "12850:33:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 1201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12850:62:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1202, + "nodeType": "ExpressionStatement", + "src": "12850:62:0" + }, + { + "assignments": [ + 1204, + 1206 + ], + "declarations": [ + { + "constant": false, + "id": 1204, + "mutability": "mutable", + "name": "amount0", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1251, + "src": "12949:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1203, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12949:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1206, + "mutability": "mutable", + "name": "amount1", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1251, + "src": "12963:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1205, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12963:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1213, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1211, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1171, + "src": "13005:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1208, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1185, + "src": "12994:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1207, + "name": "IUniswapV2Pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "12979:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$302_$", + "typeString": "type(contract IUniswapV2Pair)" + } + }, + "id": 1209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12979:20:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Pair_$302", + "typeString": "contract IUniswapV2Pair" + } + }, + "id": 1210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 275, + "src": "12979:25:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (address) external returns (uint256,uint256)" + } + }, + "id": 1212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12979:29:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12948:60:0" + }, + { + "assignments": [ + 1215, + null + ], + "declarations": [ + { + "constant": false, + "id": 1215, + "mutability": "mutable", + "name": "token0", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1251, + "src": "13019:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1214, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13019:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 1221, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1218, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1161, + "src": "13066:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1219, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1163, + "src": "13074:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1216, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "13038:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 1217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sortTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2942, + "src": "13038:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$", + "typeString": "function (address,address) pure returns (address,address)" + } + }, + "id": 1220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13038:43:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13018:63:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 1235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 1222, + "name": "amountA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1180, + "src": "13092:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1223, + "name": "amountB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1182, + "src": "13101:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1224, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "13091:18:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1225, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1161, + "src": "13112:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1226, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1215, + "src": "13122:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13112:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 1231, + "name": "amount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1206, + "src": "13153:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1232, + "name": "amount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1204, + "src": "13162:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1233, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13152:18:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "id": 1234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "13112:58:0", + "trueExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 1228, + "name": "amount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1204, + "src": "13132:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1229, + "name": "amount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1206, + "src": "13141:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1230, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13131:18:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "13091:79:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1236, + "nodeType": "ExpressionStatement", + "src": "13091:79:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1238, + "name": "amountA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1180, + "src": "13188:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 1239, + "name": "amountAMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1167, + "src": "13199:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13188:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e69737761705632526f757465723a20494e53554646494349454e545f415f414d4f554e54", + "id": 1241, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13211:40:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d1d32edc232bc1da2150d590567c5d6321ade8a80edcd2485e6068d018c7fd67", + "typeString": "literal_string \"UniswapV2Router: INSUFFICIENT_A_AMOUNT\"" + }, + "value": "UniswapV2Router: INSUFFICIENT_A_AMOUNT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d1d32edc232bc1da2150d590567c5d6321ade8a80edcd2485e6068d018c7fd67", + "typeString": "literal_string \"UniswapV2Router: INSUFFICIENT_A_AMOUNT\"" + } + ], + "id": 1237, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "13180:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13180:72:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1243, + "nodeType": "ExpressionStatement", + "src": "13180:72:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1245, + "name": "amountB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1182, + "src": "13270:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 1246, + "name": "amountBMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1169, + "src": "13281:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13270:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e69737761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54", + "id": 1248, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13293:40:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_508673fa99dd55571c7741114b40754785309d1a2171022cd7c5caaae38fc7b6", + "typeString": "literal_string \"UniswapV2Router: INSUFFICIENT_B_AMOUNT\"" + }, + "value": "UniswapV2Router: INSUFFICIENT_B_AMOUNT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_508673fa99dd55571c7741114b40754785309d1a2171022cd7c5caaae38fc7b6", + "typeString": "literal_string \"UniswapV2Router: INSUFFICIENT_B_AMOUNT\"" + } + ], + "id": 1244, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "13262:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13262:72:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1250, + "nodeType": "ExpressionStatement", + "src": "13262:72:0" + } + ] + }, + "documentation": null, + "functionSelector": "baa2abde", + "id": 1252, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 1177, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1173, + "src": "12719:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1178, + "modifierName": { + "argumentTypes": null, + "id": 1176, + "name": "ensure", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 818, + "src": "12712:6:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "12712:16:0" + } + ], + "name": "removeLiquidity", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1175, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "12703:8:0" + }, + "parameters": { + "id": 1174, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1161, + "mutability": "mutable", + "name": "tokenA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1252, + "src": "12526:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1160, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12526:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1163, + "mutability": "mutable", + "name": "tokenB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1252, + "src": "12550:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1162, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12550:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1165, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1252, + "src": "12574:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1164, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12574:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1167, + "mutability": "mutable", + "name": "amountAMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1252, + "src": "12598:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1166, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12598:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1169, + "mutability": "mutable", + "name": "amountBMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1252, + "src": "12623:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1168, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12623:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1171, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1252, + "src": "12648:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1170, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12648:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1173, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1252, + "src": "12668:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1172, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12668:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12516:171:0" + }, + "returnParameters": { + "id": 1183, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1180, + "mutability": "mutable", + "name": "amountA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1252, + "src": "12738:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1179, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12738:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1182, + "mutability": "mutable", + "name": "amountB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1252, + "src": "12752:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1181, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12752:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12737:28:0" + }, + "scope": 2822, + "src": "12492:849:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 398 + ], + "body": { + "id": 1314, + "nodeType": "Block", + "src": "13610:389:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 1275, + "name": "amountToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1271, + "src": "13621:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1276, + "name": "amountETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1273, + "src": "13634:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1277, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "13620:24:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1279, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1254, + "src": "13676:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1280, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "13695:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1281, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1256, + "src": "13713:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1282, + "name": "amountTokenMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1258, + "src": "13736:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1283, + "name": "amountETHMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1260, + "src": "13764:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1286, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "13798:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Router02_$2822", + "typeString": "contract UniswapV2Router02" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Router02_$2822", + "typeString": "contract UniswapV2Router02" + } + ], + "id": 1285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13790:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1284, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13790:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13790:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1288, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1264, + "src": "13817:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1278, + "name": "removeLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1252, + "src": "13647:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (address,address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)" + } + }, + "id": 1289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13647:188:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "13620:215:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1291, + "nodeType": "ExpressionStatement", + "src": "13620:215:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1295, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1254, + "src": "13873:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1296, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1262, + "src": "13880:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1297, + "name": "amountToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1271, + "src": "13884:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1292, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3521, + "src": "13845:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$3521_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 1294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 3449, + "src": "13845:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13845:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1299, + "nodeType": "ExpressionStatement", + "src": "13845:51:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1304, + "name": "amountETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1273, + "src": "13927:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1301, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "13912:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1300, + "name": "IWETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 793, + "src": "13906:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IWETH_$793_$", + "typeString": "type(contract IWETH)" + } + }, + "id": 1302, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13906:11:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWETH_$793", + "typeString": "contract IWETH" + } + }, + "id": 1303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 792, + "src": "13906:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 1305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13906:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1306, + "nodeType": "ExpressionStatement", + "src": "13906:31:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1310, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1262, + "src": "13978:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1311, + "name": "amountETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1273, + "src": "13982:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1307, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3521, + "src": "13947:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$3521_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 1309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferETH", + "nodeType": "MemberAccess", + "referencedDeclaration": 3520, + "src": "13947:30:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13947:45:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1313, + "nodeType": "ExpressionStatement", + "src": "13947:45:0" + } + ] + }, + "documentation": null, + "functionSelector": "02751cec", + "id": 1315, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 1268, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1264, + "src": "13557:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1269, + "modifierName": { + "argumentTypes": null, + "id": 1267, + "name": "ensure", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 818, + "src": "13550:6:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "13550:16:0" + } + ], + "name": "removeLiquidityETH", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1266, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "13541:8:0" + }, + "parameters": { + "id": 1265, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1254, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1315, + "src": "13383:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1253, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13383:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1256, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1315, + "src": "13406:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1255, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "13406:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1258, + "mutability": "mutable", + "name": "amountTokenMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1315, + "src": "13430:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1257, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "13430:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1260, + "mutability": "mutable", + "name": "amountETHMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1315, + "src": "13459:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1259, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "13459:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1262, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1315, + "src": "13486:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1261, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13486:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1264, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1315, + "src": "13506:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1263, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "13506:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13373:152:0" + }, + "returnParameters": { + "id": 1274, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1271, + "mutability": "mutable", + "name": "amountToken", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1315, + "src": "13576:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1270, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "13576:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1273, + "mutability": "mutable", + "name": "amountETH", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1315, + "src": "13594:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1272, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "13594:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13575:34:0" + }, + "scope": 2822, + "src": "13346:653:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 427 + ], + "body": { + "id": 1396, + "nodeType": "Block", + "src": "14329:338:0", + "statements": [ + { + "assignments": [ + 1346 + ], + "declarations": [ + { + "constant": false, + "id": 1346, + "mutability": "mutable", + "name": "pair", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1396, + "src": "14339:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1345, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14339:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1353, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1349, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "14379:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1350, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1317, + "src": "14388:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1351, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1319, + "src": "14396:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1347, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "14354:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 1348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pairFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 2987, + "src": "14354:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address,address) pure returns (address)" + } + }, + "id": 1352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14354:49:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14339:64:0" + }, + { + "assignments": [ + 1355 + ], + "declarations": [ + { + "constant": false, + "id": 1355, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1396, + "src": "14413:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1354, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14413:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1364, + "initialValue": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "id": 1356, + "name": "approveMax", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1331, + "src": "14426:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "id": 1362, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1321, + "src": "14450:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "14426:33:0", + "trueExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1360, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "14444:2:0", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1359, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14445:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + ], + "id": 1358, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14439:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1357, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14439:4:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1361, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14439:8:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14413:46:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1369, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "14497:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1370, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14497:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1373, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "14517:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Router02_$2822", + "typeString": "contract UniswapV2Router02" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Router02_$2822", + "typeString": "contract UniswapV2Router02" + } + ], + "id": 1372, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14509:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1371, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14509:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14509:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1375, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1355, + "src": "14524:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1376, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1329, + "src": "14531:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1377, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1333, + "src": "14541:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1378, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1335, + "src": "14544:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1379, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1337, + "src": "14547:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "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": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1366, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1346, + "src": "14484:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1365, + "name": "IUniswapV2Pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "14469:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$302_$", + "typeString": "type(contract IUniswapV2Pair)" + } + }, + "id": 1367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14469:20:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Pair_$302", + "typeString": "contract IUniswapV2Pair" + } + }, + "id": 1368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "permit", + "nodeType": "MemberAccess", + "referencedDeclaration": 177, + "src": "14469:27:0", + "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": 1380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14469:80:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1381, + "nodeType": "ExpressionStatement", + "src": "14469:80:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 1394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 1382, + "name": "amountA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "14560:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1383, + "name": "amountB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1343, + "src": "14569:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1384, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "14559:18:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1386, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1317, + "src": "14596:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1387, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1319, + "src": "14604:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1388, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1321, + "src": "14612:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1389, + "name": "amountAMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1323, + "src": "14623:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1390, + "name": "amountBMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "14635:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1391, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1327, + "src": "14647:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1392, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1329, + "src": "14651:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1385, + "name": "removeLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1252, + "src": "14580:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (address,address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)" + } + }, + "id": 1393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14580:80:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "14559:101:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1395, + "nodeType": "ExpressionStatement", + "src": "14559:101:0" + } + ] + }, + "documentation": null, + "functionSelector": "2195995c", + "id": 1397, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeLiquidityWithPermit", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1339, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "14283:8:0" + }, + "parameters": { + "id": 1338, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1317, + "mutability": "mutable", + "name": "tokenA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1397, + "src": "14048:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1316, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14048:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1319, + "mutability": "mutable", + "name": "tokenB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1397, + "src": "14072:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1318, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14072:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1321, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1397, + "src": "14096:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1320, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14096:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1323, + "mutability": "mutable", + "name": "amountAMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1397, + "src": "14120:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1322, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14120:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1325, + "mutability": "mutable", + "name": "amountBMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1397, + "src": "14145:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1324, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14145:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1327, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1397, + "src": "14170:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1326, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14170:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1329, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1397, + "src": "14190:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1328, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14190:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1331, + "mutability": "mutable", + "name": "approveMax", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1397, + "src": "14213:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1330, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14213:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1333, + "mutability": "mutable", + "name": "v", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1397, + "src": "14230:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1332, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "14230:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1335, + "mutability": "mutable", + "name": "r", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1397, + "src": "14239:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1334, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14239:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1337, + "mutability": "mutable", + "name": "s", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1397, + "src": "14250:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1336, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14250:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14038:227:0" + }, + "returnParameters": { + "id": 1344, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1341, + "mutability": "mutable", + "name": "amountA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1397, + "src": "14301:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1340, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14301:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1343, + "mutability": "mutable", + "name": "amountB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1397, + "src": "14315:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1342, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14315:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14300:28:0" + }, + "scope": 2822, + "src": "14004:663:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "baseFunctions": [ + 454 + ], + "body": { + "id": 1475, + "nodeType": "Block", + "src": "14987:341:0", + "statements": [ + { + "assignments": [ + 1426 + ], + "declarations": [ + { + "constant": false, + "id": 1426, + "mutability": "mutable", + "name": "pair", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1475, + "src": "14997:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1425, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14997:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1433, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1429, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "15037:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1430, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1399, + "src": "15046:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1431, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "15053:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1427, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "15012:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 1428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pairFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 2987, + "src": "15012:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address,address) pure returns (address)" + } + }, + "id": 1432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15012:46:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14997:61:0" + }, + { + "assignments": [ + 1435 + ], + "declarations": [ + { + "constant": false, + "id": 1435, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1475, + "src": "15068:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1434, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "15068:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1444, + "initialValue": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "id": 1436, + "name": "approveMax", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1411, + "src": "15081:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "id": 1442, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1401, + "src": "15105:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "15081:33:0", + "trueExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1440, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "15099:2:0", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1439, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15100:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + ], + "id": 1438, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15094:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1437, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "15094:4:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1441, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15094:8:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15068:46:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1449, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "15152:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15152:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1453, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "15172:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Router02_$2822", + "typeString": "contract UniswapV2Router02" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Router02_$2822", + "typeString": "contract UniswapV2Router02" + } + ], + "id": 1452, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15164:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1451, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15164:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15164:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1455, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1435, + "src": "15179:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1456, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1409, + "src": "15186:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1457, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1413, + "src": "15196:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1458, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1415, + "src": "15199:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1459, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1417, + "src": "15202:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "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": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1446, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1426, + "src": "15139:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1445, + "name": "IUniswapV2Pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "15124:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$302_$", + "typeString": "type(contract IUniswapV2Pair)" + } + }, + "id": 1447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15124:20:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Pair_$302", + "typeString": "contract IUniswapV2Pair" + } + }, + "id": 1448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "permit", + "nodeType": "MemberAccess", + "referencedDeclaration": 177, + "src": "15124:27:0", + "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": 1460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15124:80:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1461, + "nodeType": "ExpressionStatement", + "src": "15124:80:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 1473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 1462, + "name": "amountToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1421, + "src": "15215:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1463, + "name": "amountETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1423, + "src": "15228:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1464, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "15214:24:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1466, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1399, + "src": "15260:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1467, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1401, + "src": "15267:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1468, + "name": "amountTokenMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1403, + "src": "15278:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1469, + "name": "amountETHMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1405, + "src": "15294:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1470, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1407, + "src": "15308:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1471, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1409, + "src": "15312:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1465, + "name": "removeLiquidityETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1315, + "src": "15241:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)" + } + }, + "id": 1472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15241:80:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "15214:107:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1474, + "nodeType": "ExpressionStatement", + "src": "15214:107:0" + } + ] + }, + "documentation": null, + "functionSelector": "ded9382a", + "id": 1476, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeLiquidityETHWithPermit", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1419, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "14935:8:0" + }, + "parameters": { + "id": 1418, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1399, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1476, + "src": "14719:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1398, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14719:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1401, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1476, + "src": "14742:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1400, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14742:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1403, + "mutability": "mutable", + "name": "amountTokenMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1476, + "src": "14766:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1402, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14766:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1405, + "mutability": "mutable", + "name": "amountETHMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1476, + "src": "14795:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1404, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14795:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1407, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1476, + "src": "14822:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1406, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14822:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1409, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1476, + "src": "14842:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1408, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14842:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1411, + "mutability": "mutable", + "name": "approveMax", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1476, + "src": "14865:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1410, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14865:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1413, + "mutability": "mutable", + "name": "v", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1476, + "src": "14882:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1412, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "14882:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1415, + "mutability": "mutable", + "name": "r", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1476, + "src": "14891:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1414, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14891:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1417, + "mutability": "mutable", + "name": "s", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1476, + "src": "14902:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1416, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14902:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14709:208:0" + }, + "returnParameters": { + "id": 1424, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1421, + "mutability": "mutable", + "name": "amountToken", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1476, + "src": "14953:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1420, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14953:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1423, + "mutability": "mutable", + "name": "amountETH", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1476, + "src": "14971:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1422, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14971:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14952:34:0" + }, + "scope": 2822, + "src": "14672:656:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "baseFunctions": [ + 627 + ], + "body": { + "id": 1543, + "nodeType": "Block", + "src": "15679:405:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "components": [ + null, + { + "argumentTypes": null, + "id": 1497, + "name": "amountETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1495, + "src": "15692:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1498, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "15689:13:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$_t_uint256_$", + "typeString": "tuple(,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1500, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1478, + "src": "15734:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1501, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "15753:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1502, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1480, + "src": "15771:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1503, + "name": "amountTokenMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1482, + "src": "15794:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1504, + "name": "amountETHMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1484, + "src": "15822:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1507, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "15856:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Router02_$2822", + "typeString": "contract UniswapV2Router02" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Router02_$2822", + "typeString": "contract UniswapV2Router02" + } + ], + "id": 1506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15848:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1505, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15848:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15848:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1509, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1488, + "src": "15875:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1499, + "name": "removeLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1252, + "src": "15705:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (address,address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)" + } + }, + "id": 1510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15705:188:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "15689:204:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1512, + "nodeType": "ExpressionStatement", + "src": "15689:204:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1516, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1478, + "src": "15931:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1517, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1486, + "src": "15938:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1524, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "15974:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Router02_$2822", + "typeString": "contract UniswapV2Router02" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Router02_$2822", + "typeString": "contract UniswapV2Router02" + } + ], + "id": 1523, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15966:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1522, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15966:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15966:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1519, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1478, + "src": "15949:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1518, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 775, + "src": "15942:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$775_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15942:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$775", + "typeString": "contract IERC20" + } + }, + "id": 1521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 736, + "src": "15942:23:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 1526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15942:38:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1513, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3521, + "src": "15903:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$3521_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 1515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 3449, + "src": "15903:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15903:78:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1528, + "nodeType": "ExpressionStatement", + "src": "15903:78:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1533, + "name": "amountETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1495, + "src": "16012:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1530, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "15997:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1529, + "name": "IWETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 793, + "src": "15991:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IWETH_$793_$", + "typeString": "type(contract IWETH)" + } + }, + "id": 1531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15991:11:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWETH_$793", + "typeString": "contract IWETH" + } + }, + "id": 1532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 792, + "src": "15991:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 1534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15991:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1535, + "nodeType": "ExpressionStatement", + "src": "15991:31:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1539, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1486, + "src": "16063:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1540, + "name": "amountETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1495, + "src": "16067:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1536, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3521, + "src": "16032:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$3521_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 1538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferETH", + "nodeType": "MemberAccess", + "referencedDeclaration": 3520, + "src": "16032:30:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16032:45:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1542, + "nodeType": "ExpressionStatement", + "src": "16032:45:0" + } + ] + }, + "documentation": null, + "functionSelector": "af2979eb", + "id": 1544, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 1492, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1488, + "src": "15644:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1493, + "modifierName": { + "argumentTypes": null, + "id": 1491, + "name": "ensure", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 818, + "src": "15637:6:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "15637:16:0" + } + ], + "name": "removeLiquidityETHSupportingFeeOnTransferTokens", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1490, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "15628:8:0" + }, + "parameters": { + "id": 1489, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1478, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1544, + "src": "15470:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1477, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15470:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1480, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1544, + "src": "15493:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1479, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "15493:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1482, + "mutability": "mutable", + "name": "amountTokenMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1544, + "src": "15517:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1481, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "15517:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1484, + "mutability": "mutable", + "name": "amountETHMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1544, + "src": "15546:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1483, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "15546:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1486, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1544, + "src": "15573:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15573:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1488, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1544, + "src": "15593:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1487, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "15593:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15460:152:0" + }, + "returnParameters": { + "id": 1496, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1495, + "mutability": "mutable", + "name": "amountETH", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1544, + "src": "15663:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1494, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "15663:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15662:16:0" + }, + "scope": 2822, + "src": "15404:680:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 652 + ], + "body": { + "id": 1618, + "nodeType": "Block", + "src": "16415:377:0", + "statements": [ + { + "assignments": [ + 1571 + ], + "declarations": [ + { + "constant": false, + "id": 1571, + "mutability": "mutable", + "name": "pair", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1618, + "src": "16425:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1570, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16425:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1578, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1574, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "16465:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1575, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1546, + "src": "16474:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1576, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "16481:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1572, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "16440:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 1573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pairFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 2987, + "src": "16440:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address,address) pure returns (address)" + } + }, + "id": 1577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16440:46:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16425:61:0" + }, + { + "assignments": [ + 1580 + ], + "declarations": [ + { + "constant": false, + "id": 1580, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1618, + "src": "16496:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1579, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "16496:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1589, + "initialValue": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "id": 1581, + "name": "approveMax", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1558, + "src": "16509:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "id": 1587, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1548, + "src": "16533:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "16509:33:0", + "trueExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1585, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "16527:2:0", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1584, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16528:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + ], + "id": 1583, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16522:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1582, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "16522:4:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1586, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16522:8:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16496:46:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1594, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "16580:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "16580:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1598, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "16600:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Router02_$2822", + "typeString": "contract UniswapV2Router02" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Router02_$2822", + "typeString": "contract UniswapV2Router02" + } + ], + "id": 1597, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16592:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1596, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16592:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16592:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1600, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1580, + "src": "16607:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1601, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1556, + "src": "16614:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1602, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1560, + "src": "16624:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1603, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1562, + "src": "16627:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1604, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1564, + "src": "16630:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "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": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1591, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1571, + "src": "16567:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1590, + "name": "IUniswapV2Pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "16552:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$302_$", + "typeString": "type(contract IUniswapV2Pair)" + } + }, + "id": 1592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16552:20:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Pair_$302", + "typeString": "contract IUniswapV2Pair" + } + }, + "id": 1593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "permit", + "nodeType": "MemberAccess", + "referencedDeclaration": 177, + "src": "16552:27:0", + "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": 1605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16552:80:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1606, + "nodeType": "ExpressionStatement", + "src": "16552:80:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 1616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1607, + "name": "amountETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1568, + "src": "16642:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1609, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1546, + "src": "16715:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1610, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1548, + "src": "16722:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1611, + "name": "amountTokenMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1550, + "src": "16733:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1612, + "name": "amountETHMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1552, + "src": "16749:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1613, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1554, + "src": "16763:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1614, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1556, + "src": "16767:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1608, + "name": "removeLiquidityETHSupportingFeeOnTransferTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1544, + "src": "16654:47:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (address,uint256,uint256,uint256,address,uint256) returns (uint256)" + } + }, + "id": 1615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16654:131:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16642:143:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1617, + "nodeType": "ExpressionStatement", + "src": "16642:143:0" + } + ] + }, + "documentation": null, + "functionSelector": "5b0d5984", + "id": 1619, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1566, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "16381:8:0" + }, + "parameters": { + "id": 1565, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1546, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1619, + "src": "16165:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1545, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16165:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1548, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1619, + "src": "16188:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1547, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "16188:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1550, + "mutability": "mutable", + "name": "amountTokenMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1619, + "src": "16212:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1549, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "16212:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1552, + "mutability": "mutable", + "name": "amountETHMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1619, + "src": "16241:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1551, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "16241:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1554, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1619, + "src": "16268:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1553, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16268:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1556, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1619, + "src": "16288:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1555, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "16288:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1558, + "mutability": "mutable", + "name": "approveMax", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1619, + "src": "16311:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1557, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16311:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1560, + "mutability": "mutable", + "name": "v", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1619, + "src": "16328:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1559, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "16328:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1562, + "mutability": "mutable", + "name": "r", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1619, + "src": "16337:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1561, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16337:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1564, + "mutability": "mutable", + "name": "s", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1619, + "src": "16348:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1563, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16348:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16155:208:0" + }, + "returnParameters": { + "id": 1569, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1568, + "mutability": "mutable", + "name": "amountETH", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1619, + "src": "16399:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1567, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "16399:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16398:16:0" + }, + "scope": 2822, + "src": "16089:703:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 1734, + "nodeType": "Block", + "src": "16990:633:0", + "statements": [ + { + "body": { + "id": 1732, + "nodeType": "Block", + "src": "17039:578:0", + "statements": [ + { + "assignments": [ + 1643, + 1645 + ], + "declarations": [ + { + "constant": false, + "id": 1643, + "mutability": "mutable", + "name": "input", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1732, + "src": "17054:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1642, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17054:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1645, + "mutability": "mutable", + "name": "output", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1732, + "src": "17069:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1644, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17069:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1655, + "initialValue": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1646, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1625, + "src": "17088:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1648, + "indexExpression": { + "argumentTypes": null, + "id": 1647, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1631, + "src": "17093:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17088:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1649, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1625, + "src": "17097:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1653, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1650, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1631, + "src": "17102:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1651, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17106:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "17102:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17097:11:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 1654, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "17087:22:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17053:56:0" + }, + { + "assignments": [ + 1657, + null + ], + "declarations": [ + { + "constant": false, + "id": 1657, + "mutability": "mutable", + "name": "token0", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1732, + "src": "17124:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1656, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17124:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 1663, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1660, + "name": "input", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1643, + "src": "17171:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1661, + "name": "output", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1645, + "src": "17178:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1658, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "17143:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 1659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sortTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2942, + "src": "17143:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$", + "typeString": "function (address,address) pure returns (address,address)" + } + }, + "id": 1662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17143:42:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17123:62:0" + }, + { + "assignments": [ + 1665 + ], + "declarations": [ + { + "constant": false, + "id": 1665, + "mutability": "mutable", + "name": "amountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1732, + "src": "17199:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1664, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "17199:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1671, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1666, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1622, + "src": "17216:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1670, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1667, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1631, + "src": "17224:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1668, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17228:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "17224:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17216:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17199:31:0" + }, + { + "assignments": [ + 1673, + 1675 + ], + "declarations": [ + { + "constant": false, + "id": 1673, + "mutability": "mutable", + "name": "amount0Out", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1732, + "src": "17245:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1672, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "17245:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1675, + "mutability": "mutable", + "name": "amount1Out", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1732, + "src": "17262:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1674, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "17262:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1692, + "initialValue": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1676, + "name": "input", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1643, + "src": "17281:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1677, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1657, + "src": "17290:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "17281:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 1685, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1665, + "src": "17323:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17339:1:0", + "subdenomination": null, + "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": 1687, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17334:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1686, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "17334:4:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1689, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17334:7:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1690, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "17322:20:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "id": 1691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "17281:61:0", + "trueExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1681, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17305:1:0", + "subdenomination": null, + "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": 1680, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17300:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1679, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "17300:4:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1682, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17300:7:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1683, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1665, + "src": "17309:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1684, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "17299:20:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17244:98:0" + }, + { + "assignments": [ + 1694 + ], + "declarations": [ + { + "constant": false, + "id": 1694, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1732, + "src": "17356:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1693, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17356:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1713, + "initialValue": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1695, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1631, + "src": "17369:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1696, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1625, + "src": "17373:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17373:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 1698, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17387:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "17373:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17369:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "id": 1711, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1627, + "src": "17448:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "17369:82:0", + "trueExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1703, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "17416:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1704, + "name": "output", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1645, + "src": "17425:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1705, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1625, + "src": "17433:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1709, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1706, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1631, + "src": "17438:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 1707, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17442:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "17438:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17433:11:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1701, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "17391:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 1702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pairFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 2987, + "src": "17391:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address,address) pure returns (address)" + } + }, + "id": 1710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17391:54:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17356:95:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1723, + "name": "amount0Out", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1673, + "src": "17552:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1724, + "name": "amount1Out", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1675, + "src": "17564:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1725, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1694, + "src": "17576:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1728, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17590:1:0", + "subdenomination": null, + "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": 1727, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "17580:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 1726, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "17584:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 1729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17580:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1717, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "17505:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1718, + "name": "input", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1643, + "src": "17514:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1719, + "name": "output", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1645, + "src": "17521:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1715, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "17480:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 1716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pairFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 2987, + "src": "17480:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address,address) pure returns (address)" + } + }, + "id": 1720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17480:48:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1714, + "name": "IUniswapV2Pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "17465:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$302_$", + "typeString": "type(contract IUniswapV2Pair)" + } + }, + "id": 1721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17465:64:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Pair_$302", + "typeString": "contract IUniswapV2Pair" + } + }, + "id": 1722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "swap", + "nodeType": "MemberAccess", + "referencedDeclaration": 286, + "src": "17465:69:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint256,uint256,address,bytes memory) external" + } + }, + "id": 1730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17465:141:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1731, + "nodeType": "ExpressionStatement", + "src": "17465:141:0" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1633, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1631, + "src": "17013:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1634, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1625, + "src": "17017:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17017:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1636, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17031:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "17017:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17013:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1733, + "initializationExpression": { + "assignments": [ + 1631 + ], + "declarations": [ + { + "constant": false, + "id": 1631, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1733, + "src": "17005:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1630, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "17005:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1632, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "17005:6:0" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "17034:3:0", + "subExpression": { + "argumentTypes": null, + "id": 1639, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1631, + "src": "17034:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1641, + "nodeType": "ExpressionStatement", + "src": "17034:3:0" + }, + "nodeType": "ForStatement", + "src": "17000:617:0" + } + ] + }, + "documentation": null, + "id": 1735, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_swap", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1628, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1622, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1735, + "src": "16914:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1620, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "16914:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1621, + "length": null, + "nodeType": "ArrayTypeName", + "src": "16914:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1625, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1735, + "src": "16937:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1623, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16937:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1624, + "length": null, + "nodeType": "ArrayTypeName", + "src": "16937:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1627, + "mutability": "mutable", + "name": "_to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1735, + "src": "16960:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1626, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16960:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16913:59:0" + }, + "returnParameters": { + "id": 1629, + "nodeType": "ParameterList", + "parameters": [], + "src": "16990:0:0" + }, + "scope": 2822, + "src": "16899:724:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 471 + ], + "body": { + "id": 1806, + "nodeType": "Block", + "src": "17869:374:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1756, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1754, + "src": "17879:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1759, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "17920:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1760, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1737, + "src": "17929:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1761, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1742, + "src": "17939:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + ], + "expression": { + "argumentTypes": null, + "id": 1757, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "17889:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 1758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAmountsOut", + "nodeType": "MemberAccess", + "referencedDeclaration": 3277, + "src": "17889:30:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)" + } + }, + "id": 1762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17889:55:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "17879:65:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1764, + "nodeType": "ExpressionStatement", + "src": "17879:65:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1773, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1766, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1754, + "src": "17962:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1771, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1767, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1754, + "src": "17970:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17970:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1769, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17987:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "17970:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17962:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 1772, + "name": "amountOutMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1739, + "src": "17993:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17962:43:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54", + "id": 1774, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18007:45:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d4ea67bea551891ab36be726b8e631181246034dffcfd5c0bbfad1e9d1729432", + "typeString": "literal_string \"UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT\"" + }, + "value": "UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d4ea67bea551891ab36be726b8e631181246034dffcfd5c0bbfad1e9d1729432", + "typeString": "literal_string \"UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT\"" + } + ], + "id": 1765, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "17954:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17954:99:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1776, + "nodeType": "ExpressionStatement", + "src": "17954:99:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1780, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1742, + "src": "18108:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 1782, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1781, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18113:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18108:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1783, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "18117:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18117:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1787, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "18154:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1788, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1742, + "src": "18163:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 1790, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1789, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18168:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18163:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1791, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1742, + "src": "18172:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 1793, + "indexExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1792, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18177:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18172:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1785, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "18129:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 1786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pairFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 2987, + "src": "18129:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address,address) pure returns (address)" + } + }, + "id": 1794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18129:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1795, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1754, + "src": "18182:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1797, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1796, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18190:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18182:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1777, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3521, + "src": "18063:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$3521_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 1779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 3495, + "src": "18063:31:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256)" + } + }, + "id": 1798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18063:139:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1799, + "nodeType": "ExpressionStatement", + "src": "18063:139:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1801, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1754, + "src": "18218:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 1802, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1742, + "src": "18227:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + { + "argumentTypes": null, + "id": 1803, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1744, + "src": "18233:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1800, + "name": "_swap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1735, + "src": "18212:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$", + "typeString": "function (uint256[] memory,address[] memory,address)" + } + }, + "id": 1804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18212:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1805, + "nodeType": "ExpressionStatement", + "src": "18212:24:0" + } + ] + }, + "documentation": null, + "functionSelector": "38ed1739", + "id": 1807, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 1750, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1746, + "src": "17827:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1751, + "modifierName": { + "argumentTypes": null, + "id": 1749, + "name": "ensure", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 818, + "src": "17820:6:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "17820:16:0" + } + ], + "name": "swapExactTokensForTokens", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1748, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "17811:8:0" + }, + "parameters": { + "id": 1747, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1737, + "mutability": "mutable", + "name": "amountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1807, + "src": "17671:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1736, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "17671:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1739, + "mutability": "mutable", + "name": "amountOutMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1807, + "src": "17694:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1738, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "17694:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1742, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1807, + "src": "17721:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1740, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17721:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1741, + "length": null, + "nodeType": "ArrayTypeName", + "src": "17721:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1744, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1807, + "src": "17754:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1743, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17754:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1746, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1807, + "src": "17774:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1745, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "17774:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "17661:132:0" + }, + "returnParameters": { + "id": 1755, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1754, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1807, + "src": "17846:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1752, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "17846:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1753, + "length": null, + "nodeType": "ArrayTypeName", + "src": "17846:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "17845:23:0" + }, + "scope": 2822, + "src": "17628:615:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "baseFunctions": [ + 488 + ], + "body": { + "id": 1875, + "nodeType": "Block", + "src": "18489:352:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1828, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1826, + "src": "18499:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1831, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "18539:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1832, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1809, + "src": "18548:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1833, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1814, + "src": "18559:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + ], + "expression": { + "argumentTypes": null, + "id": 1829, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "18509:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 1830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAmountsIn", + "nodeType": "MemberAccess", + "referencedDeclaration": 3362, + "src": "18509:29:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)" + } + }, + "id": 1834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18509:55:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "18499:65:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1836, + "nodeType": "ExpressionStatement", + "src": "18499:65:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1838, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1826, + "src": "18582:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1840, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1839, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18590:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18582:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 1841, + "name": "amountInMax", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1811, + "src": "18596:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18582:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e69737761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54", + "id": 1843, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18609:41:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_bb18004cd22eaad7ea393d184ea6ac1df1428db36bb6fbff8af486232d68ae2c", + "typeString": "literal_string \"UniswapV2Router: EXCESSIVE_INPUT_AMOUNT\"" + }, + "value": "UniswapV2Router: EXCESSIVE_INPUT_AMOUNT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_bb18004cd22eaad7ea393d184ea6ac1df1428db36bb6fbff8af486232d68ae2c", + "typeString": "literal_string \"UniswapV2Router: EXCESSIVE_INPUT_AMOUNT\"" + } + ], + "id": 1837, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "18574:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18574:77:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1845, + "nodeType": "ExpressionStatement", + "src": "18574:77:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1849, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1814, + "src": "18706:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 1851, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1850, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18711:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18706:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1852, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "18715:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18715:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1856, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "18752:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1857, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1814, + "src": "18761:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 1859, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1858, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18766:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18761:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1860, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1814, + "src": "18770:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 1862, + "indexExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1861, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18775:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18770:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1854, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "18727:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 1855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pairFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 2987, + "src": "18727:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address,address) pure returns (address)" + } + }, + "id": 1863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18727:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1864, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1826, + "src": "18780:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1866, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1865, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18788:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18780:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1846, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3521, + "src": "18661:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$3521_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 1848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 3495, + "src": "18661:31:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256)" + } + }, + "id": 1867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18661:139:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1868, + "nodeType": "ExpressionStatement", + "src": "18661:139:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1870, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1826, + "src": "18816:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 1871, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1814, + "src": "18825:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + { + "argumentTypes": null, + "id": 1872, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1816, + "src": "18831:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1869, + "name": "_swap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1735, + "src": "18810:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$", + "typeString": "function (uint256[] memory,address[] memory,address)" + } + }, + "id": 1873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18810:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1874, + "nodeType": "ExpressionStatement", + "src": "18810:24:0" + } + ] + }, + "documentation": null, + "functionSelector": "8803dbee", + "id": 1876, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 1822, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1818, + "src": "18447:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1823, + "modifierName": { + "argumentTypes": null, + "id": 1821, + "name": "ensure", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 818, + "src": "18440:6:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "18440:16:0" + } + ], + "name": "swapTokensForExactTokens", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1820, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "18431:8:0" + }, + "parameters": { + "id": 1819, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1809, + "mutability": "mutable", + "name": "amountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1876, + "src": "18291:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1808, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "18291:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1811, + "mutability": "mutable", + "name": "amountInMax", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1876, + "src": "18315:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1810, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "18315:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1814, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1876, + "src": "18341:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1812, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18341:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1813, + "length": null, + "nodeType": "ArrayTypeName", + "src": "18341:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1816, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1876, + "src": "18374:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1815, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18374:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1818, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1876, + "src": "18394:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1817, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "18394:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "18281:132:0" + }, + "returnParameters": { + "id": 1827, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1826, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1876, + "src": "18466:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1824, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "18466:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1825, + "length": null, + "nodeType": "ArrayTypeName", + "src": "18466:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "18465:23:0" + }, + "scope": 2822, + "src": "18248:593:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "baseFunctions": [ + 503 + ], + "body": { + "id": 1963, + "nodeType": "Block", + "src": "19083:446:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1896, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1881, + "src": "19101:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 1898, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1897, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19106:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19101:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1899, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "19112:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "19101:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e69737761705632526f757465723a20494e56414c49445f50415448", + "id": 1901, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19118:31:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6435d47a7cef43416f8f596d66beab1b30970728f1435d971438f7d89b0cfb94", + "typeString": "literal_string \"UniswapV2Router: INVALID_PATH\"" + }, + "value": "UniswapV2Router: INVALID_PATH" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6435d47a7cef43416f8f596d66beab1b30970728f1435d971438f7d89b0cfb94", + "typeString": "literal_string \"UniswapV2Router: INVALID_PATH\"" + } + ], + "id": 1895, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "19093:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19093:57:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1903, + "nodeType": "ExpressionStatement", + "src": "19093:57:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 1912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1904, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1893, + "src": "19160:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1907, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "19201:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1908, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "19210:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "19210:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1910, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1881, + "src": "19221:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + ], + "expression": { + "argumentTypes": null, + "id": 1905, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "19170:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 1906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAmountsOut", + "nodeType": "MemberAccess", + "referencedDeclaration": 3277, + "src": "19170:30:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)" + } + }, + "id": 1911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19170:56:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "19160:66:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1913, + "nodeType": "ExpressionStatement", + "src": "19160:66:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1915, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1893, + "src": "19244:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1920, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1916, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1893, + "src": "19252:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1917, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "19252:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1918, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19269:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "19252:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19244:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 1921, + "name": "amountOutMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1878, + "src": "19275:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "19244:43:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54", + "id": 1923, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19289:45:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d4ea67bea551891ab36be726b8e631181246034dffcfd5c0bbfad1e9d1729432", + "typeString": "literal_string \"UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT\"" + }, + "value": "UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d4ea67bea551891ab36be726b8e631181246034dffcfd5c0bbfad1e9d1729432", + "typeString": "literal_string \"UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT\"" + } + ], + "id": 1914, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "19236:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19236:99:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1925, + "nodeType": "ExpressionStatement", + "src": "19236:99:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1927, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "19351:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1926, + "name": "IWETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 793, + "src": "19345:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IWETH_$793_$", + "typeString": "type(contract IWETH)" + } + }, + "id": 1928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19345:11:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWETH_$793", + "typeString": "contract IWETH" + } + }, + "id": 1929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "deposit", + "nodeType": "MemberAccess", + "referencedDeclaration": 778, + "src": "19345:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$__$returns$__$", + "typeString": "function () payable external" + } + }, + "id": 1933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1930, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1893, + "src": "19372:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1932, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1931, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19380:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19372:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "19345:38:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$__$returns$__$value", + "typeString": "function () payable external" + } + }, + "id": 1934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19345:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1935, + "nodeType": "ExpressionStatement", + "src": "19345:40:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1943, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "19448:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1944, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1881, + "src": "19457:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 1946, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1945, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19462:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19457:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1947, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1881, + "src": "19466:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 1949, + "indexExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1948, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19471:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19466:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1941, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "19423:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 1942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pairFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 2987, + "src": "19423:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address,address) pure returns (address)" + } + }, + "id": 1950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19423:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1951, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1893, + "src": "19476:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1953, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1952, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19484:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19476:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1938, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "19408:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1937, + "name": "IWETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 793, + "src": "19402:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IWETH_$793_$", + "typeString": "type(contract IWETH)" + } + }, + "id": 1939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19402:11:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWETH_$793", + "typeString": "contract IWETH" + } + }, + "id": 1940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 787, + "src": "19402:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19402:85:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1936, + "name": "assert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -3, + "src": "19395:6:0", + "typeDescriptions": { + "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19395:93:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1956, + "nodeType": "ExpressionStatement", + "src": "19395:93:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1958, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1893, + "src": "19504:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 1959, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1881, + "src": "19513:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + { + "argumentTypes": null, + "id": 1960, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1883, + "src": "19519:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1957, + "name": "_swap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1735, + "src": "19498:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$", + "typeString": "function (uint256[] memory,address[] memory,address)" + } + }, + "id": 1961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19498:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1962, + "nodeType": "ExpressionStatement", + "src": "19498:24:0" + } + ] + }, + "documentation": null, + "functionSelector": "7ff36ab5", + "id": 1964, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 1889, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1885, + "src": "19029:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1890, + "modifierName": { + "argumentTypes": null, + "id": 1888, + "name": "ensure", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 818, + "src": "19022:6:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "19022:16:0" + } + ], + "name": "swapExactETHForTokens", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1887, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "18989:8:0" + }, + "parameters": { + "id": 1886, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1878, + "mutability": "mutable", + "name": "amountOutMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1964, + "src": "18877:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1877, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "18877:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1881, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1964, + "src": "18896:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1879, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18896:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1880, + "length": null, + "nodeType": "ArrayTypeName", + "src": "18896:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1883, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1964, + "src": "18921:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1882, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18921:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1885, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1964, + "src": "18933:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1884, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "18933:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "18876:71:0" + }, + "returnParameters": { + "id": 1894, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1893, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1964, + "src": "19056:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1891, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "19056:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1892, + "length": null, + "nodeType": "ArrayTypeName", + "src": "19056:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "19055:23:0" + }, + "scope": 2822, + "src": "18846:683:0", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + }, + { + "baseFunctions": [ + 520 + ], + "body": { + "id": 2071, + "nodeType": "Block", + "src": "19770:576:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1986, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1971, + "src": "19788:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 1991, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1987, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1971, + "src": "19793:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 1988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "19793:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1989, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19807:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "19793:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19788:21:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1992, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "19813:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "19788:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e69737761705632526f757465723a20494e56414c49445f50415448", + "id": 1994, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19819:31:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6435d47a7cef43416f8f596d66beab1b30970728f1435d971438f7d89b0cfb94", + "typeString": "literal_string \"UniswapV2Router: INVALID_PATH\"" + }, + "value": "UniswapV2Router: INVALID_PATH" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6435d47a7cef43416f8f596d66beab1b30970728f1435d971438f7d89b0cfb94", + "typeString": "literal_string \"UniswapV2Router: INVALID_PATH\"" + } + ], + "id": 1985, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "19780:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19780:71:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1996, + "nodeType": "ExpressionStatement", + "src": "19780:71:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 2004, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1997, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1983, + "src": "19861:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2000, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "19901:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2001, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1966, + "src": "19910:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2002, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1971, + "src": "19921:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + ], + "expression": { + "argumentTypes": null, + "id": 1998, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "19871:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 1999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAmountsIn", + "nodeType": "MemberAccess", + "referencedDeclaration": 3362, + "src": "19871:29:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)" + } + }, + "id": 2003, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19871:55:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "19861:65:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2005, + "nodeType": "ExpressionStatement", + "src": "19861:65:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2007, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1983, + "src": "19944:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2009, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2008, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19952:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19944:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 2010, + "name": "amountInMax", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1968, + "src": "19958:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "19944:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e69737761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54", + "id": 2012, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19971:41:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_bb18004cd22eaad7ea393d184ea6ac1df1428db36bb6fbff8af486232d68ae2c", + "typeString": "literal_string \"UniswapV2Router: EXCESSIVE_INPUT_AMOUNT\"" + }, + "value": "UniswapV2Router: EXCESSIVE_INPUT_AMOUNT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_bb18004cd22eaad7ea393d184ea6ac1df1428db36bb6fbff8af486232d68ae2c", + "typeString": "literal_string \"UniswapV2Router: EXCESSIVE_INPUT_AMOUNT\"" + } + ], + "id": 2006, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "19936:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19936:77:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2014, + "nodeType": "ExpressionStatement", + "src": "19936:77:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2018, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1971, + "src": "20068:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2020, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2019, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20073:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20068:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2021, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "20077:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20077:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2025, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "20114:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2026, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1971, + "src": "20123:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2028, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2027, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20128:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20123:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2029, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1971, + "src": "20132:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2031, + "indexExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2030, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20137:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20132:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2023, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "20089:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 2024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pairFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 2987, + "src": "20089:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address,address) pure returns (address)" + } + }, + "id": 2032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20089:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2033, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1983, + "src": "20142:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2035, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2034, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20150:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20142:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2015, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3521, + "src": "20023:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$3521_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 2017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 3495, + "src": "20023:31:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256)" + } + }, + "id": 2036, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20023:139:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2037, + "nodeType": "ExpressionStatement", + "src": "20023:139:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2039, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1983, + "src": "20178:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 2040, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1971, + "src": "20187:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2043, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "20201:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Router02_$2822", + "typeString": "contract UniswapV2Router02" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Router02_$2822", + "typeString": "contract UniswapV2Router02" + } + ], + "id": 2042, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "20193:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2041, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20193:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20193:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 2038, + "name": "_swap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1735, + "src": "20172:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$", + "typeString": "function (uint256[] memory,address[] memory,address)" + } + }, + "id": 2045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20172:35:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2046, + "nodeType": "ExpressionStatement", + "src": "20172:35:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2051, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1983, + "src": "20238:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2056, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2052, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1983, + "src": "20246:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2053, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20246:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2054, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20263:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "20246:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20238:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2048, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "20223:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2047, + "name": "IWETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 793, + "src": "20217:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IWETH_$793_$", + "typeString": "type(contract IWETH)" + } + }, + "id": 2049, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20217:11:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWETH_$793", + "typeString": "contract IWETH" + } + }, + "id": 2050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 792, + "src": "20217:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 2057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20217:49:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2058, + "nodeType": "ExpressionStatement", + "src": "20217:49:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2062, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1973, + "src": "20307:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2063, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1983, + "src": "20311:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2068, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2064, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1983, + "src": "20319:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2065, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20319:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2066, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20336:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "20319:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20311:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2059, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3521, + "src": "20276:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$3521_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 2061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferETH", + "nodeType": "MemberAccess", + "referencedDeclaration": 3520, + "src": "20276:30:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20276:63:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2070, + "nodeType": "ExpressionStatement", + "src": "20276:63:0" + } + ] + }, + "documentation": null, + "functionSelector": "4a25d94a", + "id": 2072, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 1979, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1975, + "src": "19716:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1980, + "modifierName": { + "argumentTypes": null, + "id": 1978, + "name": "ensure", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 818, + "src": "19709:6:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "19709:16:0" + } + ], + "name": "swapTokensForExactETH", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1977, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "19692:8:0" + }, + "parameters": { + "id": 1976, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1966, + "mutability": "mutable", + "name": "amountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2072, + "src": "19565:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1965, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "19565:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1968, + "mutability": "mutable", + "name": "amountInMax", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2072, + "src": "19581:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1967, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "19581:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1971, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2072, + "src": "19599:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1969, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19599:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1970, + "length": null, + "nodeType": "ArrayTypeName", + "src": "19599:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1973, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2072, + "src": "19624:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1972, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19624:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1975, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2072, + "src": "19636:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1974, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "19636:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "19564:86:0" + }, + "returnParameters": { + "id": 1984, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1983, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2072, + "src": "19743:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1981, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "19743:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1982, + "length": null, + "nodeType": "ArrayTypeName", + "src": "19743:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "19742:23:0" + }, + "scope": 2822, + "src": "19534:812:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "baseFunctions": [ + 537 + ], + "body": { + "id": 2182, + "nodeType": "Block", + "src": "20587:598:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2094, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2079, + "src": "20605:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2099, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2095, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2079, + "src": "20610:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2096, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20610:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2097, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20624:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "20610:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20605:21:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2100, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "20630:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "20605:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e69737761705632526f757465723a20494e56414c49445f50415448", + "id": 2102, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20636:31:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6435d47a7cef43416f8f596d66beab1b30970728f1435d971438f7d89b0cfb94", + "typeString": "literal_string \"UniswapV2Router: INVALID_PATH\"" + }, + "value": "UniswapV2Router: INVALID_PATH" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6435d47a7cef43416f8f596d66beab1b30970728f1435d971438f7d89b0cfb94", + "typeString": "literal_string \"UniswapV2Router: INVALID_PATH\"" + } + ], + "id": 2093, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "20597:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20597:71:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2104, + "nodeType": "ExpressionStatement", + "src": "20597:71:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 2112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2105, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2091, + "src": "20678:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2108, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "20719:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2109, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2074, + "src": "20728:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2110, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2079, + "src": "20738:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + ], + "expression": { + "argumentTypes": null, + "id": 2106, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "20688:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 2107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAmountsOut", + "nodeType": "MemberAccess", + "referencedDeclaration": 3277, + "src": "20688:30:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)" + } + }, + "id": 2111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20688:55:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "20678:65:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2113, + "nodeType": "ExpressionStatement", + "src": "20678:65:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2115, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2091, + "src": "20761:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2120, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2116, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2091, + "src": "20769:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20769:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2118, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20786:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "20769:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20761:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 2121, + "name": "amountOutMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2076, + "src": "20792:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20761:43:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54", + "id": 2123, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20806:45:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d4ea67bea551891ab36be726b8e631181246034dffcfd5c0bbfad1e9d1729432", + "typeString": "literal_string \"UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT\"" + }, + "value": "UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d4ea67bea551891ab36be726b8e631181246034dffcfd5c0bbfad1e9d1729432", + "typeString": "literal_string \"UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT\"" + } + ], + "id": 2114, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "20753:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20753:99:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2125, + "nodeType": "ExpressionStatement", + "src": "20753:99:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2129, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2079, + "src": "20907:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2131, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2130, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20912:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20907:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2132, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "20916:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20916:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2136, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "20953:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2137, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2079, + "src": "20962:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2139, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2138, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20967:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20962:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2140, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2079, + "src": "20971:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2142, + "indexExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20976:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20971:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2134, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "20928:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 2135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pairFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 2987, + "src": "20928:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address,address) pure returns (address)" + } + }, + "id": 2143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20928:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2144, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2091, + "src": "20981:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2146, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2145, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20989:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20981:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2126, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3521, + "src": "20862:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$3521_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 2128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 3495, + "src": "20862:31:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256)" + } + }, + "id": 2147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20862:139:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2148, + "nodeType": "ExpressionStatement", + "src": "20862:139:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2150, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2091, + "src": "21017:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 2151, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2079, + "src": "21026:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2154, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "21040:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Router02_$2822", + "typeString": "contract UniswapV2Router02" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Router02_$2822", + "typeString": "contract UniswapV2Router02" + } + ], + "id": 2153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21032:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2152, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21032:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21032:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 2149, + "name": "_swap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1735, + "src": "21011:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$", + "typeString": "function (uint256[] memory,address[] memory,address)" + } + }, + "id": 2156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21011:35:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2157, + "nodeType": "ExpressionStatement", + "src": "21011:35:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2162, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2091, + "src": "21077:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2167, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2163, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2091, + "src": "21085:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21085:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2165, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21102:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "21085:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21077:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2159, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "21062:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2158, + "name": "IWETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 793, + "src": "21056:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IWETH_$793_$", + "typeString": "type(contract IWETH)" + } + }, + "id": 2160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21056:11:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWETH_$793", + "typeString": "contract IWETH" + } + }, + "id": 2161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 792, + "src": "21056:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 2168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21056:49:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2169, + "nodeType": "ExpressionStatement", + "src": "21056:49:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2173, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2081, + "src": "21146:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2174, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2091, + "src": "21150:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2179, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2175, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2091, + "src": "21158:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21158:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2177, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21175:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "21158:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21150:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2170, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3521, + "src": "21115:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$3521_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 2172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferETH", + "nodeType": "MemberAccess", + "referencedDeclaration": 3520, + "src": "21115:30:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21115:63:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2181, + "nodeType": "ExpressionStatement", + "src": "21115:63:0" + } + ] + }, + "documentation": null, + "functionSelector": "18cbafe5", + "id": 2183, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 2087, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2083, + "src": "20533:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2088, + "modifierName": { + "argumentTypes": null, + "id": 2086, + "name": "ensure", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 818, + "src": "20526:6:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "20526:16:0" + } + ], + "name": "swapExactTokensForETH", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2085, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "20509:8:0" + }, + "parameters": { + "id": 2084, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2074, + "mutability": "mutable", + "name": "amountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2183, + "src": "20382:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2073, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "20382:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2076, + "mutability": "mutable", + "name": "amountOutMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2183, + "src": "20397:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2075, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "20397:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2079, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2183, + "src": "20416:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2077, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20416:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2078, + "length": null, + "nodeType": "ArrayTypeName", + "src": "20416:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2081, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2183, + "src": "20441:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2080, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20441:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2083, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2183, + "src": "20453:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2082, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "20453:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "20381:86:0" + }, + "returnParameters": { + "id": 2092, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2091, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2183, + "src": "20560:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2089, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "20560:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2090, + "length": null, + "nodeType": "ArrayTypeName", + "src": "20560:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "20559:23:0" + }, + "scope": 2822, + "src": "20351:834:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "baseFunctions": [ + 552 + ], + "body": { + "id": 2287, + "nodeType": "Block", + "src": "21424:560:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2203, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2188, + "src": "21442:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2205, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2204, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21447:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21442:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2206, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "21453:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "21442:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e69737761705632526f757465723a20494e56414c49445f50415448", + "id": 2208, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21459:31:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6435d47a7cef43416f8f596d66beab1b30970728f1435d971438f7d89b0cfb94", + "typeString": "literal_string \"UniswapV2Router: INVALID_PATH\"" + }, + "value": "UniswapV2Router: INVALID_PATH" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6435d47a7cef43416f8f596d66beab1b30970728f1435d971438f7d89b0cfb94", + "typeString": "literal_string \"UniswapV2Router: INVALID_PATH\"" + } + ], + "id": 2202, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "21434:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21434:57:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2210, + "nodeType": "ExpressionStatement", + "src": "21434:57:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 2218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2211, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2200, + "src": "21501:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2214, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "21541:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2215, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2185, + "src": "21550:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2216, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2188, + "src": "21561:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + ], + "expression": { + "argumentTypes": null, + "id": 2212, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "21511:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 2213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAmountsIn", + "nodeType": "MemberAccess", + "referencedDeclaration": 3362, + "src": "21511:29:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)" + } + }, + "id": 2217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21511:55:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "21501:65:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2219, + "nodeType": "ExpressionStatement", + "src": "21501:65:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2221, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2200, + "src": "21584:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2223, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2222, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21592:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21584:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2224, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "21598:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21598:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21584:23:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e69737761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54", + "id": 2227, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21609:41:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_bb18004cd22eaad7ea393d184ea6ac1df1428db36bb6fbff8af486232d68ae2c", + "typeString": "literal_string \"UniswapV2Router: EXCESSIVE_INPUT_AMOUNT\"" + }, + "value": "UniswapV2Router: EXCESSIVE_INPUT_AMOUNT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_bb18004cd22eaad7ea393d184ea6ac1df1428db36bb6fbff8af486232d68ae2c", + "typeString": "literal_string \"UniswapV2Router: EXCESSIVE_INPUT_AMOUNT\"" + } + ], + "id": 2220, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "21576:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21576:75:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2229, + "nodeType": "ExpressionStatement", + "src": "21576:75:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2231, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "21667:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2230, + "name": "IWETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 793, + "src": "21661:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IWETH_$793_$", + "typeString": "type(contract IWETH)" + } + }, + "id": 2232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21661:11:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWETH_$793", + "typeString": "contract IWETH" + } + }, + "id": 2233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "deposit", + "nodeType": "MemberAccess", + "referencedDeclaration": 778, + "src": "21661:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$__$returns$__$", + "typeString": "function () payable external" + } + }, + "id": 2237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2234, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2200, + "src": "21688:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2236, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2235, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21696:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21688:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "21661:38:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$__$returns$__$value", + "typeString": "function () payable external" + } + }, + "id": 2238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21661:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2239, + "nodeType": "ExpressionStatement", + "src": "21661:40:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2247, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "21764:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2248, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2188, + "src": "21773:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2250, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2249, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21778:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21773:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2251, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2188, + "src": "21782:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2253, + "indexExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21787:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21782:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2245, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "21739:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 2246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pairFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 2987, + "src": "21739:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address,address) pure returns (address)" + } + }, + "id": 2254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21739:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2255, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2200, + "src": "21792:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2257, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2256, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21800:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21792:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2242, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "21724:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2241, + "name": "IWETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 793, + "src": "21718:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IWETH_$793_$", + "typeString": "type(contract IWETH)" + } + }, + "id": 2243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21718:11:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWETH_$793", + "typeString": "contract IWETH" + } + }, + "id": 2244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 787, + "src": "21718:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 2258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21718:85:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2240, + "name": "assert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -3, + "src": "21711:6:0", + "typeDescriptions": { + "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21711:93:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2260, + "nodeType": "ExpressionStatement", + "src": "21711:93:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2262, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2200, + "src": "21820:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 2263, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2188, + "src": "21829:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + { + "argumentTypes": null, + "id": 2264, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2190, + "src": "21835:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2261, + "name": "_swap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1735, + "src": "21814:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$", + "typeString": "function (uint256[] memory,address[] memory,address)" + } + }, + "id": 2265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21814:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2266, + "nodeType": "ExpressionStatement", + "src": "21814:24:0" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2267, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "21887:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21887:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2269, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2200, + "src": "21899:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2271, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21907:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21899:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21887:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2286, + "nodeType": "IfStatement", + "src": "21883:94:0", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2276, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "21942:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21942:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2278, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "21954:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21954:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2280, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2200, + "src": "21966:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2282, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2281, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21974:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21966:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21954:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2273, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3521, + "src": "21911:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$3521_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 2275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferETH", + "nodeType": "MemberAccess", + "referencedDeclaration": 3520, + "src": "21911:30:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21911:66:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2285, + "nodeType": "ExpressionStatement", + "src": "21911:66:0" + } + } + ] + }, + "documentation": null, + "functionSelector": "fb3bdb41", + "id": 2288, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 2196, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2192, + "src": "21370:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2197, + "modifierName": { + "argumentTypes": null, + "id": 2195, + "name": "ensure", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 818, + "src": "21363:6:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "21363:16:0" + } + ], + "name": "swapETHForExactTokens", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2194, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "21330:8:0" + }, + "parameters": { + "id": 2193, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2185, + "mutability": "mutable", + "name": "amountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2288, + "src": "21221:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2184, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21221:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2188, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2288, + "src": "21237:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2186, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21237:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2187, + "length": null, + "nodeType": "ArrayTypeName", + "src": "21237:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2190, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2288, + "src": "21262:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2189, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21262:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2192, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2288, + "src": "21274:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2191, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21274:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "21220:68:0" + }, + "returnParameters": { + "id": 2201, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2200, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2288, + "src": "21397:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2198, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21397:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2199, + "length": null, + "nodeType": "ArrayTypeName", + "src": "21397:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "21396:23:0" + }, + "scope": 2822, + "src": "21190:794:0", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 2451, + "nodeType": "Block", + "src": "22224:1100:0", + "statements": [ + { + "body": { + "id": 2449, + "nodeType": "Block", + "src": "22273:1045:0", + "statements": [ + { + "assignments": [ + 2309, + 2311 + ], + "declarations": [ + { + "constant": false, + "id": 2309, + "mutability": "mutable", + "name": "input", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2449, + "src": "22288:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2308, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22288:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2311, + "mutability": "mutable", + "name": "output", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2449, + "src": "22303:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2310, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22303:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2321, + "initialValue": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2312, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2291, + "src": "22322:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2314, + "indexExpression": { + "argumentTypes": null, + "id": 2313, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2297, + "src": "22327:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22322:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2315, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2291, + "src": "22331:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2319, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2316, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2297, + "src": "22336:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2317, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22340:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "22336:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22331:11:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 2320, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "22321:22:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22287:56:0" + }, + { + "assignments": [ + 2323, + null + ], + "declarations": [ + { + "constant": false, + "id": 2323, + "mutability": "mutable", + "name": "token0", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2449, + "src": "22358:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2322, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22358:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 2329, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2326, + "name": "input", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "22405:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2327, + "name": "output", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2311, + "src": "22412:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2324, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "22377:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 2325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sortTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2942, + "src": "22377:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$", + "typeString": "function (address,address) pure returns (address,address)" + } + }, + "id": 2328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22377:42:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22357:62:0" + }, + { + "assignments": [ + 2331 + ], + "declarations": [ + { + "constant": false, + "id": 2331, + "mutability": "mutable", + "name": "pair", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2449, + "src": "22433:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Pair_$302", + "typeString": "contract IUniswapV2Pair" + }, + "typeName": { + "contractScope": null, + "id": 2330, + "name": "IUniswapV2Pair", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 302, + "src": "22433:14:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Pair_$302", + "typeString": "contract IUniswapV2Pair" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2340, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2335, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "22495:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2336, + "name": "input", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "22504:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2337, + "name": "output", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2311, + "src": "22511:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2333, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "22470:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 2334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pairFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 2987, + "src": "22470:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address,address) pure returns (address)" + } + }, + "id": 2338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22470:48:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2332, + "name": "IUniswapV2Pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "22455:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$302_$", + "typeString": "type(contract IUniswapV2Pair)" + } + }, + "id": 2339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22455:64:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Pair_$302", + "typeString": "contract IUniswapV2Pair" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22433:86:0" + }, + { + "assignments": [ + 2342 + ], + "declarations": [ + { + "constant": false, + "id": 2342, + "mutability": "mutable", + "name": "amountInput", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2449, + "src": "22533:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2341, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22533:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2343, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "22533:16:0" + }, + { + "assignments": [ + 2345 + ], + "declarations": [ + { + "constant": false, + "id": 2345, + "mutability": "mutable", + "name": "amountOutput", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2449, + "src": "22563:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2344, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22563:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2346, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "22563:17:0" + }, + { + "id": 2394, + "nodeType": "Block", + "src": "22594:422:0", + "statements": [ + { + "assignments": [ + 2348, + 2350, + null + ], + "declarations": [ + { + "constant": false, + "id": 2348, + "mutability": "mutable", + "name": "reserve0", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2394, + "src": "22649:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2347, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22649:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2350, + "mutability": "mutable", + "name": "reserve1", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2394, + "src": "22664:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2349, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22664:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 2354, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 2351, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2331, + "src": "22682:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Pair_$302", + "typeString": "contract IUniswapV2Pair" + } + }, + "id": 2352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getReserves", + "nodeType": "MemberAccess", + "referencedDeclaration": 244, + "src": "22682:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$", + "typeString": "function () view external returns (uint112,uint112,uint32)" + } + }, + "id": 2353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22682:18:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$", + "typeString": "tuple(uint112,uint112,uint32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22648:52:0" + }, + { + "assignments": [ + 2356, + 2358 + ], + "declarations": [ + { + "constant": false, + "id": 2356, + "mutability": "mutable", + "name": "reserveInput", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2394, + "src": "22715:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2355, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22715:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2358, + "mutability": "mutable", + "name": "reserveOutput", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2394, + "src": "22734:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2357, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22734:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2369, + "initialValue": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2359, + "name": "input", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "22756:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2360, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2323, + "src": "22765:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "22756:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 2365, + "name": "reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2350, + "src": "22798:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2366, + "name": "reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2348, + "src": "22808:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2367, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "22797:20:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "id": 2368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "22756:61:0", + "trueExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 2362, + "name": "reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2348, + "src": "22775:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2363, + "name": "reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2350, + "src": "22785:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2364, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "22774:20:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22714:103:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 2383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2370, + "name": "amountInput", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2342, + "src": "22831:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2381, + "name": "reserveInput", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2356, + "src": "22888:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2377, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2331, + "src": "22877:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Pair_$302", + "typeString": "contract IUniswapV2Pair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IUniswapV2Pair_$302", + "typeString": "contract IUniswapV2Pair" + } + ], + "id": 2376, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "22869:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2375, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22869:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22869:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2372, + "name": "input", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "22852:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2371, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 775, + "src": "22845:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$775_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22845:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$775", + "typeString": "contract IERC20" + } + }, + "id": 2374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 736, + "src": "22845:23:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22845:38:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2866, + "src": "22845:42:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22845:56:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22831:70:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2384, + "nodeType": "ExpressionStatement", + "src": "22831:70:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 2392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2385, + "name": "amountOutput", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2345, + "src": "22915:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2388, + "name": "amountInput", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2342, + "src": "22960:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2389, + "name": "reserveInput", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2356, + "src": "22973:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2390, + "name": "reserveOutput", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2358, + "src": "22987:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2386, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "22930:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 2387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAmountOut", + "nodeType": "MemberAccess", + "referencedDeclaration": 3136, + "src": "22930:29:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 2391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22930:71:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22915:86:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2393, + "nodeType": "ExpressionStatement", + "src": "22915:86:0" + } + ] + }, + { + "assignments": [ + 2396, + 2398 + ], + "declarations": [ + { + "constant": false, + "id": 2396, + "mutability": "mutable", + "name": "amount0Out", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2449, + "src": "23030:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2395, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23030:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2398, + "mutability": "mutable", + "name": "amount1Out", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2449, + "src": "23047:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2397, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23047:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2415, + "initialValue": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2399, + "name": "input", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "23066:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2400, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2323, + "src": "23075:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "23066:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 2408, + "name": "amountOutput", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2345, + "src": "23111:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2411, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23130:1:0", + "subdenomination": null, + "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": 2410, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "23125:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2409, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23125:4:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2412, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23125:7:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2413, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "23110:23:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "id": 2414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "23066:67:0", + "trueExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2404, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23090:1:0", + "subdenomination": null, + "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": 2403, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "23085:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2402, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23085:4:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23085:7:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2406, + "name": "amountOutput", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2345, + "src": "23094:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2407, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "23084:23:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23029:104:0" + }, + { + "assignments": [ + 2417 + ], + "declarations": [ + { + "constant": false, + "id": 2417, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2449, + "src": "23147:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2416, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23147:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2436, + "initialValue": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2418, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2297, + "src": "23160:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2419, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2291, + "src": "23164:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "23164:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 2421, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23178:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "23164:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23160:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "id": 2434, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2293, + "src": "23239:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "23160:82:0", + "trueExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2426, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "23207:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2427, + "name": "output", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2311, + "src": "23216:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2428, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2291, + "src": "23224:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2432, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2429, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2297, + "src": "23229:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 2430, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23233:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "23229:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23224:11:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2424, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "23182:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 2425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pairFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 2987, + "src": "23182:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address,address) pure returns (address)" + } + }, + "id": 2433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23182:54:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23147:95:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2440, + "name": "amount0Out", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2396, + "src": "23266:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2441, + "name": "amount1Out", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2398, + "src": "23278:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2442, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2417, + "src": "23290:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23304:1:0", + "subdenomination": null, + "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": 2444, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "23294:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 2443, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "23298:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 2446, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23294:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 2437, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2331, + "src": "23256:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Pair_$302", + "typeString": "contract IUniswapV2Pair" + } + }, + "id": 2439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "swap", + "nodeType": "MemberAccess", + "referencedDeclaration": 286, + "src": "23256:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint256,uint256,address,bytes memory) external" + } + }, + "id": 2447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23256:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2448, + "nodeType": "ExpressionStatement", + "src": "23256:51:0" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2299, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2297, + "src": "22247:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2300, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2291, + "src": "22251:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "22251:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2302, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22265:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "22251:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22247:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2450, + "initializationExpression": { + "assignments": [ + 2297 + ], + "declarations": [ + { + "constant": false, + "id": 2297, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2450, + "src": "22239:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2296, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22239:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2298, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "22239:6:0" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "22268:3:0", + "subExpression": { + "argumentTypes": null, + "id": 2305, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2297, + "src": "22268:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2307, + "nodeType": "ExpressionStatement", + "src": "22268:3:0" + }, + "nodeType": "ForStatement", + "src": "22234:1084:0" + } + ] + }, + "documentation": null, + "id": 2452, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_swapSupportingFeeOnTransferTokens", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2294, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2291, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2452, + "src": "22171:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2289, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22171:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2290, + "length": null, + "nodeType": "ArrayTypeName", + "src": "22171:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2293, + "mutability": "mutable", + "name": "_to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2452, + "src": "22194:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2292, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22194:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "22170:36:0" + }, + "returnParameters": { + "id": 2295, + "nodeType": "ParameterList", + "parameters": [], + "src": "22224:0:0" + }, + "scope": 2822, + "src": "22127:1197:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 666 + ], + "body": { + "id": 2530, + "nodeType": "Block", + "src": "23567:460:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2473, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "23622:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2475, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2474, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23627:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23622:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2476, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "23631:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "23631:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2480, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "23668:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2481, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "23677:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2483, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2482, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23682:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23677:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2484, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "23686:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2486, + "indexExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2485, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23691:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23686:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2478, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "23643:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 2479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pairFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 2987, + "src": "23643:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address,address) pure returns (address)" + } + }, + "id": 2487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23643:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2488, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2454, + "src": "23696:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2470, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3521, + "src": "23577:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$3521_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 2472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 3495, + "src": "23577:31:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256)" + } + }, + "id": 2489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23577:137:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2490, + "nodeType": "ExpressionStatement", + "src": "23577:137:0" + }, + { + "assignments": [ + 2492 + ], + "declarations": [ + { + "constant": false, + "id": 2492, + "mutability": "mutable", + "name": "balanceBefore", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2530, + "src": "23724:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2491, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23724:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2504, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2502, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2461, + "src": "23785:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2494, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "23752:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2499, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2495, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "23757:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2496, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "23757:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2497, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23771:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "23757:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23752:21:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2493, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 775, + "src": "23745:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$775_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23745:29:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$775", + "typeString": "contract IERC20" + } + }, + "id": 2501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 736, + "src": "23745:39:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23745:43:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23724:64:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2506, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "23833:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + { + "argumentTypes": null, + "id": 2507, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2461, + "src": "23839:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2505, + "name": "_swapSupportingFeeOnTransferTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2452, + "src": "23798:34:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$", + "typeString": "function (address[] memory,address)" + } + }, + "id": 2508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23798:44:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2509, + "nodeType": "ExpressionStatement", + "src": "23798:44:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2523, + "name": "balanceBefore", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2492, + "src": "23921:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2520, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2461, + "src": "23913:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2512, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "23880:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2517, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2513, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "23885:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "23885:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2515, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23899:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "23885:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23880:21:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2511, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 775, + "src": "23873:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$775_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23873:29:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$775", + "typeString": "contract IERC20" + } + }, + "id": 2519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 736, + "src": "23873:39:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23873:43:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2866, + "src": "23873:47:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23873:62:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 2525, + "name": "amountOutMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2456, + "src": "23939:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23873:78:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54", + "id": 2527, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23965:45:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d4ea67bea551891ab36be726b8e631181246034dffcfd5c0bbfad1e9d1729432", + "typeString": "literal_string \"UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT\"" + }, + "value": "UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d4ea67bea551891ab36be726b8e631181246034dffcfd5c0bbfad1e9d1729432", + "typeString": "literal_string \"UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT\"" + } + ], + "id": 2510, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "23852:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23852:168:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2529, + "nodeType": "ExpressionStatement", + "src": "23852:168:0" + } + ] + }, + "documentation": null, + "functionSelector": "5c11d795", + "id": 2531, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 2467, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2463, + "src": "23557:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2468, + "modifierName": { + "argumentTypes": null, + "id": 2466, + "name": "ensure", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 818, + "src": "23550:6:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "23550:16:0" + } + ], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2465, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "23541:8:0" + }, + "parameters": { + "id": 2464, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2454, + "mutability": "mutable", + "name": "amountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2531, + "src": "23401:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2453, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23401:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2456, + "mutability": "mutable", + "name": "amountOutMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2531, + "src": "23424:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2455, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23424:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2459, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2531, + "src": "23451:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2457, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23451:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2458, + "length": null, + "nodeType": "ArrayTypeName", + "src": "23451:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2461, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2531, + "src": "23484:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2460, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23484:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2463, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2531, + "src": "23504:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2462, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23504:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "23391:132:0" + }, + "returnParameters": { + "id": 2469, + "nodeType": "ParameterList", + "parameters": [], + "src": "23567:0:0" + }, + "scope": 2822, + "src": "23329:698:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "baseFunctions": [ + 678 + ], + "body": { + "id": 2627, + "nodeType": "Block", + "src": "24296:564:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2548, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2536, + "src": "24314:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2550, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2549, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24319:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24314:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2551, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "24325:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "24314:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e69737761705632526f757465723a20494e56414c49445f50415448", + "id": 2553, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24331:31:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6435d47a7cef43416f8f596d66beab1b30970728f1435d971438f7d89b0cfb94", + "typeString": "literal_string \"UniswapV2Router: INVALID_PATH\"" + }, + "value": "UniswapV2Router: INVALID_PATH" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6435d47a7cef43416f8f596d66beab1b30970728f1435d971438f7d89b0cfb94", + "typeString": "literal_string \"UniswapV2Router: INVALID_PATH\"" + } + ], + "id": 2547, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "24306:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24306:57:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2555, + "nodeType": "ExpressionStatement", + "src": "24306:57:0" + }, + { + "assignments": [ + 2557 + ], + "declarations": [ + { + "constant": false, + "id": 2557, + "mutability": "mutable", + "name": "amountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2627, + "src": "24373:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2556, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24373:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2560, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2558, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "24389:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "24389:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "24373:25:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2562, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "24414:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2561, + "name": "IWETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 793, + "src": "24408:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IWETH_$793_$", + "typeString": "type(contract IWETH)" + } + }, + "id": 2563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24408:11:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWETH_$793", + "typeString": "contract IWETH" + } + }, + "id": 2564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "deposit", + "nodeType": "MemberAccess", + "referencedDeclaration": 778, + "src": "24408:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$__$returns$__$", + "typeString": "function () payable external" + } + }, + "id": 2566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "argumentTypes": null, + "id": 2565, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2557, + "src": "24435:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "24408:36:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$__$returns$__$value", + "typeString": "function () payable external" + } + }, + "id": 2567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24408:38:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2568, + "nodeType": "ExpressionStatement", + "src": "24408:38:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2576, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "24509:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2577, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2536, + "src": "24518:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2579, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2578, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24523:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24518:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2580, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2536, + "src": "24527:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2582, + "indexExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2581, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24532:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24527:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2574, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "24484:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 2575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pairFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 2987, + "src": "24484:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address,address) pure returns (address)" + } + }, + "id": 2583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24484:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2584, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2557, + "src": "24537:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2571, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "24469:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2570, + "name": "IWETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 793, + "src": "24463:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IWETH_$793_$", + "typeString": "type(contract IWETH)" + } + }, + "id": 2572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24463:11:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWETH_$793", + "typeString": "contract IWETH" + } + }, + "id": 2573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 787, + "src": "24463:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 2585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24463:83:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2569, + "name": "assert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -3, + "src": "24456:6:0", + "typeDescriptions": { + "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24456:91:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2587, + "nodeType": "ExpressionStatement", + "src": "24456:91:0" + }, + { + "assignments": [ + 2589 + ], + "declarations": [ + { + "constant": false, + "id": 2589, + "mutability": "mutable", + "name": "balanceBefore", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2627, + "src": "24557:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2588, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24557:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2601, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2599, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2538, + "src": "24618:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2591, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2536, + "src": "24585:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2596, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2592, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2536, + "src": "24590:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "24590:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2594, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24604:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "24590:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24585:21:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2590, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 775, + "src": "24578:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$775_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24578:29:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$775", + "typeString": "contract IERC20" + } + }, + "id": 2598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 736, + "src": "24578:39:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24578:43:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "24557:64:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2603, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2536, + "src": "24666:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + { + "argumentTypes": null, + "id": 2604, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2538, + "src": "24672:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2602, + "name": "_swapSupportingFeeOnTransferTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2452, + "src": "24631:34:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$", + "typeString": "function (address[] memory,address)" + } + }, + "id": 2605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24631:44:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2606, + "nodeType": "ExpressionStatement", + "src": "24631:44:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2620, + "name": "balanceBefore", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2589, + "src": "24754:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2617, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2538, + "src": "24746:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2609, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2536, + "src": "24713:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2614, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2610, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2536, + "src": "24718:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "24718:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24732:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "24718:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24713:21:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2608, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 775, + "src": "24706:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$775_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24706:29:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$775", + "typeString": "contract IERC20" + } + }, + "id": 2616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 736, + "src": "24706:39:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24706:43:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2866, + "src": "24706:47:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24706:62:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 2622, + "name": "amountOutMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2533, + "src": "24772:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24706:78:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54", + "id": 2624, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24798:45:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d4ea67bea551891ab36be726b8e631181246034dffcfd5c0bbfad1e9d1729432", + "typeString": "literal_string \"UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT\"" + }, + "value": "UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d4ea67bea551891ab36be726b8e631181246034dffcfd5c0bbfad1e9d1729432", + "typeString": "literal_string \"UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT\"" + } + ], + "id": 2607, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "24685:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24685:168:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2626, + "nodeType": "ExpressionStatement", + "src": "24685:168:0" + } + ] + }, + "documentation": null, + "functionSelector": "b6f9de95", + "id": 2628, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 2544, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2540, + "src": "24282:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2545, + "modifierName": { + "argumentTypes": null, + "id": 2543, + "name": "ensure", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 818, + "src": "24275:6:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "24275:16:0" + } + ], + "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2542, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "24242:8:0" + }, + "parameters": { + "id": 2541, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2533, + "mutability": "mutable", + "name": "amountOutMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2628, + "src": "24101:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2532, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24101:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2536, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2628, + "src": "24128:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2534, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24128:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2535, + "length": null, + "nodeType": "ArrayTypeName", + "src": "24128:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2538, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2628, + "src": "24161:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2537, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24161:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2540, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2628, + "src": "24181:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2539, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24181:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "24091:109:0" + }, + "returnParameters": { + "id": 2546, + "nodeType": "ParameterList", + "parameters": [], + "src": "24296:0:0" + }, + "scope": 2822, + "src": "24032:828:0", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + }, + { + "baseFunctions": [ + 692 + ], + "body": { + "id": 2720, + "nodeType": "Block", + "src": "25136:551:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2647, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2635, + "src": "25154:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2652, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2648, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2635, + "src": "25159:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "25159:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2650, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25173:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "25159:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25154:21:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2653, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "25179:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "25154:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e69737761705632526f757465723a20494e56414c49445f50415448", + "id": 2655, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25185:31:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6435d47a7cef43416f8f596d66beab1b30970728f1435d971438f7d89b0cfb94", + "typeString": "literal_string \"UniswapV2Router: INVALID_PATH\"" + }, + "value": "UniswapV2Router: INVALID_PATH" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6435d47a7cef43416f8f596d66beab1b30970728f1435d971438f7d89b0cfb94", + "typeString": "literal_string \"UniswapV2Router: INVALID_PATH\"" + } + ], + "id": 2646, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "25146:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25146:71:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2657, + "nodeType": "ExpressionStatement", + "src": "25146:71:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2661, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2635, + "src": "25272:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2663, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2662, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25277:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25272:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2664, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "25281:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "25281:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2668, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "25318:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2669, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2635, + "src": "25327:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2671, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2670, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25332:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25327:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2672, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2635, + "src": "25336:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 2674, + "indexExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2673, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25341:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25336:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2666, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "25293:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 2667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pairFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 2987, + "src": "25293:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address,address) pure returns (address)" + } + }, + "id": 2675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25293:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2676, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2630, + "src": "25346:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2658, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3521, + "src": "25227:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$3521_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 2660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 3495, + "src": "25227:31:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256)" + } + }, + "id": 2677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25227:137:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2678, + "nodeType": "ExpressionStatement", + "src": "25227:137:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2680, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2635, + "src": "25409:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2683, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "25423:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Router02_$2822", + "typeString": "contract UniswapV2Router02" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Router02_$2822", + "typeString": "contract UniswapV2Router02" + } + ], + "id": 2682, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25415:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2681, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25415:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25415:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 2679, + "name": "_swapSupportingFeeOnTransferTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2452, + "src": "25374:34:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$", + "typeString": "function (address[] memory,address)" + } + }, + "id": 2685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25374:55:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2686, + "nodeType": "ExpressionStatement", + "src": "25374:55:0" + }, + { + "assignments": [ + 2688 + ], + "declarations": [ + { + "constant": false, + "id": 2688, + "mutability": "mutable", + "name": "amountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2720, + "src": "25439:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2687, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "25439:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2698, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2695, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "25487:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Router02_$2822", + "typeString": "contract UniswapV2Router02" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Router02_$2822", + "typeString": "contract UniswapV2Router02" + } + ], + "id": 2694, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25479:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2693, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25479:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25479:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2690, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "25463:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2689, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 775, + "src": "25456:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$775_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25456:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$775", + "typeString": "contract IERC20" + } + }, + "id": 2692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 736, + "src": "25456:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25456:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "25439:54:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2700, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2688, + "src": "25511:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 2701, + "name": "amountOutMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2632, + "src": "25524:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25511:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54", + "id": 2703, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25538:45:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d4ea67bea551891ab36be726b8e631181246034dffcfd5c0bbfad1e9d1729432", + "typeString": "literal_string \"UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT\"" + }, + "value": "UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d4ea67bea551891ab36be726b8e631181246034dffcfd5c0bbfad1e9d1729432", + "typeString": "literal_string \"UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT\"" + } + ], + "id": 2699, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "25503:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25503:81:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2705, + "nodeType": "ExpressionStatement", + "src": "25503:81:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2710, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2688, + "src": "25615:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2707, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "25600:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2706, + "name": "IWETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 793, + "src": "25594:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IWETH_$793_$", + "typeString": "type(contract IWETH)" + } + }, + "id": 2708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25594:11:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWETH_$793", + "typeString": "contract IWETH" + } + }, + "id": 2709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 792, + "src": "25594:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 2711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25594:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2712, + "nodeType": "ExpressionStatement", + "src": "25594:31:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2716, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "25666:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2717, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2688, + "src": "25670:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2713, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3521, + "src": "25635:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$3521_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 2715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferETH", + "nodeType": "MemberAccess", + "referencedDeclaration": 3520, + "src": "25635:30:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25635:45:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2719, + "nodeType": "ExpressionStatement", + "src": "25635:45:0" + } + ] + }, + "documentation": null, + "functionSelector": "791ac947", + "id": 2721, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 2643, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2639, + "src": "25122:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2644, + "modifierName": { + "argumentTypes": null, + "id": 2642, + "name": "ensure", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 818, + "src": "25115:6:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "25115:16:0" + } + ], + "name": "swapExactTokensForETHSupportingFeeOnTransferTokens", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2641, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "25098:8:0" + }, + "parameters": { + "id": 2640, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2630, + "mutability": "mutable", + "name": "amountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2721, + "src": "24934:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2629, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24934:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2632, + "mutability": "mutable", + "name": "amountOutMin", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2721, + "src": "24957:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2631, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24957:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2635, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2721, + "src": "24984:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2633, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24984:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2634, + "length": null, + "nodeType": "ArrayTypeName", + "src": "24984:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2637, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2721, + "src": "25017:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2636, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25017:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2639, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2721, + "src": "25037:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2638, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "25037:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "24924:132:0" + }, + "returnParameters": { + "id": 2645, + "nodeType": "ParameterList", + "parameters": [], + "src": "25136:0:0" + }, + "scope": 2822, + "src": "24865:822:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "baseFunctions": [ + 563 + ], + "body": { + "id": 2740, + "nodeType": "Block", + "src": "25839:75:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2735, + "name": "amountA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2723, + "src": "25879:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2736, + "name": "reserveA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2725, + "src": "25888:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2737, + "name": "reserveB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2727, + "src": "25898:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2733, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "25856:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 2734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "quote", + "nodeType": "MemberAccess", + "referencedDeclaration": 3076, + "src": "25856:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 2738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25856:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2732, + "id": 2739, + "nodeType": "Return", + "src": "25849:58:0" + } + ] + }, + "documentation": null, + "functionSelector": "ad615dec", + "id": 2741, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "quote", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2729, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "25807:8:0" + }, + "parameters": { + "id": 2728, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2723, + "mutability": "mutable", + "name": "amountA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2741, + "src": "25743:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2722, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "25743:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2725, + "mutability": "mutable", + "name": "reserveA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2741, + "src": "25757:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2724, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "25757:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2727, + "mutability": "mutable", + "name": "reserveB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2741, + "src": "25772:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2726, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "25772:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "25742:44:0" + }, + "returnParameters": { + "id": 2732, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2731, + "mutability": "mutable", + "name": "amountB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2741, + "src": "25825:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2730, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "25825:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "25824:14:0" + }, + "scope": 2822, + "src": "25728:186:0", + "stateMutability": "pure", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 574 + ], + "body": { + "id": 2760, + "nodeType": "Block", + "src": "26088:86:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2755, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2743, + "src": "26135:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2756, + "name": "reserveIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2745, + "src": "26145:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2757, + "name": "reserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2747, + "src": "26156:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2753, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "26105:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 2754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAmountOut", + "nodeType": "MemberAccess", + "referencedDeclaration": 3136, + "src": "26105:29:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 2758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26105:62:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2752, + "id": 2759, + "nodeType": "Return", + "src": "26098:69:0" + } + ] + }, + "documentation": null, + "functionSelector": "054d50d4", + "id": 2761, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAmountOut", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2749, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "26042:8:0" + }, + "parameters": { + "id": 2748, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2743, + "mutability": "mutable", + "name": "amountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2761, + "src": "25942:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2742, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "25942:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2745, + "mutability": "mutable", + "name": "reserveIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2761, + "src": "25957:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2744, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "25957:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2747, + "mutability": "mutable", + "name": "reserveOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2761, + "src": "25973:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2746, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "25973:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "25941:48:0" + }, + "returnParameters": { + "id": 2752, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2751, + "mutability": "mutable", + "name": "amountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2761, + "src": "26068:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2750, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "26068:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "26067:16:0" + }, + "scope": 2822, + "src": "25920:254:0", + "stateMutability": "pure", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 585 + ], + "body": { + "id": 2780, + "nodeType": "Block", + "src": "26347:86:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2775, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2763, + "src": "26393:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2776, + "name": "reserveIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2765, + "src": "26404:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2777, + "name": "reserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2767, + "src": "26415:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2773, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "26364:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 2774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAmountIn", + "nodeType": "MemberAccess", + "referencedDeclaration": 3196, + "src": "26364:28:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 2778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26364:62:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2772, + "id": 2779, + "nodeType": "Return", + "src": "26357:69:0" + } + ] + }, + "documentation": null, + "functionSelector": "85f8c259", + "id": 2781, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAmountIn", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2769, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "26302:8:0" + }, + "parameters": { + "id": 2768, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2763, + "mutability": "mutable", + "name": "amountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2781, + "src": "26201:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2762, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "26201:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2765, + "mutability": "mutable", + "name": "reserveIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2781, + "src": "26217:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2764, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "26217:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2767, + "mutability": "mutable", + "name": "reserveOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2781, + "src": "26233:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2766, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "26233:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "26200:49:0" + }, + "returnParameters": { + "id": 2772, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2771, + "mutability": "mutable", + "name": "amountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2781, + "src": "26328:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2770, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "26328:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "26327:15:0" + }, + "scope": 2822, + "src": "26180:253:0", + "stateMutability": "pure", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 596 + ], + "body": { + "id": 2800, + "nodeType": "Block", + "src": "26605:79:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2795, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "26653:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2796, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2783, + "src": "26662:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2797, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2786, + "src": "26672:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 2793, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "26622:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 2794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAmountsOut", + "nodeType": "MemberAccess", + "referencedDeclaration": 3277, + "src": "26622:30:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)" + } + }, + "id": 2798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26622:55:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "functionReturnParameters": 2792, + "id": 2799, + "nodeType": "Return", + "src": "26615:62:0" + } + ] + }, + "documentation": null, + "functionSelector": "d06ca61f", + "id": 2801, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAmountsOut", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2788, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "26552:8:0" + }, + "parameters": { + "id": 2787, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2783, + "mutability": "mutable", + "name": "amountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2801, + "src": "26462:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2782, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "26462:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2786, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2801, + "src": "26477:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2784, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26477:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2785, + "length": null, + "nodeType": "ArrayTypeName", + "src": "26477:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "26461:38:0" + }, + "returnParameters": { + "id": 2792, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2791, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2801, + "src": "26578:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2789, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "26578:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2790, + "length": null, + "nodeType": "ArrayTypeName", + "src": "26578:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "26577:23:0" + }, + "scope": 2822, + "src": "26439:245:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 607 + ], + "body": { + "id": 2820, + "nodeType": "Block", + "src": "26856:79:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2815, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "26903:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2816, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2803, + "src": "26912:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2817, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2806, + "src": "26923:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 2813, + "name": "UniswapV2Library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "26873:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Library_$3363_$", + "typeString": "type(library UniswapV2Library)" + } + }, + "id": 2814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getAmountsIn", + "nodeType": "MemberAccess", + "referencedDeclaration": 3362, + "src": "26873:29:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)" + } + }, + "id": 2818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26873:55:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "functionReturnParameters": 2812, + "id": 2819, + "nodeType": "Return", + "src": "26866:62:0" + } + ] + }, + "documentation": null, + "functionSelector": "1f00ca74", + "id": 2821, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAmountsIn", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2808, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "26803:8:0" + }, + "parameters": { + "id": 2807, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2803, + "mutability": "mutable", + "name": "amountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2821, + "src": "26712:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2802, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "26712:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2806, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2821, + "src": "26728:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2804, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26728:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2805, + "length": null, + "nodeType": "ArrayTypeName", + "src": "26728:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "26711:39:0" + }, + "returnParameters": { + "id": 2812, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2811, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2821, + "src": "26829:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2809, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "26829:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2810, + "length": null, + "nodeType": "ArrayTypeName", + "src": "26829:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "26828:23:0" + }, + "scope": 2822, + "src": "26690:245:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + } + ], + "scope": 3522, + "src": "8822:18115:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": null, + "fullyImplemented": true, + "id": 2895, + "linearizedBaseContracts": [ + 2895 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2843, + "nodeType": "Block", + "src": "27128:66:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 2836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2832, + "name": "z", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2829, + "src": "27147:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2833, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2824, + "src": "27151:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 2834, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2826, + "src": "27155:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27151:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27147:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2837, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27146:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 2838, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2824, + "src": "27161:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27146:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "64732d6d6174682d6164642d6f766572666c6f77", + "id": 2840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27164:22:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3903056b84ed2aba2be78662dc6c5c99b160cebe9af9bd9493d0fc28ff16f6db", + "typeString": "literal_string \"ds-math-add-overflow\"" + }, + "value": "ds-math-add-overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3903056b84ed2aba2be78662dc6c5c99b160cebe9af9bd9493d0fc28ff16f6db", + "typeString": "literal_string \"ds-math-add-overflow\"" + } + ], + "id": 2831, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "27138:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27138:49:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2842, + "nodeType": "ExpressionStatement", + "src": "27138:49:0" + } + ] + }, + "documentation": null, + "id": 2844, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2827, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2824, + "mutability": "mutable", + "name": "x", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2844, + "src": "27081:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2823, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "27081:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2826, + "mutability": "mutable", + "name": "y", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2844, + "src": "27089:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2825, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "27089:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "27080:16:0" + }, + "returnParameters": { + "id": 2830, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2829, + "mutability": "mutable", + "name": "z", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2844, + "src": "27120:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2828, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "27120:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "27119:8:0" + }, + "scope": 2895, + "src": "27068:126:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2865, + "nodeType": "Block", + "src": "27260:67:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 2858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2854, + "name": "z", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2851, + "src": "27279:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2855, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2846, + "src": "27283:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 2856, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2848, + "src": "27287:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27283:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27279:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2859, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27278:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 2860, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2846, + "src": "27293:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27278:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "64732d6d6174682d7375622d756e646572666c6f77", + "id": 2862, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27296:23:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_03b20b9f6e6e7905f077509fd420fb44afc685f254bcefe49147296e1ba25590", + "typeString": "literal_string \"ds-math-sub-underflow\"" + }, + "value": "ds-math-sub-underflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_03b20b9f6e6e7905f077509fd420fb44afc685f254bcefe49147296e1ba25590", + "typeString": "literal_string \"ds-math-sub-underflow\"" + } + ], + "id": 2853, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "27270:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27270:50:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2864, + "nodeType": "ExpressionStatement", + "src": "27270:50:0" + } + ] + }, + "documentation": null, + "id": 2866, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2849, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2846, + "mutability": "mutable", + "name": "x", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2866, + "src": "27213:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2845, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "27213:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2848, + "mutability": "mutable", + "name": "y", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2866, + "src": "27221:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2847, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "27221:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "27212:16:0" + }, + "returnParameters": { + "id": 2852, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2851, + "mutability": "mutable", + "name": "z", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2866, + "src": "27252:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2850, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "27252:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "27251:8:0" + }, + "scope": 2895, + "src": "27200:127:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2893, + "nodeType": "Block", + "src": "27393:80:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2878, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2876, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2870, + "src": "27411:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2877, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27416:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "27411:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2888, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 2883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2879, + "name": "z", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2873, + "src": "27422:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2880, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2868, + "src": "27426:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 2881, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2870, + "src": "27430:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27426:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27422:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2884, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27421:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 2885, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2870, + "src": "27435:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27421:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2887, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2868, + "src": "27440:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27421:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "27411:30:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "64732d6d6174682d6d756c2d6f766572666c6f77", + "id": 2890, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27443:22:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_25a0ef6406c6af6852555433653ce478274cd9f03a5dec44d001868a76b3bfdd", + "typeString": "literal_string \"ds-math-mul-overflow\"" + }, + "value": "ds-math-mul-overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_25a0ef6406c6af6852555433653ce478274cd9f03a5dec44d001868a76b3bfdd", + "typeString": "literal_string \"ds-math-mul-overflow\"" + } + ], + "id": 2875, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "27403:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27403:63:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2892, + "nodeType": "ExpressionStatement", + "src": "27403:63:0" + } + ] + }, + "documentation": null, + "id": 2894, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2871, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2868, + "mutability": "mutable", + "name": "x", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2894, + "src": "27346:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2867, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "27346:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2870, + "mutability": "mutable", + "name": "y", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2894, + "src": "27354:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2869, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "27354:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "27345:16:0" + }, + "returnParameters": { + "id": 2874, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2873, + "mutability": "mutable", + "name": "z", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2894, + "src": "27385:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2872, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "27385:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "27384:8:0" + }, + "scope": 2895, + "src": "27333:140:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 3522, + "src": "27045:430:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": null, + "fullyImplemented": true, + "id": 3363, + "linearizedBaseContracts": [ + 3363 + ], + "name": "UniswapV2Library", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 2898, + "libraryName": { + "contractScope": null, + "id": 2896, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2895, + "src": "27514:8:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$2895", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "27508:24:0", + "typeName": { + "id": 2897, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "27527:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "body": { + "id": 2941, + "nodeType": "Block", + "src": "27745:238:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2910, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2900, + "src": "27763:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 2911, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2902, + "src": "27773:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "27763:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553", + "id": 2913, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27781:39:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4ddc3ca35a8b7ccaa016ab70252fdf3396ded4f4fd8375f95b1e9d99790fcdca", + "typeString": "literal_string \"UniswapV2Library: IDENTICAL_ADDRESSES\"" + }, + "value": "UniswapV2Library: IDENTICAL_ADDRESSES" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4ddc3ca35a8b7ccaa016ab70252fdf3396ded4f4fd8375f95b1e9d99790fcdca", + "typeString": "literal_string \"UniswapV2Library: IDENTICAL_ADDRESSES\"" + } + ], + "id": 2909, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "27755:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27755:66:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2915, + "nodeType": "ExpressionStatement", + "src": "27755:66:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 2929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 2916, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2905, + "src": "27832:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2917, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2907, + "src": "27840:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 2918, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "27831:16:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2919, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2900, + "src": "27850:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 2920, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2902, + "src": "27859:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "27850:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 2925, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2902, + "src": "27888:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2926, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2900, + "src": "27896:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 2927, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27887:16:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "id": 2928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "27850:53:0", + "trueExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 2922, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2900, + "src": "27869:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2923, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2902, + "src": "27877:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 2924, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27868:16:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "src": "27831:72:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2930, + "nodeType": "ExpressionStatement", + "src": "27831:72:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2932, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2905, + "src": "27921:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2935, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27939:1:0", + "subdenomination": null, + "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": 2934, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27931:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2933, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27931:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2936, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27931:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "27921:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e697377617056324c6962726172793a205a45524f5f41444452455353", + "id": 2938, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27943:32:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_db0dda5a73ac3122e17df097fa2cbce2c5161b45d20c7d6cf363d3b147392c83", + "typeString": "literal_string \"UniswapV2Library: ZERO_ADDRESS\"" + }, + "value": "UniswapV2Library: ZERO_ADDRESS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_db0dda5a73ac3122e17df097fa2cbce2c5161b45d20c7d6cf363d3b147392c83", + "typeString": "literal_string \"UniswapV2Library: ZERO_ADDRESS\"" + } + ], + "id": 2931, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "27913:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27913:63:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2940, + "nodeType": "ExpressionStatement", + "src": "27913:63:0" + } + ] + }, + "documentation": null, + "id": 2942, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sortTokens", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2903, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2900, + "mutability": "mutable", + "name": "tokenA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2942, + "src": "27658:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2899, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27658:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2902, + "mutability": "mutable", + "name": "tokenB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2942, + "src": "27674:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2901, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27674:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "27657:32:0" + }, + "returnParameters": { + "id": 2908, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2905, + "mutability": "mutable", + "name": "token0", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2942, + "src": "27713:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2904, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27713:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2907, + "mutability": "mutable", + "name": "token1", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2942, + "src": "27729:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2906, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27729:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "27712:32:0" + }, + "scope": 3363, + "src": "27638:345:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2986, + "nodeType": "Block", + "src": "28175:367:0", + "statements": [ + { + "assignments": [ + 2954, + 2956 + ], + "declarations": [ + { + "constant": false, + "id": 2954, + "mutability": "mutable", + "name": "token0", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2986, + "src": "28186:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2953, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28186:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2956, + "mutability": "mutable", + "name": "token1", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2986, + "src": "28202:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2955, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28202:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2961, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2958, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2946, + "src": "28231:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2959, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2948, + "src": "28239:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2957, + "name": "sortTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2942, + "src": "28220:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$", + "typeString": "function (address,address) pure returns (address,address)" + } + }, + "id": 2960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28220:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "28185:61:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 2984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2962, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2951, + "src": "28256:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "ff", + "id": 2970, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28320:7:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9", + "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)" + }, + "value": null + }, + { + "argumentTypes": null, + "id": 2971, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2944, + "src": "28345:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2975, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2954, + "src": "28397:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2976, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2956, + "src": "28405:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2973, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "28380:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28380:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28380:32:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2972, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "28370:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28370:43:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "hexValue": "96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f", + "id": 2979, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28431:69:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_66d76495d34dc7613deaf40ec013ef0fbd2f03604ae509b7212971c455edfb7a", + "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)" + }, + "value": null + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9", + "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_stringliteral_66d76495d34dc7613deaf40ec013ef0fbd2f03604ae509b7212971c455edfb7a", + "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)" + } + ], + "expression": { + "argumentTypes": null, + "id": 2968, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "28286:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2969, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28286:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28286:246:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2967, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "28276:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28276:257:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2966, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28271:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2965, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "28271:4:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28271:263:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2964, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28263:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2963, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28263:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28263:272:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "28256:279:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2985, + "nodeType": "ExpressionStatement", + "src": "28256:279:0" + } + ] + }, + "documentation": null, + "id": 2987, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "pairFor", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2949, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2944, + "mutability": "mutable", + "name": "factory", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2987, + "src": "28089:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2943, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28089:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2946, + "mutability": "mutable", + "name": "tokenA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2987, + "src": "28106:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2945, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28106:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2948, + "mutability": "mutable", + "name": "tokenB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2987, + "src": "28122:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2947, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28122:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "28088:49:0" + }, + "returnParameters": { + "id": 2952, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2951, + "mutability": "mutable", + "name": "pair", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2987, + "src": "28161:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2950, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28161:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "28160:14:0" + }, + "scope": 3363, + "src": "28072:470:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3036, + "nodeType": "Block", + "src": "28720:264:0", + "statements": [ + { + "assignments": [ + 3001, + null + ], + "declarations": [ + { + "constant": false, + "id": 3001, + "mutability": "mutable", + "name": "token0", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3036, + "src": "28731:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3000, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28731:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 3006, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3003, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2991, + "src": "28761:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3004, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2993, + "src": "28769:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3002, + "name": "sortTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2942, + "src": "28750:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$", + "typeString": "function (address,address) pure returns (address,address)" + } + }, + "id": 3005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28750:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "28730:46:0" + }, + { + "assignments": [ + 3008, + 3010, + null + ], + "declarations": [ + { + "constant": false, + "id": 3008, + "mutability": "mutable", + "name": "reserve0", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3036, + "src": "28787:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3007, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "28787:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3010, + "mutability": "mutable", + "name": "reserve1", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3036, + "src": "28802:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3009, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "28802:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 3020, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3013, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2989, + "src": "28843:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3014, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2991, + "src": "28852:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3015, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2993, + "src": "28860:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3012, + "name": "pairFor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "28835:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address,address) pure returns (address)" + } + }, + "id": 3016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28835:32:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3011, + "name": "IUniswapV2Pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "28820:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$302_$", + "typeString": "type(contract IUniswapV2Pair)" + } + }, + "id": 3017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28820:48:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Pair_$302", + "typeString": "contract IUniswapV2Pair" + } + }, + "id": 3018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getReserves", + "nodeType": "MemberAccess", + "referencedDeclaration": 244, + "src": "28820:60:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$", + "typeString": "function () view external returns (uint112,uint112,uint32)" + } + }, + "id": 3019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28820:62:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$", + "typeString": "tuple(uint112,uint112,uint32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "28786:96:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 3034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 3021, + "name": "reserveA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2996, + "src": "28893:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3022, + "name": "reserveB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2998, + "src": "28903:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3023, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "28892:20:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3024, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2991, + "src": "28915:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 3025, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3001, + "src": "28925:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "28915:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 3030, + "name": "reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3010, + "src": "28958:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3031, + "name": "reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3008, + "src": "28968:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3032, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28957:20:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "id": 3033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "28915:62:0", + "trueExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 3027, + "name": "reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3008, + "src": "28935:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3028, + "name": "reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3010, + "src": "28945:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3029, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28934:20:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "28892:85:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3035, + "nodeType": "ExpressionStatement", + "src": "28892:85:0" + } + ] + }, + "documentation": null, + "id": 3037, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getReserves", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2994, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2989, + "mutability": "mutable", + "name": "factory", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3037, + "src": "28618:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2988, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28618:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2991, + "mutability": "mutable", + "name": "tokenA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3037, + "src": "28635:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2990, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28635:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2993, + "mutability": "mutable", + "name": "tokenB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3037, + "src": "28651:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2992, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28651:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "28617:49:0" + }, + "returnParameters": { + "id": 2999, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2996, + "mutability": "mutable", + "name": "reserveA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3037, + "src": "28690:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2995, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "28690:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2998, + "mutability": "mutable", + "name": "reserveB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3037, + "src": "28705:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2997, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "28705:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "28689:30:0" + }, + "scope": 3363, + "src": "28597:387:0", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3075, + "nodeType": "Block", + "src": "29190:221:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3049, + "name": "amountA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3039, + "src": "29208:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3050, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29218:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "29208:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e697377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54", + "id": 3052, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29221:39:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b3ea0cd729028efbc737ad3cde1d4d854e6f2c136b354fbaea9389d68bc3a146", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_AMOUNT\"" + }, + "value": "UniswapV2Library: INSUFFICIENT_AMOUNT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b3ea0cd729028efbc737ad3cde1d4d854e6f2c136b354fbaea9389d68bc3a146", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_AMOUNT\"" + } + ], + "id": 3048, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "29200:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3053, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29200:61:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3054, + "nodeType": "ExpressionStatement", + "src": "29200:61:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3056, + "name": "reserveA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3041, + "src": "29279:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3057, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29290:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "29279:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3059, + "name": "reserveB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3043, + "src": "29295:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3060, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29306:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "29295:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "29279:28:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459", + "id": 3063, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29309:42:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7e8d6b265173dbbd87b3b9e2bf4238bea6caf2b2bbeb63f859a738aec9e761c8", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + }, + "value": "UniswapV2Library: INSUFFICIENT_LIQUIDITY" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7e8d6b265173dbbd87b3b9e2bf4238bea6caf2b2bbeb63f859a738aec9e761c8", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + } + ], + "id": 3055, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "29271:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29271:81:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3065, + "nodeType": "ExpressionStatement", + "src": "29271:81:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 3073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3066, + "name": "amountB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3046, + "src": "29362:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3069, + "name": "reserveB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3043, + "src": "29384:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3067, + "name": "amountA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3039, + "src": "29372:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 2894, + "src": "29372:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 3070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29372:21:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 3071, + "name": "reserveA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3041, + "src": "29396:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29372:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29362:42:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3074, + "nodeType": "ExpressionStatement", + "src": "29362:42:0" + } + ] + }, + "documentation": null, + "id": 3076, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "quote", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3044, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3039, + "mutability": "mutable", + "name": "amountA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3076, + "src": "29109:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3038, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "29109:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3041, + "mutability": "mutable", + "name": "reserveA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3076, + "src": "29123:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3040, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "29123:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3043, + "mutability": "mutable", + "name": "reserveB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3076, + "src": "29138:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3042, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "29138:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "29108:44:0" + }, + "returnParameters": { + "id": 3047, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3046, + "mutability": "mutable", + "name": "amountB", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3076, + "src": "29176:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3045, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "29176:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "29175:14:0" + }, + "scope": 3363, + "src": "29094:317:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3135, + "nodeType": "Block", + "src": "29639:401:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3090, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3088, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3078, + "src": "29657:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3089, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29668:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "29657:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54", + "id": 3091, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29671:45:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ec21b006eb37ef20d0f4abcabd34de6854fa68af48294244e0263dc05c1dbbae", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT\"" + }, + "value": "UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ec21b006eb37ef20d0f4abcabd34de6854fa68af48294244e0263dc05c1dbbae", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT\"" + } + ], + "id": 3087, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "29649:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29649:68:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3093, + "nodeType": "ExpressionStatement", + "src": "29649:68:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3097, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3095, + "name": "reserveIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3080, + "src": "29735:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3096, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29747:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "29735:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3098, + "name": "reserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3082, + "src": "29752:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3099, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29765:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "29752:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "29735:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459", + "id": 3102, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29768:42:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7e8d6b265173dbbd87b3b9e2bf4238bea6caf2b2bbeb63f859a738aec9e761c8", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + }, + "value": "UniswapV2Library: INSUFFICIENT_LIQUIDITY" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7e8d6b265173dbbd87b3b9e2bf4238bea6caf2b2bbeb63f859a738aec9e761c8", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + } + ], + "id": 3094, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "29727:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29727:84:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3104, + "nodeType": "ExpressionStatement", + "src": "29727:84:0" + }, + { + "assignments": [ + 3106 + ], + "declarations": [ + { + "constant": false, + "id": 3106, + "mutability": "mutable", + "name": "amountInWithFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3135, + "src": "29821:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3105, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "29821:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3111, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "393937", + "id": 3109, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29857:3:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_997_by_1", + "typeString": "int_const 997" + }, + "value": "997" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_997_by_1", + "typeString": "int_const 997" + } + ], + "expression": { + "argumentTypes": null, + "id": 3107, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3078, + "src": "29844:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 2894, + "src": "29844:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 3110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29844:17:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "29821:40:0" + }, + { + "assignments": [ + 3113 + ], + "declarations": [ + { + "constant": false, + "id": 3113, + "mutability": "mutable", + "name": "numerator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3135, + "src": "29871:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3112, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "29871:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3118, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3116, + "name": "reserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3082, + "src": "29908:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3114, + "name": "amountInWithFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3106, + "src": "29888:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 2894, + "src": "29888:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 3117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29888:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "29871:48:0" + }, + { + "assignments": [ + 3120 + ], + "declarations": [ + { + "constant": false, + "id": 3120, + "mutability": "mutable", + "name": "denominator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3135, + "src": "29929:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3119, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "29929:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3128, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3126, + "name": "amountInWithFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3106, + "src": "29972:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31303030", + "id": 3123, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29962:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + }, + "value": "1000" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + } + ], + "expression": { + "argumentTypes": null, + "id": 3121, + "name": "reserveIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3080, + "src": "29948:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 2894, + "src": "29948:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 3124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29948:19:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2844, + "src": "29948:23:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 3127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29948:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "29929:59:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 3133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3129, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3085, + "src": "29998:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3130, + "name": "numerator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3113, + "src": "30010:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 3131, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3120, + "src": "30022:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30010:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29998:35:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3134, + "nodeType": "ExpressionStatement", + "src": "29998:35:0" + } + ] + }, + "documentation": null, + "id": 3136, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAmountOut", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3083, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3078, + "mutability": "mutable", + "name": "amountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3136, + "src": "29552:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3077, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "29552:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3080, + "mutability": "mutable", + "name": "reserveIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3136, + "src": "29567:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3079, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "29567:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3082, + "mutability": "mutable", + "name": "reserveOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3136, + "src": "29583:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3081, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "29583:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "29551:48:0" + }, + "returnParameters": { + "id": 3086, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3085, + "mutability": "mutable", + "name": "amountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3136, + "src": "29623:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3084, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "29623:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "29622:16:0" + }, + "scope": 3363, + "src": "29530:510:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3195, + "nodeType": "Block", + "src": "30266:358:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3148, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3138, + "src": "30284:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30296:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "30284:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54", + "id": 3151, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30299:46:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_35fb781059090c30aacad20e29b2e40e67f217617fc46f86031ed4eb14923a82", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT\"" + }, + "value": "UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_35fb781059090c30aacad20e29b2e40e67f217617fc46f86031ed4eb14923a82", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT\"" + } + ], + "id": 3147, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "30276:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30276:70:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3153, + "nodeType": "ExpressionStatement", + "src": "30276:70:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3155, + "name": "reserveIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3140, + "src": "30364:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30376:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "30364:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3158, + "name": "reserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3142, + "src": "30381:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3159, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30394:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "30381:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "30364:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459", + "id": 3162, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30397:42:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7e8d6b265173dbbd87b3b9e2bf4238bea6caf2b2bbeb63f859a738aec9e761c8", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + }, + "value": "UniswapV2Library: INSUFFICIENT_LIQUIDITY" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7e8d6b265173dbbd87b3b9e2bf4238bea6caf2b2bbeb63f859a738aec9e761c8", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + } + ], + "id": 3154, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "30356:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30356:84:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3164, + "nodeType": "ExpressionStatement", + "src": "30356:84:0" + }, + { + "assignments": [ + 3166 + ], + "declarations": [ + { + "constant": false, + "id": 3166, + "mutability": "mutable", + "name": "numerator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3195, + "src": "30450:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3165, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "30450:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3174, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31303030", + "id": 3172, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30496:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + }, + "value": "1000" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3169, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3138, + "src": "30481:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3167, + "name": "reserveIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3140, + "src": "30467:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 2894, + "src": "30467:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 3170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30467:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 2894, + "src": "30467:28:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 3173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30467:34:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "30450:51:0" + }, + { + "assignments": [ + 3176 + ], + "declarations": [ + { + "constant": false, + "id": 3176, + "mutability": "mutable", + "name": "denominator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3195, + "src": "30511:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3175, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "30511:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3184, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "393937", + "id": 3182, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30560:3:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_997_by_1", + "typeString": "int_const 997" + }, + "value": "997" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_997_by_1", + "typeString": "int_const 997" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3179, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3138, + "src": "30545:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3177, + "name": "reserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3142, + "src": "30530:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2866, + "src": "30530:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 3180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30530:25:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 2894, + "src": "30530:29:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 3183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30530:34:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "30511:53:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 3193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3185, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3145, + "src": "30574:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 3191, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30615:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3186, + "name": "numerator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3166, + "src": "30586:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 3187, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3176, + "src": "30598:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30586:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3189, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "30585:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2844, + "src": "30585:29:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 3192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30585:32:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30574:43:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3194, + "nodeType": "ExpressionStatement", + "src": "30574:43:0" + } + ] + }, + "documentation": null, + "id": 3196, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAmountIn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3143, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3138, + "mutability": "mutable", + "name": "amountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3196, + "src": "30179:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3137, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "30179:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3140, + "mutability": "mutable", + "name": "reserveIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3196, + "src": "30195:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3139, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "30195:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3142, + "mutability": "mutable", + "name": "reserveOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3196, + "src": "30211:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3141, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "30211:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30178:49:0" + }, + "returnParameters": { + "id": 3146, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3145, + "mutability": "mutable", + "name": "amountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3196, + "src": "30251:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3144, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "30251:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30250:15:0" + }, + "scope": 3363, + "src": "30158:466:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3276, + "nodeType": "Block", + "src": "30827:379:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3210, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3203, + "src": "30845:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "30845:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 3212, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30860:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "30845:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e697377617056324c6962726172793a20494e56414c49445f50415448", + "id": 3214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30863:32:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_75377551ce0fccd63c5f6648306f9f916607f3ae50cffb38430d29ad981b8222", + "typeString": "literal_string \"UniswapV2Library: INVALID_PATH\"" + }, + "value": "UniswapV2Library: INVALID_PATH" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_75377551ce0fccd63c5f6648306f9f916607f3ae50cffb38430d29ad981b8222", + "typeString": "literal_string \"UniswapV2Library: INVALID_PATH\"" + } + ], + "id": 3209, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "30837:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30837:59:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3216, + "nodeType": "ExpressionStatement", + "src": "30837:59:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 3224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3217, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3207, + "src": "30906:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3221, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3203, + "src": "30927:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "30927:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3220, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "30916:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 3218, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "30920:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3219, + "length": null, + "nodeType": "ArrayTypeName", + "src": "30920:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 3223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30916:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "30906:33:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3225, + "nodeType": "ExpressionStatement", + "src": "30906:33:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 3230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3226, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3207, + "src": "30949:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3228, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3227, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30957:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "30949:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 3229, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3200, + "src": "30962:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30949:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3231, + "nodeType": "ExpressionStatement", + "src": "30949:21:0" + }, + { + "body": { + "id": 3274, + "nodeType": "Block", + "src": "31019:181:0", + "statements": [ + { + "assignments": [ + 3245, + 3247 + ], + "declarations": [ + { + "constant": false, + "id": 3245, + "mutability": "mutable", + "name": "reserveIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3274, + "src": "31034:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3244, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "31034:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3247, + "mutability": "mutable", + "name": "reserveOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3274, + "src": "31050:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3246, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "31050:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3259, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3249, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3198, + "src": "31081:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3250, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3203, + "src": "31090:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3252, + "indexExpression": { + "argumentTypes": null, + "id": 3251, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3233, + "src": "31095:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31090:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3253, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3203, + "src": "31099:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3257, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3254, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3233, + "src": "31104:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 3255, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31108:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "31104:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31099:11:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3248, + "name": "getReserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3037, + "src": "31069:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (address,address,address) view returns (uint256,uint256)" + } + }, + "id": 3258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31069:42:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31033:78:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 3272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3260, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3207, + "src": "31125:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3264, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3261, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3233, + "src": "31133:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 3262, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31137:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "31133:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "31125:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3266, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3207, + "src": "31155:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3268, + "indexExpression": { + "argumentTypes": null, + "id": 3267, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3233, + "src": "31163:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31155:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3269, + "name": "reserveIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3245, + "src": "31167:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3270, + "name": "reserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3247, + "src": "31178:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3265, + "name": "getAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3136, + "src": "31142:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 3271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31142:47:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31125:64:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3273, + "nodeType": "ExpressionStatement", + "src": "31125:64:0" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3235, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3233, + "src": "30993:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3236, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3203, + "src": "30997:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "30997:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 3238, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31011:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "30997:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30993:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3275, + "initializationExpression": { + "assignments": [ + 3233 + ], + "declarations": [ + { + "constant": false, + "id": 3233, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3275, + "src": "30985:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3232, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "30985:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3234, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "30985:6:0" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 3242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "31014:3:0", + "subExpression": { + "argumentTypes": null, + "id": 3241, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3233, + "src": "31014:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3243, + "nodeType": "ExpressionStatement", + "src": "31014:3:0" + }, + "nodeType": "ForStatement", + "src": "30980:220:0" + } + ] + }, + "documentation": null, + "id": 3277, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAmountsOut", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3204, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3198, + "mutability": "mutable", + "name": "factory", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3277, + "src": "30726:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3197, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30726:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3200, + "mutability": "mutable", + "name": "amountIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3277, + "src": "30743:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3199, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "30743:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3203, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3277, + "src": "30758:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 3201, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30758:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3202, + "length": null, + "nodeType": "ArrayTypeName", + "src": "30758:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30725:55:0" + }, + "returnParameters": { + "id": 3208, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3207, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3277, + "src": "30804:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 3205, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "30804:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3206, + "length": null, + "nodeType": "ArrayTypeName", + "src": "30804:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30803:23:0" + }, + "scope": 3363, + "src": "30703:503:0", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3361, + "nodeType": "Block", + "src": "31408:400:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3291, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3284, + "src": "31426:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "31426:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 3293, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31441:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "31426:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "556e697377617056324c6962726172793a20494e56414c49445f50415448", + "id": 3295, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31444:32:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_75377551ce0fccd63c5f6648306f9f916607f3ae50cffb38430d29ad981b8222", + "typeString": "literal_string \"UniswapV2Library: INVALID_PATH\"" + }, + "value": "UniswapV2Library: INVALID_PATH" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_75377551ce0fccd63c5f6648306f9f916607f3ae50cffb38430d29ad981b8222", + "typeString": "literal_string \"UniswapV2Library: INVALID_PATH\"" + } + ], + "id": 3290, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "31418:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31418:59:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3297, + "nodeType": "ExpressionStatement", + "src": "31418:59:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 3305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3298, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3288, + "src": "31487:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3302, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3284, + "src": "31508:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "31508:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3301, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "31497:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 3299, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "31501:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3300, + "length": null, + "nodeType": "ArrayTypeName", + "src": "31501:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 3304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31497:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "31487:33:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3306, + "nodeType": "ExpressionStatement", + "src": "31487:33:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 3314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3307, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3288, + "src": "31530:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3312, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3308, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3288, + "src": "31538:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "31538:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 3310, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31555:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "31538:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "31530:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 3313, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3281, + "src": "31560:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31530:39:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3315, + "nodeType": "ExpressionStatement", + "src": "31530:39:0" + }, + { + "body": { + "id": 3359, + "nodeType": "Block", + "src": "31622:180:0", + "statements": [ + { + "assignments": [ + 3330, + 3332 + ], + "declarations": [ + { + "constant": false, + "id": 3330, + "mutability": "mutable", + "name": "reserveIn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3359, + "src": "31637:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3329, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "31637:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3332, + "mutability": "mutable", + "name": "reserveOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3359, + "src": "31653:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3331, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "31653:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3344, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3334, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3279, + "src": "31684:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3335, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3284, + "src": "31693:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3339, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3336, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3317, + "src": "31698:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 3337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31702:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "31698:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31693:11:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3340, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3284, + "src": "31706:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3342, + "indexExpression": { + "argumentTypes": null, + "id": 3341, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3317, + "src": "31711:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31706:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3333, + "name": "getReserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3037, + "src": "31672:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (address,address,address) view returns (uint256,uint256)" + } + }, + "id": 3343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31672:42:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31636:78:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 3357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3345, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3288, + "src": "31728:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3349, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3346, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3317, + "src": "31736:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 3347, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31740:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "31736:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "31728:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3351, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3288, + "src": "31757:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3353, + "indexExpression": { + "argumentTypes": null, + "id": 3352, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3317, + "src": "31765:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31757:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3354, + "name": "reserveIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3330, + "src": "31769:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3355, + "name": "reserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3332, + "src": "31780:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3350, + "name": "getAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3196, + "src": "31745:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 3356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31745:46:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31728:63:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3358, + "nodeType": "ExpressionStatement", + "src": "31728:63:0" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3323, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3317, + "src": "31610:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3324, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31614:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "31610:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3360, + "initializationExpression": { + "assignments": [ + 3317 + ], + "declarations": [ + { + "constant": false, + "id": 3317, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3360, + "src": "31584:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3316, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "31584:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3322, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3318, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3284, + "src": "31593:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "31593:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 3320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31607:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "31593:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31584:24:0" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 3327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "31617:3:0", + "subExpression": { + "argumentTypes": null, + "id": 3326, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3317, + "src": "31617:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3328, + "nodeType": "ExpressionStatement", + "src": "31617:3:0" + }, + "nodeType": "ForStatement", + "src": "31579:223:0" + } + ] + }, + "documentation": null, + "id": 3362, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAmountsIn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3285, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3279, + "mutability": "mutable", + "name": "factory", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3362, + "src": "31306:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3278, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31306:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3281, + "mutability": "mutable", + "name": "amountOut", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3362, + "src": "31323:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3280, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "31323:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3284, + "mutability": "mutable", + "name": "path", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3362, + "src": "31339:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 3282, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31339:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3283, + "length": null, + "nodeType": "ArrayTypeName", + "src": "31339:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "31305:56:0" + }, + "returnParameters": { + "id": 3289, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3288, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3362, + "src": "31385:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 3286, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "31385:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3287, + "length": null, + "nodeType": "ArrayTypeName", + "src": "31385:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "31384:23:0" + }, + "scope": 3363, + "src": "31284:524:0", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 3522, + "src": "27477:4333:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": null, + "fullyImplemented": true, + "id": 3521, + "linearizedBaseContracts": [ + 3521 + ], + "name": "TransferHelper", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3405, + "nodeType": "Block", + "src": "32021:285:0", + "statements": [ + { + "assignments": [ + 3373, + 3375 + ], + "declarations": [ + { + "constant": false, + "id": 3373, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3405, + "src": "32097:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3372, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "32097:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3375, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3405, + "src": "32111:17:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3374, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "32111:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3385, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783039356561376233", + "id": 3380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32166:10:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_157198259_by_1", + "typeString": "int_const 157198259" + }, + "value": "0x095ea7b3" + }, + { + "argumentTypes": null, + "id": 3381, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3367, + "src": "32178:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3382, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3369, + "src": "32182:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_157198259_by_1", + "typeString": "int_const 157198259" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3378, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "32143:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 3379, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32143:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 3383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32143:45:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3376, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3365, + "src": "32132:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32132:10:0", + "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": 3384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32132:57:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "32096:93:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3387, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3373, + "src": "32207:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3388, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3375, + "src": "32219:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 3389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32219:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3390, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32234:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "32219:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3394, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3375, + "src": "32250:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 3396, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "32257:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + }, + "typeName": { + "id": 3395, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "32257:4:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + } + ], + "id": 3397, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "32256:6:0", + "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": { + "argumentTypes": null, + "id": 3392, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "32239:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 3393, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32239:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32239:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "32219:44:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 3400, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "32218:46:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "32207:57:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5472616e7366657248656c7065723a20415050524f56455f4641494c4544", + "id": 3402, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32266:32:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e27be550bb5367a6d8a8b2dd8b5c52ee0710d2d5b26de50062207957ab5bd00", + "typeString": "literal_string \"TransferHelper: APPROVE_FAILED\"" + }, + "value": "TransferHelper: APPROVE_FAILED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e27be550bb5367a6d8a8b2dd8b5c52ee0710d2d5b26de50062207957ab5bd00", + "typeString": "literal_string \"TransferHelper: APPROVE_FAILED\"" + } + ], + "id": 3386, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "32199:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32199:100:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3404, + "nodeType": "ExpressionStatement", + "src": "32199:100:0" + } + ] + }, + "documentation": null, + "id": 3406, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeApprove", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3370, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3365, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3406, + "src": "31973:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3364, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31973:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3367, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3406, + "src": "31988:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3366, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31988:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3369, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3406, + "src": "32000:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3368, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "32000:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "31972:39:0" + }, + "returnParameters": { + "id": 3371, + "nodeType": "ParameterList", + "parameters": [], + "src": "32021:0:0" + }, + "scope": 3521, + "src": "31952:354:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3448, + "nodeType": "Block", + "src": "32382:287:0", + "statements": [ + { + "assignments": [ + 3416, + 3418 + ], + "declarations": [ + { + "constant": false, + "id": 3416, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3448, + "src": "32459:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3415, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "32459:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3418, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3448, + "src": "32473:17:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3417, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "32473:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3428, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30786139303539636262", + "id": 3423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32528:10:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2835717307_by_1", + "typeString": "int_const 2835717307" + }, + "value": "0xa9059cbb" + }, + { + "argumentTypes": null, + "id": 3424, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3410, + "src": "32540:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3425, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3412, + "src": "32544:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_2835717307_by_1", + "typeString": "int_const 2835717307" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3421, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "32505:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 3422, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32505:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 3426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32505:45:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3419, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3408, + "src": "32494:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32494:10:0", + "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": 3427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32494:57:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "32458:93:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3430, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3416, + "src": "32569:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3431, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3418, + "src": "32581:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 3432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32581:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3433, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32596:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "32581:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3437, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3418, + "src": "32612:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 3439, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "32619:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + }, + "typeName": { + "id": 3438, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "32619:4:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + } + ], + "id": 3440, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "32618:6:0", + "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": { + "argumentTypes": null, + "id": 3435, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "32601:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 3436, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32601:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32601:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "32581:44:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 3443, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "32580:46:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "32569:57:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5472616e7366657248656c7065723a205452414e534645525f4641494c4544", + "id": 3445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32628:33:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426", + "typeString": "literal_string \"TransferHelper: TRANSFER_FAILED\"" + }, + "value": "TransferHelper: TRANSFER_FAILED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426", + "typeString": "literal_string \"TransferHelper: TRANSFER_FAILED\"" + } + ], + "id": 3429, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "32561:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32561:101:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3447, + "nodeType": "ExpressionStatement", + "src": "32561:101:0" + } + ] + }, + "documentation": null, + "id": 3449, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3413, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3408, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3449, + "src": "32334:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3407, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32334:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3410, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3449, + "src": "32349:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3409, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32349:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3412, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3449, + "src": "32361:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3411, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "32361:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32333:39:0" + }, + "returnParameters": { + "id": 3414, + "nodeType": "ParameterList", + "parameters": [], + "src": "32382:0:0" + }, + "scope": 3521, + "src": "32312:357:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3494, + "nodeType": "Block", + "src": "32763:310:0", + "statements": [ + { + "assignments": [ + 3461, + 3463 + ], + "declarations": [ + { + "constant": false, + "id": 3461, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3494, + "src": "32852:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3460, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "32852:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3463, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3494, + "src": "32866:17:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3462, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "32866:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3474, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783233623837326464", + "id": 3468, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32921:10:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_599290589_by_1", + "typeString": "int_const 599290589" + }, + "value": "0x23b872dd" + }, + { + "argumentTypes": null, + "id": 3469, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3453, + "src": "32933:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3470, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3455, + "src": "32939:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3471, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3457, + "src": "32943:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_599290589_by_1", + "typeString": "int_const 599290589" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3466, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "32898:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 3467, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32898:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 3472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32898:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3464, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3451, + "src": "32887:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32887:10:0", + "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": 3473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32887:63:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "32851:99:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3476, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3461, + "src": "32968:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3477, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3463, + "src": "32980:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 3478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32980:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3479, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32995:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "32980:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3483, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3463, + "src": "33011:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 3485, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33018:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + }, + "typeName": { + "id": 3484, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "33018:4:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + } + ], + "id": 3486, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "33017:6:0", + "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": { + "argumentTypes": null, + "id": 3481, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "33000:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 3482, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "33000:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33000:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "32980:44:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 3489, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "32979:46:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "32968:57:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544", + "id": 3491, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33027:38:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18", + "typeString": "literal_string \"TransferHelper: TRANSFER_FROM_FAILED\"" + }, + "value": "TransferHelper: TRANSFER_FROM_FAILED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18", + "typeString": "literal_string \"TransferHelper: TRANSFER_FROM_FAILED\"" + } + ], + "id": 3475, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "32960:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32960:106:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3493, + "nodeType": "ExpressionStatement", + "src": "32960:106:0" + } + ] + }, + "documentation": null, + "id": 3495, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3458, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3451, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3495, + "src": "32701:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3450, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32701:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3453, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3495, + "src": "32716:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3452, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32716:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3455, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3495, + "src": "32730:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3454, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32730:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3457, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3495, + "src": "32742:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3456, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "32742:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32700:53:0" + }, + "returnParameters": { + "id": 3459, + "nodeType": "ParameterList", + "parameters": [], + "src": "32763:0:0" + }, + "scope": 3521, + "src": "32675:398:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3519, + "nodeType": "Block", + "src": "33137:134:0", + "statements": [ + { + "assignments": [ + 3503, + null + ], + "declarations": [ + { + "constant": false, + "id": 3503, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3519, + "src": "33148:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3502, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "33148:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 3513, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 3510, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33196:1:0", + "subdenomination": null, + "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": 3509, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "33186:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 3508, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "33190:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 3511, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33186:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3504, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3497, + "src": "33165:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "33165:7:0", + "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": 3507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "argumentTypes": null, + "id": 3506, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3499, + "src": "33179:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "33165:20:0", + "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": 3512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33165:34:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "33147:52:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3515, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3503, + "src": "33217:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544", + "id": 3516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33226:37:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d290720a9b119bbeaf8124eb771e119cbea85a2f430cbb39a8fead2398528881", + "typeString": "literal_string \"TransferHelper: ETH_TRANSFER_FAILED\"" + }, + "value": "TransferHelper: ETH_TRANSFER_FAILED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d290720a9b119bbeaf8124eb771e119cbea85a2f430cbb39a8fead2398528881", + "typeString": "literal_string \"TransferHelper: ETH_TRANSFER_FAILED\"" + } + ], + "id": 3514, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "33209:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33209:55:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3518, + "nodeType": "ExpressionStatement", + "src": "33209:55:0" + } + ] + }, + "documentation": null, + "id": 3520, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferETH", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3500, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3497, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3520, + "src": "33104:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3496, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33104:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3499, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3520, + "src": "33116:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3498, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "33116:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "33103:24:0" + }, + "returnParameters": { + "id": 3501, + "nodeType": "ParameterList", + "parameters": [], + "src": "33137:0:0" + }, + "scope": 3521, + "src": "33079:192:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 3522, + "src": "31923:1350:0" + } + ], + "src": "67:33206:0" + }, + "id": 0 + } + } + } +} diff --git a/artifacts/build-info/194db023d77d2de1e0a5b1b8667e7a16.json b/artifacts/build-info/194db023d77d2de1e0a5b1b8667e7a16.json new file mode 100644 index 00000000..3605b5b6 --- /dev/null +++ b/artifacts/build-info/194db023d77d2de1e0a5b1b8667e7a16.json @@ -0,0 +1,1896 @@ +{ + "id": "194db023d77d2de1e0a5b1b8667e7a16", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.6.11", + "solcLongVersion": "0.6.11+commit.5ef660b1", + "input": { + "language": "Solidity", + "sources": { + "contracts/Common/Ownable.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.6.11;\n\nimport \"./Context.sol\";\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor () internal {\n address msgSender = _msgSender();\n _owner = msgSender;\n emit OwnershipTransferred(address(0), msgSender);\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n require(_owner == _msgSender(), \"Ownable: caller is not the owner\");\n _;\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n emit OwnershipTransferred(_owner, address(0));\n _owner = address(0);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n emit OwnershipTransferred(_owner, newOwner);\n _owner = newOwner;\n }\n}" + }, + "contracts/Common/Context.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\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 payable(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}" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "output": { + "contracts": { + "contracts/Common/Context.sol": { + "Context": { + "abi": [], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Common/Context.sol\":\"Context\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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 payable(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}\",\"keccak256\":\"0x60d51a32063a4975dbf9433d38f5849173527da72f007c38053274e06698cb54\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/Common/Ownable.sol": { + "Ownable": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.", + "kind": "dev", + "methods": { + "constructor": { + "details": "Initializes the contract setting the deployer as the initial owner." + }, + "owner()": { + "details": "Returns the address of the current owner." + }, + "renounceOwnership()": { + "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." + }, + "transferOwnership(address)": { + "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." + } + }, + "version": 1 + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "owner()": "8da5cb5b", + "renounceOwnership()": "715018a6", + "transferOwnership(address)": "f2fde38b" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Common/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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 payable(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}\",\"keccak256\":\"0x60d51a32063a4975dbf9433d38f5849173527da72f007c38053274e06698cb54\",\"license\":\"MIT\"},\"contracts/Common/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.6.11;\\n\\nimport \\\"./Context.sol\\\";\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n constructor () internal {\\n address msgSender = _msgSender();\\n _owner = msgSender;\\n emit OwnershipTransferred(address(0), msgSender);\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n require(_owner == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n _;\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions anymore. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby removing any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n emit OwnershipTransferred(_owner, address(0));\\n _owner = address(0);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n emit OwnershipTransferred(_owner, newOwner);\\n _owner = newOwner;\\n }\\n}\",\"keccak256\":\"0x4ce971ba2956d150643d169e82c9aaeea2e960e411af0dbe09a2d154ab78dcff\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 33, + "contract": "contracts/Common/Ownable.sol:Ownable", + "label": "_owner", + "offset": 0, + "slot": "0", + "type": "t_address" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "sources": { + "contracts/Common/Context.sol": { + "ast": { + "absolutePath": "contracts/Common/Context.sol", + "exportedSymbols": { + "Context": [ + 25 + ] + }, + "id": 26, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:0" + }, + { + "abstract": true, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 25, + "linearizedBaseContracts": [ + 25 + ], + "name": "Context", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 12, + "nodeType": "Block", + "src": "661:43:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 8, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "686:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 9, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "686:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 7, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "678:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 6, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "678:8:0", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 10, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "678:19:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 5, + "id": 11, + "nodeType": "Return", + "src": "671:26:0" + } + ] + }, + "documentation": null, + "id": 13, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2, + "nodeType": "ParameterList", + "parameters": [], + "src": "610:2:0" + }, + "returnParameters": { + "id": 5, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13, + "src": "644:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 3, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "644:15:0", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "643:17:0" + }, + "scope": 25, + "src": "591:113:0", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 23, + "nodeType": "Block", + "src": "775:165:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 18, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "785:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$25", + "typeString": "contract Context" + } + }, + "id": 19, + "nodeType": "ExpressionStatement", + "src": "785:4:0" + }, + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 20, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "925:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 21, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "925:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "functionReturnParameters": 17, + "id": 22, + "nodeType": "Return", + "src": "918:15:0" + } + ] + }, + "documentation": null, + "id": 24, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 14, + "nodeType": "ParameterList", + "parameters": [], + "src": "727:2:0" + }, + "returnParameters": { + "id": 17, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 24, + "src": "761:12:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 15, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "761:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "760:14:0" + }, + "scope": 25, + "src": "710:230:0", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 26, + "src": "559:383:0" + } + ], + "src": "32:910:0" + }, + "id": 0 + }, + "contracts/Common/Ownable.sol": { + "ast": { + "absolutePath": "contracts/Common/Ownable.sol", + "exportedSymbols": { + "Ownable": [ + 134 + ] + }, + "id": 135, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 27, + "literals": [ + "solidity", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:23:1" + }, + { + "absolutePath": "contracts/Common/Context.sol", + "file": "./Context.sol", + "id": 28, + "nodeType": "ImportDirective", + "scope": 135, + "sourceUnit": 26, + "src": "57:23:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 30, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 25, + "src": "605:7:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$25", + "typeString": "contract Context" + } + }, + "id": 31, + "nodeType": "InheritanceSpecifier", + "src": "605:7:1" + } + ], + "contractDependencies": [ + 25 + ], + "contractKind": "contract", + "documentation": { + "id": 29, + "nodeType": "StructuredDocumentation", + "src": "81:494:1", + "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner." + }, + "fullyImplemented": true, + "id": 134, + "linearizedBaseContracts": [ + 134, + 25 + ], + "name": "Ownable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 33, + "mutability": "mutable", + "name": "_owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 134, + "src": "619:22:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "619:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": null, + "id": 39, + "name": "OwnershipTransferred", + "nodeType": "EventDefinition", + "parameters": { + "id": 38, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 35, + "indexed": true, + "mutability": "mutable", + "name": "previousOwner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 39, + "src": "675:29:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 34, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "675:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 37, + "indexed": true, + "mutability": "mutable", + "name": "newOwner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 39, + "src": "706:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 36, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "706:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "674:57:1" + }, + "src": "648:84:1" + }, + { + "body": { + "id": 60, + "nodeType": "Block", + "src": "858:135:1", + "statements": [ + { + "assignments": [ + 44 + ], + "declarations": [ + { + "constant": false, + "id": 44, + "mutability": "mutable", + "name": "msgSender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 60, + "src": "868:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 43, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "868:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 47, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 45, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13, + "src": "888:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 46, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "888:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "868:32:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 50, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 48, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33, + "src": "910:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 49, + "name": "msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44, + "src": "919:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "910:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 51, + "nodeType": "ExpressionStatement", + "src": "910:18:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 55, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "972:1:1", + "subdenomination": null, + "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": 54, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "964:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 53, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "964:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 56, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "964:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 57, + "name": "msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44, + "src": "976:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 52, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 39, + "src": "943:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 58, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "943:43:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 59, + "nodeType": "EmitStatement", + "src": "938:48:1" + } + ] + }, + "documentation": { + "id": 40, + "nodeType": "StructuredDocumentation", + "src": "738:91:1", + "text": " @dev Initializes the contract setting the deployer as the initial owner." + }, + "id": 61, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 41, + "nodeType": "ParameterList", + "parameters": [], + "src": "846:2:1" + }, + "returnParameters": { + "id": 42, + "nodeType": "ParameterList", + "parameters": [], + "src": "858:0:1" + }, + "scope": 134, + "src": "834:159:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 69, + "nodeType": "Block", + "src": "1116:30:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 67, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33, + "src": "1133:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 66, + "id": 68, + "nodeType": "Return", + "src": "1126:13:1" + } + ] + }, + "documentation": { + "id": 62, + "nodeType": "StructuredDocumentation", + "src": "999:65:1", + "text": " @dev Returns the address of the current owner." + }, + "functionSelector": "8da5cb5b", + "id": 70, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "owner", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 63, + "nodeType": "ParameterList", + "parameters": [], + "src": "1083:2:1" + }, + "returnParameters": { + "id": 66, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 70, + "src": "1107:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 64, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1107:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1106:9:1" + }, + "scope": 134, + "src": "1069:77:1", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 82, + "nodeType": "Block", + "src": "1255:95:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 77, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 74, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33, + "src": "1273:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 75, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13, + "src": "1283:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 76, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1283:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1273:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", + "id": 78, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1297:34:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", + "typeString": "literal_string \"Ownable: caller is not the owner\"" + }, + "value": "Ownable: caller is not the owner" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", + "typeString": "literal_string \"Ownable: caller is not the owner\"" + } + ], + "id": 73, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1265:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 79, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1265:67:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 80, + "nodeType": "ExpressionStatement", + "src": "1265:67:1" + }, + { + "id": 81, + "nodeType": "PlaceholderStatement", + "src": "1342:1:1" + } + ] + }, + "documentation": { + "id": 71, + "nodeType": "StructuredDocumentation", + "src": "1152:77:1", + "text": " @dev Throws if called by any account other than the owner." + }, + "id": 83, + "name": "onlyOwner", + "nodeType": "ModifierDefinition", + "overrides": null, + "parameters": { + "id": 72, + "nodeType": "ParameterList", + "parameters": [], + "src": "1252:2:1" + }, + "src": "1234:116:1", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 104, + "nodeType": "Block", + "src": "1746:91:1", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 90, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33, + "src": "1782:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 93, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1798:1:1", + "subdenomination": null, + "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": 92, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1790:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 91, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1790:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 94, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1790:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 89, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 39, + "src": "1761:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 95, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1761:40:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 96, + "nodeType": "EmitStatement", + "src": "1756:45:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 97, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33, + "src": "1811:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 100, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1828:1:1", + "subdenomination": null, + "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": 99, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1820:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 98, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1820:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 101, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1820:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1811:19:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 103, + "nodeType": "ExpressionStatement", + "src": "1811:19:1" + } + ] + }, + "documentation": { + "id": 84, + "nodeType": "StructuredDocumentation", + "src": "1356:331:1", + "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner." + }, + "functionSelector": "715018a6", + "id": 105, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 87, + "modifierName": { + "argumentTypes": null, + "id": 86, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 83, + "src": "1736:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1736:9:1" + } + ], + "name": "renounceOwnership", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 85, + "nodeType": "ParameterList", + "parameters": [], + "src": "1718:2:1" + }, + "returnParameters": { + "id": 88, + "nodeType": "ParameterList", + "parameters": [], + "src": "1746:0:1" + }, + "scope": 134, + "src": "1692:145:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 132, + "nodeType": "Block", + "src": "2056:170:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 114, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 108, + "src": "2074:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 117, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2094:1:1", + "subdenomination": null, + "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": 116, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2086:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 115, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2086:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 118, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2086:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2074:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373", + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2098:40:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", + "typeString": "literal_string \"Ownable: new owner is the zero address\"" + }, + "value": "Ownable: new owner is the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", + "typeString": "literal_string \"Ownable: new owner is the zero address\"" + } + ], + "id": 113, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2066:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2066:73:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 122, + "nodeType": "ExpressionStatement", + "src": "2066:73:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 124, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33, + "src": "2175:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 125, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 108, + "src": "2183:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 123, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 39, + "src": "2154:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2154:38:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 127, + "nodeType": "EmitStatement", + "src": "2149:43:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 128, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33, + "src": "2202:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 129, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 108, + "src": "2211:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2202:17:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 131, + "nodeType": "ExpressionStatement", + "src": "2202:17:1" + } + ] + }, + "documentation": { + "id": 106, + "nodeType": "StructuredDocumentation", + "src": "1843:138:1", + "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner." + }, + "functionSelector": "f2fde38b", + "id": 133, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 111, + "modifierName": { + "argumentTypes": null, + "id": 110, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 83, + "src": "2046:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2046:9:1" + } + ], + "name": "transferOwnership", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 109, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 108, + "mutability": "mutable", + "name": "newOwner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 133, + "src": "2013:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 107, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2013:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2012:18:1" + }, + "returnParameters": { + "id": 112, + "nodeType": "ParameterList", + "parameters": [], + "src": "2056:0:1" + }, + "scope": 134, + "src": "1986:240:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + } + ], + "scope": 135, + "src": "576:1652:1" + } + ], + "src": "32:2196:1" + }, + "id": 1 + } + } + } +} diff --git a/artifacts/build-info/36a19eee347e9afe5dc7fbfa349bb293.json b/artifacts/build-info/36a19eee347e9afe5dc7fbfa349bb293.json new file mode 100644 index 00000000..0e69e2db --- /dev/null +++ b/artifacts/build-info/36a19eee347e9afe5dc7fbfa349bb293.json @@ -0,0 +1,4491 @@ +{ + "id": "36a19eee347e9afe5dc7fbfa349bb293", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.6.11", + "solcLongVersion": "0.6.11+commit.5ef660b1", + "input": { + "language": "Solidity", + "sources": { + "contracts/ERC20/WETH.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.6.11;\n\nimport './IWETH.sol';\n\n// Copyright (C) 2015, 2016, 2017 Dapphub\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\ncontract WETH is IWETH {\n string public name = \"Wrapped Ether\";\n string public symbol = \"WETH\";\n uint8 public decimals = 18;\n\n event Approval(address indexed src, address indexed guy, uint wad);\n event Transfer(address indexed src, address indexed dst, uint wad);\n event Deposit(address indexed dst, uint wad);\n event Withdrawal(address indexed src, uint wad);\n\n mapping (address => uint) public balanceOf;\n mapping (address => mapping (address => uint)) public allowance;\n\n fallback() external payable {\n deposit();\n }\n\n receive() external payable { }\n\n constructor (address _creator_address ) public \n {\n balanceOf[_creator_address] = 1000000e18; // this is for testing only\n }\n\n\n function deposit() public override payable {\n balanceOf[msg.sender] += msg.value;\n emit Deposit(msg.sender, msg.value);\n }\n function withdraw(uint wad) override public {\n require(balanceOf[msg.sender] >= wad);\n balanceOf[msg.sender] -= wad;\n msg.sender.transfer(wad);\n emit Withdrawal(msg.sender, wad);\n }\n\n function totalSupply() public view returns (uint) {\n return address(this).balance;\n }\n\n function approve(address guy, uint wad) public returns (bool) {\n allowance[msg.sender][guy] = wad;\n emit Approval(msg.sender, guy, wad);\n return true;\n }\n\n function transfer(address dst, uint wad) public override returns (bool) {\n return transferFrom(msg.sender, dst, wad);\n }\n\n function transferFrom(address src, address dst, uint wad)\n public\n override\n returns (bool)\n {\n require(balanceOf[src] >= wad);\n\n if (src != msg.sender && allowance[src][msg.sender] != type(uint).max) {\n require(allowance[src][msg.sender] >= wad);\n allowance[src][msg.sender] -= wad;\n }\n\n balanceOf[src] -= wad;\n balanceOf[dst] += wad;\n\n emit Transfer(src, dst, wad);\n\n return true;\n }\n}\n\n\n/*\n GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. \n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n Preamble\n\n The GNU General Public License is a free, copyleft license for\nsoftware and other kinds of works.\n\n The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works. By contrast,\nthe GNU General Public License is intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users. We, the Free Software Foundation, use the\nGNU General Public License for most of our software; it applies also to\nany other work released this way by its authors. You can apply it to\nyour programs, too.\n\n When we speak of free software, we are referring to freedom, not\nprice. Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n To protect your rights, we need to prevent others from denying you\nthese rights or asking you to surrender the rights. Therefore, you have\ncertain responsibilities if you distribute copies of the software, or if\nyou modify it: responsibilities to respect the freedom of others.\n\n For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must pass on to the recipients the same\nfreedoms that you received. You must make sure that they, too, receive\nor can get the source code. And you must show them these terms so they\nknow their rights.\n\n Developers that use the GNU GPL protect your rights with two steps:\n(1) assert copyright on the software, and (2) offer you this License\ngiving you legal permission to copy, distribute and/or modify it.\n\n For the developers' and authors' protection, the GPL clearly explains\nthat there is no warranty for this free software. For both users' and\nauthors' sake, the GPL requires that modified versions be marked as\nchanged, so that their problems will not be attributed erroneously to\nauthors of previous versions.\n\n Some devices are designed to deny users access to install or run\nmodified versions of the software inside them, although the manufacturer\ncan do so. This is fundamentally incompatible with the aim of\nprotecting users' freedom to change the software. The systematic\npattern of such abuse occurs in the area of products for individuals to\nuse, which is precisely where it is most unacceptable. Therefore, we\nhave designed this version of the GPL to prohibit the practice for those\nproducts. If such problems arise substantially in other domains, we\nstand ready to extend this provision to those domains in future versions\nof the GPL, as needed to protect the freedom of users.\n\n Finally, every program is threatened constantly by software patents.\nStates should not allow patents to restrict development and use of\nsoftware on general-purpose computers, but in those that do, we wish to\navoid the special danger that patents applied to a free program could\nmake it effectively proprietary. To prevent this, the GPL assures that\npatents cannot be used to render the program non-free.\n\n The precise terms and conditions for copying, distribution and\nmodification follow.\n\n TERMS AND CONDITIONS\n\n 0. Definitions.\n\n \"This License\" refers to version 3 of the GNU General Public License.\n\n \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n \"The Program\" refers to any copyrightable work licensed under this\nLicense. Each licensee is addressed as \"you\". \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy. The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy. Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies. Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License. If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n 1. Source Code.\n\n The \"source code\" for a work means the preferred form of the work\nfor making modifications to it. \"Object code\" means any non-source\nform of a work.\n\n A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form. A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities. However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work. For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n The Corresponding Source for a work in source code form is that\nsame work.\n\n 2. Basic Permissions.\n\n All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met. This License explicitly affirms your unlimited\npermission to run the unmodified Program. The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work. This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force. You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright. Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n Conveying under any other circumstances is permitted solely under\nthe conditions stated below. Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n 3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n 4. Conveying Verbatim Copies.\n\n You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n 5. Conveying Modified Source Versions.\n\n You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n a) The work must carry prominent notices stating that you modified\n it, and giving a relevant date.\n\n b) The work must carry prominent notices stating that it is\n released under this License and any conditions added under section\n 7. This requirement modifies the requirement in section 4 to\n \"keep intact all notices\".\n\n c) You must license the entire work, as a whole, under this\n License to anyone who comes into possession of a copy. This\n License will therefore apply, along with any applicable section 7\n additional terms, to the whole of the work, and all its parts,\n regardless of how they are packaged. This License gives no\n permission to license the work in any other way, but it does not\n invalidate such permission if you have separately received it.\n\n d) If the work has interactive user interfaces, each must display\n Appropriate Legal Notices; however, if the Program has interactive\n interfaces that do not display Appropriate Legal Notices, your\n work need not make them do so.\n\n A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit. Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n 6. Conveying Non-Source Forms.\n\n You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n a) Convey the object code in, or embodied in, a physical product\n (including a physical distribution medium), accompanied by the\n Corresponding Source fixed on a durable physical medium\n customarily used for software interchange.\n\n b) Convey the object code in, or embodied in, a physical product\n (including a physical distribution medium), accompanied by a\n written offer, valid for at least three years and valid for as\n long as you offer spare parts or customer support for that product\n model, to give anyone who possesses the object code either (1) a\n copy of the Corresponding Source for all the software in the\n product that is covered by this License, on a durable physical\n medium customarily used for software interchange, for a price no\n more than your reasonable cost of physically performing this\n conveying of source, or (2) access to copy the\n Corresponding Source from a network server at no charge.\n\n c) Convey individual copies of the object code with a copy of the\n written offer to provide the Corresponding Source. This\n alternative is allowed only occasionally and noncommercially, and\n only if you received the object code with such an offer, in accord\n with subsection 6b.\n\n d) Convey the object code by offering access from a designated\n place (gratis or for a charge), and offer equivalent access to the\n Corresponding Source in the same way through the same place at no\n further charge. You need not require recipients to copy the\n Corresponding Source along with the object code. If the place to\n copy the object code is a network server, the Corresponding Source\n may be on a different server (operated by you or a third party)\n that supports equivalent copying facilities, provided you maintain\n clear directions next to the object code saying where to find the\n Corresponding Source. Regardless of what server hosts the\n Corresponding Source, you remain obligated to ensure that it is\n available for as long as needed to satisfy these requirements.\n\n e) Convey the object code using peer-to-peer transmission, provided\n you inform other peers where the object code and Corresponding\n Source of the work are being offered to the general public at no\n charge under subsection 6d.\n\n A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling. In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage. For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product. A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source. The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information. But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed. Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n 7. Additional Terms.\n\n \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law. If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit. (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.) You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n a) Disclaiming warranty or limiting liability differently from the\n terms of sections 15 and 16 of this License; or\n\n b) Requiring preservation of specified reasonable legal notices or\n author attributions in that material or in the Appropriate Legal\n Notices displayed by works containing it; or\n\n c) Prohibiting misrepresentation of the origin of that material, or\n requiring that modified versions of such material be marked in\n reasonable ways as different from the original version; or\n\n d) Limiting the use for publicity purposes of names of licensors or\n authors of the material; or\n\n e) Declining to grant rights under trademark law for use of some\n trade names, trademarks, or service marks; or\n\n f) Requiring indemnification of licensors and authors of that\n material by anyone who conveys the material (or modified versions of\n it) with contractual assumptions of liability to the recipient, for\n any liability that these contractual assumptions directly impose on\n those licensors and authors.\n\n All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10. If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term. If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n 8. Termination.\n\n You may not propagate or modify a covered work except as expressly\nprovided under this License. Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License. If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n 9. Acceptance Not Required for Having Copies.\n\n You are not required to accept this License in order to receive or\nrun a copy of the Program. Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance. However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work. These actions infringe copyright if you do\nnot accept this License. Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n 10. Automatic Licensing of Downstream Recipients.\n\n Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License. You are not responsible\nfor enforcing compliance by third parties with this License.\n\n An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations. If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License. For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n 11. Patents.\n\n A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based. The\nwork thus licensed is called the contributor's \"contributor version\".\n\n A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version. For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement). To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients. \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License. You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n 12. No Surrender of Others' Freedom.\n\n If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License. If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all. For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n 13. Use with the GNU Affero General Public License.\n\n Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU Affero General Public License into a single\ncombined work, and to convey the resulting work. The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the special requirements of the GNU Affero General Public License,\nsection 13, concerning interaction through a network will apply to the\ncombination as such.\n\n 14. Revised Versions of this License.\n\n The Free Software Foundation may publish revised and/or new versions of\nthe GNU General Public License from time to time. Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n Each version is given a distinguishing version number. If the\nProgram specifies that a certain numbered version of the GNU General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation. If the Program does not specify a version number of the\nGNU General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n If the Program specifies that a proxy can decide which future\nversions of the GNU General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n Later license versions may give you additional or different\npermissions. However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n 15. Disclaimer of Warranty.\n\n THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n 16. Limitation of Liability.\n\n IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n 17. Interpretation of Sections 15 and 16.\n\n If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n END OF TERMS AND CONDITIONS\n\n How to Apply These Terms to Your New Programs\n\n If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n To do so, attach the following notices to the program. It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n \n Copyright (C) \n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n\nAlso add information on how to contact you by electronic and paper mail.\n\n If the program does terminal interaction, make it output a short\nnotice like this when it starts in an interactive mode:\n\n Copyright (C) \n This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n This is free software, and you are welcome to redistribute it\n under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License. Of course, your program's commands\nmight be different; for a GUI interface, you would use an \"about box\".\n\n You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU GPL, see\n.\n\n The GNU General Public License does not permit incorporating your program\ninto proprietary programs. If your program is a subroutine library, you\nmay consider it more useful to permit linking proprietary applications with\nthe library. If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License. But first, please read\n.\n\n*/" + }, + "contracts/ERC20/IWETH.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\ninterface IWETH {\n function deposit() external payable;\n function transfer(address to, uint value) external returns (bool);\n function transferFrom(address src, address dst, uint wad) external returns (bool);\n function withdraw(uint) external;\n}" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "output": { + "contracts": { + "contracts/ERC20/IWETH.sol": { + "IWETH": { + "abi": [ + { + "inputs": [], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "wad", + "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": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "deposit()": "d0e30db0", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd", + "withdraw(uint256)": "2e1a7d4d" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"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\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ERC20/IWETH.sol\":\"IWETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/ERC20/IWETH.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ninterface IWETH {\\n function deposit() external payable;\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address src, address dst, uint wad) external returns (bool);\\n function withdraw(uint) external;\\n}\",\"keccak256\":\"0x18212a89037731f408481a447fb8044224896108bca501237d9ff509a9e6335b\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/ERC20/WETH.sol": { + "WETH": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_creator_address", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "guy", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Withdrawal", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "guy", + "type": "address" + }, + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "60c0604052600d60808190526c2bb930b83832b21022ba3432b960991b60a090815261002e91600091906100c2565b50604080518082019091526004808252630ae8aa8960e31b602090920191825261005a916001916100c2565b506002805460ff1916601217905534801561007457600080fd5b506040516109713803806109718339818101604052602081101561009757600080fd5b50516001600160a01b0316600090815260036020526040902069d3c21bcecceda1000000905561015d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061010357805160ff1916838001178555610130565b82800160010185558215610130579182015b82811115610130578251825591602001919060010190610115565b5061013c929150610140565b5090565b61015a91905b8082111561013c5760008155600101610146565b90565b6108058061016c6000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102d6578063d0e30db0146100c7578063dd62ed3e1461031c576100c7565b8063313ce5671461025657806370a082311461028157806395d89b41146102c1576100c7565b806318160ddd116100a557806318160ddd146101b557806323b872dd146101dc5780632e1a7d4d1461022c576100c7565b806306fdde03146100d1578063095ea7b31461015b576100c7565b366100c757005b6100cf610364565b005b3480156100dd57600080fd5b506100e66103b3565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610120578181015183820152602001610108565b50505050905090810190601f16801561014d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561016757600080fd5b506101a16004803603604081101561017e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561045f565b604080519115158252519081900360200190f35b3480156101c157600080fd5b506101ca6104d2565b60408051918252519081900360200190f35b3480156101e857600080fd5b506101a1600480360360608110156101ff57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104d6565b34801561023857600080fd5b506100cf6004803603602081101561024f57600080fd5b5035610676565b34801561026257600080fd5b5061026b61070b565b6040805160ff9092168252519081900360200190f35b34801561028d57600080fd5b506101ca600480360360208110156102a457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610714565b3480156102cd57600080fd5b506100e6610726565b3480156102e257600080fd5b506101a1600480360360408110156102f957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561079e565b34801561032857600080fd5b506101ca6004803603604081101561033f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166107b2565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104575780601f1061042c57610100808354040283529160200191610457565b820191906000526020600020905b81548152906001019060200180831161043a57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561050857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8416331480159061057e575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105f85773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156105c057600080fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b3360009081526003602052604090205481111561069257600080fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f193505050501580156106d1573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104575780601f1061042c57610100808354040283529160200191610457565b60006107ab3384846104d6565b9392505050565b60046020908152600092835260408084209091529082529020548156fea264697066735822122089c90773a69db399af1f4646178030964dee586890599a9aae37e0270441a7c164736f6c634300060b0033", + "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE PUSH1 0xD PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH13 0x2BB930B83832B21022BA3432B9 PUSH1 0x99 SHL PUSH1 0xA0 SWAP1 DUP2 MSTORE PUSH2 0x2E SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH2 0xC2 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE PUSH4 0xAE8AA89 PUSH1 0xE3 SHL PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE PUSH2 0x5A SWAP2 PUSH1 0x1 SWAP2 PUSH2 0xC2 JUMP JUMPDEST POP PUSH1 0x2 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x971 CODESIZE SUB DUP1 PUSH2 0x971 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH10 0xD3C21BCECCEDA1000000 SWAP1 SSTORE PUSH2 0x15D 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 PUSH1 0x1F LT PUSH2 0x103 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x130 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x130 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x130 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x115 JUMP JUMPDEST POP PUSH2 0x13C SWAP3 SWAP2 POP PUSH2 0x140 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x15A SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x13C JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x146 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x805 DUP1 PUSH2 0x16C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC0 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2D6 JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0xC7 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x31C JUMPI PUSH2 0xC7 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x256 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2C1 JUMPI PUSH2 0xC7 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1DC JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x22C JUMPI PUSH2 0xC7 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xD1 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x15B JUMPI PUSH2 0xC7 JUMP JUMPDEST CALLDATASIZE PUSH2 0xC7 JUMPI STOP JUMPDEST PUSH2 0xCF PUSH2 0x364 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE6 PUSH2 0x3B3 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 0x120 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x108 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x14D 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 CALLVALUE DUP1 ISZERO PUSH2 0x167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x45F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CA PUSH2 0x4D2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4D6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x676 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26B PUSH2 0x70B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x714 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE6 PUSH2 0x726 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x79E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x328 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x7B2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD CALLVALUE SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x457 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x42C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x457 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 0x43A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST SELFBALANCE SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x508 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x57E JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ ISZERO JUMPDEST ISZERO PUSH2 0x5F8 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x5C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP4 MLOAD SWAP2 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x692 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE MLOAD DUP4 ISZERO PUSH2 0x8FC MUL SWAP2 DUP5 SWAP2 SWAP1 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x6D1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x457 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x42C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x457 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7AB CALLER DUP5 DUP5 PUSH2 0x4D6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP10 0xC9 SMOD PUSH20 0xA69DB399AF1F4646178030964DEE586890599A9A 0xAE CALLDATACOPY 0xE0 0x27 DIV COINBASE 0xA7 0xC1 PUSH5 0x736F6C6343 STOP MOD SIGNEXTEND STOP CALLER ", + "sourceMap": "795:40:1:-:0;766:2048;795:40;;766:2048;795:40;;;-1:-1:-1;;;795:40:1;;;;;;-1:-1:-1;;795:40:1;;:::i;:::-;-1:-1:-1;841:31:1;;;;;;;;;;;;;-1:-1:-1;;;841:31:1;;;;;;;;;;;;:::i;:::-;-1:-1:-1;878:27:1;;;-1:-1:-1;;878:27:1;903:2;878:27;;;1403:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1403:137:1;-1:-1:-1;;;;;1465:27:1;;;;;:9;1403:137;1465:27;;;;1495:10;1465:40;;766:2048;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;766:2048:1;;;-1:-1:-1;766:2048:1;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102d6578063d0e30db0146100c7578063dd62ed3e1461031c576100c7565b8063313ce5671461025657806370a082311461028157806395d89b41146102c1576100c7565b806318160ddd116100a557806318160ddd146101b557806323b872dd146101dc5780632e1a7d4d1461022c576100c7565b806306fdde03146100d1578063095ea7b31461015b576100c7565b366100c757005b6100cf610364565b005b3480156100dd57600080fd5b506100e66103b3565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610120578181015183820152602001610108565b50505050905090810190601f16801561014d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561016757600080fd5b506101a16004803603604081101561017e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561045f565b604080519115158252519081900360200190f35b3480156101c157600080fd5b506101ca6104d2565b60408051918252519081900360200190f35b3480156101e857600080fd5b506101a1600480360360608110156101ff57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104d6565b34801561023857600080fd5b506100cf6004803603602081101561024f57600080fd5b5035610676565b34801561026257600080fd5b5061026b61070b565b6040805160ff9092168252519081900360200190f35b34801561028d57600080fd5b506101ca600480360360208110156102a457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610714565b3480156102cd57600080fd5b506100e6610726565b3480156102e257600080fd5b506101a1600480360360408110156102f957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561079e565b34801561032857600080fd5b506101ca6004803603604081101561033f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166107b2565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104575780601f1061042c57610100808354040283529160200191610457565b820191906000526020600020905b81548152906001019060200180831161043a57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561050857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8416331480159061057e575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105f85773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156105c057600080fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b3360009081526003602052604090205481111561069257600080fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f193505050501580156106d1573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104575780601f1061042c57610100808354040283529160200191610457565b60006107ab3384846104d6565b9392505050565b60046020908152600092835260408084209091529082529020548156fea264697066735822122089c90773a69db399af1f4646178030964dee586890599a9aae37e0270441a7c164736f6c634300060b0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC0 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2D6 JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0xC7 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x31C JUMPI PUSH2 0xC7 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x256 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2C1 JUMPI PUSH2 0xC7 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1DC JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x22C JUMPI PUSH2 0xC7 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xD1 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x15B JUMPI PUSH2 0xC7 JUMP JUMPDEST CALLDATASIZE PUSH2 0xC7 JUMPI STOP JUMPDEST PUSH2 0xCF PUSH2 0x364 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE6 PUSH2 0x3B3 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 0x120 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x108 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x14D 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 CALLVALUE DUP1 ISZERO PUSH2 0x167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x45F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CA PUSH2 0x4D2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4D6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x676 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26B PUSH2 0x70B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x714 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE6 PUSH2 0x726 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x79E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x328 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x7B2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD CALLVALUE SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x457 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x42C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x457 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 0x43A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST SELFBALANCE SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x508 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x57E JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ ISZERO JUMPDEST ISZERO PUSH2 0x5F8 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x5C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP4 MLOAD SWAP2 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x692 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE MLOAD DUP4 ISZERO PUSH2 0x8FC MUL SWAP2 DUP5 SWAP2 SWAP1 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x6D1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x457 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x42C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x457 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7AB CALLER DUP5 DUP5 PUSH2 0x4D6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP10 0xC9 SMOD PUSH20 0xA69DB399AF1F4646178030964DEE586890599A9A 0xAE CALLDATACOPY 0xE0 0x27 DIV COINBASE 0xA7 0xC1 PUSH5 0x736F6C6343 STOP MOD SIGNEXTEND STOP CALLER ", + "sourceMap": "766:2048:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1345:9;:7;:9::i;:::-;766:2048;795:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2010:177;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2010:177:1;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1909:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2329:483;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2329:483:1;;;;;;;;;;;;;;;;;;:::i;1691:212::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1691:212:1;;:::i;878:27::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1164:65;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1164:65:1;;;;:::i;841:31::-;;;;;;;;;;;;;:::i;2193:130::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2193:130:1;;;;;;;;;:::i;1235:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1235:65:1;;;;;;;;;;;:::i;1547:139::-;1610:10;1600:21;;;;:9;:21;;;;;;;;;:34;;1625:9;1600:34;;;;;;1649:30;;;;;;;;;;;;;;;;;1547:139::o;795:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2010:177::-;2092:10;2066:4;2082:21;;;:9;:21;;;;;;;;;:26;;;;;;;;;;;:32;;;2129:30;;;;;;;2066:4;;2082:26;;2092:10;;2129:30;;;;;;;;-1:-1:-1;2176:4:1;2010:177;;;;:::o;1909:95::-;1976:21;1909:95;:::o;2329:483::-;2464:14;;;2436:4;2464:14;;;:9;:14;;;;;;:21;-1:-1:-1;2464:21:1;2456:30;;;;;;2501:17;;;2508:10;2501:17;;;;:65;;-1:-1:-1;2522:14:1;;;;;;;:9;:14;;;;;;;;2537:10;2522:26;;;;;;;;2552:14;2522:44;;2501:65;2497:185;;;2590:14;;;;;;;:9;:14;;;;;;;;2605:10;2590:26;;;;;;;;:33;-1:-1:-1;2590:33:1;2582:42;;;;;;2638:14;;;;;;;:9;:14;;;;;;;;2653:10;2638:26;;;;;;;:33;;;;;;;2497:185;2692:14;;;;;;;;:9;:14;;;;;;;;:21;;;;;;;2723:14;;;;;;;;;;:21;;;;;;2760:23;;;;;;;2723:14;;2760:23;;;;;;;;;;;-1:-1:-1;2801:4:1;2329:483;;;;;:::o;1691:212::-;1763:10;1753:21;;;;:9;:21;;;;;;:28;-1:-1:-1;1753:28:1;1745:37;;;;;;1802:10;1792:21;;;;:9;:21;;;;;;:28;;;;;;;1830:24;;;;;;1817:3;;1830:24;;1792:21;1830:24;1817:3;1802:10;1830:24;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1869:27:1;;;;;;;;1880:10;;1869:27;;;;;;;;;;1691:212;:::o;878:27::-;;;;;;:::o;1164:65::-;;;;;;;;;;;;;:::o;841:31::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2193:130;2259:4;2282:34;2295:10;2307:3;2312;2282:12;:34::i;:::-;2275:41;2193:130;-1:-1:-1;;;2193:130:1:o;1235:65::-;;;;;;;;;;;;;;;;;;;;;;;;:::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "410600", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "": "22515", + "allowance(address,address)": "1271", + "approve(address,uint256)": "22299", + "balanceOf(address)": "1157", + "decimals()": "1036", + "deposit()": "22502", + "name()": "infinite", + "symbol()": "infinite", + "totalSupply()": "223", + "transfer(address,uint256)": "44901", + "transferFrom(address,address,uint256)": "67800", + "withdraw(uint256)": "infinite" + } + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "deposit()": "d0e30db0", + "name()": "06fdde03", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd", + "withdraw(uint256)": "2e1a7d4d" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_creator_address\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ERC20/WETH.sol\":\"WETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/ERC20/IWETH.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ninterface IWETH {\\n function deposit() external payable;\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address src, address dst, uint wad) external returns (bool);\\n function withdraw(uint) external;\\n}\",\"keccak256\":\"0x18212a89037731f408481a447fb8044224896108bca501237d9ff509a9e6335b\",\"license\":\"MIT\"},\"contracts/ERC20/WETH.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.6.11;\\n\\nimport './IWETH.sol';\\n\\n// Copyright (C) 2015, 2016, 2017 Dapphub\\n\\n// This program is free software: you can redistribute it and/or modify\\n// it under the terms of the GNU General Public License as published by\\n// the Free Software Foundation, either version 3 of the License, or\\n// (at your option) any later version.\\n\\n// This program is distributed in the hope that it will be useful,\\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n// GNU General Public License for more details.\\n\\n// You should have received a copy of the GNU General Public License\\n// along with this program. If not, see .\\n\\ncontract WETH is IWETH {\\n string public name = \\\"Wrapped Ether\\\";\\n string public symbol = \\\"WETH\\\";\\n uint8 public decimals = 18;\\n\\n event Approval(address indexed src, address indexed guy, uint wad);\\n event Transfer(address indexed src, address indexed dst, uint wad);\\n event Deposit(address indexed dst, uint wad);\\n event Withdrawal(address indexed src, uint wad);\\n\\n mapping (address => uint) public balanceOf;\\n mapping (address => mapping (address => uint)) public allowance;\\n\\n fallback() external payable {\\n deposit();\\n }\\n\\n receive() external payable { }\\n\\n constructor (address _creator_address ) public \\n {\\n balanceOf[_creator_address] = 1000000e18; // this is for testing only\\n }\\n\\n\\n function deposit() public override payable {\\n balanceOf[msg.sender] += msg.value;\\n emit Deposit(msg.sender, msg.value);\\n }\\n function withdraw(uint wad) override public {\\n require(balanceOf[msg.sender] >= wad);\\n balanceOf[msg.sender] -= wad;\\n msg.sender.transfer(wad);\\n emit Withdrawal(msg.sender, wad);\\n }\\n\\n function totalSupply() public view returns (uint) {\\n return address(this).balance;\\n }\\n\\n function approve(address guy, uint wad) public returns (bool) {\\n allowance[msg.sender][guy] = wad;\\n emit Approval(msg.sender, guy, wad);\\n return true;\\n }\\n\\n function transfer(address dst, uint wad) public override returns (bool) {\\n return transferFrom(msg.sender, dst, wad);\\n }\\n\\n function transferFrom(address src, address dst, uint wad)\\n public\\n override\\n returns (bool)\\n {\\n require(balanceOf[src] >= wad);\\n\\n if (src != msg.sender && allowance[src][msg.sender] != type(uint).max) {\\n require(allowance[src][msg.sender] >= wad);\\n allowance[src][msg.sender] -= wad;\\n }\\n\\n balanceOf[src] -= wad;\\n balanceOf[dst] += wad;\\n\\n emit Transfer(src, dst, wad);\\n\\n return true;\\n }\\n}\\n\\n\\n/*\\n GNU GENERAL PUBLIC LICENSE\\n Version 3, 29 June 2007\\n\\n Copyright (C) 2007 Free Software Foundation, Inc. \\n Everyone is permitted to copy and distribute verbatim copies\\n of this license document, but changing it is not allowed.\\n\\n Preamble\\n\\n The GNU General Public License is a free, copyleft license for\\nsoftware and other kinds of works.\\n\\n The licenses for most software and other practical works are designed\\nto take away your freedom to share and change the works. By contrast,\\nthe GNU General Public License is intended to guarantee your freedom to\\nshare and change all versions of a program--to make sure it remains free\\nsoftware for all its users. We, the Free Software Foundation, use the\\nGNU General Public License for most of our software; it applies also to\\nany other work released this way by its authors. You can apply it to\\nyour programs, too.\\n\\n When we speak of free software, we are referring to freedom, not\\nprice. Our General Public Licenses are designed to make sure that you\\nhave the freedom to distribute copies of free software (and charge for\\nthem if you wish), that you receive source code or can get it if you\\nwant it, that you can change the software or use pieces of it in new\\nfree programs, and that you know you can do these things.\\n\\n To protect your rights, we need to prevent others from denying you\\nthese rights or asking you to surrender the rights. Therefore, you have\\ncertain responsibilities if you distribute copies of the software, or if\\nyou modify it: responsibilities to respect the freedom of others.\\n\\n For example, if you distribute copies of such a program, whether\\ngratis or for a fee, you must pass on to the recipients the same\\nfreedoms that you received. You must make sure that they, too, receive\\nor can get the source code. And you must show them these terms so they\\nknow their rights.\\n\\n Developers that use the GNU GPL protect your rights with two steps:\\n(1) assert copyright on the software, and (2) offer you this License\\ngiving you legal permission to copy, distribute and/or modify it.\\n\\n For the developers' and authors' protection, the GPL clearly explains\\nthat there is no warranty for this free software. For both users' and\\nauthors' sake, the GPL requires that modified versions be marked as\\nchanged, so that their problems will not be attributed erroneously to\\nauthors of previous versions.\\n\\n Some devices are designed to deny users access to install or run\\nmodified versions of the software inside them, although the manufacturer\\ncan do so. This is fundamentally incompatible with the aim of\\nprotecting users' freedom to change the software. The systematic\\npattern of such abuse occurs in the area of products for individuals to\\nuse, which is precisely where it is most unacceptable. Therefore, we\\nhave designed this version of the GPL to prohibit the practice for those\\nproducts. If such problems arise substantially in other domains, we\\nstand ready to extend this provision to those domains in future versions\\nof the GPL, as needed to protect the freedom of users.\\n\\n Finally, every program is threatened constantly by software patents.\\nStates should not allow patents to restrict development and use of\\nsoftware on general-purpose computers, but in those that do, we wish to\\navoid the special danger that patents applied to a free program could\\nmake it effectively proprietary. To prevent this, the GPL assures that\\npatents cannot be used to render the program non-free.\\n\\n The precise terms and conditions for copying, distribution and\\nmodification follow.\\n\\n TERMS AND CONDITIONS\\n\\n 0. Definitions.\\n\\n \\\"This License\\\" refers to version 3 of the GNU General Public License.\\n\\n \\\"Copyright\\\" also means copyright-like laws that apply to other kinds of\\nworks, such as semiconductor masks.\\n\\n \\\"The Program\\\" refers to any copyrightable work licensed under this\\nLicense. Each licensee is addressed as \\\"you\\\". \\\"Licensees\\\" and\\n\\\"recipients\\\" may be individuals or organizations.\\n\\n To \\\"modify\\\" a work means to copy from or adapt all or part of the work\\nin a fashion requiring copyright permission, other than the making of an\\nexact copy. The resulting work is called a \\\"modified version\\\" of the\\nearlier work or a work \\\"based on\\\" the earlier work.\\n\\n A \\\"covered work\\\" means either the unmodified Program or a work based\\non the Program.\\n\\n To \\\"propagate\\\" a work means to do anything with it that, without\\npermission, would make you directly or secondarily liable for\\ninfringement under applicable copyright law, except executing it on a\\ncomputer or modifying a private copy. Propagation includes copying,\\ndistribution (with or without modification), making available to the\\npublic, and in some countries other activities as well.\\n\\n To \\\"convey\\\" a work means any kind of propagation that enables other\\nparties to make or receive copies. Mere interaction with a user through\\na computer network, with no transfer of a copy, is not conveying.\\n\\n An interactive user interface displays \\\"Appropriate Legal Notices\\\"\\nto the extent that it includes a convenient and prominently visible\\nfeature that (1) displays an appropriate copyright notice, and (2)\\ntells the user that there is no warranty for the work (except to the\\nextent that warranties are provided), that licensees may convey the\\nwork under this License, and how to view a copy of this License. If\\nthe interface presents a list of user commands or options, such as a\\nmenu, a prominent item in the list meets this criterion.\\n\\n 1. Source Code.\\n\\n The \\\"source code\\\" for a work means the preferred form of the work\\nfor making modifications to it. \\\"Object code\\\" means any non-source\\nform of a work.\\n\\n A \\\"Standard Interface\\\" means an interface that either is an official\\nstandard defined by a recognized standards body, or, in the case of\\ninterfaces specified for a particular programming language, one that\\nis widely used among developers working in that language.\\n\\n The \\\"System Libraries\\\" of an executable work include anything, other\\nthan the work as a whole, that (a) is included in the normal form of\\npackaging a Major Component, but which is not part of that Major\\nComponent, and (b) serves only to enable use of the work with that\\nMajor Component, or to implement a Standard Interface for which an\\nimplementation is available to the public in source code form. A\\n\\\"Major Component\\\", in this context, means a major essential component\\n(kernel, window system, and so on) of the specific operating system\\n(if any) on which the executable work runs, or a compiler used to\\nproduce the work, or an object code interpreter used to run it.\\n\\n The \\\"Corresponding Source\\\" for a work in object code form means all\\nthe source code needed to generate, install, and (for an executable\\nwork) run the object code and to modify the work, including scripts to\\ncontrol those activities. However, it does not include the work's\\nSystem Libraries, or general-purpose tools or generally available free\\nprograms which are used unmodified in performing those activities but\\nwhich are not part of the work. For example, Corresponding Source\\nincludes interface definition files associated with source files for\\nthe work, and the source code for shared libraries and dynamically\\nlinked subprograms that the work is specifically designed to require,\\nsuch as by intimate data communication or control flow between those\\nsubprograms and other parts of the work.\\n\\n The Corresponding Source need not include anything that users\\ncan regenerate automatically from other parts of the Corresponding\\nSource.\\n\\n The Corresponding Source for a work in source code form is that\\nsame work.\\n\\n 2. Basic Permissions.\\n\\n All rights granted under this License are granted for the term of\\ncopyright on the Program, and are irrevocable provided the stated\\nconditions are met. This License explicitly affirms your unlimited\\npermission to run the unmodified Program. The output from running a\\ncovered work is covered by this License only if the output, given its\\ncontent, constitutes a covered work. This License acknowledges your\\nrights of fair use or other equivalent, as provided by copyright law.\\n\\n You may make, run and propagate covered works that you do not\\nconvey, without conditions so long as your license otherwise remains\\nin force. You may convey covered works to others for the sole purpose\\nof having them make modifications exclusively for you, or provide you\\nwith facilities for running those works, provided that you comply with\\nthe terms of this License in conveying all material for which you do\\nnot control copyright. Those thus making or running the covered works\\nfor you must do so exclusively on your behalf, under your direction\\nand control, on terms that prohibit them from making any copies of\\nyour copyrighted material outside their relationship with you.\\n\\n Conveying under any other circumstances is permitted solely under\\nthe conditions stated below. Sublicensing is not allowed; section 10\\nmakes it unnecessary.\\n\\n 3. Protecting Users' Legal Rights From Anti-Circumvention Law.\\n\\n No covered work shall be deemed part of an effective technological\\nmeasure under any applicable law fulfilling obligations under article\\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\\nsimilar laws prohibiting or restricting circumvention of such\\nmeasures.\\n\\n When you convey a covered work, you waive any legal power to forbid\\ncircumvention of technological measures to the extent such circumvention\\nis effected by exercising rights under this License with respect to\\nthe covered work, and you disclaim any intention to limit operation or\\nmodification of the work as a means of enforcing, against the work's\\nusers, your or third parties' legal rights to forbid circumvention of\\ntechnological measures.\\n\\n 4. Conveying Verbatim Copies.\\n\\n You may convey verbatim copies of the Program's source code as you\\nreceive it, in any medium, provided that you conspicuously and\\nappropriately publish on each copy an appropriate copyright notice;\\nkeep intact all notices stating that this License and any\\nnon-permissive terms added in accord with section 7 apply to the code;\\nkeep intact all notices of the absence of any warranty; and give all\\nrecipients a copy of this License along with the Program.\\n\\n You may charge any price or no price for each copy that you convey,\\nand you may offer support or warranty protection for a fee.\\n\\n 5. Conveying Modified Source Versions.\\n\\n You may convey a work based on the Program, or the modifications to\\nproduce it from the Program, in the form of source code under the\\nterms of section 4, provided that you also meet all of these conditions:\\n\\n a) The work must carry prominent notices stating that you modified\\n it, and giving a relevant date.\\n\\n b) The work must carry prominent notices stating that it is\\n released under this License and any conditions added under section\\n 7. This requirement modifies the requirement in section 4 to\\n \\\"keep intact all notices\\\".\\n\\n c) You must license the entire work, as a whole, under this\\n License to anyone who comes into possession of a copy. This\\n License will therefore apply, along with any applicable section 7\\n additional terms, to the whole of the work, and all its parts,\\n regardless of how they are packaged. This License gives no\\n permission to license the work in any other way, but it does not\\n invalidate such permission if you have separately received it.\\n\\n d) If the work has interactive user interfaces, each must display\\n Appropriate Legal Notices; however, if the Program has interactive\\n interfaces that do not display Appropriate Legal Notices, your\\n work need not make them do so.\\n\\n A compilation of a covered work with other separate and independent\\nworks, which are not by their nature extensions of the covered work,\\nand which are not combined with it such as to form a larger program,\\nin or on a volume of a storage or distribution medium, is called an\\n\\\"aggregate\\\" if the compilation and its resulting copyright are not\\nused to limit the access or legal rights of the compilation's users\\nbeyond what the individual works permit. Inclusion of a covered work\\nin an aggregate does not cause this License to apply to the other\\nparts of the aggregate.\\n\\n 6. Conveying Non-Source Forms.\\n\\n You may convey a covered work in object code form under the terms\\nof sections 4 and 5, provided that you also convey the\\nmachine-readable Corresponding Source under the terms of this License,\\nin one of these ways:\\n\\n a) Convey the object code in, or embodied in, a physical product\\n (including a physical distribution medium), accompanied by the\\n Corresponding Source fixed on a durable physical medium\\n customarily used for software interchange.\\n\\n b) Convey the object code in, or embodied in, a physical product\\n (including a physical distribution medium), accompanied by a\\n written offer, valid for at least three years and valid for as\\n long as you offer spare parts or customer support for that product\\n model, to give anyone who possesses the object code either (1) a\\n copy of the Corresponding Source for all the software in the\\n product that is covered by this License, on a durable physical\\n medium customarily used for software interchange, for a price no\\n more than your reasonable cost of physically performing this\\n conveying of source, or (2) access to copy the\\n Corresponding Source from a network server at no charge.\\n\\n c) Convey individual copies of the object code with a copy of the\\n written offer to provide the Corresponding Source. This\\n alternative is allowed only occasionally and noncommercially, and\\n only if you received the object code with such an offer, in accord\\n with subsection 6b.\\n\\n d) Convey the object code by offering access from a designated\\n place (gratis or for a charge), and offer equivalent access to the\\n Corresponding Source in the same way through the same place at no\\n further charge. You need not require recipients to copy the\\n Corresponding Source along with the object code. If the place to\\n copy the object code is a network server, the Corresponding Source\\n may be on a different server (operated by you or a third party)\\n that supports equivalent copying facilities, provided you maintain\\n clear directions next to the object code saying where to find the\\n Corresponding Source. Regardless of what server hosts the\\n Corresponding Source, you remain obligated to ensure that it is\\n available for as long as needed to satisfy these requirements.\\n\\n e) Convey the object code using peer-to-peer transmission, provided\\n you inform other peers where the object code and Corresponding\\n Source of the work are being offered to the general public at no\\n charge under subsection 6d.\\n\\n A separable portion of the object code, whose source code is excluded\\nfrom the Corresponding Source as a System Library, need not be\\nincluded in conveying the object code work.\\n\\n A \\\"User Product\\\" is either (1) a \\\"consumer product\\\", which means any\\ntangible personal property which is normally used for personal, family,\\nor household purposes, or (2) anything designed or sold for incorporation\\ninto a dwelling. In determining whether a product is a consumer product,\\ndoubtful cases shall be resolved in favor of coverage. For a particular\\nproduct received by a particular user, \\\"normally used\\\" refers to a\\ntypical or common use of that class of product, regardless of the status\\nof the particular user or of the way in which the particular user\\nactually uses, or expects or is expected to use, the product. A product\\nis a consumer product regardless of whether the product has substantial\\ncommercial, industrial or non-consumer uses, unless such uses represent\\nthe only significant mode of use of the product.\\n\\n \\\"Installation Information\\\" for a User Product means any methods,\\nprocedures, authorization keys, or other information required to install\\nand execute modified versions of a covered work in that User Product from\\na modified version of its Corresponding Source. The information must\\nsuffice to ensure that the continued functioning of the modified object\\ncode is in no case prevented or interfered with solely because\\nmodification has been made.\\n\\n If you convey an object code work under this section in, or with, or\\nspecifically for use in, a User Product, and the conveying occurs as\\npart of a transaction in which the right of possession and use of the\\nUser Product is transferred to the recipient in perpetuity or for a\\nfixed term (regardless of how the transaction is characterized), the\\nCorresponding Source conveyed under this section must be accompanied\\nby the Installation Information. But this requirement does not apply\\nif neither you nor any third party retains the ability to install\\nmodified object code on the User Product (for example, the work has\\nbeen installed in ROM).\\n\\n The requirement to provide Installation Information does not include a\\nrequirement to continue to provide support service, warranty, or updates\\nfor a work that has been modified or installed by the recipient, or for\\nthe User Product in which it has been modified or installed. Access to a\\nnetwork may be denied when the modification itself materially and\\nadversely affects the operation of the network or violates the rules and\\nprotocols for communication across the network.\\n\\n Corresponding Source conveyed, and Installation Information provided,\\nin accord with this section must be in a format that is publicly\\ndocumented (and with an implementation available to the public in\\nsource code form), and must require no special password or key for\\nunpacking, reading or copying.\\n\\n 7. Additional Terms.\\n\\n \\\"Additional permissions\\\" are terms that supplement the terms of this\\nLicense by making exceptions from one or more of its conditions.\\nAdditional permissions that are applicable to the entire Program shall\\nbe treated as though they were included in this License, to the extent\\nthat they are valid under applicable law. If additional permissions\\napply only to part of the Program, that part may be used separately\\nunder those permissions, but the entire Program remains governed by\\nthis License without regard to the additional permissions.\\n\\n When you convey a copy of a covered work, you may at your option\\nremove any additional permissions from that copy, or from any part of\\nit. (Additional permissions may be written to require their own\\nremoval in certain cases when you modify the work.) You may place\\nadditional permissions on material, added by you to a covered work,\\nfor which you have or can give appropriate copyright permission.\\n\\n Notwithstanding any other provision of this License, for material you\\nadd to a covered work, you may (if authorized by the copyright holders of\\nthat material) supplement the terms of this License with terms:\\n\\n a) Disclaiming warranty or limiting liability differently from the\\n terms of sections 15 and 16 of this License; or\\n\\n b) Requiring preservation of specified reasonable legal notices or\\n author attributions in that material or in the Appropriate Legal\\n Notices displayed by works containing it; or\\n\\n c) Prohibiting misrepresentation of the origin of that material, or\\n requiring that modified versions of such material be marked in\\n reasonable ways as different from the original version; or\\n\\n d) Limiting the use for publicity purposes of names of licensors or\\n authors of the material; or\\n\\n e) Declining to grant rights under trademark law for use of some\\n trade names, trademarks, or service marks; or\\n\\n f) Requiring indemnification of licensors and authors of that\\n material by anyone who conveys the material (or modified versions of\\n it) with contractual assumptions of liability to the recipient, for\\n any liability that these contractual assumptions directly impose on\\n those licensors and authors.\\n\\n All other non-permissive additional terms are considered \\\"further\\nrestrictions\\\" within the meaning of section 10. If the Program as you\\nreceived it, or any part of it, contains a notice stating that it is\\ngoverned by this License along with a term that is a further\\nrestriction, you may remove that term. If a license document contains\\na further restriction but permits relicensing or conveying under this\\nLicense, you may add to a covered work material governed by the terms\\nof that license document, provided that the further restriction does\\nnot survive such relicensing or conveying.\\n\\n If you add terms to a covered work in accord with this section, you\\nmust place, in the relevant source files, a statement of the\\nadditional terms that apply to those files, or a notice indicating\\nwhere to find the applicable terms.\\n\\n Additional terms, permissive or non-permissive, may be stated in the\\nform of a separately written license, or stated as exceptions;\\nthe above requirements apply either way.\\n\\n 8. Termination.\\n\\n You may not propagate or modify a covered work except as expressly\\nprovided under this License. Any attempt otherwise to propagate or\\nmodify it is void, and will automatically terminate your rights under\\nthis License (including any patent licenses granted under the third\\nparagraph of section 11).\\n\\n However, if you cease all violation of this License, then your\\nlicense from a particular copyright holder is reinstated (a)\\nprovisionally, unless and until the copyright holder explicitly and\\nfinally terminates your license, and (b) permanently, if the copyright\\nholder fails to notify you of the violation by some reasonable means\\nprior to 60 days after the cessation.\\n\\n Moreover, your license from a particular copyright holder is\\nreinstated permanently if the copyright holder notifies you of the\\nviolation by some reasonable means, this is the first time you have\\nreceived notice of violation of this License (for any work) from that\\ncopyright holder, and you cure the violation prior to 30 days after\\nyour receipt of the notice.\\n\\n Termination of your rights under this section does not terminate the\\nlicenses of parties who have received copies or rights from you under\\nthis License. If your rights have been terminated and not permanently\\nreinstated, you do not qualify to receive new licenses for the same\\nmaterial under section 10.\\n\\n 9. Acceptance Not Required for Having Copies.\\n\\n You are not required to accept this License in order to receive or\\nrun a copy of the Program. Ancillary propagation of a covered work\\noccurring solely as a consequence of using peer-to-peer transmission\\nto receive a copy likewise does not require acceptance. However,\\nnothing other than this License grants you permission to propagate or\\nmodify any covered work. These actions infringe copyright if you do\\nnot accept this License. Therefore, by modifying or propagating a\\ncovered work, you indicate your acceptance of this License to do so.\\n\\n 10. Automatic Licensing of Downstream Recipients.\\n\\n Each time you convey a covered work, the recipient automatically\\nreceives a license from the original licensors, to run, modify and\\npropagate that work, subject to this License. You are not responsible\\nfor enforcing compliance by third parties with this License.\\n\\n An \\\"entity transaction\\\" is a transaction transferring control of an\\norganization, or substantially all assets of one, or subdividing an\\norganization, or merging organizations. If propagation of a covered\\nwork results from an entity transaction, each party to that\\ntransaction who receives a copy of the work also receives whatever\\nlicenses to the work the party's predecessor in interest had or could\\ngive under the previous paragraph, plus a right to possession of the\\nCorresponding Source of the work from the predecessor in interest, if\\nthe predecessor has it or can get it with reasonable efforts.\\n\\n You may not impose any further restrictions on the exercise of the\\nrights granted or affirmed under this License. For example, you may\\nnot impose a license fee, royalty, or other charge for exercise of\\nrights granted under this License, and you may not initiate litigation\\n(including a cross-claim or counterclaim in a lawsuit) alleging that\\nany patent claim is infringed by making, using, selling, offering for\\nsale, or importing the Program or any portion of it.\\n\\n 11. Patents.\\n\\n A \\\"contributor\\\" is a copyright holder who authorizes use under this\\nLicense of the Program or a work on which the Program is based. The\\nwork thus licensed is called the contributor's \\\"contributor version\\\".\\n\\n A contributor's \\\"essential patent claims\\\" are all patent claims\\nowned or controlled by the contributor, whether already acquired or\\nhereafter acquired, that would be infringed by some manner, permitted\\nby this License, of making, using, or selling its contributor version,\\nbut do not include claims that would be infringed only as a\\nconsequence of further modification of the contributor version. For\\npurposes of this definition, \\\"control\\\" includes the right to grant\\npatent sublicenses in a manner consistent with the requirements of\\nthis License.\\n\\n Each contributor grants you a non-exclusive, worldwide, royalty-free\\npatent license under the contributor's essential patent claims, to\\nmake, use, sell, offer for sale, import and otherwise run, modify and\\npropagate the contents of its contributor version.\\n\\n In the following three paragraphs, a \\\"patent license\\\" is any express\\nagreement or commitment, however denominated, not to enforce a patent\\n(such as an express permission to practice a patent or covenant not to\\nsue for patent infringement). To \\\"grant\\\" such a patent license to a\\nparty means to make such an agreement or commitment not to enforce a\\npatent against the party.\\n\\n If you convey a covered work, knowingly relying on a patent license,\\nand the Corresponding Source of the work is not available for anyone\\nto copy, free of charge and under the terms of this License, through a\\npublicly available network server or other readily accessible means,\\nthen you must either (1) cause the Corresponding Source to be so\\navailable, or (2) arrange to deprive yourself of the benefit of the\\npatent license for this particular work, or (3) arrange, in a manner\\nconsistent with the requirements of this License, to extend the patent\\nlicense to downstream recipients. \\\"Knowingly relying\\\" means you have\\nactual knowledge that, but for the patent license, your conveying the\\ncovered work in a country, or your recipient's use of the covered work\\nin a country, would infringe one or more identifiable patents in that\\ncountry that you have reason to believe are valid.\\n\\n If, pursuant to or in connection with a single transaction or\\narrangement, you convey, or propagate by procuring conveyance of, a\\ncovered work, and grant a patent license to some of the parties\\nreceiving the covered work authorizing them to use, propagate, modify\\nor convey a specific copy of the covered work, then the patent license\\nyou grant is automatically extended to all recipients of the covered\\nwork and works based on it.\\n\\n A patent license is \\\"discriminatory\\\" if it does not include within\\nthe scope of its coverage, prohibits the exercise of, or is\\nconditioned on the non-exercise of one or more of the rights that are\\nspecifically granted under this License. You may not convey a covered\\nwork if you are a party to an arrangement with a third party that is\\nin the business of distributing software, under which you make payment\\nto the third party based on the extent of your activity of conveying\\nthe work, and under which the third party grants, to any of the\\nparties who would receive the covered work from you, a discriminatory\\npatent license (a) in connection with copies of the covered work\\nconveyed by you (or copies made from those copies), or (b) primarily\\nfor and in connection with specific products or compilations that\\ncontain the covered work, unless you entered into that arrangement,\\nor that patent license was granted, prior to 28 March 2007.\\n\\n Nothing in this License shall be construed as excluding or limiting\\nany implied license or other defenses to infringement that may\\notherwise be available to you under applicable patent law.\\n\\n 12. No Surrender of Others' Freedom.\\n\\n If conditions are imposed on you (whether by court order, agreement or\\notherwise) that contradict the conditions of this License, they do not\\nexcuse you from the conditions of this License. If you cannot convey a\\ncovered work so as to satisfy simultaneously your obligations under this\\nLicense and any other pertinent obligations, then as a consequence you may\\nnot convey it at all. For example, if you agree to terms that obligate you\\nto collect a royalty for further conveying from those to whom you convey\\nthe Program, the only way you could satisfy both those terms and this\\nLicense would be to refrain entirely from conveying the Program.\\n\\n 13. Use with the GNU Affero General Public License.\\n\\n Notwithstanding any other provision of this License, you have\\npermission to link or combine any covered work with a work licensed\\nunder version 3 of the GNU Affero General Public License into a single\\ncombined work, and to convey the resulting work. The terms of this\\nLicense will continue to apply to the part which is the covered work,\\nbut the special requirements of the GNU Affero General Public License,\\nsection 13, concerning interaction through a network will apply to the\\ncombination as such.\\n\\n 14. Revised Versions of this License.\\n\\n The Free Software Foundation may publish revised and/or new versions of\\nthe GNU General Public License from time to time. Such new versions will\\nbe similar in spirit to the present version, but may differ in detail to\\naddress new problems or concerns.\\n\\n Each version is given a distinguishing version number. If the\\nProgram specifies that a certain numbered version of the GNU General\\nPublic License \\\"or any later version\\\" applies to it, you have the\\noption of following the terms and conditions either of that numbered\\nversion or of any later version published by the Free Software\\nFoundation. If the Program does not specify a version number of the\\nGNU General Public License, you may choose any version ever published\\nby the Free Software Foundation.\\n\\n If the Program specifies that a proxy can decide which future\\nversions of the GNU General Public License can be used, that proxy's\\npublic statement of acceptance of a version permanently authorizes you\\nto choose that version for the Program.\\n\\n Later license versions may give you additional or different\\npermissions. However, no additional obligations are imposed on any\\nauthor or copyright holder as a result of your choosing to follow a\\nlater version.\\n\\n 15. Disclaimer of Warranty.\\n\\n THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\\nAPPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \\\"AS IS\\\" WITHOUT WARRANTY\\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\\nPURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\\nIS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\\n\\n 16. Limitation of Liability.\\n\\n IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\\nSUCH DAMAGES.\\n\\n 17. Interpretation of Sections 15 and 16.\\n\\n If the disclaimer of warranty and limitation of liability provided\\nabove cannot be given local legal effect according to their terms,\\nreviewing courts shall apply local law that most closely approximates\\nan absolute waiver of all civil liability in connection with the\\nProgram, unless a warranty or assumption of liability accompanies a\\ncopy of the Program in return for a fee.\\n\\n END OF TERMS AND CONDITIONS\\n\\n How to Apply These Terms to Your New Programs\\n\\n If you develop a new program, and you want it to be of the greatest\\npossible use to the public, the best way to achieve this is to make it\\nfree software which everyone can redistribute and change under these terms.\\n\\n To do so, attach the following notices to the program. It is safest\\nto attach them to the start of each source file to most effectively\\nstate the exclusion of warranty; and each file should have at least\\nthe \\\"copyright\\\" line and a pointer to where the full notice is found.\\n\\n \\n Copyright (C) \\n\\n This program is free software: you can redistribute it and/or modify\\n it under the terms of the GNU General Public License as published by\\n the Free Software Foundation, either version 3 of the License, or\\n (at your option) any later version.\\n\\n This program is distributed in the hope that it will be useful,\\n but WITHOUT ANY WARRANTY; without even the implied warranty of\\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n GNU General Public License for more details.\\n\\n You should have received a copy of the GNU General Public License\\n along with this program. If not, see .\\n\\nAlso add information on how to contact you by electronic and paper mail.\\n\\n If the program does terminal interaction, make it output a short\\nnotice like this when it starts in an interactive mode:\\n\\n Copyright (C) \\n This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\\n This is free software, and you are welcome to redistribute it\\n under certain conditions; type `show c' for details.\\n\\nThe hypothetical commands `show w' and `show c' should show the appropriate\\nparts of the General Public License. Of course, your program's commands\\nmight be different; for a GUI interface, you would use an \\\"about box\\\".\\n\\n You should also get your employer (if you work as a programmer) or school,\\nif any, to sign a \\\"copyright disclaimer\\\" for the program, if necessary.\\nFor more information on this, and how to apply and follow the GNU GPL, see\\n.\\n\\n The GNU General Public License does not permit incorporating your program\\ninto proprietary programs. If your program is a subroutine library, you\\nmay consider it more useful to permit linking proprietary applications with\\nthe library. If this is what you want to do, use the GNU Lesser General\\nPublic License instead of this License. But first, please read\\n.\\n\\n*/\",\"keccak256\":\"0x19e3cb202ea9d710e94268f280599f35eefe127cb91fdedc8acd8dffa70dad33\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 38, + "contract": "contracts/ERC20/WETH.sol:WETH", + "label": "name", + "offset": 0, + "slot": "0", + "type": "t_string_storage" + }, + { + "astId": 41, + "contract": "contracts/ERC20/WETH.sol:WETH", + "label": "symbol", + "offset": 0, + "slot": "1", + "type": "t_string_storage" + }, + { + "astId": 44, + "contract": "contracts/ERC20/WETH.sol:WETH", + "label": "decimals", + "offset": 0, + "slot": "2", + "type": "t_uint8" + }, + { + "astId": 76, + "contract": "contracts/ERC20/WETH.sol:WETH", + "label": "balanceOf", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 82, + "contract": "contracts/ERC20/WETH.sol:WETH", + "label": "allowance", + "offset": 0, + "slot": "4", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32", + "value": "t_mapping(t_address,t_uint256)" + }, + "t_mapping(t_address,t_uint256)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_string_storage": { + "encoding": "bytes", + "label": "string", + "numberOfBytes": "32" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "encoding": "inplace", + "label": "uint8", + "numberOfBytes": "1" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "sources": { + "contracts/ERC20/IWETH.sol": { + "ast": { + "absolutePath": "contracts/ERC20/IWETH.sol", + "exportedSymbols": { + "IWETH": [ + 30 + ] + }, + "id": 31, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": null, + "fullyImplemented": false, + "id": 30, + "linearizedBaseContracts": [ + 30 + ], + "name": "IWETH", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "functionSelector": "d0e30db0", + "id": 4, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "deposit", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2, + "nodeType": "ParameterList", + "parameters": [], + "src": "97:2:0" + }, + "returnParameters": { + "id": 3, + "nodeType": "ParameterList", + "parameters": [], + "src": "116:0:0" + }, + "scope": 30, + "src": "81:36:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "a9059cbb", + "id": 13, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13, + "src": "140:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "140:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13, + "src": "152:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "152:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "139:24:0" + }, + "returnParameters": { + "id": 12, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13, + "src": "182:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "182:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "181:6:0" + }, + "scope": 30, + "src": "122:66:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "23b872dd", + "id": 24, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 20, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15, + "mutability": "mutable", + "name": "src", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 24, + "src": "215:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "215:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 17, + "mutability": "mutable", + "name": "dst", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 24, + "src": "228:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "228:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 19, + "mutability": "mutable", + "name": "wad", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 24, + "src": "241:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 18, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "241:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "214:36:0" + }, + "returnParameters": { + "id": 23, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 22, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 24, + "src": "269:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 21, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "269:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "268:6:0" + }, + "scope": 30, + "src": "193:82:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "2e1a7d4d", + "id": 29, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "withdraw", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 27, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 26, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 29, + "src": "298:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 25, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "298:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "297:6:0" + }, + "returnParameters": { + "id": 28, + "nodeType": "ParameterList", + "parameters": [], + "src": "312:0:0" + }, + "scope": 30, + "src": "280:33:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 31, + "src": "59:256:0" + } + ], + "src": "32:283:0" + }, + "id": 0 + }, + "contracts/ERC20/WETH.sol": { + "ast": { + "absolutePath": "contracts/ERC20/WETH.sol", + "exportedSymbols": { + "WETH": [ + 301 + ] + }, + "id": 302, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 32, + "literals": [ + "solidity", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:23:1" + }, + { + "absolutePath": "contracts/ERC20/IWETH.sol", + "file": "./IWETH.sol", + "id": 33, + "nodeType": "ImportDirective", + "scope": 302, + "sourceUnit": 31, + "src": "57:21:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 34, + "name": "IWETH", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 30, + "src": "783:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWETH_$30", + "typeString": "contract IWETH" + } + }, + "id": 35, + "nodeType": "InheritanceSpecifier", + "src": "783:5:1" + } + ], + "contractDependencies": [ + 30 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 301, + "linearizedBaseContracts": [ + 301, + 30 + ], + "name": "WETH", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "06fdde03", + "id": 38, + "mutability": "mutable", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 301, + "src": "795:40:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 36, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "795:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "57726170706564204574686572", + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "820:15:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_00cd3d46df44f2cbb950cf84eb2e92aa2ddd23195b1a009173ea59a063357ed3", + "typeString": "literal_string \"Wrapped Ether\"" + }, + "value": "Wrapped Ether" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "95d89b41", + "id": 41, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 301, + "src": "841:31:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 39, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "841:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "57455448", + "id": 40, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "866:6:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0f8a193ff464434486c0daf7db2a895884365d2bc84ba47a68fcf89c1b14b5b8", + "typeString": "literal_string \"WETH\"" + }, + "value": "WETH" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "313ce567", + "id": 44, + "mutability": "mutable", + "name": "decimals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 301, + "src": "878:27:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 42, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "878:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3138", + "id": 43, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "903:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 52, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 51, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 46, + "indexed": true, + "mutability": "mutable", + "name": "src", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 52, + "src": "928:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 45, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "928:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 48, + "indexed": true, + "mutability": "mutable", + "name": "guy", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 52, + "src": "949:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 47, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "949:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 50, + "indexed": false, + "mutability": "mutable", + "name": "wad", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 52, + "src": "970:8:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 49, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "970:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "927:52:1" + }, + "src": "912:68:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 60, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 59, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 54, + "indexed": true, + "mutability": "mutable", + "name": "src", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 60, + "src": "1001:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 53, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1001:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 56, + "indexed": true, + "mutability": "mutable", + "name": "dst", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 60, + "src": "1022:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 55, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1022:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 58, + "indexed": false, + "mutability": "mutable", + "name": "wad", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 60, + "src": "1043:8:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1043:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1000:52:1" + }, + "src": "985:68:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 66, + "name": "Deposit", + "nodeType": "EventDefinition", + "parameters": { + "id": 65, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 62, + "indexed": true, + "mutability": "mutable", + "name": "dst", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 66, + "src": "1073:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 61, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1073:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 64, + "indexed": false, + "mutability": "mutable", + "name": "wad", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 66, + "src": "1094:8:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 63, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1094:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1072:31:1" + }, + "src": "1058:46:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 72, + "name": "Withdrawal", + "nodeType": "EventDefinition", + "parameters": { + "id": 71, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 68, + "indexed": true, + "mutability": "mutable", + "name": "src", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 72, + "src": "1127:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 67, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1127:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 70, + "indexed": false, + "mutability": "mutable", + "name": "wad", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 72, + "src": "1148:8:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 69, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1148:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1126:31:1" + }, + "src": "1109:49:1" + }, + { + "constant": false, + "functionSelector": "70a08231", + "id": 76, + "mutability": "mutable", + "name": "balanceOf", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 301, + "src": "1164:65:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 75, + "keyType": { + "id": 73, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1173:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1164:25:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 74, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1184:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "dd62ed3e", + "id": 82, + "mutability": "mutable", + "name": "allowance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 301, + "src": "1235:65:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 81, + "keyType": { + "id": 77, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1244:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1235:46:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 80, + "keyType": { + "id": 78, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1264:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1255:25:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 79, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1275:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 88, + "nodeType": "Block", + "src": "1335:26:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 85, + "name": "deposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125, + "src": "1345:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 86, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1345:9:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 87, + "nodeType": "ExpressionStatement", + "src": "1345:9:1" + } + ] + }, + "documentation": null, + "id": 89, + "implemented": true, + "kind": "fallback", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 83, + "nodeType": "ParameterList", + "parameters": [], + "src": "1315:2:1" + }, + "returnParameters": { + "id": 84, + "nodeType": "ParameterList", + "parameters": [], + "src": "1335:0:1" + }, + "scope": 301, + "src": "1307:54:1", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 92, + "nodeType": "Block", + "src": "1394:3:1", + "statements": [] + }, + "documentation": null, + "id": 93, + "implemented": true, + "kind": "receive", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 90, + "nodeType": "ParameterList", + "parameters": [], + "src": "1374:2:1" + }, + "returnParameters": { + "id": 91, + "nodeType": "ParameterList", + "parameters": [], + "src": "1394:0:1" + }, + "scope": 301, + "src": "1367:30:1", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 104, + "nodeType": "Block", + "src": "1455:85:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 98, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "1465:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 100, + "indexExpression": { + "argumentTypes": null, + "id": 99, + "name": "_creator_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 95, + "src": "1475:16:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1465:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31303030303030653138", + "id": 101, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1495:10:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000000000000000000000_by_1", + "typeString": "int_const 1000000000000000000000000" + }, + "value": "1000000e18" + }, + "src": "1465:40:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 103, + "nodeType": "ExpressionStatement", + "src": "1465:40:1" + } + ] + }, + "documentation": null, + "id": 105, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 96, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 95, + "mutability": "mutable", + "name": "_creator_address", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 105, + "src": "1416:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 94, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1416:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1415:27:1" + }, + "returnParameters": { + "id": 97, + "nodeType": "ParameterList", + "parameters": [], + "src": "1455:0:1" + }, + "scope": 301, + "src": "1403:137:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 4 + ], + "body": { + "id": 124, + "nodeType": "Block", + "src": "1590:96:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 109, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "1600:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 112, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 110, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1610:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1610:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1600:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 113, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1625:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1625:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1600:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 116, + "nodeType": "ExpressionStatement", + "src": "1600:34:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 118, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1657:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1657:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 120, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1669:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1669:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 117, + "name": "Deposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66, + "src": "1649:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1649:30:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 123, + "nodeType": "EmitStatement", + "src": "1644:35:1" + } + ] + }, + "documentation": null, + "functionSelector": "d0e30db0", + "id": 125, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deposit", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 107, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1573:8:1" + }, + "parameters": { + "id": 106, + "nodeType": "ParameterList", + "parameters": [], + "src": "1563:2:1" + }, + "returnParameters": { + "id": 108, + "nodeType": "ParameterList", + "parameters": [], + "src": "1590:0:1" + }, + "scope": 301, + "src": "1547:139:1", + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 29 + ], + "body": { + "id": 161, + "nodeType": "Block", + "src": "1735:168:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 132, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "1753:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 135, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 133, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1763:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1763:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1753:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 136, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "1778:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1753:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 131, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1745:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1745:37:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 139, + "nodeType": "ExpressionStatement", + "src": "1745:37:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 140, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "1792:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 143, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 141, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1802:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1802:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1792:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "id": 144, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "1817:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1792:28:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 146, + "nodeType": "ExpressionStatement", + "src": "1792:28:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 152, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "1850:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 147, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1830:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1830:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1830:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1830:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 154, + "nodeType": "ExpressionStatement", + "src": "1830:24:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 156, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1880:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1880:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 158, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "1892:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 155, + "name": "Withdrawal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 72, + "src": "1869:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1869:27:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 160, + "nodeType": "EmitStatement", + "src": "1864:32:1" + } + ] + }, + "documentation": null, + "functionSelector": "2e1a7d4d", + "id": 162, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdraw", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 129, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1719:8:1" + }, + "parameters": { + "id": 128, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 127, + "mutability": "mutable", + "name": "wad", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 162, + "src": "1709:8:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 126, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1709:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1708:10:1" + }, + "returnParameters": { + "id": 130, + "nodeType": "ParameterList", + "parameters": [], + "src": "1735:0:1" + }, + "scope": 301, + "src": "1691:212:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 173, + "nodeType": "Block", + "src": "1959:45:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 169, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1984:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WETH_$301", + "typeString": "contract WETH" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_WETH_$301", + "typeString": "contract WETH" + } + ], + "id": 168, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1976:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 167, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1976:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1976:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1976:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 166, + "id": 172, + "nodeType": "Return", + "src": "1969:28:1" + } + ] + }, + "documentation": null, + "functionSelector": "18160ddd", + "id": 174, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 163, + "nodeType": "ParameterList", + "parameters": [], + "src": "1929:2:1" + }, + "returnParameters": { + "id": 166, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 165, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 174, + "src": "1953:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 164, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1953:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1952:6:1" + }, + "scope": 301, + "src": "1909:95:1", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 201, + "nodeType": "Block", + "src": "2072:115:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 183, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 82, + "src": "2082:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 187, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 184, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2092:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2092:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2082:21:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 188, + "indexExpression": { + "argumentTypes": null, + "id": 186, + "name": "guy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 176, + "src": "2104:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2082:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 189, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 178, + "src": "2111:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2082:32:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 191, + "nodeType": "ExpressionStatement", + "src": "2082:32:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 193, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2138:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2138:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 195, + "name": "guy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 176, + "src": "2150:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 196, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 178, + "src": "2155:3:1", + "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": 192, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "2129:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2129:30:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 198, + "nodeType": "EmitStatement", + "src": "2124:35:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 199, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2176:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 182, + "id": 200, + "nodeType": "Return", + "src": "2169:11:1" + } + ] + }, + "documentation": null, + "functionSelector": "095ea7b3", + "id": 202, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 179, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 176, + "mutability": "mutable", + "name": "guy", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 202, + "src": "2027:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 175, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2027:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 178, + "mutability": "mutable", + "name": "wad", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 202, + "src": "2040:8:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 177, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2040:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2026:23:1" + }, + "returnParameters": { + "id": 182, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 181, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 202, + "src": "2066:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 180, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2066:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2065:6:1" + }, + "scope": 301, + "src": "2010:177:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 13 + ], + "body": { + "id": 219, + "nodeType": "Block", + "src": "2265:58:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 213, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2295:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2295:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 215, + "name": "dst", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 204, + "src": "2307:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 216, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 206, + "src": "2312:3:1", + "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": 212, + "name": "transferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 300, + "src": "2282:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) returns (bool)" + } + }, + "id": 217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2282:34:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 211, + "id": 218, + "nodeType": "Return", + "src": "2275:41:1" + } + ] + }, + "documentation": null, + "functionSelector": "a9059cbb", + "id": 220, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 208, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2241:8:1" + }, + "parameters": { + "id": 207, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 204, + "mutability": "mutable", + "name": "dst", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 220, + "src": "2211:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 203, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2211:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 206, + "mutability": "mutable", + "name": "wad", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 220, + "src": "2224:8:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 205, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2224:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2210:23:1" + }, + "returnParameters": { + "id": 211, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 210, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 220, + "src": "2259:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 209, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2259:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2258:6:1" + }, + "scope": 301, + "src": "2193:130:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 24 + ], + "body": { + "id": 299, + "nodeType": "Block", + "src": "2446:366:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 233, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "2464:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 235, + "indexExpression": { + "argumentTypes": null, + "id": 234, + "name": "src", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "2474:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2464:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 236, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 226, + "src": "2482:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2464:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 232, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2456:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2456:30:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 239, + "nodeType": "ExpressionStatement", + "src": "2456:30:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 240, + "name": "src", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "2501:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 241, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2508:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2508:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2501:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 244, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 82, + "src": "2522:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 246, + "indexExpression": { + "argumentTypes": null, + "id": 245, + "name": "src", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "2532:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2522:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 249, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 247, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2537:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2537:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2522:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2557:4:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 251, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2557:4:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 250, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "2552:4:1", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 253, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2552:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 254, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "max", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2552:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2522:44:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2501:65:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 278, + "nodeType": "IfStatement", + "src": "2497:185:1", + "trueBody": { + "id": 277, + "nodeType": "Block", + "src": "2568:114:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 258, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 82, + "src": "2590:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 260, + "indexExpression": { + "argumentTypes": null, + "id": 259, + "name": "src", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "2600:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2590:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 263, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 261, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2605:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2605:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2590:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 264, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 226, + "src": "2620:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2590:33:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 257, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2582:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2582:42:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 267, + "nodeType": "ExpressionStatement", + "src": "2582:42:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 268, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 82, + "src": "2638:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 272, + "indexExpression": { + "argumentTypes": null, + "id": 269, + "name": "src", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "2648:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2638:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 273, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 270, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2653:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2653:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2638:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "id": 274, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 226, + "src": "2668:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2638:33:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 276, + "nodeType": "ExpressionStatement", + "src": "2638:33:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 279, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "2692:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 281, + "indexExpression": { + "argumentTypes": null, + "id": 280, + "name": "src", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "2702:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2692:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "id": 282, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 226, + "src": "2710:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2692:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 284, + "nodeType": "ExpressionStatement", + "src": "2692:21:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 285, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "2723:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 287, + "indexExpression": { + "argumentTypes": null, + "id": 286, + "name": "dst", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "2733:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2723:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "id": 288, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 226, + "src": "2741:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2723:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 290, + "nodeType": "ExpressionStatement", + "src": "2723:21:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 292, + "name": "src", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "2769:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 293, + "name": "dst", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "2774:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 294, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 226, + "src": "2779:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 291, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 60, + "src": "2760:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2760:23:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 296, + "nodeType": "EmitStatement", + "src": "2755:28:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 297, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2801:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 231, + "id": 298, + "nodeType": "Return", + "src": "2794:11:1" + } + ] + }, + "documentation": null, + "functionSelector": "23b872dd", + "id": 300, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 228, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2410:8:1" + }, + "parameters": { + "id": 227, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 222, + "mutability": "mutable", + "name": "src", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 300, + "src": "2351:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 221, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2351:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 224, + "mutability": "mutable", + "name": "dst", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 300, + "src": "2364:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 223, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2364:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 226, + "mutability": "mutable", + "name": "wad", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 300, + "src": "2377:8:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 225, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2377:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2350:36:1" + }, + "returnParameters": { + "id": 231, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 230, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 300, + "src": "2436:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 229, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2436:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2435:6:1" + }, + "scope": 301, + "src": "2329:483:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 302, + "src": "766:2048:1" + } + ], + "src": "32:37938:1" + }, + "id": 1 + } + } + } +} diff --git a/artifacts/build-info/3bb7c9fe44c5918ab8079a758e4f3c18.json b/artifacts/build-info/3bb7c9fe44c5918ab8079a758e4f3c18.json new file mode 100644 index 00000000..214acd2e --- /dev/null +++ b/artifacts/build-info/3bb7c9fe44c5918ab8079a758e4f3c18.json @@ -0,0 +1,587 @@ +{ + "id": "3bb7c9fe44c5918ab8079a758e4f3c18", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.10", + "solcLongVersion": "0.8.10+commit.fc410830", + "input": { + "language": "Solidity", + "sources": { + "contracts/Utils/ReentrancyGuard.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuard {\n // Booleans are more expensive than uint256 or any type that takes up a full\n // word because each write operation emits an extra SLOAD to first read the\n // slot's contents, replace the bits taken up by the boolean, and then write\n // back. This is the compiler's defense against contract upgrades and\n // pointer aliasing, and it cannot be disabled.\n\n // The values being non-zero value makes deployment a bit more expensive,\n // but in exchange the refund on every call to nonReentrant will be lower in\n // amount. Since refunds are capped to a percentage of the total\n // transaction's gas, it is best to keep them low in cases like this one, to\n // increase the likelihood of the full refund coming into effect.\n uint256 private constant _NOT_ENTERED = 1;\n uint256 private constant _ENTERED = 2;\n\n uint256 private _status;\n\n constructor () internal {\n _status = _NOT_ENTERED;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant`\n * function is not supported. It is possible to prevent this from happening\n * by making the `nonReentrant` function external, and make it call a\n * `private` function that does the actual work.\n */\n modifier nonReentrant() {\n // On the first call to nonReentrant, _notEntered will be true\n require(_status != _ENTERED, \"ReentrancyGuard: reentrant call\");\n\n // Any calls to nonReentrant after this point will fail\n _status = _ENTERED;\n\n _;\n\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n _status = _NOT_ENTERED;\n }\n}" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "output": { + "contracts": { + "contracts/Utils/ReentrancyGuard.sol": { + "ReentrancyGuard": { + "abi": [], + "devdoc": { + "details": "Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].", + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Utils/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Utils/ReentrancyGuard.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuard {\\n // Booleans are more expensive than uint256 or any type that takes up a full\\n // word because each write operation emits an extra SLOAD to first read the\\n // slot's contents, replace the bits taken up by the boolean, and then write\\n // back. This is the compiler's defense against contract upgrades and\\n // pointer aliasing, and it cannot be disabled.\\n\\n // The values being non-zero value makes deployment a bit more expensive,\\n // but in exchange the refund on every call to nonReentrant will be lower in\\n // amount. Since refunds are capped to a percentage of the total\\n // transaction's gas, it is best to keep them low in cases like this one, to\\n // increase the likelihood of the full refund coming into effect.\\n uint256 private constant _NOT_ENTERED = 1;\\n uint256 private constant _ENTERED = 2;\\n\\n uint256 private _status;\\n\\n constructor () internal {\\n _status = _NOT_ENTERED;\\n }\\n\\n /**\\n * @dev Prevents a contract from calling itself, directly or indirectly.\\n * Calling a `nonReentrant` function from another `nonReentrant`\\n * function is not supported. It is possible to prevent this from happening\\n * by making the `nonReentrant` function external, and make it call a\\n * `private` function that does the actual work.\\n */\\n modifier nonReentrant() {\\n // On the first call to nonReentrant, _notEntered will be true\\n require(_status != _ENTERED, \\\"ReentrancyGuard: reentrant call\\\");\\n\\n // Any calls to nonReentrant after this point will fail\\n _status = _ENTERED;\\n\\n _;\\n\\n // By storing the original value once again, a refund is triggered (see\\n // https://eips.ethereum.org/EIPS/eip-2200)\\n _status = _NOT_ENTERED;\\n }\\n}\",\"keccak256\":\"0xd9ba5798bbb966d8334f8e17d30c4605d2e7ce27413b5fb260043abb7dc3a784\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 10, + "contract": "contracts/Utils/ReentrancyGuard.sol:ReentrancyGuard", + "label": "_status", + "offset": 0, + "slot": "0", + "type": "t_uint256" + } + ], + "types": { + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "errors": [ + { + "component": "general", + "errorCode": "2462", + "formattedMessage": "Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n --> contracts/Utils/ReentrancyGuard.sol:37:5:\n |\n37 | constructor () internal {\n | ^ (Relevant source part starts here and spans across multiple lines).\n\n", + "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.", + "severity": "warning", + "sourceLocation": { + "end": 1782, + "file": "contracts/Utils/ReentrancyGuard.sol", + "start": 1719 + }, + "type": "Warning" + } + ], + "sources": { + "contracts/Utils/ReentrancyGuard.sol": { + "ast": { + "absolutePath": "contracts/Utils/ReentrancyGuard.sol", + "exportedSymbols": { + "ReentrancyGuard": [ + 39 + ] + }, + "id": 40, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:0" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "ReentrancyGuard", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2, + "nodeType": "StructuredDocumentation", + "src": "59:750:0", + "text": " @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]." + }, + "fullyImplemented": true, + "id": 39, + "linearizedBaseContracts": [ + 39 + ], + "name": "ReentrancyGuard", + "nameLocation": "828:15:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 5, + "mutability": "constant", + "name": "_NOT_ENTERED", + "nameLocation": "1623:12:0", + "nodeType": "VariableDeclaration", + "scope": 39, + "src": "1598:41:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1598:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "31", + "id": 4, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1638:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 8, + "mutability": "constant", + "name": "_ENTERED", + "nameLocation": "1670:8:0", + "nodeType": "VariableDeclaration", + "scope": 39, + "src": "1645:37:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1645:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "32", + "id": 7, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1681:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "visibility": "private" + }, + { + "constant": false, + "id": 10, + "mutability": "mutable", + "name": "_status", + "nameLocation": "1705:7:0", + "nodeType": "VariableDeclaration", + "scope": 39, + "src": "1689:23:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1689:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 17, + "nodeType": "Block", + "src": "1743:39:0", + "statements": [ + { + "expression": { + "id": 15, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 13, + "name": "_status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "1753:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 14, + "name": "_NOT_ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "1763:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1753:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 16, + "nodeType": "ExpressionStatement", + "src": "1753:22:0" + } + ] + }, + "id": 18, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11, + "nodeType": "ParameterList", + "parameters": [], + "src": "1731:2:0" + }, + "returnParameters": { + "id": 12, + "nodeType": "ParameterList", + "parameters": [], + "src": "1743:0:0" + }, + "scope": 39, + "src": "1719:63:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 37, + "nodeType": "Block", + "src": "2181:421:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 24, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 22, + "name": "_status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "2270:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 23, + "name": "_ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "2281:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2270:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c", + "id": 25, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2291:33:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619", + "typeString": "literal_string \"ReentrancyGuard: reentrant call\"" + }, + "value": "ReentrancyGuard: reentrant call" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619", + "typeString": "literal_string \"ReentrancyGuard: reentrant call\"" + } + ], + "id": 21, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2262:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 26, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2262:63:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 27, + "nodeType": "ExpressionStatement", + "src": "2262:63:0" + }, + { + "expression": { + "id": 30, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 28, + "name": "_status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "2400:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 29, + "name": "_ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "2410:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2400:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 31, + "nodeType": "ExpressionStatement", + "src": "2400:18:0" + }, + { + "id": 32, + "nodeType": "PlaceholderStatement", + "src": "2429:1:0" + }, + { + "expression": { + "id": 35, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 33, + "name": "_status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "2573:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 34, + "name": "_NOT_ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "2583:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2573:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 36, + "nodeType": "ExpressionStatement", + "src": "2573:22:0" + } + ] + }, + "documentation": { + "id": 19, + "nodeType": "StructuredDocumentation", + "src": "1788:364:0", + "text": " @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and make it call a\n `private` function that does the actual work." + }, + "id": 38, + "name": "nonReentrant", + "nameLocation": "2166:12:0", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 20, + "nodeType": "ParameterList", + "parameters": [], + "src": "2178:2:0" + }, + "src": "2157:445:0", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 40, + "src": "810:1794:0", + "usedErrors": [] + } + ], + "src": "32:2572:0" + }, + "id": 0 + } + } + } +} diff --git a/artifacts/build-info/4307b0d46cd92cef19f6019223420ca5.json b/artifacts/build-info/4307b0d46cd92cef19f6019223420ca5.json new file mode 100644 index 00000000..7a9b856c --- /dev/null +++ b/artifacts/build-info/4307b0d46cd92cef19f6019223420ca5.json @@ -0,0 +1,2567 @@ +{ + "id": "4307b0d46cd92cef19f6019223420ca5", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.10", + "solcLongVersion": "0.8.10+commit.fc410830", + "input": { + "language": "Solidity", + "sources": { + "contracts/ERC721/V8_0_0/Math/SafeMath.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.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, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\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\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 * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n return sub(a, b, \"SafeMath: subtraction overflow\");\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 * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n * - Subtraction cannot overflow.\n *\n * _Available since v2.4.0._\n */\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b <= a, errorMessage);\n uint256 c = a - b;\n\n return c;\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 * - Multiplication cannot overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (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) {\n return 0;\n }\n\n uint256 c = a * b;\n require(c / a == b, \"SafeMath: multiplication overflow\");\n\n return c;\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers. Reverts 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 * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n return div(a, b, \"SafeMath: division by zero\");\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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 * - The divisor cannot be zero.\n *\n * _Available since v2.4.0._\n */\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n // Solidity only automatically asserts when dividing by 0\n require(b > 0, errorMessage);\n uint256 c = a / b;\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\n\n return c;\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * Reverts 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 * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n return mod(a, b, \"SafeMath: modulo by zero\");\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * Reverts with custom message 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 * - The divisor cannot be zero.\n *\n * _Available since v2.4.0._\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}" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "output": { + "contracts": { + "contracts/ERC721/V8_0_0/Math/SafeMath.sol": { + "SafeMath": { + "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 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203e35baa8bb769f3aea652aea08ca0c0cd527c6aa52d519f890cb179814cdf66064736f6c634300080a0033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATACOPY CALLDATALOAD 0xBA 0xA8 0xBB PUSH23 0x9F3AEA652AEA08CA0C0CD527C6AA52D519F890CB179814 0xCD 0xF6 PUSH1 0x64 PUSH20 0x6F6C634300080A00330000000000000000000000 ", + "sourceMap": "621:4708:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;621:4708:0;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203e35baa8bb769f3aea652aea08ca0c0cd527c6aa52d519f890cb179814cdf66064736f6c634300080a0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATACOPY CALLDATALOAD 0xBA 0xA8 0xBB PUSH23 0x9F3AEA652AEA08CA0C0CD527C6AA52D519F890CB179814 0xCD 0xF6 PUSH1 0x64 PUSH20 0x6F6C634300080A00330000000000000000000000 ", + "sourceMap": "621:4708:0:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17200", + "executionCost": "103", + "totalCost": "17303" + }, + "internal": { + "add(uint256,uint256)": "infinite", + "div(uint256,uint256)": "infinite", + "div(uint256,uint256,string memory)": "infinite", + "mod(uint256,uint256)": "infinite", + "mod(uint256,uint256,string memory)": "infinite", + "mul(uint256,uint256)": "infinite", + "sub(uint256,uint256)": "infinite", + "sub(uint256,uint256,string memory)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"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\":{\"contracts/ERC721/V8_0_0/Math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/ERC721/V8_0_0/Math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.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, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\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\\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 * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\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 * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\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 * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (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) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts 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 * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts 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 * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\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}\",\"keccak256\":\"0x5a018e9c8baddb7d46b3be9c109f86a2eb2a6d218e76a08e66e8e7ec9cc1c71f\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "sources": { + "contracts/ERC721/V8_0_0/Math/SafeMath.sol": { + "ast": { + "absolutePath": "contracts/ERC721/V8_0_0/Math/SafeMath.sol", + "exportedSymbols": { + "SafeMath": [ + 195 + ] + }, + "id": 196, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "32:23:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "SafeMath", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 2, + "nodeType": "StructuredDocumentation", + "src": "57:563:0", + "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": 195, + "linearizedBaseContracts": [ + 195 + ], + "name": "SafeMath", + "nameLocation": "629:8:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 27, + "nodeType": "Block", + "src": "933:109:0", + "statements": [ + { + "assignments": [ + 13 + ], + "declarations": [ + { + "constant": false, + "id": 13, + "mutability": "mutable", + "name": "c", + "nameLocation": "951:1:0", + "nodeType": "VariableDeclaration", + "scope": 27, + "src": "943:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "943:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 17, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 16, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 14, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "955:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 15, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "959:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "955:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "943:17:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 21, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 19, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13, + "src": "978:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 20, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "983:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "978:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77", + "id": 22, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "986:29:0", + "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": 18, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "970:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 23, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "970:46:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 24, + "nodeType": "ExpressionStatement", + "src": "970:46:0" + }, + { + "expression": { + "id": 25, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13, + "src": "1034:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 11, + "id": 26, + "nodeType": "Return", + "src": "1027:8:0" + } + ] + }, + "documentation": { + "id": 3, + "nodeType": "StructuredDocumentation", + "src": "644:217:0", + "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": 28, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "875:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5, + "mutability": "mutable", + "name": "a", + "nameLocation": "887:1:0", + "nodeType": "VariableDeclaration", + "scope": 28, + "src": "879:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "879:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7, + "mutability": "mutable", + "name": "b", + "nameLocation": "898:1:0", + "nodeType": "VariableDeclaration", + "scope": 28, + "src": "890:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "890:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "878:22:0" + }, + "returnParameters": { + "id": 11, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 28, + "src": "924:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "924:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "923:9:0" + }, + "scope": 195, + "src": "866:176:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 44, + "nodeType": "Block", + "src": "1373:67:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 39, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31, + "src": "1394:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 40, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33, + "src": "1397:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "536166654d6174683a207375627472616374696f6e206f766572666c6f77", + "id": 41, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1400:32:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862", + "typeString": "literal_string \"SafeMath: subtraction overflow\"" + }, + "value": "SafeMath: subtraction overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862", + "typeString": "literal_string \"SafeMath: subtraction overflow\"" + } + ], + "id": 38, + "name": "sub", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 45, + 73 + ], + "referencedDeclaration": 73, + "src": "1390:3:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 42, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1390:43:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 37, + "id": 43, + "nodeType": "Return", + "src": "1383:50:0" + } + ] + }, + "documentation": { + "id": 29, + "nodeType": "StructuredDocumentation", + "src": "1048:253:0", + "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": 45, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nameLocation": "1315:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 34, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 31, + "mutability": "mutable", + "name": "a", + "nameLocation": "1327:1:0", + "nodeType": "VariableDeclaration", + "scope": 45, + "src": "1319:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 30, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1319:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 33, + "mutability": "mutable", + "name": "b", + "nameLocation": "1338:1:0", + "nodeType": "VariableDeclaration", + "scope": 45, + "src": "1330:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1330:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1318:22:0" + }, + "returnParameters": { + "id": 37, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 36, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 45, + "src": "1364:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 35, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1364:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1363:9:0" + }, + "scope": 195, + "src": "1306:134:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 72, + "nodeType": "Block", + "src": "1859:92:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 60, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "1877:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 59, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "1882:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1877:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 61, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "1885:12:0", + "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": 57, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1869:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 62, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1869:29:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 63, + "nodeType": "ExpressionStatement", + "src": "1869:29:0" + }, + { + "assignments": [ + 65 + ], + "declarations": [ + { + "constant": false, + "id": 65, + "mutability": "mutable", + "name": "c", + "nameLocation": "1916:1:0", + "nodeType": "VariableDeclaration", + "scope": 72, + "src": "1908:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 64, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1908:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 69, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 68, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 66, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "1920:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 67, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "1924:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1920:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1908:17:0" + }, + { + "expression": { + "id": 70, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65, + "src": "1943:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 56, + "id": 71, + "nodeType": "Return", + "src": "1936:8:0" + } + ] + }, + "documentation": { + "id": 46, + "nodeType": "StructuredDocumentation", + "src": "1446:313:0", + "text": " @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow.\n _Available since v2.4.0._" + }, + "id": 73, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nameLocation": "1773:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 53, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 48, + "mutability": "mutable", + "name": "a", + "nameLocation": "1785:1:0", + "nodeType": "VariableDeclaration", + "scope": 73, + "src": "1777:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 47, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1777:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 50, + "mutability": "mutable", + "name": "b", + "nameLocation": "1796:1:0", + "nodeType": "VariableDeclaration", + "scope": 73, + "src": "1788:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 49, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1788:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 52, + "mutability": "mutable", + "name": "errorMessage", + "nameLocation": "1813:12:0", + "nodeType": "VariableDeclaration", + "scope": 73, + "src": "1799:26:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 51, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1799:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1776:50:0" + }, + "returnParameters": { + "id": 56, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 55, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 73, + "src": "1850:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 54, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1850:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1849:9:0" + }, + "scope": 195, + "src": "1764:187:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 107, + "nodeType": "Block", + "src": "2258:392:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 85, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 83, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "2490:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 84, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2495:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2490:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 89, + "nodeType": "IfStatement", + "src": "2486:45:0", + "trueBody": { + "id": 88, + "nodeType": "Block", + "src": "2498:33:0", + "statements": [ + { + "expression": { + "hexValue": "30", + "id": 86, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2519:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 82, + "id": 87, + "nodeType": "Return", + "src": "2512:8:0" + } + ] + } + }, + { + "assignments": [ + 91 + ], + "declarations": [ + { + "constant": false, + "id": 91, + "mutability": "mutable", + "name": "c", + "nameLocation": "2549:1:0", + "nodeType": "VariableDeclaration", + "scope": 107, + "src": "2541:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 90, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2541:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 95, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 94, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 92, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "2553:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 93, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "2557:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2553:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2541:17:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 99, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 97, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 91, + "src": "2576:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 98, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "2580:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2576:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 100, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "2585:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2576:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77", + "id": 102, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2588:35:0", + "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": 96, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2568:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2568:56:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 104, + "nodeType": "ExpressionStatement", + "src": "2568:56:0" + }, + { + "expression": { + "id": 105, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 91, + "src": "2642:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 82, + "id": 106, + "nodeType": "Return", + "src": "2635:8:0" + } + ] + }, + "documentation": { + "id": 74, + "nodeType": "StructuredDocumentation", + "src": "1957:229:0", + "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": 108, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mul", + "nameLocation": "2200:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 79, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 76, + "mutability": "mutable", + "name": "a", + "nameLocation": "2212:1:0", + "nodeType": "VariableDeclaration", + "scope": 108, + "src": "2204:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 75, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2204:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 78, + "mutability": "mutable", + "name": "b", + "nameLocation": "2223:1:0", + "nodeType": "VariableDeclaration", + "scope": 108, + "src": "2215:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 77, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2215:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2203:22:0" + }, + "returnParameters": { + "id": 82, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 81, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 108, + "src": "2249:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 80, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2249:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2248:9:0" + }, + "scope": 195, + "src": "2191:459:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 124, + "nodeType": "Block", + "src": "3172:63:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 119, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 111, + "src": "3193:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 120, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "3196:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "536166654d6174683a206469766973696f6e206279207a65726f", + "id": 121, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3199:28:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f", + "typeString": "literal_string \"SafeMath: division by zero\"" + }, + "value": "SafeMath: division by zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f", + "typeString": "literal_string \"SafeMath: division by zero\"" + } + ], + "id": 118, + "name": "div", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 125, + 153 + ], + "referencedDeclaration": 153, + "src": "3189:3:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3189:39:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 117, + "id": 123, + "nodeType": "Return", + "src": "3182:46:0" + } + ] + }, + "documentation": { + "id": 109, + "nodeType": "StructuredDocumentation", + "src": "2656:444:0", + "text": " @dev Returns the integer division of two unsigned integers. Reverts 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": 125, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nameLocation": "3114:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 114, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 111, + "mutability": "mutable", + "name": "a", + "nameLocation": "3126:1:0", + "nodeType": "VariableDeclaration", + "scope": 125, + "src": "3118:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 110, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3118:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 113, + "mutability": "mutable", + "name": "b", + "nameLocation": "3137:1:0", + "nodeType": "VariableDeclaration", + "scope": 125, + "src": "3129:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 112, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3129:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3117:22:0" + }, + "returnParameters": { + "id": 117, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 116, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 125, + "src": "3163:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 115, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3163:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3162:9:0" + }, + "scope": 195, + "src": "3105:130:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 152, + "nodeType": "Block", + "src": "3845:243:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 138, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "3929:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 139, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3933:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3929:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 141, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 132, + "src": "3936:12:0", + "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": 137, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3921:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3921:28:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 143, + "nodeType": "ExpressionStatement", + "src": "3921:28:0" + }, + { + "assignments": [ + 145 + ], + "declarations": [ + { + "constant": false, + "id": 145, + "mutability": "mutable", + "name": "c", + "nameLocation": "3967:1:0", + "nodeType": "VariableDeclaration", + "scope": 152, + "src": "3959:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 144, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3959:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 149, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 146, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 128, + "src": "3971:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 147, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "3975:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3971:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3959:17:0" + }, + { + "expression": { + "id": 150, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 145, + "src": "4080:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 136, + "id": 151, + "nodeType": "Return", + "src": "4073:8:0" + } + ] + }, + "documentation": { + "id": 126, + "nodeType": "StructuredDocumentation", + "src": "3241:504:0", + "text": " @dev Returns the integer division of two unsigned integers. Reverts with custom message 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.\n _Available since v2.4.0._" + }, + "id": 153, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nameLocation": "3759:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 133, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 128, + "mutability": "mutable", + "name": "a", + "nameLocation": "3771:1:0", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "3763:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 127, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3763:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 130, + "mutability": "mutable", + "name": "b", + "nameLocation": "3782:1:0", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "3774:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 129, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3774:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 132, + "mutability": "mutable", + "name": "errorMessage", + "nameLocation": "3799:12:0", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "3785:26:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 131, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3785:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "3762:50:0" + }, + "returnParameters": { + "id": 136, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 135, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "3836:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 134, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3836:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3835:9:0" + }, + "scope": 195, + "src": "3750:338:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 169, + "nodeType": "Block", + "src": "4599:61:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 164, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 156, + "src": "4620:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 165, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 158, + "src": "4623:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "536166654d6174683a206d6f64756c6f206279207a65726f", + "id": 166, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4626:26:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832", + "typeString": "literal_string \"SafeMath: modulo by zero\"" + }, + "value": "SafeMath: modulo by zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832", + "typeString": "literal_string \"SafeMath: modulo by zero\"" + } + ], + "id": 163, + "name": "mod", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 170, + 194 + ], + "referencedDeclaration": 194, + "src": "4616:3:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4616:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 162, + "id": 168, + "nodeType": "Return", + "src": "4609:44:0" + } + ] + }, + "documentation": { + "id": 154, + "nodeType": "StructuredDocumentation", + "src": "4094:433:0", + "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n Reverts 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": 170, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mod", + "nameLocation": "4541:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 159, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 156, + "mutability": "mutable", + "name": "a", + "nameLocation": "4553:1:0", + "nodeType": "VariableDeclaration", + "scope": 170, + "src": "4545:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 155, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4545:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 158, + "mutability": "mutable", + "name": "b", + "nameLocation": "4564:1:0", + "nodeType": "VariableDeclaration", + "scope": 170, + "src": "4556:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 157, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4556:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4544:22:0" + }, + "returnParameters": { + "id": 162, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 161, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 170, + "src": "4590:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 160, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4590:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4589:9:0" + }, + "scope": 195, + "src": "4532:128:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 193, + "nodeType": "Block", + "src": "5259:68:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 183, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 175, + "src": "5277:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 184, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5282:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5277:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 186, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "5285:12:0", + "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": 182, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5269:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5269:29:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 188, + "nodeType": "ExpressionStatement", + "src": "5269:29:0" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 189, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 173, + "src": "5315:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "id": 190, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 175, + "src": "5319:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5315:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 181, + "id": 192, + "nodeType": "Return", + "src": "5308:12:0" + } + ] + }, + "documentation": { + "id": 171, + "nodeType": "StructuredDocumentation", + "src": "4666:493:0", + "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n Reverts with custom message 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.\n _Available since v2.4.0._" + }, + "id": 194, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mod", + "nameLocation": "5173:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 178, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 173, + "mutability": "mutable", + "name": "a", + "nameLocation": "5185:1:0", + "nodeType": "VariableDeclaration", + "scope": 194, + "src": "5177:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 172, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5177:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 175, + "mutability": "mutable", + "name": "b", + "nameLocation": "5196:1:0", + "nodeType": "VariableDeclaration", + "scope": 194, + "src": "5188:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 174, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5188:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 177, + "mutability": "mutable", + "name": "errorMessage", + "nameLocation": "5213:12:0", + "nodeType": "VariableDeclaration", + "scope": 194, + "src": "5199:26:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 176, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5199:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "5176:50:0" + }, + "returnParameters": { + "id": 181, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 180, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 194, + "src": "5250:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 179, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5250:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5249:9:0" + }, + "scope": 195, + "src": "5164:163:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 196, + "src": "621:4708:0", + "usedErrors": [] + } + ], + "src": "32:5297:0" + }, + "id": 0 + } + } + } +} diff --git a/artifacts/build-info/4379f7a7e90ec4224805b9ed7de86d97.json b/artifacts/build-info/4379f7a7e90ec4224805b9ed7de86d97.json new file mode 100644 index 00000000..7ef8fc16 --- /dev/null +++ b/artifacts/build-info/4379f7a7e90ec4224805b9ed7de86d97.json @@ -0,0 +1,53227 @@ +{ + "id": "4379f7a7e90ec4224805b9ed7de86d97", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.10", + "solcLongVersion": "0.8.10+commit.fc410830", + "input": { + "language": "Solidity", + "sources": { + "contracts/ERC165/ERC165.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.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 * @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(type(IERC165).interfaceId);\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}" + }, + "contracts/ERC165/IERC165.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.11;\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}" + }, + "contracts/ERC721/ERC721.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"./V8_0_0/Common/Context.sol\";\nimport \"./IERC721.sol\";\nimport \"./IERC721Metadata.sol\";\nimport \"./IERC721Enumerable.sol\";\nimport \"./IERC721Receiver.sol\";\nimport \"../ERC165/ERC165.sol\";\nimport \"./V8_0_0/Utils/Address.sol\";\nimport \"./V8_0_0/Utils/EnumerableSet.sol\";\nimport \"./V8_0_0/Utils/EnumerableMap.sol\";\nimport \"./V8_0_0/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 Address for address;\n using EnumerableSet for EnumerableSet.UintSet;\n using EnumerableMap for EnumerableMap.UintToAddressMap;\n using Strings for uint256;\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 * @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(type(IERC721).interfaceId);\n _registerInterface(type(IERC721Metadata).interfaceId);\n _registerInterface(type(IERC721Enumerable).interfaceId);\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 try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {\n return retval == IERC721Receiver(to).onERC721Received.selector;\n } catch (bytes memory reason) {\n if (reason.length == 0) {\n revert(\"ERC721: transfer to non ERC721Receiver implementer\");\n } else {\n // solhint-disable-next-line no-inline-assembly\n assembly {\n revert(add(32, reason), mload(reason))\n }\n }\n }\n } else {\n return true;\n }\n }\n\n function _approve(address to, uint256 tokenId) private {\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}" + }, + "contracts/ERC721/V8_0_0/Common/Context.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/*\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with 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) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\n return msg.data;\n }\n}" + }, + "contracts/ERC721/IERC721.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.11;\n\nimport \"../ERC165/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}" + }, + "contracts/ERC721/IERC721Metadata.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.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}" + }, + "contracts/ERC721/IERC721Enumerable.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.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}" + }, + "contracts/ERC721/IERC721Receiver.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.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}" + }, + "contracts/ERC721/V8_0_0/Utils/Address.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.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}" + }, + "contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.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}" + }, + "contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.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}" + }, + "contracts/ERC721/V8_0_0/Utils/Strings.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n bytes16 private constant alphabet = \"0123456789abcdef\";\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal 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 while (value != 0) {\n digits -= 1;\n buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\n value /= 10;\n }\n return string(buffer);\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n if (value == 0) {\n return \"0x00\";\n }\n uint256 temp = value;\n uint256 length = 0;\n while (temp != 0) {\n length++;\n temp >>= 8;\n }\n return toHexString(value, length);\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = alphabet[value & 0xf];\n value >>= 4;\n }\n require(value == 0, \"Strings: hex length insufficient\");\n return string(buffer);\n }\n\n}" + }, + "contracts/ERC721/V8_0_0/Governance/AccessControl.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"../Utils/EnumerableSet.sol\";\nimport \"../Utils/Address.sol\";\nimport \"../Common/Context.sol\";\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```\n * function foo() public {\n * require(hasRole(MY_ROLE, msg.sender));\n * ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it.\n */\nabstract contract AccessControl is Context {\n using EnumerableSet for EnumerableSet.AddressSet;\n using Address for address;\n\n struct RoleData {\n EnumerableSet.AddressSet members;\n bytes32 adminRole;\n }\n\n mapping (bytes32 => RoleData) private _roles;\n\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; //bytes32(uint256(0x4B437D01b575618140442A4975db38850e3f8f5f) << 96);\n\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n *\n * _Available since v3.1._\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {_setupRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) public view returns (bool) {\n return _roles[role].members.contains(account);\n }\n\n /**\n * @dev Returns the number of accounts that have `role`. Can be used\n * together with {getRoleMember} to enumerate all bearers of a role.\n */\n function getRoleMemberCount(bytes32 role) public view returns (uint256) {\n return _roles[role].members.length();\n }\n\n /**\n * @dev Returns one of the accounts that have `role`. `index` must be a\n * value between 0 and {getRoleMemberCount}, non-inclusive.\n *\n * Role bearers are not sorted in any particular way, and their ordering may\n * change at any point.\n *\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n * you perform all queries on the same block. See the following\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n * for more information.\n */\n function getRoleMember(bytes32 role, uint256 index) public view returns (address) {\n return _roles[role].members.at(index);\n }\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) public view returns (bytes32) {\n return _roles[role].adminRole;\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) public virtual {\n require(hasRole(_roles[role].adminRole, _msgSender()), \"AccessControl: sender must be an admin to grant\");\n\n _grantRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) public virtual {\n require(hasRole(_roles[role].adminRole, _msgSender()), \"AccessControl: sender must be an admin to revoke\");\n\n _revokeRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n */\n function renounceRole(bytes32 role, address account) public virtual {\n require(account == _msgSender(), \"AccessControl: can only renounce roles for self\");\n\n _revokeRole(role, account);\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event. Note that unlike {grantRole}, this function doesn't perform any\n * checks on the calling account.\n *\n * [WARNING]\n * ====\n * This function should only be called from the constructor when setting\n * up the initial roles for the system.\n *\n * Using this function in any other way is effectively circumventing the admin\n * system imposed by {AccessControl}.\n * ====\n */\n function _setupRole(bytes32 role, address account) internal virtual {\n _grantRole(role, account);\n }\n\n /**\n * @dev Sets `adminRole` as ``role``'s admin role.\n *\n * Emits a {RoleAdminChanged} event.\n */\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);\n _roles[role].adminRole = adminRole;\n }\n\n function _grantRole(bytes32 role, address account) private {\n if (_roles[role].members.add(account)) {\n emit RoleGranted(role, account, _msgSender());\n }\n }\n\n function _revokeRole(bytes32 role, address account) private {\n if (_roles[role].members.remove(account)) {\n emit RoleRevoked(role, account, _msgSender());\n }\n }\n}" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "output": { + "contracts": { + "contracts/ERC165/ERC165.sol": { + "ERC165": { + "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 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "supportsInterface(bytes4)": "01ffc9a7" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"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\":{\"contracts/ERC165/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/ERC165/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.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 * @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(type(IERC165).interfaceId);\\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}\",\"keccak256\":\"0xcc44f5ec94fef3e01732251ce3eb699d1d39d150ee50f6984611a4ab9465f849\",\"license\":\"MIT\"},\"contracts/ERC165/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\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}\",\"keccak256\":\"0x381115e1e09d04228d3d2013441c80dac45e4fd8eba5dad89f4192c5bf76d8a7\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 10, + "contract": "contracts/ERC165/ERC165.sol:ERC165", + "label": "_supportedInterfaces", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_bytes4,t_bool)" + } + ], + "types": { + "t_bool": { + "encoding": "inplace", + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes4": { + "encoding": "inplace", + "label": "bytes4", + "numberOfBytes": "4" + }, + "t_mapping(t_bytes4,t_bool)": { + "encoding": "mapping", + "key": "t_bytes4", + "label": "mapping(bytes4 => bool)", + "numberOfBytes": "32", + "value": "t_bool" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/ERC165/IERC165.sol": { + "IERC165": { + "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 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "supportsInterface(bytes4)": "01ffc9a7" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"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\":{\"contracts/ERC165/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/ERC165/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\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}\",\"keccak256\":\"0x381115e1e09d04228d3d2013441c80dac45e4fd8eba5dad89f4192c5bf76d8a7\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/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" + } + ], + "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 + }, + "evm": { + "bytecode": { + "functionDebugData": { + "@_171": { + "entryPoint": null, + "id": 171, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_21": { + "entryPoint": null, + "id": 21, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_registerInterface_55": { + "entryPoint": 176, + "id": 55, + "parameterSlots": 1, + "returnSlots": 0 + }, + "abi_decode_string_fromMemory": { + "entryPoint": 496, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory": { + "entryPoint": 679, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_encode_tuple_t_stringliteral_282912c0dfceceb28d77d0333f496b83948f9ba5b3154358a8b140b849289dee__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_byte_array_length": { + "entryPoint": 785, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "panic_error_0x41": { + "entryPoint": 474, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:2342:13", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:13", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "46:95:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "63:1:13", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "70:3:13", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "75:10:13", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "66:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "66:20:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "56:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "56:31:13" + }, + "nodeType": "YulExpressionStatement", + "src": "56:31:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "103:1:13", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "106:4:13", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "96:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "96:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "96:15:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "127:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "130:4:13", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "120:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "120:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "120:15:13" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "14:127:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "210:821:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "259:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "268:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "271:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "261:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "261:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "261:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "238:6:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "246:4:13", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "234:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "234:17:13" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "253:3:13" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "230:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "230:27:13" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "223:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "223:35:13" + }, + "nodeType": "YulIf", + "src": "220:55:13" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "284:23:13", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "300:6:13" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "294:5:13" + }, + "nodeType": "YulFunctionCall", + "src": "294:13:13" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "288:2:13", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "316:28:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "334:2:13", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "338:1:13", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "330:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "330:10:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "342:1:13", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "326:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "326:18:13" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "320:2:13", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "367:22:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "369:16:13" + }, + "nodeType": "YulFunctionCall", + "src": "369:18:13" + }, + "nodeType": "YulExpressionStatement", + "src": "369:18:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "359:2:13" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "363:2:13" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "356:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "356:10:13" + }, + "nodeType": "YulIf", + "src": "353:36:13" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "398:17:13", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "412:2:13", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "408:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "408:7:13" + }, + "variables": [ + { + "name": "_3", + "nodeType": "YulTypedName", + "src": "402:2:13", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "424:23:13", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "444:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "438:5:13" + }, + "nodeType": "YulFunctionCall", + "src": "438:9:13" + }, + "variables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "428:6:13", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "456:71:13", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "478:6:13" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "502:2:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "506:4:13", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "498:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "498:13:13" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "513:2:13" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "494:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "494:22:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "518:2:13", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "490:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "490:31:13" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "523:2:13" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "486:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "486:40:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "474:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "474:53:13" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "460:10:13", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "586:22:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "588:16:13" + }, + "nodeType": "YulFunctionCall", + "src": "588:18:13" + }, + "nodeType": "YulExpressionStatement", + "src": "588:18:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "545:10:13" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "557:2:13" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "542:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "542:18:13" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "565:10:13" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "577:6:13" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "562:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "562:22:13" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "539:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "539:46:13" + }, + "nodeType": "YulIf", + "src": "536:72:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "624:2:13", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "628:10:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "617:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "617:22:13" + }, + "nodeType": "YulExpressionStatement", + "src": "617:22:13" + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "655:6:13" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "663:2:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "648:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "648:18:13" + }, + "nodeType": "YulExpressionStatement", + "src": "648:18:13" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "675:14:13", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "685:4:13", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_4", + "nodeType": "YulTypedName", + "src": "679:2:13", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "735:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "744:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "747:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "737:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "737:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "737:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "712:6:13" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "720:2:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "708:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "708:15:13" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "725:2:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "704:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "704:24:13" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "730:3:13" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "701:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "701:33:13" + }, + "nodeType": "YulIf", + "src": "698:53:13" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "760:10:13", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "769:1:13", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "764:1:13", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "825:87:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "854:6:13" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "862:1:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "850:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "850:14:13" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "866:2:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "846:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "846:23:13" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "885:6:13" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "893:1:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "881:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "881:14:13" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "897:2:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "877:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "877:23:13" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "871:5:13" + }, + "nodeType": "YulFunctionCall", + "src": "871:30:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "839:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "839:63:13" + }, + "nodeType": "YulExpressionStatement", + "src": "839:63:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "790:1:13" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "793:2:13" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "787:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "787:9:13" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "797:19:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "799:15:13", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "808:1:13" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "811:2:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "804:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "804:10:13" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "799:1:13" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "783:3:13", + "statements": [] + }, + "src": "779:133:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "942:59:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "971:6:13" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "979:2:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "967:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "967:15:13" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "984:2:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "963:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "963:24:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "989:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "956:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "956:35:13" + }, + "nodeType": "YulExpressionStatement", + "src": "956:35:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "927:1:13" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "930:2:13" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "924:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "924:9:13" + }, + "nodeType": "YulIf", + "src": "921:80:13" + }, + { + "nodeType": "YulAssignment", + "src": "1010:15:13", + "value": { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1019:6:13" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "1010:5:13" + } + ] + } + ] + }, + "name": "abi_decode_string_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "184:6:13", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "192:3:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "200:5:13", + "type": "" + } + ], + "src": "146:885:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1154:444:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1200:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1209:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1212:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1202:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "1202:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "1202:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1175:7:13" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1184:9:13" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1171:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1171:23:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1196:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1167:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1167:32:13" + }, + "nodeType": "YulIf", + "src": "1164:52:13" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1225:30:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1245:9:13" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1239:5:13" + }, + "nodeType": "YulFunctionCall", + "src": "1239:16:13" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1229:6:13", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1264:28:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1282:2:13", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1286:1:13", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1278:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1278:10:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1290:1:13", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1274:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1274:18:13" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "1268:2:13", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1319:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1328:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1331:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1321:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "1321:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "1321:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1307:6:13" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "1315:2:13" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1304:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "1304:14:13" + }, + "nodeType": "YulIf", + "src": "1301:34:13" + }, + { + "nodeType": "YulAssignment", + "src": "1344:71:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1387:9:13" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1398:6:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1383:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1383:22:13" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1407:7:13" + } + ], + "functionName": { + "name": "abi_decode_string_fromMemory", + "nodeType": "YulIdentifier", + "src": "1354:28:13" + }, + "nodeType": "YulFunctionCall", + "src": "1354:61:13" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1344:6:13" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1424:41:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1450:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1461:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1446:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1446:18:13" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1440:5:13" + }, + "nodeType": "YulFunctionCall", + "src": "1440:25:13" + }, + "variables": [ + { + "name": "offset_1", + "nodeType": "YulTypedName", + "src": "1428:8:13", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1494:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1503:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1506:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1496:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "1496:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "1496:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "1480:8:13" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "1490:2:13" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1477:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "1477:16:13" + }, + "nodeType": "YulIf", + "src": "1474:36:13" + }, + { + "nodeType": "YulAssignment", + "src": "1519:73:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1562:9:13" + }, + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "1573:8:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1558:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1558:24:13" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1584:7:13" + } + ], + "functionName": { + "name": "abi_decode_string_fromMemory", + "nodeType": "YulIdentifier", + "src": "1529:28:13" + }, + "nodeType": "YulFunctionCall", + "src": "1529:63:13" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1519:6:13" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1112:9:13", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1123:7:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1135:6:13", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1143:6:13", + "type": "" + } + ], + "src": "1036:562:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1777:178:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1794:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1805:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1787:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "1787:21:13" + }, + "nodeType": "YulExpressionStatement", + "src": "1787:21:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1828:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1839:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1824:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1824:18:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1844:2:13", + "type": "", + "value": "28" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1817:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "1817:30:13" + }, + "nodeType": "YulExpressionStatement", + "src": "1817:30:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1867:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1878:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1863:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1863:18:13" + }, + { + "hexValue": "4552433136353a20696e76616c696420696e74657266616365206964", + "kind": "string", + "nodeType": "YulLiteral", + "src": "1883:30:13", + "type": "", + "value": "ERC165: invalid interface id" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1856:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "1856:58:13" + }, + "nodeType": "YulExpressionStatement", + "src": "1856:58:13" + }, + { + "nodeType": "YulAssignment", + "src": "1923:26:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1935:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1946:2:13", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1931:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1931:18:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1923:4:13" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_282912c0dfceceb28d77d0333f496b83948f9ba5b3154358a8b140b849289dee__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1754:9:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1768:4:13", + "type": "" + } + ], + "src": "1603:352:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2015:325:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2025:22:13", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2039:1:13", + "type": "", + "value": "1" + }, + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "2042:4:13" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "2035:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "2035:12:13" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2025:6:13" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2056:38:13", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "2086:4:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2092:1:13", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2082:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "2082:12:13" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "2060:18:13", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2133:31:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2135:27:13", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2149:6:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2157:4:13", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2145:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "2145:17:13" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2135:6:13" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "2113:18:13" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2106:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "2106:26:13" + }, + "nodeType": "YulIf", + "src": "2103:61:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2223:111:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2244:1:13", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2251:3:13", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2256:10:13", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "2247:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "2247:20:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2237:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "2237:31:13" + }, + "nodeType": "YulExpressionStatement", + "src": "2237:31:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2288:1:13", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2291:4:13", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2281:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "2281:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "2281:15:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2316:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2319:4:13", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2309:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "2309:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "2309:15:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "2179:18:13" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2202:6:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2210:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2199:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "2199:14:13" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "2176:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "2176:38:13" + }, + "nodeType": "YulIf", + "src": "2173:161:13" + } + ] + }, + "name": "extract_byte_array_length", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "1995:4:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2004:6:13", + "type": "" + } + ], + "src": "1960:380:13" + } + ] + }, + "contents": "{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_string_fromMemory(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := mload(offset)\n let _2 := sub(shl(64, 1), 1)\n if gt(_1, _2) { panic_error_0x41() }\n let _3 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _1)\n let _4 := 0x20\n if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n let i := 0\n for { } lt(i, _1) { i := add(i, _4) }\n {\n mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n }\n if gt(i, _1)\n {\n mstore(add(add(memPtr, _1), _4), 0)\n }\n array := memPtr\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := mload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n }\n function abi_encode_tuple_t_stringliteral_282912c0dfceceb28d77d0333f496b83948f9ba5b3154358a8b140b849289dee__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 28)\n mstore(add(headStart, 64), \"ERC165: invalid interface id\")\n tail := add(headStart, 96)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n}", + "id": 13, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "60806040523480156200001157600080fd5b506040516200211f3803806200211f8339810160408190526200003491620002a7565b620000466301ffc9a760e01b620000b0565b81516200005b90600690602085019062000134565b5080516200007190600790602084019062000134565b50620000846380ac58cd60e01b620000b0565b62000096635b5e139f60e01b620000b0565b620000a863780e9d6360e01b620000b0565b50506200034e565b6001600160e01b031980821614156200010f5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640160405180910390fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b828054620001429062000311565b90600052602060002090601f016020900481019282620001665760008555620001b1565b82601f106200018157805160ff1916838001178555620001b1565b82800160010185558215620001b1579182015b82811115620001b157825182559160200191906001019062000194565b50620001bf929150620001c3565b5090565b5b80821115620001bf5760008155600101620001c4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020257600080fd5b81516001600160401b03808211156200021f576200021f620001da565b604051601f8301601f19908116603f011681019082821181831017156200024a576200024a620001da565b816040528381526020925086838588010111156200026757600080fd5b600091505b838210156200028b57858201830151818301840152908201906200026c565b838211156200029d5760008385830101525b9695505050505050565b60008060408385031215620002bb57600080fd5b82516001600160401b0380821115620002d357600080fd5b620002e186838701620001f0565b93506020850151915080821115620002f857600080fd5b506200030785828601620001f0565b9150509250929050565b600181811c908216806200032657607f821691505b602082108114156200034857634e487b7160e01b600052602260045260246000fd5b50919050565b611dc1806200035e6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80634f6ccce7116100b257806395d89b4111610081578063b88d4fde11610066578063b88d4fde14610287578063c87b56dd1461029a578063e985e9c5146102ad57600080fd5b806395d89b411461026c578063a22cb4651461027457600080fd5b80634f6ccce71461022b5780636352211e1461023e5780636c0360eb1461025157806370a082311461025957600080fd5b806318160ddd116100ee57806318160ddd146101dc57806323b872dd146101f25780632f745c591461020557806342842e0e1461021857600080fd5b806301ffc9a71461012057806306fdde031461017a578063081812fc1461018f578063095ea7b3146101c7575b600080fd5b61016561012e36600461182c565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101826102f6565b60405161017191906118bf565b6101a261019d3660046118d2565b610388565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610171565b6101da6101d5366004611914565b61044d565b005b6101e46105da565b604051908152602001610171565b6101da61020036600461193e565b6105eb565b6101e4610213366004611914565b61068c565b6101da61022636600461193e565b6106c4565b6101e46102393660046118d2565b6106df565b6101a261024c3660046118d2565b6106f5565b61018261071d565b6101e461026736600461197a565b61072c565b6101826107ff565b6101da610282366004611995565b61080e565b6101da610295366004611a00565b610925565b6101826102a83660046118d2565b6109cd565b6101656102bb366004611afa565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60606006805461030590611b2d565b80601f016020809104026020016040519081016040528092919081815260200182805461033190611b2d565b801561037e5780601f106103535761010080835404028352916020019161037e565b820191906000526020600020905b81548152906001019060200180831161036157829003601f168201915b5050505050905090565b600061039382610b67565b610424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6000610458826106f5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161041b565b3373ffffffffffffffffffffffffffffffffffffffff8216148061053f575061053f81336102bb565b6105cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161041b565b6105d58383610b74565b505050565b60006105e66002610c14565b905090565b6105f53382610c1e565b610681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161041b565b6105d5838383610d74565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081206106bb9083610fb1565b90505b92915050565b6105d583838360405180602001604052806000815250610925565b6000806106ed600284610fbd565b509392505050565b60006106be82604051806060016040528060298152602001611d636029913960029190610fd9565b60606009805461030590611b2d565b600073ffffffffffffffffffffffffffffffffffffffff82166107d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f206164647265737300000000000000000000000000000000000000000000606482015260840161041b565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090206106be90610c14565b60606007805461030590611b2d565b73ffffffffffffffffffffffffffffffffffffffff821633141561088e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161041b565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61092f3383610c1e565b6109bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161041b565b6109c784848484610ff0565b50505050565b60606109d882610b67565b610a64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606482015260840161041b565b60008281526008602052604081208054610a7d90611b2d565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa990611b2d565b8015610af65780601f10610acb57610100808354040283529160200191610af6565b820191906000526020600020905b815481529060010190602001808311610ad957829003601f168201915b505050505090506000610b0761071d565b9050805160001415610b1a575092915050565b815115610b4c578082604051602001610b34929190611b81565b60405160208183030381529060405292505050919050565b80610b5685611093565b604051602001610b34929190611b81565b60006106be6002836111c5565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610bce826106f5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006106be825490565b6000610c2982610b67565b610cb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e0000000000000000000000000000000000000000606482015260840161041b565b6000610cc0836106f5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610d2f57508373ffffffffffffffffffffffffffffffffffffffff16610d1784610388565b73ffffffffffffffffffffffffffffffffffffffff16145b80610d6c575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610d94826106f5565b73ffffffffffffffffffffffffffffffffffffffff1614610e37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e0000000000000000000000000000000000000000000000606482015260840161041b565b73ffffffffffffffffffffffffffffffffffffffff8216610ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161041b565b610ee4600082610b74565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020610f1390826111dd565b5073ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020610f4390826111e9565b50610f50600282846111f5565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006106bb8383611218565b6000808080610fcc86866112d3565b9097909650945050505050565b6000610fe68484846113a5565b90505b9392505050565b610ffb848484610d74565b61100784848484611428565b6109c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161041b565b6060816110d357505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156110fd57806110e781611bdf565b91506110f69050600a83611c47565b91506110d7565b60008167ffffffffffffffff811115611118576111186119d1565b6040519080825280601f01601f191660200182016040528015611142576020820181803683370190505b5090505b8415610d6c57611157600183611c5b565b9150611164600a86611c72565b61116f906030611c86565b60f81b81838151811061118457611184611c9e565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506111be600a86611c47565b9450611146565b600081815260018301602052604081205415156106bb565b60006106bb8383611618565b60006106bb838361170b565b6000610fe6848473ffffffffffffffffffffffffffffffffffffffff851661175a565b815460009082106112ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f6473000000000000000000000000000000000000000000000000000000000000606482015260840161041b565b8260000182815481106112c0576112c0611c9e565b9060005260206000200154905092915050565b815460009081908310611368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e60448201527f6473000000000000000000000000000000000000000000000000000000000000606482015260840161041b565b600084600001848154811061137f5761137f611c9e565b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816113ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041b91906118bf565b50846113fc600183611c5b565b8154811061140c5761140c611c9e565b9060005260206000209060020201600101549150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff84163b1561160d576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061149f903390899088908890600401611ccd565b6020604051808303816000875af19250505080156114f8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526114f591810190611d16565b60015b6115c2573d808015611526576040519150601f19603f3d011682016040523d82523d6000602084013e61152b565b606091505b5080516115ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161041b565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610d6c565b506001949350505050565b6000818152600183016020526040812054801561170157600061163c600183611c5b565b855490915060009061165090600190611c5b565b9050600086600001828154811061166957611669611c9e565b906000526020600020015490508087600001848154811061168c5761168c611c9e565b6000918252602090912001556116a3836001611c86565b600082815260018901602052604090205586548790806116c5576116c5611d33565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506106be565b60009150506106be565b6000818152600183016020526040812054611752575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106be565b5060006106be565b6000828152600184016020526040812054806117bf575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055610fe9565b82856117cc600184611c5b565b815481106117dc576117dc611c9e565b9060005260206000209060020201600101819055506000915050610fe9565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461182957600080fd5b50565b60006020828403121561183e57600080fd5b8135610fe9816117fb565b60005b8381101561186457818101518382015260200161184c565b838111156109c75750506000910152565b6000815180845261188d816020860160208601611849565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106bb6020830184611875565b6000602082840312156118e457600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461190f57600080fd5b919050565b6000806040838503121561192757600080fd5b611930836118eb565b946020939093013593505050565b60008060006060848603121561195357600080fd5b61195c846118eb565b925061196a602085016118eb565b9150604084013590509250925092565b60006020828403121561198c57600080fd5b6106bb826118eb565b600080604083850312156119a857600080fd5b6119b1836118eb565b9150602083013580151581146119c657600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060008060808587031215611a1657600080fd5b611a1f856118eb565b9350611a2d602086016118eb565b925060408501359150606085013567ffffffffffffffff80821115611a5157600080fd5b818701915087601f830112611a6557600080fd5b813581811115611a7757611a776119d1565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611abd57611abd6119d1565b816040528281528a6020848701011115611ad657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215611b0d57600080fd5b611b16836118eb565b9150611b24602084016118eb565b90509250929050565b600181811c90821680611b4157607f821691505b60208210811415611b7b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008351611b93818460208801611849565b835190830190611ba7818360208801611849565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611c1157611c11611bb0565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611c5657611c56611c18565b500490565b600082821015611c6d57611c6d611bb0565b500390565b600082611c8157611c81611c18565b500690565b60008219821115611c9957611c99611bb0565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611d0c6080830184611875565b9695505050505050565b600060208284031215611d2857600080fd5b8151610fe9816117fb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656ea26469706673582212207229241f25a41b6a857a52c690f26ed58f410a000e7f8f5e7d46e4e7cc6fc9bf64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x211F CODESIZE SUB DUP1 PUSH3 0x211F DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x2A7 JUMP JUMPDEST PUSH3 0x46 PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH3 0xB0 JUMP JUMPDEST DUP2 MLOAD PUSH3 0x5B SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x134 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x71 SWAP1 PUSH1 0x7 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x134 JUMP JUMPDEST POP PUSH3 0x84 PUSH4 0x80AC58CD PUSH1 0xE0 SHL PUSH3 0xB0 JUMP JUMPDEST PUSH3 0x96 PUSH4 0x5B5E139F PUSH1 0xE0 SHL PUSH3 0xB0 JUMP JUMPDEST PUSH3 0xA8 PUSH4 0x780E9D63 PUSH1 0xE0 SHL PUSH3 0xB0 JUMP JUMPDEST POP POP PUSH3 0x34E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP1 DUP3 AND EQ ISZERO PUSH3 0x10F JUMPI PUSH1 0x40 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 PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB 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 PUSH3 0x142 SWAP1 PUSH3 0x311 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x166 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x1B1 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x181 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x1B1 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x1B1 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x1B1 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x194 JUMP JUMPDEST POP PUSH3 0x1BF SWAP3 SWAP2 POP PUSH3 0x1C3 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x1BF JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x1C4 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x21F JUMPI PUSH3 0x21F PUSH3 0x1DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x24A JUMPI PUSH3 0x24A PUSH3 0x1DA JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x28B JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0x26C JUMP JUMPDEST DUP4 DUP3 GT ISZERO PUSH3 0x29D JUMPI PUSH1 0x0 DUP4 DUP6 DUP4 ADD ADD MSTORE JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x2BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x2D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x2E1 DUP7 DUP4 DUP8 ADD PUSH3 0x1F0 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x307 DUP6 DUP3 DUP7 ADD PUSH3 0x1F0 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x326 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0x348 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1DC1 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 0x287 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x23E JUMPI DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x259 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1DC JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1F2 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x18F JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1C7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x165 PUSH2 0x12E CALLDATASIZE PUSH1 0x4 PUSH2 0x182C JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x182 PUSH2 0x2F6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x171 SWAP2 SWAP1 PUSH2 0x18BF JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x19D CALLDATASIZE PUSH1 0x4 PUSH2 0x18D2 JUMP JUMPDEST PUSH2 0x388 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x171 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x1D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1914 JUMP JUMPDEST PUSH2 0x44D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1E4 PUSH2 0x5DA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x171 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x200 CALLDATASIZE PUSH1 0x4 PUSH2 0x193E JUMP JUMPDEST PUSH2 0x5EB JUMP JUMPDEST PUSH2 0x1E4 PUSH2 0x213 CALLDATASIZE PUSH1 0x4 PUSH2 0x1914 JUMP JUMPDEST PUSH2 0x68C JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x226 CALLDATASIZE PUSH1 0x4 PUSH2 0x193E JUMP JUMPDEST PUSH2 0x6C4 JUMP JUMPDEST PUSH2 0x1E4 PUSH2 0x239 CALLDATASIZE PUSH1 0x4 PUSH2 0x18D2 JUMP JUMPDEST PUSH2 0x6DF JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x24C CALLDATASIZE PUSH1 0x4 PUSH2 0x18D2 JUMP JUMPDEST PUSH2 0x6F5 JUMP JUMPDEST PUSH2 0x182 PUSH2 0x71D JUMP JUMPDEST PUSH2 0x1E4 PUSH2 0x267 CALLDATASIZE PUSH1 0x4 PUSH2 0x197A JUMP JUMPDEST PUSH2 0x72C JUMP JUMPDEST PUSH2 0x182 PUSH2 0x7FF JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x282 CALLDATASIZE PUSH1 0x4 PUSH2 0x1995 JUMP JUMPDEST PUSH2 0x80E JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x295 CALLDATASIZE PUSH1 0x4 PUSH2 0x1A00 JUMP JUMPDEST PUSH2 0x925 JUMP JUMPDEST PUSH2 0x182 PUSH2 0x2A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x18D2 JUMP JUMPDEST PUSH2 0x9CD JUMP JUMPDEST PUSH2 0x165 PUSH2 0x2BB CALLDATASIZE PUSH1 0x4 PUSH2 0x1AFA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x60 PUSH1 0x6 DUP1 SLOAD PUSH2 0x305 SWAP1 PUSH2 0x1B2D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x331 SWAP1 PUSH2 0x1B2D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x37E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x353 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x37E 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 0x361 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x393 DUP3 PUSH2 0xB67 JUMP JUMPDEST PUSH2 0x424 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76656420717565727920666F72206E6F6E6578 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x697374656E7420746F6B656E0000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST 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 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x458 DUP3 PUSH2 0x6F5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x516 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ DUP1 PUSH2 0x53F JUMPI POP PUSH2 0x53F DUP2 CALLER PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x5CB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F74206F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E6572206E6F7220617070726F76656420666F7220616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST PUSH2 0x5D5 DUP4 DUP4 PUSH2 0xB74 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E6 PUSH1 0x2 PUSH2 0xC14 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x5F5 CALLER DUP3 PUSH2 0xC1E JUMP JUMPDEST PUSH2 0x681 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722063616C6C6572206973206E6F74206F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x776E6572206E6F7220617070726F766564000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST PUSH2 0x5D5 DUP4 DUP4 DUP4 PUSH2 0xD74 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x6BB SWAP1 DUP4 PUSH2 0xFB1 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x5D5 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x925 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x6ED PUSH1 0x2 DUP5 PUSH2 0xFBD JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6BE DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1D63 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 SWAP2 SWAP1 PUSH2 0xFD9 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x9 DUP1 SLOAD PUSH2 0x305 SWAP1 PUSH2 0x1B2D JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x7D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2062616C616E636520717565727920666F7220746865207A65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x726F206164647265737300000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x6BE SWAP1 PUSH2 0xC14 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 DUP1 SLOAD PUSH2 0x305 SWAP1 PUSH2 0x1B2D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND CALLER EQ ISZERO PUSH2 0x88E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x41B JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 DUP2 MSTORE SWAP2 SWAP3 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x92F CALLER DUP4 PUSH2 0xC1E JUMP JUMPDEST PUSH2 0x9BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722063616C6C6572206973206E6F74206F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x776E6572206E6F7220617070726F766564000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST PUSH2 0x9C7 DUP5 DUP5 DUP5 DUP5 PUSH2 0xFF0 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x9D8 DUP3 PUSH2 0xB67 JUMP JUMPDEST PUSH2 0xA64 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E6578697374656E7420746F6B656E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH2 0xA7D SWAP1 PUSH2 0x1B2D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xAA9 SWAP1 PUSH2 0x1B2D JUMP JUMPDEST DUP1 ISZERO PUSH2 0xAF6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xACB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xAF6 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 0xAD9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0xB07 PUSH2 0x71D JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0xB1A JUMPI POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xB4C JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB34 SWAP3 SWAP2 SWAP1 PUSH2 0x1B81 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH2 0xB56 DUP6 PUSH2 0x1093 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB34 SWAP3 SWAP2 SWAP1 PUSH2 0x1B81 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6BE PUSH1 0x2 DUP4 PUSH2 0x11C5 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0xBCE DUP3 PUSH2 0x6F5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6BE DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC29 DUP3 PUSH2 0xB67 JUMP JUMPDEST PUSH2 0xCB5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206F70657261746F7220717565727920666F72206E6F6E6578 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x697374656E7420746F6B656E0000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCC0 DUP4 PUSH2 0x6F5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0xD2F JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xD17 DUP5 PUSH2 0x388 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST DUP1 PUSH2 0xD6C JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xD94 DUP3 PUSH2 0x6F5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xE37 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E73666572206F6620746F6B656E20746861742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x73206E6F74206F776E0000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xED9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST PUSH2 0xEE4 PUSH1 0x0 DUP3 PUSH2 0xB74 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xF13 SWAP1 DUP3 PUSH2 0x11DD JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xF43 SWAP1 DUP3 PUSH2 0x11E9 JUMP JUMPDEST POP PUSH2 0xF50 PUSH1 0x2 DUP3 DUP5 PUSH2 0x11F5 JUMP JUMPDEST POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6BB DUP4 DUP4 PUSH2 0x1218 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0xFCC DUP7 DUP7 PUSH2 0x12D3 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFE6 DUP5 DUP5 DUP5 PUSH2 0x13A5 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xFFB DUP5 DUP5 DUP5 PUSH2 0xD74 JUMP JUMPDEST PUSH2 0x1007 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1428 JUMP JUMPDEST PUSH2 0x9C7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x10D3 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x10FD JUMPI DUP1 PUSH2 0x10E7 DUP2 PUSH2 0x1BDF JUMP JUMPDEST SWAP2 POP PUSH2 0x10F6 SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x1C47 JUMP JUMPDEST SWAP2 POP PUSH2 0x10D7 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1118 JUMPI PUSH2 0x1118 PUSH2 0x19D1 JUMP JUMPDEST 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 0x1142 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0xD6C JUMPI PUSH2 0x1157 PUSH1 0x1 DUP4 PUSH2 0x1C5B JUMP JUMPDEST SWAP2 POP PUSH2 0x1164 PUSH1 0xA DUP7 PUSH2 0x1C72 JUMP JUMPDEST PUSH2 0x116F SWAP1 PUSH1 0x30 PUSH2 0x1C86 JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1184 JUMPI PUSH2 0x1184 PUSH2 0x1C9E JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x11BE PUSH1 0xA DUP7 PUSH2 0x1C47 JUMP JUMPDEST SWAP5 POP PUSH2 0x1146 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD ISZERO ISZERO PUSH2 0x6BB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6BB DUP4 DUP4 PUSH2 0x1618 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6BB DUP4 DUP4 PUSH2 0x170B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFE6 DUP5 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x175A JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x12AB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E756D657261626C655365743A20696E646578206F7574206F6620626F756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6473000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x12C0 JUMPI PUSH2 0x12C0 PUSH2 0x1C9E JUMP 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 0x1368 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E756D657261626C654D61703A20696E646578206F7574206F6620626F756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6473000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x137F JUMPI PUSH2 0x137F PUSH2 0x1C9E JUMP 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 0x13EF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x41B SWAP2 SWAP1 PUSH2 0x18BF JUMP JUMPDEST POP DUP5 PUSH2 0x13FC PUSH1 0x1 DUP4 PUSH2 0x1C5B JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0x140C JUMPI PUSH2 0x140C PUSH2 0x1C9E JUMP 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 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND EXTCODESIZE ISZERO PUSH2 0x160D JUMPI PUSH1 0x40 MLOAD PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x149F SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1CCD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x14F8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x14F5 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1D16 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x15C2 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x1526 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 0x152B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH2 0x15BA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ SWAP1 POP PUSH2 0xD6C JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1701 JUMPI PUSH1 0x0 PUSH2 0x163C PUSH1 0x1 DUP4 PUSH2 0x1C5B JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1650 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x1C5B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1669 JUMPI PUSH2 0x1669 PUSH2 0x1C9E JUMP 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 0x168C JUMPI PUSH2 0x168C PUSH2 0x1C9E JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH2 0x16A3 DUP4 PUSH1 0x1 PUSH2 0x1C86 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x16C5 JUMPI PUSH2 0x16C5 PUSH2 0x1D33 JUMP 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 0x6BE JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x6BE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x1752 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 0x6BE JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x6BE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x17BF 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 0xFE9 JUMP JUMPDEST DUP3 DUP6 PUSH2 0x17CC PUSH1 0x1 DUP5 PUSH2 0x1C5B JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0x17DC JUMPI PUSH2 0x17DC PUSH2 0x1C9E JUMP 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 0xFE9 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x1829 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x183E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFE9 DUP2 PUSH2 0x17FB JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1864 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x184C JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x9C7 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x188D DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1849 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x6BB PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1875 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x190F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1927 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1930 DUP4 PUSH2 0x18EB 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 0x1953 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x195C DUP5 PUSH2 0x18EB JUMP JUMPDEST SWAP3 POP PUSH2 0x196A PUSH1 0x20 DUP6 ADD PUSH2 0x18EB JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x198C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6BB DUP3 PUSH2 0x18EB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19B1 DUP4 PUSH2 0x18EB JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x19C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1A16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A1F DUP6 PUSH2 0x18EB JUMP JUMPDEST SWAP4 POP PUSH2 0x1A2D PUSH1 0x20 DUP7 ADD PUSH2 0x18EB JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1A51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1A65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1A77 JUMPI PUSH2 0x1A77 PUSH2 0x19D1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1ABD JUMPI PUSH2 0x1ABD PUSH2 0x19D1 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1AD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1B0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B16 DUP4 PUSH2 0x18EB JUMP JUMPDEST SWAP2 POP PUSH2 0x1B24 PUSH1 0x20 DUP5 ADD PUSH2 0x18EB JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1B41 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x1B7B JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x1B93 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x1849 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x1BA7 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x1849 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x1C11 JUMPI PUSH2 0x1C11 PUSH2 0x1BB0 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1C56 JUMPI PUSH2 0x1C56 PUSH2 0x1C18 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x1C6D JUMPI PUSH2 0x1C6D PUSH2 0x1BB0 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1C81 JUMPI PUSH2 0x1C81 PUSH2 0x1C18 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1C99 JUMPI PUSH2 0x1C99 PUSH2 0x1BB0 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1D0C PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x1875 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xFE9 DUP2 PUSH2 0x17FB JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH16 0x776E657220717565727920666F72206E PUSH16 0x6E6578697374656E7420746F6B656EA2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH19 0x29241F25A41B6A857A52C690F26ED58F410A00 0xE PUSH32 0x8F5E7D46E4E7CC6FC9BF64736F6C634300080A00330000000000000000000000 ", + "sourceMap": "535:14758:2:-:0;;;1639:375;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;604:45:0;-1:-1:-1;;;604:18:0;:45::i;:::-;1706:13:2;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;1729:17:2;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;1834:45:2;-1:-1:-1;;;1834:18:2;:45::i;:::-;1889:53;-1:-1:-1;;;1889:18:2;:53::i;:::-;1952:55;-1:-1:-1;;;1952:18:2;:55::i;:::-;1639:375;;535:14758;;1348:198:0;-1:-1:-1;;;;;;1431:25:0;;;;;1423:66;;;;-1:-1:-1;;;1423:66:0;;1805:2:13;1423:66:0;;;1787:21:13;1844:2;1824:18;;;1817:30;1883;1863:18;;;1856:58;1931:18;;1423:66:0;;;;;;;;-1:-1:-1;;;;;;1499:33:0;:20;:33;;;;;;;;;;:40;;-1:-1:-1;;1499:40:0;1535:4;1499:40;;;1348:198::o;535:14758:2:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;535:14758:2;;;-1:-1:-1;535:14758:2;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:13;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:885;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:13;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:13;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;930:2;927:1;924:9;921:80;;;989:1;984:2;979;971:6;967:15;963:24;956:35;921:80;1019:6;146:885;-1:-1:-1;;;;;;146:885:13:o;1036:562::-;1135:6;1143;1196:2;1184:9;1175:7;1171:23;1167:32;1164:52;;;1212:1;1209;1202:12;1164:52;1239:16;;-1:-1:-1;;;;;1304:14:13;;;1301:34;;;1331:1;1328;1321:12;1301:34;1354:61;1407:7;1398:6;1387:9;1383:22;1354:61;:::i;:::-;1344:71;;1461:2;1450:9;1446:18;1440:25;1424:41;;1490:2;1480:8;1477:16;1474:36;;;1506:1;1503;1496:12;1474:36;;1529:63;1584:7;1573:8;1562:9;1558:24;1529:63;:::i;:::-;1519:73;;;1036:562;;;;;:::o;1960:380::-;2039:1;2035:12;;;;2082;;;2103:61;;2157:4;2149:6;2145:17;2135:27;;2103:61;2210:2;2202:6;2199:14;2179:18;2176:38;2173:161;;;2256:10;2251:3;2247:20;2244:1;2237:31;2291:4;2288:1;2281:15;2319:4;2316:1;2309:15;2173:161;;1960:380;;;:::o;:::-;535:14758:2;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@_add_2444": { + "entryPoint": 5899, + "id": 2444, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_approve_1002": { + "entryPoint": 2932, + "id": 1002, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_at_2044": { + "entryPoint": 4819, + "id": 2044, + "parameterSlots": 2, + "returnSlots": 2 + }, + "@_at_2584": { + "entryPoint": 4632, + "id": 2584, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_beforeTokenTransfer_1013": { + "entryPoint": null, + "id": 1013, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_checkOnERC721Received_979": { + "entryPoint": 5160, + "id": 979, + "parameterSlots": 4, + "returnSlots": 1 + }, + "@_contains_1993": { + "entryPoint": null, + "id": 1993, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_contains_2544": { + "entryPoint": null, + "id": 2544, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_exists_596": { + "entryPoint": 2919, + "id": 596, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_get_2153": { + "entryPoint": 5029, + "id": 2153, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@_isApprovedOrOwner_638": { + "entryPoint": 3102, + "id": 638, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_length_2007": { + "entryPoint": null, + "id": 2007, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_length_2558": { + "entryPoint": null, + "id": 2558, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_msgSender_1217": { + "entryPoint": null, + "id": 1217, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_remove_2525": { + "entryPoint": 5656, + "id": 2525, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_safeTransfer_582": { + "entryPoint": 4080, + "id": 582, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@_set_1891": { + "entryPoint": 5978, + "id": 1891, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@_transfer_882": { + "entryPoint": 3444, + "id": 882, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@add_2827": { + "entryPoint": 4585, + "id": 2827, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@approve_404": { + "entryPoint": 1101, + "id": 404, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@at_2287": { + "entryPoint": 4029, + "id": 2287, + "parameterSlots": 2, + "returnSlots": 2 + }, + "@at_2905": { + "entryPoint": 4017, + "id": 2905, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@balanceOf_197": { + "entryPoint": 1836, + "id": 197, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@baseURI_310": { + "entryPoint": 1821, + "id": 310, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@contains_2232": { + "entryPoint": 4549, + "id": 2232, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getApproved_425": { + "entryPoint": 904, + "id": 425, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@get_2390": { + "entryPoint": 4057, + "id": 2390, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@isApprovedForAll_477": { + "entryPoint": null, + "id": 477, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@isContract_1535": { + "entryPoint": null, + "id": 1535, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@length_2247": { + "entryPoint": 3092, + "id": 2247, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@length_2884": { + "entryPoint": null, + "id": 2884, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@name_223": { + "entryPoint": 758, + "id": 223, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@ownerOf_213": { + "entryPoint": 1781, + "id": 213, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@remove_2848": { + "entryPoint": 4573, + "id": 2848, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@safeTransferFrom_523": { + "entryPoint": 1732, + "id": 523, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@safeTransferFrom_553": { + "entryPoint": 2341, + "id": 553, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@setApprovalForAll_459": { + "entryPoint": 2062, + "id": 459, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@set_2190": { + "entryPoint": 4597, + "id": 2190, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@supportsInterface_35": { + "entryPoint": null, + "id": 35, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@symbol_233": { + "entryPoint": 2047, + "id": 233, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@toString_2991": { + "entryPoint": 4243, + "id": 2991, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@tokenByIndex_360": { + "entryPoint": 1759, + "id": 360, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@tokenOfOwnerByIndex_329": { + "entryPoint": 1676, + "id": 329, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@tokenURI_301": { + "entryPoint": 2509, + "id": 301, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@totalSupply_341": { + "entryPoint": 1498, + "id": 341, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@transferFrom_504": { + "entryPoint": 1515, + "id": 504, + "parameterSlots": 3, + "returnSlots": 0 + }, + "abi_decode_address": { + "entryPoint": 6379, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 6522, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 6906, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_addresst_uint256": { + "entryPoint": 6462, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr": { + "entryPoint": 6656, + "id": null, + "parameterSlots": 2, + "returnSlots": 4 + }, + "abi_decode_tuple_t_addresst_bool": { + "entryPoint": 6549, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_uint256": { + "entryPoint": 6420, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes4": { + "entryPoint": 6188, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes4_fromMemory": { + "entryPoint": 7446, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": 6354, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_string": { + "entryPoint": 6261, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 7041, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed": { + "entryPoint": 7373, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 6335, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_86631030b9066a18616a068fc09fce83d18af4765cb1d2166fa475228f4db155__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 7302, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_div_t_uint256": { + "entryPoint": 7239, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 7259, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "copy_memory_to_memory": { + "entryPoint": 6217, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "extract_byte_array_length": { + "entryPoint": 6957, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "increment_t_uint256": { + "entryPoint": 7135, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "mod_t_uint256": { + "entryPoint": 7282, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 7088, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x12": { + "entryPoint": 7192, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x31": { + "entryPoint": 7475, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 7326, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 6609, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_bytes4": { + "entryPoint": 6139, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:13476:13", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:13", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "58:133:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "169:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "178:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "181:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "171:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "171:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "171:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "81:5:13" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "92:5:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "99:66:13", + "type": "", + "value": "0xffffffff00000000000000000000000000000000000000000000000000000000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "88:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "88:78:13" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "78:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "78:89:13" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "71:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "71:97:13" + }, + "nodeType": "YulIf", + "src": "68:117:13" + } + ] + }, + "name": "validator_revert_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "47:5:13", + "type": "" + } + ], + "src": "14:177:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "265:176:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "311:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "323:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "313:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "313:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "313:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "286:7:13" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "295:9:13" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "282:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "282:23:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "307:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "278:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "278:32:13" + }, + "nodeType": "YulIf", + "src": "275:52:13" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "336:36:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "362:9:13" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "349:12:13" + }, + "nodeType": "YulFunctionCall", + "src": "349:23:13" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "340:5:13", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "405:5:13" + } + ], + "functionName": { + "name": "validator_revert_bytes4", + "nodeType": "YulIdentifier", + "src": "381:23:13" + }, + "nodeType": "YulFunctionCall", + "src": "381:30:13" + }, + "nodeType": "YulExpressionStatement", + "src": "381:30:13" + }, + { + "nodeType": "YulAssignment", + "src": "420:15:13", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "430:5:13" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "420:6:13" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "231:9:13", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "242:7:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "254:6:13", + "type": "" + } + ], + "src": "196:245:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "541:92:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "551:26:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "563:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "574:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "559:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "559:18:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "551:4:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "593:9:13" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "618:6:13" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "611:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "611:14:13" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "604:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "604:22:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "586:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "586:41:13" + }, + "nodeType": "YulExpressionStatement", + "src": "586:41:13" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "510:9:13", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "521:6:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "532:4:13", + "type": "" + } + ], + "src": "446:187:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "691:205:13", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "701:10:13", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "710:1:13", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "705:1:13", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "770:63:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "795:3:13" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "800:1:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "791:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "791:11:13" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "814:3:13" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "819:1:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "810:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "810:11:13" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "804:5:13" + }, + "nodeType": "YulFunctionCall", + "src": "804:18:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "784:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "784:39:13" + }, + "nodeType": "YulExpressionStatement", + "src": "784:39:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "731:1:13" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "734:6:13" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "728:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "728:13:13" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "742:19:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "744:15:13", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "753:1:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "756:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "749:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "749:10:13" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "744:1:13" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "724:3:13", + "statements": [] + }, + "src": "720:113:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "859:31:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "872:3:13" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "877:6:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "868:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "868:16:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "886:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "861:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "861:27:13" + }, + "nodeType": "YulExpressionStatement", + "src": "861:27:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "848:1:13" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "851:6:13" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "845:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "845:13:13" + }, + "nodeType": "YulIf", + "src": "842:48:13" + } + ] + }, + "name": "copy_memory_to_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "669:3:13", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "674:3:13", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "679:6:13", + "type": "" + } + ], + "src": "638:258:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "951:267:13", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "961:26:13", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "981:5:13" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "975:5:13" + }, + "nodeType": "YulFunctionCall", + "src": "975:12:13" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "965:6:13", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1003:3:13" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1008:6:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "996:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "996:19:13" + }, + "nodeType": "YulExpressionStatement", + "src": "996:19:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1050:5:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1057:4:13", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1046:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1046:16:13" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1068:3:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1073:4:13", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1064:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1064:14:13" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1080:6:13" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "1024:21:13" + }, + "nodeType": "YulFunctionCall", + "src": "1024:63:13" + }, + "nodeType": "YulExpressionStatement", + "src": "1024:63:13" + }, + { + "nodeType": "YulAssignment", + "src": "1096:116:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1111:3:13" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1124:6:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1132:2:13", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1120:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1120:15:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1137:66:13", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1116:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1116:88:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1107:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1107:98:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1207:4:13", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1103:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1103:109:13" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "1096:3:13" + } + ] + } + ] + }, + "name": "abi_encode_string", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "928:5:13", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "935:3:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "943:3:13", + "type": "" + } + ], + "src": "901:317:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1344:99:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1361:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1372:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1354:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "1354:21:13" + }, + "nodeType": "YulExpressionStatement", + "src": "1354:21:13" + }, + { + "nodeType": "YulAssignment", + "src": "1384:53:13", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1410:6:13" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1422:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1433:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1418:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1418:18:13" + } + ], + "functionName": { + "name": "abi_encode_string", + "nodeType": "YulIdentifier", + "src": "1392:17:13" + }, + "nodeType": "YulFunctionCall", + "src": "1392:45:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1384:4:13" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1313:9:13", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1324:6:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1335:4:13", + "type": "" + } + ], + "src": "1223:220:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1518:110:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1564:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1573:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1576:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1566:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "1566:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "1566:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1539:7:13" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1548:9:13" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1535:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1535:23:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1560:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1531:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1531:32:13" + }, + "nodeType": "YulIf", + "src": "1528:52:13" + }, + { + "nodeType": "YulAssignment", + "src": "1589:33:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1612:9:13" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1599:12:13" + }, + "nodeType": "YulFunctionCall", + "src": "1599:23:13" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1589:6:13" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1484:9:13", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1495:7:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1507:6:13", + "type": "" + } + ], + "src": "1448:180:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1734:125:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1744:26:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1756:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1767:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1752:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1752:18:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1744:4:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1786:9:13" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1801:6:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1809:42:13", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1797:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1797:55:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1779:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "1779:74:13" + }, + "nodeType": "YulExpressionStatement", + "src": "1779:74:13" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1703:9:13", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1714:6:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1725:4:13", + "type": "" + } + ], + "src": "1633:226:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1913:147:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1923:29:13", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1945:6:13" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1932:12:13" + }, + "nodeType": "YulFunctionCall", + "src": "1932:20:13" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1923:5:13" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2038:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2047:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2050:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2040:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "2040:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "2040:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1974:5:13" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1985:5:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1992:42:13", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1981:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1981:54:13" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1971:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "1971:65:13" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1964:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "1964:73:13" + }, + "nodeType": "YulIf", + "src": "1961:93:13" + } + ] + }, + "name": "abi_decode_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1892:6:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1903:5:13", + "type": "" + } + ], + "src": "1864:196:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2152:167:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2198:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2207:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2210:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2200:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "2200:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "2200:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2173:7:13" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2182:9:13" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2169:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "2169:23:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2194:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2165:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "2165:32:13" + }, + "nodeType": "YulIf", + "src": "2162:52:13" + }, + { + "nodeType": "YulAssignment", + "src": "2223:39:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2252:9:13" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "2233:18:13" + }, + "nodeType": "YulFunctionCall", + "src": "2233:29:13" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2223:6:13" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2271:42:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2298:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2309:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2294:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "2294:18:13" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2281:12:13" + }, + "nodeType": "YulFunctionCall", + "src": "2281:32:13" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2271:6:13" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2110:9:13", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2121:7:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2133:6:13", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2141:6:13", + "type": "" + } + ], + "src": "2065:254:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2425:76:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2435:26:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2447:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2458:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2443:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "2443:18:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2435:4:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2477:9:13" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2488:6:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2470:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "2470:25:13" + }, + "nodeType": "YulExpressionStatement", + "src": "2470:25:13" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2394:9:13", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2405:6:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2416:4:13", + "type": "" + } + ], + "src": "2324:177:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2610:224:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2656:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2665:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2668:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2658:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "2658:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "2658:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2631:7:13" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2640:9:13" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2627:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "2627:23:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2652:2:13", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2623:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "2623:32:13" + }, + "nodeType": "YulIf", + "src": "2620:52:13" + }, + { + "nodeType": "YulAssignment", + "src": "2681:39:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2710:9:13" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "2691:18:13" + }, + "nodeType": "YulFunctionCall", + "src": "2691:29:13" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2681:6:13" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2729:48:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2762:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2773:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2758:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "2758:18:13" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "2739:18:13" + }, + "nodeType": "YulFunctionCall", + "src": "2739:38:13" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2729:6:13" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2786:42:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2813:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2824:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2809:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "2809:18:13" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2796:12:13" + }, + "nodeType": "YulFunctionCall", + "src": "2796:32:13" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "2786:6:13" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2560:9:13", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2571:7:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2583:6:13", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2591:6:13", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "2599:6:13", + "type": "" + } + ], + "src": "2506:328:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2909:116:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2955:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2964:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2967:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2957:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "2957:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "2957:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2930:7:13" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2939:9:13" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2926:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "2926:23:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2951:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2922:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "2922:32:13" + }, + "nodeType": "YulIf", + "src": "2919:52:13" + }, + { + "nodeType": "YulAssignment", + "src": "2980:39:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3009:9:13" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "2990:18:13" + }, + "nodeType": "YulFunctionCall", + "src": "2990:29:13" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2980:6:13" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2875:9:13", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2886:7:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2898:6:13", + "type": "" + } + ], + "src": "2839:186:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3114:263:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3160:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3169:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3172:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3162:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "3162:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "3162:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3135:7:13" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3144:9:13" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3131:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "3131:23:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3156:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3127:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "3127:32:13" + }, + "nodeType": "YulIf", + "src": "3124:52:13" + }, + { + "nodeType": "YulAssignment", + "src": "3185:39:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3214:9:13" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "3195:18:13" + }, + "nodeType": "YulFunctionCall", + "src": "3195:29:13" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3185:6:13" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3233:45:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3263:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3274:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3259:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "3259:18:13" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3246:12:13" + }, + "nodeType": "YulFunctionCall", + "src": "3246:32:13" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3237:5:13", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3331:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3340:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3343:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3333:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "3333:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "3333:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3300:5:13" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3321:5:13" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3314:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "3314:13:13" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3307:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "3307:21:13" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "3297:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "3297:32:13" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3290:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "3290:40:13" + }, + "nodeType": "YulIf", + "src": "3287:60:13" + }, + { + "nodeType": "YulAssignment", + "src": "3356:15:13", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3366:5:13" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "3356:6:13" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3072:9:13", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3083:7:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3095:6:13", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "3103:6:13", + "type": "" + } + ], + "src": "3030:347:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3414:152:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3431:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3434:77:13", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3424:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "3424:88:13" + }, + "nodeType": "YulExpressionStatement", + "src": "3424:88:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3528:1:13", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3531:4:13", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3521:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "3521:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "3521:15:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3552:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3555:4:13", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3545:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "3545:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "3545:15:13" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "3382:184:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3701:1067:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3748:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3757:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3760:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3750:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "3750:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "3750:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3722:7:13" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3731:9:13" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3718:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "3718:23:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3743:3:13", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3714:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "3714:33:13" + }, + "nodeType": "YulIf", + "src": "3711:53:13" + }, + { + "nodeType": "YulAssignment", + "src": "3773:39:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3802:9:13" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "3783:18:13" + }, + "nodeType": "YulFunctionCall", + "src": "3783:29:13" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3773:6:13" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3821:48:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3854:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3865:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3850:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "3850:18:13" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "3831:18:13" + }, + "nodeType": "YulFunctionCall", + "src": "3831:38:13" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "3821:6:13" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3878:42:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3905:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3916:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3901:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "3901:18:13" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3888:12:13" + }, + "nodeType": "YulFunctionCall", + "src": "3888:32:13" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "3878:6:13" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3929:46:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3960:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3971:2:13", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3956:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "3956:18:13" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3943:12:13" + }, + "nodeType": "YulFunctionCall", + "src": "3943:32:13" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3933:6:13", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3984:28:13", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3994:18:13", + "type": "", + "value": "0xffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "3988:2:13", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4039:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4048:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4051:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4041:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "4041:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "4041:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4027:6:13" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "4035:2:13" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4024:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "4024:14:13" + }, + "nodeType": "YulIf", + "src": "4021:34:13" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4064:32:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4078:9:13" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4089:6:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4074:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4074:22:13" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "4068:2:13", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4144:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4153:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4156:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4146:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "4146:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "4146:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "4123:2:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4127:4:13", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4119:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4119:13:13" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4134:7:13" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4115:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4115:27:13" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "4108:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "4108:35:13" + }, + "nodeType": "YulIf", + "src": "4105:55:13" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4169:26:13", + "value": { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "4192:2:13" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4179:12:13" + }, + "nodeType": "YulFunctionCall", + "src": "4179:16:13" + }, + "variables": [ + { + "name": "_3", + "nodeType": "YulTypedName", + "src": "4173:2:13", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4218:22:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "4220:16:13" + }, + "nodeType": "YulFunctionCall", + "src": "4220:18:13" + }, + "nodeType": "YulExpressionStatement", + "src": "4220:18:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "4210:2:13" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "4214:2:13" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4207:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "4207:10:13" + }, + "nodeType": "YulIf", + "src": "4204:36:13" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4249:76:13", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4259:66:13", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + }, + "variables": [ + { + "name": "_4", + "nodeType": "YulTypedName", + "src": "4253:2:13", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4334:23:13", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4354:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "4348:5:13" + }, + "nodeType": "YulFunctionCall", + "src": "4348:9:13" + }, + "variables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "4338:6:13", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4366:71:13", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "4388:6:13" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "4412:2:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4416:4:13", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4408:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4408:13:13" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "4423:2:13" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "4404:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4404:22:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4428:2:13", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4400:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4400:31:13" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "4433:2:13" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "4396:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4396:40:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4384:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4384:53:13" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "4370:10:13", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4496:22:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "4498:16:13" + }, + "nodeType": "YulFunctionCall", + "src": "4498:18:13" + }, + "nodeType": "YulExpressionStatement", + "src": "4498:18:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "4455:10:13" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "4467:2:13" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4452:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "4452:18:13" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "4475:10:13" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "4487:6:13" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "4472:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "4472:22:13" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "4449:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "4449:46:13" + }, + "nodeType": "YulIf", + "src": "4446:72:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4534:2:13", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "4538:10:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4527:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "4527:22:13" + }, + "nodeType": "YulExpressionStatement", + "src": "4527:22:13" + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "4565:6:13" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "4573:2:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4558:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "4558:18:13" + }, + "nodeType": "YulExpressionStatement", + "src": "4558:18:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4622:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4631:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4634:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4624:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "4624:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "4624:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "4599:2:13" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "4603:2:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4595:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4595:11:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4608:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4591:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4591:20:13" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4613:7:13" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4588:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "4588:33:13" + }, + "nodeType": "YulIf", + "src": "4585:53:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "4664:6:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4672:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4660:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4660:15:13" + }, + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "4681:2:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4685:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4677:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4677:11:13" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "4690:2:13" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "4647:12:13" + }, + "nodeType": "YulFunctionCall", + "src": "4647:46:13" + }, + "nodeType": "YulExpressionStatement", + "src": "4647:46:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "4717:6:13" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "4725:2:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4713:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4713:15:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4730:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4709:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4709:24:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4735:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4702:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "4702:35:13" + }, + "nodeType": "YulExpressionStatement", + "src": "4702:35:13" + }, + { + "nodeType": "YulAssignment", + "src": "4746:16:13", + "value": { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "4756:6:13" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "4746:6:13" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3643:9:13", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3654:7:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3666:6:13", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "3674:6:13", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "3682:6:13", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "3690:6:13", + "type": "" + } + ], + "src": "3571:1197:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4860:173:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4906:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4915:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4918:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4908:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "4908:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "4908:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4881:7:13" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4890:9:13" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4877:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4877:23:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4902:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4873:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4873:32:13" + }, + "nodeType": "YulIf", + "src": "4870:52:13" + }, + { + "nodeType": "YulAssignment", + "src": "4931:39:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4960:9:13" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "4941:18:13" + }, + "nodeType": "YulFunctionCall", + "src": "4941:29:13" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4931:6:13" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4979:48:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5012:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5023:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5008:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "5008:18:13" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "4989:18:13" + }, + "nodeType": "YulFunctionCall", + "src": "4989:38:13" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "4979:6:13" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4818:9:13", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "4829:7:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4841:6:13", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "4849:6:13", + "type": "" + } + ], + "src": "4773:260:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5093:382:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5103:22:13", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5117:1:13", + "type": "", + "value": "1" + }, + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "5120:4:13" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5113:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "5113:12:13" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5103:6:13" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5134:38:13", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "5164:4:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5170:1:13", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5160:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "5160:12:13" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "5138:18:13", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5211:31:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5213:27:13", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5227:6:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5235:4:13", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5223:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "5223:17:13" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5213:6:13" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "5191:18:13" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5184:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "5184:26:13" + }, + "nodeType": "YulIf", + "src": "5181:61:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5301:168:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5322:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5325:77:13", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5315:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "5315:88:13" + }, + "nodeType": "YulExpressionStatement", + "src": "5315:88:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5423:1:13", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5426:4:13", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5416:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "5416:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "5416:15:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5451:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5454:4:13", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5444:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "5444:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "5444:15:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "5257:18:13" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5280:6:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5288:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "5277:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "5277:14:13" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "5254:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "5254:38:13" + }, + "nodeType": "YulIf", + "src": "5251:218:13" + } + ] + }, + "name": "extract_byte_array_length", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "5073:4:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "5082:6:13", + "type": "" + } + ], + "src": "5038:437:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5654:234:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5671:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5682:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5664:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "5664:21:13" + }, + "nodeType": "YulExpressionStatement", + "src": "5664:21:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5705:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5716:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5701:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "5701:18:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5721:2:13", + "type": "", + "value": "44" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5694:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "5694:30:13" + }, + "nodeType": "YulExpressionStatement", + "src": "5694:30:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5744:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5755:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5740:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "5740:18:13" + }, + { + "hexValue": "4552433732313a20617070726f76656420717565727920666f72206e6f6e6578", + "kind": "string", + "nodeType": "YulLiteral", + "src": "5760:34:13", + "type": "", + "value": "ERC721: approved query for nonex" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5733:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "5733:62:13" + }, + "nodeType": "YulExpressionStatement", + "src": "5733:62:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5815:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5826:2:13", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5811:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "5811:18:13" + }, + { + "hexValue": "697374656e7420746f6b656e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "5831:14:13", + "type": "", + "value": "istent token" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5804:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "5804:42:13" + }, + "nodeType": "YulExpressionStatement", + "src": "5804:42:13" + }, + { + "nodeType": "YulAssignment", + "src": "5855:27:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5867:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5878:3:13", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5863:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "5863:19:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5855:4:13" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5631:9:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5645:4:13", + "type": "" + } + ], + "src": "5480:408:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6067:223:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6084:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6095:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6077:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "6077:21:13" + }, + "nodeType": "YulExpressionStatement", + "src": "6077:21:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6118:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6129:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6114:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "6114:18:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6134:2:13", + "type": "", + "value": "33" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6107:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "6107:30:13" + }, + "nodeType": "YulExpressionStatement", + "src": "6107:30:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6157:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6168:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6153:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "6153:18:13" + }, + { + "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e65", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6173:34:13", + "type": "", + "value": "ERC721: approval to current owne" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6146:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "6146:62:13" + }, + "nodeType": "YulExpressionStatement", + "src": "6146:62:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6228:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6239:2:13", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6224:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "6224:18:13" + }, + { + "hexValue": "72", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6244:3:13", + "type": "", + "value": "r" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6217:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "6217:31:13" + }, + "nodeType": "YulExpressionStatement", + "src": "6217:31:13" + }, + { + "nodeType": "YulAssignment", + "src": "6257:27:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6269:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6280:3:13", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6265:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "6265:19:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6257:4:13" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6044:9:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6058:4:13", + "type": "" + } + ], + "src": "5893:397:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6469:246:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6486:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6497:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6479:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "6479:21:13" + }, + "nodeType": "YulExpressionStatement", + "src": "6479:21:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6520:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6531:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6516:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "6516:18:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6536:2:13", + "type": "", + "value": "56" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6509:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "6509:30:13" + }, + "nodeType": "YulExpressionStatement", + "src": "6509:30:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6559:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6570:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6555:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "6555:18:13" + }, + { + "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f74206f77", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6575:34:13", + "type": "", + "value": "ERC721: approve caller is not ow" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6548:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "6548:62:13" + }, + "nodeType": "YulExpressionStatement", + "src": "6548:62:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6630:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6641:2:13", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6626:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "6626:18:13" + }, + { + "hexValue": "6e6572206e6f7220617070726f76656420666f7220616c6c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6646:26:13", + "type": "", + "value": "ner nor approved for all" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6619:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "6619:54:13" + }, + "nodeType": "YulExpressionStatement", + "src": "6619:54:13" + }, + { + "nodeType": "YulAssignment", + "src": "6682:27:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6694:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6705:3:13", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6690:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "6690:19:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6682:4:13" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6446:9:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6460:4:13", + "type": "" + } + ], + "src": "6295:420:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6894:239:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6911:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6922:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6904:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "6904:21:13" + }, + "nodeType": "YulExpressionStatement", + "src": "6904:21:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6945:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6956:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6941:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "6941:18:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6961:2:13", + "type": "", + "value": "49" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6934:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "6934:30:13" + }, + "nodeType": "YulExpressionStatement", + "src": "6934:30:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6984:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6995:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6980:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "6980:18:13" + }, + { + "hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f", + "kind": "string", + "nodeType": "YulLiteral", + "src": "7000:34:13", + "type": "", + "value": "ERC721: transfer caller is not o" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6973:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "6973:62:13" + }, + "nodeType": "YulExpressionStatement", + "src": "6973:62:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7055:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7066:2:13", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7051:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "7051:18:13" + }, + { + "hexValue": "776e6572206e6f7220617070726f766564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "7071:19:13", + "type": "", + "value": "wner nor approved" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7044:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "7044:47:13" + }, + "nodeType": "YulExpressionStatement", + "src": "7044:47:13" + }, + { + "nodeType": "YulAssignment", + "src": "7100:27:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7112:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7123:3:13", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7108:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "7108:19:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7100:4:13" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6871:9:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6885:4:13", + "type": "" + } + ], + "src": "6720:413:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7312:232:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7329:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7340:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7322:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "7322:21:13" + }, + "nodeType": "YulExpressionStatement", + "src": "7322:21:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7363:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7374:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7359:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "7359:18:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7379:2:13", + "type": "", + "value": "42" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7352:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "7352:30:13" + }, + "nodeType": "YulExpressionStatement", + "src": "7352:30:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7402:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7413:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7398:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "7398:18:13" + }, + { + "hexValue": "4552433732313a2062616c616e636520717565727920666f7220746865207a65", + "kind": "string", + "nodeType": "YulLiteral", + "src": "7418:34:13", + "type": "", + "value": "ERC721: balance query for the ze" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7391:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "7391:62:13" + }, + "nodeType": "YulExpressionStatement", + "src": "7391:62:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7473:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7484:2:13", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7469:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "7469:18:13" + }, + { + "hexValue": "726f2061646472657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "7489:12:13", + "type": "", + "value": "ro address" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7462:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "7462:40:13" + }, + "nodeType": "YulExpressionStatement", + "src": "7462:40:13" + }, + { + "nodeType": "YulAssignment", + "src": "7511:27:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7523:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7534:3:13", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7519:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "7519:19:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7511:4:13" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7289:9:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7303:4:13", + "type": "" + } + ], + "src": "7138:406:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7723:175:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7740:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7751:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7733:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "7733:21:13" + }, + "nodeType": "YulExpressionStatement", + "src": "7733:21:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7774:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7785:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7770:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "7770:18:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7790:2:13", + "type": "", + "value": "25" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7763:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "7763:30:13" + }, + "nodeType": "YulExpressionStatement", + "src": "7763:30:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7813:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7824:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7809:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "7809:18:13" + }, + { + "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572", + "kind": "string", + "nodeType": "YulLiteral", + "src": "7829:27:13", + "type": "", + "value": "ERC721: approve to caller" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7802:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "7802:55:13" + }, + "nodeType": "YulExpressionStatement", + "src": "7802:55:13" + }, + { + "nodeType": "YulAssignment", + "src": "7866:26:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7878:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7889:2:13", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7874:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "7874:18:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7866:4:13" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7700:9:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7714:4:13", + "type": "" + } + ], + "src": "7549:349:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8077:237:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8094:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8105:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8087:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "8087:21:13" + }, + "nodeType": "YulExpressionStatement", + "src": "8087:21:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8128:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8139:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8124:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "8124:18:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8144:2:13", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8117:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "8117:30:13" + }, + "nodeType": "YulExpressionStatement", + "src": "8117:30:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8167:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8178:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8163:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "8163:18:13" + }, + { + "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f", + "kind": "string", + "nodeType": "YulLiteral", + "src": "8183:34:13", + "type": "", + "value": "ERC721Metadata: URI query for no" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8156:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "8156:62:13" + }, + "nodeType": "YulExpressionStatement", + "src": "8156:62:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8238:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8249:2:13", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8234:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "8234:18:13" + }, + { + "hexValue": "6e6578697374656e7420746f6b656e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "8254:17:13", + "type": "", + "value": "nexistent token" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8227:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "8227:45:13" + }, + "nodeType": "YulExpressionStatement", + "src": "8227:45:13" + }, + { + "nodeType": "YulAssignment", + "src": "8281:27:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8293:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8304:3:13", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8289:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "8289:19:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8281:4:13" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8054:9:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "8068:4:13", + "type": "" + } + ], + "src": "7903:411:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8506:283:13", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8516:27:13", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "8536:6:13" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "8530:5:13" + }, + "nodeType": "YulFunctionCall", + "src": "8530:13:13" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "8520:6:13", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "8578:6:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8586:4:13", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8574:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "8574:17:13" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8593:3:13" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "8598:6:13" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "8552:21:13" + }, + "nodeType": "YulFunctionCall", + "src": "8552:53:13" + }, + "nodeType": "YulExpressionStatement", + "src": "8552:53:13" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8614:29:13", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8631:3:13" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "8636:6:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8627:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "8627:16:13" + }, + "variables": [ + { + "name": "end_1", + "nodeType": "YulTypedName", + "src": "8618:5:13", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8652:29:13", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "8674:6:13" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "8668:5:13" + }, + "nodeType": "YulFunctionCall", + "src": "8668:13:13" + }, + "variables": [ + { + "name": "length_1", + "nodeType": "YulTypedName", + "src": "8656:8:13", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "8716:6:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8724:4:13", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8712:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "8712:17:13" + }, + { + "name": "end_1", + "nodeType": "YulIdentifier", + "src": "8731:5:13" + }, + { + "name": "length_1", + "nodeType": "YulIdentifier", + "src": "8738:8:13" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "8690:21:13" + }, + "nodeType": "YulFunctionCall", + "src": "8690:57:13" + }, + "nodeType": "YulExpressionStatement", + "src": "8690:57:13" + }, + { + "nodeType": "YulAssignment", + "src": "8756:27:13", + "value": { + "arguments": [ + { + "name": "end_1", + "nodeType": "YulIdentifier", + "src": "8767:5:13" + }, + { + "name": "length_1", + "nodeType": "YulIdentifier", + "src": "8774:8:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8763:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "8763:20:13" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "8756:3:13" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "8474:3:13", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "8479:6:13", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "8487:6:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "8498:3:13", + "type": "" + } + ], + "src": "8319:470:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8968:234:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8985:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8996:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8978:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "8978:21:13" + }, + "nodeType": "YulExpressionStatement", + "src": "8978:21:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9019:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9030:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9015:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "9015:18:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9035:2:13", + "type": "", + "value": "44" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9008:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "9008:30:13" + }, + "nodeType": "YulExpressionStatement", + "src": "9008:30:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9058:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9069:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9054:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "9054:18:13" + }, + { + "hexValue": "4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578", + "kind": "string", + "nodeType": "YulLiteral", + "src": "9074:34:13", + "type": "", + "value": "ERC721: operator query for nonex" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9047:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "9047:62:13" + }, + "nodeType": "YulExpressionStatement", + "src": "9047:62:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9129:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9140:2:13", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9125:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "9125:18:13" + }, + { + "hexValue": "697374656e7420746f6b656e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "9145:14:13", + "type": "", + "value": "istent token" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9118:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "9118:42:13" + }, + "nodeType": "YulExpressionStatement", + "src": "9118:42:13" + }, + { + "nodeType": "YulAssignment", + "src": "9169:27:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9181:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9192:3:13", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9177:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "9177:19:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9169:4:13" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8945:9:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "8959:4:13", + "type": "" + } + ], + "src": "8794:408:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9381:231:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9398:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9409:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9391:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "9391:21:13" + }, + "nodeType": "YulExpressionStatement", + "src": "9391:21:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9432:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9443:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9428:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "9428:18:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9448:2:13", + "type": "", + "value": "41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9421:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "9421:30:13" + }, + "nodeType": "YulExpressionStatement", + "src": "9421:30:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9471:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9482:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9467:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "9467:18:13" + }, + { + "hexValue": "4552433732313a207472616e73666572206f6620746f6b656e20746861742069", + "kind": "string", + "nodeType": "YulLiteral", + "src": "9487:34:13", + "type": "", + "value": "ERC721: transfer of token that i" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9460:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "9460:62:13" + }, + "nodeType": "YulExpressionStatement", + "src": "9460:62:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9542:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9553:2:13", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9538:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "9538:18:13" + }, + { + "hexValue": "73206e6f74206f776e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "9558:11:13", + "type": "", + "value": "s not own" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9531:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "9531:39:13" + }, + "nodeType": "YulExpressionStatement", + "src": "9531:39:13" + }, + { + "nodeType": "YulAssignment", + "src": "9579:27:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9591:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9602:3:13", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9587:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "9587:19:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9579:4:13" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9358:9:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "9372:4:13", + "type": "" + } + ], + "src": "9207:405:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9791:226:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9808:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9819:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9801:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "9801:21:13" + }, + "nodeType": "YulExpressionStatement", + "src": "9801:21:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9842:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9853:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9838:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "9838:18:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9858:2:13", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9831:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "9831:30:13" + }, + "nodeType": "YulExpressionStatement", + "src": "9831:30:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9881:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9892:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9877:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "9877:18:13" + }, + { + "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f20616464", + "kind": "string", + "nodeType": "YulLiteral", + "src": "9897:34:13", + "type": "", + "value": "ERC721: transfer to the zero add" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9870:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "9870:62:13" + }, + "nodeType": "YulExpressionStatement", + "src": "9870:62:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9952:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9963:2:13", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9948:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "9948:18:13" + }, + { + "hexValue": "72657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "9968:6:13", + "type": "", + "value": "ress" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9941:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "9941:34:13" + }, + "nodeType": "YulExpressionStatement", + "src": "9941:34:13" + }, + { + "nodeType": "YulAssignment", + "src": "9984:27:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9996:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10007:3:13", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9992:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "9992:19:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9984:4:13" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9768:9:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "9782:4:13", + "type": "" + } + ], + "src": "9617:400:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10196:240:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10213:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10224:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10206:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "10206:21:13" + }, + "nodeType": "YulExpressionStatement", + "src": "10206:21:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10247:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10258:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10243:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "10243:18:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10263:2:13", + "type": "", + "value": "50" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10236:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "10236:30:13" + }, + "nodeType": "YulExpressionStatement", + "src": "10236:30:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10286:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10297:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10282:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "10282:18:13" + }, + { + "hexValue": "4552433732313a207472616e7366657220746f206e6f6e204552433732315265", + "kind": "string", + "nodeType": "YulLiteral", + "src": "10302:34:13", + "type": "", + "value": "ERC721: transfer to non ERC721Re" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10275:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "10275:62:13" + }, + "nodeType": "YulExpressionStatement", + "src": "10275:62:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10357:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10368:2:13", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10353:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "10353:18:13" + }, + { + "hexValue": "63656976657220696d706c656d656e746572", + "kind": "string", + "nodeType": "YulLiteral", + "src": "10373:20:13", + "type": "", + "value": "ceiver implementer" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10346:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "10346:48:13" + }, + "nodeType": "YulExpressionStatement", + "src": "10346:48:13" + }, + { + "nodeType": "YulAssignment", + "src": "10403:27:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10415:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10426:3:13", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10411:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "10411:19:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10403:4:13" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10173:9:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "10187:4:13", + "type": "" + } + ], + "src": "10022:414:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10473:152:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10490:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10493:77:13", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10483:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "10483:88:13" + }, + "nodeType": "YulExpressionStatement", + "src": "10483:88:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10587:1:13", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10590:4:13", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10580:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "10580:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "10580:15:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10611:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10614:4:13", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10604:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "10604:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "10604:15:13" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "10441:184:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10677:148:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "10768:22:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "10770:16:13" + }, + "nodeType": "YulFunctionCall", + "src": "10770:18:13" + }, + "nodeType": "YulExpressionStatement", + "src": "10770:18:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10693:5:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10700:66:13", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "10690:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "10690:77:13" + }, + "nodeType": "YulIf", + "src": "10687:103:13" + }, + { + "nodeType": "YulAssignment", + "src": "10799:20:13", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10810:5:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10817:1:13", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10806:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "10806:13:13" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "10799:3:13" + } + ] + } + ] + }, + "name": "increment_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10659:5:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "10669:3:13", + "type": "" + } + ], + "src": "10630:195:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10862:152:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10879:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10882:77:13", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10872:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "10872:88:13" + }, + "nodeType": "YulExpressionStatement", + "src": "10872:88:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10976:1:13", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10979:4:13", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10969:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "10969:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "10969:15:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11000:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11003:4:13", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10993:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "10993:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "10993:15:13" + } + ] + }, + "name": "panic_error_0x12", + "nodeType": "YulFunctionDefinition", + "src": "10830:184:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11065:74:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "11088:22:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x12", + "nodeType": "YulIdentifier", + "src": "11090:16:13" + }, + "nodeType": "YulFunctionCall", + "src": "11090:18:13" + }, + "nodeType": "YulExpressionStatement", + "src": "11090:18:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11085:1:13" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "11078:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "11078:9:13" + }, + "nodeType": "YulIf", + "src": "11075:35:13" + }, + { + "nodeType": "YulAssignment", + "src": "11119:14:13", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11128:1:13" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11131:1:13" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "11124:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "11124:9:13" + }, + "variableNames": [ + { + "name": "r", + "nodeType": "YulIdentifier", + "src": "11119:1:13" + } + ] + } + ] + }, + "name": "checked_div_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "11050:1:13", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "11053:1:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "r", + "nodeType": "YulTypedName", + "src": "11059:1:13", + "type": "" + } + ], + "src": "11019:120:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11193:76:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "11215:22:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "11217:16:13" + }, + "nodeType": "YulFunctionCall", + "src": "11217:18:13" + }, + "nodeType": "YulExpressionStatement", + "src": "11217:18:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11209:1:13" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11212:1:13" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "11206:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "11206:8:13" + }, + "nodeType": "YulIf", + "src": "11203:34:13" + }, + { + "nodeType": "YulAssignment", + "src": "11246:17:13", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11258:1:13" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11261:1:13" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "11254:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "11254:9:13" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "11246:4:13" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "11175:1:13", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "11178:1:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "11184:4:13", + "type": "" + } + ], + "src": "11144:125:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11312:74:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "11335:22:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x12", + "nodeType": "YulIdentifier", + "src": "11337:16:13" + }, + "nodeType": "YulFunctionCall", + "src": "11337:18:13" + }, + "nodeType": "YulExpressionStatement", + "src": "11337:18:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11332:1:13" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "11325:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "11325:9:13" + }, + "nodeType": "YulIf", + "src": "11322:35:13" + }, + { + "nodeType": "YulAssignment", + "src": "11366:14:13", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11375:1:13" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11378:1:13" + } + ], + "functionName": { + "name": "mod", + "nodeType": "YulIdentifier", + "src": "11371:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "11371:9:13" + }, + "variableNames": [ + { + "name": "r", + "nodeType": "YulIdentifier", + "src": "11366:1:13" + } + ] + } + ] + }, + "name": "mod_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "11297:1:13", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "11300:1:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "r", + "nodeType": "YulTypedName", + "src": "11306:1:13", + "type": "" + } + ], + "src": "11274:112:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11439:80:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "11466:22:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "11468:16:13" + }, + "nodeType": "YulFunctionCall", + "src": "11468:18:13" + }, + "nodeType": "YulExpressionStatement", + "src": "11468:18:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11455:1:13" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11462:1:13" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "11458:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "11458:6:13" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "11452:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "11452:13:13" + }, + "nodeType": "YulIf", + "src": "11449:39:13" + }, + { + "nodeType": "YulAssignment", + "src": "11497:16:13", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11508:1:13" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11511:1:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11504:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "11504:9:13" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "11497:3:13" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "11422:1:13", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "11425:1:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "11431:3:13", + "type": "" + } + ], + "src": "11391:128:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11556:152:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11573:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11576:77:13", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11566:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "11566:88:13" + }, + "nodeType": "YulExpressionStatement", + "src": "11566:88:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11670:1:13", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11673:4:13", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11663:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "11663:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "11663:15:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11694:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11697:4:13", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "11687:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "11687:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "11687:15:13" + } + ] + }, + "name": "panic_error_0x32", + "nodeType": "YulFunctionDefinition", + "src": "11524:184:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11887:224:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11904:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11915:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11897:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "11897:21:13" + }, + "nodeType": "YulExpressionStatement", + "src": "11897:21:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11938:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11949:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11934:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "11934:18:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11954:2:13", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11927:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "11927:30:13" + }, + "nodeType": "YulExpressionStatement", + "src": "11927:30:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11977:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11988:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11973:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "11973:18:13" + }, + { + "hexValue": "456e756d657261626c655365743a20696e646578206f7574206f6620626f756e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "11993:34:13", + "type": "", + "value": "EnumerableSet: index out of boun" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11966:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "11966:62:13" + }, + "nodeType": "YulExpressionStatement", + "src": "11966:62:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12048:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12059:2:13", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12044:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "12044:18:13" + }, + { + "hexValue": "6473", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12064:4:13", + "type": "", + "value": "ds" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12037:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "12037:32:13" + }, + "nodeType": "YulExpressionStatement", + "src": "12037:32:13" + }, + { + "nodeType": "YulAssignment", + "src": "12078:27:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12090:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12101:3:13", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12086:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "12086:19:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12078:4:13" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "11864:9:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "11878:4:13", + "type": "" + } + ], + "src": "11713:398:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12290:224:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12307:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12318:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12300:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "12300:21:13" + }, + "nodeType": "YulExpressionStatement", + "src": "12300:21:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12341:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12352:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12337:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "12337:18:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12357:2:13", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12330:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "12330:30:13" + }, + "nodeType": "YulExpressionStatement", + "src": "12330:30:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12380:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12391:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12376:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "12376:18:13" + }, + { + "hexValue": "456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12396:34:13", + "type": "", + "value": "EnumerableMap: index out of boun" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12369:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "12369:62:13" + }, + "nodeType": "YulExpressionStatement", + "src": "12369:62:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12451:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12462:2:13", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12447:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "12447:18:13" + }, + { + "hexValue": "6473", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12467:4:13", + "type": "", + "value": "ds" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12440:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "12440:32:13" + }, + "nodeType": "YulExpressionStatement", + "src": "12440:32:13" + }, + { + "nodeType": "YulAssignment", + "src": "12481:27:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12493:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12504:3:13", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12489:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "12489:19:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12481:4:13" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_86631030b9066a18616a068fc09fce83d18af4765cb1d2166fa475228f4db155__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12267:9:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "12281:4:13", + "type": "" + } + ], + "src": "12116:398:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12722:309:13", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12732:52:13", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12742:42:13", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "12736:2:13", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12800:9:13" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "12815:6:13" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "12823:2:13" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "12811:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "12811:15:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12793:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "12793:34:13" + }, + "nodeType": "YulExpressionStatement", + "src": "12793:34:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12847:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12858:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12843:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "12843:18:13" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "12867:6:13" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "12875:2:13" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "12863:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "12863:15:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12836:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "12836:43:13" + }, + "nodeType": "YulExpressionStatement", + "src": "12836:43:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12899:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12910:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12895:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "12895:18:13" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "12915:6:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12888:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "12888:34:13" + }, + "nodeType": "YulExpressionStatement", + "src": "12888:34:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12942:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12953:2:13", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12938:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "12938:18:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12958:3:13", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12931:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "12931:31:13" + }, + "nodeType": "YulExpressionStatement", + "src": "12931:31:13" + }, + { + "nodeType": "YulAssignment", + "src": "12971:54:13", + "value": { + "arguments": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "12997:6:13" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13009:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13020:3:13", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13005:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "13005:19:13" + } + ], + "functionName": { + "name": "abi_encode_string", + "nodeType": "YulIdentifier", + "src": "12979:17:13" + }, + "nodeType": "YulFunctionCall", + "src": "12979:46:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12971:4:13" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12667:9:13", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "12678:6:13", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "12686:6:13", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "12694:6:13", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "12702:6:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "12713:4:13", + "type": "" + } + ], + "src": "12519:512:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13116:169:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "13162:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13171:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13174:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "13164:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "13164:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "13164:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "13137:7:13" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13146:9:13" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "13133:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "13133:23:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13158:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "13129:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "13129:32:13" + }, + "nodeType": "YulIf", + "src": "13126:52:13" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "13187:29:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13206:9:13" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "13200:5:13" + }, + "nodeType": "YulFunctionCall", + "src": "13200:16:13" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "13191:5:13", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13249:5:13" + } + ], + "functionName": { + "name": "validator_revert_bytes4", + "nodeType": "YulIdentifier", + "src": "13225:23:13" + }, + "nodeType": "YulFunctionCall", + "src": "13225:30:13" + }, + "nodeType": "YulExpressionStatement", + "src": "13225:30:13" + }, + { + "nodeType": "YulAssignment", + "src": "13264:15:13", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13274:5:13" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13264:6:13" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes4_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13082:9:13", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "13093:7:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13105:6:13", + "type": "" + } + ], + "src": "13036:249:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13322:152:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13339:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13342:77:13", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13332:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "13332:88:13" + }, + "nodeType": "YulExpressionStatement", + "src": "13332:88:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13436:1:13", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13439:4:13", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13429:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "13429:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "13429:15:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13460:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13463:4:13", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "13453:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "13453:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "13453:15:13" + } + ] + }, + "name": "panic_error_0x31", + "nodeType": "YulFunctionDefinition", + "src": "13290:184:13" + } + ] + }, + "contents": "{\n { }\n function validator_revert_bytes4(value)\n {\n if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\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 abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value1 := value\n }\n function panic_error_0x41()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value3 := memPtr\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\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_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n mstore(add(headStart, 96), \"r\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 56)\n mstore(add(headStart, 64), \"ERC721: approve caller is not ow\")\n mstore(add(headStart, 96), \"ner nor approved for all\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 49)\n mstore(add(headStart, 64), \"ERC721: transfer caller is not o\")\n mstore(add(headStart, 96), \"wner nor approved\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"ERC721: balance query for the ze\")\n mstore(add(headStart, 96), \"ro address\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 25)\n mstore(add(headStart, 64), \"ERC721: approve to caller\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"ERC721Metadata: URI query for no\")\n mstore(add(headStart, 96), \"nexistent token\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory(add(value0, 0x20), pos, length)\n let end_1 := add(pos, length)\n let length_1 := mload(value1)\n copy_memory_to_memory(add(value1, 0x20), end_1, length_1)\n end := add(end_1, length_1)\n }\n function abi_encode_tuple_t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c__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: operator query for nonex\")\n mstore(add(headStart, 96), \"istent token\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC721: transfer of token that i\")\n mstore(add(headStart, 96), \"s not own\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n mstore(add(headStart, 96), \"ress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 50)\n mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n mstore(add(headStart, 96), \"ceiver implementer\")\n tail := add(headStart, 128)\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function panic_error_0x12()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y) { panic_error_0x12() }\n r := div(x, y)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function mod_t_uint256(x, y) -> r\n {\n if iszero(y) { panic_error_0x12() }\n r := mod(x, y)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function panic_error_0x32()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"EnumerableSet: index out of boun\")\n mstore(add(headStart, 96), \"ds\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_86631030b9066a18616a068fc09fce83d18af4765cb1d2166fa475228f4db155__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"EnumerableMap: index out of boun\")\n mstore(add(headStart, 96), \"ds\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n tail := abi_encode_string(value3, add(headStart, 128))\n }\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function panic_error_0x31()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n}", + "id": 13, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506004361061011b5760003560e01c80634f6ccce7116100b257806395d89b4111610081578063b88d4fde11610066578063b88d4fde14610287578063c87b56dd1461029a578063e985e9c5146102ad57600080fd5b806395d89b411461026c578063a22cb4651461027457600080fd5b80634f6ccce71461022b5780636352211e1461023e5780636c0360eb1461025157806370a082311461025957600080fd5b806318160ddd116100ee57806318160ddd146101dc57806323b872dd146101f25780632f745c591461020557806342842e0e1461021857600080fd5b806301ffc9a71461012057806306fdde031461017a578063081812fc1461018f578063095ea7b3146101c7575b600080fd5b61016561012e36600461182c565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101826102f6565b60405161017191906118bf565b6101a261019d3660046118d2565b610388565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610171565b6101da6101d5366004611914565b61044d565b005b6101e46105da565b604051908152602001610171565b6101da61020036600461193e565b6105eb565b6101e4610213366004611914565b61068c565b6101da61022636600461193e565b6106c4565b6101e46102393660046118d2565b6106df565b6101a261024c3660046118d2565b6106f5565b61018261071d565b6101e461026736600461197a565b61072c565b6101826107ff565b6101da610282366004611995565b61080e565b6101da610295366004611a00565b610925565b6101826102a83660046118d2565b6109cd565b6101656102bb366004611afa565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60606006805461030590611b2d565b80601f016020809104026020016040519081016040528092919081815260200182805461033190611b2d565b801561037e5780601f106103535761010080835404028352916020019161037e565b820191906000526020600020905b81548152906001019060200180831161036157829003601f168201915b5050505050905090565b600061039382610b67565b610424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6000610458826106f5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161041b565b3373ffffffffffffffffffffffffffffffffffffffff8216148061053f575061053f81336102bb565b6105cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161041b565b6105d58383610b74565b505050565b60006105e66002610c14565b905090565b6105f53382610c1e565b610681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161041b565b6105d5838383610d74565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081206106bb9083610fb1565b90505b92915050565b6105d583838360405180602001604052806000815250610925565b6000806106ed600284610fbd565b509392505050565b60006106be82604051806060016040528060298152602001611d636029913960029190610fd9565b60606009805461030590611b2d565b600073ffffffffffffffffffffffffffffffffffffffff82166107d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f206164647265737300000000000000000000000000000000000000000000606482015260840161041b565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090206106be90610c14565b60606007805461030590611b2d565b73ffffffffffffffffffffffffffffffffffffffff821633141561088e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161041b565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61092f3383610c1e565b6109bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161041b565b6109c784848484610ff0565b50505050565b60606109d882610b67565b610a64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606482015260840161041b565b60008281526008602052604081208054610a7d90611b2d565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa990611b2d565b8015610af65780601f10610acb57610100808354040283529160200191610af6565b820191906000526020600020905b815481529060010190602001808311610ad957829003601f168201915b505050505090506000610b0761071d565b9050805160001415610b1a575092915050565b815115610b4c578082604051602001610b34929190611b81565b60405160208183030381529060405292505050919050565b80610b5685611093565b604051602001610b34929190611b81565b60006106be6002836111c5565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610bce826106f5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006106be825490565b6000610c2982610b67565b610cb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e0000000000000000000000000000000000000000606482015260840161041b565b6000610cc0836106f5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610d2f57508373ffffffffffffffffffffffffffffffffffffffff16610d1784610388565b73ffffffffffffffffffffffffffffffffffffffff16145b80610d6c575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610d94826106f5565b73ffffffffffffffffffffffffffffffffffffffff1614610e37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e0000000000000000000000000000000000000000000000606482015260840161041b565b73ffffffffffffffffffffffffffffffffffffffff8216610ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161041b565b610ee4600082610b74565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020610f1390826111dd565b5073ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020610f4390826111e9565b50610f50600282846111f5565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006106bb8383611218565b6000808080610fcc86866112d3565b9097909650945050505050565b6000610fe68484846113a5565b90505b9392505050565b610ffb848484610d74565b61100784848484611428565b6109c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161041b565b6060816110d357505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156110fd57806110e781611bdf565b91506110f69050600a83611c47565b91506110d7565b60008167ffffffffffffffff811115611118576111186119d1565b6040519080825280601f01601f191660200182016040528015611142576020820181803683370190505b5090505b8415610d6c57611157600183611c5b565b9150611164600a86611c72565b61116f906030611c86565b60f81b81838151811061118457611184611c9e565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506111be600a86611c47565b9450611146565b600081815260018301602052604081205415156106bb565b60006106bb8383611618565b60006106bb838361170b565b6000610fe6848473ffffffffffffffffffffffffffffffffffffffff851661175a565b815460009082106112ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f6473000000000000000000000000000000000000000000000000000000000000606482015260840161041b565b8260000182815481106112c0576112c0611c9e565b9060005260206000200154905092915050565b815460009081908310611368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e60448201527f6473000000000000000000000000000000000000000000000000000000000000606482015260840161041b565b600084600001848154811061137f5761137f611c9e565b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816113ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041b91906118bf565b50846113fc600183611c5b565b8154811061140c5761140c611c9e565b9060005260206000209060020201600101549150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff84163b1561160d576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061149f903390899088908890600401611ccd565b6020604051808303816000875af19250505080156114f8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526114f591810190611d16565b60015b6115c2573d808015611526576040519150601f19603f3d011682016040523d82523d6000602084013e61152b565b606091505b5080516115ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161041b565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610d6c565b506001949350505050565b6000818152600183016020526040812054801561170157600061163c600183611c5b565b855490915060009061165090600190611c5b565b9050600086600001828154811061166957611669611c9e565b906000526020600020015490508087600001848154811061168c5761168c611c9e565b6000918252602090912001556116a3836001611c86565b600082815260018901602052604090205586548790806116c5576116c5611d33565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506106be565b60009150506106be565b6000818152600183016020526040812054611752575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106be565b5060006106be565b6000828152600184016020526040812054806117bf575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055610fe9565b82856117cc600184611c5b565b815481106117dc576117dc611c9e565b9060005260206000209060020201600101819055506000915050610fe9565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461182957600080fd5b50565b60006020828403121561183e57600080fd5b8135610fe9816117fb565b60005b8381101561186457818101518382015260200161184c565b838111156109c75750506000910152565b6000815180845261188d816020860160208601611849565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106bb6020830184611875565b6000602082840312156118e457600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461190f57600080fd5b919050565b6000806040838503121561192757600080fd5b611930836118eb565b946020939093013593505050565b60008060006060848603121561195357600080fd5b61195c846118eb565b925061196a602085016118eb565b9150604084013590509250925092565b60006020828403121561198c57600080fd5b6106bb826118eb565b600080604083850312156119a857600080fd5b6119b1836118eb565b9150602083013580151581146119c657600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060008060808587031215611a1657600080fd5b611a1f856118eb565b9350611a2d602086016118eb565b925060408501359150606085013567ffffffffffffffff80821115611a5157600080fd5b818701915087601f830112611a6557600080fd5b813581811115611a7757611a776119d1565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611abd57611abd6119d1565b816040528281528a6020848701011115611ad657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215611b0d57600080fd5b611b16836118eb565b9150611b24602084016118eb565b90509250929050565b600181811c90821680611b4157607f821691505b60208210811415611b7b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008351611b93818460208801611849565b835190830190611ba7818360208801611849565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611c1157611c11611bb0565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611c5657611c56611c18565b500490565b600082821015611c6d57611c6d611bb0565b500390565b600082611c8157611c81611c18565b500690565b60008219821115611c9957611c99611bb0565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611d0c6080830184611875565b9695505050505050565b600060208284031215611d2857600080fd5b8151610fe9816117fb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656ea26469706673582212207229241f25a41b6a857a52c690f26ed58f410a000e7f8f5e7d46e4e7cc6fc9bf64736f6c634300080a0033", + "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 0x287 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x23E JUMPI DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x259 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1DC JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1F2 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x18F JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1C7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x165 PUSH2 0x12E CALLDATASIZE PUSH1 0x4 PUSH2 0x182C JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x182 PUSH2 0x2F6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x171 SWAP2 SWAP1 PUSH2 0x18BF JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x19D CALLDATASIZE PUSH1 0x4 PUSH2 0x18D2 JUMP JUMPDEST PUSH2 0x388 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x171 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x1D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1914 JUMP JUMPDEST PUSH2 0x44D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1E4 PUSH2 0x5DA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x171 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x200 CALLDATASIZE PUSH1 0x4 PUSH2 0x193E JUMP JUMPDEST PUSH2 0x5EB JUMP JUMPDEST PUSH2 0x1E4 PUSH2 0x213 CALLDATASIZE PUSH1 0x4 PUSH2 0x1914 JUMP JUMPDEST PUSH2 0x68C JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x226 CALLDATASIZE PUSH1 0x4 PUSH2 0x193E JUMP JUMPDEST PUSH2 0x6C4 JUMP JUMPDEST PUSH2 0x1E4 PUSH2 0x239 CALLDATASIZE PUSH1 0x4 PUSH2 0x18D2 JUMP JUMPDEST PUSH2 0x6DF JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x24C CALLDATASIZE PUSH1 0x4 PUSH2 0x18D2 JUMP JUMPDEST PUSH2 0x6F5 JUMP JUMPDEST PUSH2 0x182 PUSH2 0x71D JUMP JUMPDEST PUSH2 0x1E4 PUSH2 0x267 CALLDATASIZE PUSH1 0x4 PUSH2 0x197A JUMP JUMPDEST PUSH2 0x72C JUMP JUMPDEST PUSH2 0x182 PUSH2 0x7FF JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x282 CALLDATASIZE PUSH1 0x4 PUSH2 0x1995 JUMP JUMPDEST PUSH2 0x80E JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x295 CALLDATASIZE PUSH1 0x4 PUSH2 0x1A00 JUMP JUMPDEST PUSH2 0x925 JUMP JUMPDEST PUSH2 0x182 PUSH2 0x2A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x18D2 JUMP JUMPDEST PUSH2 0x9CD JUMP JUMPDEST PUSH2 0x165 PUSH2 0x2BB CALLDATASIZE PUSH1 0x4 PUSH2 0x1AFA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0x60 PUSH1 0x6 DUP1 SLOAD PUSH2 0x305 SWAP1 PUSH2 0x1B2D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x331 SWAP1 PUSH2 0x1B2D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x37E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x353 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x37E 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 0x361 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x393 DUP3 PUSH2 0xB67 JUMP JUMPDEST PUSH2 0x424 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76656420717565727920666F72206E6F6E6578 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x697374656E7420746F6B656E0000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST 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 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x458 DUP3 PUSH2 0x6F5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x516 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ DUP1 PUSH2 0x53F JUMPI POP PUSH2 0x53F DUP2 CALLER PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x5CB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F74206F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E6572206E6F7220617070726F76656420666F7220616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST PUSH2 0x5D5 DUP4 DUP4 PUSH2 0xB74 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E6 PUSH1 0x2 PUSH2 0xC14 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x5F5 CALLER DUP3 PUSH2 0xC1E JUMP JUMPDEST PUSH2 0x681 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722063616C6C6572206973206E6F74206F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x776E6572206E6F7220617070726F766564000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST PUSH2 0x5D5 DUP4 DUP4 DUP4 PUSH2 0xD74 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x6BB SWAP1 DUP4 PUSH2 0xFB1 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x5D5 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x925 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x6ED PUSH1 0x2 DUP5 PUSH2 0xFBD JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6BE DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1D63 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 SWAP2 SWAP1 PUSH2 0xFD9 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x9 DUP1 SLOAD PUSH2 0x305 SWAP1 PUSH2 0x1B2D JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x7D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2062616C616E636520717565727920666F7220746865207A65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x726F206164647265737300000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x6BE SWAP1 PUSH2 0xC14 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 DUP1 SLOAD PUSH2 0x305 SWAP1 PUSH2 0x1B2D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND CALLER EQ ISZERO PUSH2 0x88E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x41B JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 DUP2 MSTORE SWAP2 SWAP3 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x92F CALLER DUP4 PUSH2 0xC1E JUMP JUMPDEST PUSH2 0x9BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722063616C6C6572206973206E6F74206F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x776E6572206E6F7220617070726F766564000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST PUSH2 0x9C7 DUP5 DUP5 DUP5 DUP5 PUSH2 0xFF0 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x9D8 DUP3 PUSH2 0xB67 JUMP JUMPDEST PUSH2 0xA64 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E6578697374656E7420746F6B656E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH2 0xA7D SWAP1 PUSH2 0x1B2D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xAA9 SWAP1 PUSH2 0x1B2D JUMP JUMPDEST DUP1 ISZERO PUSH2 0xAF6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xACB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xAF6 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 0xAD9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0xB07 PUSH2 0x71D JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0xB1A JUMPI POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xB4C JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB34 SWAP3 SWAP2 SWAP1 PUSH2 0x1B81 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH2 0xB56 DUP6 PUSH2 0x1093 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB34 SWAP3 SWAP2 SWAP1 PUSH2 0x1B81 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6BE PUSH1 0x2 DUP4 PUSH2 0x11C5 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0xBCE DUP3 PUSH2 0x6F5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6BE DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC29 DUP3 PUSH2 0xB67 JUMP JUMPDEST PUSH2 0xCB5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206F70657261746F7220717565727920666F72206E6F6E6578 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x697374656E7420746F6B656E0000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCC0 DUP4 PUSH2 0x6F5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0xD2F JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xD17 DUP5 PUSH2 0x388 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST DUP1 PUSH2 0xD6C JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xD94 DUP3 PUSH2 0x6F5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xE37 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E73666572206F6620746F6B656E20746861742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x73206E6F74206F776E0000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xED9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST PUSH2 0xEE4 PUSH1 0x0 DUP3 PUSH2 0xB74 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xF13 SWAP1 DUP3 PUSH2 0x11DD JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xF43 SWAP1 DUP3 PUSH2 0x11E9 JUMP JUMPDEST POP PUSH2 0xF50 PUSH1 0x2 DUP3 DUP5 PUSH2 0x11F5 JUMP JUMPDEST POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6BB DUP4 DUP4 PUSH2 0x1218 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0xFCC DUP7 DUP7 PUSH2 0x12D3 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFE6 DUP5 DUP5 DUP5 PUSH2 0x13A5 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xFFB DUP5 DUP5 DUP5 PUSH2 0xD74 JUMP JUMPDEST PUSH2 0x1007 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1428 JUMP JUMPDEST PUSH2 0x9C7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x10D3 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x10FD JUMPI DUP1 PUSH2 0x10E7 DUP2 PUSH2 0x1BDF JUMP JUMPDEST SWAP2 POP PUSH2 0x10F6 SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x1C47 JUMP JUMPDEST SWAP2 POP PUSH2 0x10D7 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1118 JUMPI PUSH2 0x1118 PUSH2 0x19D1 JUMP JUMPDEST 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 0x1142 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0xD6C JUMPI PUSH2 0x1157 PUSH1 0x1 DUP4 PUSH2 0x1C5B JUMP JUMPDEST SWAP2 POP PUSH2 0x1164 PUSH1 0xA DUP7 PUSH2 0x1C72 JUMP JUMPDEST PUSH2 0x116F SWAP1 PUSH1 0x30 PUSH2 0x1C86 JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1184 JUMPI PUSH2 0x1184 PUSH2 0x1C9E JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x11BE PUSH1 0xA DUP7 PUSH2 0x1C47 JUMP JUMPDEST SWAP5 POP PUSH2 0x1146 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD ISZERO ISZERO PUSH2 0x6BB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6BB DUP4 DUP4 PUSH2 0x1618 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6BB DUP4 DUP4 PUSH2 0x170B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFE6 DUP5 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x175A JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x12AB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E756D657261626C655365743A20696E646578206F7574206F6620626F756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6473000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x12C0 JUMPI PUSH2 0x12C0 PUSH2 0x1C9E JUMP 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 0x1368 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E756D657261626C654D61703A20696E646578206F7574206F6620626F756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6473000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x137F JUMPI PUSH2 0x137F PUSH2 0x1C9E JUMP 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 0x13EF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x41B SWAP2 SWAP1 PUSH2 0x18BF JUMP JUMPDEST POP DUP5 PUSH2 0x13FC PUSH1 0x1 DUP4 PUSH2 0x1C5B JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0x140C JUMPI PUSH2 0x140C PUSH2 0x1C9E JUMP 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 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND EXTCODESIZE ISZERO PUSH2 0x160D JUMPI PUSH1 0x40 MLOAD PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x149F SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1CCD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x14F8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x14F5 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1D16 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x15C2 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x1526 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 0x152B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH2 0x15BA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41B JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ SWAP1 POP PUSH2 0xD6C JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1701 JUMPI PUSH1 0x0 PUSH2 0x163C PUSH1 0x1 DUP4 PUSH2 0x1C5B JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1650 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x1C5B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1669 JUMPI PUSH2 0x1669 PUSH2 0x1C9E JUMP 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 0x168C JUMPI PUSH2 0x168C PUSH2 0x1C9E JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH2 0x16A3 DUP4 PUSH1 0x1 PUSH2 0x1C86 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x16C5 JUMPI PUSH2 0x16C5 PUSH2 0x1D33 JUMP 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 0x6BE JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x6BE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x1752 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 0x6BE JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x6BE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x17BF 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 0xFE9 JUMP JUMPDEST DUP3 DUP6 PUSH2 0x17CC PUSH1 0x1 DUP5 PUSH2 0x1C5B JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0x17DC JUMPI PUSH2 0x17DC PUSH2 0x1C9E JUMP 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 0xFE9 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x1829 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x183E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFE9 DUP2 PUSH2 0x17FB JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1864 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x184C JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x9C7 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x188D DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1849 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x6BB PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1875 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x190F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1927 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1930 DUP4 PUSH2 0x18EB 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 0x1953 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x195C DUP5 PUSH2 0x18EB JUMP JUMPDEST SWAP3 POP PUSH2 0x196A PUSH1 0x20 DUP6 ADD PUSH2 0x18EB JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x198C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6BB DUP3 PUSH2 0x18EB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19B1 DUP4 PUSH2 0x18EB JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x19C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1A16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A1F DUP6 PUSH2 0x18EB JUMP JUMPDEST SWAP4 POP PUSH2 0x1A2D PUSH1 0x20 DUP7 ADD PUSH2 0x18EB JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1A51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1A65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1A77 JUMPI PUSH2 0x1A77 PUSH2 0x19D1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1ABD JUMPI PUSH2 0x1ABD PUSH2 0x19D1 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1AD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1B0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B16 DUP4 PUSH2 0x18EB JUMP JUMPDEST SWAP2 POP PUSH2 0x1B24 PUSH1 0x20 DUP5 ADD PUSH2 0x18EB JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1B41 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x1B7B JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x1B93 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x1849 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x1BA7 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x1849 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x1C11 JUMPI PUSH2 0x1C11 PUSH2 0x1BB0 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1C56 JUMPI PUSH2 0x1C56 PUSH2 0x1C18 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x1C6D JUMPI PUSH2 0x1C6D PUSH2 0x1BB0 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1C81 JUMPI PUSH2 0x1C81 PUSH2 0x1C18 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1C99 JUMPI PUSH2 0x1C99 PUSH2 0x1BB0 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1D0C PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x1875 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xFE9 DUP2 PUSH2 0x17FB JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH16 0x776E657220717565727920666F72206E PUSH16 0x6E6578697374656E7420746F6B656EA2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH19 0x29241F25A41B6A857A52C690F26ED58F410A00 0xE PUSH32 0x8F5E7D46E4E7CC6FC9BF64736F6C634300080A00330000000000000000000000 ", + "sourceMap": "535:14758:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;806:148:0;;;;;;:::i;:::-;914:33;;891:4;914:33;;;;;;;;;;;;;;806:148;;;;611:14:13;;604:22;586:41;;574:2;559:18;806:148:0;;;;;;;;2585:98:2;;;:::i;:::-;;;;;;;:::i;5290:217::-;;;;;;:::i;:::-;;:::i;:::-;;;1809:42:13;1797:55;;;1779:74;;1767:2;1752:18;5290:217:2;1633:226:13;4834:395:2;;;;;;:::i;:::-;;:::i;:::-;;4328:208;;;:::i;:::-;;;2470:25:13;;;2458:2;2443:18;4328:208:2;2324:177:13;6154:300:2;;;;;;:::i;:::-;;:::i;4097:160::-;;;;;;:::i;:::-;;:::i;6520:149::-;;;;;;:::i;:::-;;:::i;4608:169::-;;;;;;:::i;:::-;;:::i;2348:175::-;;;;;;:::i;:::-;;:::i;3923:95::-;;;:::i;2073:218::-;;;;;;:::i;:::-;;:::i;2747:102::-;;;:::i;5574:290::-;;;;;;:::i;:::-;;:::i;6735:282::-;;;;;;:::i;:::-;;:::i;2915:776::-;;;;;;:::i;:::-;;:::i;5930:162::-;;;;;;:::i;:::-;6050:25;;;;6027:4;6050:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;5930:162;2585:98;2639:13;2671:5;2664:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2585:98;:::o;5290:217::-;5366:7;5393:16;5401:7;5393;:16::i;:::-;5385:73;;;;;;;5682:2:13;5385:73:2;;;5664:21:13;5721:2;5701:18;;;5694:30;5760:34;5740:18;;;5733:62;5831:14;5811:18;;;5804:42;5863:19;;5385:73:2;;;;;;;;;-1:-1:-1;5476:24:2;;;;:15;:24;;;;;;;;;5290:217::o;4834:395::-;4914:13;4930:23;4945:7;4930:14;:23::i;:::-;4914:39;;4977:5;4971:11;;:2;:11;;;;4963:57;;;;;;;6095:2:13;4963:57:2;;;6077:21:13;6134:2;6114:18;;;6107:30;6173:34;6153:18;;;6146:62;6244:3;6224:18;;;6217:31;6265:19;;4963:57:2;5893:397:13;4963:57:2;669:10:7;5039:21:2;;;;;:69;;-1:-1:-1;5064:44:2;5088:5;669:10:7;5930:162:2;:::i;5064:44::-;5031:159;;;;;;;6497:2:13;5031:159:2;;;6479:21:13;6536:2;6516:18;;;6509:30;6575:34;6555:18;;;6548:62;6646:26;6626:18;;;6619:54;6690:19;;5031:159:2;6295:420:13;5031:159:2;5201:21;5210:2;5214:7;5201:8;:21::i;:::-;4904:325;4834:395;;:::o;4328:208::-;4389:7;4508:21;:12;:19;:21::i;:::-;4501:28;;4328:208;:::o;6154:300::-;6313:41;669:10:7;6346:7:2;6313:18;:41::i;:::-;6305:103;;;;;;;6922:2:13;6305:103:2;;;6904:21:13;6961:2;6941:18;;;6934:30;7000:34;6980:18;;;6973:62;7071:19;7051:18;;;7044:47;7108:19;;6305:103:2;6720:413:13;6305:103:2;6419:28;6429:4;6435:2;6439:7;6419:9;:28::i;4097:160::-;4220:20;;;4194:7;4220:20;;;:13;:20;;;;;:30;;4244:5;4220:23;:30::i;:::-;4213:37;;4097:160;;;;;:::o;6520:149::-;6623:39;6640:4;6646:2;6650:7;6623:39;;;;;;;;;;;;:16;:39::i;4608:169::-;4683:7;;4724:22;:12;4740:5;4724:15;:22::i;:::-;-1:-1:-1;4702:44:2;4608:169;-1:-1:-1;;;4608:169:2:o;2348:175::-;2420:7;2446:70;2463:7;2446:70;;;;;;;;;;;;;;;;;:12;;:70;:16;:70::i;3923:95::-;3971:13;4003:8;3996:15;;;;;:::i;2073:218::-;2145:7;2172:19;;;2164:74;;;;;;;7340:2:13;2164:74:2;;;7322:21:13;7379:2;7359:18;;;7352:30;7418:34;7398:18;;;7391:62;7489:12;7469:18;;;7462:40;7519:19;;2164:74:2;7138:406:13;2164:74:2;2255:20;;;;;;;:13;:20;;;;;:29;;:27;:29::i;2747:102::-;2803:13;2835:7;2828:14;;;;;:::i;5574:290::-;5676:24;;;669:10:7;5676:24:2;;5668:62;;;;;;;7751:2:13;5668:62:2;;;7733:21:13;7790:2;7770:18;;;7763:30;7829:27;7809:18;;;7802:55;7874:18;;5668:62:2;7549:349:13;5668:62:2;669:10:7;5741:32:2;;;;:18;:32;;;;;;;;;:42;;;;;;;;;;;;:53;;;;;;;;;;;;;5809:48;;586:41:13;;;5741:42:2;;669:10:7;5809:48:2;;559:18:13;5809:48:2;;;;;;;5574:290;;:::o;6735:282::-;6866:41;669:10:7;6899:7:2;6866:18;:41::i;:::-;6858:103;;;;;;;6922:2:13;6858:103:2;;;6904:21:13;6961:2;6941:18;;;6934:30;7000:34;6980:18;;;6973:62;7071:19;7051:18;;;7044:47;7108:19;;6858:103:2;6720:413:13;6858:103:2;6971:39;6985:4;6991:2;6995:7;7004:5;6971:13;:39::i;:::-;6735:282;;;;:::o;2915:776::-;2988:13;3021:16;3029:7;3021;:16::i;:::-;3013:76;;;;;;;8105:2:13;3013:76:2;;;8087:21:13;8144:2;8124:18;;;8117:30;8183:34;8163:18;;;8156:62;8254:17;8234:18;;;8227:45;8289:19;;3013:76:2;7903:411:13;3013:76:2;3100:23;3126:19;;;:10;:19;;;;;3100:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3155:18;3176:9;:7;:9::i;:::-;3155:30;;3264:4;3258:18;3280:1;3258:23;3254:70;;;-1:-1:-1;3304:9:2;2915:776;-1:-1:-1;;2915:776:2:o;3254:70::-;3426:23;;:27;3422:106;;3500:4;3506:9;3483:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3469:48;;;;2915:776;;;:::o;3422:106::-;3658:4;3664:18;:7;:16;:18::i;:::-;3641:42;;;;;;;;;:::i;8451:125::-;8516:4;8539:30;:12;8561:7;8539:21;:30::i;14422:180::-;14487:24;;;;:15;:24;;;;;:29;;;;;;;;;;;;;:24;;14540:23;14487:24;14540:14;:23::i;:::-;14531:46;;;;;;;;;;;;14422:180;;:::o;7812:121:10:-;7881:7;7907:19;7915:3;4565:19;;4483:108;8734:351:2;8827:4;8851:16;8859:7;8851;:16::i;:::-;8843:73;;;;;;;8996:2:13;8843:73:2;;;8978:21:13;9035:2;9015:18;;;9008:30;9074:34;9054:18;;;9047:62;9145:14;9125:18;;;9118:42;9177:19;;8843:73:2;8794:408:13;8843:73:2;8926:13;8942:23;8957:7;8942:14;:23::i;:::-;8926:39;;8994:5;8983:16;;:7;:16;;;:51;;;;9027:7;9003:31;;:20;9015:7;9003:11;:20::i;:::-;:31;;;8983:51;:94;;;-1:-1:-1;6050:25:2;;;;6027:4;6050:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;9038:39;8975:103;8734:351;-1:-1:-1;;;;8734:351:2:o;11775:584::-;11899:4;11872:31;;:23;11887:7;11872:14;:23::i;:::-;:31;;;11864:85;;;;;;;9409:2:13;11864:85:2;;;9391:21:13;9448:2;9428:18;;;9421:30;9487:34;9467:18;;;9460:62;9558:11;9538:18;;;9531:39;9587:19;;11864:85:2;9207:405:13;11864:85:2;11985:16;;;11977:65;;;;;;;9819:2:13;11977:65:2;;;9801:21:13;9858:2;9838:18;;;9831:30;9897:34;9877:18;;;9870:62;9968:6;9948:18;;;9941:34;9992:19;;11977:65:2;9617:400:13;11977:65:2;12154:29;12171:1;12175:7;12154:8;:29::i;:::-;12194:19;;;;;;;:13;:19;;;;;:35;;12221:7;12194:26;:35::i;:::-;-1:-1:-1;12239:17:2;;;;;;;:13;:17;;;;;:30;;12261:7;12239:21;:30::i;:::-;-1:-1:-1;12280:29:2;:12;12297:7;12306:2;12280:16;:29::i;:::-;;12344:7;12340:2;12325:27;;12334:4;12325:27;;;;;;;;;;;;11775:584;;;:::o;9242:135:11:-;9313:7;9347:22;9351:3;9363:5;9347:3;:22::i;8261:233:10:-;8341:7;;;;8400:22;8404:3;8416:5;8400:3;:22::i;:::-;8369:53;;;;-1:-1:-1;8261:233:10;-1:-1:-1;;;;;8261:233:10:o;9514:211::-;9621:7;9671:44;9676:3;9696;9702:12;9671:4;:44::i;:::-;9663:53;-1:-1:-1;9514:211:10;;;;;;:::o;7879:269:2:-;7992:28;8002:4;8008:2;8012:7;7992:9;:28::i;:::-;8038:48;8061:4;8067:2;8071:7;8080:5;8038:22;:48::i;:::-;8030:111;;;;;;;10224:2:13;8030:111:2;;;10206:21:13;10263:2;10243:18;;;10236:30;10302:34;10282:18;;;10275:62;10373:20;10353:18;;;10346:48;10411:19;;8030:111:2;10022:414:13;271:703:12;327:13;544:10;540:51;;-1:-1:-1;;570:10:12;;;;;;;;;;;;;;;;;;271:703::o;540:51::-;615:5;600:12;654:75;661:9;;654:75;;686:8;;;;:::i;:::-;;-1:-1:-1;708:10:12;;-1:-1:-1;716:2:12;708:10;;:::i;:::-;;;654:75;;;738:19;770:6;760:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;760:17:12;;738:39;;787:150;794:10;;787:150;;820:11;830:1;820:11;;:::i;:::-;;-1:-1:-1;888:10:12;896:2;888:5;:10;:::i;:::-;875:24;;:2;:24;:::i;:::-;862:39;;845:6;852;845:14;;;;;;;;:::i;:::-;;;;:56;;;;;;;;;;-1:-1:-1;915:11:12;924:2;915:11;;:::i;:::-;;;787:150;;7580:149:10;7664:4;4364:17;;;:12;;;:17;;;;;;:22;;7687:35;4270:123;8357:135:11;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:10:-;7108:4;7131:64;7136:3;7156;7170:23;;;7131:4;:64::i;4444:201:11:-;4538:18;;4511:7;;4538:26;-1:-1:-1;4530:73:11;;;;;;;11915:2:13;4530:73:11;;;11897:21:13;11954:2;11934:18;;;11927:30;11993:34;11973:18;;;11966:62;12064:4;12044:18;;;12037:32;12086:19;;4530:73:11;11713:398:13;4530:73:11;4620:3;:11;;4632:5;4620:18;;;;;;;;:::i;:::-;;;;;;;;;4613:25;;4444:201;;;;:::o;4934:274:10:-;5037:19;;5001:7;;;;5037:27;-1:-1:-1;5029:74:10;;;;;;;12318:2:13;5029:74:10;;;12300:21:13;12357:2;12337:18;;;12330:30;12396:34;12376:18;;;12369:62;12467:4;12447:18;;;12440:32;12489:19;;5029:74:10;12116:398:13;5029:74:10;5114:22;5139:3;:12;;5152:5;5139:19;;;;;;;;:::i;:::-;;;;;;;;;;;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;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6643:3:10;6656:12;6667:1;6656:8;:12;:::i;:::-;6643:26;;;;;;;;:::i;:::-;;;;;;;;;;;:33;;;6636:40;;;6395:315;;;;;:::o;13592:824:2:-;13712:4;13736:13;;;1078:20:9;1116:8;13732:678:2;;13771:72;;;;;:36;;;;;;:72;;669:10:7;;13822:4:2;;13828:7;;13837:5;;13771:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13771:72:2;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;13767:591;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14014:13:2;;14010:334;;14056:60;;;;;10224:2:13;14056:60:2;;;10206:21:13;10263:2;10243:18;;;10236:30;10302:34;10282:18;;;10275:62;10373:20;10353:18;;;10346:48;10411:19;;14056:60:2;10022:414:13;14010:334:2;14296:6;14290:13;14281:6;14277:2;14273:15;14266:38;13767:591;13893:55;;13903:45;13893:55;;-1:-1:-1;13886:62:2;;13732:678;-1:-1:-1;14395:4:2;13592:824;;;;;;:::o;2204:1512:11:-;2270:4;2407:19;;;:12;;;:19;;;;;;2441:15;;2437:1273;;2798:21;2822:14;2835:1;2822:10;:14;:::i;:::-;2870:18;;2798:38;;-1:-1:-1;2850:17:11;;2870:22;;2891:1;;2870:22;:::i;:::-;2850:42;;3132:17;3152:3;:11;;3164:9;3152:22;;;;;;;;:::i;:::-;;;;;;;;;3132:42;;3295:9;3266:3;:11;;3278:13;3266:26;;;;;;;;:::i;:::-;;;;;;;;;;:38;3396:17;:13;3412:1;3396:17;:::i;:::-;3370:23;;;;:12;;;:23;;;;;:43;3519:17;;3370:3;;3519:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3611:3;:12;;:19;3624:5;3611:19;;;;;;;;;;;3604:26;;;3652:4;3645:11;;;;;;;;2437:1273;3694:5;3687:12;;;;;1632:404;1695:4;4364:17:10;;;:12;;;:17;;;;;;1711:319:11;;-1:-1:-1;1753:23:11;;;;;;;;:11;:23;;;;;;;;;;;;;1933:18;;1911:19;;;:12;;;:19;;;;;;:40;;;;1965:11;;1711:319;-1:-1:-1;2014:5:11;2007:12;;1828:678:10;1904:4;2037:17;;;:12;;;:17;;;;;;2069:13;2065:435;;-1:-1:-1;;2153:38:10;;;;;;;;;;;;;;;;;;2135:57;;;;;;;;:12;:57;;;;;;;;;;;;;;;;;;;;;;;;2347:19;;2327:17;;;:12;;;:17;;;;;;;:39;2380:11;;2065:435;2458:5;2422:3;2435:12;2446:1;2435:8;:12;:::i;:::-;2422:26;;;;;;;;:::i;:::-;;;;;;;;;;;:33;;:41;;;;2484:5;2477:12;;;;;14:177:13;99:66;92:5;88:78;81:5;78:89;68:117;;181:1;178;171:12;68:117;14:177;:::o;196:245::-;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;362:9;349:23;381:30;405:5;381:30;:::i;638:258::-;710:1;720:113;734:6;731:1;728:13;720:113;;;810:11;;;804:18;791:11;;;784:39;756:2;749:10;720:113;;;851:6;848:1;845:13;842:48;;;-1:-1:-1;;886:1:13;868:16;;861:27;638:258::o;901:317::-;943:3;981:5;975:12;1008:6;1003:3;996:19;1024:63;1080:6;1073:4;1068:3;1064:14;1057:4;1050:5;1046:16;1024:63;:::i;:::-;1132:2;1120:15;1137:66;1116:88;1107:98;;;;1207:4;1103:109;;901:317;-1:-1:-1;;901:317:13:o;1223:220::-;1372:2;1361:9;1354:21;1335:4;1392:45;1433:2;1422:9;1418:18;1410:6;1392:45;:::i;1448:180::-;1507:6;1560:2;1548:9;1539:7;1535:23;1531:32;1528:52;;;1576:1;1573;1566:12;1528:52;-1:-1:-1;1599:23:13;;1448:180;-1:-1:-1;1448:180:13:o;1864:196::-;1932:20;;1992:42;1981:54;;1971:65;;1961:93;;2050:1;2047;2040:12;1961:93;1864:196;;;:::o;2065:254::-;2133:6;2141;2194:2;2182:9;2173:7;2169:23;2165:32;2162:52;;;2210:1;2207;2200:12;2162:52;2233:29;2252:9;2233:29;:::i;:::-;2223:39;2309:2;2294:18;;;;2281:32;;-1:-1:-1;;;2065:254:13:o;2506:328::-;2583:6;2591;2599;2652:2;2640:9;2631:7;2627:23;2623:32;2620:52;;;2668:1;2665;2658:12;2620:52;2691:29;2710:9;2691:29;:::i;:::-;2681:39;;2739:38;2773:2;2762:9;2758:18;2739:38;:::i;:::-;2729:48;;2824:2;2813:9;2809:18;2796:32;2786:42;;2506:328;;;;;:::o;2839:186::-;2898:6;2951:2;2939:9;2930:7;2926:23;2922:32;2919:52;;;2967:1;2964;2957:12;2919:52;2990:29;3009:9;2990:29;:::i;3030:347::-;3095:6;3103;3156:2;3144:9;3135:7;3131:23;3127:32;3124:52;;;3172:1;3169;3162:12;3124:52;3195:29;3214:9;3195:29;:::i;:::-;3185:39;;3274:2;3263:9;3259:18;3246:32;3321:5;3314:13;3307:21;3300:5;3297:32;3287:60;;3343:1;3340;3333:12;3287:60;3366:5;3356:15;;;3030:347;;;;;:::o;3382:184::-;3434:77;3431:1;3424:88;3531:4;3528:1;3521:15;3555:4;3552:1;3545:15;3571:1197;3666:6;3674;3682;3690;3743:3;3731:9;3722:7;3718:23;3714:33;3711:53;;;3760:1;3757;3750:12;3711:53;3783:29;3802:9;3783:29;:::i;:::-;3773:39;;3831:38;3865:2;3854:9;3850:18;3831:38;:::i;:::-;3821:48;;3916:2;3905:9;3901:18;3888:32;3878:42;;3971:2;3960:9;3956:18;3943:32;3994:18;4035:2;4027:6;4024:14;4021:34;;;4051:1;4048;4041:12;4021:34;4089:6;4078:9;4074:22;4064:32;;4134:7;4127:4;4123:2;4119:13;4115:27;4105:55;;4156:1;4153;4146:12;4105:55;4192:2;4179:16;4214:2;4210;4207:10;4204:36;;;4220:18;;:::i;:::-;4354:2;4348:9;4416:4;4408:13;;4259:66;4404:22;;;4428:2;4400:31;4396:40;4384:53;;;4452:18;;;4472:22;;;4449:46;4446:72;;;4498:18;;:::i;:::-;4538:10;4534:2;4527:22;4573:2;4565:6;4558:18;4613:7;4608:2;4603;4599;4595:11;4591:20;4588:33;4585:53;;;4634:1;4631;4624:12;4585:53;4690:2;4685;4681;4677:11;4672:2;4664:6;4660:15;4647:46;4735:1;4730:2;4725;4717:6;4713:15;4709:24;4702:35;4756:6;4746:16;;;;;;;3571:1197;;;;;;;:::o;4773:260::-;4841:6;4849;4902:2;4890:9;4881:7;4877:23;4873:32;4870:52;;;4918:1;4915;4908:12;4870:52;4941:29;4960:9;4941:29;:::i;:::-;4931:39;;4989:38;5023:2;5012:9;5008:18;4989:38;:::i;:::-;4979:48;;4773:260;;;;;:::o;5038:437::-;5117:1;5113:12;;;;5160;;;5181:61;;5235:4;5227:6;5223:17;5213:27;;5181:61;5288:2;5280:6;5277:14;5257:18;5254:38;5251:218;;;5325:77;5322:1;5315:88;5426:4;5423:1;5416:15;5454:4;5451:1;5444:15;5251:218;;5038:437;;;:::o;8319:470::-;8498:3;8536:6;8530:13;8552:53;8598:6;8593:3;8586:4;8578:6;8574:17;8552:53;:::i;:::-;8668:13;;8627:16;;;;8690:57;8668:13;8627:16;8724:4;8712:17;;8690:57;:::i;:::-;8763:20;;8319:470;-1:-1:-1;;;;8319:470:13:o;10441:184::-;10493:77;10490:1;10483:88;10590:4;10587:1;10580:15;10614:4;10611:1;10604:15;10630:195;10669:3;10700:66;10693:5;10690:77;10687:103;;;10770:18;;:::i;:::-;-1:-1:-1;10817:1:13;10806:13;;10630:195::o;10830:184::-;10882:77;10879:1;10872:88;10979:4;10976:1;10969:15;11003:4;11000:1;10993:15;11019:120;11059:1;11085;11075:35;;11090:18;;:::i;:::-;-1:-1:-1;11124:9:13;;11019:120::o;11144:125::-;11184:4;11212:1;11209;11206:8;11203:34;;;11217:18;;:::i;:::-;-1:-1:-1;11254:9:13;;11144:125::o;11274:112::-;11306:1;11332;11322:35;;11337:18;;:::i;:::-;-1:-1:-1;11371:9:13;;11274:112::o;11391:128::-;11431:3;11462:1;11458:6;11455:1;11452:13;11449:39;;;11468:18;;:::i;:::-;-1:-1:-1;11504:9:13;;11391:128::o;11524:184::-;11576:77;11573:1;11566:88;11673:4;11670:1;11663:15;11697:4;11694:1;11687:15;12519:512;12713:4;12742:42;12823:2;12815:6;12811:15;12800:9;12793:34;12875:2;12867:6;12863:15;12858:2;12847:9;12843:18;12836:43;;12915:6;12910:2;12899:9;12895:18;12888:34;12958:3;12953:2;12942:9;12938:18;12931:31;12979:46;13020:3;13009:9;13005:19;12997:6;12979:46;:::i;:::-;12971:54;12519:512;-1:-1:-1;;;;;;12519:512:13:o;13036:249::-;13105:6;13158:2;13146:9;13137:7;13133:23;13129:32;13126:52;;;13174:1;13171;13164:12;13126:52;13206:9;13200:16;13225:30;13249:5;13225:30;:::i;13290:184::-;13342:77;13339:1;13332:88;13439:4;13436:1;13429:15;13463:4;13460:1;13453:15" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "1523400", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "approve(address,uint256)": "infinite", + "balanceOf(address)": "infinite", + "baseURI()": "infinite", + "getApproved(uint256)": "infinite", + "isApprovedForAll(address,address)": "infinite", + "name()": "infinite", + "ownerOf(uint256)": "infinite", + "safeTransferFrom(address,address,uint256)": "infinite", + "safeTransferFrom(address,address,uint256,bytes)": "infinite", + "setApprovalForAll(address,bool)": "26656", + "supportsInterface(bytes4)": "2535", + "symbol()": "infinite", + "tokenByIndex(uint256)": "9006", + "tokenOfOwnerByIndex(address,uint256)": "infinite", + "tokenURI(uint256)": "infinite", + "totalSupply()": "2393", + "transferFrom(address,address,uint256)": "infinite" + }, + "internal": { + "_approve(address,uint256)": "infinite", + "_beforeTokenTransfer(address,address,uint256)": "infinite", + "_burn(uint256)": "infinite", + "_checkOnERC721Received(address,address,uint256,bytes memory)": "infinite", + "_exists(uint256)": "infinite", + "_isApprovedOrOwner(address,uint256)": "infinite", + "_mint(address,uint256)": "infinite", + "_safeMint(address,uint256)": "infinite", + "_safeMint(address,uint256,bytes memory)": "infinite", + "_safeTransfer(address,address,uint256,bytes memory)": "infinite", + "_setBaseURI(string memory)": "infinite", + "_setTokenURI(uint256,string memory)": "infinite", + "_transfer(address,address,uint256)": "infinite" + } + }, + "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.8.10+commit.fc410830\"},\"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\":{\"contracts/ERC721/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/ERC165/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.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 * @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(type(IERC165).interfaceId);\\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}\",\"keccak256\":\"0xcc44f5ec94fef3e01732251ce3eb699d1d39d150ee50f6984611a4ab9465f849\",\"license\":\"MIT\"},\"contracts/ERC165/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\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}\",\"keccak256\":\"0x381115e1e09d04228d3d2013441c80dac45e4fd8eba5dad89f4192c5bf76d8a7\",\"license\":\"MIT\"},\"contracts/ERC721/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./V8_0_0/Common/Context.sol\\\";\\nimport \\\"./IERC721.sol\\\";\\nimport \\\"./IERC721Metadata.sol\\\";\\nimport \\\"./IERC721Enumerable.sol\\\";\\nimport \\\"./IERC721Receiver.sol\\\";\\nimport \\\"../ERC165/ERC165.sol\\\";\\nimport \\\"./V8_0_0/Utils/Address.sol\\\";\\nimport \\\"./V8_0_0/Utils/EnumerableSet.sol\\\";\\nimport \\\"./V8_0_0/Utils/EnumerableMap.sol\\\";\\nimport \\\"./V8_0_0/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 Address for address;\\n using EnumerableSet for EnumerableSet.UintSet;\\n using EnumerableMap for EnumerableMap.UintToAddressMap;\\n using Strings for uint256;\\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 * @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(type(IERC721).interfaceId);\\n _registerInterface(type(IERC721Metadata).interfaceId);\\n _registerInterface(type(IERC721Enumerable).interfaceId);\\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 try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {\\n return retval == IERC721Receiver(to).onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n // solhint-disable-next-line no-inline-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n function _approve(address to, uint256 tokenId) private {\\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}\",\"keccak256\":\"0x59cdff71e58fcb46fdf1a12f51d33d09c518b8f83e06c321fdfcaa4835c0fa81\",\"license\":\"MIT\"},\"contracts/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\n\\nimport \\\"../ERC165/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}\",\"keccak256\":\"0xae0c7ee84c7502e4d1aea366f73e20a9ff55d47e11f84a4c23e9e54af83ac68e\",\"license\":\"MIT\"},\"contracts/ERC721/IERC721Enumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.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}\",\"keccak256\":\"0xe88bf9819a531991b2857dd66956e89bba5ff0c5d8e80cc0c76cfe12c75108f7\",\"license\":\"MIT\"},\"contracts/ERC721/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.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}\",\"keccak256\":\"0xd1751fe26a8f60c4a53feeacab9897eea86498e8248a044f6420a3a052c0728b\",\"license\":\"MIT\"},\"contracts/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.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}\",\"keccak256\":\"0x0e890de17ea1b4949108e57a9bffe78e819c537f5c0ccaf8dd9f82f01e4161f5\",\"license\":\"MIT\"},\"contracts/ERC721/V8_0_0/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with 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) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n return msg.data;\\n }\\n}\",\"keccak256\":\"0x24e77a6af76a3c4f61e872bab8ab92a2a27b20d3e6111da351e0aa7ab83a7dc9\",\"license\":\"MIT\"},\"contracts/ERC721/V8_0_0/Utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.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}\",\"keccak256\":\"0xd217e5030771ed77e0df8d1028f05abdaba7df6991fc6e03229d8624c1999d9a\",\"license\":\"MIT\"},\"contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.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}\",\"keccak256\":\"0x86f3805a482cbc47f2eba87744492a3c778f2fe3cbbffc2c393a326ff5a60c0e\",\"license\":\"MIT\"},\"contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.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}\",\"keccak256\":\"0x01c748c0e9f9c425f95c8f0e7eb6625675a4fde41b7f5444bcf6b894b375e72c\",\"license\":\"MIT\"},\"contracts/ERC721/V8_0_0/Utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant alphabet = \\\"0123456789abcdef\\\";\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal 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 while (value != 0) {\\n digits -= 1;\\n buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n value /= 10;\\n }\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n if (value == 0) {\\n return \\\"0x00\\\";\\n }\\n uint256 temp = value;\\n uint256 length = 0;\\n while (temp != 0) {\\n length++;\\n temp >>= 8;\\n }\\n return toHexString(value, length);\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = alphabet[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n}\",\"keccak256\":\"0x26b1435f8570c326193a175e30fae635063835bcbbec75559af2798a9c346219\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 10, + "contract": "contracts/ERC721/ERC721.sol:ERC721", + "label": "_supportedInterfaces", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_bytes4,t_bool)" + }, + { + "astId": 110, + "contract": "contracts/ERC721/ERC721.sol:ERC721", + "label": "_holderTokens", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_struct(UintSet)2806_storage)" + }, + { + "astId": 113, + "contract": "contracts/ERC721/ERC721.sol:ERC721", + "label": "_tokenOwners", + "offset": 0, + "slot": "2", + "type": "t_struct(UintToAddressMap)2157_storage" + }, + { + "astId": 117, + "contract": "contracts/ERC721/ERC721.sol:ERC721", + "label": "_tokenApprovals", + "offset": 0, + "slot": "4", + "type": "t_mapping(t_uint256,t_address)" + }, + { + "astId": 123, + "contract": "contracts/ERC721/ERC721.sol:ERC721", + "label": "_operatorApprovals", + "offset": 0, + "slot": "5", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))" + }, + { + "astId": 125, + "contract": "contracts/ERC721/ERC721.sol:ERC721", + "label": "_name", + "offset": 0, + "slot": "6", + "type": "t_string_storage" + }, + { + "astId": 127, + "contract": "contracts/ERC721/ERC721.sol:ERC721", + "label": "_symbol", + "offset": 0, + "slot": "7", + "type": "t_string_storage" + }, + { + "astId": 131, + "contract": "contracts/ERC721/ERC721.sol:ERC721", + "label": "_tokenURIs", + "offset": 0, + "slot": "8", + "type": "t_mapping(t_uint256,t_string_storage)" + }, + { + "astId": 133, + "contract": "contracts/ERC721/ERC721.sol:ERC721", + "label": "_baseURI", + "offset": 0, + "slot": "9", + "type": "t_string_storage" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_bytes32)dyn_storage": { + "base": "t_bytes32", + "encoding": "dynamic_array", + "label": "bytes32[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(MapEntry)1819_storage)dyn_storage": { + "base": "t_struct(MapEntry)1819_storage", + "encoding": "dynamic_array", + "label": "struct EnumerableMap.MapEntry[]", + "numberOfBytes": "32" + }, + "t_bool": { + "encoding": "inplace", + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "encoding": "inplace", + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_bytes4": { + "encoding": "inplace", + "label": "bytes4", + "numberOfBytes": "4" + }, + "t_mapping(t_address,t_bool)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => bool)", + "numberOfBytes": "32", + "value": "t_bool" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32", + "value": "t_mapping(t_address,t_bool)" + }, + "t_mapping(t_address,t_struct(UintSet)2806_storage)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => struct EnumerableSet.UintSet)", + "numberOfBytes": "32", + "value": "t_struct(UintSet)2806_storage" + }, + "t_mapping(t_bytes32,t_uint256)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_mapping(t_bytes4,t_bool)": { + "encoding": "mapping", + "key": "t_bytes4", + "label": "mapping(bytes4 => bool)", + "numberOfBytes": "32", + "value": "t_bool" + }, + "t_mapping(t_uint256,t_address)": { + "encoding": "mapping", + "key": "t_uint256", + "label": "mapping(uint256 => address)", + "numberOfBytes": "32", + "value": "t_address" + }, + "t_mapping(t_uint256,t_string_storage)": { + "encoding": "mapping", + "key": "t_uint256", + "label": "mapping(uint256 => string)", + "numberOfBytes": "32", + "value": "t_string_storage" + }, + "t_string_storage": { + "encoding": "bytes", + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Map)1828_storage": { + "encoding": "inplace", + "label": "struct EnumerableMap.Map", + "members": [ + { + "astId": 1823, + "contract": "contracts/ERC721/ERC721.sol:ERC721", + "label": "_entries", + "offset": 0, + "slot": "0", + "type": "t_array(t_struct(MapEntry)1819_storage)dyn_storage" + }, + { + "astId": 1827, + "contract": "contracts/ERC721/ERC721.sol:ERC721", + "label": "_indexes", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ], + "numberOfBytes": "64" + }, + "t_struct(MapEntry)1819_storage": { + "encoding": "inplace", + "label": "struct EnumerableMap.MapEntry", + "members": [ + { + "astId": 1816, + "contract": "contracts/ERC721/ERC721.sol:ERC721", + "label": "_key", + "offset": 0, + "slot": "0", + "type": "t_bytes32" + }, + { + "astId": 1818, + "contract": "contracts/ERC721/ERC721.sol:ERC721", + "label": "_value", + "offset": 0, + "slot": "1", + "type": "t_bytes32" + } + ], + "numberOfBytes": "64" + }, + "t_struct(Set)2402_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.Set", + "members": [ + { + "astId": 2397, + "contract": "contracts/ERC721/ERC721.sol:ERC721", + "label": "_values", + "offset": 0, + "slot": "0", + "type": "t_array(t_bytes32)dyn_storage" + }, + { + "astId": 2401, + "contract": "contracts/ERC721/ERC721.sol:ERC721", + "label": "_indexes", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ], + "numberOfBytes": "64" + }, + "t_struct(UintSet)2806_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.UintSet", + "members": [ + { + "astId": 2805, + "contract": "contracts/ERC721/ERC721.sol:ERC721", + "label": "_inner", + "offset": 0, + "slot": "0", + "type": "t_struct(Set)2402_storage" + } + ], + "numberOfBytes": "64" + }, + "t_struct(UintToAddressMap)2157_storage": { + "encoding": "inplace", + "label": "struct EnumerableMap.UintToAddressMap", + "members": [ + { + "astId": 2156, + "contract": "contracts/ERC721/ERC721.sol:ERC721", + "label": "_inner", + "offset": 0, + "slot": "0", + "type": "t_struct(Map)1828_storage" + } + ], + "numberOfBytes": "64" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/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" + } + ], + "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 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "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.8.10+commit.fc410830\"},\"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\":{\"contracts/ERC721/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/ERC165/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\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}\",\"keccak256\":\"0x381115e1e09d04228d3d2013441c80dac45e4fd8eba5dad89f4192c5bf76d8a7\",\"license\":\"MIT\"},\"contracts/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\n\\nimport \\\"../ERC165/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}\",\"keccak256\":\"0xae0c7ee84c7502e4d1aea366f73e20a9ff55d47e11f84a4c23e9e54af83ac68e\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/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" + } + ], + "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 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "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.8.10+commit.fc410830\"},\"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\":{\"contracts/ERC721/IERC721Enumerable.sol\":\"IERC721Enumerable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/ERC165/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\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}\",\"keccak256\":\"0x381115e1e09d04228d3d2013441c80dac45e4fd8eba5dad89f4192c5bf76d8a7\",\"license\":\"MIT\"},\"contracts/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\n\\nimport \\\"../ERC165/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}\",\"keccak256\":\"0xae0c7ee84c7502e4d1aea366f73e20a9ff55d47e11f84a4c23e9e54af83ac68e\",\"license\":\"MIT\"},\"contracts/ERC721/IERC721Enumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.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}\",\"keccak256\":\"0xe88bf9819a531991b2857dd66956e89bba5ff0c5d8e80cc0c76cfe12c75108f7\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/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" + } + ], + "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 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "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.8.10+commit.fc410830\"},\"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\":{\"contracts/ERC721/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/ERC165/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\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}\",\"keccak256\":\"0x381115e1e09d04228d3d2013441c80dac45e4fd8eba5dad89f4192c5bf76d8a7\",\"license\":\"MIT\"},\"contracts/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\n\\nimport \\\"../ERC165/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}\",\"keccak256\":\"0xae0c7ee84c7502e4d1aea366f73e20a9ff55d47e11f84a4c23e9e54af83ac68e\",\"license\":\"MIT\"},\"contracts/ERC721/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.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}\",\"keccak256\":\"0xd1751fe26a8f60c4a53feeacab9897eea86498e8248a044f6420a3a052c0728b\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/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" + } + ], + "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 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "onERC721Received(address,address,uint256,bytes)": "150b7a02" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"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\":{\"contracts/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.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}\",\"keccak256\":\"0x0e890de17ea1b4949108e57a9bffe78e819c537f5c0ccaf8dd9f82f01e4161f5\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/ERC721/V8_0_0/Common/Context.sol": { + "Context": { + "abi": [], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ERC721/V8_0_0/Common/Context.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/ERC721/V8_0_0/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with 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) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n return msg.data;\\n }\\n}\",\"keccak256\":\"0x24e77a6af76a3c4f61e872bab8ab92a2a27b20d3e6111da351e0aa7ab83a7dc9\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/ERC721/V8_0_0/Governance/AccessControl.sol": { + "AccessControl": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "Contract module that allows children to implement role-based access control mechanisms. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ``` bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ``` function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it.", + "events": { + "RoleAdminChanged(bytes32,bytes32,bytes32)": { + "details": "Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._" + }, + "RoleGranted(bytes32,address,address)": { + "details": "Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {_setupRole}." + }, + "RoleRevoked(bytes32,address,address)": { + "details": "Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)" + } + }, + "kind": "dev", + "methods": { + "getRoleAdmin(bytes32)": { + "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." + }, + "getRoleMember(bytes32,uint256)": { + "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information." + }, + "getRoleMemberCount(bytes32)": { + "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role." + }, + "grantRole(bytes32,address)": { + "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role." + }, + "hasRole(bytes32,address)": { + "details": "Returns `true` if `account` has been granted `role`." + }, + "renounceRole(bytes32,address)": { + "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`." + }, + "revokeRole(bytes32,address)": { + "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role." + } + }, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ``` bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ``` function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it.\",\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ERC721/V8_0_0/Governance/AccessControl.sol\":\"AccessControl\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/ERC721/V8_0_0/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with 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) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n return msg.data;\\n }\\n}\",\"keccak256\":\"0x24e77a6af76a3c4f61e872bab8ab92a2a27b20d3e6111da351e0aa7ab83a7dc9\",\"license\":\"MIT\"},\"contracts/ERC721/V8_0_0/Governance/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Utils/EnumerableSet.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\nimport \\\"../Common/Context.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it.\\n */\\nabstract contract AccessControl is Context {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n using Address for address;\\n\\n struct RoleData {\\n EnumerableSet.AddressSet members;\\n bytes32 adminRole;\\n }\\n\\n mapping (bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; //bytes32(uint256(0x4B437D01b575618140442A4975db38850e3f8f5f) << 96);\\n\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view returns (bool) {\\n return _roles[role].members.contains(account);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view returns (uint256) {\\n return _roles[role].members.length();\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view returns (address) {\\n return _roles[role].members.at(index);\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to grant\\\");\\n\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to revoke\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) public virtual {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);\\n _roles[role].adminRole = adminRole;\\n }\\n\\n function _grantRole(bytes32 role, address account) private {\\n if (_roles[role].members.add(account)) {\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n function _revokeRole(bytes32 role, address account) private {\\n if (_roles[role].members.remove(account)) {\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\",\"keccak256\":\"0x251b6b7249e0abe77066c13aa9e9639f23fc7c29c7df740498692f6b59291187\",\"license\":\"MIT\"},\"contracts/ERC721/V8_0_0/Utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.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}\",\"keccak256\":\"0xd217e5030771ed77e0df8d1028f05abdaba7df6991fc6e03229d8624c1999d9a\",\"license\":\"MIT\"},\"contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.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}\",\"keccak256\":\"0x01c748c0e9f9c425f95c8f0e7eb6625675a4fde41b7f5444bcf6b894b375e72c\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 1255, + "contract": "contracts/ERC721/V8_0_0/Governance/AccessControl.sol:AccessControl", + "label": "_roles", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_bytes32,t_struct(RoleData)1250_storage)" + } + ], + "types": { + "t_array(t_bytes32)dyn_storage": { + "base": "t_bytes32", + "encoding": "dynamic_array", + "label": "bytes32[]", + "numberOfBytes": "32" + }, + "t_bytes32": { + "encoding": "inplace", + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)1250_storage)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => struct AccessControl.RoleData)", + "numberOfBytes": "32", + "value": "t_struct(RoleData)1250_storage" + }, + "t_mapping(t_bytes32,t_uint256)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_struct(AddressSet)2679_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.AddressSet", + "members": [ + { + "astId": 2678, + "contract": "contracts/ERC721/V8_0_0/Governance/AccessControl.sol:AccessControl", + "label": "_inner", + "offset": 0, + "slot": "0", + "type": "t_struct(Set)2402_storage" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleData)1250_storage": { + "encoding": "inplace", + "label": "struct AccessControl.RoleData", + "members": [ + { + "astId": 1247, + "contract": "contracts/ERC721/V8_0_0/Governance/AccessControl.sol:AccessControl", + "label": "members", + "offset": 0, + "slot": "0", + "type": "t_struct(AddressSet)2679_storage" + }, + { + "astId": 1249, + "contract": "contracts/ERC721/V8_0_0/Governance/AccessControl.sol:AccessControl", + "label": "adminRole", + "offset": 0, + "slot": "2", + "type": "t_bytes32" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Set)2402_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.Set", + "members": [ + { + "astId": 2397, + "contract": "contracts/ERC721/V8_0_0/Governance/AccessControl.sol:AccessControl", + "label": "_values", + "offset": 0, + "slot": "0", + "type": "t_array(t_bytes32)dyn_storage" + }, + { + "astId": 2401, + "contract": "contracts/ERC721/V8_0_0/Governance/AccessControl.sol:AccessControl", + "label": "_indexes", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ], + "numberOfBytes": "64" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/ERC721/V8_0_0/Utils/Address.sol": { + "Address": { + "abi": [], + "devdoc": { + "details": "Collection of functions related to the address type", + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220123c585b2efb84544482ecf1b2d8ef56fa1e82dee7c9a85da7b26acb64d6f67b64736f6c634300080a0033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT EXTCODECOPY PC JUMPDEST 0x2E 0xFB DUP5 SLOAD DIFFICULTY DUP3 0xEC CALL 0xB2 0xD8 0xEF JUMP STATICCALL 0x1E DUP3 0xDE 0xE7 0xC9 0xA8 0x5D 0xA7 0xB2 PUSH11 0xCB64D6F67B64736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "126:7684:9:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;126:7684:9;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220123c585b2efb84544482ecf1b2d8ef56fa1e82dee7c9a85da7b26acb64d6f67b64736f6c634300080a0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT EXTCODECOPY PC JUMPDEST 0x2E 0xFB DUP5 SLOAD DIFFICULTY DUP3 0xEC CALL 0xB2 0xD8 0xEF JUMP STATICCALL 0x1E DUP3 0xDE 0xE7 0xC9 0xA8 0x5D 0xA7 0xB2 PUSH11 0xCB64D6F67B64736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "126:7684:9:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17200", + "executionCost": "103", + "totalCost": "17303" + }, + "internal": { + "_verifyCallResult(bool,bytes memory,string memory)": "infinite", + "functionCall(address,bytes memory)": "infinite", + "functionCall(address,bytes memory,string memory)": "infinite", + "functionCallWithValue(address,bytes memory,uint256)": "infinite", + "functionCallWithValue(address,bytes memory,uint256,string memory)": "infinite", + "functionDelegateCall(address,bytes memory)": "infinite", + "functionDelegateCall(address,bytes memory,string memory)": "infinite", + "functionStaticCall(address,bytes memory)": "infinite", + "functionStaticCall(address,bytes memory,string memory)": "infinite", + "isContract(address)": "infinite", + "sendValue(address payable,uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"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\":{\"contracts/ERC721/V8_0_0/Utils/Address.sol\":\"Address\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/ERC721/V8_0_0/Utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.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}\",\"keccak256\":\"0xd217e5030771ed77e0df8d1028f05abdaba7df6991fc6e03229d8624c1999d9a\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol": { + "EnumerableMap": { + "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 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dbaf9f7accd3e983dbcd0aee0d9e955beb4eb121a0addd93ca0faa15832b5e8b64736f6c634300080a0033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDB 0xAF SWAP16 PUSH27 0xCCD3E983DBCD0AEE0D9E955BEB4EB121A0ADDD93CA0FAA15832B5E DUP12 PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "764:8963:10:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;764:8963:10;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dbaf9f7accd3e983dbcd0aee0d9e955beb4eb121a0addd93ca0faa15832b5e8b64736f6c634300080a0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDB 0xAF SWAP16 PUSH27 0xCCD3E983DBCD0AEE0D9E955BEB4EB121A0ADDD93CA0FAA15832B5E DUP12 PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "764:8963:10:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17200", + "executionCost": "103", + "totalCost": "17303" + }, + "internal": { + "_at(struct EnumerableMap.Map storage pointer,uint256)": "infinite", + "_contains(struct EnumerableMap.Map storage pointer,bytes32)": "infinite", + "_get(struct EnumerableMap.Map storage pointer,bytes32)": "infinite", + "_get(struct EnumerableMap.Map storage pointer,bytes32,string memory)": "infinite", + "_length(struct EnumerableMap.Map storage pointer)": "infinite", + "_remove(struct EnumerableMap.Map storage pointer,bytes32)": "infinite", + "_set(struct EnumerableMap.Map storage pointer,bytes32,bytes32)": "infinite", + "_tryGet(struct EnumerableMap.Map storage pointer,bytes32)": "infinite", + "at(struct EnumerableMap.UintToAddressMap storage pointer,uint256)": "infinite", + "contains(struct EnumerableMap.UintToAddressMap storage pointer,uint256)": "infinite", + "get(struct EnumerableMap.UintToAddressMap storage pointer,uint256)": "infinite", + "get(struct EnumerableMap.UintToAddressMap storage pointer,uint256,string memory)": "infinite", + "length(struct EnumerableMap.UintToAddressMap storage pointer)": "infinite", + "remove(struct EnumerableMap.UintToAddressMap storage pointer,uint256)": "infinite", + "set(struct EnumerableMap.UintToAddressMap storage pointer,uint256,address)": "infinite", + "tryGet(struct EnumerableMap.UintToAddressMap storage pointer,uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"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\":{\"contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol\":\"EnumerableMap\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.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}\",\"keccak256\":\"0x86f3805a482cbc47f2eba87744492a3c778f2fe3cbbffc2c393a326ff5a60c0e\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol": { + "EnumerableSet": { + "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 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220279700431b0f46fd21681afe79dcca451f4ff41d64d4ba884aeed23d954e882f64736f6c634300080a0033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x27 SWAP8 STOP NUMBER SHL 0xF CHAINID REVERT 0x21 PUSH9 0x1AFE79DCCA451F4FF4 SAR PUSH5 0xD4BA884AEE 0xD2 RETURNDATASIZE SWAP6 0x4E DUP9 0x2F PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "745:8634:11:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;745:8634:11;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220279700431b0f46fd21681afe79dcca451f4ff41d64d4ba884aeed23d954e882f64736f6c634300080a0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x27 SWAP8 STOP NUMBER SHL 0xF CHAINID REVERT 0x21 PUSH9 0x1AFE79DCCA451F4FF4 SAR PUSH5 0xD4BA884AEE 0xD2 RETURNDATASIZE SWAP6 0x4E DUP9 0x2F PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "745:8634:11:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17200", + "executionCost": "103", + "totalCost": "17303" + }, + "internal": { + "_add(struct EnumerableSet.Set storage pointer,bytes32)": "infinite", + "_at(struct EnumerableSet.Set storage pointer,uint256)": "infinite", + "_contains(struct EnumerableSet.Set storage pointer,bytes32)": "infinite", + "_length(struct EnumerableSet.Set storage pointer)": "infinite", + "_remove(struct EnumerableSet.Set storage pointer,bytes32)": "infinite", + "add(struct EnumerableSet.AddressSet storage pointer,address)": "infinite", + "add(struct EnumerableSet.Bytes32Set storage pointer,bytes32)": "infinite", + "add(struct EnumerableSet.UintSet storage pointer,uint256)": "infinite", + "at(struct EnumerableSet.AddressSet storage pointer,uint256)": "infinite", + "at(struct EnumerableSet.Bytes32Set storage pointer,uint256)": "infinite", + "at(struct EnumerableSet.UintSet storage pointer,uint256)": "infinite", + "contains(struct EnumerableSet.AddressSet storage pointer,address)": "infinite", + "contains(struct EnumerableSet.Bytes32Set storage pointer,bytes32)": "infinite", + "contains(struct EnumerableSet.UintSet storage pointer,uint256)": "infinite", + "length(struct EnumerableSet.AddressSet storage pointer)": "infinite", + "length(struct EnumerableSet.Bytes32Set storage pointer)": "infinite", + "length(struct EnumerableSet.UintSet storage pointer)": "infinite", + "remove(struct EnumerableSet.AddressSet storage pointer,address)": "infinite", + "remove(struct EnumerableSet.Bytes32Set storage pointer,bytes32)": "infinite", + "remove(struct EnumerableSet.UintSet storage pointer,uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"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\":{\"contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol\":\"EnumerableSet\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.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}\",\"keccak256\":\"0x01c748c0e9f9c425f95c8f0e7eb6625675a4fde41b7f5444bcf6b894b375e72c\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/ERC721/V8_0_0/Utils/Strings.sol": { + "Strings": { + "abi": [], + "devdoc": { + "details": "String operations.", + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203e6f15c1cd7301ba658350fcc06cdd5e9b2026885e737fbb79b381e516ab377064736f6c634300080a0033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATACOPY PUSH16 0x15C1CD7301BA658350FCC06CDD5E9B20 0x26 DUP9 0x5E PUSH20 0x7FBB79B381E516AB377064736F6C634300080A00 CALLER ", + "sourceMap": "93:1878:12:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;93:1878:12;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203e6f15c1cd7301ba658350fcc06cdd5e9b2026885e737fbb79b381e516ab377064736f6c634300080a0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATACOPY PUSH16 0x15C1CD7301BA658350FCC06CDD5E9B20 0x26 DUP9 0x5E PUSH20 0x7FBB79B381E516AB377064736F6C634300080A00 CALLER ", + "sourceMap": "93:1878:12:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17200", + "executionCost": "103", + "totalCost": "17303" + }, + "internal": { + "toHexString(uint256)": "infinite", + "toHexString(uint256,uint256)": "infinite", + "toString(uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ERC721/V8_0_0/Utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/ERC721/V8_0_0/Utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant alphabet = \\\"0123456789abcdef\\\";\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal 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 while (value != 0) {\\n digits -= 1;\\n buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n value /= 10;\\n }\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n if (value == 0) {\\n return \\\"0x00\\\";\\n }\\n uint256 temp = value;\\n uint256 length = 0;\\n while (temp != 0) {\\n length++;\\n temp >>= 8;\\n }\\n return toHexString(value, length);\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = alphabet[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n}\",\"keccak256\":\"0x26b1435f8570c326193a175e30fae635063835bcbbec75559af2798a9c346219\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "sources": { + "contracts/ERC165/ERC165.sol": { + "ast": { + "absolutePath": "contracts/ERC165/ERC165.sol", + "exportedSymbols": { + "ERC165": [ + 56 + ], + "IERC165": [ + 68 + ] + }, + "id": 57, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:0" + }, + { + "absolutePath": "contracts/ERC165/IERC165.sol", + "file": "./IERC165.sol", + "id": 2, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 57, + "sourceUnit": 69, + "src": "58:23:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 4, + "name": "IERC165", + "nodeType": "IdentifierPath", + "referencedDeclaration": 68, + "src": "283:7:0" + }, + "id": 5, + "nodeType": "InheritanceSpecifier", + "src": "283:7:0" + } + ], + "canonicalName": "ERC165", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 3, + "nodeType": "StructuredDocumentation", + "src": "83:171:0", + "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": 56, + "linearizedBaseContracts": [ + 56, + 68 + ], + "name": "ERC165", + "nameLocation": "273:6:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "documentation": { + "id": 6, + "nodeType": "StructuredDocumentation", + "src": "297:82:0", + "text": " @dev Mapping of interface ids to whether or not it's supported." + }, + "id": 10, + "mutability": "mutable", + "name": "_supportedInterfaces", + "nameLocation": "416:20:0", + "nodeType": "VariableDeclaration", + "scope": 56, + "src": "384:52:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + }, + "typeName": { + "id": 9, + "keyType": { + "id": 7, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "392:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "Mapping", + "src": "384:23:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + }, + "valueType": { + "id": 8, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "402:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "visibility": "private" + }, + { + "body": { + "id": 20, + "nodeType": "Block", + "src": "458:198:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "arguments": [ + { + "id": 15, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "628:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC165_$68_$", + "typeString": "type(contract IERC165)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_IERC165_$68_$", + "typeString": "type(contract IERC165)" + } + ], + "id": 14, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "623:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 16, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "623:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$68", + "typeString": "type(contract IERC165)" + } + }, + "id": 17, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "interfaceId", + "nodeType": "MemberAccess", + "src": "623:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 13, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 55, + "src": "604:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 18, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "604:45:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 19, + "nodeType": "ExpressionStatement", + "src": "604:45:0" + } + ] + }, + "id": 21, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11, + "nodeType": "ParameterList", + "parameters": [], + "src": "455:2:0" + }, + "returnParameters": { + "id": 12, + "nodeType": "ParameterList", + "parameters": [], + "src": "458:0:0" + }, + "scope": 56, + "src": "443:213:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 67 + ], + "body": { + "id": 34, + "nodeType": "Block", + "src": "897:57:0", + "statements": [ + { + "expression": { + "baseExpression": { + "id": 30, + "name": "_supportedInterfaces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "914:20:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + } + }, + "id": 32, + "indexExpression": { + "id": 31, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 24, + "src": "935:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "914:33:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 29, + "id": 33, + "nodeType": "Return", + "src": "907:40:0" + } + ] + }, + "documentation": { + "id": 22, + "nodeType": "StructuredDocumentation", + "src": "662:139:0", + "text": " @dev See {IERC165-supportsInterface}.\n Time complexity O(1), guaranteed to always use less than 30 000 gas." + }, + "functionSelector": "01ffc9a7", + "id": 35, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "815:17:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 26, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "873:8:0" + }, + "parameters": { + "id": 25, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 24, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "840:11:0", + "nodeType": "VariableDeclaration", + "scope": 35, + "src": "833:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 23, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "833:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "832:20:0" + }, + "returnParameters": { + "id": 29, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 28, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 35, + "src": "891:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 27, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "891:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "890:6:0" + }, + "scope": 56, + "src": "806:148:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 54, + "nodeType": "Block", + "src": "1413:133:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 44, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 42, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38, + "src": "1431:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30786666666666666666", + "id": 43, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1446:10:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967295_by_1", + "typeString": "int_const 4294967295" + }, + "value": "0xffffffff" + }, + "src": "1431:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4552433136353a20696e76616c696420696e74657266616365206964", + "id": 45, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1458:30:0", + "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": 41, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1423:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 46, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1423:66:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 47, + "nodeType": "ExpressionStatement", + "src": "1423:66:0" + }, + { + "expression": { + "id": 52, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 48, + "name": "_supportedInterfaces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "1499:20:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + } + }, + "id": 50, + "indexExpression": { + "id": 49, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38, + "src": "1520:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1499:33:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 51, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1535:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1499:40:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 53, + "nodeType": "ExpressionStatement", + "src": "1499:40:0" + } + ] + }, + "documentation": { + "id": 36, + "nodeType": "StructuredDocumentation", + "src": "960:383:0", + "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": 55, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_registerInterface", + "nameLocation": "1357:18:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 39, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 38, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "1383:11:0", + "nodeType": "VariableDeclaration", + "scope": 55, + "src": "1376:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 37, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1376:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "1375:20:0" + }, + "returnParameters": { + "id": 40, + "nodeType": "ParameterList", + "parameters": [], + "src": "1413:0:0" + }, + "scope": 56, + "src": "1348:198:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 57, + "src": "255:1293:0", + "usedErrors": [] + } + ], + "src": "33:1515:0" + }, + "id": 0 + }, + "contracts/ERC165/IERC165.sol": { + "ast": { + "absolutePath": "contracts/ERC165/IERC165.sol", + "exportedSymbols": { + "IERC165": [ + 68 + ] + }, + "id": 69, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 58, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "33:25:1" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC165", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 59, + "nodeType": "StructuredDocumentation", + "src": "60:279:1", + "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": 68, + "linearizedBaseContracts": [ + 68 + ], + "name": "IERC165", + "nameLocation": "350:7:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 60, + "nodeType": "StructuredDocumentation", + "src": "364:340:1", + "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": 67, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "718:17:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 63, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 62, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "743:11:1", + "nodeType": "VariableDeclaration", + "scope": 67, + "src": "736:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 61, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "736:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "735:20:1" + }, + "returnParameters": { + "id": 66, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 67, + "src": "779:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 64, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "779:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "778:6:1" + }, + "scope": 68, + "src": "709:76:1", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 69, + "src": "340:447:1", + "usedErrors": [] + } + ], + "src": "33:754:1" + }, + "id": 1 + }, + "contracts/ERC721/ERC721.sol": { + "ast": { + "absolutePath": "contracts/ERC721/ERC721.sol", + "exportedSymbols": { + "Address": [ + 1811 + ], + "Context": [ + 1229 + ], + "ERC165": [ + 56 + ], + "ERC721": [ + 1014 + ], + "EnumerableMap": [ + 2391 + ], + "EnumerableSet": [ + 2906 + ], + "IERC165": [ + 68 + ], + "IERC721": [ + 1130 + ], + "IERC721Enumerable": [ + 1161 + ], + "IERC721Metadata": [ + 1188 + ], + "IERC721Receiver": [ + 1206 + ], + "Strings": [ + 3109 + ] + }, + "id": 1015, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 70, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:2" + }, + { + "absolutePath": "contracts/ERC721/V8_0_0/Common/Context.sol", + "file": "./V8_0_0/Common/Context.sol", + "id": 71, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1015, + "sourceUnit": 1230, + "src": "58:37:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/ERC721/IERC721.sol", + "file": "./IERC721.sol", + "id": 72, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1015, + "sourceUnit": 1131, + "src": "96:23:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/ERC721/IERC721Metadata.sol", + "file": "./IERC721Metadata.sol", + "id": 73, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1015, + "sourceUnit": 1189, + "src": "120:31:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/ERC721/IERC721Enumerable.sol", + "file": "./IERC721Enumerable.sol", + "id": 74, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1015, + "sourceUnit": 1162, + "src": "152:33:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/ERC721/IERC721Receiver.sol", + "file": "./IERC721Receiver.sol", + "id": 75, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1015, + "sourceUnit": 1207, + "src": "186:31:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/ERC165/ERC165.sol", + "file": "../ERC165/ERC165.sol", + "id": 76, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1015, + "sourceUnit": 57, + "src": "218:30:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/ERC721/V8_0_0/Utils/Address.sol", + "file": "./V8_0_0/Utils/Address.sol", + "id": 77, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1015, + "sourceUnit": 1812, + "src": "249:36:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol", + "file": "./V8_0_0/Utils/EnumerableSet.sol", + "id": 78, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1015, + "sourceUnit": 2907, + "src": "286:42:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol", + "file": "./V8_0_0/Utils/EnumerableMap.sol", + "id": 79, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1015, + "sourceUnit": 2392, + "src": "329:42:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/ERC721/V8_0_0/Utils/Strings.sol", + "file": "./V8_0_0/Utils/Strings.sol", + "id": 80, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1015, + "sourceUnit": 3110, + "src": "372:36:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 82, + "name": "Context", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1229, + "src": "554:7:2" + }, + "id": 83, + "nodeType": "InheritanceSpecifier", + "src": "554:7:2" + }, + { + "baseName": { + "id": 84, + "name": "ERC165", + "nodeType": "IdentifierPath", + "referencedDeclaration": 56, + "src": "563:6:2" + }, + "id": 85, + "nodeType": "InheritanceSpecifier", + "src": "563:6:2" + }, + { + "baseName": { + "id": 86, + "name": "IERC721", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1130, + "src": "571:7:2" + }, + "id": 87, + "nodeType": "InheritanceSpecifier", + "src": "571:7:2" + }, + { + "baseName": { + "id": 88, + "name": "IERC721Metadata", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1188, + "src": "580:15:2" + }, + "id": 89, + "nodeType": "InheritanceSpecifier", + "src": "580:15:2" + }, + { + "baseName": { + "id": 90, + "name": "IERC721Enumerable", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1161, + "src": "597:17:2" + }, + "id": 91, + "nodeType": "InheritanceSpecifier", + "src": "597:17:2" + } + ], + "canonicalName": "ERC721", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 81, + "nodeType": "StructuredDocumentation", + "src": "410:124:2", + "text": " @title ERC721 Non-Fungible Token Standard basic implementation\n @dev see https://eips.ethereum.org/EIPS/eip-721" + }, + "fullyImplemented": true, + "id": 1014, + "linearizedBaseContracts": [ + 1014, + 1161, + 1188, + 1130, + 56, + 68, + 1229 + ], + "name": "ERC721", + "nameLocation": "544:6:2", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 94, + "libraryName": { + "id": 92, + "name": "Address", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1811, + "src": "627:7:2" + }, + "nodeType": "UsingForDirective", + "src": "621:26:2", + "typeName": { + "id": 93, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "639:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "id": 98, + "libraryName": { + "id": 95, + "name": "EnumerableSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2906, + "src": "658:13:2" + }, + "nodeType": "UsingForDirective", + "src": "652:46:2", + "typeName": { + "id": 97, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 96, + "name": "EnumerableSet.UintSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2806, + "src": "676:21:2" + }, + "referencedDeclaration": 2806, + "src": "676:21:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$2806_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + } + }, + { + "id": 102, + "libraryName": { + "id": 99, + "name": "EnumerableMap", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2391, + "src": "709:13:2" + }, + "nodeType": "UsingForDirective", + "src": "703:55:2", + "typeName": { + "id": 101, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 100, + "name": "EnumerableMap.UintToAddressMap", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2157, + "src": "727:30:2" + }, + "referencedDeclaration": 2157, + "src": "727:30:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + } + }, + { + "id": 105, + "libraryName": { + "id": 103, + "name": "Strings", + "nodeType": "IdentifierPath", + "referencedDeclaration": 3109, + "src": "769:7:2" + }, + "nodeType": "UsingForDirective", + "src": "763:26:2", + "typeName": { + "id": 104, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "781:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 110, + "mutability": "mutable", + "name": "_holderTokens", + "nameLocation": "923:13:2", + "nodeType": "VariableDeclaration", + "scope": 1014, + "src": "872:64:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$2806_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet)" + }, + "typeName": { + "id": 109, + "keyType": { + "id": 106, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "881:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "872:42:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$2806_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet)" + }, + "valueType": { + "id": 108, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 107, + "name": "EnumerableSet.UintSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2806, + "src": "892:21:2" + }, + "referencedDeclaration": 2806, + "src": "892:21:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$2806_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 113, + "mutability": "mutable", + "name": "_tokenOwners", + "nameLocation": "1039:12:2", + "nodeType": "VariableDeclaration", + "scope": 1014, + "src": "1000:51:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "id": 112, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 111, + "name": "EnumerableMap.UintToAddressMap", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2157, + "src": "1000:30:2" + }, + "referencedDeclaration": 2157, + "src": "1000:30:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 117, + "mutability": "mutable", + "name": "_tokenApprovals", + "nameLocation": "1144:15:2", + "nodeType": "VariableDeclaration", + "scope": 1014, + "src": "1107:52:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "typeName": { + "id": 116, + "keyType": { + "id": 114, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1116:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1107:28:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "valueType": { + "id": 115, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1127:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 123, + "mutability": "mutable", + "name": "_operatorApprovals", + "nameLocation": "1269:18:2", + "nodeType": "VariableDeclaration", + "scope": 1014, + "src": "1214:73:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "typeName": { + "id": 122, + "keyType": { + "id": 118, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1223:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1214:46:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "valueType": { + "id": 121, + "keyType": { + "id": 119, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1243:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1234:25:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 120, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1254:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 125, + "mutability": "mutable", + "name": "_name", + "nameLocation": "1327:5:2", + "nodeType": "VariableDeclaration", + "scope": 1014, + "src": "1312:20:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 124, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1312:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 127, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "1374:7:2", + "nodeType": "VariableDeclaration", + "scope": 1014, + "src": "1359:22:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 126, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1359:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 131, + "mutability": "mutable", + "name": "_tokenURIs", + "nameLocation": "1463:10:2", + "nodeType": "VariableDeclaration", + "scope": 1014, + "src": "1427:46:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string)" + }, + "typeName": { + "id": 130, + "keyType": { + "id": 128, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1436:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1427:27:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string)" + }, + "valueType": { + "id": 129, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1447:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 133, + "mutability": "mutable", + "name": "_baseURI", + "nameLocation": "1511:8:2", + "nodeType": "VariableDeclaration", + "scope": 1014, + "src": "1496:23:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 132, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1496:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 170, + "nodeType": "Block", + "src": "1696:318:2", + "statements": [ + { + "expression": { + "id": 143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 141, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125, + "src": "1706:5:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 142, + "name": "name_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 136, + "src": "1714:5:2", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "1706:13:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 144, + "nodeType": "ExpressionStatement", + "src": "1706:13:2" + }, + { + "expression": { + "id": 147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 145, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "1729:7:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 146, + "name": "symbol_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 138, + "src": "1739:7:2", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "1729:17:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 148, + "nodeType": "ExpressionStatement", + "src": "1729:17:2" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "arguments": [ + { + "id": 151, + "name": "IERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1130, + "src": "1858:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC721_$1130_$", + "typeString": "type(contract IERC721)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_IERC721_$1130_$", + "typeString": "type(contract IERC721)" + } + ], + "id": 150, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "1853:4:2", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1853:13:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721_$1130", + "typeString": "type(contract IERC721)" + } + }, + "id": 153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "interfaceId", + "nodeType": "MemberAccess", + "src": "1853:25:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 149, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 55, + "src": "1834:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1834:45:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 155, + "nodeType": "ExpressionStatement", + "src": "1834:45:2" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "arguments": [ + { + "id": 158, + "name": "IERC721Metadata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1188, + "src": "1913:15:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$1188_$", + "typeString": "type(contract IERC721Metadata)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$1188_$", + "typeString": "type(contract IERC721Metadata)" + } + ], + "id": 157, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "1908:4:2", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 159, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1908:21:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Metadata_$1188", + "typeString": "type(contract IERC721Metadata)" + } + }, + "id": 160, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "interfaceId", + "nodeType": "MemberAccess", + "src": "1908:33:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 156, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 55, + "src": "1889:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1889:53:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 162, + "nodeType": "ExpressionStatement", + "src": "1889:53:2" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "arguments": [ + { + "id": 165, + "name": "IERC721Enumerable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1161, + "src": "1976:17:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC721Enumerable_$1161_$", + "typeString": "type(contract IERC721Enumerable)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_IERC721Enumerable_$1161_$", + "typeString": "type(contract IERC721Enumerable)" + } + ], + "id": 164, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "1971:4:2", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 166, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1971:23:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Enumerable_$1161", + "typeString": "type(contract IERC721Enumerable)" + } + }, + "id": 167, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "interfaceId", + "nodeType": "MemberAccess", + "src": "1971:35:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 163, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 55, + "src": "1952:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1952:55:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 169, + "nodeType": "ExpressionStatement", + "src": "1952:55:2" + } + ] + }, + "documentation": { + "id": 134, + "nodeType": "StructuredDocumentation", + "src": "1526:108:2", + "text": " @dev Initializes the contract by setting a `name` and a `symbol` to the token collection." + }, + "id": 171, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 139, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 136, + "mutability": "mutable", + "name": "name_", + "nameLocation": "1666:5:2", + "nodeType": "VariableDeclaration", + "scope": 171, + "src": "1652:19:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 135, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1652:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 138, + "mutability": "mutable", + "name": "symbol_", + "nameLocation": "1687:7:2", + "nodeType": "VariableDeclaration", + "scope": 171, + "src": "1673:21:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 137, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1673:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1651:44:2" + }, + "returnParameters": { + "id": 140, + "nodeType": "ParameterList", + "parameters": [], + "src": "1696:0:2" + }, + "scope": 1014, + "src": "1639:375:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 1055 + ], + "body": { + "id": 196, + "nodeType": "Block", + "src": "2154:137:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 181, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 174, + "src": "2172:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 184, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2189:1:2", + "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": 183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2181:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 182, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2181:7:2", + "typeDescriptions": {} + } + }, + "id": 185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2181:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2172:19:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4552433732313a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373", + "id": 187, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2193:44:2", + "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": 180, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2164:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2164:74:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 189, + "nodeType": "ExpressionStatement", + "src": "2164:74:2" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "baseExpression": { + "id": 190, + "name": "_holderTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "2255:13:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$2806_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet storage ref)" + } + }, + "id": 192, + "indexExpression": { + "id": 191, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 174, + "src": "2269:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2255:20:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$2806_storage", + "typeString": "struct EnumerableSet.UintSet storage ref" + } + }, + "id": 193, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": 2884, + "src": "2255:27:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintSet_$2806_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_UintSet_$2806_storage_ptr_$", + "typeString": "function (struct EnumerableSet.UintSet storage pointer) view returns (uint256)" + } + }, + "id": 194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2255:29:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 179, + "id": 195, + "nodeType": "Return", + "src": "2248:36:2" + } + ] + }, + "documentation": { + "id": 172, + "nodeType": "StructuredDocumentation", + "src": "2020:48:2", + "text": " @dev See {IERC721-balanceOf}." + }, + "functionSelector": "70a08231", + "id": 197, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "2082:9:2", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 176, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2127:8:2" + }, + "parameters": { + "id": 175, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 174, + "mutability": "mutable", + "name": "owner", + "nameLocation": "2100:5:2", + "nodeType": "VariableDeclaration", + "scope": 197, + "src": "2092:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 173, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2092:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2091:15:2" + }, + "returnParameters": { + "id": 179, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 178, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 197, + "src": "2145:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 177, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2145:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2144:9:2" + }, + "scope": 1014, + "src": "2073:218:2", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1063 + ], + "body": { + "id": 212, + "nodeType": "Block", + "src": "2429:94:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 208, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 200, + "src": "2463:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "4552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e", + "id": 209, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2472:43:2", + "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": 206, + "name": "_tokenOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "2446:12:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 207, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "get", + "nodeType": "MemberAccess", + "referencedDeclaration": 2390, + "src": "2446:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToAddressMap_$2157_storage_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_address_$bound_to$_t_struct$_UintToAddressMap_$2157_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer,uint256,string memory) view returns (address)" + } + }, + "id": 210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2446:70:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 205, + "id": 211, + "nodeType": "Return", + "src": "2439:77:2" + } + ] + }, + "documentation": { + "id": 198, + "nodeType": "StructuredDocumentation", + "src": "2297:46:2", + "text": " @dev See {IERC721-ownerOf}." + }, + "functionSelector": "6352211e", + "id": 213, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ownerOf", + "nameLocation": "2357:7:2", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 202, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2402:8:2" + }, + "parameters": { + "id": 201, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 200, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "2373:7:2", + "nodeType": "VariableDeclaration", + "scope": 213, + "src": "2365:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 199, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2365:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2364:17:2" + }, + "returnParameters": { + "id": 205, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 204, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 213, + "src": "2420:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 203, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2420:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2419:9:2" + }, + "scope": 1014, + "src": "2348:175:2", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1173 + ], + "body": { + "id": 222, + "nodeType": "Block", + "src": "2654:29:2", + "statements": [ + { + "expression": { + "id": 220, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125, + "src": "2671:5:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 219, + "id": 221, + "nodeType": "Return", + "src": "2664:12:2" + } + ] + }, + "documentation": { + "id": 214, + "nodeType": "StructuredDocumentation", + "src": "2529:51:2", + "text": " @dev See {IERC721Metadata-name}." + }, + "functionSelector": "06fdde03", + "id": 223, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "2594:4:2", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 216, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2621:8:2" + }, + "parameters": { + "id": 215, + "nodeType": "ParameterList", + "parameters": [], + "src": "2598:2:2" + }, + "returnParameters": { + "id": 219, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 218, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 223, + "src": "2639:13:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 217, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2639:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2638:15:2" + }, + "scope": 1014, + "src": "2585:98:2", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1179 + ], + "body": { + "id": 232, + "nodeType": "Block", + "src": "2818:31:2", + "statements": [ + { + "expression": { + "id": 230, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "2835:7:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 229, + "id": 231, + "nodeType": "Return", + "src": "2828:14:2" + } + ] + }, + "documentation": { + "id": 224, + "nodeType": "StructuredDocumentation", + "src": "2689:53:2", + "text": " @dev See {IERC721Metadata-symbol}." + }, + "functionSelector": "95d89b41", + "id": 233, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "2756:6:2", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 226, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2785:8:2" + }, + "parameters": { + "id": 225, + "nodeType": "ParameterList", + "parameters": [], + "src": "2762:2:2" + }, + "returnParameters": { + "id": 229, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 228, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 233, + "src": "2803:13:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 227, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2803:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2802:15:2" + }, + "scope": 1014, + "src": "2747:102:2", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1187 + ], + "body": { + "id": 300, + "nodeType": "Block", + "src": "3003:688:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 244, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 236, + "src": "3029:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 243, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 596, + "src": "3021:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3021:16:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e", + "id": 246, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3039:49:2", + "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": 242, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3013:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3013:76:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 248, + "nodeType": "ExpressionStatement", + "src": "3013:76:2" + }, + { + "assignments": [ + 250 + ], + "declarations": [ + { + "constant": false, + "id": 250, + "mutability": "mutable", + "name": "_tokenURI", + "nameLocation": "3114:9:2", + "nodeType": "VariableDeclaration", + "scope": 300, + "src": "3100:23:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 249, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3100:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "id": 254, + "initialValue": { + "baseExpression": { + "id": 251, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 131, + "src": "3126:10:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 253, + "indexExpression": { + "id": 252, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 236, + "src": "3137:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3126:19:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3100:45:2" + }, + { + "assignments": [ + 256 + ], + "declarations": [ + { + "constant": false, + "id": 256, + "mutability": "mutable", + "name": "base", + "nameLocation": "3169:4:2", + "nodeType": "VariableDeclaration", + "scope": 300, + "src": "3155:18:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 255, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3155:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "id": 259, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 257, + "name": "baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 310, + "src": "3176:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$", + "typeString": "function () view returns (string memory)" + } + }, + "id": 258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3176:9:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3155:30:2" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 262, + "name": "base", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "3264:4:2", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 261, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3258:5:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 260, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3258:5:2", + "typeDescriptions": {} + } + }, + "id": 263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3258:11:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3258:18:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 265, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3280:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3258:23:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 270, + "nodeType": "IfStatement", + "src": "3254:70:2", + "trueBody": { + "id": 269, + "nodeType": "Block", + "src": "3283:41:2", + "statements": [ + { + "expression": { + "id": 267, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 250, + "src": "3304:9:2", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 241, + "id": 268, + "nodeType": "Return", + "src": "3297:16:2" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 273, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 250, + "src": "3432:9:2", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 272, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3426:5:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 271, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3426:5:2", + "typeDescriptions": {} + } + }, + "id": 274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3426:16:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3426:23:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 276, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3452:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3426:27:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 288, + "nodeType": "IfStatement", + "src": "3422:106:2", + "trueBody": { + "id": 287, + "nodeType": "Block", + "src": "3455:73:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 282, + "name": "base", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "3500:4:2", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 283, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 250, + "src": "3506:9:2", + "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": 280, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3483:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 281, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "3483:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3483:33:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 279, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3476:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 278, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3476:6:2", + "typeDescriptions": {} + } + }, + "id": 285, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3476:41:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 241, + "id": 286, + "nodeType": "Return", + "src": "3469:48:2" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 293, + "name": "base", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "3658:4:2", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 294, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 236, + "src": "3664:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toString", + "nodeType": "MemberAccess", + "referencedDeclaration": 2991, + "src": "3664:16:2", + "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": 296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3664:18:2", + "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": 291, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3641:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 292, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "3641:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3641:42:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 290, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3634:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 289, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3634:6:2", + "typeDescriptions": {} + } + }, + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3634:50:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 241, + "id": 299, + "nodeType": "Return", + "src": "3627:57:2" + } + ] + }, + "documentation": { + "id": 234, + "nodeType": "StructuredDocumentation", + "src": "2855:55:2", + "text": " @dev See {IERC721Metadata-tokenURI}." + }, + "functionSelector": "c87b56dd", + "id": 301, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nameLocation": "2924:8:2", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 238, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2970:8:2" + }, + "parameters": { + "id": 237, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 236, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "2941:7:2", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "2933:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 235, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2933:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2932:17:2" + }, + "returnParameters": { + "id": 241, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 240, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "2988:13:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 239, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2988:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2987:15:2" + }, + "scope": 1014, + "src": "2915:776:2", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 309, + "nodeType": "Block", + "src": "3986:32:2", + "statements": [ + { + "expression": { + "id": 307, + "name": "_baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 133, + "src": "4003:8:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 306, + "id": 308, + "nodeType": "Return", + "src": "3996:15:2" + } + ] + }, + "documentation": { + "id": 302, + "nodeType": "StructuredDocumentation", + "src": "3697:221:2", + "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": 310, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "baseURI", + "nameLocation": "3932:7:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 303, + "nodeType": "ParameterList", + "parameters": [], + "src": "3939:2:2" + }, + "returnParameters": { + "id": 306, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 305, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 310, + "src": "3971:13:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 304, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3971:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "3970:15:2" + }, + "scope": 1014, + "src": "3923:95:2", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1152 + ], + "body": { + "id": 328, + "nodeType": "Block", + "src": "4203:54:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 325, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "4244:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "id": 321, + "name": "_holderTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "4220:13:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$2806_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet storage ref)" + } + }, + "id": 323, + "indexExpression": { + "id": 322, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 313, + "src": "4234:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4220:20:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$2806_storage", + "typeString": "struct EnumerableSet.UintSet storage ref" + } + }, + "id": 324, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "at", + "nodeType": "MemberAccess", + "referencedDeclaration": 2905, + "src": "4220:23:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintSet_$2806_storage_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_struct$_UintSet_$2806_storage_ptr_$", + "typeString": "function (struct EnumerableSet.UintSet storage pointer,uint256) view returns (uint256)" + } + }, + "id": 326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4220:30:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 320, + "id": 327, + "nodeType": "Return", + "src": "4213:37:2" + } + ] + }, + "documentation": { + "id": 311, + "nodeType": "StructuredDocumentation", + "src": "4024:68:2", + "text": " @dev See {IERC721Enumerable-tokenOfOwnerByIndex}." + }, + "functionSelector": "2f745c59", + "id": 329, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenOfOwnerByIndex", + "nameLocation": "4106:19:2", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 317, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4176:8:2" + }, + "parameters": { + "id": 316, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 313, + "mutability": "mutable", + "name": "owner", + "nameLocation": "4134:5:2", + "nodeType": "VariableDeclaration", + "scope": 329, + "src": "4126:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 312, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4126:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 315, + "mutability": "mutable", + "name": "index", + "nameLocation": "4149:5:2", + "nodeType": "VariableDeclaration", + "scope": 329, + "src": "4141:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 314, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4141:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4125:30:2" + }, + "returnParameters": { + "id": 320, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 319, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 329, + "src": "4194:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 318, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4194:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4193:9:2" + }, + "scope": 1014, + "src": "4097:160:2", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1142 + ], + "body": { + "id": 340, + "nodeType": "Block", + "src": "4398:138:2", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 336, + "name": "_tokenOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "4508:12:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 337, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": 2247, + "src": "4508:19:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToAddressMap_$2157_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_UintToAddressMap_$2157_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer) view returns (uint256)" + } + }, + "id": 338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4508:21:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 335, + "id": 339, + "nodeType": "Return", + "src": "4501:28:2" + } + ] + }, + "documentation": { + "id": 330, + "nodeType": "StructuredDocumentation", + "src": "4263:60:2", + "text": " @dev See {IERC721Enumerable-totalSupply}." + }, + "functionSelector": "18160ddd", + "id": 341, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "4337:11:2", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 332, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4371:8:2" + }, + "parameters": { + "id": 331, + "nodeType": "ParameterList", + "parameters": [], + "src": "4348:2:2" + }, + "returnParameters": { + "id": 335, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 334, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 341, + "src": "4389:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 333, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4389:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4388:9:2" + }, + "scope": 1014, + "src": "4328:208:2", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1160 + ], + "body": { + "id": 359, + "nodeType": "Block", + "src": "4692:85:2", + "statements": [ + { + "assignments": [ + 351, + null + ], + "declarations": [ + { + "constant": false, + "id": 351, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4711:7:2", + "nodeType": "VariableDeclaration", + "scope": 359, + "src": "4703:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 350, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4703:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + null + ], + "id": 356, + "initialValue": { + "arguments": [ + { + "id": 354, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "4740:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 352, + "name": "_tokenOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "4724:12:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 353, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "at", + "nodeType": "MemberAccess", + "referencedDeclaration": 2287, + "src": "4724:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToAddressMap_$2157_storage_ptr_$_t_uint256_$returns$_t_uint256_$_t_address_$bound_to$_t_struct$_UintToAddressMap_$2157_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) view returns (uint256,address)" + } + }, + "id": 355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4724:22:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_address_$", + "typeString": "tuple(uint256,address)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4702:44:2" + }, + { + "expression": { + "id": 357, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 351, + "src": "4763:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 349, + "id": 358, + "nodeType": "Return", + "src": "4756:14:2" + } + ] + }, + "documentation": { + "id": 342, + "nodeType": "StructuredDocumentation", + "src": "4542:61:2", + "text": " @dev See {IERC721Enumerable-tokenByIndex}." + }, + "functionSelector": "4f6ccce7", + "id": 360, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenByIndex", + "nameLocation": "4617:12:2", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 346, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4665:8:2" + }, + "parameters": { + "id": 345, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 344, + "mutability": "mutable", + "name": "index", + "nameLocation": "4638:5:2", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "4630:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 343, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4630:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4629:15:2" + }, + "returnParameters": { + "id": 349, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 348, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "4683:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 347, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4683:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4682:9:2" + }, + "scope": 1014, + "src": "4608:169:2", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1091 + ], + "body": { + "id": 403, + "nodeType": "Block", + "src": "4904:325:2", + "statements": [ + { + "assignments": [ + 370 + ], + "declarations": [ + { + "constant": false, + "id": 370, + "mutability": "mutable", + "name": "owner", + "nameLocation": "4922:5:2", + "nodeType": "VariableDeclaration", + "scope": 403, + "src": "4914:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 369, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4914:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 375, + "initialValue": { + "arguments": [ + { + "id": 373, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "4945:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 371, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1014, + "src": "4930:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721_$1014_$", + "typeString": "type(contract ERC721)" + } + }, + "id": 372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "ownerOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 213, + "src": "4930:14:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4930:23:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4914:39:2" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 377, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 363, + "src": "4971:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 378, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 370, + "src": "4977:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4971:11:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572", + "id": 380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4984:35:2", + "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": 376, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4963:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4963:57:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 382, + "nodeType": "ExpressionStatement", + "src": "4963:57:2" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 384, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1217, + "src": "5039:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5039:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 386, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 370, + "src": "5055:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5039:21:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 390, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 370, + "src": "5088:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 391, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1217, + "src": "5095:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5095:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 388, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1014, + "src": "5064:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721_$1014_$", + "typeString": "type(contract ERC721)" + } + }, + "id": 389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isApprovedForAll", + "nodeType": "MemberAccess", + "referencedDeclaration": 477, + "src": "5064:23:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5064:44:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5039:69:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c", + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5122:58:2", + "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": 383, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5031:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5031:159:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 397, + "nodeType": "ExpressionStatement", + "src": "5031:159:2" + }, + { + "expression": { + "arguments": [ + { + "id": 399, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 363, + "src": "5210:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 400, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "5214:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 398, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1002, + "src": "5201:8:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5201:21:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 402, + "nodeType": "ExpressionStatement", + "src": "5201:21:2" + } + ] + }, + "documentation": { + "id": 361, + "nodeType": "StructuredDocumentation", + "src": "4783:46:2", + "text": " @dev See {IERC721-approve}." + }, + "functionSelector": "095ea7b3", + "id": 404, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "4843:7:2", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 367, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4895:8:2" + }, + "parameters": { + "id": 366, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 363, + "mutability": "mutable", + "name": "to", + "nameLocation": "4859:2:2", + "nodeType": "VariableDeclaration", + "scope": 404, + "src": "4851:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 362, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4851:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 365, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4871:7:2", + "nodeType": "VariableDeclaration", + "scope": 404, + "src": "4863:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 364, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4863:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4850:29:2" + }, + "returnParameters": { + "id": 368, + "nodeType": "ParameterList", + "parameters": [], + "src": "4904:0:2" + }, + "scope": 1014, + "src": "4834:395:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1099 + ], + "body": { + "id": 424, + "nodeType": "Block", + "src": "5375:132:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 415, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 407, + "src": "5401:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 414, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 596, + "src": "5393:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5393:16:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e", + "id": 417, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5411:46:2", + "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": 413, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5385:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5385:73:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 419, + "nodeType": "ExpressionStatement", + "src": "5385:73:2" + }, + { + "expression": { + "baseExpression": { + "id": 420, + "name": "_tokenApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 117, + "src": "5476:15:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 422, + "indexExpression": { + "id": 421, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 407, + "src": "5492:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5476:24:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 412, + "id": 423, + "nodeType": "Return", + "src": "5469:31:2" + } + ] + }, + "documentation": { + "id": 405, + "nodeType": "StructuredDocumentation", + "src": "5235:50:2", + "text": " @dev See {IERC721-getApproved}." + }, + "functionSelector": "081812fc", + "id": 425, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getApproved", + "nameLocation": "5299:11:2", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 409, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5348:8:2" + }, + "parameters": { + "id": 408, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 407, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "5319:7:2", + "nodeType": "VariableDeclaration", + "scope": 425, + "src": "5311:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 406, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5311:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5310:17:2" + }, + "returnParameters": { + "id": 412, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 411, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 425, + "src": "5366:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 410, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5366:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5365:9:2" + }, + "scope": 1014, + "src": "5290:217:2", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1107 + ], + "body": { + "id": 458, + "nodeType": "Block", + "src": "5658:206:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 438, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 435, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 428, + "src": "5676:8:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 436, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1217, + "src": "5688:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5688:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5676:24:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572", + "id": 439, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5702:27:2", + "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": 434, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5668:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5668:62:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 441, + "nodeType": "ExpressionStatement", + "src": "5668:62:2" + }, + { + "expression": { + "id": 449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 442, + "name": "_operatorApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "5741:18:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 446, + "indexExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 443, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1217, + "src": "5760:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5760:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5741:32:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 447, + "indexExpression": { + "id": 445, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 428, + "src": "5774:8:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5741:42:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 448, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 430, + "src": "5786:8:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5741:53:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 450, + "nodeType": "ExpressionStatement", + "src": "5741:53:2" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 452, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1217, + "src": "5824:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5824:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 454, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 428, + "src": "5838:8:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 455, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 430, + "src": "5848:8:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 451, + "name": "ApprovalForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1047, + "src": "5809:14:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", + "typeString": "function (address,address,bool)" + } + }, + "id": 456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5809:48:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 457, + "nodeType": "EmitStatement", + "src": "5804:53:2" + } + ] + }, + "documentation": { + "id": 426, + "nodeType": "StructuredDocumentation", + "src": "5513:56:2", + "text": " @dev See {IERC721-setApprovalForAll}." + }, + "functionSelector": "a22cb465", + "id": 459, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setApprovalForAll", + "nameLocation": "5583:17:2", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 432, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5649:8:2" + }, + "parameters": { + "id": 431, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 428, + "mutability": "mutable", + "name": "operator", + "nameLocation": "5609:8:2", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "5601:16:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 427, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5601:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 430, + "mutability": "mutable", + "name": "approved", + "nameLocation": "5624:8:2", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "5619:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 429, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5619:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5600:33:2" + }, + "returnParameters": { + "id": 433, + "nodeType": "ParameterList", + "parameters": [], + "src": "5658:0:2" + }, + "scope": 1014, + "src": "5574:290:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1117 + ], + "body": { + "id": 476, + "nodeType": "Block", + "src": "6033:59:2", + "statements": [ + { + "expression": { + "baseExpression": { + "baseExpression": { + "id": 470, + "name": "_operatorApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "6050:18:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 472, + "indexExpression": { + "id": 471, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 462, + "src": "6069:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6050:25:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 474, + "indexExpression": { + "id": 473, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "6076:8:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6050:35:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 469, + "id": 475, + "nodeType": "Return", + "src": "6043:42:2" + } + ] + }, + "documentation": { + "id": 460, + "nodeType": "StructuredDocumentation", + "src": "5870:55:2", + "text": " @dev See {IERC721-isApprovedForAll}." + }, + "functionSelector": "e985e9c5", + "id": 477, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isApprovedForAll", + "nameLocation": "5939:16:2", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 466, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6009:8:2" + }, + "parameters": { + "id": 465, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 462, + "mutability": "mutable", + "name": "owner", + "nameLocation": "5964:5:2", + "nodeType": "VariableDeclaration", + "scope": 477, + "src": "5956:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 461, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5956:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 464, + "mutability": "mutable", + "name": "operator", + "nameLocation": "5979:8:2", + "nodeType": "VariableDeclaration", + "scope": 477, + "src": "5971:16:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 463, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5971:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5955:33:2" + }, + "returnParameters": { + "id": 469, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 468, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 477, + "src": "6027:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 467, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6027:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6026:6:2" + }, + "scope": 1014, + "src": "5930:162:2", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1083 + ], + "body": { + "id": 503, + "nodeType": "Block", + "src": "6243:211:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 490, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1217, + "src": "6332:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6332:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 492, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 484, + "src": "6346:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 489, + "name": "_isApprovedOrOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 638, + "src": "6313:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) view returns (bool)" + } + }, + "id": 493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6313:41:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564", + "id": 494, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6356:51:2", + "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": 488, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6305:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6305:103:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 496, + "nodeType": "ExpressionStatement", + "src": "6305:103:2" + }, + { + "expression": { + "arguments": [ + { + "id": 498, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 480, + "src": "6429:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 499, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 482, + "src": "6435:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 500, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 484, + "src": "6439:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 497, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 882, + "src": "6419:9:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6419:28:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 502, + "nodeType": "ExpressionStatement", + "src": "6419:28:2" + } + ] + }, + "documentation": { + "id": 478, + "nodeType": "StructuredDocumentation", + "src": "6098:51:2", + "text": " @dev See {IERC721-transferFrom}." + }, + "functionSelector": "23b872dd", + "id": 504, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "6163:12:2", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 486, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6234:8:2" + }, + "parameters": { + "id": 485, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 480, + "mutability": "mutable", + "name": "from", + "nameLocation": "6184:4:2", + "nodeType": "VariableDeclaration", + "scope": 504, + "src": "6176:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 479, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6176:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 482, + "mutability": "mutable", + "name": "to", + "nameLocation": "6198:2:2", + "nodeType": "VariableDeclaration", + "scope": 504, + "src": "6190:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 481, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6190:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 484, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "6210:7:2", + "nodeType": "VariableDeclaration", + "scope": 504, + "src": "6202:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 483, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6202:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6175:43:2" + }, + "returnParameters": { + "id": 487, + "nodeType": "ParameterList", + "parameters": [], + "src": "6243:0:2" + }, + "scope": 1014, + "src": "6154:300:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1073 + ], + "body": { + "id": 522, + "nodeType": "Block", + "src": "6613:56:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 516, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 507, + "src": "6640:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 517, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 509, + "src": "6646:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 518, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 511, + "src": "6650:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "", + "id": 519, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6659:2:2", + "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": 515, + "name": "safeTransferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 523, + 553 + ], + "referencedDeclaration": 553, + "src": "6623:16:2", + "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": 520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6623:39:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 521, + "nodeType": "ExpressionStatement", + "src": "6623:39:2" + } + ] + }, + "documentation": { + "id": 505, + "nodeType": "StructuredDocumentation", + "src": "6460:55:2", + "text": " @dev See {IERC721-safeTransferFrom}." + }, + "functionSelector": "42842e0e", + "id": 523, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "6529:16:2", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 513, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6604:8:2" + }, + "parameters": { + "id": 512, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 507, + "mutability": "mutable", + "name": "from", + "nameLocation": "6554:4:2", + "nodeType": "VariableDeclaration", + "scope": 523, + "src": "6546:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 506, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6546:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 509, + "mutability": "mutable", + "name": "to", + "nameLocation": "6568:2:2", + "nodeType": "VariableDeclaration", + "scope": 523, + "src": "6560:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 508, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6560:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 511, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "6580:7:2", + "nodeType": "VariableDeclaration", + "scope": 523, + "src": "6572:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 510, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6572:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6545:43:2" + }, + "returnParameters": { + "id": 514, + "nodeType": "ParameterList", + "parameters": [], + "src": "6613:0:2" + }, + "scope": 1014, + "src": "6520:149:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1129 + ], + "body": { + "id": 552, + "nodeType": "Block", + "src": "6848:169:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 538, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1217, + "src": "6885:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6885:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 540, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "6899:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 537, + "name": "_isApprovedOrOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 638, + "src": "6866:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) view returns (bool)" + } + }, + "id": 541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6866:41:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564", + "id": 542, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6909:51:2", + "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": 536, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6858:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6858:103:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 544, + "nodeType": "ExpressionStatement", + "src": "6858:103:2" + }, + { + "expression": { + "arguments": [ + { + "id": 546, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "6985:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 547, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 528, + "src": "6991:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 548, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "6995:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 549, + "name": "_data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 532, + "src": "7004:5:2", + "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": 545, + "name": "_safeTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "6971:13:2", + "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": 550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6971:39:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 551, + "nodeType": "ExpressionStatement", + "src": "6971:39:2" + } + ] + }, + "documentation": { + "id": 524, + "nodeType": "StructuredDocumentation", + "src": "6675:55:2", + "text": " @dev See {IERC721-safeTransferFrom}." + }, + "functionSelector": "b88d4fde", + "id": 553, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "6744:16:2", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 534, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6839:8:2" + }, + "parameters": { + "id": 533, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 526, + "mutability": "mutable", + "name": "from", + "nameLocation": "6769:4:2", + "nodeType": "VariableDeclaration", + "scope": 553, + "src": "6761:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 525, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6761:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 528, + "mutability": "mutable", + "name": "to", + "nameLocation": "6783:2:2", + "nodeType": "VariableDeclaration", + "scope": 553, + "src": "6775:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 527, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6775:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 530, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "6795:7:2", + "nodeType": "VariableDeclaration", + "scope": 553, + "src": "6787:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 529, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6787:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 532, + "mutability": "mutable", + "name": "_data", + "nameLocation": "6817:5:2", + "nodeType": "VariableDeclaration", + "scope": 553, + "src": "6804:18:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 531, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6804:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6760:63:2" + }, + "returnParameters": { + "id": 535, + "nodeType": "ParameterList", + "parameters": [], + "src": "6848:0:2" + }, + "scope": 1014, + "src": "6735:282:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 581, + "nodeType": "Block", + "src": "7982:166:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 566, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "8002:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 567, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 558, + "src": "8008:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 568, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 560, + "src": "8012:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 565, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 882, + "src": "7992:9:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7992:28:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 570, + "nodeType": "ExpressionStatement", + "src": "7992:28:2" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 573, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "8061:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 574, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 558, + "src": "8067:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 575, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 560, + "src": "8071:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 576, + "name": "_data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 562, + "src": "8080:5:2", + "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": 572, + "name": "_checkOnERC721Received", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 979, + "src": "8038:22:2", + "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": 577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8038:48:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8088:52:2", + "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": 571, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8030:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8030:111:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 580, + "nodeType": "ExpressionStatement", + "src": "8030:111:2" + } + ] + }, + "documentation": { + "id": 554, + "nodeType": "StructuredDocumentation", + "src": "7023:851:2", + "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": 582, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeTransfer", + "nameLocation": "7888:13:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 563, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 556, + "mutability": "mutable", + "name": "from", + "nameLocation": "7910:4:2", + "nodeType": "VariableDeclaration", + "scope": 582, + "src": "7902:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 555, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7902:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 558, + "mutability": "mutable", + "name": "to", + "nameLocation": "7924:2:2", + "nodeType": "VariableDeclaration", + "scope": 582, + "src": "7916:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 557, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7916:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 560, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "7936:7:2", + "nodeType": "VariableDeclaration", + "scope": 582, + "src": "7928:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 559, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7928:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 562, + "mutability": "mutable", + "name": "_data", + "nameLocation": "7958:5:2", + "nodeType": "VariableDeclaration", + "scope": 582, + "src": "7945:18:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 561, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7945:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "7901:63:2" + }, + "returnParameters": { + "id": 564, + "nodeType": "ParameterList", + "parameters": [], + "src": "7982:0:2" + }, + "scope": 1014, + "src": "7879:269:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 595, + "nodeType": "Block", + "src": "8522:54:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 592, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 585, + "src": "8561:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 590, + "name": "_tokenOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "8539:12:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 591, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 2232, + "src": "8539:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToAddressMap_$2157_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$2157_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) view returns (bool)" + } + }, + "id": 593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8539:30:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 589, + "id": 594, + "nodeType": "Return", + "src": "8532:37:2" + } + ] + }, + "documentation": { + "id": 583, + "nodeType": "StructuredDocumentation", + "src": "8154:292:2", + "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": 596, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_exists", + "nameLocation": "8460:7:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 586, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 585, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "8476:7:2", + "nodeType": "VariableDeclaration", + "scope": 596, + "src": "8468:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 584, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8468:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8467:17:2" + }, + "returnParameters": { + "id": 589, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 588, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 596, + "src": "8516:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 587, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8516:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8515:6:2" + }, + "scope": 1014, + "src": "8451:125:2", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 637, + "nodeType": "Block", + "src": "8833:252:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 608, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 601, + "src": "8859:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 607, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 596, + "src": "8851:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8851:16:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e", + "id": 610, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8869:46:2", + "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": 606, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8843:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8843:73:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 612, + "nodeType": "ExpressionStatement", + "src": "8843:73:2" + }, + { + "assignments": [ + 614 + ], + "declarations": [ + { + "constant": false, + "id": 614, + "mutability": "mutable", + "name": "owner", + "nameLocation": "8934:5:2", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "8926:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 613, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8926:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 619, + "initialValue": { + "arguments": [ + { + "id": 617, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 601, + "src": "8957:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 615, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1014, + "src": "8942:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721_$1014_$", + "typeString": "type(contract ERC721)" + } + }, + "id": 616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "ownerOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 213, + "src": "8942:14:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8942:23:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8926:39:2" + }, + { + "expression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 620, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 599, + "src": "8983:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 621, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 614, + "src": "8994:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8983:16:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 624, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 601, + "src": "9015:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 623, + "name": "getApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 425, + "src": "9003:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9003:20:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 626, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 599, + "src": "9027:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9003:31:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8983:51:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 631, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 614, + "src": "9062:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 632, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 599, + "src": "9069:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 629, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1014, + "src": "9038:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721_$1014_$", + "typeString": "type(contract ERC721)" + } + }, + "id": 630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isApprovedForAll", + "nodeType": "MemberAccess", + "referencedDeclaration": 477, + "src": "9038:23:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9038:39:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8983:94:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 635, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8982:96:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 605, + "id": 636, + "nodeType": "Return", + "src": "8975:103:2" + } + ] + }, + "documentation": { + "id": 597, + "nodeType": "StructuredDocumentation", + "src": "8582:147:2", + "text": " @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist." + }, + "id": 638, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isApprovedOrOwner", + "nameLocation": "8743:18:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 602, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 599, + "mutability": "mutable", + "name": "spender", + "nameLocation": "8770:7:2", + "nodeType": "VariableDeclaration", + "scope": 638, + "src": "8762:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 598, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8762:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 601, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "8787:7:2", + "nodeType": "VariableDeclaration", + "scope": 638, + "src": "8779:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 600, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8779:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8761:34:2" + }, + "returnParameters": { + "id": 605, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 604, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 638, + "src": "8827:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 603, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8827:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8826:6:2" + }, + "scope": 1014, + "src": "8734:351:2", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 652, + "nodeType": "Block", + "src": "9481:43:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 647, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 641, + "src": "9501:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 648, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "9505:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "", + "id": 649, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9514:2:2", + "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": 646, + "name": "_safeMint", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 653, + 682 + ], + "referencedDeclaration": 682, + "src": "9491:9:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory)" + } + }, + "id": 650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9491:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 651, + "nodeType": "ExpressionStatement", + "src": "9491:26:2" + } + ] + }, + "documentation": { + "id": 639, + "nodeType": "StructuredDocumentation", + "src": "9091:320:2", + "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": 653, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeMint", + "nameLocation": "9425:9:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 644, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 641, + "mutability": "mutable", + "name": "to", + "nameLocation": "9443:2:2", + "nodeType": "VariableDeclaration", + "scope": 653, + "src": "9435:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 640, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9435:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 643, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "9455:7:2", + "nodeType": "VariableDeclaration", + "scope": 653, + "src": "9447:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 642, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9447:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9434:29:2" + }, + "returnParameters": { + "id": 645, + "nodeType": "ParameterList", + "parameters": [], + "src": "9481:0:2" + }, + "scope": 1014, + "src": "9416:108:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 681, + "nodeType": "Block", + "src": "9830:162:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 664, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 656, + "src": "9846:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 665, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 658, + "src": "9850:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 663, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 741, + "src": "9840:5:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9840:18:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 667, + "nodeType": "ExpressionStatement", + "src": "9840:18:2" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 672, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9907:1:2", + "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": 671, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9899:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 670, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9899:7:2", + "typeDescriptions": {} + } + }, + "id": 673, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9899:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 674, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 656, + "src": "9911:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 675, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 658, + "src": "9915:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 676, + "name": "_data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 660, + "src": "9924:5:2", + "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": 669, + "name": "_checkOnERC721Received", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 979, + "src": "9876:22:2", + "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": 677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9876:54:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", + "id": 678, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9932:52:2", + "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": 668, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9868:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9868:117:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 680, + "nodeType": "ExpressionStatement", + "src": "9868:117:2" + } + ] + }, + "documentation": { + "id": 654, + "nodeType": "StructuredDocumentation", + "src": "9530:210:2", + "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": 682, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeMint", + "nameLocation": "9754:9:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 661, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 656, + "mutability": "mutable", + "name": "to", + "nameLocation": "9772:2:2", + "nodeType": "VariableDeclaration", + "scope": 682, + "src": "9764:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 655, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9764:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 658, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "9784:7:2", + "nodeType": "VariableDeclaration", + "scope": 682, + "src": "9776:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 657, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9776:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 660, + "mutability": "mutable", + "name": "_data", + "nameLocation": "9806:5:2", + "nodeType": "VariableDeclaration", + "scope": 682, + "src": "9793:18:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 659, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9793:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "9763:49:2" + }, + "returnParameters": { + "id": 662, + "nodeType": "ParameterList", + "parameters": [], + "src": "9830:0:2" + }, + "scope": 1014, + "src": "9745:247:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 740, + "nodeType": "Block", + "src": "10375:332:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 691, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "10393:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 694, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10407:1:2", + "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": 693, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10399:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 692, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10399:7:2", + "typeDescriptions": {} + } + }, + "id": 695, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10399:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10393:16:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373", + "id": 697, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10411:34:2", + "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": 690, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "10385:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10385:61:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 699, + "nodeType": "ExpressionStatement", + "src": "10385:61:2" + }, + { + "expression": { + "arguments": [ + { + "id": 704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "10464:17:2", + "subExpression": { + "arguments": [ + { + "id": 702, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 687, + "src": "10473:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 701, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 596, + "src": "10465:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10465:16:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564", + "id": 705, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10483:30:2", + "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": 700, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "10456:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10456:58:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 707, + "nodeType": "ExpressionStatement", + "src": "10456:58:2" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 711, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10554:1:2", + "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": 710, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10546:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 709, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10546:7:2", + "typeDescriptions": {} + } + }, + "id": 712, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10546:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 713, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "10558:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 714, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 687, + "src": "10562:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 708, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1013, + "src": "10525:20:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10525:45:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 716, + "nodeType": "ExpressionStatement", + "src": "10525:45:2" + }, + { + "expression": { + "arguments": [ + { + "id": 721, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 687, + "src": "10603:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "id": 717, + "name": "_holderTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "10581:13:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$2806_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet storage ref)" + } + }, + "id": 719, + "indexExpression": { + "id": 718, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "10595:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10581:17:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$2806_storage", + "typeString": "struct EnumerableSet.UintSet storage ref" + } + }, + "id": 720, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2827, + "src": "10581:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintSet_$2806_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$2806_storage_ptr_$", + "typeString": "function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)" + } + }, + "id": 722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10581:30:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 723, + "nodeType": "ExpressionStatement", + "src": "10581:30:2" + }, + { + "expression": { + "arguments": [ + { + "id": 727, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 687, + "src": "10639:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 728, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "10648:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 724, + "name": "_tokenOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "10622:12:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 726, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 2190, + "src": "10622:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintToAddressMap_$2157_storage_ptr_$_t_uint256_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$2157_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer,uint256,address) returns (bool)" + } + }, + "id": 729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10622:29:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 730, + "nodeType": "ExpressionStatement", + "src": "10622:29:2" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 734, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10684:1:2", + "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": 733, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10676:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 732, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10676:7:2", + "typeDescriptions": {} + } + }, + "id": 735, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10676:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 736, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "10688:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 737, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 687, + "src": "10692:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 731, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1029, + "src": "10667:8:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10667:33:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 739, + "nodeType": "EmitStatement", + "src": "10662:38:2" + } + ] + }, + "documentation": { + "id": 683, + "nodeType": "StructuredDocumentation", + "src": "9998:311:2", + "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": 741, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nameLocation": "10323:5:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 688, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 685, + "mutability": "mutable", + "name": "to", + "nameLocation": "10337:2:2", + "nodeType": "VariableDeclaration", + "scope": 741, + "src": "10329:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 684, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10329:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 687, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "10349:7:2", + "nodeType": "VariableDeclaration", + "scope": 741, + "src": "10341:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 686, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10341:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10328:29:2" + }, + "returnParameters": { + "id": 689, + "nodeType": "ParameterList", + "parameters": [], + "src": "10375:0:2" + }, + "scope": 1014, + "src": "10314:393:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 809, + "nodeType": "Block", + "src": "10973:478:2", + "statements": [ + { + "assignments": [ + 748 + ], + "declarations": [ + { + "constant": false, + "id": 748, + "mutability": "mutable", + "name": "owner", + "nameLocation": "10991:5:2", + "nodeType": "VariableDeclaration", + "scope": 809, + "src": "10983:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 747, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10983:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 753, + "initialValue": { + "arguments": [ + { + "id": 751, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 744, + "src": "11014:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 749, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1014, + "src": "10999:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721_$1014_$", + "typeString": "type(contract ERC721)" + } + }, + "id": 750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "ownerOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 213, + "src": "10999:14:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10999:23:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10983:39:2" + }, + { + "expression": { + "arguments": [ + { + "id": 755, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 748, + "src": "11072:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 758, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11087:1:2", + "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": 757, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11079:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 756, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11079:7:2", + "typeDescriptions": {} + } + }, + "id": 759, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11079:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 760, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 744, + "src": "11091:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 754, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1013, + "src": "11051:20:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11051:48:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 762, + "nodeType": "ExpressionStatement", + "src": "11051:48:2" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 766, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11154:1:2", + "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": 765, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11146:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 764, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11146:7:2", + "typeDescriptions": {} + } + }, + "id": 767, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11146:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 768, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 744, + "src": "11158:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 763, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1002, + "src": "11137:8:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11137:29:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 770, + "nodeType": "ExpressionStatement", + "src": "11137:29:2" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 773, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 131, + "src": "11222:10:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 775, + "indexExpression": { + "id": 774, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 744, + "src": "11233:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11222:19:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + ], + "id": 772, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11216:5:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 771, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11216:5:2", + "typeDescriptions": {} + } + }, + "id": 776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11216:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "id": 777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "11216:33:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 778, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11253:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11216:38:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 786, + "nodeType": "IfStatement", + "src": "11212:95:2", + "trueBody": { + "id": 785, + "nodeType": "Block", + "src": "11256:51:2", + "statements": [ + { + "expression": { + "id": 783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "11270:26:2", + "subExpression": { + "baseExpression": { + "id": 780, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 131, + "src": "11277:10:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 782, + "indexExpression": { + "id": 781, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 744, + "src": "11288:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11277:19:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 784, + "nodeType": "ExpressionStatement", + "src": "11270:26:2" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 791, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 744, + "src": "11345:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "id": 787, + "name": "_holderTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "11317:13:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$2806_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet storage ref)" + } + }, + "id": 789, + "indexExpression": { + "id": 788, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 748, + "src": "11331:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11317:20:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$2806_storage", + "typeString": "struct EnumerableSet.UintSet storage ref" + } + }, + "id": 790, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 2848, + "src": "11317:27:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintSet_$2806_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$2806_storage_ptr_$", + "typeString": "function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)" + } + }, + "id": 792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11317:36:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 793, + "nodeType": "ExpressionStatement", + "src": "11317:36:2" + }, + { + "expression": { + "arguments": [ + { + "id": 797, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 744, + "src": "11384:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 794, + "name": "_tokenOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "11364:12:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 796, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 2211, + "src": "11364:19:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintToAddressMap_$2157_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$2157_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) returns (bool)" + } + }, + "id": 798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11364:28:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 799, + "nodeType": "ExpressionStatement", + "src": "11364:28:2" + }, + { + "eventCall": { + "arguments": [ + { + "id": 801, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 748, + "src": "11417:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 804, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11432:1:2", + "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": 803, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11424:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 802, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11424:7:2", + "typeDescriptions": {} + } + }, + "id": 805, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11424:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 806, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 744, + "src": "11436:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 800, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1029, + "src": "11408:8:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11408:36:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 808, + "nodeType": "EmitStatement", + "src": "11403:41:2" + } + ] + }, + "documentation": { + "id": 742, + "nodeType": "StructuredDocumentation", + "src": "10713:206:2", + "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": 810, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nameLocation": "10933:5:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 745, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 744, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "10947:7:2", + "nodeType": "VariableDeclaration", + "scope": 810, + "src": "10939:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 743, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10939:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10938:17:2" + }, + "returnParameters": { + "id": 746, + "nodeType": "ParameterList", + "parameters": [], + "src": "10973:0:2" + }, + "scope": 1014, + "src": "10924:527:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 881, + "nodeType": "Block", + "src": "11854:505:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 823, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "11887:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 821, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1014, + "src": "11872:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721_$1014_$", + "typeString": "type(contract ERC721)" + } + }, + "id": 822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "ownerOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 213, + "src": "11872:14:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11872:23:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 825, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 813, + "src": "11899:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11872:31:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e", + "id": 827, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11905:43:2", + "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": 820, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "11864:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11864:85:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 829, + "nodeType": "ExpressionStatement", + "src": "11864:85:2" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 831, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 815, + "src": "11985:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 834, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11999:1:2", + "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": 833, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11991:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 832, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11991:7:2", + "typeDescriptions": {} + } + }, + "id": 835, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11991:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11985:16:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373", + "id": 837, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12003:38:2", + "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": 830, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "11977:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11977:65:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 839, + "nodeType": "ExpressionStatement", + "src": "11977:65:2" + }, + { + "expression": { + "arguments": [ + { + "id": 841, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 813, + "src": "12074:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 842, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 815, + "src": "12080:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 843, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "12084:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 840, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1013, + "src": "12053:20:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12053:39:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 845, + "nodeType": "ExpressionStatement", + "src": "12053:39:2" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 849, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12171:1:2", + "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": 848, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12163:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 847, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12163:7:2", + "typeDescriptions": {} + } + }, + "id": 850, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12163:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 851, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "12175:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 846, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1002, + "src": "12154:8:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12154:29:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 853, + "nodeType": "ExpressionStatement", + "src": "12154:29:2" + }, + { + "expression": { + "arguments": [ + { + "id": 858, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "12221:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "id": 854, + "name": "_holderTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "12194:13:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$2806_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet storage ref)" + } + }, + "id": 856, + "indexExpression": { + "id": 855, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 813, + "src": "12208:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12194:19:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$2806_storage", + "typeString": "struct EnumerableSet.UintSet storage ref" + } + }, + "id": 857, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 2848, + "src": "12194:26:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintSet_$2806_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$2806_storage_ptr_$", + "typeString": "function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)" + } + }, + "id": 859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12194:35:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 860, + "nodeType": "ExpressionStatement", + "src": "12194:35:2" + }, + { + "expression": { + "arguments": [ + { + "id": 865, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "12261:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "id": 861, + "name": "_holderTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "12239:13:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$2806_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet storage ref)" + } + }, + "id": 863, + "indexExpression": { + "id": 862, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 815, + "src": "12253:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12239:17:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$2806_storage", + "typeString": "struct EnumerableSet.UintSet storage ref" + } + }, + "id": 864, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2827, + "src": "12239:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintSet_$2806_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$2806_storage_ptr_$", + "typeString": "function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)" + } + }, + "id": 866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12239:30:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 867, + "nodeType": "ExpressionStatement", + "src": "12239:30:2" + }, + { + "expression": { + "arguments": [ + { + "id": 871, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "12297:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 872, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 815, + "src": "12306:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 868, + "name": "_tokenOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "12280:12:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 870, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 2190, + "src": "12280:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintToAddressMap_$2157_storage_ptr_$_t_uint256_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$2157_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer,uint256,address) returns (bool)" + } + }, + "id": 873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12280:29:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 874, + "nodeType": "ExpressionStatement", + "src": "12280:29:2" + }, + { + "eventCall": { + "arguments": [ + { + "id": 876, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 813, + "src": "12334:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 877, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 815, + "src": "12340:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 878, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "12344:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 875, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1029, + "src": "12325:8:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12325:27:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 880, + "nodeType": "EmitStatement", + "src": "12320:32:2" + } + ] + }, + "documentation": { + "id": 811, + "nodeType": "StructuredDocumentation", + "src": "11457:313:2", + "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": 882, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nameLocation": "11784:9:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 818, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 813, + "mutability": "mutable", + "name": "from", + "nameLocation": "11802:4:2", + "nodeType": "VariableDeclaration", + "scope": 882, + "src": "11794:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 812, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11794:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 815, + "mutability": "mutable", + "name": "to", + "nameLocation": "11816:2:2", + "nodeType": "VariableDeclaration", + "scope": 882, + "src": "11808:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 814, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11808:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 817, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "11828:7:2", + "nodeType": "VariableDeclaration", + "scope": 882, + "src": "11820:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 816, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11820:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11793:43:2" + }, + "returnParameters": { + "id": 819, + "nodeType": "ParameterList", + "parameters": [], + "src": "11854:0:2" + }, + "scope": 1014, + "src": "11775:584:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 903, + "nodeType": "Block", + "src": "12587:131:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 892, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 885, + "src": "12613:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 891, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 596, + "src": "12605:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12605:16:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e", + "id": 894, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12623:46:2", + "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": 890, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "12597:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12597:73:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 896, + "nodeType": "ExpressionStatement", + "src": "12597:73:2" + }, + { + "expression": { + "id": 901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 897, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 131, + "src": "12680:10:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 899, + "indexExpression": { + "id": 898, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 885, + "src": "12691:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "12680:19:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 900, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 887, + "src": "12702:9:2", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "12680:31:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 902, + "nodeType": "ExpressionStatement", + "src": "12680:31:2" + } + ] + }, + "documentation": { + "id": 883, + "nodeType": "StructuredDocumentation", + "src": "12365:136:2", + "text": " @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n Requirements:\n - `tokenId` must exist." + }, + "id": 904, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setTokenURI", + "nameLocation": "12515:12:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 888, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 885, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "12536:7:2", + "nodeType": "VariableDeclaration", + "scope": 904, + "src": "12528:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 884, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12528:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 887, + "mutability": "mutable", + "name": "_tokenURI", + "nameLocation": "12559:9:2", + "nodeType": "VariableDeclaration", + "scope": 904, + "src": "12545:23:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 886, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "12545:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "12527:42:2" + }, + "returnParameters": { + "id": 889, + "nodeType": "ParameterList", + "parameters": [], + "src": "12587:0:2" + }, + "scope": 1014, + "src": "12506:212:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 914, + "nodeType": "Block", + "src": "13003:36:2", + "statements": [ + { + "expression": { + "id": 912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 910, + "name": "_baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 133, + "src": "13013:8:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 911, + "name": "baseURI_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 907, + "src": "13024:8:2", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "13013:19:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 913, + "nodeType": "ExpressionStatement", + "src": "13013:19:2" + } + ] + }, + "documentation": { + "id": 905, + "nodeType": "StructuredDocumentation", + "src": "12724:212:2", + "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": 915, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setBaseURI", + "nameLocation": "12950:11:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 908, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 907, + "mutability": "mutable", + "name": "baseURI_", + "nameLocation": "12976:8:2", + "nodeType": "VariableDeclaration", + "scope": 915, + "src": "12962:22:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 906, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "12962:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "12961:24:2" + }, + "returnParameters": { + "id": 909, + "nodeType": "ParameterList", + "parameters": [], + "src": "13003:0:2" + }, + "scope": 1014, + "src": "12941:98:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 978, + "nodeType": "Block", + "src": "13722:694:2", + "statements": [ + { + "condition": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 929, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 920, + "src": "13736:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isContract", + "nodeType": "MemberAccess", + "referencedDeclaration": 1535, + "src": "13736:13:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13736:15:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 976, + "nodeType": "Block", + "src": "14374:36:2", + "statements": [ + { + "expression": { + "hexValue": "74727565", + "id": 974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14395:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 928, + "id": 975, + "nodeType": "Return", + "src": "14388:11:2" + } + ] + }, + "id": 977, + "nodeType": "IfStatement", + "src": "13732:678:2", + "trueBody": { + "id": 973, + "nodeType": "Block", + "src": "13753:615:2", + "statements": [ + { + "clauses": [ + { + "block": { + "id": 953, + "nodeType": "Block", + "src": "13868:95:2", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 945, + "name": "retval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 943, + "src": "13893:6:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "arguments": [ + { + "id": 947, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 920, + "src": "13919:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 946, + "name": "IERC721Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1206, + "src": "13903:15:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$1206_$", + "typeString": "type(contract IERC721Receiver)" + } + }, + "id": 948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13903:19:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Receiver_$1206", + "typeString": "contract IERC721Receiver" + } + }, + "id": 949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 1205, + "src": "13903:36:2", + "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": 950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "13903:45:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "13893:55:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 928, + "id": 952, + "nodeType": "Return", + "src": "13886:62:2" + } + ] + }, + "errorName": "", + "id": 954, + "nodeType": "TryCatchClause", + "parameters": { + "id": 944, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 943, + "mutability": "mutable", + "name": "retval", + "nameLocation": "13860:6:2", + "nodeType": "VariableDeclaration", + "scope": 954, + "src": "13853:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 942, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "13853:6:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "13852:15:2" + }, + "src": "13844:119:2" + }, + { + "block": { + "id": 970, + "nodeType": "Block", + "src": "13992:366:2", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 958, + "name": "reason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 956, + "src": "14014:6:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 959, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "14014:13:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 960, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14031:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14014:18:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 968, + "nodeType": "Block", + "src": "14141:203:2", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "14240:86:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14277:2:2", + "type": "", + "value": "32" + }, + { + "name": "reason", + "nodeType": "YulIdentifier", + "src": "14281:6:2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14273:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "14273:15:2" + }, + { + "arguments": [ + { + "name": "reason", + "nodeType": "YulIdentifier", + "src": "14296:6:2" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "14290:5:2" + }, + "nodeType": "YulFunctionCall", + "src": "14290:13:2" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "14266:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "14266:38:2" + }, + "nodeType": "YulExpressionStatement", + "src": "14266:38:2" + } + ] + }, + "evmVersion": "london", + "externalReferences": [ + { + "declaration": 956, + "isOffset": false, + "isSlot": false, + "src": "14281:6:2", + "valueSize": 1 + }, + { + "declaration": 956, + "isOffset": false, + "isSlot": false, + "src": "14296:6:2", + "valueSize": 1 + } + ], + "id": 967, + "nodeType": "InlineAssembly", + "src": "14231:95:2" + } + ] + }, + "id": 969, + "nodeType": "IfStatement", + "src": "14010:334:2", + "trueBody": { + "id": 966, + "nodeType": "Block", + "src": "14034:101:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", + "id": 963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14063:52:2", + "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_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", + "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" + } + ], + "id": 962, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "14056:6:2", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14056:60:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 965, + "nodeType": "ExpressionStatement", + "src": "14056:60:2" + } + ] + } + } + ] + }, + "errorName": "", + "id": 971, + "nodeType": "TryCatchClause", + "parameters": { + "id": 957, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 956, + "mutability": "mutable", + "name": "reason", + "nameLocation": "13984:6:2", + "nodeType": "VariableDeclaration", + "scope": 971, + "src": "13971:19:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 955, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13971:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "13970:21:2" + }, + "src": "13964:394:2" + } + ], + "externalCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 936, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1217, + "src": "13808:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13808:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 938, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 918, + "src": "13822:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 939, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 922, + "src": "13828:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 940, + "name": "_data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 924, + "src": "13837:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "arguments": [ + { + "id": 933, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 920, + "src": "13787:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 932, + "name": "IERC721Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1206, + "src": "13771:15:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$1206_$", + "typeString": "type(contract IERC721Receiver)" + } + }, + "id": 934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13771:19:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Receiver_$1206", + "typeString": "contract IERC721Receiver" + } + }, + "id": 935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 1205, + "src": "13771:36:2", + "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": 941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13771:72:2", + "tryCall": true, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "id": 972, + "nodeType": "TryStatement", + "src": "13767:591:2" + } + ] + } + } + ] + }, + "documentation": { + "id": 916, + "nodeType": "StructuredDocumentation", + "src": "13045:542:2", + "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": 979, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkOnERC721Received", + "nameLocation": "13601:22:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 925, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 918, + "mutability": "mutable", + "name": "from", + "nameLocation": "13632:4:2", + "nodeType": "VariableDeclaration", + "scope": 979, + "src": "13624:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 917, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13624:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 920, + "mutability": "mutable", + "name": "to", + "nameLocation": "13646:2:2", + "nodeType": "VariableDeclaration", + "scope": 979, + "src": "13638:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 919, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13638:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 922, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "13658:7:2", + "nodeType": "VariableDeclaration", + "scope": 979, + "src": "13650:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 921, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13650:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 924, + "mutability": "mutable", + "name": "_data", + "nameLocation": "13680:5:2", + "nodeType": "VariableDeclaration", + "scope": 979, + "src": "13667:18:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 923, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13667:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "13623:63:2" + }, + "returnParameters": { + "id": 928, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 927, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 979, + "src": "13712:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 926, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13712:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "13711:6:2" + }, + "scope": 1014, + "src": "13592:824:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1001, + "nodeType": "Block", + "src": "14477:125:2", + "statements": [ + { + "expression": { + "id": 990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 986, + "name": "_tokenApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 117, + "src": "14487:15:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 988, + "indexExpression": { + "id": 987, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 983, + "src": "14503:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "14487:24:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 989, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "14514:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14487:29:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 991, + "nodeType": "ExpressionStatement", + "src": "14487:29:2" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [ + { + "id": 995, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 983, + "src": "14555:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 993, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1014, + "src": "14540:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721_$1014_$", + "typeString": "type(contract ERC721)" + } + }, + "id": 994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "ownerOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 213, + "src": "14540:14:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 996, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14540:23:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 997, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "14565:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 998, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 983, + "src": "14569:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 992, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1038, + "src": "14531:8:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14531:46:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1000, + "nodeType": "EmitStatement", + "src": "14526:51:2" + } + ] + }, + "id": 1002, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nameLocation": "14431:8:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 984, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 981, + "mutability": "mutable", + "name": "to", + "nameLocation": "14448:2:2", + "nodeType": "VariableDeclaration", + "scope": 1002, + "src": "14440:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 980, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14440:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 983, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "14460:7:2", + "nodeType": "VariableDeclaration", + "scope": 1002, + "src": "14452:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 982, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14452:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14439:29:2" + }, + "returnParameters": { + "id": 985, + "nodeType": "ParameterList", + "parameters": [], + "src": "14477:0:2" + }, + "scope": 1014, + "src": "14422:180:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1012, + "nodeType": "Block", + "src": "15288:3:2", + "statements": [] + }, + "documentation": { + "id": 1003, + "nodeType": "StructuredDocumentation", + "src": "14608:585:2", + "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": 1013, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTokenTransfer", + "nameLocation": "15207:20:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1010, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1005, + "mutability": "mutable", + "name": "from", + "nameLocation": "15236:4:2", + "nodeType": "VariableDeclaration", + "scope": 1013, + "src": "15228:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1004, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15228:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1007, + "mutability": "mutable", + "name": "to", + "nameLocation": "15250:2:2", + "nodeType": "VariableDeclaration", + "scope": 1013, + "src": "15242:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1006, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15242:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1009, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "15262:7:2", + "nodeType": "VariableDeclaration", + "scope": 1013, + "src": "15254:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1008, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15254:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15227:43:2" + }, + "returnParameters": { + "id": 1011, + "nodeType": "ParameterList", + "parameters": [], + "src": "15288:0:2" + }, + "scope": 1014, + "src": "15198:93:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 1015, + "src": "535:14758:2", + "usedErrors": [] + } + ], + "src": "33:15260:2" + }, + "id": 2 + }, + "contracts/ERC721/IERC721.sol": { + "ast": { + "absolutePath": "contracts/ERC721/IERC721.sol", + "exportedSymbols": { + "IERC165": [ + 68 + ], + "IERC721": [ + 1130 + ] + }, + "id": 1131, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1016, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "33:25:3" + }, + { + "absolutePath": "contracts/ERC165/IERC165.sol", + "file": "../ERC165/IERC165.sol", + "id": 1017, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1131, + "sourceUnit": 69, + "src": "60:31:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 1019, + "name": "IERC165", + "nodeType": "IdentifierPath", + "referencedDeclaration": 68, + "src": "182:7:3" + }, + "id": 1020, + "nodeType": "InheritanceSpecifier", + "src": "182:7:3" + } + ], + "canonicalName": "IERC721", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 1018, + "nodeType": "StructuredDocumentation", + "src": "93:67:3", + "text": " @dev Required interface of an ERC721 compliant contract." + }, + "fullyImplemented": false, + "id": 1130, + "linearizedBaseContracts": [ + 1130, + 68 + ], + "name": "IERC721", + "nameLocation": "171:7:3", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": { + "id": 1021, + "nodeType": "StructuredDocumentation", + "src": "196:88:3", + "text": " @dev Emitted when `tokenId` token is transferred from `from` to `to`." + }, + "id": 1029, + "name": "Transfer", + "nameLocation": "295:8:3", + "nodeType": "EventDefinition", + "parameters": { + "id": 1028, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1023, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "320:4:3", + "nodeType": "VariableDeclaration", + "scope": 1029, + "src": "304:20:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1022, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "304:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1025, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "342:2:3", + "nodeType": "VariableDeclaration", + "scope": 1029, + "src": "326:18:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1024, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "326:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1027, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "362:7:3", + "nodeType": "VariableDeclaration", + "scope": 1029, + "src": "346:23:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1026, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "346:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "303:67:3" + }, + "src": "289:82:3" + }, + { + "anonymous": false, + "documentation": { + "id": 1030, + "nodeType": "StructuredDocumentation", + "src": "377:94:3", + "text": " @dev Emitted when `owner` enables `approved` to manage the `tokenId` token." + }, + "id": 1038, + "name": "Approval", + "nameLocation": "482:8:3", + "nodeType": "EventDefinition", + "parameters": { + "id": 1037, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1032, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "507:5:3", + "nodeType": "VariableDeclaration", + "scope": 1038, + "src": "491:21:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1031, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "491:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1034, + "indexed": true, + "mutability": "mutable", + "name": "approved", + "nameLocation": "530:8:3", + "nodeType": "VariableDeclaration", + "scope": 1038, + "src": "514:24:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1033, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "514:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1036, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "556:7:3", + "nodeType": "VariableDeclaration", + "scope": 1038, + "src": "540:23:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1035, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "540:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "490:74:3" + }, + "src": "476:89:3" + }, + { + "anonymous": false, + "documentation": { + "id": 1039, + "nodeType": "StructuredDocumentation", + "src": "571:117:3", + "text": " @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets." + }, + "id": 1047, + "name": "ApprovalForAll", + "nameLocation": "699:14:3", + "nodeType": "EventDefinition", + "parameters": { + "id": 1046, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1041, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "730:5:3", + "nodeType": "VariableDeclaration", + "scope": 1047, + "src": "714:21:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1040, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "714:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1043, + "indexed": true, + "mutability": "mutable", + "name": "operator", + "nameLocation": "753:8:3", + "nodeType": "VariableDeclaration", + "scope": 1047, + "src": "737:24:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1042, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "737:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1045, + "indexed": false, + "mutability": "mutable", + "name": "approved", + "nameLocation": "768:8:3", + "nodeType": "VariableDeclaration", + "scope": 1047, + "src": "763:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1044, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "763:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "713:64:3" + }, + "src": "693:85:3" + }, + { + "documentation": { + "id": 1048, + "nodeType": "StructuredDocumentation", + "src": "784:76:3", + "text": " @dev Returns the number of tokens in ``owner``'s account." + }, + "functionSelector": "70a08231", + "id": 1055, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "874:9:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1050, + "mutability": "mutable", + "name": "owner", + "nameLocation": "892:5:3", + "nodeType": "VariableDeclaration", + "scope": 1055, + "src": "884:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1049, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "884:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "883:15:3" + }, + "returnParameters": { + "id": 1054, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1053, + "mutability": "mutable", + "name": "balance", + "nameLocation": "930:7:3", + "nodeType": "VariableDeclaration", + "scope": 1055, + "src": "922:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1052, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "922:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "921:17:3" + }, + "scope": 1130, + "src": "865:74:3", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1056, + "nodeType": "StructuredDocumentation", + "src": "945:131:3", + "text": " @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist." + }, + "functionSelector": "6352211e", + "id": 1063, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "ownerOf", + "nameLocation": "1090:7:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1059, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1058, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "1106:7:3", + "nodeType": "VariableDeclaration", + "scope": 1063, + "src": "1098:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1057, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1098:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1097:17:3" + }, + "returnParameters": { + "id": 1062, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1061, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1146:5:3", + "nodeType": "VariableDeclaration", + "scope": 1063, + "src": "1138:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1060, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1138:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1137:15:3" + }, + "scope": 1130, + "src": "1081:72:3", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1064, + "nodeType": "StructuredDocumentation", + "src": "1159:690:3", + "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": 1073, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "1863:16:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1071, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1066, + "mutability": "mutable", + "name": "from", + "nameLocation": "1888:4:3", + "nodeType": "VariableDeclaration", + "scope": 1073, + "src": "1880:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1065, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1880:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1068, + "mutability": "mutable", + "name": "to", + "nameLocation": "1902:2:3", + "nodeType": "VariableDeclaration", + "scope": 1073, + "src": "1894:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1067, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1894:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1070, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "1914:7:3", + "nodeType": "VariableDeclaration", + "scope": 1073, + "src": "1906:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1069, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1906:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1879:43:3" + }, + "returnParameters": { + "id": 1072, + "nodeType": "ParameterList", + "parameters": [], + "src": "1931:0:3" + }, + "scope": 1130, + "src": "1854:78:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1074, + "nodeType": "StructuredDocumentation", + "src": "1938:504:3", + "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": 1083, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "2456:12:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1081, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1076, + "mutability": "mutable", + "name": "from", + "nameLocation": "2477:4:3", + "nodeType": "VariableDeclaration", + "scope": 1083, + "src": "2469:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1075, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2469:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1078, + "mutability": "mutable", + "name": "to", + "nameLocation": "2491:2:3", + "nodeType": "VariableDeclaration", + "scope": 1083, + "src": "2483:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1077, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2483:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1080, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "2503:7:3", + "nodeType": "VariableDeclaration", + "scope": 1083, + "src": "2495:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1079, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2495:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2468:43:3" + }, + "returnParameters": { + "id": 1082, + "nodeType": "ParameterList", + "parameters": [], + "src": "2520:0:3" + }, + "scope": 1130, + "src": "2447:74:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1084, + "nodeType": "StructuredDocumentation", + "src": "2527:452:3", + "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": 1091, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "2993:7:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1089, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1086, + "mutability": "mutable", + "name": "to", + "nameLocation": "3009:2:3", + "nodeType": "VariableDeclaration", + "scope": 1091, + "src": "3001:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1085, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3001:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1088, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3021:7:3", + "nodeType": "VariableDeclaration", + "scope": 1091, + "src": "3013:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1087, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3013:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3000:29:3" + }, + "returnParameters": { + "id": 1090, + "nodeType": "ParameterList", + "parameters": [], + "src": "3038:0:3" + }, + "scope": 1130, + "src": "2984:55:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1092, + "nodeType": "StructuredDocumentation", + "src": "3045:139:3", + "text": " @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist." + }, + "functionSelector": "081812fc", + "id": 1099, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getApproved", + "nameLocation": "3198:11:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1095, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1094, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3218:7:3", + "nodeType": "VariableDeclaration", + "scope": 1099, + "src": "3210:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1093, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3210:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3209:17:3" + }, + "returnParameters": { + "id": 1098, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1097, + "mutability": "mutable", + "name": "operator", + "nameLocation": "3258:8:3", + "nodeType": "VariableDeclaration", + "scope": 1099, + "src": "3250:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1096, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3250:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3249:18:3" + }, + "scope": 1130, + "src": "3189:79:3", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1100, + "nodeType": "StructuredDocumentation", + "src": "3274:309:3", + "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": 1107, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setApprovalForAll", + "nameLocation": "3597:17:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1105, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1102, + "mutability": "mutable", + "name": "operator", + "nameLocation": "3623:8:3", + "nodeType": "VariableDeclaration", + "scope": 1107, + "src": "3615:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1101, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3615:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1104, + "mutability": "mutable", + "name": "_approved", + "nameLocation": "3638:9:3", + "nodeType": "VariableDeclaration", + "scope": 1107, + "src": "3633:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1103, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3633:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3614:34:3" + }, + "returnParameters": { + "id": 1106, + "nodeType": "ParameterList", + "parameters": [], + "src": "3657:0:3" + }, + "scope": 1130, + "src": "3588:70:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1108, + "nodeType": "StructuredDocumentation", + "src": "3664:138:3", + "text": " @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}" + }, + "functionSelector": "e985e9c5", + "id": 1117, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isApprovedForAll", + "nameLocation": "3816:16:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1113, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1110, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3841:5:3", + "nodeType": "VariableDeclaration", + "scope": 1117, + "src": "3833:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1109, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3833:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1112, + "mutability": "mutable", + "name": "operator", + "nameLocation": "3856:8:3", + "nodeType": "VariableDeclaration", + "scope": 1117, + "src": "3848:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1111, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3848:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3832:33:3" + }, + "returnParameters": { + "id": 1116, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1115, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1117, + "src": "3889:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1114, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3889:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3888:6:3" + }, + "scope": 1130, + "src": "3807:88:3", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1118, + "nodeType": "StructuredDocumentation", + "src": "3901:568:3", + "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": 1129, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "4483:16:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1127, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1120, + "mutability": "mutable", + "name": "from", + "nameLocation": "4508:4:3", + "nodeType": "VariableDeclaration", + "scope": 1129, + "src": "4500:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1119, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4500:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1122, + "mutability": "mutable", + "name": "to", + "nameLocation": "4522:2:3", + "nodeType": "VariableDeclaration", + "scope": 1129, + "src": "4514:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1121, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4514:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1124, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4534:7:3", + "nodeType": "VariableDeclaration", + "scope": 1129, + "src": "4526:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1123, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4526:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1126, + "mutability": "mutable", + "name": "data", + "nameLocation": "4558:4:3", + "nodeType": "VariableDeclaration", + "scope": 1129, + "src": "4543:19:3", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1125, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4543:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4499:64:3" + }, + "returnParameters": { + "id": 1128, + "nodeType": "ParameterList", + "parameters": [], + "src": "4572:0:3" + }, + "scope": 1130, + "src": "4474:99:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1131, + "src": "161:4414:3", + "usedErrors": [] + } + ], + "src": "33:4542:3" + }, + "id": 3 + }, + "contracts/ERC721/IERC721Enumerable.sol": { + "ast": { + "absolutePath": "contracts/ERC721/IERC721Enumerable.sol", + "exportedSymbols": { + "IERC165": [ + 68 + ], + "IERC721": [ + 1130 + ], + "IERC721Enumerable": [ + 1161 + ] + }, + "id": 1162, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1132, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:4" + }, + { + "absolutePath": "contracts/ERC721/IERC721.sol", + "file": "./IERC721.sol", + "id": 1133, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1162, + "sourceUnit": 1131, + "src": "58:23:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 1135, + "name": "IERC721", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1130, + "src": "251:7:4" + }, + "id": 1136, + "nodeType": "InheritanceSpecifier", + "src": "251:7:4" + } + ], + "canonicalName": "IERC721Enumerable", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 1134, + "nodeType": "StructuredDocumentation", + "src": "83:136:4", + "text": " @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n @dev See https://eips.ethereum.org/EIPS/eip-721" + }, + "fullyImplemented": false, + "id": 1161, + "linearizedBaseContracts": [ + 1161, + 1130, + 68 + ], + "name": "IERC721Enumerable", + "nameLocation": "230:17:4", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 1137, + "nodeType": "StructuredDocumentation", + "src": "266:82:4", + "text": " @dev Returns the total amount of tokens stored by the contract." + }, + "functionSelector": "18160ddd", + "id": 1142, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "362:11:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1138, + "nodeType": "ParameterList", + "parameters": [], + "src": "373:2:4" + }, + "returnParameters": { + "id": 1141, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1140, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1142, + "src": "399:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1139, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "399:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "398:9:4" + }, + "scope": 1161, + "src": "353:55:4", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1143, + "nodeType": "StructuredDocumentation", + "src": "414:171:4", + "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": 1152, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenOfOwnerByIndex", + "nameLocation": "599:19:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1148, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1145, + "mutability": "mutable", + "name": "owner", + "nameLocation": "627:5:4", + "nodeType": "VariableDeclaration", + "scope": 1152, + "src": "619:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1144, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "619:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1147, + "mutability": "mutable", + "name": "index", + "nameLocation": "642:5:4", + "nodeType": "VariableDeclaration", + "scope": 1152, + "src": "634:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1146, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "634:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "618:30:4" + }, + "returnParameters": { + "id": 1151, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1150, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "680:7:4", + "nodeType": "VariableDeclaration", + "scope": 1152, + "src": "672:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1149, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "672:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "671:17:4" + }, + "scope": 1161, + "src": "590:99:4", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1153, + "nodeType": "StructuredDocumentation", + "src": "695:164:4", + "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": 1160, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenByIndex", + "nameLocation": "873:12:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1156, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1155, + "mutability": "mutable", + "name": "index", + "nameLocation": "894:5:4", + "nodeType": "VariableDeclaration", + "scope": 1160, + "src": "886:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1154, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "886:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "885:15:4" + }, + "returnParameters": { + "id": 1159, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1158, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1160, + "src": "924:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1157, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "924:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "923:9:4" + }, + "scope": 1161, + "src": "864:69:4", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1162, + "src": "220:715:4", + "usedErrors": [] + } + ], + "src": "33:902:4" + }, + "id": 4 + }, + "contracts/ERC721/IERC721Metadata.sol": { + "ast": { + "absolutePath": "contracts/ERC721/IERC721Metadata.sol", + "exportedSymbols": { + "IERC165": [ + 68 + ], + "IERC721": [ + 1130 + ], + "IERC721Metadata": [ + 1188 + ] + }, + "id": 1189, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1163, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:5" + }, + { + "absolutePath": "contracts/ERC721/IERC721.sol", + "file": "./IERC721.sol", + "id": 1164, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1189, + "sourceUnit": 1131, + "src": "58:23:5", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 1166, + "name": "IERC721", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1130, + "src": "246:7:5" + }, + "id": 1167, + "nodeType": "InheritanceSpecifier", + "src": "246:7:5" + } + ], + "canonicalName": "IERC721Metadata", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 1165, + "nodeType": "StructuredDocumentation", + "src": "83:133:5", + "text": " @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721" + }, + "fullyImplemented": false, + "id": 1188, + "linearizedBaseContracts": [ + 1188, + 1130, + 68 + ], + "name": "IERC721Metadata", + "nameLocation": "227:15:5", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 1168, + "nodeType": "StructuredDocumentation", + "src": "261:58:5", + "text": " @dev Returns the token collection name." + }, + "functionSelector": "06fdde03", + "id": 1173, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "333:4:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1169, + "nodeType": "ParameterList", + "parameters": [], + "src": "337:2:5" + }, + "returnParameters": { + "id": 1172, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1171, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1173, + "src": "363:13:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1170, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "363:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "362:15:5" + }, + "scope": 1188, + "src": "324:54:5", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1174, + "nodeType": "StructuredDocumentation", + "src": "384:60:5", + "text": " @dev Returns the token collection symbol." + }, + "functionSelector": "95d89b41", + "id": 1179, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "458:6:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1175, + "nodeType": "ParameterList", + "parameters": [], + "src": "464:2:5" + }, + "returnParameters": { + "id": 1178, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1177, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1179, + "src": "490:13:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1176, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "490:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "489:15:5" + }, + "scope": 1188, + "src": "449:56:5", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1180, + "nodeType": "StructuredDocumentation", + "src": "511:90:5", + "text": " @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token." + }, + "functionSelector": "c87b56dd", + "id": 1187, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nameLocation": "615:8:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1183, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1182, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "632:7:5", + "nodeType": "VariableDeclaration", + "scope": 1187, + "src": "624:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1181, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "624:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "623:17:5" + }, + "returnParameters": { + "id": 1186, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1185, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1187, + "src": "664:13:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1184, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "664:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "663:15:5" + }, + "scope": 1188, + "src": "606:73:5", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1189, + "src": "217:464:5", + "usedErrors": [] + } + ], + "src": "33:648:5" + }, + "id": 5 + }, + "contracts/ERC721/IERC721Receiver.sol": { + "ast": { + "absolutePath": "contracts/ERC721/IERC721Receiver.sol", + "exportedSymbols": { + "IERC721Receiver": [ + 1206 + ] + }, + "id": 1207, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1190, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:6" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC721Receiver", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 1191, + "nodeType": "StructuredDocumentation", + "src": "58:152:6", + "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": 1206, + "linearizedBaseContracts": [ + 1206 + ], + "name": "IERC721Receiver", + "nameLocation": "221:15:6", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 1192, + "nodeType": "StructuredDocumentation", + "src": "243:485:6", + "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": 1205, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "onERC721Received", + "nameLocation": "742:16:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1201, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1194, + "mutability": "mutable", + "name": "operator", + "nameLocation": "767:8:6", + "nodeType": "VariableDeclaration", + "scope": 1205, + "src": "759:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1193, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "759:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1196, + "mutability": "mutable", + "name": "from", + "nameLocation": "785:4:6", + "nodeType": "VariableDeclaration", + "scope": 1205, + "src": "777:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1195, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "777:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1198, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "799:7:6", + "nodeType": "VariableDeclaration", + "scope": 1205, + "src": "791:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1197, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "791:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1200, + "mutability": "mutable", + "name": "data", + "nameLocation": "823:4:6", + "nodeType": "VariableDeclaration", + "scope": 1205, + "src": "808:19:6", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1199, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "808:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "758:70:6" + }, + "returnParameters": { + "id": 1204, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1203, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1205, + "src": "847:6:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1202, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "847:6:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "846:8:6" + }, + "scope": 1206, + "src": "733:122:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1207, + "src": "211:646:6", + "usedErrors": [] + } + ], + "src": "33:824:6" + }, + "id": 6 + }, + "contracts/ERC721/V8_0_0/Common/Context.sol": { + "ast": { + "absolutePath": "contracts/ERC721/V8_0_0/Common/Context.sol", + "exportedSymbols": { + "Context": [ + 1229 + ] + }, + "id": 1230, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1208, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:7" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "Context", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 1229, + "linearizedBaseContracts": [ + 1229 + ], + "name": "Context", + "nameLocation": "576:7:7", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1216, + "nodeType": "Block", + "src": "652:34:7", + "statements": [ + { + "expression": { + "expression": { + "id": 1213, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "669:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "669:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1212, + "id": 1215, + "nodeType": "Return", + "src": "662:17:7" + } + ] + }, + "id": 1217, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nameLocation": "599:10:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1209, + "nodeType": "ParameterList", + "parameters": [], + "src": "609:2:7" + }, + "returnParameters": { + "id": 1212, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1211, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1217, + "src": "643:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1210, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "643:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "642:9:7" + }, + "scope": 1229, + "src": "590:96:7", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1227, + "nodeType": "Block", + "src": "759:165:7", + "statements": [ + { + "expression": { + "id": 1222, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "769:4:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$1229", + "typeString": "contract Context" + } + }, + "id": 1223, + "nodeType": "ExpressionStatement", + "src": "769:4:7" + }, + { + "expression": { + "expression": { + "id": 1224, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "909:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "src": "909:8:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "functionReturnParameters": 1221, + "id": 1226, + "nodeType": "Return", + "src": "902:15:7" + } + ] + }, + "id": 1228, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nameLocation": "701:8:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1218, + "nodeType": "ParameterList", + "parameters": [], + "src": "709:2:7" + }, + "returnParameters": { + "id": 1221, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1220, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1228, + "src": "743:14:7", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1219, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "743:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "742:16:7" + }, + "scope": 1229, + "src": "692:232:7", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 1230, + "src": "558:368:7", + "usedErrors": [] + } + ], + "src": "33:893:7" + }, + "id": 7 + }, + "contracts/ERC721/V8_0_0/Governance/AccessControl.sol": { + "ast": { + "absolutePath": "contracts/ERC721/V8_0_0/Governance/AccessControl.sol", + "exportedSymbols": { + "AccessControl": [ + 1515 + ], + "Address": [ + 1811 + ], + "Context": [ + 1229 + ], + "EnumerableSet": [ + 2906 + ] + }, + "id": 1516, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1231, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:8" + }, + { + "absolutePath": "contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol", + "file": "../Utils/EnumerableSet.sol", + "id": 1232, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1516, + "sourceUnit": 2907, + "src": "58:36:8", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/ERC721/V8_0_0/Utils/Address.sol", + "file": "../Utils/Address.sol", + "id": 1233, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1516, + "sourceUnit": 1812, + "src": "95:30:8", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/ERC721/V8_0_0/Common/Context.sol", + "file": "../Common/Context.sol", + "id": 1234, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1516, + "sourceUnit": 1230, + "src": "126:31:8", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 1236, + "name": "Context", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1229, + "src": "1471:7:8" + }, + "id": 1237, + "nodeType": "InheritanceSpecifier", + "src": "1471:7:8" + } + ], + "canonicalName": "AccessControl", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 1235, + "nodeType": "StructuredDocumentation", + "src": "159:1276:8", + "text": " @dev Contract module that allows children to implement role-based access\n control mechanisms.\n Roles are referred to by their `bytes32` identifier. These should be exposed\n in the external API and be unique. The best way to achieve this is by\n using `public constant` hash digests:\n ```\n bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n ```\n Roles can be used to represent a set of permissions. To restrict access to a\n function call, use {hasRole}:\n ```\n function foo() public {\n require(hasRole(MY_ROLE, msg.sender));\n ...\n }\n ```\n Roles can be granted and revoked dynamically via the {grantRole} and\n {revokeRole} functions. Each role has an associated admin role, and only\n accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n that only accounts with this role will be able to grant or revoke other\n roles. More complex role relationships can be created by using\n {_setRoleAdmin}.\n WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n grant and revoke this role. Extra precautions should be taken to secure\n accounts that have been granted it." + }, + "fullyImplemented": true, + "id": 1515, + "linearizedBaseContracts": [ + 1515, + 1229 + ], + "name": "AccessControl", + "nameLocation": "1454:13:8", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1241, + "libraryName": { + "id": 1238, + "name": "EnumerableSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2906, + "src": "1491:13:8" + }, + "nodeType": "UsingForDirective", + "src": "1485:49:8", + "typeName": { + "id": 1240, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1239, + "name": "EnumerableSet.AddressSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2679, + "src": "1509:24:8" + }, + "referencedDeclaration": 2679, + "src": "1509:24:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$2679_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + } + }, + { + "id": 1244, + "libraryName": { + "id": 1242, + "name": "Address", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1811, + "src": "1545:7:8" + }, + "nodeType": "UsingForDirective", + "src": "1539:26:8", + "typeName": { + "id": 1243, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1557:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "canonicalName": "AccessControl.RoleData", + "id": 1250, + "members": [ + { + "constant": false, + "id": 1247, + "mutability": "mutable", + "name": "members", + "nameLocation": "1622:7:8", + "nodeType": "VariableDeclaration", + "scope": 1250, + "src": "1597:32:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$2679_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 1246, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1245, + "name": "EnumerableSet.AddressSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2679, + "src": "1597:24:8" + }, + "referencedDeclaration": 2679, + "src": "1597:24:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$2679_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1249, + "mutability": "mutable", + "name": "adminRole", + "nameLocation": "1647:9:8", + "nodeType": "VariableDeclaration", + "scope": 1250, + "src": "1639:17:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1248, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1639:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "name": "RoleData", + "nameLocation": "1578:8:8", + "nodeType": "StructDefinition", + "scope": 1515, + "src": "1571:92:8", + "visibility": "public" + }, + { + "constant": false, + "id": 1255, + "mutability": "mutable", + "name": "_roles", + "nameLocation": "1707:6:8", + "nodeType": "VariableDeclaration", + "scope": 1515, + "src": "1669:44:8", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1250_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData)" + }, + "typeName": { + "id": 1254, + "keyType": { + "id": 1251, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1678:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1669:29:8", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1250_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData)" + }, + "valueType": { + "id": 1253, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1252, + "name": "RoleData", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1250, + "src": "1689:8:8" + }, + "referencedDeclaration": 1250, + "src": "1689:8:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$1250_storage_ptr", + "typeString": "struct AccessControl.RoleData" + } + } + }, + "visibility": "private" + }, + { + "constant": true, + "functionSelector": "a217fddf", + "id": 1258, + "mutability": "constant", + "name": "DEFAULT_ADMIN_ROLE", + "nameLocation": "1744:18:8", + "nodeType": "VariableDeclaration", + "scope": 1515, + "src": "1720:49:8", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1256, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1720:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "30783030", + "id": 1257, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1765:4:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x00" + }, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": { + "id": 1259, + "nodeType": "StructuredDocumentation", + "src": "1846:292:8", + "text": " @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n {RoleAdminChanged} not being emitted signaling this.\n _Available since v3.1._" + }, + "id": 1267, + "name": "RoleAdminChanged", + "nameLocation": "2149:16:8", + "nodeType": "EventDefinition", + "parameters": { + "id": 1266, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1261, + "indexed": true, + "mutability": "mutable", + "name": "role", + "nameLocation": "2182:4:8", + "nodeType": "VariableDeclaration", + "scope": 1267, + "src": "2166:20:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1260, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2166:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1263, + "indexed": true, + "mutability": "mutable", + "name": "previousAdminRole", + "nameLocation": "2204:17:8", + "nodeType": "VariableDeclaration", + "scope": 1267, + "src": "2188:33:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1262, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2188:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1265, + "indexed": true, + "mutability": "mutable", + "name": "newAdminRole", + "nameLocation": "2239:12:8", + "nodeType": "VariableDeclaration", + "scope": 1267, + "src": "2223:28:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1264, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2223:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2165:87:8" + }, + "src": "2143:110:8" + }, + { + "anonymous": false, + "documentation": { + "id": 1268, + "nodeType": "StructuredDocumentation", + "src": "2259:198:8", + "text": " @dev Emitted when `account` is granted `role`.\n `sender` is the account that originated the contract call, an admin role\n bearer except when using {_setupRole}." + }, + "id": 1276, + "name": "RoleGranted", + "nameLocation": "2468:11:8", + "nodeType": "EventDefinition", + "parameters": { + "id": 1275, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1270, + "indexed": true, + "mutability": "mutable", + "name": "role", + "nameLocation": "2496:4:8", + "nodeType": "VariableDeclaration", + "scope": 1276, + "src": "2480:20:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1269, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2480:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1272, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nameLocation": "2518:7:8", + "nodeType": "VariableDeclaration", + "scope": 1276, + "src": "2502:23:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1271, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2502:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1274, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "2543:6:8", + "nodeType": "VariableDeclaration", + "scope": 1276, + "src": "2527:22:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1273, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2527:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2479:71:8" + }, + "src": "2462:89:8" + }, + { + "anonymous": false, + "documentation": { + "id": 1277, + "nodeType": "StructuredDocumentation", + "src": "2557:275:8", + "text": " @dev Emitted when `account` is revoked `role`.\n `sender` is the account that originated the contract call:\n - if using `revokeRole`, it is the admin role bearer\n - if using `renounceRole`, it is the role bearer (i.e. `account`)" + }, + "id": 1285, + "name": "RoleRevoked", + "nameLocation": "2843:11:8", + "nodeType": "EventDefinition", + "parameters": { + "id": 1284, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1279, + "indexed": true, + "mutability": "mutable", + "name": "role", + "nameLocation": "2871:4:8", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "2855:20:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1278, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2855:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1281, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nameLocation": "2893:7:8", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "2877:23:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1280, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2877:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1283, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "2918:6:8", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "2902:22:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1282, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2902:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2854:71:8" + }, + "src": "2837:89:8" + }, + { + "body": { + "id": 1303, + "nodeType": "Block", + "src": "3088:62:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1300, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1290, + "src": "3135:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "expression": { + "baseExpression": { + "id": 1295, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1255, + "src": "3105:6:8", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1250_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 1297, + "indexExpression": { + "id": 1296, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1288, + "src": "3112:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3105:12:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$1250_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 1298, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "members", + "nodeType": "MemberAccess", + "referencedDeclaration": 1247, + "src": "3105:20:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$2679_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 1299, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 2760, + "src": "3105:29:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$2679_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$2679_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)" + } + }, + "id": 1301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3105:38:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1294, + "id": 1302, + "nodeType": "Return", + "src": "3098:45:8" + } + ] + }, + "documentation": { + "id": 1286, + "nodeType": "StructuredDocumentation", + "src": "2932:76:8", + "text": " @dev Returns `true` if `account` has been granted `role`." + }, + "functionSelector": "91d14854", + "id": 1304, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasRole", + "nameLocation": "3022:7:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1291, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1288, + "mutability": "mutable", + "name": "role", + "nameLocation": "3038:4:8", + "nodeType": "VariableDeclaration", + "scope": 1304, + "src": "3030:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1287, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3030:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1290, + "mutability": "mutable", + "name": "account", + "nameLocation": "3052:7:8", + "nodeType": "VariableDeclaration", + "scope": 1304, + "src": "3044:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1289, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3044:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3029:31:8" + }, + "returnParameters": { + "id": 1294, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1293, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1304, + "src": "3082:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1292, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3082:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3081:6:8" + }, + "scope": 1515, + "src": "3013:137:8", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1319, + "nodeType": "Block", + "src": "3390:53:8", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "baseExpression": { + "id": 1312, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1255, + "src": "3407:6:8", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1250_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 1314, + "indexExpression": { + "id": 1313, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1307, + "src": "3414:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3407:12:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$1250_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 1315, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "members", + "nodeType": "MemberAccess", + "referencedDeclaration": 1247, + "src": "3407:20:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$2679_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 1316, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": 2775, + "src": "3407:27:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$2679_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$2679_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)" + } + }, + "id": 1317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3407:29:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1311, + "id": 1318, + "nodeType": "Return", + "src": "3400:36:8" + } + ] + }, + "documentation": { + "id": 1305, + "nodeType": "StructuredDocumentation", + "src": "3156:157:8", + "text": " @dev Returns the number of accounts that have `role`. Can be used\n together with {getRoleMember} to enumerate all bearers of a role." + }, + "functionSelector": "ca15c873", + "id": 1320, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoleMemberCount", + "nameLocation": "3327:18:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1308, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1307, + "mutability": "mutable", + "name": "role", + "nameLocation": "3354:4:8", + "nodeType": "VariableDeclaration", + "scope": 1320, + "src": "3346:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1306, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3346:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3345:14:8" + }, + "returnParameters": { + "id": 1311, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1310, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1320, + "src": "3381:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1309, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3381:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3380:9:8" + }, + "scope": 1515, + "src": "3318:125:8", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1338, + "nodeType": "Block", + "src": "4110:54:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1335, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "4151:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "expression": { + "baseExpression": { + "id": 1330, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1255, + "src": "4127:6:8", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1250_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 1332, + "indexExpression": { + "id": 1331, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1323, + "src": "4134:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4127:12:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$1250_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 1333, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "members", + "nodeType": "MemberAccess", + "referencedDeclaration": 1247, + "src": "4127:20:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$2679_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 1334, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "at", + "nodeType": "MemberAccess", + "referencedDeclaration": 2802, + "src": "4127:23:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$2679_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$2679_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)" + } + }, + "id": 1336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4127:30:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1329, + "id": 1337, + "nodeType": "Return", + "src": "4120:37:8" + } + ] + }, + "documentation": { + "id": 1321, + "nodeType": "StructuredDocumentation", + "src": "3449:574:8", + "text": " @dev Returns one of the accounts that have `role`. `index` must be a\n value between 0 and {getRoleMemberCount}, non-inclusive.\n Role bearers are not sorted in any particular way, and their ordering may\n change at any point.\n WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n you perform all queries on the same block. See the following\n https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n for more information." + }, + "functionSelector": "9010d07c", + "id": 1339, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoleMember", + "nameLocation": "4037:13:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1323, + "mutability": "mutable", + "name": "role", + "nameLocation": "4059:4:8", + "nodeType": "VariableDeclaration", + "scope": 1339, + "src": "4051:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1322, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4051:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1325, + "mutability": "mutable", + "name": "index", + "nameLocation": "4073:5:8", + "nodeType": "VariableDeclaration", + "scope": 1339, + "src": "4065:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1324, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4065:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4050:29:8" + }, + "returnParameters": { + "id": 1329, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1328, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1339, + "src": "4101:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1327, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4101:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4100:9:8" + }, + "scope": 1515, + "src": "4028:136:8", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1352, + "nodeType": "Block", + "src": "4411:46:8", + "statements": [ + { + "expression": { + "expression": { + "baseExpression": { + "id": 1347, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1255, + "src": "4428:6:8", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1250_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 1349, + "indexExpression": { + "id": 1348, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1342, + "src": "4435:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4428:12:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$1250_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 1350, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "adminRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 1249, + "src": "4428:22:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 1346, + "id": 1351, + "nodeType": "Return", + "src": "4421:29:8" + } + ] + }, + "documentation": { + "id": 1340, + "nodeType": "StructuredDocumentation", + "src": "4170:170:8", + "text": " @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {_setRoleAdmin}." + }, + "functionSelector": "248a9ca3", + "id": 1353, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoleAdmin", + "nameLocation": "4354:12:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1343, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1342, + "mutability": "mutable", + "name": "role", + "nameLocation": "4375:4:8", + "nodeType": "VariableDeclaration", + "scope": 1353, + "src": "4367:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1341, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4367:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4366:14:8" + }, + "returnParameters": { + "id": 1346, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1345, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1353, + "src": "4402:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1344, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4402:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4401:9:8" + }, + "scope": 1515, + "src": "4345:112:8", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1378, + "nodeType": "Block", + "src": "4772:158:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 1363, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1255, + "src": "4798:6:8", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1250_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 1365, + "indexExpression": { + "id": 1364, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1356, + "src": "4805:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4798:12:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$1250_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 1366, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "adminRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 1249, + "src": "4798:22:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1367, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1217, + "src": "4822:10:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4822:12:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1362, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1304, + "src": "4790:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 1369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4790:45:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e74", + "id": 1370, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4837:49:8", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811", + "typeString": "literal_string \"AccessControl: sender must be an admin to grant\"" + }, + "value": "AccessControl: sender must be an admin to grant" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811", + "typeString": "literal_string \"AccessControl: sender must be an admin to grant\"" + } + ], + "id": 1361, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4782:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4782:105:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1372, + "nodeType": "ExpressionStatement", + "src": "4782:105:8" + }, + { + "expression": { + "arguments": [ + { + "id": 1374, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1356, + "src": "4909:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 1375, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "4915:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1373, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1490, + "src": "4898:10:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4898:25:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1377, + "nodeType": "ExpressionStatement", + "src": "4898:25:8" + } + ] + }, + "documentation": { + "id": 1354, + "nodeType": "StructuredDocumentation", + "src": "4463:239:8", + "text": " @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role." + }, + "functionSelector": "2f2ff15d", + "id": 1379, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "grantRole", + "nameLocation": "4716:9:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1359, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1356, + "mutability": "mutable", + "name": "role", + "nameLocation": "4734:4:8", + "nodeType": "VariableDeclaration", + "scope": 1379, + "src": "4726:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1355, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4726:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1358, + "mutability": "mutable", + "name": "account", + "nameLocation": "4748:7:8", + "nodeType": "VariableDeclaration", + "scope": 1379, + "src": "4740:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1357, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4740:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4725:31:8" + }, + "returnParameters": { + "id": 1360, + "nodeType": "ParameterList", + "parameters": [], + "src": "4772:0:8" + }, + "scope": 1515, + "src": "4707:223:8", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 1404, + "nodeType": "Block", + "src": "5230:160:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 1389, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1255, + "src": "5256:6:8", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1250_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 1391, + "indexExpression": { + "id": 1390, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1382, + "src": "5263:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5256:12:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$1250_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 1392, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "adminRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 1249, + "src": "5256:22:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1393, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1217, + "src": "5280:10:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5280:12:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1388, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1304, + "src": "5248:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 1395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5248:45:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65", + "id": 1396, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5295:50:8", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3", + "typeString": "literal_string \"AccessControl: sender must be an admin to revoke\"" + }, + "value": "AccessControl: sender must be an admin to revoke" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3", + "typeString": "literal_string \"AccessControl: sender must be an admin to revoke\"" + } + ], + "id": 1387, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5240:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5240:106:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1398, + "nodeType": "ExpressionStatement", + "src": "5240:106:8" + }, + { + "expression": { + "arguments": [ + { + "id": 1400, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1382, + "src": "5369:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 1401, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1384, + "src": "5375:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1399, + "name": "_revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1514, + "src": "5357:11:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5357:26:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1403, + "nodeType": "ExpressionStatement", + "src": "5357:26:8" + } + ] + }, + "documentation": { + "id": 1380, + "nodeType": "StructuredDocumentation", + "src": "4936:223:8", + "text": " @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role." + }, + "functionSelector": "d547741f", + "id": 1405, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "revokeRole", + "nameLocation": "5173:10:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1385, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1382, + "mutability": "mutable", + "name": "role", + "nameLocation": "5192:4:8", + "nodeType": "VariableDeclaration", + "scope": 1405, + "src": "5184:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1381, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5184:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1384, + "mutability": "mutable", + "name": "account", + "nameLocation": "5206:7:8", + "nodeType": "VariableDeclaration", + "scope": 1405, + "src": "5198:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1383, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5198:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5183:31:8" + }, + "returnParameters": { + "id": 1386, + "nodeType": "ParameterList", + "parameters": [], + "src": "5230:0:8" + }, + "scope": 1515, + "src": "5164:226:8", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 1426, + "nodeType": "Block", + "src": "5949:137:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1414, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1410, + "src": "5967:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1415, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1217, + "src": "5978:10:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5978:12:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5967:23:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66", + "id": 1418, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5992:49:8", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b", + "typeString": "literal_string \"AccessControl: can only renounce roles for self\"" + }, + "value": "AccessControl: can only renounce roles for self" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b", + "typeString": "literal_string \"AccessControl: can only renounce roles for self\"" + } + ], + "id": 1413, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5959:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5959:83:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1420, + "nodeType": "ExpressionStatement", + "src": "5959:83:8" + }, + { + "expression": { + "arguments": [ + { + "id": 1422, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1408, + "src": "6065:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 1423, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1410, + "src": "6071:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1421, + "name": "_revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1514, + "src": "6053:11:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6053:26:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1425, + "nodeType": "ExpressionStatement", + "src": "6053:26:8" + } + ] + }, + "documentation": { + "id": 1406, + "nodeType": "StructuredDocumentation", + "src": "5396:480:8", + "text": " @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been granted `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `account`." + }, + "functionSelector": "36568abe", + "id": 1427, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renounceRole", + "nameLocation": "5890:12:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1411, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1408, + "mutability": "mutable", + "name": "role", + "nameLocation": "5911:4:8", + "nodeType": "VariableDeclaration", + "scope": 1427, + "src": "5903:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1407, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5903:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1410, + "mutability": "mutable", + "name": "account", + "nameLocation": "5925:7:8", + "nodeType": "VariableDeclaration", + "scope": 1427, + "src": "5917:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1409, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5917:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5902:31:8" + }, + "returnParameters": { + "id": 1412, + "nodeType": "ParameterList", + "parameters": [], + "src": "5949:0:8" + }, + "scope": 1515, + "src": "5881:205:8", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 1440, + "nodeType": "Block", + "src": "6719:42:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1436, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1430, + "src": "6740:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 1437, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1432, + "src": "6746:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1435, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1490, + "src": "6729:10:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1438, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6729:25:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1439, + "nodeType": "ExpressionStatement", + "src": "6729:25:8" + } + ] + }, + "documentation": { + "id": 1428, + "nodeType": "StructuredDocumentation", + "src": "6092:554:8", + "text": " @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event. Note that unlike {grantRole}, this function doesn't perform any\n checks on the calling account.\n [WARNING]\n ====\n This function should only be called from the constructor when setting\n up the initial roles for the system.\n Using this function in any other way is effectively circumventing the admin\n system imposed by {AccessControl}.\n ====" + }, + "id": 1441, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setupRole", + "nameLocation": "6660:10:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1433, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1430, + "mutability": "mutable", + "name": "role", + "nameLocation": "6679:4:8", + "nodeType": "VariableDeclaration", + "scope": 1441, + "src": "6671:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1429, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6671:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1432, + "mutability": "mutable", + "name": "account", + "nameLocation": "6693:7:8", + "nodeType": "VariableDeclaration", + "scope": 1441, + "src": "6685:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1431, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6685:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6670:31:8" + }, + "returnParameters": { + "id": 1434, + "nodeType": "ParameterList", + "parameters": [], + "src": "6719:0:8" + }, + "scope": 1515, + "src": "6651:110:8", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1465, + "nodeType": "Block", + "src": "6959:123:8", + "statements": [ + { + "eventCall": { + "arguments": [ + { + "id": 1450, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1444, + "src": "6991:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "baseExpression": { + "id": 1451, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1255, + "src": "6997:6:8", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1250_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 1453, + "indexExpression": { + "id": 1452, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1444, + "src": "7004:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6997:12:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$1250_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 1454, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "adminRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 1249, + "src": "6997:22:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 1455, + "name": "adminRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1446, + "src": "7021:9:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1449, + "name": "RoleAdminChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "6974:16:8", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,bytes32,bytes32)" + } + }, + "id": 1456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6974:57:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1457, + "nodeType": "EmitStatement", + "src": "6969:62:8" + }, + { + "expression": { + "id": 1463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 1458, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1255, + "src": "7041:6:8", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1250_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 1460, + "indexExpression": { + "id": 1459, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1444, + "src": "7048:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7041:12:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$1250_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 1461, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "adminRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 1249, + "src": "7041:22:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1462, + "name": "adminRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1446, + "src": "7066:9:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "7041:34:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1464, + "nodeType": "ExpressionStatement", + "src": "7041:34:8" + } + ] + }, + "documentation": { + "id": 1442, + "nodeType": "StructuredDocumentation", + "src": "6767:114:8", + "text": " @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event." + }, + "id": 1466, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setRoleAdmin", + "nameLocation": "6895:13:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1447, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1444, + "mutability": "mutable", + "name": "role", + "nameLocation": "6917:4:8", + "nodeType": "VariableDeclaration", + "scope": 1466, + "src": "6909:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1443, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6909:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1446, + "mutability": "mutable", + "name": "adminRole", + "nameLocation": "6931:9:8", + "nodeType": "VariableDeclaration", + "scope": 1466, + "src": "6923:17:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1445, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6923:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6908:33:8" + }, + "returnParameters": { + "id": 1448, + "nodeType": "ParameterList", + "parameters": [], + "src": "6959:0:8" + }, + "scope": 1515, + "src": "6886:196:8", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1489, + "nodeType": "Block", + "src": "7147:125:8", + "statements": [ + { + "condition": { + "arguments": [ + { + "id": 1478, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1470, + "src": "7186:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "expression": { + "baseExpression": { + "id": 1473, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1255, + "src": "7161:6:8", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1250_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 1475, + "indexExpression": { + "id": 1474, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1468, + "src": "7168:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7161:12:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$1250_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 1476, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "members", + "nodeType": "MemberAccess", + "referencedDeclaration": 1247, + "src": "7161:20:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$2679_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 1477, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2706, + "src": "7161:24:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$2679_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$2679_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 1479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7161:33:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1488, + "nodeType": "IfStatement", + "src": "7157:109:8", + "trueBody": { + "id": 1487, + "nodeType": "Block", + "src": "7196:70:8", + "statements": [ + { + "eventCall": { + "arguments": [ + { + "id": 1481, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1468, + "src": "7227:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 1482, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1470, + "src": "7233:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1483, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1217, + "src": "7242:10:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7242:12:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1480, + "name": "RoleGranted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1276, + "src": "7215:11:8", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$", + "typeString": "function (bytes32,address,address)" + } + }, + "id": 1485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7215:40:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1486, + "nodeType": "EmitStatement", + "src": "7210:45:8" + } + ] + } + } + ] + }, + "id": 1490, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_grantRole", + "nameLocation": "7097:10:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1471, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1468, + "mutability": "mutable", + "name": "role", + "nameLocation": "7116:4:8", + "nodeType": "VariableDeclaration", + "scope": 1490, + "src": "7108:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1467, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7108:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1470, + "mutability": "mutable", + "name": "account", + "nameLocation": "7130:7:8", + "nodeType": "VariableDeclaration", + "scope": 1490, + "src": "7122:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1469, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7122:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7107:31:8" + }, + "returnParameters": { + "id": 1472, + "nodeType": "ParameterList", + "parameters": [], + "src": "7147:0:8" + }, + "scope": 1515, + "src": "7088:184:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1513, + "nodeType": "Block", + "src": "7338:128:8", + "statements": [ + { + "condition": { + "arguments": [ + { + "id": 1502, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1494, + "src": "7380:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "expression": { + "baseExpression": { + "id": 1497, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1255, + "src": "7352:6:8", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1250_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 1499, + "indexExpression": { + "id": 1498, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1492, + "src": "7359:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7352:12:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$1250_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 1500, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "members", + "nodeType": "MemberAccess", + "referencedDeclaration": 1247, + "src": "7352:20:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$2679_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 1501, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 2733, + "src": "7352:27:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$2679_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$2679_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 1503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7352:36:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1512, + "nodeType": "IfStatement", + "src": "7348:112:8", + "trueBody": { + "id": 1511, + "nodeType": "Block", + "src": "7390:70:8", + "statements": [ + { + "eventCall": { + "arguments": [ + { + "id": 1505, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1492, + "src": "7421:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 1506, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1494, + "src": "7427:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1507, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1217, + "src": "7436:10:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7436:12:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1504, + "name": "RoleRevoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1285, + "src": "7409:11:8", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$", + "typeString": "function (bytes32,address,address)" + } + }, + "id": 1509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7409:40:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1510, + "nodeType": "EmitStatement", + "src": "7404:45:8" + } + ] + } + } + ] + }, + "id": 1514, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_revokeRole", + "nameLocation": "7287:11:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1495, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1492, + "mutability": "mutable", + "name": "role", + "nameLocation": "7307:4:8", + "nodeType": "VariableDeclaration", + "scope": 1514, + "src": "7299:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1491, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7299:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1494, + "mutability": "mutable", + "name": "account", + "nameLocation": "7321:7:8", + "nodeType": "VariableDeclaration", + "scope": 1514, + "src": "7313:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1493, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7313:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7298:31:8" + }, + "returnParameters": { + "id": 1496, + "nodeType": "ParameterList", + "parameters": [], + "src": "7338:0:8" + }, + "scope": 1515, + "src": "7278:188:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 1516, + "src": "1436:6032:8", + "usedErrors": [] + } + ], + "src": "33:7435:8" + }, + "id": 8 + }, + "contracts/ERC721/V8_0_0/Utils/Address.sol": { + "ast": { + "absolutePath": "contracts/ERC721/V8_0_0/Utils/Address.sol", + "exportedSymbols": { + "Address": [ + 1811 + ] + }, + "id": 1812, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1517, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:9" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Address", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 1518, + "nodeType": "StructuredDocumentation", + "src": "58:67:9", + "text": " @dev Collection of functions related to the address type" + }, + "fullyImplemented": true, + "id": 1811, + "linearizedBaseContracts": [ + 1811 + ], + "name": "Address", + "nameLocation": "134:7:9", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1534, + "nodeType": "Block", + "src": "784:347:9", + "statements": [ + { + "assignments": [ + 1527 + ], + "declarations": [ + { + "constant": false, + "id": 1527, + "mutability": "mutable", + "name": "size", + "nameLocation": "989:4:9", + "nodeType": "VariableDeclaration", + "scope": 1534, + "src": "981:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1526, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "981:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1528, + "nodeType": "VariableDeclarationStatement", + "src": "981:12:9" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "1068:32:9", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1070:28:9", + "value": { + "arguments": [ + { + "name": "account", + "nodeType": "YulIdentifier", + "src": "1090:7:9" + } + ], + "functionName": { + "name": "extcodesize", + "nodeType": "YulIdentifier", + "src": "1078:11:9" + }, + "nodeType": "YulFunctionCall", + "src": "1078:20:9" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1070:4:9" + } + ] + } + ] + }, + "evmVersion": "london", + "externalReferences": [ + { + "declaration": 1521, + "isOffset": false, + "isSlot": false, + "src": "1090:7:9", + "valueSize": 1 + }, + { + "declaration": 1527, + "isOffset": false, + "isSlot": false, + "src": "1070:4:9", + "valueSize": 1 + } + ], + "id": 1529, + "nodeType": "InlineAssembly", + "src": "1059:41:9" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1530, + "name": "size", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1527, + "src": "1116:4:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1531, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1123:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1116:8:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1525, + "id": 1533, + "nodeType": "Return", + "src": "1109:15:9" + } + ] + }, + "documentation": { + "id": 1519, + "nodeType": "StructuredDocumentation", + "src": "148:565:9", + "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": 1535, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isContract", + "nameLocation": "727:10:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1522, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1521, + "mutability": "mutable", + "name": "account", + "nameLocation": "746:7:9", + "nodeType": "VariableDeclaration", + "scope": 1535, + "src": "738:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1520, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "738:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "737:17:9" + }, + "returnParameters": { + "id": 1525, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1524, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1535, + "src": "778:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1523, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "778:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "777:6:9" + }, + "scope": 1811, + "src": "718:413:9", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1568, + "nodeType": "Block", + "src": "2119:320:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 1546, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2145:4:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$1811", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$1811", + "typeString": "library Address" + } + ], + "id": 1545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2137:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1544, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2137:7:9", + "typeDescriptions": {} + } + }, + "id": 1547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2137:13:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "2137:21:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 1549, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1540, + "src": "2162:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2137:31:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365", + "id": 1551, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2170:31:9", + "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": 1543, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2129:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2129:73:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1553, + "nodeType": "ExpressionStatement", + "src": "2129:73:9" + }, + { + "assignments": [ + 1555, + null + ], + "declarations": [ + { + "constant": false, + "id": 1555, + "mutability": "mutable", + "name": "success", + "nameLocation": "2296:7:9", + "nodeType": "VariableDeclaration", + "scope": 1568, + "src": "2291:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1554, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2291:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + null + ], + "id": 1562, + "initialValue": { + "arguments": [ + { + "hexValue": "", + "id": 1560, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2341:2:9", + "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": 1556, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1538, + "src": "2309:9:9", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 1557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "src": "2309:14:9", + "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": 1559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 1558, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1540, + "src": "2332:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "2309:31:9", + "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": 1561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2309:35:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2290:54:9" + }, + { + "expression": { + "arguments": [ + { + "id": 1564, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1555, + "src": "2362:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564", + "id": 1565, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2371:60:9", + "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": 1563, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2354:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2354:78:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1567, + "nodeType": "ExpressionStatement", + "src": "2354:78:9" + } + ] + }, + "documentation": { + "id": 1536, + "nodeType": "StructuredDocumentation", + "src": "1137:906:9", + "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": 1569, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sendValue", + "nameLocation": "2057:9:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1541, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1538, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "2083:9:9", + "nodeType": "VariableDeclaration", + "scope": 1569, + "src": "2067:25:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 1537, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2067:15:9", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1540, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2102:6:9", + "nodeType": "VariableDeclaration", + "scope": 1569, + "src": "2094:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1539, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2094:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2066:43:9" + }, + "returnParameters": { + "id": 1542, + "nodeType": "ParameterList", + "parameters": [], + "src": "2119:0:9" + }, + "scope": 1811, + "src": "2048:391:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1585, + "nodeType": "Block", + "src": "3269:82:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1580, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1572, + "src": "3297:6:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1581, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1574, + "src": "3305:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564", + "id": 1582, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3311:32:9", + "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": 1579, + "name": "functionCall", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1586, + 1606 + ], + "referencedDeclaration": 1606, + "src": "3284:12:9", + "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": 1583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3284:60:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 1578, + "id": 1584, + "nodeType": "Return", + "src": "3277:67:9" + } + ] + }, + "documentation": { + "id": 1570, + "nodeType": "StructuredDocumentation", + "src": "2445:730:9", + "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": 1586, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCall", + "nameLocation": "3189:12:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1575, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1572, + "mutability": "mutable", + "name": "target", + "nameLocation": "3210:6:9", + "nodeType": "VariableDeclaration", + "scope": 1586, + "src": "3202:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1571, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3202:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1574, + "mutability": "mutable", + "name": "data", + "nameLocation": "3231:4:9", + "nodeType": "VariableDeclaration", + "scope": 1586, + "src": "3218:17:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1573, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3218:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3201:35:9" + }, + "returnParameters": { + "id": 1578, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1577, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1586, + "src": "3255:12:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1576, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3255:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3254:14:9" + }, + "scope": 1811, + "src": "3180:171:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1605, + "nodeType": "Block", + "src": "3690:76:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1599, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1589, + "src": "3729:6:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1600, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1591, + "src": "3737:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "30", + "id": 1601, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3743:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 1602, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1593, + "src": "3746:12:9", + "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": 1598, + "name": "functionCallWithValue", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1626, + 1676 + ], + "referencedDeclaration": 1676, + "src": "3707:21:9", + "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": 1603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3707:52:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 1597, + "id": 1604, + "nodeType": "Return", + "src": "3700:59:9" + } + ] + }, + "documentation": { + "id": 1587, + "nodeType": "StructuredDocumentation", + "src": "3357:211:9", + "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": 1606, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCall", + "nameLocation": "3582:12:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1594, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1589, + "mutability": "mutable", + "name": "target", + "nameLocation": "3603:6:9", + "nodeType": "VariableDeclaration", + "scope": 1606, + "src": "3595:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1588, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3595:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1591, + "mutability": "mutable", + "name": "data", + "nameLocation": "3624:4:9", + "nodeType": "VariableDeclaration", + "scope": 1606, + "src": "3611:17:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1590, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3611:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1593, + "mutability": "mutable", + "name": "errorMessage", + "nameLocation": "3644:12:9", + "nodeType": "VariableDeclaration", + "scope": 1606, + "src": "3630:26:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1592, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3630:6:9", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "3594:63:9" + }, + "returnParameters": { + "id": 1597, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1596, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1606, + "src": "3676:12:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1595, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3676:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3675:14:9" + }, + "scope": 1811, + "src": "3573:193:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1625, + "nodeType": "Block", + "src": "4241:111:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1619, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1609, + "src": "4280:6:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1620, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1611, + "src": "4288:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 1621, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1613, + "src": "4294:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564", + "id": 1622, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4301:43:9", + "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": 1618, + "name": "functionCallWithValue", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1626, + 1676 + ], + "referencedDeclaration": 1676, + "src": "4258:21:9", + "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": 1623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4258:87:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 1617, + "id": 1624, + "nodeType": "Return", + "src": "4251:94:9" + } + ] + }, + "documentation": { + "id": 1607, + "nodeType": "StructuredDocumentation", + "src": "3772:351:9", + "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": 1626, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCallWithValue", + "nameLocation": "4137:21:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1614, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1609, + "mutability": "mutable", + "name": "target", + "nameLocation": "4167:6:9", + "nodeType": "VariableDeclaration", + "scope": 1626, + "src": "4159:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1608, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4159:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1611, + "mutability": "mutable", + "name": "data", + "nameLocation": "4188:4:9", + "nodeType": "VariableDeclaration", + "scope": 1626, + "src": "4175:17:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1610, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4175:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1613, + "mutability": "mutable", + "name": "value", + "nameLocation": "4202:5:9", + "nodeType": "VariableDeclaration", + "scope": 1626, + "src": "4194:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1612, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4194:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4158:50:9" + }, + "returnParameters": { + "id": 1617, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1616, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1626, + "src": "4227:12:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1615, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4227:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4226:14:9" + }, + "scope": 1811, + "src": "4128:224:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1675, + "nodeType": "Block", + "src": "4741:382:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 1643, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4767:4:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$1811", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$1811", + "typeString": "library Address" + } + ], + "id": 1642, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4759:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1641, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4759:7:9", + "typeDescriptions": {} + } + }, + "id": 1644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4759:13:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "4759:21:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 1646, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1633, + "src": "4784:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4759:30:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c", + "id": 1648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4791:40:9", + "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": 1640, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4751:7:9", + "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": "4751:81:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1650, + "nodeType": "ExpressionStatement", + "src": "4751:81:9" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 1653, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1629, + "src": "4861:6:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1652, + "name": "isContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1535, + "src": "4850:10:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4850:18:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374", + "id": 1655, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4870:31:9", + "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": 1651, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4842:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4842:60:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1657, + "nodeType": "ExpressionStatement", + "src": "4842:60:9" + }, + { + "assignments": [ + 1659, + 1661 + ], + "declarations": [ + { + "constant": false, + "id": 1659, + "mutability": "mutable", + "name": "success", + "nameLocation": "4978:7:9", + "nodeType": "VariableDeclaration", + "scope": 1675, + "src": "4973:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1658, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4973:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1661, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "5000:10:9", + "nodeType": "VariableDeclaration", + "scope": 1675, + "src": "4987:23:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1660, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4987:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 1668, + "initialValue": { + "arguments": [ + { + "id": 1666, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1631, + "src": "5042:4:9", + "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": 1662, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1629, + "src": "5014:6:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "src": "5014:11:9", + "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": 1665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 1664, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1633, + "src": "5034:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "5014:27:9", + "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": 1667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5014:33:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4972:75:9" + }, + { + "expression": { + "arguments": [ + { + "id": 1670, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1659, + "src": "5082:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 1671, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1661, + "src": "5091:10:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 1672, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1635, + "src": "5103:12:9", + "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": 1669, + "name": "_verifyCallResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1810, + "src": "5064:17:9", + "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": 1673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5064:52:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 1639, + "id": 1674, + "nodeType": "Return", + "src": "5057:59:9" + } + ] + }, + "documentation": { + "id": 1627, + "nodeType": "StructuredDocumentation", + "src": "4358:237:9", + "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": 1676, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCallWithValue", + "nameLocation": "4609:21:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1636, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1629, + "mutability": "mutable", + "name": "target", + "nameLocation": "4639:6:9", + "nodeType": "VariableDeclaration", + "scope": 1676, + "src": "4631:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1628, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4631:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1631, + "mutability": "mutable", + "name": "data", + "nameLocation": "4660:4:9", + "nodeType": "VariableDeclaration", + "scope": 1676, + "src": "4647:17:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1630, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4647:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1633, + "mutability": "mutable", + "name": "value", + "nameLocation": "4674:5:9", + "nodeType": "VariableDeclaration", + "scope": 1676, + "src": "4666:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1632, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4666:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1635, + "mutability": "mutable", + "name": "errorMessage", + "nameLocation": "4695:12:9", + "nodeType": "VariableDeclaration", + "scope": 1676, + "src": "4681:26:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1634, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4681:6:9", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "4630:78:9" + }, + "returnParameters": { + "id": 1639, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1638, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1676, + "src": "4727:12:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1637, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4727:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4726:14:9" + }, + "scope": 1811, + "src": "4600:523:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1692, + "nodeType": "Block", + "src": "5400:97:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1687, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1679, + "src": "5436:6:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1688, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1681, + "src": "5444:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564", + "id": 1689, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5450:39:9", + "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": 1686, + "name": "functionStaticCall", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1693, + 1728 + ], + "referencedDeclaration": 1728, + "src": "5417:18:9", + "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": 1690, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5417:73:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 1685, + "id": 1691, + "nodeType": "Return", + "src": "5410:80:9" + } + ] + }, + "documentation": { + "id": 1677, + "nodeType": "StructuredDocumentation", + "src": "5129:166:9", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._" + }, + "id": 1693, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionStaticCall", + "nameLocation": "5309:18:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1682, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1679, + "mutability": "mutable", + "name": "target", + "nameLocation": "5336:6:9", + "nodeType": "VariableDeclaration", + "scope": 1693, + "src": "5328:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1678, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5328:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1681, + "mutability": "mutable", + "name": "data", + "nameLocation": "5357:4:9", + "nodeType": "VariableDeclaration", + "scope": 1693, + "src": "5344:17:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1680, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5344:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5327:35:9" + }, + "returnParameters": { + "id": 1685, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1684, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1693, + "src": "5386:12:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1683, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5386:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5385:14:9" + }, + "scope": 1811, + "src": "5300:197:9", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1727, + "nodeType": "Block", + "src": "5809:288:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 1707, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1696, + "src": "5838:6:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1706, + "name": "isContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1535, + "src": "5827:10:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5827:18:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374", + "id": 1709, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5847:38:9", + "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": 1705, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5819:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5819:67:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1711, + "nodeType": "ExpressionStatement", + "src": "5819:67:9" + }, + { + "assignments": [ + 1713, + 1715 + ], + "declarations": [ + { + "constant": false, + "id": 1713, + "mutability": "mutable", + "name": "success", + "nameLocation": "5962:7:9", + "nodeType": "VariableDeclaration", + "scope": 1727, + "src": "5957:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1712, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5957:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1715, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "5984:10:9", + "nodeType": "VariableDeclaration", + "scope": 1727, + "src": "5971:23:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1714, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5971:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 1720, + "initialValue": { + "arguments": [ + { + "id": 1718, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1698, + "src": "6016:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 1716, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1696, + "src": "5998:6:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "staticcall", + "nodeType": "MemberAccess", + "src": "5998:17:9", + "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": 1719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5998:23:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5956:65:9" + }, + { + "expression": { + "arguments": [ + { + "id": 1722, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1713, + "src": "6056:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 1723, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1715, + "src": "6065:10:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 1724, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1700, + "src": "6077:12:9", + "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": 1721, + "name": "_verifyCallResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1810, + "src": "6038:17:9", + "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": 1725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6038:52:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 1704, + "id": 1726, + "nodeType": "Return", + "src": "6031:59:9" + } + ] + }, + "documentation": { + "id": 1694, + "nodeType": "StructuredDocumentation", + "src": "5503:173:9", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._" + }, + "id": 1728, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionStaticCall", + "nameLocation": "5690:18:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1701, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1696, + "mutability": "mutable", + "name": "target", + "nameLocation": "5717:6:9", + "nodeType": "VariableDeclaration", + "scope": 1728, + "src": "5709:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1695, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5709:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1698, + "mutability": "mutable", + "name": "data", + "nameLocation": "5738:4:9", + "nodeType": "VariableDeclaration", + "scope": 1728, + "src": "5725:17:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1697, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5725:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1700, + "mutability": "mutable", + "name": "errorMessage", + "nameLocation": "5758:12:9", + "nodeType": "VariableDeclaration", + "scope": 1728, + "src": "5744:26:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1699, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5744:6:9", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "5708:63:9" + }, + "returnParameters": { + "id": 1704, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1703, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1728, + "src": "5795:12:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1702, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5795:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5794:14:9" + }, + "scope": 1811, + "src": "5681:416:9", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1744, + "nodeType": "Block", + "src": "6373:101:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1739, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1731, + "src": "6411:6:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1740, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "6419:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", + "id": 1741, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6425:41:9", + "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": 1738, + "name": "functionDelegateCall", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1745, + 1780 + ], + "referencedDeclaration": 1780, + "src": "6390:20:9", + "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": 1742, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6390:77:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 1737, + "id": 1743, + "nodeType": "Return", + "src": "6383:84:9" + } + ] + }, + "documentation": { + "id": 1729, + "nodeType": "StructuredDocumentation", + "src": "6103:168:9", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._" + }, + "id": 1745, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionDelegateCall", + "nameLocation": "6285:20:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1734, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1731, + "mutability": "mutable", + "name": "target", + "nameLocation": "6314:6:9", + "nodeType": "VariableDeclaration", + "scope": 1745, + "src": "6306:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1730, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6306:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1733, + "mutability": "mutable", + "name": "data", + "nameLocation": "6335:4:9", + "nodeType": "VariableDeclaration", + "scope": 1745, + "src": "6322:17:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1732, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6322:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6305:35:9" + }, + "returnParameters": { + "id": 1737, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1736, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1745, + "src": "6359:12:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1735, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6359:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6358:14:9" + }, + "scope": 1811, + "src": "6276:198:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1779, + "nodeType": "Block", + "src": "6785:292:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 1759, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1748, + "src": "6814:6:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1758, + "name": "isContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1535, + "src": "6803:10:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6803:18:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374", + "id": 1761, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6823:40:9", + "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": 1757, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6795:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6795:69:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1763, + "nodeType": "ExpressionStatement", + "src": "6795:69:9" + }, + { + "assignments": [ + 1765, + 1767 + ], + "declarations": [ + { + "constant": false, + "id": 1765, + "mutability": "mutable", + "name": "success", + "nameLocation": "6940:7:9", + "nodeType": "VariableDeclaration", + "scope": 1779, + "src": "6935:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1764, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6935:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1767, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "6962:10:9", + "nodeType": "VariableDeclaration", + "scope": 1779, + "src": "6949:23:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1766, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6949:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 1772, + "initialValue": { + "arguments": [ + { + "id": 1770, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1750, + "src": "6996:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 1768, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1748, + "src": "6976:6:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "delegatecall", + "nodeType": "MemberAccess", + "src": "6976:19:9", + "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": 1771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6976:25:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6934:67:9" + }, + { + "expression": { + "arguments": [ + { + "id": 1774, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1765, + "src": "7036:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 1775, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1767, + "src": "7045:10:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 1776, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1752, + "src": "7057:12:9", + "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": 1773, + "name": "_verifyCallResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1810, + "src": "7018:17:9", + "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": 1777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7018:52:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 1756, + "id": 1778, + "nodeType": "Return", + "src": "7011:59:9" + } + ] + }, + "documentation": { + "id": 1746, + "nodeType": "StructuredDocumentation", + "src": "6480:175:9", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._" + }, + "id": 1780, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionDelegateCall", + "nameLocation": "6669:20:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1753, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1748, + "mutability": "mutable", + "name": "target", + "nameLocation": "6698:6:9", + "nodeType": "VariableDeclaration", + "scope": 1780, + "src": "6690:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1747, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6690:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1750, + "mutability": "mutable", + "name": "data", + "nameLocation": "6719:4:9", + "nodeType": "VariableDeclaration", + "scope": 1780, + "src": "6706:17:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1749, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6706:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1752, + "mutability": "mutable", + "name": "errorMessage", + "nameLocation": "6739:12:9", + "nodeType": "VariableDeclaration", + "scope": 1780, + "src": "6725:26:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1751, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6725:6:9", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "6689:63:9" + }, + "returnParameters": { + "id": 1756, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1755, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1780, + "src": "6771:12:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1754, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6771:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6770:14:9" + }, + "scope": 1811, + "src": "6660:417:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1809, + "nodeType": "Block", + "src": "7212:596:9", + "statements": [ + { + "condition": { + "id": 1791, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1782, + "src": "7226:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1807, + "nodeType": "Block", + "src": "7283:519:9", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1795, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1784, + "src": "7367:10:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "7367:17:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1797, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7387:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7367:21:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1805, + "nodeType": "Block", + "src": "7739:53:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1802, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1786, + "src": "7764:12:9", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 1801, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "7757:6:9", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 1803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7757:20:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1804, + "nodeType": "ExpressionStatement", + "src": "7757:20:9" + } + ] + }, + "id": 1806, + "nodeType": "IfStatement", + "src": "7363:429:9", + "trueBody": { + "id": 1800, + "nodeType": "Block", + "src": "7390:343:9", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "7574:145:9", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7596:40:9", + "value": { + "arguments": [ + { + "name": "returndata", + "nodeType": "YulIdentifier", + "src": "7625:10:9" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "7619:5:9" + }, + "nodeType": "YulFunctionCall", + "src": "7619:17:9" + }, + "variables": [ + { + "name": "returndata_size", + "nodeType": "YulTypedName", + "src": "7600:15:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7668:2:9", + "type": "", + "value": "32" + }, + { + "name": "returndata", + "nodeType": "YulIdentifier", + "src": "7672:10:9" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7664:3:9" + }, + "nodeType": "YulFunctionCall", + "src": "7664:19:9" + }, + { + "name": "returndata_size", + "nodeType": "YulIdentifier", + "src": "7685:15:9" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7657:6:9" + }, + "nodeType": "YulFunctionCall", + "src": "7657:44:9" + }, + "nodeType": "YulExpressionStatement", + "src": "7657:44:9" + } + ] + }, + "evmVersion": "london", + "externalReferences": [ + { + "declaration": 1784, + "isOffset": false, + "isSlot": false, + "src": "7625:10:9", + "valueSize": 1 + }, + { + "declaration": 1784, + "isOffset": false, + "isSlot": false, + "src": "7672:10:9", + "valueSize": 1 + } + ], + "id": 1799, + "nodeType": "InlineAssembly", + "src": "7565:154:9" + } + ] + } + } + ] + }, + "id": 1808, + "nodeType": "IfStatement", + "src": "7222:580:9", + "trueBody": { + "id": 1794, + "nodeType": "Block", + "src": "7235:42:9", + "statements": [ + { + "expression": { + "id": 1792, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1784, + "src": "7256:10:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 1790, + "id": 1793, + "nodeType": "Return", + "src": "7249:17:9" + } + ] + } + } + ] + }, + "id": 1810, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_verifyCallResult", + "nameLocation": "7092:17:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1787, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1782, + "mutability": "mutable", + "name": "success", + "nameLocation": "7115:7:9", + "nodeType": "VariableDeclaration", + "scope": 1810, + "src": "7110:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1781, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7110:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1784, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "7137:10:9", + "nodeType": "VariableDeclaration", + "scope": 1810, + "src": "7124:23:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1783, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7124:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1786, + "mutability": "mutable", + "name": "errorMessage", + "nameLocation": "7163:12:9", + "nodeType": "VariableDeclaration", + "scope": 1810, + "src": "7149:26:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1785, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7149:6:9", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "7109:67:9" + }, + "returnParameters": { + "id": 1790, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1789, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1810, + "src": "7198:12:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1788, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7198:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "7197:14:9" + }, + "scope": 1811, + "src": "7083:725:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 1812, + "src": "126:7684:9", + "usedErrors": [] + } + ], + "src": "33:7777:9" + }, + "id": 9 + }, + "contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol": { + "ast": { + "absolutePath": "contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol", + "exportedSymbols": { + "EnumerableMap": [ + 2391 + ] + }, + "id": 2392, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1813, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:10" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "EnumerableMap", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 1814, + "nodeType": "StructuredDocumentation", + "src": "58:705:10", + "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": 2391, + "linearizedBaseContracts": [ + 2391 + ], + "name": "EnumerableMap", + "nameLocation": "772:13:10", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "EnumerableMap.MapEntry", + "id": 1819, + "members": [ + { + "constant": false, + "id": 1816, + "mutability": "mutable", + "name": "_key", + "nameLocation": "1284:4:10", + "nodeType": "VariableDeclaration", + "scope": 1819, + "src": "1276:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1815, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1276:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1818, + "mutability": "mutable", + "name": "_value", + "nameLocation": "1306:6:10", + "nodeType": "VariableDeclaration", + "scope": 1819, + "src": "1298:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1817, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1298:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "name": "MapEntry", + "nameLocation": "1257:8:10", + "nodeType": "StructDefinition", + "scope": 2391, + "src": "1250:69:10", + "visibility": "public" + }, + { + "canonicalName": "EnumerableMap.Map", + "id": 1828, + "members": [ + { + "constant": false, + "id": 1823, + "mutability": "mutable", + "name": "_entries", + "nameLocation": "1399:8:10", + "nodeType": "VariableDeclaration", + "scope": 1828, + "src": "1388:19:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$1819_storage_$dyn_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry[]" + }, + "typeName": { + "baseType": { + "id": 1821, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1820, + "name": "MapEntry", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1819, + "src": "1388:8:10" + }, + "referencedDeclaration": 1819, + "src": "1388:8:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$1819_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry" + } + }, + "id": 1822, + "nodeType": "ArrayTypeName", + "src": "1388:10:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$1819_storage_$dyn_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1827, + "mutability": "mutable", + "name": "_indexes", + "nameLocation": "1586:8:10", + "nodeType": "VariableDeclaration", + "scope": 1828, + "src": "1557:37:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "typeName": { + "id": 1826, + "keyType": { + "id": 1824, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1566:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1557:28:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "valueType": { + "id": 1825, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1577:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + } + ], + "name": "Map", + "nameLocation": "1332:3:10", + "nodeType": "StructDefinition", + "scope": 2391, + "src": "1325:276:10", + "visibility": "public" + }, + { + "body": { + "id": 1890, + "nodeType": "Block", + "src": "1910:596:10", + "statements": [ + { + "assignments": [ + 1842 + ], + "declarations": [ + { + "constant": false, + "id": 1842, + "mutability": "mutable", + "name": "keyIndex", + "nameLocation": "2026:8:10", + "nodeType": "VariableDeclaration", + "scope": 1890, + "src": "2018:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1841, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2018:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1847, + "initialValue": { + "baseExpression": { + "expression": { + "id": 1843, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1832, + "src": "2037:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 1844, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 1827, + "src": "2037:12:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 1846, + "indexExpression": { + "id": 1845, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1834, + "src": "2050:3:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2037:17:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2018:36:10" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1848, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1842, + "src": "2069:8:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1849, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2081:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2069:13:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1888, + "nodeType": "Block", + "src": "2408:92:10", + "statements": [ + { + "expression": { + "id": 1884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "expression": { + "id": 1875, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1832, + "src": "2422:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 1880, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 1823, + "src": "2422:12:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$1819_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 1881, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1877, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1842, + "src": "2435:8:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 1878, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2446:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2435:12:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2422:26:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$1819_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref" + } + }, + "id": 1882, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_value", + "nodeType": "MemberAccess", + "referencedDeclaration": 1818, + "src": "2422:33:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1883, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1836, + "src": "2458:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2422:41:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1885, + "nodeType": "ExpressionStatement", + "src": "2422:41:10" + }, + { + "expression": { + "hexValue": "66616c7365", + "id": 1886, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2484:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1840, + "id": 1887, + "nodeType": "Return", + "src": "2477:12:10" + } + ] + }, + "id": 1889, + "nodeType": "IfStatement", + "src": "2065:435:10", + "trueBody": { + "id": 1874, + "nodeType": "Block", + "src": "2084:318:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 1857, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1834, + "src": "2170:3:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 1858, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1836, + "src": "2183:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1856, + "name": "MapEntry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1819, + "src": "2153:8:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_MapEntry_$1819_storage_ptr_$", + "typeString": "type(struct EnumerableMap.MapEntry storage pointer)" + } + }, + "id": 1859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "_key", + "_value" + ], + "nodeType": "FunctionCall", + "src": "2153:38:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$1819_memory_ptr", + "typeString": "struct EnumerableMap.MapEntry memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_MapEntry_$1819_memory_ptr", + "typeString": "struct EnumerableMap.MapEntry memory" + } + ], + "expression": { + "expression": { + "id": 1851, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1832, + "src": "2135:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 1854, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 1823, + "src": "2135:12:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$1819_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 1855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "src": "2135:17:10", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_struct$_MapEntry_$1819_storage_$dyn_storage_ptr_$_t_struct$_MapEntry_$1819_storage_$returns$__$bound_to$_t_array$_t_struct$_MapEntry_$1819_storage_$dyn_storage_ptr_$", + "typeString": "function (struct EnumerableMap.MapEntry storage ref[] storage pointer,struct EnumerableMap.MapEntry storage ref)" + } + }, + "id": 1860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2135:57:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1861, + "nodeType": "ExpressionStatement", + "src": "2135:57:10" + }, + { + "expression": { + "id": 1870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 1862, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1832, + "src": "2327:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 1865, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 1827, + "src": "2327:12:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 1866, + "indexExpression": { + "id": 1864, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1834, + "src": "2340:3:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2327:17:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "expression": { + "id": 1867, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1832, + "src": "2347:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 1868, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 1823, + "src": "2347:12:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$1819_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 1869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2347:19:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2327:39:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1871, + "nodeType": "ExpressionStatement", + "src": "2327:39:10" + }, + { + "expression": { + "hexValue": "74727565", + "id": 1872, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2387:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1840, + "id": 1873, + "nodeType": "Return", + "src": "2380:11:10" + } + ] + } + } + ] + }, + "documentation": { + "id": 1829, + "nodeType": "StructuredDocumentation", + "src": "1607:216:10", + "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": 1891, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_set", + "nameLocation": "1837:4:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1837, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1832, + "mutability": "mutable", + "name": "map", + "nameLocation": "1854:3:10", + "nodeType": "VariableDeclaration", + "scope": 1891, + "src": "1842:15:10", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "id": 1831, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1830, + "name": "Map", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1828, + "src": "1842:3:10" + }, + "referencedDeclaration": 1828, + "src": "1842:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1834, + "mutability": "mutable", + "name": "key", + "nameLocation": "1867:3:10", + "nodeType": "VariableDeclaration", + "scope": 1891, + "src": "1859:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1833, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1859:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1836, + "mutability": "mutable", + "name": "value", + "nameLocation": "1880:5:10", + "nodeType": "VariableDeclaration", + "scope": 1891, + "src": "1872:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1835, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1872:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1841:45:10" + }, + "returnParameters": { + "id": 1840, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1839, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1891, + "src": "1904:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1838, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1904:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1903:6:10" + }, + "scope": 2391, + "src": "1828:678:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1973, + "nodeType": "Block", + "src": "2744:1447:10", + "statements": [ + { + "assignments": [ + 1903 + ], + "declarations": [ + { + "constant": false, + "id": 1903, + "mutability": "mutable", + "name": "keyIndex", + "nameLocation": "2860:8:10", + "nodeType": "VariableDeclaration", + "scope": 1973, + "src": "2852:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1902, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2852:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1908, + "initialValue": { + "baseExpression": { + "expression": { + "id": 1904, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1895, + "src": "2871:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 1905, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 1827, + "src": "2871:12:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 1907, + "indexExpression": { + "id": 1906, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1897, + "src": "2884:3:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2871:17:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2852:36:10" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1909, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1903, + "src": "2903:8:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 1910, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2915:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2903:13:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1971, + "nodeType": "Block", + "src": "4148:37:10", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 1969, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4169:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1901, + "id": 1970, + "nodeType": "Return", + "src": "4162:12:10" + } + ] + }, + "id": 1972, + "nodeType": "IfStatement", + "src": "2899:1286:10", + "trueBody": { + "id": 1968, + "nodeType": "Block", + "src": "2918:1224:10", + "statements": [ + { + "assignments": [ + 1913 + ], + "declarations": [ + { + "constant": false, + "id": 1913, + "mutability": "mutable", + "name": "toDeleteIndex", + "nameLocation": "3267:13:10", + "nodeType": "VariableDeclaration", + "scope": 1968, + "src": "3259:21:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1912, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3259:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1917, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1914, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1903, + "src": "3283:8:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 1915, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3294:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3283:12:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3259:36:10" + }, + { + "assignments": [ + 1919 + ], + "declarations": [ + { + "constant": false, + "id": 1919, + "mutability": "mutable", + "name": "lastIndex", + "nameLocation": "3317:9:10", + "nodeType": "VariableDeclaration", + "scope": 1968, + "src": "3309:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1918, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3309:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1925, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 1920, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1895, + "src": "3329:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 1921, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 1823, + "src": "3329:12:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$1819_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 1922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3329:19:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 1923, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3351:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3329:23:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3309:43:10" + }, + { + "assignments": [ + 1928 + ], + "declarations": [ + { + "constant": false, + "id": 1928, + "mutability": "mutable", + "name": "lastEntry", + "nameLocation": "3609:9:10", + "nodeType": "VariableDeclaration", + "scope": 1968, + "src": "3592:26:10", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$1819_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry" + }, + "typeName": { + "id": 1927, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1926, + "name": "MapEntry", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1819, + "src": "3592:8:10" + }, + "referencedDeclaration": 1819, + "src": "3592:8:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$1819_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry" + } + }, + "visibility": "internal" + } + ], + "id": 1933, + "initialValue": { + "baseExpression": { + "expression": { + "id": 1929, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1895, + "src": "3621:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 1930, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 1823, + "src": "3621:12:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$1819_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 1932, + "indexExpression": { + "id": 1931, + "name": "lastIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1919, + "src": "3634:9:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3621:23:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$1819_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3592:52:10" + }, + { + "expression": { + "id": 1940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 1934, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1895, + "src": "3736:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 1937, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 1823, + "src": "3736:12:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$1819_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 1938, + "indexExpression": { + "id": 1936, + "name": "toDeleteIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1913, + "src": "3749:13:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3736:27:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$1819_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1939, + "name": "lastEntry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1928, + "src": "3766:9:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$1819_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry storage pointer" + } + }, + "src": "3736:39:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$1819_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref" + } + }, + "id": 1941, + "nodeType": "ExpressionStatement", + "src": "3736:39:10" + }, + { + "expression": { + "id": 1951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 1942, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1895, + "src": "3841:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 1946, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 1827, + "src": "3841:12:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 1947, + "indexExpression": { + "expression": { + "id": 1944, + "name": "lastEntry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1928, + "src": "3854:9:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$1819_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry storage pointer" + } + }, + "id": 1945, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_key", + "nodeType": "MemberAccess", + "referencedDeclaration": 1816, + "src": "3854:14:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3841:28:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1948, + "name": "toDeleteIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1913, + "src": "3872:13:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 1949, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3888:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3872:17:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3841:48:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1952, + "nodeType": "ExpressionStatement", + "src": "3841:48:10" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 1953, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1895, + "src": "3995:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 1956, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 1823, + "src": "3995:12:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$1819_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 1957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pop", + "nodeType": "MemberAccess", + "src": "3995:16:10", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$_t_array$_t_struct$_MapEntry_$1819_storage_$dyn_storage_ptr_$returns$__$bound_to$_t_array$_t_struct$_MapEntry_$1819_storage_$dyn_storage_ptr_$", + "typeString": "function (struct EnumerableMap.MapEntry storage ref[] storage pointer)" + } + }, + "id": 1958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3995:18:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1959, + "nodeType": "ExpressionStatement", + "src": "3995:18:10" + }, + { + "expression": { + "id": 1964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "4081:24:10", + "subExpression": { + "baseExpression": { + "expression": { + "id": 1960, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1895, + "src": "4088:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 1961, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 1827, + "src": "4088:12:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 1963, + "indexExpression": { + "id": 1962, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1897, + "src": "4101:3:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4088:17:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1965, + "nodeType": "ExpressionStatement", + "src": "4081:24:10" + }, + { + "expression": { + "hexValue": "74727565", + "id": 1966, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4127:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1901, + "id": 1967, + "nodeType": "Return", + "src": "4120:11:10" + } + ] + } + } + ] + }, + "documentation": { + "id": 1892, + "nodeType": "StructuredDocumentation", + "src": "2512:157:10", + "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": 1974, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_remove", + "nameLocation": "2683:7:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1898, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1895, + "mutability": "mutable", + "name": "map", + "nameLocation": "2703:3:10", + "nodeType": "VariableDeclaration", + "scope": 1974, + "src": "2691:15:10", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "id": 1894, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1893, + "name": "Map", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1828, + "src": "2691:3:10" + }, + "referencedDeclaration": 1828, + "src": "2691:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1897, + "mutability": "mutable", + "name": "key", + "nameLocation": "2716:3:10", + "nodeType": "VariableDeclaration", + "scope": 1974, + "src": "2708:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1896, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2708:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2690:30:10" + }, + "returnParameters": { + "id": 1901, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1900, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1974, + "src": "2738:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1899, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2738:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2737:6:10" + }, + "scope": 2391, + "src": "2674:1517:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1992, + "nodeType": "Block", + "src": "4347:46:10", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 1985, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1978, + "src": "4364:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 1986, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 1827, + "src": "4364:12:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 1988, + "indexExpression": { + "id": 1987, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1980, + "src": "4377:3:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4364:17:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 1989, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4385:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4364:22:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1984, + "id": 1991, + "nodeType": "Return", + "src": "4357:29:10" + } + ] + }, + "documentation": { + "id": 1975, + "nodeType": "StructuredDocumentation", + "src": "4197:68:10", + "text": " @dev Returns true if the key is in the map. O(1)." + }, + "id": 1993, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_contains", + "nameLocation": "4279:9:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1981, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1978, + "mutability": "mutable", + "name": "map", + "nameLocation": "4301:3:10", + "nodeType": "VariableDeclaration", + "scope": 1993, + "src": "4289:15:10", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "id": 1977, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1976, + "name": "Map", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1828, + "src": "4289:3:10" + }, + "referencedDeclaration": 1828, + "src": "4289:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1980, + "mutability": "mutable", + "name": "key", + "nameLocation": "4314:3:10", + "nodeType": "VariableDeclaration", + "scope": 1993, + "src": "4306:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1979, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4306:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4288:30:10" + }, + "returnParameters": { + "id": 1984, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1983, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1993, + "src": "4341:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1982, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4341:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4340:6:10" + }, + "scope": 2391, + "src": "4270:123:10", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2006, + "nodeType": "Block", + "src": "4548:43:10", + "statements": [ + { + "expression": { + "expression": { + "expression": { + "id": 2002, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1997, + "src": "4565:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 2003, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 1823, + "src": "4565:12:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$1819_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 2004, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4565:19:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2001, + "id": 2005, + "nodeType": "Return", + "src": "4558:26:10" + } + ] + }, + "documentation": { + "id": 1994, + "nodeType": "StructuredDocumentation", + "src": "4399:79:10", + "text": " @dev Returns the number of key-value pairs in the map. O(1)." + }, + "id": 2007, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_length", + "nameLocation": "4492:7:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1998, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1997, + "mutability": "mutable", + "name": "map", + "nameLocation": "4512:3:10", + "nodeType": "VariableDeclaration", + "scope": 2007, + "src": "4500:15:10", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "id": 1996, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1995, + "name": "Map", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1828, + "src": "4500:3:10" + }, + "referencedDeclaration": 1828, + "src": "4500:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "visibility": "internal" + } + ], + "src": "4499:17:10" + }, + "returnParameters": { + "id": 2001, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2000, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2007, + "src": "4539:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1999, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4539:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4538:9:10" + }, + "scope": 2391, + "src": "4483:108:10", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2043, + "nodeType": "Block", + "src": "5019:189:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 2021, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2011, + "src": "5037:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 2022, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 1823, + "src": "5037:12:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$1819_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 2023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5037:19:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 2024, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2013, + "src": "5059:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5037:27:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e6473", + "id": 2026, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5066:36:10", + "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": 2020, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5029:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5029:74:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2028, + "nodeType": "ExpressionStatement", + "src": "5029:74:10" + }, + { + "assignments": [ + 2031 + ], + "declarations": [ + { + "constant": false, + "id": 2031, + "mutability": "mutable", + "name": "entry", + "nameLocation": "5131:5:10", + "nodeType": "VariableDeclaration", + "scope": 2043, + "src": "5114:22:10", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$1819_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry" + }, + "typeName": { + "id": 2030, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2029, + "name": "MapEntry", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1819, + "src": "5114:8:10" + }, + "referencedDeclaration": 1819, + "src": "5114:8:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$1819_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry" + } + }, + "visibility": "internal" + } + ], + "id": 2036, + "initialValue": { + "baseExpression": { + "expression": { + "id": 2032, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2011, + "src": "5139:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 2033, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 1823, + "src": "5139:12:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$1819_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 2035, + "indexExpression": { + "id": 2034, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2013, + "src": "5152:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5139:19:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$1819_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5114:44:10" + }, + { + "expression": { + "components": [ + { + "expression": { + "id": 2037, + "name": "entry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2031, + "src": "5176:5:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$1819_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry storage pointer" + } + }, + "id": 2038, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_key", + "nodeType": "MemberAccess", + "referencedDeclaration": 1816, + "src": "5176:10:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 2039, + "name": "entry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2031, + "src": "5188:5:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$1819_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry storage pointer" + } + }, + "id": 2040, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_value", + "nodeType": "MemberAccess", + "referencedDeclaration": 1818, + "src": "5188:12:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 2041, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5175:26:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$", + "typeString": "tuple(bytes32,bytes32)" + } + }, + "functionReturnParameters": 2019, + "id": 2042, + "nodeType": "Return", + "src": "5168:33:10" + } + ] + }, + "documentation": { + "id": 2008, + "nodeType": "StructuredDocumentation", + "src": "4596:333:10", + "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": 2044, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_at", + "nameLocation": "4943:3:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2014, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2011, + "mutability": "mutable", + "name": "map", + "nameLocation": "4959:3:10", + "nodeType": "VariableDeclaration", + "scope": 2044, + "src": "4947:15:10", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "id": 2010, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2009, + "name": "Map", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1828, + "src": "4947:3:10" + }, + "referencedDeclaration": 1828, + "src": "4947:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2013, + "mutability": "mutable", + "name": "index", + "nameLocation": "4972:5:10", + "nodeType": "VariableDeclaration", + "scope": 2044, + "src": "4964:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2012, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4964:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4946:32:10" + }, + "returnParameters": { + "id": 2019, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2016, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2044, + "src": "5001:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2015, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5001:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2018, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2044, + "src": "5010:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2017, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5010:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5000:18:10" + }, + "scope": 2391, + "src": "4934:274:10", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2082, + "nodeType": "Block", + "src": "5434:220:10", + "statements": [ + { + "assignments": [ + 2058 + ], + "declarations": [ + { + "constant": false, + "id": 2058, + "mutability": "mutable", + "name": "keyIndex", + "nameLocation": "5452:8:10", + "nodeType": "VariableDeclaration", + "scope": 2082, + "src": "5444:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2057, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5444:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2063, + "initialValue": { + "baseExpression": { + "expression": { + "id": 2059, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2048, + "src": "5463:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 2060, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 1827, + "src": "5463:12:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 2062, + "indexExpression": { + "id": 2061, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2050, + "src": "5476:3:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5463:17:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5444:36:10" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2064, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2058, + "src": "5494:8:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2065, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5506:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5494:13:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2071, + "nodeType": "IfStatement", + "src": "5490:36:10", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "66616c7365", + "id": 2067, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5517:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "hexValue": "30", + "id": 2068, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5524:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 2069, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5516:10:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 2056, + "id": 2070, + "nodeType": "Return", + "src": "5509:17:10" + } + }, + { + "expression": { + "components": [ + { + "hexValue": "74727565", + "id": 2072, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5580:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 2073, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2048, + "src": "5586:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 2074, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 1823, + "src": "5586:12:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$1819_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 2078, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2075, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2058, + "src": "5599:8:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 2076, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5610:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "5599:12:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5586:26:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$1819_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref" + } + }, + "id": 2079, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_value", + "nodeType": "MemberAccess", + "referencedDeclaration": 1818, + "src": "5586:33:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 2080, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5579:41:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes32_$", + "typeString": "tuple(bool,bytes32)" + } + }, + "functionReturnParameters": 2056, + "id": 2081, + "nodeType": "Return", + "src": "5572:48:10" + } + ] + }, + "documentation": { + "id": 2045, + "nodeType": "StructuredDocumentation", + "src": "5214:131:10", + "text": " @dev Tries to returns the value associated with `key`. O(1).\n Does not revert if `key` is not in the map." + }, + "id": 2083, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_tryGet", + "nameLocation": "5359:7:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2048, + "mutability": "mutable", + "name": "map", + "nameLocation": "5379:3:10", + "nodeType": "VariableDeclaration", + "scope": 2083, + "src": "5367:15:10", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "id": 2047, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2046, + "name": "Map", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1828, + "src": "5367:3:10" + }, + "referencedDeclaration": 1828, + "src": "5367:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2050, + "mutability": "mutable", + "name": "key", + "nameLocation": "5392:3:10", + "nodeType": "VariableDeclaration", + "scope": 2083, + "src": "5384:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2049, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5384:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5366:30:10" + }, + "returnParameters": { + "id": 2056, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2053, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2083, + "src": "5419:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2052, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5419:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2055, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2083, + "src": "5425:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2054, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5425:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5418:15:10" + }, + "scope": 2391, + "src": "5350:304:10", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2116, + "nodeType": "Block", + "src": "5881:232:10", + "statements": [ + { + "assignments": [ + 2095 + ], + "declarations": [ + { + "constant": false, + "id": 2095, + "mutability": "mutable", + "name": "keyIndex", + "nameLocation": "5899:8:10", + "nodeType": "VariableDeclaration", + "scope": 2116, + "src": "5891:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2094, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5891:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2100, + "initialValue": { + "baseExpression": { + "expression": { + "id": 2096, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2087, + "src": "5910:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 2097, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 1827, + "src": "5910:12:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 2099, + "indexExpression": { + "id": 2098, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "5923:3:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5910:17:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5891:36:10" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2102, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2095, + "src": "5945:8:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 2103, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5957:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5945:13:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "456e756d657261626c654d61703a206e6f6e6578697374656e74206b6579", + "id": 2105, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5960:32:10", + "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": 2101, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5937:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5937:56:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2107, + "nodeType": "ExpressionStatement", + "src": "5937:56:10" + }, + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 2108, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2087, + "src": "6046:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 2109, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 1823, + "src": "6046:12:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$1819_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 2113, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2110, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2095, + "src": "6059:8:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 2111, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6070:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "6059:12:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6046:26:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$1819_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref" + } + }, + "id": 2114, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_value", + "nodeType": "MemberAccess", + "referencedDeclaration": 1818, + "src": "6046:33:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2093, + "id": 2115, + "nodeType": "Return", + "src": "6039:40:10" + } + ] + }, + "documentation": { + "id": 2084, + "nodeType": "StructuredDocumentation", + "src": "5660:141:10", + "text": " @dev Returns the value associated with `key`. O(1).\n Requirements:\n - `key` must be in the map." + }, + "id": 2117, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_get", + "nameLocation": "5815:4:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2090, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2087, + "mutability": "mutable", + "name": "map", + "nameLocation": "5832:3:10", + "nodeType": "VariableDeclaration", + "scope": 2117, + "src": "5820:15:10", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "id": 2086, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2085, + "name": "Map", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1828, + "src": "5820:3:10" + }, + "referencedDeclaration": 1828, + "src": "5820:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2089, + "mutability": "mutable", + "name": "key", + "nameLocation": "5845:3:10", + "nodeType": "VariableDeclaration", + "scope": 2117, + "src": "5837:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2088, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5837:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5819:30:10" + }, + "returnParameters": { + "id": 2093, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2092, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2117, + "src": "5872:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2091, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5872:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5871:9:10" + }, + "scope": 2391, + "src": "5806:307:10", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2152, + "nodeType": "Block", + "src": "6498:212:10", + "statements": [ + { + "assignments": [ + 2131 + ], + "declarations": [ + { + "constant": false, + "id": 2131, + "mutability": "mutable", + "name": "keyIndex", + "nameLocation": "6516:8:10", + "nodeType": "VariableDeclaration", + "scope": 2152, + "src": "6508:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2130, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6508:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2136, + "initialValue": { + "baseExpression": { + "expression": { + "id": 2132, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2121, + "src": "6527:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 2133, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 1827, + "src": "6527:12:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 2135, + "indexExpression": { + "id": 2134, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2123, + "src": "6540:3:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6527:17:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6508:36:10" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2138, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2131, + "src": "6562:8:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 2139, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6574:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6562:13:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 2141, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2125, + "src": "6577:12:10", + "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": 2137, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6554:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6554:36:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2143, + "nodeType": "ExpressionStatement", + "src": "6554:36:10" + }, + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 2144, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2121, + "src": "6643:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 2145, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 1823, + "src": "6643:12:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$1819_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 2149, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2146, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2131, + "src": "6656:8:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 2147, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6667:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "6656:12:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6643:26:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$1819_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref" + } + }, + "id": 2150, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_value", + "nodeType": "MemberAccess", + "referencedDeclaration": 1818, + "src": "6643:33:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2129, + "id": 2151, + "nodeType": "Return", + "src": "6636:40:10" + } + ] + }, + "documentation": { + "id": 2118, + "nodeType": "StructuredDocumentation", + "src": "6119:271:10", + "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": 2153, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_get", + "nameLocation": "6404:4:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2126, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2121, + "mutability": "mutable", + "name": "map", + "nameLocation": "6421:3:10", + "nodeType": "VariableDeclaration", + "scope": 2153, + "src": "6409:15:10", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "id": 2120, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2119, + "name": "Map", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1828, + "src": "6409:3:10" + }, + "referencedDeclaration": 1828, + "src": "6409:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2123, + "mutability": "mutable", + "name": "key", + "nameLocation": "6434:3:10", + "nodeType": "VariableDeclaration", + "scope": 2153, + "src": "6426:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2122, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6426:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2125, + "mutability": "mutable", + "name": "errorMessage", + "nameLocation": "6453:12:10", + "nodeType": "VariableDeclaration", + "scope": 2153, + "src": "6439:26:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2124, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6439:6:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "6408:58:10" + }, + "returnParameters": { + "id": 2129, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2128, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2153, + "src": "6489:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2127, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6489:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6488:9:10" + }, + "scope": 2391, + "src": "6395:315:10", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "canonicalName": "EnumerableMap.UintToAddressMap", + "id": 2157, + "members": [ + { + "constant": false, + "id": 2156, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "6779:6:10", + "nodeType": "VariableDeclaration", + "scope": 2157, + "src": "6775:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "id": 2155, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2154, + "name": "Map", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1828, + "src": "6775:3:10" + }, + "referencedDeclaration": 1828, + "src": "6775:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "visibility": "internal" + } + ], + "name": "UintToAddressMap", + "nameLocation": "6748:16:10", + "nodeType": "StructDefinition", + "scope": 2391, + "src": "6741:51:10", + "visibility": "public" + }, + { + "body": { + "id": 2189, + "nodeType": "Block", + "src": "7114:88:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2171, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "7136:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 2172, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2156, + "src": "7136:10:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + }, + { + "arguments": [ + { + "id": 2175, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2163, + "src": "7156:3:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2174, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7148:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2173, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7148:7:10", + "typeDescriptions": {} + } + }, + "id": 2176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7148:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 2183, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2165, + "src": "7186:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2182, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7178:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 2181, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "7178:7:10", + "typeDescriptions": {} + } + }, + "id": 2184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7178:14:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 2180, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7170:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2179, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7170:7:10", + "typeDescriptions": {} + } + }, + "id": 2185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7170:23:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2178, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7162:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2177, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7162:7:10", + "typeDescriptions": {} + } + }, + "id": 2186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7162:32:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$1828_storage", + "typeString": "struct EnumerableMap.Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2170, + "name": "_set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1891, + "src": "7131:4:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Map_$1828_storage_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32,bytes32) returns (bool)" + } + }, + "id": 2187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7131:64:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2169, + "id": 2188, + "nodeType": "Return", + "src": "7124:71:10" + } + ] + }, + "documentation": { + "id": 2158, + "nodeType": "StructuredDocumentation", + "src": "6798:216:10", + "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": 2190, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "set", + "nameLocation": "7028:3:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2166, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2161, + "mutability": "mutable", + "name": "map", + "nameLocation": "7057:3:10", + "nodeType": "VariableDeclaration", + "scope": 2190, + "src": "7032:28:10", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "id": 2160, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2159, + "name": "UintToAddressMap", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2157, + "src": "7032:16:10" + }, + "referencedDeclaration": 2157, + "src": "7032:16:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2163, + "mutability": "mutable", + "name": "key", + "nameLocation": "7070:3:10", + "nodeType": "VariableDeclaration", + "scope": 2190, + "src": "7062:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2162, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7062:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2165, + "mutability": "mutable", + "name": "value", + "nameLocation": "7083:5:10", + "nodeType": "VariableDeclaration", + "scope": 2190, + "src": "7075:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2164, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7075:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7031:58:10" + }, + "returnParameters": { + "id": 2169, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2168, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2190, + "src": "7108:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2167, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7108:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "7107:6:10" + }, + "scope": 2391, + "src": "7019:183:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2210, + "nodeType": "Block", + "src": "7444:57:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2202, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2194, + "src": "7469:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 2203, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2156, + "src": "7469:10:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + }, + { + "arguments": [ + { + "id": 2206, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2196, + "src": "7489:3:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2205, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7481:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2204, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7481:7:10", + "typeDescriptions": {} + } + }, + "id": 2207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7481:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$1828_storage", + "typeString": "struct EnumerableMap.Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2201, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1974, + "src": "7461:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Map_$1828_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) returns (bool)" + } + }, + "id": 2208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7461:33:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2200, + "id": 2209, + "nodeType": "Return", + "src": "7454:40:10" + } + ] + }, + "documentation": { + "id": 2191, + "nodeType": "StructuredDocumentation", + "src": "7208:148:10", + "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": 2211, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "7370:6:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2197, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2194, + "mutability": "mutable", + "name": "map", + "nameLocation": "7402:3:10", + "nodeType": "VariableDeclaration", + "scope": 2211, + "src": "7377:28:10", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "id": 2193, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2192, + "name": "UintToAddressMap", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2157, + "src": "7377:16:10" + }, + "referencedDeclaration": 2157, + "src": "7377:16:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2196, + "mutability": "mutable", + "name": "key", + "nameLocation": "7415:3:10", + "nodeType": "VariableDeclaration", + "scope": 2211, + "src": "7407:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2195, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7407:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7376:43:10" + }, + "returnParameters": { + "id": 2200, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2199, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2211, + "src": "7438:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2198, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7438:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "7437:6:10" + }, + "scope": 2391, + "src": "7361:140:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2231, + "nodeType": "Block", + "src": "7670:59:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2223, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2215, + "src": "7697:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 2224, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2156, + "src": "7697:10:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + }, + { + "arguments": [ + { + "id": 2227, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2217, + "src": "7717:3:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2226, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7709:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2225, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7709:7:10", + "typeDescriptions": {} + } + }, + "id": 2228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7709:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$1828_storage", + "typeString": "struct EnumerableMap.Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2222, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1993, + "src": "7687:9:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$1828_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bool)" + } + }, + "id": 2229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7687:35:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2221, + "id": 2230, + "nodeType": "Return", + "src": "7680:42:10" + } + ] + }, + "documentation": { + "id": 2212, + "nodeType": "StructuredDocumentation", + "src": "7507:68:10", + "text": " @dev Returns true if the key is in the map. O(1)." + }, + "id": 2232, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "7589:8:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2218, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2215, + "mutability": "mutable", + "name": "map", + "nameLocation": "7623:3:10", + "nodeType": "VariableDeclaration", + "scope": 2232, + "src": "7598:28:10", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "id": 2214, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2213, + "name": "UintToAddressMap", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2157, + "src": "7598:16:10" + }, + "referencedDeclaration": 2157, + "src": "7598:16:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2217, + "mutability": "mutable", + "name": "key", + "nameLocation": "7636:3:10", + "nodeType": "VariableDeclaration", + "scope": 2232, + "src": "7628:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2216, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7628:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7597:43:10" + }, + "returnParameters": { + "id": 2221, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2220, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2232, + "src": "7664:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2219, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7664:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "7663:6:10" + }, + "scope": 2391, + "src": "7580:149:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2246, + "nodeType": "Block", + "src": "7890:43:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2242, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2236, + "src": "7915:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 2243, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2156, + "src": "7915:10:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$1828_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + ], + "id": 2241, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2007, + "src": "7907:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$1828_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableMap.Map storage pointer) view returns (uint256)" + } + }, + "id": 2244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7907:19:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2240, + "id": 2245, + "nodeType": "Return", + "src": "7900:26:10" + } + ] + }, + "documentation": { + "id": 2233, + "nodeType": "StructuredDocumentation", + "src": "7735:72:10", + "text": " @dev Returns the number of elements in the map. O(1)." + }, + "id": 2247, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "7821:6:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2237, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2236, + "mutability": "mutable", + "name": "map", + "nameLocation": "7853:3:10", + "nodeType": "VariableDeclaration", + "scope": 2247, + "src": "7828:28:10", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "id": 2235, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2234, + "name": "UintToAddressMap", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2157, + "src": "7828:16:10" + }, + "referencedDeclaration": 2157, + "src": "7828:16:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "visibility": "internal" + } + ], + "src": "7827:30:10" + }, + "returnParameters": { + "id": 2240, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2239, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2247, + "src": "7881:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2238, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7881:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7880:9:10" + }, + "scope": 2391, + "src": "7812:121:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2286, + "nodeType": "Block", + "src": "8359:135:10", + "statements": [ + { + "assignments": [ + 2261, + 2263 + ], + "declarations": [ + { + "constant": false, + "id": 2261, + "mutability": "mutable", + "name": "key", + "nameLocation": "8378:3:10", + "nodeType": "VariableDeclaration", + "scope": 2286, + "src": "8370:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2260, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8370:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2263, + "mutability": "mutable", + "name": "value", + "nameLocation": "8391:5:10", + "nodeType": "VariableDeclaration", + "scope": 2286, + "src": "8383:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2262, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8383:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2269, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 2265, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2251, + "src": "8404:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 2266, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2156, + "src": "8404:10:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + }, + { + "id": 2267, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2253, + "src": "8416:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$1828_storage", + "typeString": "struct EnumerableMap.Map storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2264, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2044, + "src": "8400:3:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$1828_storage_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Map storage pointer,uint256) view returns (bytes32,bytes32)" + } + }, + "id": 2268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8400:22:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$", + "typeString": "tuple(bytes32,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8369:53:10" + }, + { + "expression": { + "components": [ + { + "arguments": [ + { + "id": 2272, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2261, + "src": "8448:3:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2271, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8440:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2270, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8440:7:10", + "typeDescriptions": {} + } + }, + "id": 2273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8440:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 2280, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2263, + "src": "8478:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2279, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8470:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2278, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8470:7:10", + "typeDescriptions": {} + } + }, + "id": 2281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8470:14:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2277, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8462:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 2276, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "8462:7:10", + "typeDescriptions": {} + } + }, + "id": 2282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8462:23:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 2275, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8454:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2274, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8454:7:10", + "typeDescriptions": {} + } + }, + "id": 2283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8454:32:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 2284, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8439:48:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_address_$", + "typeString": "tuple(uint256,address)" + } + }, + "functionReturnParameters": 2259, + "id": 2285, + "nodeType": "Return", + "src": "8432:55:10" + } + ] + }, + "documentation": { + "id": 2248, + "nodeType": "StructuredDocumentation", + "src": "7938:318:10", + "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": 2287, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "8270:2:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2254, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2251, + "mutability": "mutable", + "name": "map", + "nameLocation": "8298:3:10", + "nodeType": "VariableDeclaration", + "scope": 2287, + "src": "8273:28:10", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "id": 2250, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2249, + "name": "UintToAddressMap", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2157, + "src": "8273:16:10" + }, + "referencedDeclaration": 2157, + "src": "8273:16:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2253, + "mutability": "mutable", + "name": "index", + "nameLocation": "8311:5:10", + "nodeType": "VariableDeclaration", + "scope": 2287, + "src": "8303:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2252, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8303:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8272:45:10" + }, + "returnParameters": { + "id": 2259, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2256, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2287, + "src": "8341:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2255, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8341:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2258, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2287, + "src": "8350:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2257, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8350:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8340:18:10" + }, + "scope": 2391, + "src": "8261:233:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2326, + "nodeType": "Block", + "src": "8771:142:10", + "statements": [ + { + "assignments": [ + 2301, + 2303 + ], + "declarations": [ + { + "constant": false, + "id": 2301, + "mutability": "mutable", + "name": "success", + "nameLocation": "8787:7:10", + "nodeType": "VariableDeclaration", + "scope": 2326, + "src": "8782:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2300, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8782:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2303, + "mutability": "mutable", + "name": "value", + "nameLocation": "8804:5:10", + "nodeType": "VariableDeclaration", + "scope": 2326, + "src": "8796:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2302, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8796:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2312, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 2305, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2291, + "src": "8821:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 2306, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2156, + "src": "8821:10:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + }, + { + "arguments": [ + { + "id": 2309, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2293, + "src": "8841:3:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2308, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8833:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2307, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8833:7:10", + "typeDescriptions": {} + } + }, + "id": 2310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8833:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$1828_storage", + "typeString": "struct EnumerableMap.Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2304, + "name": "_tryGet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2083, + "src": "8813:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$1828_storage_ptr_$_t_bytes32_$returns$_t_bool_$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bool,bytes32)" + } + }, + "id": 2311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8813:33:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes32_$", + "typeString": "tuple(bool,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8781:65:10" + }, + { + "expression": { + "components": [ + { + "id": 2313, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2301, + "src": "8864:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 2320, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "8897:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2319, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8889:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2318, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8889:7:10", + "typeDescriptions": {} + } + }, + "id": 2321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8889:14:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2317, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8881:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 2316, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "8881:7:10", + "typeDescriptions": {} + } + }, + "id": 2322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8881:23:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 2315, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8873:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2314, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8873:7:10", + "typeDescriptions": {} + } + }, + "id": 2323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8873:32:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 2324, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8863:43:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "functionReturnParameters": 2299, + "id": 2325, + "nodeType": "Return", + "src": "8856:50:10" + } + ] + }, + "documentation": { + "id": 2288, + "nodeType": "StructuredDocumentation", + "src": "8500:169:10", + "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": 2327, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryGet", + "nameLocation": "8683:6:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2294, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2291, + "mutability": "mutable", + "name": "map", + "nameLocation": "8715:3:10", + "nodeType": "VariableDeclaration", + "scope": 2327, + "src": "8690:28:10", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "id": 2290, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2289, + "name": "UintToAddressMap", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2157, + "src": "8690:16:10" + }, + "referencedDeclaration": 2157, + "src": "8690:16:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2293, + "mutability": "mutable", + "name": "key", + "nameLocation": "8728:3:10", + "nodeType": "VariableDeclaration", + "scope": 2327, + "src": "8720:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2292, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8720:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8689:43:10" + }, + "returnParameters": { + "id": 2299, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2296, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2327, + "src": "8756:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2295, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8756:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2298, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2327, + "src": "8762:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2297, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8762:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8755:15:10" + }, + "scope": 2391, + "src": "8674:239:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2356, + "nodeType": "Block", + "src": "9153:81:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 2345, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2331, + "src": "9199:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 2346, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2156, + "src": "9199:10:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + }, + { + "arguments": [ + { + "id": 2349, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2333, + "src": "9219:3:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2348, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9211:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2347, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9211:7:10", + "typeDescriptions": {} + } + }, + "id": 2350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9211:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$1828_storage", + "typeString": "struct EnumerableMap.Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2344, + "name": "_get", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2117, + 2153 + ], + "referencedDeclaration": 2117, + "src": "9194:4:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$1828_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bytes32)" + } + }, + "id": 2351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9194:30:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2343, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9186:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2342, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9186:7:10", + "typeDescriptions": {} + } + }, + "id": 2352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9186:39:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2341, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9178:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 2340, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "9178:7:10", + "typeDescriptions": {} + } + }, + "id": 2353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9178:48:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 2339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9170:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2338, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9170:7:10", + "typeDescriptions": {} + } + }, + "id": 2354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9170:57:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2337, + "id": 2355, + "nodeType": "Return", + "src": "9163:64:10" + } + ] + }, + "documentation": { + "id": 2328, + "nodeType": "StructuredDocumentation", + "src": "8919:141:10", + "text": " @dev Returns the value associated with `key`. O(1).\n Requirements:\n - `key` must be in the map." + }, + "id": 2357, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "get", + "nameLocation": "9074:3:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2334, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2331, + "mutability": "mutable", + "name": "map", + "nameLocation": "9103:3:10", + "nodeType": "VariableDeclaration", + "scope": 2357, + "src": "9078:28:10", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "id": 2330, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2329, + "name": "UintToAddressMap", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2157, + "src": "9078:16:10" + }, + "referencedDeclaration": 2157, + "src": "9078:16:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2333, + "mutability": "mutable", + "name": "key", + "nameLocation": "9116:3:10", + "nodeType": "VariableDeclaration", + "scope": 2357, + "src": "9108:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2332, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9108:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9077:43:10" + }, + "returnParameters": { + "id": 2337, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2336, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2357, + "src": "9144:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2335, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9144:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "9143:9:10" + }, + "scope": 2391, + "src": "9065:169:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2389, + "nodeType": "Block", + "src": "9630:95:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 2377, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2361, + "src": "9676:3:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 2378, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2156, + "src": "9676:10:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1828_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + }, + { + "arguments": [ + { + "id": 2381, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2363, + "src": "9696:3:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9688:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2379, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9688:7:10", + "typeDescriptions": {} + } + }, + "id": 2382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9688:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2383, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "9702:12:10", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$1828_storage", + "typeString": "struct EnumerableMap.Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 2376, + "name": "_get", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2117, + 2153 + ], + "referencedDeclaration": 2153, + "src": "9671:4:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$1828_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": 2384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9671:44:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2375, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9663:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2374, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9663:7:10", + "typeDescriptions": {} + } + }, + "id": 2385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9663:53:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2373, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9655:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 2372, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "9655:7:10", + "typeDescriptions": {} + } + }, + "id": 2386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9655:62:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 2371, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9647:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2370, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9647:7:10", + "typeDescriptions": {} + } + }, + "id": 2387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9647:71:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2369, + "id": 2388, + "nodeType": "Return", + "src": "9640:78:10" + } + ] + }, + "documentation": { + "id": 2358, + "nodeType": "StructuredDocumentation", + "src": "9240:269:10", + "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": 2390, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "get", + "nameLocation": "9523:3:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2366, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2361, + "mutability": "mutable", + "name": "map", + "nameLocation": "9552:3:10", + "nodeType": "VariableDeclaration", + "scope": 2390, + "src": "9527:28:10", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "id": 2360, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2359, + "name": "UintToAddressMap", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2157, + "src": "9527:16:10" + }, + "referencedDeclaration": 2157, + "src": "9527:16:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2157_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2363, + "mutability": "mutable", + "name": "key", + "nameLocation": "9565:3:10", + "nodeType": "VariableDeclaration", + "scope": 2390, + "src": "9557:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2362, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9557:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2365, + "mutability": "mutable", + "name": "errorMessage", + "nameLocation": "9584:12:10", + "nodeType": "VariableDeclaration", + "scope": 2390, + "src": "9570:26:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2364, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "9570:6:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "9526:71:10" + }, + "returnParameters": { + "id": 2369, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2368, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2390, + "src": "9621:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2367, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9621:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "9620:9:10" + }, + "scope": 2391, + "src": "9514:211:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 2392, + "src": "764:8963:10", + "usedErrors": [] + } + ], + "src": "33:9694:10" + }, + "id": 10 + }, + "contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol": { + "ast": { + "absolutePath": "contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol", + "exportedSymbols": { + "EnumerableSet": [ + 2906 + ] + }, + "id": 2907, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2393, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:11" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "EnumerableSet", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 2394, + "nodeType": "StructuredDocumentation", + "src": "58:686:11", + "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": 2906, + "linearizedBaseContracts": [ + 2906 + ], + "name": "EnumerableSet", + "nameLocation": "753:13:11", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "EnumerableSet.Set", + "id": 2402, + "members": [ + { + "constant": false, + "id": 2397, + "mutability": "mutable", + "name": "_values", + "nameLocation": "1277:7:11", + "nodeType": "VariableDeclaration", + "scope": 2402, + "src": "1267:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2395, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1267:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2396, + "nodeType": "ArrayTypeName", + "src": "1267:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2401, + "mutability": "mutable", + "name": "_indexes", + "nameLocation": "1447:8:11", + "nodeType": "VariableDeclaration", + "scope": 2402, + "src": "1418:37:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "typeName": { + "id": 2400, + "keyType": { + "id": 2398, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1427:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1418:28:11", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "valueType": { + "id": 2399, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1438:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + } + ], + "name": "Set", + "nameLocation": "1220:3:11", + "nodeType": "StructDefinition", + "scope": 2906, + "src": "1213:249:11", + "visibility": "public" + }, + { + "body": { + "id": 2443, + "nodeType": "Block", + "src": "1701:335:11", + "statements": [ + { + "condition": { + "id": 2417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1715:22:11", + "subExpression": { + "arguments": [ + { + "id": 2414, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2406, + "src": "1726:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + { + "id": 2415, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2408, + "src": "1731:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2413, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2544, + "src": "1716:9:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$2402_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 2416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1716:21:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2441, + "nodeType": "Block", + "src": "1993:37:11", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 2439, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2014:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 2412, + "id": 2440, + "nodeType": "Return", + "src": "2007:12:11" + } + ] + }, + "id": 2442, + "nodeType": "IfStatement", + "src": "1711:319:11", + "trueBody": { + "id": 2438, + "nodeType": "Block", + "src": "1739:248:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2423, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2408, + "src": "1770:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 2418, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2406, + "src": "1753:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 2421, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 2397, + "src": "1753:11:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 2422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "src": "1753:16:11", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$bound_to$_t_array$_t_bytes32_$dyn_storage_ptr_$", + "typeString": "function (bytes32[] storage pointer,bytes32)" + } + }, + "id": 2424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1753:23:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2425, + "nodeType": "ExpressionStatement", + "src": "1753:23:11" + }, + { + "expression": { + "id": 2434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 2426, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2406, + "src": "1911:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 2429, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 2401, + "src": "1911:12:11", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 2430, + "indexExpression": { + "id": 2428, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2408, + "src": "1924:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1911:19:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "expression": { + "id": 2431, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2406, + "src": "1933:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 2432, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 2397, + "src": "1933:11:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 2433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1933:18:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1911:40:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2435, + "nodeType": "ExpressionStatement", + "src": "1911:40:11" + }, + { + "expression": { + "hexValue": "74727565", + "id": 2436, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1972:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 2412, + "id": 2437, + "nodeType": "Return", + "src": "1965:11:11" + } + ] + } + } + ] + }, + "documentation": { + "id": 2403, + "nodeType": "StructuredDocumentation", + "src": "1468:159:11", + "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": 2444, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_add", + "nameLocation": "1641:4:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2409, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2406, + "mutability": "mutable", + "name": "set", + "nameLocation": "1658:3:11", + "nodeType": "VariableDeclaration", + "scope": 2444, + "src": "1646:15:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 2405, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2404, + "name": "Set", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2402, + "src": "1646:3:11" + }, + "referencedDeclaration": 2402, + "src": "1646:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2408, + "mutability": "mutable", + "name": "value", + "nameLocation": "1671:5:11", + "nodeType": "VariableDeclaration", + "scope": 2444, + "src": "1663:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2407, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1663:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1645:32:11" + }, + "returnParameters": { + "id": 2412, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2411, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2444, + "src": "1695:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2410, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1695:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1694:6:11" + }, + "scope": 2906, + "src": "1632:404:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2524, + "nodeType": "Block", + "src": "2276:1440:11", + "statements": [ + { + "assignments": [ + 2456 + ], + "declarations": [ + { + "constant": false, + "id": 2456, + "mutability": "mutable", + "name": "valueIndex", + "nameLocation": "2394:10:11", + "nodeType": "VariableDeclaration", + "scope": 2524, + "src": "2386:18:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2455, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2386:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2461, + "initialValue": { + "baseExpression": { + "expression": { + "id": 2457, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2448, + "src": "2407:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 2458, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 2401, + "src": "2407:12:11", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 2460, + "indexExpression": { + "id": 2459, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2450, + "src": "2420:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2407:19:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2386:40:11" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2462, + "name": "valueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2456, + "src": "2441:10:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 2463, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2455:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2441:15:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2522, + "nodeType": "Block", + "src": "3673:37:11", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 2520, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3694:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 2454, + "id": 2521, + "nodeType": "Return", + "src": "3687:12:11" + } + ] + }, + "id": 2523, + "nodeType": "IfStatement", + "src": "2437:1273:11", + "trueBody": { + "id": 2519, + "nodeType": "Block", + "src": "2458:1209:11", + "statements": [ + { + "assignments": [ + 2466 + ], + "declarations": [ + { + "constant": false, + "id": 2466, + "mutability": "mutable", + "name": "toDeleteIndex", + "nameLocation": "2806:13:11", + "nodeType": "VariableDeclaration", + "scope": 2519, + "src": "2798:21:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2465, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2798:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2470, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2467, + "name": "valueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2456, + "src": "2822:10:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 2468, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2835:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2822:14:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2798:38:11" + }, + { + "assignments": [ + 2472 + ], + "declarations": [ + { + "constant": false, + "id": 2472, + "mutability": "mutable", + "name": "lastIndex", + "nameLocation": "2858:9:11", + "nodeType": "VariableDeclaration", + "scope": 2519, + "src": "2850:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2471, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2850:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2478, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 2473, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2448, + "src": "2870:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 2474, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 2397, + "src": "2870:11:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 2475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2870:18:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 2476, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2891:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2870:22:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2850:42:11" + }, + { + "assignments": [ + 2480 + ], + "declarations": [ + { + "constant": false, + "id": 2480, + "mutability": "mutable", + "name": "lastvalue", + "nameLocation": "3140:9:11", + "nodeType": "VariableDeclaration", + "scope": 2519, + "src": "3132:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2479, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3132:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2485, + "initialValue": { + "baseExpression": { + "expression": { + "id": 2481, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2448, + "src": "3152:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 2482, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 2397, + "src": "3152:11:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 2484, + "indexExpression": { + "id": 2483, + "name": "lastIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2472, + "src": "3164:9:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3152:22:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3132:42:11" + }, + { + "expression": { + "id": 2492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 2486, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2448, + "src": "3266:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 2489, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 2397, + "src": "3266:11:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 2490, + "indexExpression": { + "id": 2488, + "name": "toDeleteIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2466, + "src": "3278:13:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3266:26:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2491, + "name": "lastvalue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2480, + "src": "3295:9:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3266:38:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2493, + "nodeType": "ExpressionStatement", + "src": "3266:38:11" + }, + { + "expression": { + "id": 2502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 2494, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2448, + "src": "3370:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 2497, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 2401, + "src": "3370:12:11", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 2498, + "indexExpression": { + "id": 2496, + "name": "lastvalue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2480, + "src": "3383:9:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3370:23:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2499, + "name": "toDeleteIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2466, + "src": "3396:13:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 2500, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3412:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3396:17:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3370:43:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2503, + "nodeType": "ExpressionStatement", + "src": "3370:43:11" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 2504, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2448, + "src": "3519:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 2507, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 2397, + "src": "3519:11:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 2508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pop", + "nodeType": "MemberAccess", + "src": "3519:15:11", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$returns$__$bound_to$_t_array$_t_bytes32_$dyn_storage_ptr_$", + "typeString": "function (bytes32[] storage pointer)" + } + }, + "id": 2509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3519:17:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2510, + "nodeType": "ExpressionStatement", + "src": "3519:17:11" + }, + { + "expression": { + "id": 2515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "3604:26:11", + "subExpression": { + "baseExpression": { + "expression": { + "id": 2511, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2448, + "src": "3611:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 2512, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 2401, + "src": "3611:12:11", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 2514, + "indexExpression": { + "id": 2513, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2450, + "src": "3624:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3611:19:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2516, + "nodeType": "ExpressionStatement", + "src": "3604:26:11" + }, + { + "expression": { + "hexValue": "74727565", + "id": 2517, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3652:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 2454, + "id": 2518, + "nodeType": "Return", + "src": "3645:11:11" + } + ] + } + } + ] + }, + "documentation": { + "id": 2445, + "nodeType": "StructuredDocumentation", + "src": "2042:157:11", + "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": 2525, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_remove", + "nameLocation": "2213:7:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2451, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2448, + "mutability": "mutable", + "name": "set", + "nameLocation": "2233:3:11", + "nodeType": "VariableDeclaration", + "scope": 2525, + "src": "2221:15:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 2447, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2446, + "name": "Set", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2402, + "src": "2221:3:11" + }, + "referencedDeclaration": 2402, + "src": "2221:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2450, + "mutability": "mutable", + "name": "value", + "nameLocation": "2246:5:11", + "nodeType": "VariableDeclaration", + "scope": 2525, + "src": "2238:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2449, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2238:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2220:32:11" + }, + "returnParameters": { + "id": 2454, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2453, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2525, + "src": "2270:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2452, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2270:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2269:6:11" + }, + "scope": 2906, + "src": "2204:1512:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2543, + "nodeType": "Block", + "src": "3876:48:11", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 2536, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2529, + "src": "3893:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 2537, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 2401, + "src": "3893:12:11", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 2539, + "indexExpression": { + "id": 2538, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2531, + "src": "3906:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3893:19:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 2540, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3916:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3893:24:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2535, + "id": 2542, + "nodeType": "Return", + "src": "3886:31:11" + } + ] + }, + "documentation": { + "id": 2526, + "nodeType": "StructuredDocumentation", + "src": "3722:70:11", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 2544, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_contains", + "nameLocation": "3806:9:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2532, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2529, + "mutability": "mutable", + "name": "set", + "nameLocation": "3828:3:11", + "nodeType": "VariableDeclaration", + "scope": 2544, + "src": "3816:15:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 2528, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2527, + "name": "Set", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2402, + "src": "3816:3:11" + }, + "referencedDeclaration": 2402, + "src": "3816:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2531, + "mutability": "mutable", + "name": "value", + "nameLocation": "3841:5:11", + "nodeType": "VariableDeclaration", + "scope": 2544, + "src": "3833:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2530, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3833:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3815:32:11" + }, + "returnParameters": { + "id": 2535, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2534, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2544, + "src": "3870:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2533, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3870:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3869:6:11" + }, + "scope": 2906, + "src": "3797:127:11", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2557, + "nodeType": "Block", + "src": "4070:42:11", + "statements": [ + { + "expression": { + "expression": { + "expression": { + "id": 2553, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2548, + "src": "4087:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 2554, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 2397, + "src": "4087:11:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 2555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4087:18:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2552, + "id": 2556, + "nodeType": "Return", + "src": "4080:25:11" + } + ] + }, + "documentation": { + "id": 2545, + "nodeType": "StructuredDocumentation", + "src": "3930:70:11", + "text": " @dev Returns the number of values on the set. O(1)." + }, + "id": 2558, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_length", + "nameLocation": "4014:7:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2549, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2548, + "mutability": "mutable", + "name": "set", + "nameLocation": "4034:3:11", + "nodeType": "VariableDeclaration", + "scope": 2558, + "src": "4022:15:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 2547, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2546, + "name": "Set", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2402, + "src": "4022:3:11" + }, + "referencedDeclaration": 2402, + "src": "4022:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "src": "4021:17:11" + }, + "returnParameters": { + "id": 2552, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2551, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2558, + "src": "4061:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2550, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4061:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4060:9:11" + }, + "scope": 2906, + "src": "4005:107:11", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2583, + "nodeType": "Block", + "src": "4520:125:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 2570, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2562, + "src": "4538:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 2571, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 2397, + "src": "4538:11:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 2572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4538:18:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 2573, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "4559:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4538:26:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473", + "id": 2575, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4566:36:11", + "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": 2569, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4530:7:11", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4530:73:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2577, + "nodeType": "ExpressionStatement", + "src": "4530:73:11" + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 2578, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2562, + "src": "4620:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 2579, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 2397, + "src": "4620:11:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 2581, + "indexExpression": { + "id": 2580, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "4632:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4620:18:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2568, + "id": 2582, + "nodeType": "Return", + "src": "4613:25:11" + } + ] + }, + "documentation": { + "id": 2559, + "nodeType": "StructuredDocumentation", + "src": "4117:322:11", + "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": 2584, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_at", + "nameLocation": "4453:3:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2565, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2562, + "mutability": "mutable", + "name": "set", + "nameLocation": "4469:3:11", + "nodeType": "VariableDeclaration", + "scope": 2584, + "src": "4457:15:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 2561, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2560, + "name": "Set", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2402, + "src": "4457:3:11" + }, + "referencedDeclaration": 2402, + "src": "4457:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2564, + "mutability": "mutable", + "name": "index", + "nameLocation": "4482:5:11", + "nodeType": "VariableDeclaration", + "scope": 2584, + "src": "4474:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2563, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4474:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4456:32:11" + }, + "returnParameters": { + "id": 2568, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2567, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2584, + "src": "4511:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2566, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4511:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4510:9:11" + }, + "scope": 2906, + "src": "4444:201:11", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "canonicalName": "EnumerableSet.Bytes32Set", + "id": 2588, + "members": [ + { + "constant": false, + "id": 2587, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "4702:6:11", + "nodeType": "VariableDeclaration", + "scope": 2588, + "src": "4698:10:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 2586, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2585, + "name": "Set", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2402, + "src": "4698:3:11" + }, + "referencedDeclaration": 2402, + "src": "4698:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "name": "Bytes32Set", + "nameLocation": "4677:10:11", + "nodeType": "StructDefinition", + "scope": 2906, + "src": "4670:45:11", + "visibility": "public" + }, + { + "body": { + "id": 2605, + "nodeType": "Block", + "src": "4961:47:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2600, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2592, + "src": "4983:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$2588_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 2601, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2587, + "src": "4983:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 2602, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2594, + "src": "4995:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2599, + "name": "_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2444, + "src": "4978:4:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$2402_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 2603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4978:23:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2598, + "id": 2604, + "nodeType": "Return", + "src": "4971:30:11" + } + ] + }, + "documentation": { + "id": 2589, + "nodeType": "StructuredDocumentation", + "src": "4721:159:11", + "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": 2606, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "4894:3:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2595, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2592, + "mutability": "mutable", + "name": "set", + "nameLocation": "4917:3:11", + "nodeType": "VariableDeclaration", + "scope": 2606, + "src": "4898:22:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$2588_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 2591, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2590, + "name": "Bytes32Set", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2588, + "src": "4898:10:11" + }, + "referencedDeclaration": 2588, + "src": "4898:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$2588_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2594, + "mutability": "mutable", + "name": "value", + "nameLocation": "4930:5:11", + "nodeType": "VariableDeclaration", + "scope": 2606, + "src": "4922:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2593, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4922:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4897:39:11" + }, + "returnParameters": { + "id": 2598, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2597, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2606, + "src": "4955:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2596, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4955:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4954:6:11" + }, + "scope": 2906, + "src": "4885:123:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2623, + "nodeType": "Block", + "src": "5255:50:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2618, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2610, + "src": "5280:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$2588_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 2619, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2587, + "src": "5280:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 2620, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2612, + "src": "5292:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2617, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2525, + "src": "5272:7:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$2402_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 2621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5272:26:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2616, + "id": 2622, + "nodeType": "Return", + "src": "5265:33:11" + } + ] + }, + "documentation": { + "id": 2607, + "nodeType": "StructuredDocumentation", + "src": "5014:157:11", + "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": 2624, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "5185:6:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2613, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2610, + "mutability": "mutable", + "name": "set", + "nameLocation": "5211:3:11", + "nodeType": "VariableDeclaration", + "scope": 2624, + "src": "5192:22:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$2588_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 2609, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2608, + "name": "Bytes32Set", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2588, + "src": "5192:10:11" + }, + "referencedDeclaration": 2588, + "src": "5192:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$2588_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2612, + "mutability": "mutable", + "name": "value", + "nameLocation": "5224:5:11", + "nodeType": "VariableDeclaration", + "scope": 2624, + "src": "5216:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2611, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5216:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5191:39:11" + }, + "returnParameters": { + "id": 2616, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2615, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2624, + "src": "5249:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2614, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5249:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5248:6:11" + }, + "scope": 2906, + "src": "5176:129:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2641, + "nodeType": "Block", + "src": "5472:52:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2636, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2628, + "src": "5499:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$2588_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 2637, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2587, + "src": "5499:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 2638, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2630, + "src": "5511:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2635, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2544, + "src": "5489:9:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$2402_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 2639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5489:28:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2634, + "id": 2640, + "nodeType": "Return", + "src": "5482:35:11" + } + ] + }, + "documentation": { + "id": 2625, + "nodeType": "StructuredDocumentation", + "src": "5311:70:11", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 2642, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "5395:8:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2631, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2628, + "mutability": "mutable", + "name": "set", + "nameLocation": "5423:3:11", + "nodeType": "VariableDeclaration", + "scope": 2642, + "src": "5404:22:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$2588_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 2627, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2626, + "name": "Bytes32Set", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2588, + "src": "5404:10:11" + }, + "referencedDeclaration": 2588, + "src": "5404:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$2588_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2630, + "mutability": "mutable", + "name": "value", + "nameLocation": "5436:5:11", + "nodeType": "VariableDeclaration", + "scope": 2642, + "src": "5428:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2629, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5428:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5403:39:11" + }, + "returnParameters": { + "id": 2634, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2633, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2642, + "src": "5466:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2632, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5466:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5465:6:11" + }, + "scope": 2906, + "src": "5386:138:11", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2656, + "nodeType": "Block", + "src": "5677:43:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2652, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2646, + "src": "5702:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$2588_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 2653, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2587, + "src": "5702:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 2651, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2558, + "src": "5694:7:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$2402_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)" + } + }, + "id": 2654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5694:19:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2650, + "id": 2655, + "nodeType": "Return", + "src": "5687:26:11" + } + ] + }, + "documentation": { + "id": 2643, + "nodeType": "StructuredDocumentation", + "src": "5530:70:11", + "text": " @dev Returns the number of values in the set. O(1)." + }, + "id": 2657, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "5614:6:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2647, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2646, + "mutability": "mutable", + "name": "set", + "nameLocation": "5640:3:11", + "nodeType": "VariableDeclaration", + "scope": 2657, + "src": "5621:22:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$2588_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 2645, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2644, + "name": "Bytes32Set", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2588, + "src": "5621:10:11" + }, + "referencedDeclaration": 2588, + "src": "5621:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$2588_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + } + ], + "src": "5620:24:11" + }, + "returnParameters": { + "id": 2650, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2649, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2657, + "src": "5668:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2648, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5668:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5667:9:11" + }, + "scope": 2906, + "src": "5605:115:11", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2674, + "nodeType": "Block", + "src": "6135:46:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2669, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2661, + "src": "6156:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$2588_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 2670, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2587, + "src": "6156:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 2671, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2663, + "src": "6168:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2668, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2584, + "src": "6152:3:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$2402_storage_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)" + } + }, + "id": 2672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6152:22:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2667, + "id": 2673, + "nodeType": "Return", + "src": "6145:29:11" + } + ] + }, + "documentation": { + "id": 2658, + "nodeType": "StructuredDocumentation", + "src": "5725:322:11", + "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": 2675, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "6061:2:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2664, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2661, + "mutability": "mutable", + "name": "set", + "nameLocation": "6083:3:11", + "nodeType": "VariableDeclaration", + "scope": 2675, + "src": "6064:22:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$2588_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 2660, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2659, + "name": "Bytes32Set", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2588, + "src": "6064:10:11" + }, + "referencedDeclaration": 2588, + "src": "6064:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$2588_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2663, + "mutability": "mutable", + "name": "index", + "nameLocation": "6096:5:11", + "nodeType": "VariableDeclaration", + "scope": 2675, + "src": "6088:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2662, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6088:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6063:39:11" + }, + "returnParameters": { + "id": 2667, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2666, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2675, + "src": "6126:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2665, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6126:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6125:9:11" + }, + "scope": 2906, + "src": "6052:129:11", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "canonicalName": "EnumerableSet.AddressSet", + "id": 2679, + "members": [ + { + "constant": false, + "id": 2678, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "6238:6:11", + "nodeType": "VariableDeclaration", + "scope": 2679, + "src": "6234:10:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 2677, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2676, + "name": "Set", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2402, + "src": "6234:3:11" + }, + "referencedDeclaration": 2402, + "src": "6234:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "name": "AddressSet", + "nameLocation": "6213:10:11", + "nodeType": "StructDefinition", + "scope": 2906, + "src": "6206:45:11", + "visibility": "public" + }, + { + "body": { + "id": 2705, + "nodeType": "Block", + "src": "6497:74:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2691, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2683, + "src": "6519:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$2679_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 2692, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2678, + "src": "6519:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 2699, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2685, + "src": "6555:5:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2698, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6547:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 2697, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "6547:7:11", + "typeDescriptions": {} + } + }, + "id": 2700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6547:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 2696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6539:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2695, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6539:7:11", + "typeDescriptions": {} + } + }, + "id": 2701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6539:23:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2694, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6531:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2693, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6531:7:11", + "typeDescriptions": {} + } + }, + "id": 2702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6531:32:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2690, + "name": "_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2444, + "src": "6514:4:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$2402_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 2703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6514:50:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2689, + "id": 2704, + "nodeType": "Return", + "src": "6507:57:11" + } + ] + }, + "documentation": { + "id": 2680, + "nodeType": "StructuredDocumentation", + "src": "6257:159:11", + "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": 2706, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "6430:3:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2686, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2683, + "mutability": "mutable", + "name": "set", + "nameLocation": "6453:3:11", + "nodeType": "VariableDeclaration", + "scope": 2706, + "src": "6434:22:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$2679_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 2682, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2681, + "name": "AddressSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2679, + "src": "6434:10:11" + }, + "referencedDeclaration": 2679, + "src": "6434:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$2679_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2685, + "mutability": "mutable", + "name": "value", + "nameLocation": "6466:5:11", + "nodeType": "VariableDeclaration", + "scope": 2706, + "src": "6458:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2684, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6458:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6433:39:11" + }, + "returnParameters": { + "id": 2689, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2688, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2706, + "src": "6491:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2687, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6491:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6490:6:11" + }, + "scope": 2906, + "src": "6421:150:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2732, + "nodeType": "Block", + "src": "6818:77:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2718, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2710, + "src": "6843:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$2679_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 2719, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2678, + "src": "6843:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 2726, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2712, + "src": "6879:5:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2725, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6871:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 2724, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "6871:7:11", + "typeDescriptions": {} + } + }, + "id": 2727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6871:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 2723, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6863:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2722, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6863:7:11", + "typeDescriptions": {} + } + }, + "id": 2728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6863:23:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6855:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2720, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6855:7:11", + "typeDescriptions": {} + } + }, + "id": 2729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6855:32:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2717, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2525, + "src": "6835:7:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$2402_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 2730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6835:53:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2716, + "id": 2731, + "nodeType": "Return", + "src": "6828:60:11" + } + ] + }, + "documentation": { + "id": 2707, + "nodeType": "StructuredDocumentation", + "src": "6577:157:11", + "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": 2733, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "6748:6:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2713, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2710, + "mutability": "mutable", + "name": "set", + "nameLocation": "6774:3:11", + "nodeType": "VariableDeclaration", + "scope": 2733, + "src": "6755:22:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$2679_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 2709, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2708, + "name": "AddressSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2679, + "src": "6755:10:11" + }, + "referencedDeclaration": 2679, + "src": "6755:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$2679_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2712, + "mutability": "mutable", + "name": "value", + "nameLocation": "6787:5:11", + "nodeType": "VariableDeclaration", + "scope": 2733, + "src": "6779:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2711, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6779:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6754:39:11" + }, + "returnParameters": { + "id": 2716, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2715, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2733, + "src": "6812:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2714, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6812:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6811:6:11" + }, + "scope": 2906, + "src": "6739:156:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2759, + "nodeType": "Block", + "src": "7062:79:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2745, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2737, + "src": "7089:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$2679_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 2746, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2678, + "src": "7089:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 2753, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2739, + "src": "7125:5:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2752, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7117:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 2751, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "7117:7:11", + "typeDescriptions": {} + } + }, + "id": 2754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7117:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 2750, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7109:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2749, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7109:7:11", + "typeDescriptions": {} + } + }, + "id": 2755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7109:23:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2748, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7101:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2747, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7101:7:11", + "typeDescriptions": {} + } + }, + "id": 2756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7101:32:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2744, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2544, + "src": "7079:9:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$2402_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 2757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7079:55:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2743, + "id": 2758, + "nodeType": "Return", + "src": "7072:62:11" + } + ] + }, + "documentation": { + "id": 2734, + "nodeType": "StructuredDocumentation", + "src": "6901:70:11", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 2760, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "6985:8:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2740, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2737, + "mutability": "mutable", + "name": "set", + "nameLocation": "7013:3:11", + "nodeType": "VariableDeclaration", + "scope": 2760, + "src": "6994:22:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$2679_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 2736, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2735, + "name": "AddressSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2679, + "src": "6994:10:11" + }, + "referencedDeclaration": 2679, + "src": "6994:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$2679_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2739, + "mutability": "mutable", + "name": "value", + "nameLocation": "7026:5:11", + "nodeType": "VariableDeclaration", + "scope": 2760, + "src": "7018:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2738, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7018:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6993:39:11" + }, + "returnParameters": { + "id": 2743, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2742, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2760, + "src": "7056:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2741, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7056:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "7055:6:11" + }, + "scope": 2906, + "src": "6976:165:11", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2774, + "nodeType": "Block", + "src": "7294:43:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2770, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2764, + "src": "7319:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$2679_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 2771, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2678, + "src": "7319:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 2769, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2558, + "src": "7311:7:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$2402_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)" + } + }, + "id": 2772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7311:19:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2768, + "id": 2773, + "nodeType": "Return", + "src": "7304:26:11" + } + ] + }, + "documentation": { + "id": 2761, + "nodeType": "StructuredDocumentation", + "src": "7147:70:11", + "text": " @dev Returns the number of values in the set. O(1)." + }, + "id": 2775, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "7231:6:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2765, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2764, + "mutability": "mutable", + "name": "set", + "nameLocation": "7257:3:11", + "nodeType": "VariableDeclaration", + "scope": 2775, + "src": "7238:22:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$2679_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 2763, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2762, + "name": "AddressSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2679, + "src": "7238:10:11" + }, + "referencedDeclaration": 2679, + "src": "7238:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$2679_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + } + ], + "src": "7237:24:11" + }, + "returnParameters": { + "id": 2768, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2767, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2775, + "src": "7285:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2766, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7285:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7284:9:11" + }, + "scope": 2906, + "src": "7222:115:11", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2801, + "nodeType": "Block", + "src": "7752:73:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 2793, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2779, + "src": "7797:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$2679_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 2794, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2678, + "src": "7797:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 2795, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2781, + "src": "7809:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2792, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2584, + "src": "7793:3:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$2402_storage_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)" + } + }, + "id": 2796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7793:22:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2791, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7785:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2790, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7785:7:11", + "typeDescriptions": {} + } + }, + "id": 2797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7785:31:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2789, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7777:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 2788, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "7777:7:11", + "typeDescriptions": {} + } + }, + "id": 2798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7777:40:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 2787, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7769:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2786, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7769:7:11", + "typeDescriptions": {} + } + }, + "id": 2799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7769:49:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2785, + "id": 2800, + "nodeType": "Return", + "src": "7762:56:11" + } + ] + }, + "documentation": { + "id": 2776, + "nodeType": "StructuredDocumentation", + "src": "7342:322:11", + "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": 2802, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "7678:2:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2782, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2779, + "mutability": "mutable", + "name": "set", + "nameLocation": "7700:3:11", + "nodeType": "VariableDeclaration", + "scope": 2802, + "src": "7681:22:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$2679_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 2778, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2777, + "name": "AddressSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2679, + "src": "7681:10:11" + }, + "referencedDeclaration": 2679, + "src": "7681:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$2679_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2781, + "mutability": "mutable", + "name": "index", + "nameLocation": "7713:5:11", + "nodeType": "VariableDeclaration", + "scope": 2802, + "src": "7705:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2780, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7705:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7680:39:11" + }, + "returnParameters": { + "id": 2785, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2784, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2802, + "src": "7743:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2783, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7743:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7742:9:11" + }, + "scope": 2906, + "src": "7669:156:11", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "canonicalName": "EnumerableSet.UintSet", + "id": 2806, + "members": [ + { + "constant": false, + "id": 2805, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "7877:6:11", + "nodeType": "VariableDeclaration", + "scope": 2806, + "src": "7873:10:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 2804, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2803, + "name": "Set", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2402, + "src": "7873:3:11" + }, + "referencedDeclaration": 2402, + "src": "7873:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "name": "UintSet", + "nameLocation": "7855:7:11", + "nodeType": "StructDefinition", + "scope": 2906, + "src": "7848:42:11", + "visibility": "public" + }, + { + "body": { + "id": 2826, + "nodeType": "Block", + "src": "8133:56:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2818, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "8155:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$2806_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 2819, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2805, + "src": "8155:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "id": 2822, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2812, + "src": "8175:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2821, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8167:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2820, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8167:7:11", + "typeDescriptions": {} + } + }, + "id": 2823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8167:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2817, + "name": "_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2444, + "src": "8150:4:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$2402_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 2824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8150:32:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2816, + "id": 2825, + "nodeType": "Return", + "src": "8143:39:11" + } + ] + }, + "documentation": { + "id": 2807, + "nodeType": "StructuredDocumentation", + "src": "7896:159:11", + "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": 2827, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "8069:3:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2813, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2810, + "mutability": "mutable", + "name": "set", + "nameLocation": "8089:3:11", + "nodeType": "VariableDeclaration", + "scope": 2827, + "src": "8073:19:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$2806_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 2809, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2808, + "name": "UintSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2806, + "src": "8073:7:11" + }, + "referencedDeclaration": 2806, + "src": "8073:7:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$2806_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2812, + "mutability": "mutable", + "name": "value", + "nameLocation": "8102:5:11", + "nodeType": "VariableDeclaration", + "scope": 2827, + "src": "8094:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2811, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8094:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8072:36:11" + }, + "returnParameters": { + "id": 2816, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2815, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2827, + "src": "8127:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2814, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8127:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8126:6:11" + }, + "scope": 2906, + "src": "8060:129:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2847, + "nodeType": "Block", + "src": "8433:59:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2839, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2831, + "src": "8458:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$2806_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 2840, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2805, + "src": "8458:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "id": 2843, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2833, + "src": "8478:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2842, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8470:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2841, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8470:7:11", + "typeDescriptions": {} + } + }, + "id": 2844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8470:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2838, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2525, + "src": "8450:7:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$2402_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 2845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8450:35:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2837, + "id": 2846, + "nodeType": "Return", + "src": "8443:42:11" + } + ] + }, + "documentation": { + "id": 2828, + "nodeType": "StructuredDocumentation", + "src": "8195:157:11", + "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": 2848, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "8366:6:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2834, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2831, + "mutability": "mutable", + "name": "set", + "nameLocation": "8389:3:11", + "nodeType": "VariableDeclaration", + "scope": 2848, + "src": "8373:19:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$2806_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 2830, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2829, + "name": "UintSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2806, + "src": "8373:7:11" + }, + "referencedDeclaration": 2806, + "src": "8373:7:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$2806_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2833, + "mutability": "mutable", + "name": "value", + "nameLocation": "8402:5:11", + "nodeType": "VariableDeclaration", + "scope": 2848, + "src": "8394:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2832, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8394:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8372:36:11" + }, + "returnParameters": { + "id": 2837, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2836, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2848, + "src": "8427:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2835, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8427:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8426:6:11" + }, + "scope": 2906, + "src": "8357:135:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2868, + "nodeType": "Block", + "src": "8656:61:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2860, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2852, + "src": "8683:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$2806_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 2861, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2805, + "src": "8683:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "id": 2864, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2854, + "src": "8703:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2863, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8695:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2862, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8695:7:11", + "typeDescriptions": {} + } + }, + "id": 2865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8695:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2859, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2544, + "src": "8673:9:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$2402_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 2866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8673:37:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2858, + "id": 2867, + "nodeType": "Return", + "src": "8666:44:11" + } + ] + }, + "documentation": { + "id": 2849, + "nodeType": "StructuredDocumentation", + "src": "8498:70:11", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 2869, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "8582:8:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2855, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2852, + "mutability": "mutable", + "name": "set", + "nameLocation": "8607:3:11", + "nodeType": "VariableDeclaration", + "scope": 2869, + "src": "8591:19:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$2806_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 2851, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2850, + "name": "UintSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2806, + "src": "8591:7:11" + }, + "referencedDeclaration": 2806, + "src": "8591:7:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$2806_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2854, + "mutability": "mutable", + "name": "value", + "nameLocation": "8620:5:11", + "nodeType": "VariableDeclaration", + "scope": 2869, + "src": "8612:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2853, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8612:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8590:36:11" + }, + "returnParameters": { + "id": 2858, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2857, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2869, + "src": "8650:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2856, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8650:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8649:6:11" + }, + "scope": 2906, + "src": "8573:144:11", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2883, + "nodeType": "Block", + "src": "8867:43:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2879, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2873, + "src": "8892:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$2806_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 2880, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2805, + "src": "8892:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 2878, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2558, + "src": "8884:7:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$2402_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)" + } + }, + "id": 2881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8884:19:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2877, + "id": 2882, + "nodeType": "Return", + "src": "8877:26:11" + } + ] + }, + "documentation": { + "id": 2870, + "nodeType": "StructuredDocumentation", + "src": "8723:70:11", + "text": " @dev Returns the number of values on the set. O(1)." + }, + "id": 2884, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "8807:6:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2874, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2873, + "mutability": "mutable", + "name": "set", + "nameLocation": "8830:3:11", + "nodeType": "VariableDeclaration", + "scope": 2884, + "src": "8814:19:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$2806_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 2872, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2871, + "name": "UintSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2806, + "src": "8814:7:11" + }, + "referencedDeclaration": 2806, + "src": "8814:7:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$2806_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + } + ], + "src": "8813:21:11" + }, + "returnParameters": { + "id": 2877, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2876, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2884, + "src": "8858:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2875, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8858:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8857:9:11" + }, + "scope": 2906, + "src": "8798:112:11", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2904, + "nodeType": "Block", + "src": "9322:55:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 2898, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2888, + "src": "9351:3:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$2806_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 2899, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2805, + "src": "9351:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 2900, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2890, + "src": "9363:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2402_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2897, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2584, + "src": "9347:3:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$2402_storage_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)" + } + }, + "id": 2901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9347:22:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2896, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9339:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2895, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9339:7:11", + "typeDescriptions": {} + } + }, + "id": 2902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9339:31:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2894, + "id": 2903, + "nodeType": "Return", + "src": "9332:38:11" + } + ] + }, + "documentation": { + "id": 2885, + "nodeType": "StructuredDocumentation", + "src": "8915:322:11", + "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": 2905, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "9251:2:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2891, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2888, + "mutability": "mutable", + "name": "set", + "nameLocation": "9270:3:11", + "nodeType": "VariableDeclaration", + "scope": 2905, + "src": "9254:19:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$2806_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 2887, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2886, + "name": "UintSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 2806, + "src": "9254:7:11" + }, + "referencedDeclaration": 2806, + "src": "9254:7:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$2806_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2890, + "mutability": "mutable", + "name": "index", + "nameLocation": "9283:5:11", + "nodeType": "VariableDeclaration", + "scope": 2905, + "src": "9275:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2889, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9275:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9253:36:11" + }, + "returnParameters": { + "id": 2894, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2893, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2905, + "src": "9313:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2892, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9313:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9312:9:11" + }, + "scope": 2906, + "src": "9242:135:11", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 2907, + "src": "745:8634:11", + "usedErrors": [] + } + ], + "src": "33:9346:11" + }, + "id": 11 + }, + "contracts/ERC721/V8_0_0/Utils/Strings.sol": { + "ast": { + "absolutePath": "contracts/ERC721/V8_0_0/Utils/Strings.sol", + "exportedSymbols": { + "Strings": [ + 3109 + ] + }, + "id": 3110, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2908, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:12" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Strings", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 2909, + "nodeType": "StructuredDocumentation", + "src": "58:34:12", + "text": " @dev String operations." + }, + "fullyImplemented": true, + "id": 3109, + "linearizedBaseContracts": [ + 3109 + ], + "name": "Strings", + "nameLocation": "101:7:12", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 2912, + "mutability": "constant", + "name": "alphabet", + "nameLocation": "140:8:12", + "nodeType": "VariableDeclaration", + "scope": 3109, + "src": "115:54:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "typeName": { + "id": 2910, + "name": "bytes16", + "nodeType": "ElementaryTypeName", + "src": "115:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "value": { + "hexValue": "30313233343536373839616263646566", + "id": 2911, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "151:18:12", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f", + "typeString": "literal_string \"0123456789abcdef\"" + }, + "value": "0123456789abcdef" + }, + "visibility": "private" + }, + { + "body": { + "id": 2990, + "nodeType": "Block", + "src": "342:632:12", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2920, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2915, + "src": "544:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2921, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "553:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "544:10:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2926, + "nodeType": "IfStatement", + "src": "540:51:12", + "trueBody": { + "id": 2925, + "nodeType": "Block", + "src": "556:35:12", + "statements": [ + { + "expression": { + "hexValue": "30", + "id": 2923, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "577:3:12", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", + "typeString": "literal_string \"0\"" + }, + "value": "0" + }, + "functionReturnParameters": 2919, + "id": 2924, + "nodeType": "Return", + "src": "570:10:12" + } + ] + } + }, + { + "assignments": [ + 2928 + ], + "declarations": [ + { + "constant": false, + "id": 2928, + "mutability": "mutable", + "name": "temp", + "nameLocation": "608:4:12", + "nodeType": "VariableDeclaration", + "scope": 2990, + "src": "600:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2927, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "600:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2930, + "initialValue": { + "id": 2929, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2915, + "src": "615:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "600:20:12" + }, + { + "assignments": [ + 2932 + ], + "declarations": [ + { + "constant": false, + "id": 2932, + "mutability": "mutable", + "name": "digits", + "nameLocation": "638:6:12", + "nodeType": "VariableDeclaration", + "scope": 2990, + "src": "630:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2931, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "630:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2933, + "nodeType": "VariableDeclarationStatement", + "src": "630:14:12" + }, + { + "body": { + "id": 2944, + "nodeType": "Block", + "src": "672:57:12", + "statements": [ + { + "expression": { + "id": 2938, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "686:8:12", + "subExpression": { + "id": 2937, + "name": "digits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2932, + "src": "686:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2939, + "nodeType": "ExpressionStatement", + "src": "686:8:12" + }, + { + "expression": { + "id": 2942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2940, + "name": "temp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2928, + "src": "708:4:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "hexValue": "3130", + "id": 2941, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "716:2:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "708:10:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2943, + "nodeType": "ExpressionStatement", + "src": "708:10:12" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2934, + "name": "temp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2928, + "src": "661:4:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 2935, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "669:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "661:9:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2945, + "nodeType": "WhileStatement", + "src": "654:75:12" + }, + { + "assignments": [ + 2947 + ], + "declarations": [ + { + "constant": false, + "id": 2947, + "mutability": "mutable", + "name": "buffer", + "nameLocation": "751:6:12", + "nodeType": "VariableDeclaration", + "scope": 2990, + "src": "738:19:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2946, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "738:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 2952, + "initialValue": { + "arguments": [ + { + "id": 2950, + "name": "digits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2932, + "src": "770:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2949, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "760:9:12", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 2948, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "764:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 2951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "760:17:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "738:39:12" + }, + { + "body": { + "id": 2983, + "nodeType": "Block", + "src": "806:131:12", + "statements": [ + { + "expression": { + "id": 2958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2956, + "name": "digits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2932, + "src": "820:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "hexValue": "31", + "id": 2957, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "830:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "820:11:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2959, + "nodeType": "ExpressionStatement", + "src": "820:11:12" + }, + { + "expression": { + "id": 2977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2960, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2947, + "src": "845:6:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2962, + "indexExpression": { + "id": 2961, + "name": "digits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2932, + "src": "852:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "845:14:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3438", + "id": 2967, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "875:2:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2970, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2915, + "src": "888:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "hexValue": "3130", + "id": 2971, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "896:2:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "888:10:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2969, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "880:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2968, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "880:7:12", + "typeDescriptions": {} + } + }, + "id": 2973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "880:19:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "875:24:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2966, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "869:5:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 2965, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "869:5:12", + "typeDescriptions": {} + } + }, + "id": 2975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "869:31:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 2964, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "862:6:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": { + "id": 2963, + "name": "bytes1", + "nodeType": "ElementaryTypeName", + "src": "862:6:12", + "typeDescriptions": {} + } + }, + "id": 2976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "862:39:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "845:56:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 2978, + "nodeType": "ExpressionStatement", + "src": "845:56:12" + }, + { + "expression": { + "id": 2981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2979, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2915, + "src": "915:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "hexValue": "3130", + "id": 2980, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "924:2:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "915:11:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2982, + "nodeType": "ExpressionStatement", + "src": "915:11:12" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2953, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2915, + "src": "794:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 2954, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "803:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "794:10:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2984, + "nodeType": "WhileStatement", + "src": "787:150:12" + }, + { + "expression": { + "arguments": [ + { + "id": 2987, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2947, + "src": "960:6:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2986, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "953:6:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 2985, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "953:6:12", + "typeDescriptions": {} + } + }, + "id": 2988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "953:14:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 2919, + "id": 2989, + "nodeType": "Return", + "src": "946:21:12" + } + ] + }, + "documentation": { + "id": 2913, + "nodeType": "StructuredDocumentation", + "src": "176:90:12", + "text": " @dev Converts a `uint256` to its ASCII `string` decimal representation." + }, + "id": 2991, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toString", + "nameLocation": "280:8:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2916, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2915, + "mutability": "mutable", + "name": "value", + "nameLocation": "297:5:12", + "nodeType": "VariableDeclaration", + "scope": 2991, + "src": "289:13:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2914, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "289:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "288:15:12" + }, + "returnParameters": { + "id": 2919, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2918, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2991, + "src": "327:13:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2917, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "327:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "326:15:12" + }, + "scope": 3109, + "src": "271:703:12", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3031, + "nodeType": "Block", + "src": "1153:255:12", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2999, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2994, + "src": "1167:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 3000, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1176:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1167:10:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3005, + "nodeType": "IfStatement", + "src": "1163:54:12", + "trueBody": { + "id": 3004, + "nodeType": "Block", + "src": "1179:38:12", + "statements": [ + { + "expression": { + "hexValue": "30783030", + "id": 3002, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1200:6:12", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_27489e20a0060b723a1748bdff5e44570ee9fae64141728105692eac6031e8a4", + "typeString": "literal_string \"0x00\"" + }, + "value": "0x00" + }, + "functionReturnParameters": 2998, + "id": 3003, + "nodeType": "Return", + "src": "1193:13:12" + } + ] + } + }, + { + "assignments": [ + 3007 + ], + "declarations": [ + { + "constant": false, + "id": 3007, + "mutability": "mutable", + "name": "temp", + "nameLocation": "1234:4:12", + "nodeType": "VariableDeclaration", + "scope": 3031, + "src": "1226:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3006, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1226:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3009, + "initialValue": { + "id": 3008, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2994, + "src": "1241:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1226:20:12" + }, + { + "assignments": [ + 3011 + ], + "declarations": [ + { + "constant": false, + "id": 3011, + "mutability": "mutable", + "name": "length", + "nameLocation": "1264:6:12", + "nodeType": "VariableDeclaration", + "scope": 3031, + "src": "1256:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3010, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1256:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3013, + "initialValue": { + "hexValue": "30", + "id": 3012, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1273:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1256:18:12" + }, + { + "body": { + "id": 3024, + "nodeType": "Block", + "src": "1302:57:12", + "statements": [ + { + "expression": { + "id": 3018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1316:8:12", + "subExpression": { + "id": 3017, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3011, + "src": "1316:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3019, + "nodeType": "ExpressionStatement", + "src": "1316:8:12" + }, + { + "expression": { + "id": 3022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3020, + "name": "temp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3007, + "src": "1338:4:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "38", + "id": 3021, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1347:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "1338:10:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3023, + "nodeType": "ExpressionStatement", + "src": "1338:10:12" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3014, + "name": "temp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3007, + "src": "1291:4:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 3015, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1299:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1291:9:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3025, + "nodeType": "WhileStatement", + "src": "1284:75:12" + }, + { + "expression": { + "arguments": [ + { + "id": 3027, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2994, + "src": "1387:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3028, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3011, + "src": "1394:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3026, + "name": "toHexString", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3032, + 3108 + ], + "referencedDeclaration": 3108, + "src": "1375:11:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256,uint256) pure returns (string memory)" + } + }, + "id": 3029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1375:26:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 2998, + "id": 3030, + "nodeType": "Return", + "src": "1368:33:12" + } + ] + }, + "documentation": { + "id": 2992, + "nodeType": "StructuredDocumentation", + "src": "980:94:12", + "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation." + }, + "id": 3032, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexString", + "nameLocation": "1088:11:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2995, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2994, + "mutability": "mutable", + "name": "value", + "nameLocation": "1108:5:12", + "nodeType": "VariableDeclaration", + "scope": 3032, + "src": "1100:13:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2993, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1100:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1099:15:12" + }, + "returnParameters": { + "id": 2998, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2997, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3032, + "src": "1138:13:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2996, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1138:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1137:15:12" + }, + "scope": 3109, + "src": "1079:329:12", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3107, + "nodeType": "Block", + "src": "1621:347:12", + "statements": [ + { + "assignments": [ + 3043 + ], + "declarations": [ + { + "constant": false, + "id": 3043, + "mutability": "mutable", + "name": "buffer", + "nameLocation": "1644:6:12", + "nodeType": "VariableDeclaration", + "scope": 3107, + "src": "1631:19:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3042, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1631:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 3052, + "initialValue": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 3046, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1663:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 3047, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3037, + "src": "1667:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1663:10:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "32", + "id": 3049, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1676:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "1663:14:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3045, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "1653:9:12", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 3044, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1657:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 3051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1653:25:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1631:47:12" + }, + { + "expression": { + "id": 3057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 3053, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3043, + "src": "1688:6:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 3055, + "indexExpression": { + "hexValue": "30", + "id": 3054, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1695:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1688:9:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 3056, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1700:3:12", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", + "typeString": "literal_string \"0\"" + }, + "value": "0" + }, + "src": "1688:15:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 3058, + "nodeType": "ExpressionStatement", + "src": "1688:15:12" + }, + { + "expression": { + "id": 3063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 3059, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3043, + "src": "1713:6:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 3061, + "indexExpression": { + "hexValue": "31", + "id": 3060, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1720:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1713:9:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "78", + "id": 3062, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1725:3:12", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83", + "typeString": "literal_string \"x\"" + }, + "value": "x" + }, + "src": "1713:15:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 3064, + "nodeType": "ExpressionStatement", + "src": "1713:15:12" + }, + { + "body": { + "id": 3093, + "nodeType": "Block", + "src": "1783:83:12", + "statements": [ + { + "expression": { + "id": 3087, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 3079, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3043, + "src": "1797:6:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 3081, + "indexExpression": { + "id": 3080, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3066, + "src": "1804:1:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1797:9:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 3082, + "name": "alphabet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2912, + "src": "1809:8:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "id": 3086, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3083, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3035, + "src": "1818:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307866", + "id": 3084, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1826:3:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_15_by_1", + "typeString": "int_const 15" + }, + "value": "0xf" + }, + "src": "1818:11:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1809:21:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "1797:33:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 3088, + "nodeType": "ExpressionStatement", + "src": "1797:33:12" + }, + { + "expression": { + "id": 3091, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3089, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3035, + "src": "1844:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "34", + "id": 3090, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1854:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "1844:11:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3092, + "nodeType": "ExpressionStatement", + "src": "1844:11:12" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3073, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3066, + "src": "1771:1:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "31", + "id": 3074, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1775:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1771:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3094, + "initializationExpression": { + "assignments": [ + 3066 + ], + "declarations": [ + { + "constant": false, + "id": 3066, + "mutability": "mutable", + "name": "i", + "nameLocation": "1751:1:12", + "nodeType": "VariableDeclaration", + "scope": 3094, + "src": "1743:9:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3065, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1743:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3072, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 3067, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1755:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 3068, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3037, + "src": "1759:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1755:10:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 3070, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1768:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1755:14:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1743:26:12" + }, + "loopExpression": { + "expression": { + "id": 3077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": true, + "src": "1778:3:12", + "subExpression": { + "id": 3076, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3066, + "src": "1780:1:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3078, + "nodeType": "ExpressionStatement", + "src": "1778:3:12" + }, + "nodeType": "ForStatement", + "src": "1738:128:12" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3096, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3035, + "src": "1883:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 3097, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1892:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1883:10:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74", + "id": 3099, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1895:34:12", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2", + "typeString": "literal_string \"Strings: hex length insufficient\"" + }, + "value": "Strings: hex length insufficient" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2", + "typeString": "literal_string \"Strings: hex length insufficient\"" + } + ], + "id": 3095, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1875:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1875:55:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3101, + "nodeType": "ExpressionStatement", + "src": "1875:55:12" + }, + { + "expression": { + "arguments": [ + { + "id": 3104, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3043, + "src": "1954:6:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 3103, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1947:6:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 3102, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1947:6:12", + "typeDescriptions": {} + } + }, + "id": 3105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1947:14:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 3041, + "id": 3106, + "nodeType": "Return", + "src": "1940:21:12" + } + ] + }, + "documentation": { + "id": 3033, + "nodeType": "StructuredDocumentation", + "src": "1414:112:12", + "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length." + }, + "id": 3108, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexString", + "nameLocation": "1540:11:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3038, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3035, + "mutability": "mutable", + "name": "value", + "nameLocation": "1560:5:12", + "nodeType": "VariableDeclaration", + "scope": 3108, + "src": "1552:13:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3034, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1552:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3037, + "mutability": "mutable", + "name": "length", + "nameLocation": "1575:6:12", + "nodeType": "VariableDeclaration", + "scope": 3108, + "src": "1567:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3036, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1567:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1551:31:12" + }, + "returnParameters": { + "id": 3041, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3040, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3108, + "src": "1606:13:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3039, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1606:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1605:15:12" + }, + "scope": 3109, + "src": "1531:437:12", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 3110, + "src": "93:1878:12", + "usedErrors": [] + } + ], + "src": "33:1938:12" + }, + "id": 12 + } + } + } +} diff --git a/artifacts/build-info/45f74077c6313ac919099b51529f6569.json b/artifacts/build-info/45f74077c6313ac919099b51529f6569.json new file mode 100644 index 00000000..a3dc7d9e --- /dev/null +++ b/artifacts/build-info/45f74077c6313ac919099b51529f6569.json @@ -0,0 +1,845 @@ +{ + "id": "45f74077c6313ac919099b51529f6569", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.10", + "solcLongVersion": "0.8.10+commit.fc410830", + "input": { + "language": "Solidity", + "sources": { + "contracts/Utils/BlockMiner.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n// file: BlockMinder.sol\n\n// used to \"waste\" blocks for truffle tests\ncontract BlockMiner {\n uint256 public blocksMined;\n\n constructor () public {\n blocksMined = 0;\n }\n\n function mine() public {\n blocksMined += 1;\n }\n\n function blockTime() external view returns (uint256) {\n return block.timestamp;\n }\n}" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "output": { + "contracts": { + "contracts/Utils/BlockMiner.sol": { + "BlockMiner": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "blockTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "blocksMined", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "mine", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": { + "@_11": { + "entryPoint": null, + "id": 11, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [], + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506000805560f0806100236000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c806348b151661460415780638c4afaf614605557806399f4b25114605d575b600080fd5b425b60405190815260200160405180910390f35b604360005481565b60636065565b005b600160008082825460759190607c565b9091555050565b6000821982111560b5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea26469706673582212205d62149ee9071faf10f1c0291af1db38c0f14ad8bfa0b0e3ba123769b06bf38664736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SSTORE PUSH1 0xF0 DUP1 PUSH2 0x23 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x48B15166 EQ PUSH1 0x41 JUMPI DUP1 PUSH4 0x8C4AFAF6 EQ PUSH1 0x55 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH1 0x5D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST TIMESTAMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x43 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x63 PUSH1 0x65 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH1 0x75 SWAP2 SWAP1 PUSH1 0x7C JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH1 0xB5 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5D PUSH3 0x149EE9 SMOD 0x1F 0xAF LT CALL 0xC0 0x29 BYTE CALL 0xDB CODESIZE 0xC0 CALL 0x4A 0xD8 0xBF LOG0 0xB0 0xE3 0xBA SLT CALLDATACOPY PUSH10 0xB06BF38664736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "128:273:0:-:0;;;187:54;;;;;;;;;-1:-1:-1;233:1:0;219:15;;128:273;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@blockTime_28": { + "entryPoint": null, + "id": 28, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@blocksMined_3": { + "entryPoint": null, + "id": 3, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@mine_19": { + "entryPoint": 101, + "id": 19, + "parameterSlots": 0, + "returnSlots": 0 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 124, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:480:1", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:1", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "115:76:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "125:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "137:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "148:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "133:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "133:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "125:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "167:9:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "178:6:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "160:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "160:25:1" + }, + "nodeType": "YulExpressionStatement", + "src": "160:25:1" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "84:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "95:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "106:4:1", + "type": "" + } + ], + "src": "14:177:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "244:234:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "279:168:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "300:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "303:77:1", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "293:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "293:88:1" + }, + "nodeType": "YulExpressionStatement", + "src": "293:88:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "401:1:1", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "404:4:1", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "394:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "394:15:1" + }, + "nodeType": "YulExpressionStatement", + "src": "394:15:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "429:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "432:4:1", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "422:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "422:15:1" + }, + "nodeType": "YulExpressionStatement", + "src": "422:15:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "260:1:1" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "267:1:1" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "263:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "263:6:1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "257:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "257:13:1" + }, + "nodeType": "YulIf", + "src": "254:193:1" + }, + { + "nodeType": "YulAssignment", + "src": "456:16:1", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "467:1:1" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "470:1:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "463:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "463:9:1" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "456:3:1" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "227:1:1", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "230:1:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "236:3:1", + "type": "" + } + ], + "src": "196:282:1" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y))\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n sum := add(x, y)\n }\n}", + "id": 1, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "6080604052348015600f57600080fd5b5060043610603c5760003560e01c806348b151661460415780638c4afaf614605557806399f4b25114605d575b600080fd5b425b60405190815260200160405180910390f35b604360005481565b60636065565b005b600160008082825460759190607c565b9091555050565b6000821982111560b5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea26469706673582212205d62149ee9071faf10f1c0291af1db38c0f14ad8bfa0b0e3ba123769b06bf38664736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x48B15166 EQ PUSH1 0x41 JUMPI DUP1 PUSH4 0x8C4AFAF6 EQ PUSH1 0x55 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH1 0x5D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST TIMESTAMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x43 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x63 PUSH1 0x65 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH1 0x75 SWAP2 SWAP1 PUSH1 0x7C JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH1 0xB5 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5D PUSH3 0x149EE9 SMOD 0x1F 0xAF LT CALL 0xC0 0x29 BYTE CALL 0xDB CODESIZE 0xC0 CALL 0x4A 0xD8 0xBF LOG0 0xB0 0xE3 0xBA SLT CALLDATACOPY PUSH10 0xB06BF38664736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "128:273:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;308:91;377:15;308:91;;;160:25:1;;;148:2;133:18;308:91:0;;;;;;;154:26;;;;;;247:55;;;:::i;:::-;;;294:1;279:11;;:16;;;;;;;:::i;:::-;;;;-1:-1:-1;;247:55:0:o;196:282:1:-;236:3;267:1;263:6;260:1;257:13;254:193;;;303:77;300:1;293:88;404:4;401:1;394:15;432:4;429:1;422:15;254:193;-1:-1:-1;463:9:1;;196:282::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "48000", + "executionCost": "5105", + "totalCost": "53105" + }, + "external": { + "blockTime()": "146", + "blocksMined()": "2283", + "mine()": "24461" + } + }, + "methodIdentifiers": { + "blockTime()": "48b15166", + "blocksMined()": "8c4afaf6", + "mine()": "99f4b251" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"blockTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blocksMined\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Utils/BlockMiner.sol\":\"BlockMiner\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Utils/BlockMiner.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n// file: BlockMinder.sol\\n\\n// used to \\\"waste\\\" blocks for truffle tests\\ncontract BlockMiner {\\n uint256 public blocksMined;\\n\\n constructor () public {\\n blocksMined = 0;\\n }\\n\\n function mine() public {\\n blocksMined += 1;\\n }\\n\\n function blockTime() external view returns (uint256) {\\n return block.timestamp;\\n }\\n}\",\"keccak256\":\"0xa1c69f060cce6e469ecce1432181ce4c4c48d18a5d15dc5448d3483048b64a5e\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 3, + "contract": "contracts/Utils/BlockMiner.sol:BlockMiner", + "label": "blocksMined", + "offset": 0, + "slot": "0", + "type": "t_uint256" + } + ], + "types": { + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "errors": [ + { + "component": "general", + "errorCode": "2462", + "formattedMessage": "Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n --> contracts/Utils/BlockMiner.sol:9:5:\n |\n9 | constructor () public {\n | ^ (Relevant source part starts here and spans across multiple lines).\n\n", + "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.", + "severity": "warning", + "sourceLocation": { + "end": 241, + "file": "contracts/Utils/BlockMiner.sol", + "start": 187 + }, + "type": "Warning" + } + ], + "sources": { + "contracts/Utils/BlockMiner.sol": { + "ast": { + "absolutePath": "contracts/Utils/BlockMiner.sol", + "exportedSymbols": { + "BlockMiner": [ + 29 + ] + }, + "id": 30, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "BlockMiner", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 29, + "linearizedBaseContracts": [ + 29 + ], + "name": "BlockMiner", + "nameLocation": "137:10:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "8c4afaf6", + "id": 3, + "mutability": "mutable", + "name": "blocksMined", + "nameLocation": "169:11:0", + "nodeType": "VariableDeclaration", + "scope": 29, + "src": "154:26:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "154:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 10, + "nodeType": "Block", + "src": "209:32:0", + "statements": [ + { + "expression": { + "id": 8, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6, + "name": "blocksMined", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "219:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 7, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "233:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "219:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9, + "nodeType": "ExpressionStatement", + "src": "219:15:0" + } + ] + }, + "id": 11, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4, + "nodeType": "ParameterList", + "parameters": [], + "src": "199:2:0" + }, + "returnParameters": { + "id": 5, + "nodeType": "ParameterList", + "parameters": [], + "src": "209:0:0" + }, + "scope": 29, + "src": "187:54:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 18, + "nodeType": "Block", + "src": "270:32:0", + "statements": [ + { + "expression": { + "id": 16, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 14, + "name": "blocksMined", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "279:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "31", + "id": 15, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "294:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "279:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 17, + "nodeType": "ExpressionStatement", + "src": "279:16:0" + } + ] + }, + "functionSelector": "99f4b251", + "id": 19, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mine", + "nameLocation": "256:4:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12, + "nodeType": "ParameterList", + "parameters": [], + "src": "260:2:0" + }, + "returnParameters": { + "id": 13, + "nodeType": "ParameterList", + "parameters": [], + "src": "270:0:0" + }, + "scope": 29, + "src": "247:55:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 27, + "nodeType": "Block", + "src": "361:38:0", + "statements": [ + { + "expression": { + "expression": { + "id": 24, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "377:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 25, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "377:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 23, + "id": 26, + "nodeType": "Return", + "src": "370:22:0" + } + ] + }, + "functionSelector": "48b15166", + "id": 28, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "blockTime", + "nameLocation": "317:9:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 20, + "nodeType": "ParameterList", + "parameters": [], + "src": "326:2:0" + }, + "returnParameters": { + "id": 23, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 22, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 28, + "src": "352:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 21, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "352:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "351:9:0" + }, + "scope": 29, + "src": "308:91:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 30, + "src": "128:273:0", + "usedErrors": [] + } + ], + "src": "32:369:0" + }, + "id": 0 + } + } + } +} diff --git a/artifacts/build-info/4b49a453f903a20ab018cc07dc8ac3ad.json b/artifacts/build-info/4b49a453f903a20ab018cc07dc8ac3ad.json new file mode 100644 index 00000000..ff1237c5 --- /dev/null +++ b/artifacts/build-info/4b49a453f903a20ab018cc07dc8ac3ad.json @@ -0,0 +1,150 @@ +{ + "id": "4b49a453f903a20ab018cc07dc8ac3ad", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.10", + "solcLongVersion": "0.8.10+commit.fc410830", + "input": { + "language": "Solidity", + "sources": { + "contracts/DEI/Pools/DEIPoolV2.sol": { + "content": "// TODO: change licence\n// SPDX-License-Identifier: MIT\n// Be name Khoda\n// Bime Abolfazl\n\npragma solidity ^0.8.9;\npragma abicoder v2;\n// =================================================================================================================\n// _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| |\n// _| _| _| _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| |\n// _| _| _|_|_| _| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_|_|_| |\n// _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| |\n// _|_|_| _|_|_|_| _|_| _|_|_| _| _| _| _| _|_|_| _| _| _|_|_| _|_|_| |\n// =================================================================================================================\n// ============================= DEIPoolV2 ============================\n// ====================================================================\n// DEUS Finance: https://github.com/DeusFinance\n\n// Primary Author(s)\n// Vahid Gh: https://github.com/vahid-dev\n\n// Reviewer(s) / Contributor(s)\n\n\ncontract DEIPoolV2 {\n\n /* ========== STATE VARIABLES ========== */\n\n\n\n /* ========== MODIFIERS ========== */\n\n\n\n /* ========== CONSTRUCTOR ========== */\n\n\n\n /* ========== PUBLIC FUNCTIONS ========== */\n\n\n\n /* ========== VIEWS ========== */\n\n\n\n /* ========== RESTRICTED FUNCTIONS ========== */\n\n\n\n /* ========== EVENTS ========== */\n\n\n\n}\n\n//Dar panah khoda\n" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "output": { + "contracts": { + "contracts/DEI/Pools/DEIPoolV2.sol": { + "DEIPoolV2": { + "abi": [], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220b0a38230456adef733f0ffc6d11b53d5d54076da0f208798a1fd7f79532357a064736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB0 LOG3 DUP3 ADDRESS GASLIMIT PUSH11 0xDEF733F0FFC6D11B53D5D5 BLOCKHASH PUSH23 0xDA0F208798A1FD7F79532357A064736F6C634300080A00 CALLER ", + "sourceMap": "1245:357:0:-:0;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "6080604052600080fdfea2646970667358221220b0a38230456adef733f0ffc6d11b53d5d54076da0f208798a1fd7f79532357a064736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB0 LOG3 DUP3 ADDRESS GASLIMIT PUSH11 0xDEF733F0FFC6D11B53D5D5 BLOCKHASH PUSH23 0xDA0F208798A1FD7F79532357A064736F6C634300080A00 CALLER ", + "sourceMap": "1245:357:0:-:0;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "12600", + "executionCost": "66", + "totalCost": "12666" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/DEI/Pools/DEIPoolV2.sol\":\"DEIPoolV2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/DEI/Pools/DEIPoolV2.sol\":{\"content\":\"// TODO: change licence\\n// SPDX-License-Identifier: MIT\\n// Be name Khoda\\n// Bime Abolfazl\\n\\npragma solidity ^0.8.9;\\npragma abicoder v2;\\n// =================================================================================================================\\n// _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| |\\n// _| _| _| _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| |\\n// _| _| _|_|_| _| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_|_|_| |\\n// _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| |\\n// _|_|_| _|_|_|_| _|_| _|_|_| _| _| _| _| _|_|_| _| _| _|_|_| _|_|_| |\\n// =================================================================================================================\\n// ============================= DEIPoolV2 ============================\\n// ====================================================================\\n// DEUS Finance: https://github.com/DeusFinance\\n\\n// Primary Author(s)\\n// Vahid Gh: https://github.com/vahid-dev\\n\\n// Reviewer(s) / Contributor(s)\\n\\n\\ncontract DEIPoolV2 {\\n\\n /* ========== STATE VARIABLES ========== */\\n\\n\\n\\n /* ========== MODIFIERS ========== */\\n\\n\\n\\n /* ========== CONSTRUCTOR ========== */\\n\\n\\n\\n /* ========== PUBLIC FUNCTIONS ========== */\\n\\n\\n\\n /* ========== VIEWS ========== */\\n\\n\\n\\n /* ========== RESTRICTED FUNCTIONS ========== */\\n\\n\\n\\n /* ========== EVENTS ========== */\\n\\n\\n\\n}\\n\\n//Dar panah khoda\\n\",\"keccak256\":\"0x04d47d67d4dfde9acb3079e3387a9b51db2917ab67fe6b9ca9a9431fe48ca233\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "sources": { + "contracts/DEI/Pools/DEIPoolV2.sol": { + "ast": { + "absolutePath": "contracts/DEI/Pools/DEIPoolV2.sol", + "exportedSymbols": { + "DEIPoolV2": [ + 3 + ] + }, + "id": 4, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.8", + ".9" + ], + "nodeType": "PragmaDirective", + "src": "91:23:0" + }, + { + "id": 2, + "literals": [ + "abicoder", + "v2" + ], + "nodeType": "PragmaDirective", + "src": "115:19:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "DEIPoolV2", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 3, + "linearizedBaseContracts": [ + 3 + ], + "name": "DEIPoolV2", + "nameLocation": "1254:9:0", + "nodeType": "ContractDefinition", + "nodes": [], + "scope": 4, + "src": "1245:357:0", + "usedErrors": [] + } + ], + "src": "91:1531:0" + }, + "id": 0 + } + } + } +} diff --git a/artifacts/build-info/51a26ee47a81853244b8cbfafc116d4f.json b/artifacts/build-info/51a26ee47a81853244b8cbfafc116d4f.json new file mode 100644 index 00000000..276422c4 --- /dev/null +++ b/artifacts/build-info/51a26ee47a81853244b8cbfafc116d4f.json @@ -0,0 +1,3308 @@ +{ + "id": "51a26ee47a81853244b8cbfafc116d4f", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.10", + "solcLongVersion": "0.8.10+commit.fc410830", + "input": { + "language": "Solidity", + "sources": { + "contracts/Staking/Owned.sol": { + "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.6.11;\n\n// https://docs.synthetix.io/contracts/Owned\ncontract Owned {\n address public owner;\n address public nominatedOwner;\n\n constructor(address _owner) public {\n require(_owner != address(0), \"Owner address cannot be 0\");\n owner = _owner;\n emit OwnerChanged(address(0), _owner);\n }\n\n function nominateNewOwner(address _owner) external onlyOwner {\n nominatedOwner = _owner;\n emit OwnerNominated(_owner);\n }\n\n function acceptOwnership() external {\n require(msg.sender == nominatedOwner, \"You must be nominated before you can accept ownership\");\n emit OwnerChanged(owner, nominatedOwner);\n owner = nominatedOwner;\n nominatedOwner = address(0);\n }\n\n modifier onlyOwner {\n require(msg.sender == owner, \"Only the contract owner may perform this action\");\n _;\n }\n\n event OwnerNominated(address newOwner);\n event OwnerChanged(address oldOwner, address newOwner);\n}" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "output": { + "contracts": { + "contracts/Staking/Owned.sol": { + "Owned": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldOwner", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnerChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnerNominated", + "type": "event" + }, + { + "inputs": [], + "name": "acceptOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "name": "nominateNewOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "nominatedOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": { + "@_33": { + "entryPoint": null, + "id": 33, + "parameterSlots": 1, + "returnSlots": 0 + }, + "abi_decode_tuple_t_address_fromMemory": { + "entryPoint": 230, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_cbb17bca9ae641614fb20d9f081dbba535c7a48d3eadd7b25242a97252df8c96__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:969:1", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:1", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "95:209:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "141:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "150:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "153:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "143:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "143:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "143:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "116:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "125:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "112:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "112:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "137:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "108:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "108:32:1" + }, + "nodeType": "YulIf", + "src": "105:52:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "166:29:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "185:9:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "179:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "179:16:1" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "170:5:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "258:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "267:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "270:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "260:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "260:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "260:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "217:5:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "228:5:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "243:3:1", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "248:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "239:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "239:11:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "252:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "235:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "235:19:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "224:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "224:31:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "214:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "214:42:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "207:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "207:50:1" + }, + "nodeType": "YulIf", + "src": "204:70:1" + }, + { + "nodeType": "YulAssignment", + "src": "283:15:1", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "293:5:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "283:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "61:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "72:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "84:6:1", + "type": "" + } + ], + "src": "14:290:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "483:175:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "500:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "511:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "493:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "493:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "493:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "534:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "545:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "530:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "530:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "550:2:1", + "type": "", + "value": "25" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "523:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "523:30:1" + }, + "nodeType": "YulExpressionStatement", + "src": "523:30:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "573:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "584:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "569:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "569:18:1" + }, + { + "hexValue": "4f776e657220616464726573732063616e6e6f742062652030", + "kind": "string", + "nodeType": "YulLiteral", + "src": "589:27:1", + "type": "", + "value": "Owner address cannot be 0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "562:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "562:55:1" + }, + "nodeType": "YulExpressionStatement", + "src": "562:55:1" + }, + { + "nodeType": "YulAssignment", + "src": "626:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "638:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "649:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "634:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "634:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "626:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_cbb17bca9ae641614fb20d9f081dbba535c7a48d3eadd7b25242a97252df8c96__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "460:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "474:4:1", + "type": "" + } + ], + "src": "309:349:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "792:175:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "802:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "814:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "825:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "810:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "810:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "802:4:1" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "837:29:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "855:3:1", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "860:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "851:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "851:11:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "864:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "847:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "847:19:1" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "841:2:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "882:9:1" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "897:6:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "905:2:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "893:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "893:15:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "875:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "875:34:1" + }, + "nodeType": "YulExpressionStatement", + "src": "875:34:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "929:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "940:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "925:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "925:18:1" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "949:6:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "957:2:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "945:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "945:15:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "918:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "918:43:1" + }, + "nodeType": "YulExpressionStatement", + "src": "918:43:1" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "753:9:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "764:6:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "772:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "783:4:1", + "type": "" + } + ], + "src": "663:304:1" + } + ] + }, + "contents": "{\n { }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_cbb17bca9ae641614fb20d9f081dbba535c7a48d3eadd7b25242a97252df8c96__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 25)\n mstore(add(headStart, 64), \"Owner address cannot be 0\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n}", + "id": 1, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506040516104df3803806104df83398101604081905261002f916100e6565b6001600160a01b0381166100895760405162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f74206265203000000000000000604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b03831690811782556040805192835260208301919091527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a150610116565b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b9392505050565b6103ba806101256000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80631627540c1461005157806353a47bb71461006657806379ba5097146100af5780638da5cb5b146100b7575b600080fd5b61006461005f366004610347565b6100d7565b005b6001546100869073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100646101fc565b6000546100869073ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201527f6f726d207468697320616374696f6e000000000000000000000000000000000060648201526084015b60405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527f2063616e20616363657074206f776e6572736869700000000000000000000000606482015260840161017a565b6000546001546040805173ffffffffffffffffffffffffffffffffffffffff93841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b60006020828403121561035957600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461037d57600080fd5b939250505056fea264697066735822122063122e6c6449141bf34b22412efe7f1ced698395b40a277548d3fa98f92fd57f64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x4DF CODESIZE SUB DUP1 PUSH2 0x4DF DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xE6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x89 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E657220616464726573732063616E6E6F74206265203000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xB532073B38C83145E3E5135377A08BF9AAB55BC0FD7C1179CD4FB995D2A5159C SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH2 0x116 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x10F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x3BA DUP1 PUSH2 0x125 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1627540C EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x53A47BB7 EQ PUSH2 0x66 JUMPI DUP1 PUSH4 0x79BA5097 EQ PUSH2 0xAF JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xB7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0x347 JUMP JUMPDEST PUSH2 0xD7 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x86 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH2 0x1FC JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x86 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x183 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C792074686520636F6E7472616374206F776E6572206D61792070657266 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F726D207468697320616374696F6E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x906A1C6BD7E3091EA86693DD029A831C19049CE77F1DCE2CE0BAB1CACBABCE22 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x2A3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x35 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x596F75206D757374206265206E6F6D696E61746564206265666F726520796F75 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2063616E20616363657074206F776E6572736869700000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x17A JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0xB532073B38C83145E3E5135377A08BF9AAB55BC0FD7C1179CD4FB995D2A5159C SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 DUP1 SLOAD PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND OR SWAP1 SWAP2 SSTORE AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x359 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0x122E6C64 0x49 EQ SHL RETURN 0x4B 0x22 COINBASE 0x2E INVALID PUSH32 0x1CED698395B40A277548D3FA98F92FD57F64736F6C634300080A003300000000 ", + "sourceMap": "117:919:0:-:0;;;200:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;253:20:0;;245:58;;;;-1:-1:-1;;;245:58:0;;511:2:1;245:58:0;;;493:21:1;550:2;530:18;;;523:30;589:27;569:18;;;562:55;634:18;;245:58:0;;;;;;;;313:5;:14;;-1:-1:-1;;;;;;313:14:0;-1:-1:-1;;;;;313:14:0;;;;;;;342:32;;;875:34:1;;;940:2;925:18;;918:43;;;;342:32:0;;810:18:1;342:32:0;;;;;;;200:181;117:919;;14:290:1;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:1;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:1:o;663:304::-;117:919:0;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@acceptOwnership_77": { + "entryPoint": 508, + "id": 77, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@nominateNewOwner_49": { + "entryPoint": 215, + "id": 49, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@nominatedOwner_5": { + "entryPoint": null, + "id": 5, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@owner_3": { + "entryPoint": null, + "id": 3, + "parameterSlots": 0, + "returnSlots": 0 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 839, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_1149e36cd24095bebc9341ef03810e0e2a00039190624df6f2d7934141e2233b__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_873d2051b76e0142b287297afdfc273bf1ab5c24ee229ed4ef117f1ff0679a4a__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:1726:1", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:1", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "84:239:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "130:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "139:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "142:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "132:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "132:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "132:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "105:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "114:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "101:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "101:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "126:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "97:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "97:32:1" + }, + "nodeType": "YulIf", + "src": "94:52:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "155:36:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "181:9:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "168:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "168:23:1" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "159:5:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "277:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "286:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "289:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "279:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "279:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "279:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "213:5:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "224:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "231:42:1", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "220:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "220:54:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "210:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "210:65:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "203:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "203:73:1" + }, + "nodeType": "YulIf", + "src": "200:93:1" + }, + { + "nodeType": "YulAssignment", + "src": "302:15:1", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "312:5:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "302:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "50:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "61:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "73:6:1", + "type": "" + } + ], + "src": "14:309:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "429:125:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "439:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "451:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "462:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "447:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "447:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "439:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "481:9:1" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "496:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "504:42:1", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "492:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "492:55:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "474:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "474:74:1" + }, + "nodeType": "YulExpressionStatement", + "src": "474:74:1" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "398:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "409:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "420:4:1", + "type": "" + } + ], + "src": "328:226:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "733:237:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "750:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "761:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "743:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "743:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "743:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "784:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "795:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "780:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "780:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "800:2:1", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "773:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "773:30:1" + }, + "nodeType": "YulExpressionStatement", + "src": "773:30:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "823:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "834:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "819:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "819:18:1" + }, + { + "hexValue": "4f6e6c792074686520636f6e7472616374206f776e6572206d61792070657266", + "kind": "string", + "nodeType": "YulLiteral", + "src": "839:34:1", + "type": "", + "value": "Only the contract owner may perf" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "812:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "812:62:1" + }, + "nodeType": "YulExpressionStatement", + "src": "812:62:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "894:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "905:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "890:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "890:18:1" + }, + { + "hexValue": "6f726d207468697320616374696f6e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "910:17:1", + "type": "", + "value": "orm this action" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "883:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "883:45:1" + }, + "nodeType": "YulExpressionStatement", + "src": "883:45:1" + }, + { + "nodeType": "YulAssignment", + "src": "937:27:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "949:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "960:3:1", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "945:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "945:19:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "937:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_873d2051b76e0142b287297afdfc273bf1ab5c24ee229ed4ef117f1ff0679a4a__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "710:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "724:4:1", + "type": "" + } + ], + "src": "559:411:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1149:243:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1166:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1177:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1159:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1159:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1159:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1200:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1211:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1196:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1196:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1216:2:1", + "type": "", + "value": "53" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1189:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1189:30:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1189:30:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1239:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1250:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1235:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1235:18:1" + }, + { + "hexValue": "596f75206d757374206265206e6f6d696e61746564206265666f726520796f75", + "kind": "string", + "nodeType": "YulLiteral", + "src": "1255:34:1", + "type": "", + "value": "You must be nominated before you" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1228:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1228:62:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1228:62:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1310:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1321:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1306:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1306:18:1" + }, + { + "hexValue": "2063616e20616363657074206f776e657273686970", + "kind": "string", + "nodeType": "YulLiteral", + "src": "1326:23:1", + "type": "", + "value": " can accept ownership" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1299:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1299:51:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1299:51:1" + }, + { + "nodeType": "YulAssignment", + "src": "1359:27:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1371:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1382:3:1", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1367:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1367:19:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1359:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_1149e36cd24095bebc9341ef03810e0e2a00039190624df6f2d7934141e2233b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1126:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1140:4:1", + "type": "" + } + ], + "src": "975:417:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1526:198:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1536:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1548:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1559:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1544:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1544:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1536:4:1" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1571:52:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1581:42:1", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "1575:2:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1639:9:1" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1654:6:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "1662:2:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1650:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1650:15:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1632:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1632:34:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1632:34:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1686:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1697:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1682:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1682:18:1" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1706:6:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "1714:2:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1702:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1702:15:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1675:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1675:43:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1675:43:1" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1487:9:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1498:6:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1506:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1517:4:1", + "type": "" + } + ], + "src": "1397:327:1" + } + ] + }, + "contents": "{\n { }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_stringliteral_873d2051b76e0142b287297afdfc273bf1ab5c24ee229ed4ef117f1ff0679a4a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"Only the contract owner may perf\")\n mstore(add(headStart, 96), \"orm this action\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_1149e36cd24095bebc9341ef03810e0e2a00039190624df6f2d7934141e2233b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 53)\n mstore(add(headStart, 64), \"You must be nominated before you\")\n mstore(add(headStart, 96), \" can accept ownership\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n}", + "id": 1, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c80631627540c1461005157806353a47bb71461006657806379ba5097146100af5780638da5cb5b146100b7575b600080fd5b61006461005f366004610347565b6100d7565b005b6001546100869073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100646101fc565b6000546100869073ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201527f6f726d207468697320616374696f6e000000000000000000000000000000000060648201526084015b60405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527f2063616e20616363657074206f776e6572736869700000000000000000000000606482015260840161017a565b6000546001546040805173ffffffffffffffffffffffffffffffffffffffff93841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b60006020828403121561035957600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461037d57600080fd5b939250505056fea264697066735822122063122e6c6449141bf34b22412efe7f1ced698395b40a277548d3fa98f92fd57f64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1627540C EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x53A47BB7 EQ PUSH2 0x66 JUMPI DUP1 PUSH4 0x79BA5097 EQ PUSH2 0xAF JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xB7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0x347 JUMP JUMPDEST PUSH2 0xD7 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x86 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH2 0x1FC JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x86 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x183 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C792074686520636F6E7472616374206F776E6572206D61792070657266 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F726D207468697320616374696F6E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x906A1C6BD7E3091EA86693DD029A831C19049CE77F1DCE2CE0BAB1CACBABCE22 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x2A3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x35 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x596F75206D757374206265206E6F6D696E61746564206265666F726520796F75 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2063616E20616363657074206F776E6572736869700000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x17A JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0xB532073B38C83145E3E5135377A08BF9AAB55BC0FD7C1179CD4FB995D2A5159C SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 DUP1 SLOAD PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND OR SWAP1 SWAP2 SSTORE AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x359 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0x122E6C64 0x49 EQ SHL RETURN 0x4B 0x22 COINBASE 0x2E INVALID PUSH32 0x1CED698395B40A277548D3FA98F92FD57F64736F6C634300080A003300000000 ", + "sourceMap": "117:919:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;387:138;;;;;;:::i;:::-;;:::i;:::-;;164:29;;;;;;;;;;;;504:42:1;492:55;;;474:74;;462:2;447:18;164:29:0;;;;;;;531:266;;;:::i;138:20::-;;;;;;;;;387:138;854:5;;;;840:10;:19;832:79;;;;;;;761:2:1;832:79:0;;;743:21:1;800:2;780:18;;;773:30;839:34;819:18;;;812:62;910:17;890:18;;;883:45;945:19;;832:79:0;;;;;;;;;458:14:::1;:23:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;496:22:::1;::::0;474:74:1;;;496:22:0::1;::::0;462:2:1;447:18;496:22:0::1;;;;;;;387:138:::0;:::o;531:266::-;599:14;;;;585:10;:28;577:94;;;;;;;1177:2:1;577:94:0;;;1159:21:1;1216:2;1196:18;;;1189:30;1255:34;1235:18;;;1228:62;1326:23;1306:18;;;1299:51;1367:19;;577:94:0;975:417:1;577:94:0;699:5;;;706:14;686:35;;;699:5;;;;1632:34:1;;706:14:0;;;;1697:2:1;1682:18;;1675:43;686:35:0;;1544:18:1;686:35:0;;;;;;;739:14;;;;731:22;;;;;;739:14;;;731:22;;;;763:27;;;531:266::o;14:309:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;231:42;224:5;220:54;213:5;210:65;200:93;;289:1;286;279:12;200:93;312:5;14:309;-1:-1:-1;;;14:309:1:o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "190800", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "acceptOwnership()": "56297", + "nominateNewOwner(address)": "27656", + "nominatedOwner()": "2301", + "owner()": "2345" + } + }, + "methodIdentifiers": { + "acceptOwnership()": "79ba5097", + "nominateNewOwner(address)": "1627540c", + "nominatedOwner()": "53a47bb7", + "owner()": "8da5cb5b" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnerNominated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"nominateNewOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nominatedOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Staking/Owned.sol\":\"Owned\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Staking/Owned.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.6.11;\\n\\n// https://docs.synthetix.io/contracts/Owned\\ncontract Owned {\\n address public owner;\\n address public nominatedOwner;\\n\\n constructor(address _owner) public {\\n require(_owner != address(0), \\\"Owner address cannot be 0\\\");\\n owner = _owner;\\n emit OwnerChanged(address(0), _owner);\\n }\\n\\n function nominateNewOwner(address _owner) external onlyOwner {\\n nominatedOwner = _owner;\\n emit OwnerNominated(_owner);\\n }\\n\\n function acceptOwnership() external {\\n require(msg.sender == nominatedOwner, \\\"You must be nominated before you can accept ownership\\\");\\n emit OwnerChanged(owner, nominatedOwner);\\n owner = nominatedOwner;\\n nominatedOwner = address(0);\\n }\\n\\n modifier onlyOwner {\\n require(msg.sender == owner, \\\"Only the contract owner may perform this action\\\");\\n _;\\n }\\n\\n event OwnerNominated(address newOwner);\\n event OwnerChanged(address oldOwner, address newOwner);\\n}\",\"keccak256\":\"0x091e74acb2031f65c1d57bdfc7a05b61845492f4c338c182762112c3ceaf0591\",\"license\":\"GPL-2.0-or-later\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 3, + "contract": "contracts/Staking/Owned.sol:Owned", + "label": "owner", + "offset": 0, + "slot": "0", + "type": "t_address" + }, + { + "astId": 5, + "contract": "contracts/Staking/Owned.sol:Owned", + "label": "nominatedOwner", + "offset": 0, + "slot": "1", + "type": "t_address" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "errors": [ + { + "component": "general", + "errorCode": "2462", + "formattedMessage": "Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n --> contracts/Staking/Owned.sol:9:5:\n |\n9 | constructor(address _owner) public {\n | ^ (Relevant source part starts here and spans across multiple lines).\n\n", + "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.", + "severity": "warning", + "sourceLocation": { + "end": 381, + "file": "contracts/Staking/Owned.sol", + "start": 200 + }, + "type": "Warning" + } + ], + "sources": { + "contracts/Staking/Owned.sol": { + "ast": { + "absolutePath": "contracts/Staking/Owned.sol", + "exportedSymbols": { + "Owned": [ + 100 + ] + }, + "id": 101, + "license": "GPL-2.0-or-later", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "45:25:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Owned", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 100, + "linearizedBaseContracts": [ + 100 + ], + "name": "Owned", + "nameLocation": "126:5:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "8da5cb5b", + "id": 3, + "mutability": "mutable", + "name": "owner", + "nameLocation": "153:5:0", + "nodeType": "VariableDeclaration", + "scope": 100, + "src": "138:20:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "138:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "53a47bb7", + "id": 5, + "mutability": "mutable", + "name": "nominatedOwner", + "nameLocation": "179:14:0", + "nodeType": "VariableDeclaration", + "scope": 100, + "src": "164:29:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "164:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 32, + "nodeType": "Block", + "src": "235:146:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 16, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "253:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 14, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "271:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 13, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "263:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 12, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "263:7:0", + "typeDescriptions": {} + } + }, + "id": 15, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "263:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "253:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4f776e657220616464726573732063616e6e6f742062652030", + "id": 17, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "275:27:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cbb17bca9ae641614fb20d9f081dbba535c7a48d3eadd7b25242a97252df8c96", + "typeString": "literal_string \"Owner address cannot be 0\"" + }, + "value": "Owner address cannot be 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cbb17bca9ae641614fb20d9f081dbba535c7a48d3eadd7b25242a97252df8c96", + "typeString": "literal_string \"Owner address cannot be 0\"" + } + ], + "id": 10, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "245:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 18, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "245:58:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 19, + "nodeType": "ExpressionStatement", + "src": "245:58:0" + }, + { + "expression": { + "id": 22, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 20, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "313:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 21, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "321:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "313:14:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 23, + "nodeType": "ExpressionStatement", + "src": "313:14:0" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 27, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "363:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 26, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "355:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 25, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "355:7:0", + "typeDescriptions": {} + } + }, + "id": 28, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "355:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 29, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "367:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 24, + "name": "OwnerChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 99, + "src": "342:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 30, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "342:32:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 31, + "nodeType": "EmitStatement", + "src": "337:37:0" + } + ] + }, + "id": 33, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "220:6:0", + "nodeType": "VariableDeclaration", + "scope": 33, + "src": "212:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "212:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "211:16:0" + }, + "returnParameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [], + "src": "235:0:0" + }, + "scope": 100, + "src": "200:181:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 48, + "nodeType": "Block", + "src": "448:77:0", + "statements": [ + { + "expression": { + "id": 42, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 40, + "name": "nominatedOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "458:14:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 41, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "475:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "458:23:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 43, + "nodeType": "ExpressionStatement", + "src": "458:23:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 45, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "511:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 44, + "name": "OwnerNominated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 93, + "src": "496:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 46, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "496:22:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 47, + "nodeType": "EmitStatement", + "src": "491:27:0" + } + ] + }, + "functionSelector": "1627540c", + "id": 49, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 38, + "kind": "modifierInvocation", + "modifierName": { + "id": 37, + "name": "onlyOwner", + "nodeType": "IdentifierPath", + "referencedDeclaration": 89, + "src": "438:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "438:9:0" + } + ], + "name": "nominateNewOwner", + "nameLocation": "396:16:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 36, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 35, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "421:6:0", + "nodeType": "VariableDeclaration", + "scope": 49, + "src": "413:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 34, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "413:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "412:16:0" + }, + "returnParameters": { + "id": 39, + "nodeType": "ParameterList", + "parameters": [], + "src": "448:0:0" + }, + "scope": 100, + "src": "387:138:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 76, + "nodeType": "Block", + "src": "567:230:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 56, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 53, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "585:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 54, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "585:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 55, + "name": "nominatedOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "599:14:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "585:28:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e657273686970", + "id": 57, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "615:55:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1149e36cd24095bebc9341ef03810e0e2a00039190624df6f2d7934141e2233b", + "typeString": "literal_string \"You must be nominated before you can accept ownership\"" + }, + "value": "You must be nominated before you can accept ownership" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1149e36cd24095bebc9341ef03810e0e2a00039190624df6f2d7934141e2233b", + "typeString": "literal_string \"You must be nominated before you can accept ownership\"" + } + ], + "id": 52, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "577:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "577:94:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 59, + "nodeType": "ExpressionStatement", + "src": "577:94:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 61, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "699:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 62, + "name": "nominatedOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "706:14:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 60, + "name": "OwnerChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 99, + "src": "686:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 63, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "686:35:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 64, + "nodeType": "EmitStatement", + "src": "681:40:0" + }, + { + "expression": { + "id": 67, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 65, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "731:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 66, + "name": "nominatedOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "739:14:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "731:22:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 68, + "nodeType": "ExpressionStatement", + "src": "731:22:0" + }, + { + "expression": { + "id": 74, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 69, + "name": "nominatedOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "763:14:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 72, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "788:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 71, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "780:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 70, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "780:7:0", + "typeDescriptions": {} + } + }, + "id": 73, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "780:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "763:27:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 75, + "nodeType": "ExpressionStatement", + "src": "763:27:0" + } + ] + }, + "functionSelector": "79ba5097", + "id": 77, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "acceptOwnership", + "nameLocation": "540:15:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 50, + "nodeType": "ParameterList", + "parameters": [], + "src": "555:2:0" + }, + "returnParameters": { + "id": 51, + "nodeType": "ParameterList", + "parameters": [], + "src": "567:0:0" + }, + "scope": 100, + "src": "531:266:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 88, + "nodeType": "Block", + "src": "822:107:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 83, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 80, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "840:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 81, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "840:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 82, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "854:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "840:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6e", + "id": 84, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "861:49:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_873d2051b76e0142b287297afdfc273bf1ab5c24ee229ed4ef117f1ff0679a4a", + "typeString": "literal_string \"Only the contract owner may perform this action\"" + }, + "value": "Only the contract owner may perform this action" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_873d2051b76e0142b287297afdfc273bf1ab5c24ee229ed4ef117f1ff0679a4a", + "typeString": "literal_string \"Only the contract owner may perform this action\"" + } + ], + "id": 79, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "832:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 85, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "832:79:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 86, + "nodeType": "ExpressionStatement", + "src": "832:79:0" + }, + { + "id": 87, + "nodeType": "PlaceholderStatement", + "src": "921:1:0" + } + ] + }, + "id": 89, + "name": "onlyOwner", + "nameLocation": "812:9:0", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 78, + "nodeType": "ParameterList", + "parameters": [], + "src": "822:0:0" + }, + "src": "803:126:0", + "virtual": false, + "visibility": "internal" + }, + { + "anonymous": false, + "id": 93, + "name": "OwnerNominated", + "nameLocation": "941:14:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 92, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 91, + "indexed": false, + "mutability": "mutable", + "name": "newOwner", + "nameLocation": "964:8:0", + "nodeType": "VariableDeclaration", + "scope": 93, + "src": "956:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 90, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "956:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "955:18:0" + }, + "src": "935:39:0" + }, + { + "anonymous": false, + "id": 99, + "name": "OwnerChanged", + "nameLocation": "985:12:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 98, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 95, + "indexed": false, + "mutability": "mutable", + "name": "oldOwner", + "nameLocation": "1006:8:0", + "nodeType": "VariableDeclaration", + "scope": 99, + "src": "998:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 94, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "998:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 97, + "indexed": false, + "mutability": "mutable", + "name": "newOwner", + "nameLocation": "1024:8:0", + "nodeType": "VariableDeclaration", + "scope": 99, + "src": "1016:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 96, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1016:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "997:36:0" + }, + "src": "979:55:0" + } + ], + "scope": 101, + "src": "117:919:0", + "usedErrors": [] + } + ], + "src": "45:991:0" + }, + "id": 0 + } + } + } +} diff --git a/artifacts/build-info/58bd5ffd63228c61538fb821e8a2de3d.json b/artifacts/build-info/58bd5ffd63228c61538fb821e8a2de3d.json new file mode 100644 index 00000000..a286faf7 --- /dev/null +++ b/artifacts/build-info/58bd5ffd63228c61538fb821e8a2de3d.json @@ -0,0 +1,900 @@ +{ + "id": "58bd5ffd63228c61538fb821e8a2de3d", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.10", + "solcLongVersion": "0.8.10+commit.fc410830", + "input": { + "language": "Solidity", + "sources": { + "contracts/Utils/StorageSlot.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n assembly {\n r.slot := slot\n }\n }\n}" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "output": { + "contracts": { + "contracts/Utils/StorageSlot.sol": { + "StorageSlot": { + "abi": [], + "devdoc": { + "details": "Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ``` contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._", + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122037a2c995ba78dd8150d0ea5aa5c2a120adec3d13d56af33186d4625e2d3b5e0464736f6c634300080a0033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATACOPY LOG2 0xC9 SWAP6 0xBA PUSH25 0xDD8150D0EA5AA5C2A120ADEC3D13D56AF33186D4625E2D3B5E DIV PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "1207:1219:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1207:1219:0;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122037a2c995ba78dd8150d0ea5aa5c2a120adec3d13d56af33186d4625e2d3b5e0464736f6c634300080a0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATACOPY LOG2 0xC9 SWAP6 0xBA PUSH25 0xDD8150D0EA5AA5C2A120ADEC3D13D56AF33186D4625E2D3B5E DIV PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "1207:1219:0:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17200", + "executionCost": "103", + "totalCost": "17303" + }, + "internal": { + "getAddressSlot(bytes32)": "infinite", + "getBooleanSlot(bytes32)": "infinite", + "getBytes32Slot(bytes32)": "infinite", + "getUint256Slot(bytes32)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ``` contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\",\"keccak256\":\"0x8b11be685cb1f1a574707f89190beac61ade63e30a1b98aca146b29f0e6b3e50\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "sources": { + "contracts/Utils/StorageSlot.sol": { + "ast": { + "absolutePath": "contracts/Utils/StorageSlot.sol", + "exportedSymbols": { + "StorageSlot": [ + 59 + ] + }, + "id": 60, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "StorageSlot", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 2, + "nodeType": "StructuredDocumentation", + "src": "58:1148:0", + "text": " @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```\n contract ERC1967 {\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```\n _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._" + }, + "fullyImplemented": true, + "id": 59, + "linearizedBaseContracts": [ + 59 + ], + "name": "StorageSlot", + "nameLocation": "1215:11:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "StorageSlot.AddressSlot", + "id": 5, + "members": [ + { + "constant": false, + "id": 4, + "mutability": "mutable", + "name": "value", + "nameLocation": "1270:5:0", + "nodeType": "VariableDeclaration", + "scope": 5, + "src": "1262:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1262:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "name": "AddressSlot", + "nameLocation": "1240:11:0", + "nodeType": "StructDefinition", + "scope": 59, + "src": "1233:49:0", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.BooleanSlot", + "id": 8, + "members": [ + { + "constant": false, + "id": 7, + "mutability": "mutable", + "name": "value", + "nameLocation": "1322:5:0", + "nodeType": "VariableDeclaration", + "scope": 8, + "src": "1317:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1317:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "name": "BooleanSlot", + "nameLocation": "1295:11:0", + "nodeType": "StructDefinition", + "scope": 59, + "src": "1288:46:0", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.Bytes32Slot", + "id": 11, + "members": [ + { + "constant": false, + "id": 10, + "mutability": "mutable", + "name": "value", + "nameLocation": "1377:5:0", + "nodeType": "VariableDeclaration", + "scope": 11, + "src": "1369:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1369:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "name": "Bytes32Slot", + "nameLocation": "1347:11:0", + "nodeType": "StructDefinition", + "scope": 59, + "src": "1340:49:0", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.Uint256Slot", + "id": 14, + "members": [ + { + "constant": false, + "id": 13, + "mutability": "mutable", + "name": "value", + "nameLocation": "1432:5:0", + "nodeType": "VariableDeclaration", + "scope": 14, + "src": "1424:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1424:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "Uint256Slot", + "nameLocation": "1402:11:0", + "nodeType": "StructDefinition", + "scope": 59, + "src": "1395:49:0", + "visibility": "public" + }, + { + "body": { + "id": 24, + "nodeType": "Block", + "src": "1626:63:0", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "1645:38:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1659:14:0", + "value": { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "1669:4:0" + }, + "variableNames": [ + { + "name": "r.slot", + "nodeType": "YulIdentifier", + "src": "1659:6:0" + } + ] + } + ] + }, + "evmVersion": "london", + "externalReferences": [ + { + "declaration": 21, + "isOffset": false, + "isSlot": true, + "src": "1659:6:0", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 17, + "isOffset": false, + "isSlot": false, + "src": "1669:4:0", + "valueSize": 1 + } + ], + "id": 23, + "nodeType": "InlineAssembly", + "src": "1636:47:0" + } + ] + }, + "documentation": { + "id": 15, + "nodeType": "StructuredDocumentation", + "src": "1450:87:0", + "text": " @dev Returns an `AddressSlot` with member `value` located at `slot`." + }, + "id": 25, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAddressSlot", + "nameLocation": "1551:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 18, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17, + "mutability": "mutable", + "name": "slot", + "nameLocation": "1574:4:0", + "nodeType": "VariableDeclaration", + "scope": 25, + "src": "1566:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 16, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1566:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1565:14:0" + }, + "returnParameters": { + "id": 22, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 21, + "mutability": "mutable", + "name": "r", + "nameLocation": "1623:1:0", + "nodeType": "VariableDeclaration", + "scope": 25, + "src": "1603:21:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$5_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot" + }, + "typeName": { + "id": 20, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 19, + "name": "AddressSlot", + "nodeType": "IdentifierPath", + "referencedDeclaration": 5, + "src": "1603:11:0" + }, + "referencedDeclaration": 5, + "src": "1603:11:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$5_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot" + } + }, + "visibility": "internal" + } + ], + "src": "1602:23:0" + }, + "scope": 59, + "src": "1542:147:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 35, + "nodeType": "Block", + "src": "1871:63:0", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "1890:38:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1904:14:0", + "value": { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "1914:4:0" + }, + "variableNames": [ + { + "name": "r.slot", + "nodeType": "YulIdentifier", + "src": "1904:6:0" + } + ] + } + ] + }, + "evmVersion": "london", + "externalReferences": [ + { + "declaration": 32, + "isOffset": false, + "isSlot": true, + "src": "1904:6:0", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 28, + "isOffset": false, + "isSlot": false, + "src": "1914:4:0", + "valueSize": 1 + } + ], + "id": 34, + "nodeType": "InlineAssembly", + "src": "1881:47:0" + } + ] + }, + "documentation": { + "id": 26, + "nodeType": "StructuredDocumentation", + "src": "1695:87:0", + "text": " @dev Returns an `BooleanSlot` with member `value` located at `slot`." + }, + "id": 36, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBooleanSlot", + "nameLocation": "1796:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 29, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 28, + "mutability": "mutable", + "name": "slot", + "nameLocation": "1819:4:0", + "nodeType": "VariableDeclaration", + "scope": 36, + "src": "1811:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 27, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1811:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1810:14:0" + }, + "returnParameters": { + "id": 33, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32, + "mutability": "mutable", + "name": "r", + "nameLocation": "1868:1:0", + "nodeType": "VariableDeclaration", + "scope": 36, + "src": "1848:21:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BooleanSlot_$8_storage_ptr", + "typeString": "struct StorageSlot.BooleanSlot" + }, + "typeName": { + "id": 31, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 30, + "name": "BooleanSlot", + "nodeType": "IdentifierPath", + "referencedDeclaration": 8, + "src": "1848:11:0" + }, + "referencedDeclaration": 8, + "src": "1848:11:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BooleanSlot_$8_storage_ptr", + "typeString": "struct StorageSlot.BooleanSlot" + } + }, + "visibility": "internal" + } + ], + "src": "1847:23:0" + }, + "scope": 59, + "src": "1787:147:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 46, + "nodeType": "Block", + "src": "2116:63:0", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "2135:38:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2149:14:0", + "value": { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "2159:4:0" + }, + "variableNames": [ + { + "name": "r.slot", + "nodeType": "YulIdentifier", + "src": "2149:6:0" + } + ] + } + ] + }, + "evmVersion": "london", + "externalReferences": [ + { + "declaration": 43, + "isOffset": false, + "isSlot": true, + "src": "2149:6:0", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 39, + "isOffset": false, + "isSlot": false, + "src": "2159:4:0", + "valueSize": 1 + } + ], + "id": 45, + "nodeType": "InlineAssembly", + "src": "2126:47:0" + } + ] + }, + "documentation": { + "id": 37, + "nodeType": "StructuredDocumentation", + "src": "1940:87:0", + "text": " @dev Returns an `Bytes32Slot` with member `value` located at `slot`." + }, + "id": 47, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBytes32Slot", + "nameLocation": "2041:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 40, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 39, + "mutability": "mutable", + "name": "slot", + "nameLocation": "2064:4:0", + "nodeType": "VariableDeclaration", + "scope": 47, + "src": "2056:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 38, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2056:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2055:14:0" + }, + "returnParameters": { + "id": 44, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43, + "mutability": "mutable", + "name": "r", + "nameLocation": "2113:1:0", + "nodeType": "VariableDeclaration", + "scope": 47, + "src": "2093:21:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Slot_$11_storage_ptr", + "typeString": "struct StorageSlot.Bytes32Slot" + }, + "typeName": { + "id": 42, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 41, + "name": "Bytes32Slot", + "nodeType": "IdentifierPath", + "referencedDeclaration": 11, + "src": "2093:11:0" + }, + "referencedDeclaration": 11, + "src": "2093:11:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Slot_$11_storage_ptr", + "typeString": "struct StorageSlot.Bytes32Slot" + } + }, + "visibility": "internal" + } + ], + "src": "2092:23:0" + }, + "scope": 59, + "src": "2032:147:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 57, + "nodeType": "Block", + "src": "2361:63:0", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "2380:38:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2394:14:0", + "value": { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "2404:4:0" + }, + "variableNames": [ + { + "name": "r.slot", + "nodeType": "YulIdentifier", + "src": "2394:6:0" + } + ] + } + ] + }, + "evmVersion": "london", + "externalReferences": [ + { + "declaration": 54, + "isOffset": false, + "isSlot": true, + "src": "2394:6:0", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 50, + "isOffset": false, + "isSlot": false, + "src": "2404:4:0", + "valueSize": 1 + } + ], + "id": 56, + "nodeType": "InlineAssembly", + "src": "2371:47:0" + } + ] + }, + "documentation": { + "id": 48, + "nodeType": "StructuredDocumentation", + "src": "2185:87:0", + "text": " @dev Returns an `Uint256Slot` with member `value` located at `slot`." + }, + "id": 58, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getUint256Slot", + "nameLocation": "2286:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 51, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50, + "mutability": "mutable", + "name": "slot", + "nameLocation": "2309:4:0", + "nodeType": "VariableDeclaration", + "scope": 58, + "src": "2301:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 49, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2301:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2300:14:0" + }, + "returnParameters": { + "id": 55, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 54, + "mutability": "mutable", + "name": "r", + "nameLocation": "2358:1:0", + "nodeType": "VariableDeclaration", + "scope": 58, + "src": "2338:21:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Uint256Slot_$14_storage_ptr", + "typeString": "struct StorageSlot.Uint256Slot" + }, + "typeName": { + "id": 53, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 52, + "name": "Uint256Slot", + "nodeType": "IdentifierPath", + "referencedDeclaration": 14, + "src": "2338:11:0" + }, + "referencedDeclaration": 14, + "src": "2338:11:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Uint256Slot_$14_storage_ptr", + "typeString": "struct StorageSlot.Uint256Slot" + } + }, + "visibility": "internal" + } + ], + "src": "2337:23:0" + }, + "scope": 59, + "src": "2277:147:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 60, + "src": "1207:1219:0", + "usedErrors": [] + } + ], + "src": "33:2393:0" + }, + "id": 0 + } + } + } +} diff --git a/artifacts/build-info/808708eefcf7951d3fef300aa4bbb87e.json b/artifacts/build-info/808708eefcf7951d3fef300aa4bbb87e.json new file mode 100644 index 00000000..4d7c3dca --- /dev/null +++ b/artifacts/build-info/808708eefcf7951d3fef300aa4bbb87e.json @@ -0,0 +1,2404 @@ +{ + "id": "808708eefcf7951d3fef300aa4bbb87e", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.10", + "solcLongVersion": "0.8.10+commit.fc410830", + "input": { + "language": "Solidity", + "sources": { + "contracts/Math/MagnitudesAndPowers.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\n// https://ethereum.stackexchange.com/a/69590\nlibrary MagnitudesAndPowers {\n \n function magnitude (uint x) public pure returns (uint) {\n require (x > 0);\n\n uint a = 0;\n uint b = 77;\n\n while (b > a) {\n uint m = a + b + 1 >> 1;\n if (x >= pow10 (m)) a = m;\n else b = m - 1;\n }\n\n return a;\n }\n\n function pow10 (uint x) private pure returns (uint) {\n uint result = 1;\n uint y = 10;\n while (x > 0) {\n if (x % 2 == 1) {\n result *= y;\n x -= 1;\n } else {\n y *= y;\n x >>= 1;\n }\n }\n return result;\n }\n\n}" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "output": { + "contracts": { + "contracts/Math/MagnitudesAndPowers.sol": { + "MagnitudesAndPowers": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "magnitude", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "61024461003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c80632ba96f631461003a575b600080fd5b61004d61004836600461011f565b61005f565b60405190815260200160405180910390f35b600080821161006d57600080fd5b6000604d5b818111156100c257600060016100888385610167565b610093906001610167565b901c90506100a0816100c9565b85106100ae578092506100bc565b6100b960018261017f565b91505b50610072565b5092915050565b60006001600a5b83156100c2576100e1600285610196565b60011415610107576100f381836101d1565b915061010060018561017f565b93506100d0565b61011181806101d1565b9050600184901c93506100d0565b60006020828403121561013157600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561017a5761017a610138565b500190565b60008282101561019157610191610138565b500390565b6000826101cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561020957610209610138565b50029056fea2646970667358221220f4b57d48c7c6315f8c36d1657c41c85b24284cac6a480aa1624613069b5d214264736f6c634300080a0033", + "opcodes": "PUSH2 0x244 PUSH2 0x3A PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x2D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x35 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2BA96F63 EQ PUSH2 0x3A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4D PUSH2 0x48 CALLDATASIZE PUSH1 0x4 PUSH2 0x11F JUMP JUMPDEST PUSH2 0x5F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4D JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xC2 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH2 0x88 DUP4 DUP6 PUSH2 0x167 JUMP JUMPDEST PUSH2 0x93 SWAP1 PUSH1 0x1 PUSH2 0x167 JUMP JUMPDEST SWAP1 SHR SWAP1 POP PUSH2 0xA0 DUP2 PUSH2 0xC9 JUMP JUMPDEST DUP6 LT PUSH2 0xAE JUMPI DUP1 SWAP3 POP PUSH2 0xBC JUMP JUMPDEST PUSH2 0xB9 PUSH1 0x1 DUP3 PUSH2 0x17F JUMP JUMPDEST SWAP2 POP JUMPDEST POP PUSH2 0x72 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA JUMPDEST DUP4 ISZERO PUSH2 0xC2 JUMPI PUSH2 0xE1 PUSH1 0x2 DUP6 PUSH2 0x196 JUMP JUMPDEST PUSH1 0x1 EQ ISZERO PUSH2 0x107 JUMPI PUSH2 0xF3 DUP2 DUP4 PUSH2 0x1D1 JUMP JUMPDEST SWAP2 POP PUSH2 0x100 PUSH1 0x1 DUP6 PUSH2 0x17F JUMP JUMPDEST SWAP4 POP PUSH2 0xD0 JUMP JUMPDEST PUSH2 0x111 DUP2 DUP1 PUSH2 0x1D1 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP5 SWAP1 SHR SWAP4 POP PUSH2 0xD0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x17A JUMPI PUSH2 0x17A PUSH2 0x138 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x191 JUMPI PUSH2 0x191 PUSH2 0x138 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1CC JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x209 JUMPI PUSH2 0x209 PUSH2 0x138 JUMP JUMPDEST POP MUL SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DELEGATECALL 0xB5 PUSH30 0x48C7C6315F8C36D1657C41C85B24284CAC6A480AA1624613069B5D214264 PUSH20 0x6F6C634300080A00330000000000000000000000 ", + "sourceMap": "105:664:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;105:664:0;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@magnitude_56": { + "entryPoint": 95, + "id": 56, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@pow10_103": { + "entryPoint": 201, + "id": 103, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": 287, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 359, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_mul_t_uint256": { + "entryPoint": 465, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 383, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "mod_t_uint256": { + "entryPoint": 406, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 312, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:1342:1", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:1", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "84:110:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "130:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "139:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "142:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "132:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "132:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "132:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "105:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "114:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "101:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "101:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "126:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "97:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "97:32:1" + }, + "nodeType": "YulIf", + "src": "94:52:1" + }, + { + "nodeType": "YulAssignment", + "src": "155:33:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "178:9:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "165:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "165:23:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "155:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "50:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "61:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "73:6:1", + "type": "" + } + ], + "src": "14:180:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "308:76:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "318:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "330:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "341:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "326:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "326:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "318:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "360:9:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "371:6:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "353:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "353:25:1" + }, + "nodeType": "YulExpressionStatement", + "src": "353:25:1" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "277:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "288:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "299:4:1", + "type": "" + } + ], + "src": "199:185:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "421:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "438:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "441:77:1", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "431:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "431:88:1" + }, + "nodeType": "YulExpressionStatement", + "src": "431:88:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "535:1:1", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "538:4:1", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "528:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "528:15:1" + }, + "nodeType": "YulExpressionStatement", + "src": "528:15:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "559:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "562:4:1", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "552:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "552:15:1" + }, + "nodeType": "YulExpressionStatement", + "src": "552:15:1" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "389:184:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "626:80:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "653:22:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "655:16:1" + }, + "nodeType": "YulFunctionCall", + "src": "655:18:1" + }, + "nodeType": "YulExpressionStatement", + "src": "655:18:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "642:1:1" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "649:1:1" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "645:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "645:6:1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "639:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "639:13:1" + }, + "nodeType": "YulIf", + "src": "636:39:1" + }, + { + "nodeType": "YulAssignment", + "src": "684:16:1", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "695:1:1" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "698:1:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "691:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "691:9:1" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "684:3:1" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "609:1:1", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "612:1:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "618:3:1", + "type": "" + } + ], + "src": "578:128:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "760:76:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "782:22:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "784:16:1" + }, + "nodeType": "YulFunctionCall", + "src": "784:18:1" + }, + "nodeType": "YulExpressionStatement", + "src": "784:18:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "776:1:1" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "779:1:1" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "773:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "773:8:1" + }, + "nodeType": "YulIf", + "src": "770:34:1" + }, + { + "nodeType": "YulAssignment", + "src": "813:17:1", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "825:1:1" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "828:1:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "821:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "821:9:1" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "813:4:1" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "742:1:1", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "745:1:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "751:4:1", + "type": "" + } + ], + "src": "711:125:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "879:228:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "910:168:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "931:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "934:77:1", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "924:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "924:88:1" + }, + "nodeType": "YulExpressionStatement", + "src": "924:88:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1032:1:1", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1035:4:1", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1025:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1025:15:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1025:15:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1060:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1063:4:1", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1053:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1053:15:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1053:15:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "899:1:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "892:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "892:9:1" + }, + "nodeType": "YulIf", + "src": "889:189:1" + }, + { + "nodeType": "YulAssignment", + "src": "1087:14:1", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1096:1:1" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1099:1:1" + } + ], + "functionName": { + "name": "mod", + "nodeType": "YulIdentifier", + "src": "1092:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1092:9:1" + }, + "variableNames": [ + { + "name": "r", + "nodeType": "YulIdentifier", + "src": "1087:1:1" + } + ] + } + ] + }, + "name": "mod_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "864:1:1", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "867:1:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "r", + "nodeType": "YulTypedName", + "src": "873:1:1", + "type": "" + } + ], + "src": "841:266:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1164:176:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1283:22:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "1285:16:1" + }, + "nodeType": "YulFunctionCall", + "src": "1285:18:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1285:18:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1195:1:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1188:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1188:9:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1181:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1181:17:1" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1203:1:1" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1210:66:1", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1278:1:1" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "1206:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1206:74:1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1200:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "1200:81:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1177:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1177:105:1" + }, + "nodeType": "YulIf", + "src": "1174:131:1" + }, + { + "nodeType": "YulAssignment", + "src": "1314:20:1", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1329:1:1" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1332:1:1" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "1325:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1325:9:1" + }, + "variableNames": [ + { + "name": "product", + "nodeType": "YulIdentifier", + "src": "1314:7:1" + } + ] + } + ] + }, + "name": "checked_mul_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "1143:1:1", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "1146:1:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nodeType": "YulTypedName", + "src": "1152:7:1", + "type": "" + } + ], + "src": "1112:228:1" + } + ] + }, + "contents": "{\n { }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function mod_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := mod(x, y)\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n product := mul(x, y)\n }\n}", + "id": 1, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c80632ba96f631461003a575b600080fd5b61004d61004836600461011f565b61005f565b60405190815260200160405180910390f35b600080821161006d57600080fd5b6000604d5b818111156100c257600060016100888385610167565b610093906001610167565b901c90506100a0816100c9565b85106100ae578092506100bc565b6100b960018261017f565b91505b50610072565b5092915050565b60006001600a5b83156100c2576100e1600285610196565b60011415610107576100f381836101d1565b915061010060018561017f565b93506100d0565b61011181806101d1565b9050600184901c93506100d0565b60006020828403121561013157600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561017a5761017a610138565b500190565b60008282101561019157610191610138565b500390565b6000826101cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561020957610209610138565b50029056fea2646970667358221220f4b57d48c7c6315f8c36d1657c41c85b24284cac6a480aa1624613069b5d214264736f6c634300080a0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x35 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2BA96F63 EQ PUSH2 0x3A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4D PUSH2 0x48 CALLDATASIZE PUSH1 0x4 PUSH2 0x11F JUMP JUMPDEST PUSH2 0x5F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4D JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xC2 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH2 0x88 DUP4 DUP6 PUSH2 0x167 JUMP JUMPDEST PUSH2 0x93 SWAP1 PUSH1 0x1 PUSH2 0x167 JUMP JUMPDEST SWAP1 SHR SWAP1 POP PUSH2 0xA0 DUP2 PUSH2 0xC9 JUMP JUMPDEST DUP6 LT PUSH2 0xAE JUMPI DUP1 SWAP3 POP PUSH2 0xBC JUMP JUMPDEST PUSH2 0xB9 PUSH1 0x1 DUP3 PUSH2 0x17F JUMP JUMPDEST SWAP2 POP JUMPDEST POP PUSH2 0x72 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA JUMPDEST DUP4 ISZERO PUSH2 0xC2 JUMPI PUSH2 0xE1 PUSH1 0x2 DUP6 PUSH2 0x196 JUMP JUMPDEST PUSH1 0x1 EQ ISZERO PUSH2 0x107 JUMPI PUSH2 0xF3 DUP2 DUP4 PUSH2 0x1D1 JUMP JUMPDEST SWAP2 POP PUSH2 0x100 PUSH1 0x1 DUP6 PUSH2 0x17F JUMP JUMPDEST SWAP4 POP PUSH2 0xD0 JUMP JUMPDEST PUSH2 0x111 DUP2 DUP1 PUSH2 0x1D1 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP5 SWAP1 SHR SWAP4 POP PUSH2 0xD0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x17A JUMPI PUSH2 0x17A PUSH2 0x138 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x191 JUMPI PUSH2 0x191 PUSH2 0x138 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1CC JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x209 JUMPI PUSH2 0x209 PUSH2 0x138 JUMP JUMPDEST POP MUL SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DELEGATECALL 0xB5 PUSH30 0x48C7C6315F8C36D1657C41C85B24284CAC6A480AA1624613069B5D214264 PUSH20 0x6F6C634300080A00330000000000000000000000 ", + "sourceMap": "105:664:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;144:287;;;;;;:::i;:::-;;:::i;:::-;;;353:25:1;;;341:2;326:18;144:287:0;;;;;;;;193:4;222:1;218;:5;209:15;;;;;;235:6;264:2;277:129;288:1;284;:5;277:129;;;305:6;327:1;314:5;318:1;314;:5;:::i;:::-;:9;;322:1;314:9;:::i;:::-;:14;;305:23;;351:9;358:1;351:5;:9::i;:::-;346:1;:14;342:53;;366:1;362:5;;342:53;;;390:5;394:1;390;:5;:::i;:::-;386:9;;342:53;291:115;277:129;;;-1:-1:-1;423:1:0;144:287;-1:-1:-1;;144:287:0:o;437:329::-;483:4;513:1;533:2;545:192;552:5;;545:192;;577:5;581:1;577;:5;:::i;:::-;586:1;577:10;573:154;;;607:11;617:1;607:11;;:::i;:::-;;-1:-1:-1;636:6:0;641:1;636:6;;:::i;:::-;;;545:192;;573:154;681:6;686:1;;681:6;:::i;:::-;;;711:1;705:7;;;;;545:192;;14:180:1;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;389:184::-;441:77;438:1;431:88;538:4;535:1;528:15;562:4;559:1;552:15;578:128;618:3;649:1;645:6;642:1;639:13;636:39;;;655:18;;:::i;:::-;-1:-1:-1;691:9:1;;578:128::o;711:125::-;751:4;779:1;776;773:8;770:34;;;784:18;;:::i;:::-;-1:-1:-1;821:9:1;;711:125::o;841:266::-;873:1;899;889:189;;934:77;931:1;924:88;1035:4;1032:1;1025:15;1063:4;1060:1;1053:15;889:189;-1:-1:-1;1092:9:1;;841:266::o;1112:228::-;1152:7;1278:1;1210:66;1206:74;1203:1;1200:81;1195:1;1188:9;1181:17;1177:105;1174:131;;;1285:18;;:::i;:::-;-1:-1:-1;1325:9:1;;1112:228::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "116000", + "executionCost": "196", + "totalCost": "116196" + }, + "external": { + "magnitude(uint256)": "infinite" + }, + "internal": { + "pow10(uint256)": "infinite" + } + }, + "methodIdentifiers": { + "magnitude(uint256)": "2ba96f63" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"magnitude\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Math/MagnitudesAndPowers.sol\":\"MagnitudesAndPowers\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Math/MagnitudesAndPowers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\n// https://ethereum.stackexchange.com/a/69590\\nlibrary MagnitudesAndPowers {\\n \\n function magnitude (uint x) public pure returns (uint) {\\n require (x > 0);\\n\\n uint a = 0;\\n uint b = 77;\\n\\n while (b > a) {\\n uint m = a + b + 1 >> 1;\\n if (x >= pow10 (m)) a = m;\\n else b = m - 1;\\n }\\n\\n return a;\\n }\\n\\n function pow10 (uint x) private pure returns (uint) {\\n uint result = 1;\\n uint y = 10;\\n while (x > 0) {\\n if (x % 2 == 1) {\\n result *= y;\\n x -= 1;\\n } else {\\n y *= y;\\n x >>= 1;\\n }\\n }\\n return result;\\n }\\n\\n}\",\"keccak256\":\"0x26e211deda36d26b5f2c0bf7d5c8af4387375ecf3383b95fbc283226ae3d007a\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "sources": { + "contracts/Math/MagnitudesAndPowers.sol": { + "ast": { + "absolutePath": "contracts/Math/MagnitudesAndPowers.sol", + "exportedSymbols": { + "MagnitudesAndPowers": [ + 104 + ] + }, + "id": 105, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "MagnitudesAndPowers", + "contractDependencies": [], + "contractKind": "library", + "fullyImplemented": true, + "id": 104, + "linearizedBaseContracts": [ + 104 + ], + "name": "MagnitudesAndPowers", + "nameLocation": "113:19:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 55, + "nodeType": "Block", + "src": "199:232:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "218:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 10, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "222:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "218:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 8, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "209:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 12, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "209:15:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13, + "nodeType": "ExpressionStatement", + "src": "209:15:0" + }, + { + "assignments": [ + 15 + ], + "declarations": [ + { + "constant": false, + "id": 15, + "mutability": "mutable", + "name": "a", + "nameLocation": "240:1:0", + "nodeType": "VariableDeclaration", + "scope": 55, + "src": "235:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "235:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 17, + "initialValue": { + "hexValue": "30", + "id": 16, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "244:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "235:10:0" + }, + { + "assignments": [ + 19 + ], + "declarations": [ + { + "constant": false, + "id": 19, + "mutability": "mutable", + "name": "b", + "nameLocation": "260:1:0", + "nodeType": "VariableDeclaration", + "scope": 55, + "src": "255:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 18, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "255:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 21, + "initialValue": { + "hexValue": "3737", + "id": 20, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "264:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_77_by_1", + "typeString": "int_const 77" + }, + "value": "77" + }, + "nodeType": "VariableDeclarationStatement", + "src": "255:11:0" + }, + { + "body": { + "id": 51, + "nodeType": "Block", + "src": "291:115:0", + "statements": [ + { + "assignments": [ + 26 + ], + "declarations": [ + { + "constant": false, + "id": 26, + "mutability": "mutable", + "name": "m", + "nameLocation": "310:1:0", + "nodeType": "VariableDeclaration", + "scope": 51, + "src": "305:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 25, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "305:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 34, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 33, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 31, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 29, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 27, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15, + "src": "314:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 28, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 19, + "src": "318:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "314:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 30, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "322:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "314:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 32, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "327:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "314:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "305:23:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 39, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 35, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "346:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "arguments": [ + { + "id": 37, + "name": "m", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 26, + "src": "358:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 36, + "name": "pow10", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "351:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 38, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "351:9:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "346:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "expression": { + "id": 48, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 44, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 19, + "src": "386:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 47, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 45, + "name": "m", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 26, + "src": "390:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 46, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "394:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "390:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "386:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 49, + "nodeType": "ExpressionStatement", + "src": "386:9:0" + }, + "id": 50, + "nodeType": "IfStatement", + "src": "342:53:0", + "trueBody": { + "expression": { + "id": 42, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 40, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15, + "src": "362:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 41, + "name": "m", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 26, + "src": "366:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "362:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43, + "nodeType": "ExpressionStatement", + "src": "362:5:0" + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 24, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 22, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 19, + "src": "284:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 23, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15, + "src": "288:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "284:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 52, + "nodeType": "WhileStatement", + "src": "277:129:0" + }, + { + "expression": { + "id": 53, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15, + "src": "423:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7, + "id": 54, + "nodeType": "Return", + "src": "416:8:0" + } + ] + }, + "functionSelector": "2ba96f63", + "id": 56, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "magnitude", + "nameLocation": "153:9:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3, + "mutability": "mutable", + "name": "x", + "nameLocation": "169:1:0", + "nodeType": "VariableDeclaration", + "scope": 56, + "src": "164:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "164:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "163:8:0" + }, + "returnParameters": { + "id": 7, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 56, + "src": "193:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "193:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "192:6:0" + }, + "scope": 104, + "src": "144:287:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 102, + "nodeType": "Block", + "src": "489:277:0", + "statements": [ + { + "assignments": [ + 64 + ], + "declarations": [ + { + "constant": false, + "id": 64, + "mutability": "mutable", + "name": "result", + "nameLocation": "504:6:0", + "nodeType": "VariableDeclaration", + "scope": 102, + "src": "499:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 63, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "499:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 66, + "initialValue": { + "hexValue": "31", + "id": 65, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "513:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "VariableDeclarationStatement", + "src": "499:15:0" + }, + { + "assignments": [ + 68 + ], + "declarations": [ + { + "constant": false, + "id": 68, + "mutability": "mutable", + "name": "y", + "nameLocation": "529:1:0", + "nodeType": "VariableDeclaration", + "scope": 102, + "src": "524:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 67, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "524:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 70, + "initialValue": { + "hexValue": "3130", + "id": 69, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "533:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "VariableDeclarationStatement", + "src": "524:11:0" + }, + { + "body": { + "id": 98, + "nodeType": "Block", + "src": "559:178:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 78, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 76, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 74, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58, + "src": "577:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "hexValue": "32", + "id": 75, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "581:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "577:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "31", + "id": 77, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "586:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "577:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 96, + "nodeType": "Block", + "src": "663:64:0", + "statements": [ + { + "expression": { + "id": 90, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 88, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "681:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "id": 89, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "686:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "681:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 91, + "nodeType": "ExpressionStatement", + "src": "681:6:0" + }, + { + "expression": { + "id": 94, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 92, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58, + "src": "705:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "31", + "id": 93, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "711:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "705:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 95, + "nodeType": "ExpressionStatement", + "src": "705:7:0" + } + ] + }, + "id": 97, + "nodeType": "IfStatement", + "src": "573:154:0", + "trueBody": { + "id": 87, + "nodeType": "Block", + "src": "589:68:0", + "statements": [ + { + "expression": { + "id": 81, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 79, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64, + "src": "607:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "id": 80, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "617:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "607:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 82, + "nodeType": "ExpressionStatement", + "src": "607:11:0" + }, + { + "expression": { + "id": 85, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 83, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58, + "src": "636:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "hexValue": "31", + "id": 84, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "641:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "636:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 86, + "nodeType": "ExpressionStatement", + "src": "636:6:0" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 73, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 71, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58, + "src": "552:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 72, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "556:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "552:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 99, + "nodeType": "WhileStatement", + "src": "545:192:0" + }, + { + "expression": { + "id": 100, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64, + "src": "753:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 62, + "id": 101, + "nodeType": "Return", + "src": "746:13:0" + } + ] + }, + "id": 103, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "pow10", + "nameLocation": "446:5:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 59, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58, + "mutability": "mutable", + "name": "x", + "nameLocation": "458:1:0", + "nodeType": "VariableDeclaration", + "scope": 103, + "src": "453:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "453:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "452:8:0" + }, + "returnParameters": { + "id": 62, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 61, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 103, + "src": "483:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 60, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "483:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "482:6:0" + }, + "scope": 104, + "src": "437:329:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 105, + "src": "105:664:0", + "usedErrors": [] + } + ], + "src": "32:737:0" + }, + "id": 0 + } + } + } +} diff --git a/artifacts/build-info/86b4065249f5a55fd00cca9c75aad057.json b/artifacts/build-info/86b4065249f5a55fd00cca9c75aad057.json new file mode 100644 index 00000000..576b58f3 --- /dev/null +++ b/artifacts/build-info/86b4065249f5a55fd00cca9c75aad057.json @@ -0,0 +1,1320 @@ +{ + "id": "86b4065249f5a55fd00cca9c75aad057", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.10", + "solcLongVersion": "0.8.10+commit.fc410830", + "input": { + "language": "Solidity", + "sources": { + "contracts/Utils/MigrationHelper.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\ncontract MigrationHelper {\n address public owner;\n uint256 public gov_to_timelock_eta;\n\n modifier restricted() {\n if (msg.sender == owner) _;\n }\n\n constructor(address _owner) public {\n owner = _owner;\n }\n\n function setGovToTimeLockETA(uint256 _eta) public restricted {\n gov_to_timelock_eta = _eta;\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "output": { + "contracts": { + "contracts/Utils/MigrationHelper.sol": { + "MigrationHelper": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "gov_to_timelock_eta", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_eta", + "type": "uint256" + } + ], + "name": "setGovToTimeLockETA", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": { + "@_24": { + "entryPoint": null, + "id": 24, + "parameterSlots": 1, + "returnSlots": 0 + }, + "abi_decode_tuple_t_address_fromMemory": { + "entryPoint": 84, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:306:1", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:1", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "95:209:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "141:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "150:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "153:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "143:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "143:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "143:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "116:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "125:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "112:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "112:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "137:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "108:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "108:32:1" + }, + "nodeType": "YulIf", + "src": "105:52:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "166:29:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "185:9:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "179:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "179:16:1" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "170:5:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "258:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "267:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "270:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "260:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "260:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "260:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "217:5:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "228:5:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "243:3:1", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "248:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "239:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "239:11:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "252:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "235:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "235:19:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "224:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "224:31:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "214:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "214:42:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "207:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "207:50:1" + }, + "nodeType": "YulIf", + "src": "204:70:1" + }, + { + "nodeType": "YulAssignment", + "src": "283:15:1", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "293:5:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "283:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "61:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "72:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "84:6:1", + "type": "" + } + ], + "src": "14:290:1" + } + ] + }, + "contents": "{\n { }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n}", + "id": 1, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506040516101b93803806101b983398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610126806100936000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c806324403c991460415780638da5cb5b146052578063b179bafc14609b575b600080fd5b6050604c36600460d8565b60b0565b005b60005460719073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b60a360015481565b6040519081526020016092565b60005473ffffffffffffffffffffffffffffffffffffffff1633141560d55760018190555b50565b60006020828403121560e957600080fd5b503591905056fea26469706673582212203e14453934514a861ac871b60aece10346ec9bd3cc40fd38965fc20ad8de0f0164736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1B9 CODESIZE SUB DUP1 PUSH2 0x1B9 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x54 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x84 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x126 DUP1 PUSH2 0x93 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x24403C99 EQ PUSH1 0x41 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH1 0x52 JUMPI DUP1 PUSH4 0xB179BAFC EQ PUSH1 0x9B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x50 PUSH1 0x4C CALLDATASIZE PUSH1 0x4 PUSH1 0xD8 JUMP JUMPDEST PUSH1 0xB0 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x71 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0xA3 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x92 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ ISZERO PUSH1 0xD5 JUMPI PUSH1 0x1 DUP2 SWAP1 SSTORE JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATACOPY EQ GASLIMIT CODECOPY CALLVALUE MLOAD 0x4A DUP7 BYTE 0xC8 PUSH18 0xB60AECE10346EC9BD3CC40FD38965FC20AD8 0xDE 0xF ADD PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "59:319:0:-:0;;;214:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;255:5;:14;;-1:-1:-1;;;;;;255:14:0;-1:-1:-1;;;;;255:14:0;;;;;;;;;;59:319;;14:290:1;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:1;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:1:o;:::-;59:319:0;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@gov_to_timelock_eta_5": { + "entryPoint": null, + "id": 5, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@owner_3": { + "entryPoint": null, + "id": 3, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@setGovToTimeLockETA_36": { + "entryPoint": 176, + "id": 36, + "parameterSlots": 1, + "returnSlots": 0 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": 216, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:609:1", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:1", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "84:110:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "130:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "139:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "142:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "132:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "132:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "132:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "105:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "114:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "101:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "101:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "126:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "97:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "97:32:1" + }, + "nodeType": "YulIf", + "src": "94:52:1" + }, + { + "nodeType": "YulAssignment", + "src": "155:33:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "178:9:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "165:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "165:23:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "155:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "50:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "61:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "73:6:1", + "type": "" + } + ], + "src": "14:180:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:125:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "310:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "322:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "333:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "318:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "318:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "310:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "352:9:1" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "367:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "375:42:1", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "363:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "363:55:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "345:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "345:74:1" + }, + "nodeType": "YulExpressionStatement", + "src": "345:74:1" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "269:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "280:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "291:4:1", + "type": "" + } + ], + "src": "199:226:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "531:76:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "541:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "553:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "564:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "549:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "549:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "541:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "583:9:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "594:6:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "576:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "576:25:1" + }, + "nodeType": "YulExpressionStatement", + "src": "576:25:1" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "500:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "511:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "522:4:1", + "type": "" + } + ], + "src": "430:177:1" + } + ] + }, + "contents": "{\n { }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n}", + "id": 1, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "6080604052348015600f57600080fd5b5060043610603c5760003560e01c806324403c991460415780638da5cb5b146052578063b179bafc14609b575b600080fd5b6050604c36600460d8565b60b0565b005b60005460719073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b60a360015481565b6040519081526020016092565b60005473ffffffffffffffffffffffffffffffffffffffff1633141560d55760018190555b50565b60006020828403121560e957600080fd5b503591905056fea26469706673582212203e14453934514a861ac871b60aece10346ec9bd3cc40fd38965fc20ad8de0f0164736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x24403C99 EQ PUSH1 0x41 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH1 0x52 JUMPI DUP1 PUSH4 0xB179BAFC EQ PUSH1 0x9B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x50 PUSH1 0x4C CALLDATASIZE PUSH1 0x4 PUSH1 0xD8 JUMP JUMPDEST PUSH1 0xB0 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x71 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0xA3 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x92 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ ISZERO PUSH1 0xD5 JUMPI PUSH1 0x1 DUP2 SWAP1 SSTORE JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATACOPY EQ GASLIMIT CODECOPY CALLVALUE MLOAD 0x4A DUP7 BYTE 0xC8 PUSH18 0xB60AECE10346EC9BD3CC40FD38965FC20AD8 0xDE 0xF ADD PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "59:319:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;278:98;;;;;;:::i;:::-;;:::i;:::-;;88:20;;;;;;;;;;;;375:42:1;363:55;;;345:74;;333:2;318:18;88:20:0;;;;;;;;112:34;;;;;;;;;576:25:1;;;564:2;549:18;112:34:0;430:177:1;278:98:0;197:5;;;;183:10;:19;179:26;;;345:19:::1;:26:::0;;;179;278:98;:::o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "58800", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "gov_to_timelock_eta()": "2317", + "owner()": "2302", + "setGovToTimeLockETA(uint256)": "24441" + } + }, + "methodIdentifiers": { + "gov_to_timelock_eta()": "b179bafc", + "owner()": "8da5cb5b", + "setGovToTimeLockETA(uint256)": "24403c99" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"gov_to_timelock_eta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_eta\",\"type\":\"uint256\"}],\"name\":\"setGovToTimeLockETA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Utils/MigrationHelper.sol\":\"MigrationHelper\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Utils/MigrationHelper.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ncontract MigrationHelper {\\n address public owner;\\n uint256 public gov_to_timelock_eta;\\n\\n modifier restricted() {\\n if (msg.sender == owner) _;\\n }\\n\\n constructor(address _owner) public {\\n owner = _owner;\\n }\\n\\n function setGovToTimeLockETA(uint256 _eta) public restricted {\\n gov_to_timelock_eta = _eta;\\n }\\n}\\n\",\"keccak256\":\"0xc82ec11d1f3ac16e1c8ffa961c759b87bd65be14115df2b319bcffaecc934ccb\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 3, + "contract": "contracts/Utils/MigrationHelper.sol:MigrationHelper", + "label": "owner", + "offset": 0, + "slot": "0", + "type": "t_address" + }, + { + "astId": 5, + "contract": "contracts/Utils/MigrationHelper.sol:MigrationHelper", + "label": "gov_to_timelock_eta", + "offset": 0, + "slot": "1", + "type": "t_uint256" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "errors": [ + { + "component": "general", + "errorCode": "2462", + "formattedMessage": "Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n --> contracts/Utils/MigrationHelper.sol:12:3:\n |\n12 | constructor(address _owner) public {\n | ^ (Relevant source part starts here and spans across multiple lines).\n\n", + "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.", + "severity": "warning", + "sourceLocation": { + "end": 274, + "file": "contracts/Utils/MigrationHelper.sol", + "start": 214 + }, + "type": "Warning" + } + ], + "sources": { + "contracts/Utils/MigrationHelper.sol": { + "ast": { + "absolutePath": "contracts/Utils/MigrationHelper.sol", + "exportedSymbols": { + "MigrationHelper": [ + 37 + ] + }, + "id": 38, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "MigrationHelper", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 37, + "linearizedBaseContracts": [ + 37 + ], + "name": "MigrationHelper", + "nameLocation": "68:15:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "8da5cb5b", + "id": 3, + "mutability": "mutable", + "name": "owner", + "nameLocation": "103:5:0", + "nodeType": "VariableDeclaration", + "scope": 37, + "src": "88:20:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "88:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "b179bafc", + "id": 5, + "mutability": "mutable", + "name": "gov_to_timelock_eta", + "nameLocation": "127:19:0", + "nodeType": "VariableDeclaration", + "scope": 37, + "src": "112:34:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "112:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 13, + "nodeType": "Block", + "src": "173:37:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 7, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "183:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 8, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "183:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 9, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "197:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "183:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12, + "nodeType": "IfStatement", + "src": "179:26:0", + "trueBody": { + "id": 11, + "nodeType": "PlaceholderStatement", + "src": "204:1:0" + } + } + ] + }, + "id": 14, + "name": "restricted", + "nameLocation": "160:10:0", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 6, + "nodeType": "ParameterList", + "parameters": [], + "src": "170:2:0" + }, + "src": "151:59:0", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 23, + "nodeType": "Block", + "src": "249:25:0", + "statements": [ + { + "expression": { + "id": 21, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 19, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "255:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 20, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16, + "src": "263:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "255:14:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 22, + "nodeType": "ExpressionStatement", + "src": "255:14:0" + } + ] + }, + "id": 24, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "234:6:0", + "nodeType": "VariableDeclaration", + "scope": 24, + "src": "226:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "226:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "225:16:0" + }, + "returnParameters": { + "id": 18, + "nodeType": "ParameterList", + "parameters": [], + "src": "249:0:0" + }, + "scope": 37, + "src": "214:60:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 35, + "nodeType": "Block", + "src": "339:37:0", + "statements": [ + { + "expression": { + "id": 33, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 31, + "name": "gov_to_timelock_eta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "345:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 32, + "name": "_eta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 26, + "src": "367:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "345:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 34, + "nodeType": "ExpressionStatement", + "src": "345:26:0" + } + ] + }, + "functionSelector": "24403c99", + "id": 36, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 29, + "kind": "modifierInvocation", + "modifierName": { + "id": 28, + "name": "restricted", + "nodeType": "IdentifierPath", + "referencedDeclaration": 14, + "src": "328:10:0" + }, + "nodeType": "ModifierInvocation", + "src": "328:10:0" + } + ], + "name": "setGovToTimeLockETA", + "nameLocation": "287:19:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 27, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 26, + "mutability": "mutable", + "name": "_eta", + "nameLocation": "315:4:0", + "nodeType": "VariableDeclaration", + "scope": 36, + "src": "307:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 25, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "307:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "306:14:0" + }, + "returnParameters": { + "id": 30, + "nodeType": "ParameterList", + "parameters": [], + "src": "339:0:0" + }, + "scope": 37, + "src": "278:98:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 38, + "src": "59:319:0", + "usedErrors": [] + } + ], + "src": "32:347:0" + }, + "id": 0 + } + } + } +} diff --git a/artifacts/build-info/97e70caa3e02ef80482beb1782c00554.json b/artifacts/build-info/97e70caa3e02ef80482beb1782c00554.json new file mode 100644 index 00000000..65b9dc2e --- /dev/null +++ b/artifacts/build-info/97e70caa3e02ef80482beb1782c00554.json @@ -0,0 +1,14123 @@ +{ + "id": "97e70caa3e02ef80482beb1782c00554", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.6.11", + "solcLongVersion": "0.6.11+commit.5ef660b1", + "input": { + "language": "Solidity", + "sources": { + "contracts/Utils/StringHelpers.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.6.11;\n\n\nlibrary StringHelpers {\n function parseAddr(string memory _a) internal pure returns (address _parsedAddress) {\n bytes memory tmp = bytes(_a);\n uint160 iaddr = 0;\n uint160 b1;\n uint160 b2;\n for (uint i = 2; i < 2 + 2 * 20; i += 2) {\n iaddr *= 256;\n b1 = uint160(uint8(tmp[i]));\n b2 = uint160(uint8(tmp[i + 1]));\n if ((b1 >= 97) && (b1 <= 102)) {\n b1 -= 87;\n } else if ((b1 >= 65) && (b1 <= 70)) {\n b1 -= 55;\n } else if ((b1 >= 48) && (b1 <= 57)) {\n b1 -= 48;\n }\n if ((b2 >= 97) && (b2 <= 102)) {\n b2 -= 87;\n } else if ((b2 >= 65) && (b2 <= 70)) {\n b2 -= 55;\n } else if ((b2 >= 48) && (b2 <= 57)) {\n b2 -= 48;\n }\n iaddr += (b1 * 16 + b2);\n }\n return address(iaddr);\n }\n\n function strCompare(string memory _a, string memory _b) internal pure returns (int _returnCode) {\n bytes memory a = bytes(_a);\n bytes memory b = bytes(_b);\n uint minLength = a.length;\n if (b.length < minLength) {\n minLength = b.length;\n }\n for (uint i = 0; i < minLength; i ++) {\n if (a[i] < b[i]) {\n return -1;\n } else if (a[i] > b[i]) {\n return 1;\n }\n }\n if (a.length < b.length) {\n return -1;\n } else if (a.length > b.length) {\n return 1;\n } else {\n return 0;\n }\n }\n\n function indexOf(string memory _haystack, string memory _needle) internal pure returns (int _returnCode) {\n bytes memory h = bytes(_haystack);\n bytes memory n = bytes(_needle);\n if (h.length < 1 || n.length < 1 || (n.length > h.length)) {\n return -1;\n } else if (h.length > (2 ** 128 - 1)) {\n return -1;\n } else {\n uint subindex = 0;\n for (uint i = 0; i < h.length; i++) {\n if (h[i] == n[0]) {\n subindex = 1;\n while(subindex < n.length && (i + subindex) < h.length && h[i + subindex] == n[subindex]) {\n subindex++;\n }\n if (subindex == n.length) {\n return int(i);\n }\n }\n }\n return -1;\n }\n }\n\n function strConcat(string memory _a, string memory _b) internal pure returns (string memory _concatenatedString) {\n return strConcat(_a, _b, \"\", \"\", \"\");\n }\n\n function strConcat(string memory _a, string memory _b, string memory _c) internal pure returns (string memory _concatenatedString) {\n return strConcat(_a, _b, _c, \"\", \"\");\n }\n\n function strConcat(string memory _a, string memory _b, string memory _c, string memory _d) internal pure returns (string memory _concatenatedString) {\n return strConcat(_a, _b, _c, _d, \"\");\n }\n\n function strConcat(string memory _a, string memory _b, string memory _c, string memory _d, string memory _e) internal pure returns (string memory _concatenatedString) {\n bytes memory _ba = bytes(_a);\n bytes memory _bb = bytes(_b);\n bytes memory _bc = bytes(_c);\n bytes memory _bd = bytes(_d);\n bytes memory _be = bytes(_e);\n string memory abcde = new string(_ba.length + _bb.length + _bc.length + _bd.length + _be.length);\n bytes memory babcde = bytes(abcde);\n uint k = 0;\n uint i = 0;\n for (i = 0; i < _ba.length; i++) {\n babcde[k++] = _ba[i];\n }\n for (i = 0; i < _bb.length; i++) {\n babcde[k++] = _bb[i];\n }\n for (i = 0; i < _bc.length; i++) {\n babcde[k++] = _bc[i];\n }\n for (i = 0; i < _bd.length; i++) {\n babcde[k++] = _bd[i];\n }\n for (i = 0; i < _be.length; i++) {\n babcde[k++] = _be[i];\n }\n return string(babcde);\n }\n\n function safeParseInt(string memory _a) internal pure returns (uint _parsedInt) {\n return safeParseInt(_a, 0);\n }\n\n function safeParseInt(string memory _a, uint _b) internal pure returns (uint _parsedInt) {\n bytes memory bresult = bytes(_a);\n uint mint = 0;\n bool decimals = false;\n for (uint i = 0; i < bresult.length; i++) {\n if ((uint(uint8(bresult[i])) >= 48) && (uint(uint8(bresult[i])) <= 57)) {\n if (decimals) {\n if (_b == 0) break;\n else _b--;\n }\n mint *= 10;\n mint += uint(uint8(bresult[i])) - 48;\n } else if (uint(uint8(bresult[i])) == 46) {\n require(!decimals, 'More than one decimal encountered in string!');\n decimals = true;\n } else {\n revert(\"Non-numeral character encountered in string!\");\n }\n }\n if (_b > 0) {\n mint *= 10 ** _b;\n }\n return mint;\n }\n\n function parseInt(string memory _a) internal pure returns (uint _parsedInt) {\n return parseInt(_a, 0);\n }\n\n function parseInt(string memory _a, uint _b) internal pure returns (uint _parsedInt) {\n bytes memory bresult = bytes(_a);\n uint mint = 0;\n bool decimals = false;\n for (uint i = 0; i < bresult.length; i++) {\n if ((uint(uint8(bresult[i])) >= 48) && (uint(uint8(bresult[i])) <= 57)) {\n if (decimals) {\n if (_b == 0) {\n break;\n } else {\n _b--;\n }\n }\n mint *= 10;\n mint += uint(uint8(bresult[i])) - 48;\n } else if (uint(uint8(bresult[i])) == 46) {\n decimals = true;\n }\n }\n if (_b > 0) {\n mint *= 10 ** _b;\n }\n return mint;\n }\n\n function uint2str(uint _i) internal pure returns (string memory _uintAsString) {\n if (_i == 0) {\n return \"0\";\n }\n uint j = _i;\n uint len;\n while (j != 0) {\n len++;\n j /= 10;\n }\n bytes memory bstr = new bytes(len);\n uint k = len - 1;\n while (_i != 0) {\n bstr[k--] = byte(uint8(48 + _i % 10));\n _i /= 10;\n }\n return string(bstr);\n }\n}" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "output": { + "contracts": { + "contracts/Utils/StringHelpers.sol": { + "StringHelpers": { + "abi": [], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122052b325089c55d59a014f1bd1410e959032fcc3cd3886af6fc664c4722780346e64736f6c634300060b0033", + "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE 0xB3 0x25 ADDMOD SWAP13 SSTORE 0xD5 SWAP11 ADD 0x4F SHL 0xD1 COINBASE 0xE SWAP6 SWAP1 ORIGIN 0xFC 0xC3 0xCD CODESIZE DUP7 0xAF PUSH16 0xC664C4722780346E64736F6C63430006 SIGNEXTEND STOP CALLER ", + "sourceMap": "58:6513:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122052b325089c55d59a014f1bd1410e959032fcc3cd3886af6fc664c4722780346e64736f6c634300060b0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE 0xB3 0x25 ADDMOD SWAP13 SSTORE 0xD5 SWAP11 ADD 0x4F SHL 0xD1 COINBASE 0xE SWAP6 SWAP1 ORIGIN 0xFC 0xC3 0xCD CODESIZE DUP7 0xAF PUSH16 0xC664C4722780346E64736F6C63430006 SIGNEXTEND STOP CALLER ", + "sourceMap": "58:6513:0:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17200", + "executionCost": "97", + "totalCost": "17297" + }, + "internal": { + "indexOf(string memory,string memory)": "infinite", + "parseAddr(string memory)": "infinite", + "parseInt(string memory)": "infinite", + "parseInt(string memory,uint256)": "infinite", + "safeParseInt(string memory)": "infinite", + "safeParseInt(string memory,uint256)": "infinite", + "strCompare(string memory,string memory)": "infinite", + "strConcat(string memory,string memory)": "infinite", + "strConcat(string memory,string memory,string memory)": "infinite", + "strConcat(string memory,string memory,string memory,string memory)": "infinite", + "strConcat(string memory,string memory,string memory,string memory,string memory)": "infinite", + "uint2str(uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Utils/StringHelpers.sol\":\"StringHelpers\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Utils/StringHelpers.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.6.11;\\n\\n\\nlibrary StringHelpers {\\n function parseAddr(string memory _a) internal pure returns (address _parsedAddress) {\\n bytes memory tmp = bytes(_a);\\n uint160 iaddr = 0;\\n uint160 b1;\\n uint160 b2;\\n for (uint i = 2; i < 2 + 2 * 20; i += 2) {\\n iaddr *= 256;\\n b1 = uint160(uint8(tmp[i]));\\n b2 = uint160(uint8(tmp[i + 1]));\\n if ((b1 >= 97) && (b1 <= 102)) {\\n b1 -= 87;\\n } else if ((b1 >= 65) && (b1 <= 70)) {\\n b1 -= 55;\\n } else if ((b1 >= 48) && (b1 <= 57)) {\\n b1 -= 48;\\n }\\n if ((b2 >= 97) && (b2 <= 102)) {\\n b2 -= 87;\\n } else if ((b2 >= 65) && (b2 <= 70)) {\\n b2 -= 55;\\n } else if ((b2 >= 48) && (b2 <= 57)) {\\n b2 -= 48;\\n }\\n iaddr += (b1 * 16 + b2);\\n }\\n return address(iaddr);\\n }\\n\\n function strCompare(string memory _a, string memory _b) internal pure returns (int _returnCode) {\\n bytes memory a = bytes(_a);\\n bytes memory b = bytes(_b);\\n uint minLength = a.length;\\n if (b.length < minLength) {\\n minLength = b.length;\\n }\\n for (uint i = 0; i < minLength; i ++) {\\n if (a[i] < b[i]) {\\n return -1;\\n } else if (a[i] > b[i]) {\\n return 1;\\n }\\n }\\n if (a.length < b.length) {\\n return -1;\\n } else if (a.length > b.length) {\\n return 1;\\n } else {\\n return 0;\\n }\\n }\\n\\n function indexOf(string memory _haystack, string memory _needle) internal pure returns (int _returnCode) {\\n bytes memory h = bytes(_haystack);\\n bytes memory n = bytes(_needle);\\n if (h.length < 1 || n.length < 1 || (n.length > h.length)) {\\n return -1;\\n } else if (h.length > (2 ** 128 - 1)) {\\n return -1;\\n } else {\\n uint subindex = 0;\\n for (uint i = 0; i < h.length; i++) {\\n if (h[i] == n[0]) {\\n subindex = 1;\\n while(subindex < n.length && (i + subindex) < h.length && h[i + subindex] == n[subindex]) {\\n subindex++;\\n }\\n if (subindex == n.length) {\\n return int(i);\\n }\\n }\\n }\\n return -1;\\n }\\n }\\n\\n function strConcat(string memory _a, string memory _b) internal pure returns (string memory _concatenatedString) {\\n return strConcat(_a, _b, \\\"\\\", \\\"\\\", \\\"\\\");\\n }\\n\\n function strConcat(string memory _a, string memory _b, string memory _c) internal pure returns (string memory _concatenatedString) {\\n return strConcat(_a, _b, _c, \\\"\\\", \\\"\\\");\\n }\\n\\n function strConcat(string memory _a, string memory _b, string memory _c, string memory _d) internal pure returns (string memory _concatenatedString) {\\n return strConcat(_a, _b, _c, _d, \\\"\\\");\\n }\\n\\n function strConcat(string memory _a, string memory _b, string memory _c, string memory _d, string memory _e) internal pure returns (string memory _concatenatedString) {\\n bytes memory _ba = bytes(_a);\\n bytes memory _bb = bytes(_b);\\n bytes memory _bc = bytes(_c);\\n bytes memory _bd = bytes(_d);\\n bytes memory _be = bytes(_e);\\n string memory abcde = new string(_ba.length + _bb.length + _bc.length + _bd.length + _be.length);\\n bytes memory babcde = bytes(abcde);\\n uint k = 0;\\n uint i = 0;\\n for (i = 0; i < _ba.length; i++) {\\n babcde[k++] = _ba[i];\\n }\\n for (i = 0; i < _bb.length; i++) {\\n babcde[k++] = _bb[i];\\n }\\n for (i = 0; i < _bc.length; i++) {\\n babcde[k++] = _bc[i];\\n }\\n for (i = 0; i < _bd.length; i++) {\\n babcde[k++] = _bd[i];\\n }\\n for (i = 0; i < _be.length; i++) {\\n babcde[k++] = _be[i];\\n }\\n return string(babcde);\\n }\\n\\n function safeParseInt(string memory _a) internal pure returns (uint _parsedInt) {\\n return safeParseInt(_a, 0);\\n }\\n\\n function safeParseInt(string memory _a, uint _b) internal pure returns (uint _parsedInt) {\\n bytes memory bresult = bytes(_a);\\n uint mint = 0;\\n bool decimals = false;\\n for (uint i = 0; i < bresult.length; i++) {\\n if ((uint(uint8(bresult[i])) >= 48) && (uint(uint8(bresult[i])) <= 57)) {\\n if (decimals) {\\n if (_b == 0) break;\\n else _b--;\\n }\\n mint *= 10;\\n mint += uint(uint8(bresult[i])) - 48;\\n } else if (uint(uint8(bresult[i])) == 46) {\\n require(!decimals, 'More than one decimal encountered in string!');\\n decimals = true;\\n } else {\\n revert(\\\"Non-numeral character encountered in string!\\\");\\n }\\n }\\n if (_b > 0) {\\n mint *= 10 ** _b;\\n }\\n return mint;\\n }\\n\\n function parseInt(string memory _a) internal pure returns (uint _parsedInt) {\\n return parseInt(_a, 0);\\n }\\n\\n function parseInt(string memory _a, uint _b) internal pure returns (uint _parsedInt) {\\n bytes memory bresult = bytes(_a);\\n uint mint = 0;\\n bool decimals = false;\\n for (uint i = 0; i < bresult.length; i++) {\\n if ((uint(uint8(bresult[i])) >= 48) && (uint(uint8(bresult[i])) <= 57)) {\\n if (decimals) {\\n if (_b == 0) {\\n break;\\n } else {\\n _b--;\\n }\\n }\\n mint *= 10;\\n mint += uint(uint8(bresult[i])) - 48;\\n } else if (uint(uint8(bresult[i])) == 46) {\\n decimals = true;\\n }\\n }\\n if (_b > 0) {\\n mint *= 10 ** _b;\\n }\\n return mint;\\n }\\n\\n function uint2str(uint _i) internal pure returns (string memory _uintAsString) {\\n if (_i == 0) {\\n return \\\"0\\\";\\n }\\n uint j = _i;\\n uint len;\\n while (j != 0) {\\n len++;\\n j /= 10;\\n }\\n bytes memory bstr = new bytes(len);\\n uint k = len - 1;\\n while (_i != 0) {\\n bstr[k--] = byte(uint8(48 + _i % 10));\\n _i /= 10;\\n }\\n return string(bstr);\\n }\\n}\",\"keccak256\":\"0x21e1bf581690832f76e2a2afb637ebf891b79c0070f640cc95454475c83a9280\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "sources": { + "contracts/Utils/StringHelpers.sol": { + "ast": { + "absolutePath": "contracts/Utils/StringHelpers.sol", + "exportedSymbols": { + "StringHelpers": [ + 1032 + ] + }, + "id": 1033, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:23:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": null, + "fullyImplemented": true, + "id": 1032, + "linearizedBaseContracts": [ + 1032 + ], + "name": "StringHelpers", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 176, + "nodeType": "Block", + "src": "170:831:0", + "statements": [ + { + "assignments": [ + 9 + ], + "declarations": [ + { + "constant": false, + "id": 9, + "mutability": "mutable", + "name": "tmp", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 176, + "src": "180:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "180:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 14, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12, + "name": "_a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "205:2:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "199:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 10, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "199:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "199:9:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "180:28:0" + }, + { + "assignments": [ + 16 + ], + "declarations": [ + { + "constant": false, + "id": 16, + "mutability": "mutable", + "name": "iaddr", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 176, + "src": "218:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "typeName": { + "id": 15, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "218:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 18, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 17, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "234:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "218:17:0" + }, + { + "assignments": [ + 20 + ], + "declarations": [ + { + "constant": false, + "id": 20, + "mutability": "mutable", + "name": "b1", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 176, + "src": "245:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "typeName": { + "id": 19, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "245:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 21, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "245:10:0" + }, + { + "assignments": [ + 23 + ], + "declarations": [ + { + "constant": false, + "id": 23, + "mutability": "mutable", + "name": "b2", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 176, + "src": "265:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "typeName": { + "id": 22, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "265:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 24, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "265:10:0" + }, + { + "body": { + "id": 169, + "nodeType": "Block", + "src": "326:638:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 42, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 40, + "name": "iaddr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16, + "src": "340:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "323536", + "id": 41, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "349:3:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "value": "256" + }, + "src": "340:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "id": 43, + "nodeType": "ExpressionStatement", + "src": "340:12:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 54, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 44, + "name": "b1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20, + "src": "366:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 49, + "name": "tmp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9, + "src": "385:3:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 51, + "indexExpression": { + "argumentTypes": null, + "id": 50, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 26, + "src": "389:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "385:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + ], + "id": 48, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "379:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 47, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "379:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 52, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "379:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 46, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "371:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 45, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "371:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 53, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "371:22:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "366:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "id": 55, + "nodeType": "ExpressionStatement", + "src": "366:27:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 68, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 56, + "name": "b2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23, + "src": "407:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 61, + "name": "tmp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9, + "src": "426:3:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 65, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 64, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 62, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 26, + "src": "430:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 63, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "434:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "430:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "426:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + ], + "id": 60, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "420:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 59, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "420:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "420:17:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 58, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "412:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 57, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "412:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 67, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "412:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "407:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "id": 69, + "nodeType": "ExpressionStatement", + "src": "407:31:0" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 78, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "id": 72, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 70, + "name": "b1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20, + "src": "457:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3937", + "id": 71, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "463:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_97_by_1", + "typeString": "int_const 97" + }, + "value": "97" + }, + "src": "457:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 73, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "456:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "id": 76, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 74, + "name": "b1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20, + "src": "471:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "313032", + "id": 75, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "477:3:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_102_by_1", + "typeString": "int_const 102" + }, + "value": "102" + }, + "src": "471:9:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 77, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "470:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "456:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 92, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "id": 86, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 84, + "name": "b1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20, + "src": "535:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3635", + "id": 85, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "541:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_65_by_1", + "typeString": "int_const 65" + }, + "value": "65" + }, + "src": "535:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 87, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "534:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "id": 90, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 88, + "name": "b1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20, + "src": "549:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3730", + "id": 89, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "555:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_70_by_1", + "typeString": "int_const 70" + }, + "value": "70" + }, + "src": "549:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 91, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "548:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "534:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "id": 100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 98, + "name": "b1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20, + "src": "612:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3438", + "id": 99, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "618:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + "src": "612:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 101, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "611:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "id": 104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 102, + "name": "b1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20, + "src": "626:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3537", + "id": 103, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "632:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_57_by_1", + "typeString": "int_const 57" + }, + "value": "57" + }, + "src": "626:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 105, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "625:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "611:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 112, + "nodeType": "IfStatement", + "src": "607:71:0", + "trueBody": { + "id": 111, + "nodeType": "Block", + "src": "637:41:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 107, + "name": "b1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20, + "src": "655:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3438", + "id": 108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "661:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + "src": "655:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "id": 110, + "nodeType": "ExpressionStatement", + "src": "655:8:0" + } + ] + } + }, + "id": 113, + "nodeType": "IfStatement", + "src": "530:148:0", + "trueBody": { + "id": 97, + "nodeType": "Block", + "src": "560:41:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 95, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 93, + "name": "b1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20, + "src": "578:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3535", + "id": 94, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "584:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_55_by_1", + "typeString": "int_const 55" + }, + "value": "55" + }, + "src": "578:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "id": 96, + "nodeType": "ExpressionStatement", + "src": "578:8:0" + } + ] + } + }, + "id": 114, + "nodeType": "IfStatement", + "src": "452:226:0", + "trueBody": { + "id": 83, + "nodeType": "Block", + "src": "483:41:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 81, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 79, + "name": "b1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20, + "src": "501:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3837", + "id": 80, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "507:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_87_by_1", + "typeString": "int_const 87" + }, + "value": "87" + }, + "src": "501:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "id": 82, + "nodeType": "ExpressionStatement", + "src": "501:8:0" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "id": 117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 115, + "name": "b2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23, + "src": "696:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3937", + "id": 116, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "702:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_97_by_1", + "typeString": "int_const 97" + }, + "value": "97" + }, + "src": "696:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 118, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "695:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "id": 121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 119, + "name": "b2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23, + "src": "710:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "313032", + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "716:3:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_102_by_1", + "typeString": "int_const 102" + }, + "value": "102" + }, + "src": "710:9:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 122, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "709:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "695:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "id": 131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 129, + "name": "b2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23, + "src": "774:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3635", + "id": 130, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "780:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_65_by_1", + "typeString": "int_const 65" + }, + "value": "65" + }, + "src": "774:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 132, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "773:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "id": 135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 133, + "name": "b2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23, + "src": "788:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3730", + "id": 134, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "794:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_70_by_1", + "typeString": "int_const 70" + }, + "value": "70" + }, + "src": "788:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 136, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "787:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "773:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "id": 145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 143, + "name": "b2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23, + "src": "851:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3438", + "id": 144, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "857:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + "src": "851:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 146, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "850:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "id": 149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 147, + "name": "b2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23, + "src": "865:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3537", + "id": 148, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "871:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_57_by_1", + "typeString": "int_const 57" + }, + "value": "57" + }, + "src": "865:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 150, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "864:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "850:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 157, + "nodeType": "IfStatement", + "src": "846:71:0", + "trueBody": { + "id": 156, + "nodeType": "Block", + "src": "876:41:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 152, + "name": "b2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23, + "src": "894:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3438", + "id": 153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "900:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + "src": "894:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "id": 155, + "nodeType": "ExpressionStatement", + "src": "894:8:0" + } + ] + } + }, + "id": 158, + "nodeType": "IfStatement", + "src": "769:148:0", + "trueBody": { + "id": 142, + "nodeType": "Block", + "src": "799:41:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 138, + "name": "b2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23, + "src": "817:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3535", + "id": 139, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "823:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_55_by_1", + "typeString": "int_const 55" + }, + "value": "55" + }, + "src": "817:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "id": 141, + "nodeType": "ExpressionStatement", + "src": "817:8:0" + } + ] + } + }, + "id": 159, + "nodeType": "IfStatement", + "src": "691:226:0", + "trueBody": { + "id": 128, + "nodeType": "Block", + "src": "722:41:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 124, + "name": "b2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23, + "src": "740:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3837", + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "746:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_87_by_1", + "typeString": "int_const 87" + }, + "value": "87" + }, + "src": "740:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "id": 127, + "nodeType": "ExpressionStatement", + "src": "740:8:0" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 160, + "name": "iaddr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16, + "src": "930:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "id": 165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "id": 163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 161, + "name": "b1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20, + "src": "940:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3136", + "id": 162, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "945:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "940:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 164, + "name": "b2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23, + "src": "950:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "940:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "id": 166, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "939:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "930:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "id": 168, + "nodeType": "ExpressionStatement", + "src": "930:23:0" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 35, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 29, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 26, + "src": "302:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_42_by_1", + "typeString": "int_const 42" + }, + "id": 34, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 30, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "306:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_40_by_1", + "typeString": "int_const 40" + }, + "id": 33, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 31, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "310:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3230", + "id": 32, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "314:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_20_by_1", + "typeString": "int_const 20" + }, + "value": "20" + }, + "src": "310:6:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_40_by_1", + "typeString": "int_const 40" + } + }, + "src": "306:10:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_42_by_1", + "typeString": "int_const 42" + } + }, + "src": "302:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 170, + "initializationExpression": { + "assignments": [ + 26 + ], + "declarations": [ + { + "constant": false, + "id": 26, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 170, + "src": "290:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 25, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "290:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 28, + "initialValue": { + "argumentTypes": null, + "hexValue": "32", + "id": 27, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "299:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "VariableDeclarationStatement", + "src": "290:10:0" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 38, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 36, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 26, + "src": "318:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "32", + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "323:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "318:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 39, + "nodeType": "ExpressionStatement", + "src": "318:6:0" + }, + "nodeType": "ForStatement", + "src": "285:679:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 173, + "name": "iaddr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16, + "src": "988:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 172, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "980:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 171, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "980:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "980:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 7, + "id": 175, + "nodeType": "Return", + "src": "973:21:0" + } + ] + }, + "documentation": null, + "id": 177, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "parseAddr", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3, + "mutability": "mutable", + "name": "_a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 177, + "src": "105:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "105:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "104:18:0" + }, + "returnParameters": { + "id": 7, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6, + "mutability": "mutable", + "name": "_parsedAddress", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 177, + "src": "146:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "146:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "145:24:0" + }, + "scope": 1032, + "src": "86:915:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 273, + "nodeType": "Block", + "src": "1103:559:0", + "statements": [ + { + "assignments": [ + 187 + ], + "declarations": [ + { + "constant": false, + "id": 187, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 273, + "src": "1113:14:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 186, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1113:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 192, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 190, + "name": "_a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 179, + "src": "1136:2:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 189, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1130:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 188, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1130:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1130:9:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1113:26:0" + }, + { + "assignments": [ + 194 + ], + "declarations": [ + { + "constant": false, + "id": 194, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 273, + "src": "1149:14:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 193, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1149:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 199, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 197, + "name": "_b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 181, + "src": "1172:2:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 196, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1166:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 195, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1166:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1166:9:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1149:26:0" + }, + { + "assignments": [ + 201 + ], + "declarations": [ + { + "constant": false, + "id": 201, + "mutability": "mutable", + "name": "minLength", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 273, + "src": "1185:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 200, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1185:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 204, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 202, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "1202:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1202:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1185:25:0" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 205, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 194, + "src": "1224:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1224:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 207, + "name": "minLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 201, + "src": "1235:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1224:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 215, + "nodeType": "IfStatement", + "src": "1220:71:0", + "trueBody": { + "id": 214, + "nodeType": "Block", + "src": "1246:45:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 209, + "name": "minLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 201, + "src": "1260:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 210, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 194, + "src": "1272:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1272:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1260:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 213, + "nodeType": "ExpressionStatement", + "src": "1260:20:0" + } + ] + } + }, + { + "body": { + "id": 249, + "nodeType": "Block", + "src": "1338:147:0", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "id": 232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 226, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "1356:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 228, + "indexExpression": { + "argumentTypes": null, + "id": 227, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 217, + "src": "1358:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1356:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 229, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 194, + "src": "1363:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 231, + "indexExpression": { + "argumentTypes": null, + "id": 230, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 217, + "src": "1365:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1363:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "1356:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "id": 243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 237, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "1421:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 239, + "indexExpression": { + "argumentTypes": null, + "id": 238, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 217, + "src": "1423:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1421:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 240, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 194, + "src": "1428:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 242, + "indexExpression": { + "argumentTypes": null, + "id": 241, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 217, + "src": "1430:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1428:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "1421:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 247, + "nodeType": "IfStatement", + "src": "1417:58:0", + "trueBody": { + "id": 246, + "nodeType": "Block", + "src": "1434:41:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "31", + "id": 244, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1459:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "functionReturnParameters": 185, + "id": 245, + "nodeType": "Return", + "src": "1452:8:0" + } + ] + } + }, + "id": 248, + "nodeType": "IfStatement", + "src": "1352:123:0", + "trueBody": { + "id": 236, + "nodeType": "Block", + "src": "1369:42:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 234, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "1394:2:0", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 233, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1395:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + }, + "functionReturnParameters": 185, + "id": 235, + "nodeType": "Return", + "src": "1387:9:0" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 220, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 217, + "src": "1317:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 221, + "name": "minLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 201, + "src": "1321:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1317:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 250, + "initializationExpression": { + "assignments": [ + 217 + ], + "declarations": [ + { + "constant": false, + "id": 217, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 250, + "src": "1305:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 216, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1305:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 219, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1314:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1305:10:0" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1332:4:0", + "subExpression": { + "argumentTypes": null, + "id": 223, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 217, + "src": "1332:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 225, + "nodeType": "ExpressionStatement", + "src": "1332:4:0" + }, + "nodeType": "ForStatement", + "src": "1300:185:0" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 251, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "1498:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1498:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 253, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 194, + "src": "1509:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1509:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1498:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 260, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "1563:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1563:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 262, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 194, + "src": "1574:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1574:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1563:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 270, + "nodeType": "Block", + "src": "1623:33:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 268, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1644:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 185, + "id": 269, + "nodeType": "Return", + "src": "1637:8:0" + } + ] + }, + "id": 271, + "nodeType": "IfStatement", + "src": "1559:97:0", + "trueBody": { + "id": 267, + "nodeType": "Block", + "src": "1584:33:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "31", + "id": 265, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1605:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "functionReturnParameters": 185, + "id": 266, + "nodeType": "Return", + "src": "1598:8:0" + } + ] + } + }, + "id": 272, + "nodeType": "IfStatement", + "src": "1494:162:0", + "trueBody": { + "id": 259, + "nodeType": "Block", + "src": "1519:34:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 257, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "1540:2:0", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 256, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1541:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + }, + "functionReturnParameters": 185, + "id": 258, + "nodeType": "Return", + "src": "1533:9:0" + } + ] + } + } + ] + }, + "documentation": null, + "id": 274, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "strCompare", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 182, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 179, + "mutability": "mutable", + "name": "_a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 274, + "src": "1027:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 178, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1027:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 181, + "mutability": "mutable", + "name": "_b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 274, + "src": "1045:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 180, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1045:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1026:36:0" + }, + "returnParameters": { + "id": 185, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 184, + "mutability": "mutable", + "name": "_returnCode", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 274, + "src": "1086:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 183, + "name": "int", + "nodeType": "ElementaryTypeName", + "src": "1086:3:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1085:17:0" + }, + "scope": 1032, + "src": "1007:655:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 404, + "nodeType": "Block", + "src": "1773:766:0", + "statements": [ + { + "assignments": [ + 284 + ], + "declarations": [ + { + "constant": false, + "id": 284, + "mutability": "mutable", + "name": "h", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 404, + "src": "1783:14:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 283, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1783:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 289, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 287, + "name": "_haystack", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 276, + "src": "1806:9:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 286, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1800:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 285, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1800:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1800:16:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1783:33:0" + }, + { + "assignments": [ + 291 + ], + "declarations": [ + { + "constant": false, + "id": 291, + "mutability": "mutable", + "name": "n", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 404, + "src": "1826:14:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 290, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1826:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 296, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 294, + "name": "_needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 278, + "src": "1849:7:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 293, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1843:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 292, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1843:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1843:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1826:31:0" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 297, + "name": "h", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 284, + "src": "1871:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1871:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 299, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1882:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1871:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 301, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 291, + "src": "1887:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 302, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1887:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 303, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1898:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1887:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1871:28:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 306, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 291, + "src": "1904:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1904:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 308, + "name": "h", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 284, + "src": "1915:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1915:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1904:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 311, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1903:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1871:53:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 317, + "name": "h", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 284, + "src": "1970:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1970:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211455_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1455" + }, + "id": 323, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1456" + }, + "id": 321, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 319, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1982:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "313238", + "id": 320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1987:3:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "1982:8:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1456" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1993:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1982:12:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211455_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1455" + } + } + ], + "id": 324, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1981:14:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211455_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1455" + } + }, + "src": "1970:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 401, + "nodeType": "Block", + "src": "2037:496:0", + "statements": [ + { + "assignments": [ + 331 + ], + "declarations": [ + { + "constant": false, + "id": 331, + "mutability": "mutable", + "name": "subindex", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 401, + "src": "2051:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 330, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2051:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 333, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 332, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2067:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2051:17:0" + }, + { + "body": { + "id": 396, + "nodeType": "Block", + "src": "2118:382:0", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "id": 351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 345, + "name": "h", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 284, + "src": "2140:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 347, + "indexExpression": { + "argumentTypes": null, + "id": 346, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 335, + "src": "2142:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2140:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 348, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 291, + "src": "2148:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 350, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 349, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2150:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2148:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "2140:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 395, + "nodeType": "IfStatement", + "src": "2136:350:0", + "trueBody": { + "id": 394, + "nodeType": "Block", + "src": "2154:332:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 352, + "name": "subindex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 331, + "src": "2176:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2187:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2176:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 355, + "nodeType": "ExpressionStatement", + "src": "2176:12:0" + }, + { + "body": { + "id": 381, + "nodeType": "Block", + "src": "2300:59:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2326:10:0", + "subExpression": { + "argumentTypes": null, + "id": 378, + "name": "subindex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 331, + "src": "2326:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 380, + "nodeType": "ExpressionStatement", + "src": "2326:10:0" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 356, + "name": "subindex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 331, + "src": "2216:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 357, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 291, + "src": "2227:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2227:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2216:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 360, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 335, + "src": "2240:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 361, + "name": "subindex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 331, + "src": "2244:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2240:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 363, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2239:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 364, + "name": "h", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 284, + "src": "2256:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2256:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2239:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2216:48:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "id": 376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 368, + "name": "h", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 284, + "src": "2268:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 372, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 369, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 335, + "src": "2270:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 370, + "name": "subindex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 331, + "src": "2274:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2270:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2268:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 373, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 291, + "src": "2287:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 375, + "indexExpression": { + "argumentTypes": null, + "id": 374, + "name": "subindex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 331, + "src": "2289:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2287:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "2268:30:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2216:82:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 382, + "nodeType": "WhileStatement", + "src": "2210:149:0" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 383, + "name": "subindex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 331, + "src": "2384:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 384, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 291, + "src": "2396:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2396:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2384:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 393, + "nodeType": "IfStatement", + "src": "2380:88:0", + "trueBody": { + "id": 392, + "nodeType": "Block", + "src": "2406:62:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 389, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 335, + "src": "2443:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 388, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2439:3:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 387, + "name": "int", + "nodeType": "ElementaryTypeName", + "src": "2439:3:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2439:6:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 282, + "id": 391, + "nodeType": "Return", + "src": "2432:13:0" + } + ] + } + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 338, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 335, + "src": "2099:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 339, + "name": "h", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 284, + "src": "2103:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2103:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2099:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 397, + "initializationExpression": { + "assignments": [ + 335 + ], + "declarations": [ + { + "constant": false, + "id": 335, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 397, + "src": "2087:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 334, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2087:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 337, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 336, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2096:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2087:10:0" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2113:3:0", + "subExpression": { + "argumentTypes": null, + "id": 342, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 335, + "src": "2113:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 344, + "nodeType": "ExpressionStatement", + "src": "2113:3:0" + }, + "nodeType": "ForStatement", + "src": "2082:418:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 399, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "2520:2:0", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 398, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2521:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + }, + "functionReturnParameters": 282, + "id": 400, + "nodeType": "Return", + "src": "2513:9:0" + } + ] + }, + "id": 402, + "nodeType": "IfStatement", + "src": "1966:567:0", + "trueBody": { + "id": 329, + "nodeType": "Block", + "src": "1997:34:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 327, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "2018:2:0", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 326, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2019:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + }, + "functionReturnParameters": 282, + "id": 328, + "nodeType": "Return", + "src": "2011:9:0" + } + ] + } + }, + "id": 403, + "nodeType": "IfStatement", + "src": "1867:666:0", + "trueBody": { + "id": 316, + "nodeType": "Block", + "src": "1926:34:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "1947:2:0", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 313, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1948:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + }, + "functionReturnParameters": 282, + "id": 315, + "nodeType": "Return", + "src": "1940:9:0" + } + ] + } + } + ] + }, + "documentation": null, + "id": 405, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "indexOf", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 279, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 276, + "mutability": "mutable", + "name": "_haystack", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 405, + "src": "1685:23:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 275, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1685:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 278, + "mutability": "mutable", + "name": "_needle", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 405, + "src": "1710:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 277, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1710:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1684:48:0" + }, + "returnParameters": { + "id": 282, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 281, + "mutability": "mutable", + "name": "_returnCode", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 405, + "src": "1756:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 280, + "name": "int", + "nodeType": "ElementaryTypeName", + "src": "1756:3:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1755:17:0" + }, + "scope": 1032, + "src": "1668:871:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 422, + "nodeType": "Block", + "src": "2658:53:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 415, + "name": "_a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 407, + "src": "2685:2:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 416, + "name": "_b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 409, + "src": "2689:2:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 417, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2693:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 418, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2697:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 419, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2701:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 414, + "name": "strConcat", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 423, + 443, + 465, + 666 + ], + "referencedDeclaration": 666, + "src": "2675:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$", + "typeString": "function (string memory,string memory,string memory,string memory,string memory) pure returns (string memory)" + } + }, + "id": 420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2675:29:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 413, + "id": 421, + "nodeType": "Return", + "src": "2668:36:0" + } + ] + }, + "documentation": null, + "id": 423, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "strConcat", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 410, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 407, + "mutability": "mutable", + "name": "_a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 423, + "src": "2564:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 406, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2564:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 409, + "mutability": "mutable", + "name": "_b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 423, + "src": "2582:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 408, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2582:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2563:36:0" + }, + "returnParameters": { + "id": 413, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 412, + "mutability": "mutable", + "name": "_concatenatedString", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 423, + "src": "2623:33:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 411, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2623:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2622:35:0" + }, + "scope": 1032, + "src": "2545:166:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 442, + "nodeType": "Block", + "src": "2848:53:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 435, + "name": "_a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 425, + "src": "2875:2:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 436, + "name": "_b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 427, + "src": "2879:2:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 437, + "name": "_c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 429, + "src": "2883:2:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 438, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2887:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 439, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2891:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 434, + "name": "strConcat", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 423, + 443, + 465, + 666 + ], + "referencedDeclaration": 666, + "src": "2865:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$", + "typeString": "function (string memory,string memory,string memory,string memory,string memory) pure returns (string memory)" + } + }, + "id": 440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2865:29:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 433, + "id": 441, + "nodeType": "Return", + "src": "2858:36:0" + } + ] + }, + "documentation": null, + "id": 443, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "strConcat", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 430, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 425, + "mutability": "mutable", + "name": "_a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 443, + "src": "2736:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 424, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2736:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 427, + "mutability": "mutable", + "name": "_b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 443, + "src": "2754:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 426, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2754:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 429, + "mutability": "mutable", + "name": "_c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 443, + "src": "2772:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 428, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2772:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2735:54:0" + }, + "returnParameters": { + "id": 433, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 432, + "mutability": "mutable", + "name": "_concatenatedString", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 443, + "src": "2813:33:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 431, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2813:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2812:35:0" + }, + "scope": 1032, + "src": "2717:184:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 464, + "nodeType": "Block", + "src": "3056:53:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 457, + "name": "_a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 445, + "src": "3083:2:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 458, + "name": "_b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 447, + "src": "3087:2:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 459, + "name": "_c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 449, + "src": "3091:2:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 460, + "name": "_d", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 451, + "src": "3095:2:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 461, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3099:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 456, + "name": "strConcat", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 423, + 443, + 465, + 666 + ], + "referencedDeclaration": 666, + "src": "3073:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$", + "typeString": "function (string memory,string memory,string memory,string memory,string memory) pure returns (string memory)" + } + }, + "id": 462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3073:29:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 455, + "id": 463, + "nodeType": "Return", + "src": "3066:36:0" + } + ] + }, + "documentation": null, + "id": 465, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "strConcat", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 452, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 445, + "mutability": "mutable", + "name": "_a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 465, + "src": "2926:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 444, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2926:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 447, + "mutability": "mutable", + "name": "_b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 465, + "src": "2944:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 446, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2944:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 449, + "mutability": "mutable", + "name": "_c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 465, + "src": "2962:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 448, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2962:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 451, + "mutability": "mutable", + "name": "_d", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 465, + "src": "2980:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 450, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2980:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2925:72:0" + }, + "returnParameters": { + "id": 455, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 454, + "mutability": "mutable", + "name": "_concatenatedString", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 465, + "src": "3021:33:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 453, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3021:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3020:35:0" + }, + "scope": 1032, + "src": "2907:202:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 665, + "nodeType": "Block", + "src": "3282:853:0", + "statements": [ + { + "assignments": [ + 481 + ], + "declarations": [ + { + "constant": false, + "id": 481, + "mutability": "mutable", + "name": "_ba", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 665, + "src": "3292:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 480, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3292:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 486, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 484, + "name": "_a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 467, + "src": "3317:2:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 483, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3311:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 482, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3311:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3311:9:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3292:28:0" + }, + { + "assignments": [ + 488 + ], + "declarations": [ + { + "constant": false, + "id": 488, + "mutability": "mutable", + "name": "_bb", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 665, + "src": "3330:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 487, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3330:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 493, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 491, + "name": "_b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 469, + "src": "3355:2:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 490, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3349:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 489, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3349:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3349:9:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3330:28:0" + }, + { + "assignments": [ + 495 + ], + "declarations": [ + { + "constant": false, + "id": 495, + "mutability": "mutable", + "name": "_bc", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 665, + "src": "3368:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 494, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3368:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 500, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 498, + "name": "_c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 471, + "src": "3393:2:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 497, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3387:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 496, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3387:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3387:9:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3368:28:0" + }, + { + "assignments": [ + 502 + ], + "declarations": [ + { + "constant": false, + "id": 502, + "mutability": "mutable", + "name": "_bd", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 665, + "src": "3406:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 501, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3406:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 507, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 505, + "name": "_d", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 473, + "src": "3431:2:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 504, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3425:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 503, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3425:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3425:9:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3406:28:0" + }, + { + "assignments": [ + 509 + ], + "declarations": [ + { + "constant": false, + "id": 509, + "mutability": "mutable", + "name": "_be", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 665, + "src": "3444:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 508, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3444:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 514, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 512, + "name": "_e", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 475, + "src": "3469:2:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 511, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3463:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 510, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3463:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3463:9:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3444:28:0" + }, + { + "assignments": [ + 516 + ], + "declarations": [ + { + "constant": false, + "id": 516, + "mutability": "mutable", + "name": "abcde", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 665, + "src": "3482:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 515, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3482:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 534, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 519, + "name": "_ba", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 481, + "src": "3515:3:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3515:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 521, + "name": "_bb", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 488, + "src": "3528:3:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3528:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3515:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 524, + "name": "_bc", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "3541:3:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3541:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3515:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 527, + "name": "_bd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 502, + "src": "3554:3:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3554:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3515:49:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 530, + "name": "_be", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 509, + "src": "3567:3:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3567:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3515:62:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 518, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "3504:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory)" + }, + "typeName": { + "id": 517, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3508:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + } + }, + "id": 533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3504:74:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3482:96:0" + }, + { + "assignments": [ + 536 + ], + "declarations": [ + { + "constant": false, + "id": 536, + "mutability": "mutable", + "name": "babcde", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 665, + "src": "3588:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 535, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3588:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 541, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 539, + "name": "abcde", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 516, + "src": "3616:5:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 538, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3610:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 537, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3610:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3610:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3588:34:0" + }, + { + "assignments": [ + 543 + ], + "declarations": [ + { + "constant": false, + "id": 543, + "mutability": "mutable", + "name": "k", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 665, + "src": "3632:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 542, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3632:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 545, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 544, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3641:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "3632:10:0" + }, + { + "assignments": [ + 547 + ], + "declarations": [ + { + "constant": false, + "id": 547, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 665, + "src": "3652:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 546, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3652:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 549, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 548, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3661:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "3652:10:0" + }, + { + "body": { + "id": 570, + "nodeType": "Block", + "src": "3705:45:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 561, + "name": "babcde", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 536, + "src": "3719:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 564, + "indexExpression": { + "argumentTypes": null, + "id": 563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3726:3:0", + "subExpression": { + "argumentTypes": null, + "id": 562, + "name": "k", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "3726:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3719:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 565, + "name": "_ba", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 481, + "src": "3733:3:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 567, + "indexExpression": { + "argumentTypes": null, + "id": 566, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "3737:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3733:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "3719:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 569, + "nodeType": "ExpressionStatement", + "src": "3719:20:0" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 554, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "3684:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 555, + "name": "_ba", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 481, + "src": "3688:3:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3688:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3684:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 571, + "initializationExpression": { + "expression": { + "argumentTypes": null, + "id": 552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 550, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "3677:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 551, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3681:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3677:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 553, + "nodeType": "ExpressionStatement", + "src": "3677:5:0" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3700:3:0", + "subExpression": { + "argumentTypes": null, + "id": 558, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "3700:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 560, + "nodeType": "ExpressionStatement", + "src": "3700:3:0" + }, + "nodeType": "ForStatement", + "src": "3672:78:0" + }, + { + "body": { + "id": 592, + "nodeType": "Block", + "src": "3792:45:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 583, + "name": "babcde", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 536, + "src": "3806:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 586, + "indexExpression": { + "argumentTypes": null, + "id": 585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3813:3:0", + "subExpression": { + "argumentTypes": null, + "id": 584, + "name": "k", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "3813:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3806:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 587, + "name": "_bb", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 488, + "src": "3820:3:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 589, + "indexExpression": { + "argumentTypes": null, + "id": 588, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "3824:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3820:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "3806:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 591, + "nodeType": "ExpressionStatement", + "src": "3806:20:0" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 576, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "3771:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 577, + "name": "_bb", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 488, + "src": "3775:3:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3775:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3771:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 593, + "initializationExpression": { + "expression": { + "argumentTypes": null, + "id": 574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 572, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "3764:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 573, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3768:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3764:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 575, + "nodeType": "ExpressionStatement", + "src": "3764:5:0" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3787:3:0", + "subExpression": { + "argumentTypes": null, + "id": 580, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "3787:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 582, + "nodeType": "ExpressionStatement", + "src": "3787:3:0" + }, + "nodeType": "ForStatement", + "src": "3759:78:0" + }, + { + "body": { + "id": 614, + "nodeType": "Block", + "src": "3879:45:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 605, + "name": "babcde", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 536, + "src": "3893:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 608, + "indexExpression": { + "argumentTypes": null, + "id": 607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3900:3:0", + "subExpression": { + "argumentTypes": null, + "id": 606, + "name": "k", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "3900:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3893:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 609, + "name": "_bc", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "3907:3:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 611, + "indexExpression": { + "argumentTypes": null, + "id": 610, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "3911:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3907:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "3893:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 613, + "nodeType": "ExpressionStatement", + "src": "3893:20:0" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 598, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "3858:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 599, + "name": "_bc", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "3862:3:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3862:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3858:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 615, + "initializationExpression": { + "expression": { + "argumentTypes": null, + "id": 596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 594, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "3851:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 595, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3855:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3851:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 597, + "nodeType": "ExpressionStatement", + "src": "3851:5:0" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3874:3:0", + "subExpression": { + "argumentTypes": null, + "id": 602, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "3874:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 604, + "nodeType": "ExpressionStatement", + "src": "3874:3:0" + }, + "nodeType": "ForStatement", + "src": "3846:78:0" + }, + { + "body": { + "id": 636, + "nodeType": "Block", + "src": "3966:45:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 627, + "name": "babcde", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 536, + "src": "3980:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 630, + "indexExpression": { + "argumentTypes": null, + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3987:3:0", + "subExpression": { + "argumentTypes": null, + "id": 628, + "name": "k", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "3987:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3980:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 631, + "name": "_bd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 502, + "src": "3994:3:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 633, + "indexExpression": { + "argumentTypes": null, + "id": 632, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "3998:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3994:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "3980:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 635, + "nodeType": "ExpressionStatement", + "src": "3980:20:0" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 620, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "3945:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 621, + "name": "_bd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 502, + "src": "3949:3:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3949:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3945:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 637, + "initializationExpression": { + "expression": { + "argumentTypes": null, + "id": 618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 616, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "3938:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 617, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3942:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3938:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 619, + "nodeType": "ExpressionStatement", + "src": "3938:5:0" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3961:3:0", + "subExpression": { + "argumentTypes": null, + "id": 624, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "3961:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 626, + "nodeType": "ExpressionStatement", + "src": "3961:3:0" + }, + "nodeType": "ForStatement", + "src": "3933:78:0" + }, + { + "body": { + "id": 658, + "nodeType": "Block", + "src": "4053:45:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 649, + "name": "babcde", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 536, + "src": "4067:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 652, + "indexExpression": { + "argumentTypes": null, + "id": 651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4074:3:0", + "subExpression": { + "argumentTypes": null, + "id": 650, + "name": "k", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "4074:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4067:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 653, + "name": "_be", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 509, + "src": "4081:3:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 655, + "indexExpression": { + "argumentTypes": null, + "id": 654, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "4085:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4081:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "4067:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 657, + "nodeType": "ExpressionStatement", + "src": "4067:20:0" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 642, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "4032:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 643, + "name": "_be", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 509, + "src": "4036:3:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4036:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4032:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 659, + "initializationExpression": { + "expression": { + "argumentTypes": null, + "id": 640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 638, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "4025:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 639, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4029:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4025:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 641, + "nodeType": "ExpressionStatement", + "src": "4025:5:0" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4048:3:0", + "subExpression": { + "argumentTypes": null, + "id": 646, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "4048:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 648, + "nodeType": "ExpressionStatement", + "src": "4048:3:0" + }, + "nodeType": "ForStatement", + "src": "4020:78:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 662, + "name": "babcde", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 536, + "src": "4121:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 661, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4114:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 660, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4114:6:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4114:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 479, + "id": 664, + "nodeType": "Return", + "src": "4107:21:0" + } + ] + }, + "documentation": null, + "id": 666, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "strConcat", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 476, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 467, + "mutability": "mutable", + "name": "_a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 666, + "src": "3134:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 466, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3134:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 469, + "mutability": "mutable", + "name": "_b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 666, + "src": "3152:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 468, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3152:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 471, + "mutability": "mutable", + "name": "_c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 666, + "src": "3170:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 470, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3170:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 473, + "mutability": "mutable", + "name": "_d", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 666, + "src": "3188:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 472, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3188:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 475, + "mutability": "mutable", + "name": "_e", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 666, + "src": "3206:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 474, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3206:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3133:90:0" + }, + "returnParameters": { + "id": 479, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 478, + "mutability": "mutable", + "name": "_concatenatedString", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 666, + "src": "3247:33:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 477, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3247:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3246:35:0" + }, + "scope": 1032, + "src": "3115:1020:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 678, + "nodeType": "Block", + "src": "4221:43:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 674, + "name": "_a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 668, + "src": "4251:2:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 675, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4255:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 673, + "name": "safeParseInt", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 679, + 814 + ], + "referencedDeclaration": 814, + "src": "4238:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (string memory,uint256) pure returns (uint256)" + } + }, + "id": 676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4238:19:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 672, + "id": 677, + "nodeType": "Return", + "src": "4231:26:0" + } + ] + }, + "documentation": null, + "id": 679, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeParseInt", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 669, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 668, + "mutability": "mutable", + "name": "_a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 679, + "src": "4163:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 667, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4163:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4162:18:0" + }, + "returnParameters": { + "id": 672, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 671, + "mutability": "mutable", + "name": "_parsedInt", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 679, + "src": "4204:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 670, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4204:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4203:17:0" + }, + "scope": 1032, + "src": "4141:123:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 813, + "nodeType": "Block", + "src": "4359:816:0", + "statements": [ + { + "assignments": [ + 689 + ], + "declarations": [ + { + "constant": false, + "id": 689, + "mutability": "mutable", + "name": "bresult", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 813, + "src": "4369:20:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 688, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4369:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 694, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 692, + "name": "_a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 681, + "src": "4398:2:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 691, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4392:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 690, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4392:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4392:9:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4369:32:0" + }, + { + "assignments": [ + 696 + ], + "declarations": [ + { + "constant": false, + "id": 696, + "mutability": "mutable", + "name": "mint", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 813, + "src": "4411:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 695, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4411:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 698, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 697, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4423:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "4411:13:0" + }, + { + "assignments": [ + 700 + ], + "declarations": [ + { + "constant": false, + "id": 700, + "mutability": "mutable", + "name": "decimals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 813, + "src": "4434:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 699, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4434:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 702, + "initialValue": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 701, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4450:5:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "nodeType": "VariableDeclarationStatement", + "src": "4434:21:0" + }, + { + "body": { + "id": 798, + "nodeType": "Block", + "src": "4507:579:0", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 718, + "name": "bresult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 689, + "src": "4537:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 720, + "indexExpression": { + "argumentTypes": null, + "id": 719, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 704, + "src": "4545:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4537:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + ], + "id": 717, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4531:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 716, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4531:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4531:17:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4526:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 714, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4526:4:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4526:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3438", + "id": 723, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4553:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + "src": "4526:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 725, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4525:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 730, + "name": "bresult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 689, + "src": "4572:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 732, + "indexExpression": { + "argumentTypes": null, + "id": 731, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 704, + "src": "4580:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4572:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + ], + "id": 729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4566:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 728, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4566:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4566:17:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 727, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4561:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 726, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4561:4:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4561:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3537", + "id": 735, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4588:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_57_by_1", + "typeString": "int_const 57" + }, + "value": "57" + }, + "src": "4561:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 737, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4560:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4525:66:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 773, + "name": "bresult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 689, + "src": "4831:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 775, + "indexExpression": { + "argumentTypes": null, + "id": 774, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 704, + "src": "4839:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4831:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + ], + "id": 772, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4825:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 771, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4825:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4825:17:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 770, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4820:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 769, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4820:4:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4820:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3436", + "id": 778, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4847:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_46_by_1", + "typeString": "int_const 46" + }, + "value": "46" + }, + "src": "4820:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 795, + "nodeType": "Block", + "src": "4989:87:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "4e6f6e2d6e756d6572616c2063686172616374657220656e636f756e746572656420696e20737472696e6721", + "id": 792, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5014:46:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4be58aa33854b9640df5e6de9362711524d16dd038d5e02fc1ba6b1608cc4f9d", + "typeString": "literal_string \"Non-numeral character encountered in string!\"" + }, + "value": "Non-numeral character encountered in string!" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_4be58aa33854b9640df5e6de9362711524d16dd038d5e02fc1ba6b1608cc4f9d", + "typeString": "literal_string \"Non-numeral character encountered in string!\"" + } + ], + "id": 791, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "5007:6:0", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5007:54:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 794, + "nodeType": "ExpressionStatement", + "src": "5007:54:0" + } + ] + }, + "id": 796, + "nodeType": "IfStatement", + "src": "4816:260:0", + "trueBody": { + "id": 790, + "nodeType": "Block", + "src": "4851:132:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4877:9:0", + "subExpression": { + "argumentTypes": null, + "id": 781, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 700, + "src": "4878:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4d6f7265207468616e206f6e6520646563696d616c20656e636f756e746572656420696e20737472696e6721", + "id": 783, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4888:46:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e61ad9fae8fec249700a2b9f69c490bb75dcbed87b02d29d687b2f5b8e212ec2", + "typeString": "literal_string \"More than one decimal encountered in string!\"" + }, + "value": "More than one decimal encountered in string!" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e61ad9fae8fec249700a2b9f69c490bb75dcbed87b02d29d687b2f5b8e212ec2", + "typeString": "literal_string \"More than one decimal encountered in string!\"" + } + ], + "id": 780, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4869:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4869:66:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 785, + "nodeType": "ExpressionStatement", + "src": "4869:66:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 786, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 700, + "src": "4953:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 787, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4964:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "4953:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 789, + "nodeType": "ExpressionStatement", + "src": "4953:15:0" + } + ] + } + }, + "id": 797, + "nodeType": "IfStatement", + "src": "4521:555:0", + "trueBody": { + "id": 768, + "nodeType": "Block", + "src": "4593:217:0", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 739, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 700, + "src": "4615:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 749, + "nodeType": "IfStatement", + "src": "4611:103:0", + "trueBody": { + "id": 748, + "nodeType": "Block", + "src": "4625:89:0", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 742, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 740, + "name": "_b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 683, + "src": "4650:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 741, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4656:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4650:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "expression": { + "argumentTypes": null, + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "4691:4:0", + "subExpression": { + "argumentTypes": null, + "id": 744, + "name": "_b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 683, + "src": "4691:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 746, + "nodeType": "ExpressionStatement", + "src": "4691:4:0" + }, + "id": 747, + "nodeType": "IfStatement", + "src": "4646:49:0", + "trueBody": { + "id": 743, + "nodeType": "Break", + "src": "4659:5:0" + } + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 750, + "name": "mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "4731:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3130", + "id": 751, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4739:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "4731:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 753, + "nodeType": "ExpressionStatement", + "src": "4731:10:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 754, + "name": "mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "4759:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 759, + "name": "bresult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 689, + "src": "4778:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 761, + "indexExpression": { + "argumentTypes": null, + "id": 760, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 704, + "src": "4786:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4778:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + ], + "id": 758, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4772:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 757, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4772:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4772:17:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 756, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4767:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 755, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4767:4:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4767:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3438", + "id": 764, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4793:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + "src": "4767:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4759:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 767, + "nodeType": "ExpressionStatement", + "src": "4759:36:0" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 707, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 704, + "src": "4482:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 708, + "name": "bresult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 689, + "src": "4486:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4486:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4482:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 799, + "initializationExpression": { + "assignments": [ + 704 + ], + "declarations": [ + { + "constant": false, + "id": 704, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 799, + "src": "4470:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 703, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4470:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 706, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 705, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4479:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "4470:10:0" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4502:3:0", + "subExpression": { + "argumentTypes": null, + "id": 711, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 704, + "src": "4502:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 713, + "nodeType": "ExpressionStatement", + "src": "4502:3:0" + }, + "nodeType": "ForStatement", + "src": "4465:621:0" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 802, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 800, + "name": "_b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 683, + "src": "5099:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 801, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5104:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5099:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 810, + "nodeType": "IfStatement", + "src": "5095:53:0", + "trueBody": { + "id": 809, + "nodeType": "Block", + "src": "5107:41:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 803, + "name": "mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "5121:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 804, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5129:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "id": 805, + "name": "_b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 683, + "src": "5135:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5129:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5121:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 808, + "nodeType": "ExpressionStatement", + "src": "5121:16:0" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 811, + "name": "mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "5164:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 687, + "id": 812, + "nodeType": "Return", + "src": "5157:11:0" + } + ] + }, + "documentation": null, + "id": 814, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeParseInt", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 684, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 681, + "mutability": "mutable", + "name": "_a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 814, + "src": "4292:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 680, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4292:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 683, + "mutability": "mutable", + "name": "_b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 814, + "src": "4310:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 682, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4310:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4291:27:0" + }, + "returnParameters": { + "id": 687, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 686, + "mutability": "mutable", + "name": "_parsedInt", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 814, + "src": "4342:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 685, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4342:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4341:17:0" + }, + "scope": 1032, + "src": "4270:905:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 826, + "nodeType": "Block", + "src": "5257:39:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 822, + "name": "_a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 816, + "src": "5283:2:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 823, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5287:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 821, + "name": "parseInt", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 827, + 953 + ], + "referencedDeclaration": 953, + "src": "5274:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (string memory,uint256) pure returns (uint256)" + } + }, + "id": 824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5274:15:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 820, + "id": 825, + "nodeType": "Return", + "src": "5267:22:0" + } + ] + }, + "documentation": null, + "id": 827, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "parseInt", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 817, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 816, + "mutability": "mutable", + "name": "_a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 827, + "src": "5199:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 815, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5199:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5198:18:0" + }, + "returnParameters": { + "id": 820, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 819, + "mutability": "mutable", + "name": "_parsedInt", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 827, + "src": "5240:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 818, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5240:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5239:17:0" + }, + "scope": 1032, + "src": "5181:115:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 952, + "nodeType": "Block", + "src": "5387:711:0", + "statements": [ + { + "assignments": [ + 837 + ], + "declarations": [ + { + "constant": false, + "id": 837, + "mutability": "mutable", + "name": "bresult", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 952, + "src": "5397:20:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 836, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5397:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 842, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 840, + "name": "_a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 829, + "src": "5426:2:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 839, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5420:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 838, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5420:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5420:9:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5397:32:0" + }, + { + "assignments": [ + 844 + ], + "declarations": [ + { + "constant": false, + "id": 844, + "mutability": "mutable", + "name": "mint", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 952, + "src": "5439:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 843, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5439:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 846, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 845, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5451:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "5439:13:0" + }, + { + "assignments": [ + 848 + ], + "declarations": [ + { + "constant": false, + "id": 848, + "mutability": "mutable", + "name": "decimals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 952, + "src": "5462:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 847, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5462:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 850, + "initialValue": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 849, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5478:5:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "nodeType": "VariableDeclarationStatement", + "src": "5462:21:0" + }, + { + "body": { + "id": 937, + "nodeType": "Block", + "src": "5535:474:0", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 866, + "name": "bresult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 837, + "src": "5565:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 868, + "indexExpression": { + "argumentTypes": null, + "id": 867, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 852, + "src": "5573:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5565:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + ], + "id": 865, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5559:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 864, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "5559:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5559:17:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 863, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5554:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 862, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5554:4:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5554:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3438", + "id": 871, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5581:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + "src": "5554:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 873, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5553:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 878, + "name": "bresult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 837, + "src": "5600:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 880, + "indexExpression": { + "argumentTypes": null, + "id": 879, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 852, + "src": "5608:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5600:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + ], + "id": 877, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5594:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 876, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "5594:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5594:17:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 875, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5589:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 874, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5589:4:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5589:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3537", + "id": 883, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5616:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_57_by_1", + "typeString": "int_const 57" + }, + "value": "57" + }, + "src": "5589:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 885, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5588:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5553:66:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 923, + "name": "bresult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 837, + "src": "5931:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 925, + "indexExpression": { + "argumentTypes": null, + "id": 924, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 852, + "src": "5939:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5931:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + ], + "id": 922, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5925:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 921, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "5925:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5925:17:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 920, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5920:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 919, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5920:4:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5920:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3436", + "id": 928, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5947:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_46_by_1", + "typeString": "int_const 46" + }, + "value": "46" + }, + "src": "5920:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 935, + "nodeType": "IfStatement", + "src": "5916:83:0", + "trueBody": { + "id": 934, + "nodeType": "Block", + "src": "5951:48:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 930, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 848, + "src": "5969:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 931, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5980:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "5969:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 933, + "nodeType": "ExpressionStatement", + "src": "5969:15:0" + } + ] + } + }, + "id": 936, + "nodeType": "IfStatement", + "src": "5549:450:0", + "trueBody": { + "id": 918, + "nodeType": "Block", + "src": "5621:289:0", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 887, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 848, + "src": "5643:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 899, + "nodeType": "IfStatement", + "src": "5639:175:0", + "trueBody": { + "id": 898, + "nodeType": "Block", + "src": "5653:161:0", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 888, + "name": "_b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 831, + "src": "5678:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 889, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5684:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5678:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 896, + "nodeType": "Block", + "src": "5745:51:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "5770:4:0", + "subExpression": { + "argumentTypes": null, + "id": 893, + "name": "_b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 831, + "src": "5770:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 895, + "nodeType": "ExpressionStatement", + "src": "5770:4:0" + } + ] + }, + "id": 897, + "nodeType": "IfStatement", + "src": "5674:122:0", + "trueBody": { + "id": 892, + "nodeType": "Block", + "src": "5687:52:0", + "statements": [ + { + "id": 891, + "nodeType": "Break", + "src": "5712:5:0" + } + ] + } + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 900, + "name": "mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "5831:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3130", + "id": 901, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5839:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "5831:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 903, + "nodeType": "ExpressionStatement", + "src": "5831:10:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 904, + "name": "mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "5859:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 909, + "name": "bresult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 837, + "src": "5878:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 911, + "indexExpression": { + "argumentTypes": null, + "id": 910, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 852, + "src": "5886:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5878:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + ], + "id": 908, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5872:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 907, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "5872:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5872:17:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 906, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5867:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 905, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5867:4:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 913, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5867:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3438", + "id": 914, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5893:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + "src": "5867:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5859:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 917, + "nodeType": "ExpressionStatement", + "src": "5859:36:0" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 855, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 852, + "src": "5510:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 856, + "name": "bresult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 837, + "src": "5514:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5514:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5510:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 938, + "initializationExpression": { + "assignments": [ + 852 + ], + "declarations": [ + { + "constant": false, + "id": 852, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 938, + "src": "5498:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 851, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5498:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 854, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 853, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5507:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "5498:10:0" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "5530:3:0", + "subExpression": { + "argumentTypes": null, + "id": 859, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 852, + "src": "5530:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 861, + "nodeType": "ExpressionStatement", + "src": "5530:3:0" + }, + "nodeType": "ForStatement", + "src": "5493:516:0" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 939, + "name": "_b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 831, + "src": "6022:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 940, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6027:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6022:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 949, + "nodeType": "IfStatement", + "src": "6018:53:0", + "trueBody": { + "id": 948, + "nodeType": "Block", + "src": "6030:41:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 942, + "name": "mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "6044:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 943, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6052:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "id": 944, + "name": "_b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 831, + "src": "6058:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6052:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6044:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 947, + "nodeType": "ExpressionStatement", + "src": "6044:16:0" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 950, + "name": "mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "6087:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 835, + "id": 951, + "nodeType": "Return", + "src": "6080:11:0" + } + ] + }, + "documentation": null, + "id": 953, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "parseInt", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 832, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 829, + "mutability": "mutable", + "name": "_a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 953, + "src": "5320:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 828, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5320:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 831, + "mutability": "mutable", + "name": "_b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 953, + "src": "5338:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 830, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5338:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5319:27:0" + }, + "returnParameters": { + "id": 835, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 834, + "mutability": "mutable", + "name": "_parsedInt", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 953, + "src": "5370:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 833, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5370:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5369:17:0" + }, + "scope": 1032, + "src": "5302:796:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1030, + "nodeType": "Block", + "src": "6183:386:0", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 960, + "name": "_i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 955, + "src": "6197:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 961, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6203:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6197:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 966, + "nodeType": "IfStatement", + "src": "6193:48:0", + "trueBody": { + "id": 965, + "nodeType": "Block", + "src": "6206:35:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6227:3:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", + "typeString": "literal_string \"0\"" + }, + "value": "0" + }, + "functionReturnParameters": 959, + "id": 964, + "nodeType": "Return", + "src": "6220:10:0" + } + ] + } + }, + { + "assignments": [ + 968 + ], + "declarations": [ + { + "constant": false, + "id": 968, + "mutability": "mutable", + "name": "j", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1030, + "src": "6250:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 967, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6250:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 970, + "initialValue": { + "argumentTypes": null, + "id": 969, + "name": "_i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 955, + "src": "6259:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6250:11:0" + }, + { + "assignments": [ + 972 + ], + "declarations": [ + { + "constant": false, + "id": 972, + "mutability": "mutable", + "name": "len", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1030, + "src": "6271:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 971, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6271:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 973, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "6271:8:0" + }, + { + "body": { + "id": 984, + "nodeType": "Block", + "src": "6304:51:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "6318:5:0", + "subExpression": { + "argumentTypes": null, + "id": 977, + "name": "len", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 972, + "src": "6318:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 979, + "nodeType": "ExpressionStatement", + "src": "6318:5:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 980, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 968, + "src": "6337:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3130", + "id": 981, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6342:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "6337:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 983, + "nodeType": "ExpressionStatement", + "src": "6337:7:0" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 974, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 968, + "src": "6296:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 975, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6301:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6296:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 985, + "nodeType": "WhileStatement", + "src": "6289:66:0" + }, + { + "assignments": [ + 987 + ], + "declarations": [ + { + "constant": false, + "id": 987, + "mutability": "mutable", + "name": "bstr", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1030, + "src": "6364:17:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 986, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6364:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 992, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 990, + "name": "len", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 972, + "src": "6394:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 989, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "6384:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 988, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6388:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6384:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6364:34:0" + }, + { + "assignments": [ + 994 + ], + "declarations": [ + { + "constant": false, + "id": 994, + "mutability": "mutable", + "name": "k", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1030, + "src": "6408:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 993, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6408:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 998, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 995, + "name": "len", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 972, + "src": "6417:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 996, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6423:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "6417:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6408:16:0" + }, + { + "body": { + "id": 1023, + "nodeType": "Block", + "src": "6450:84:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1002, + "name": "bstr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 987, + "src": "6464:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1005, + "indexExpression": { + "argumentTypes": null, + "id": 1004, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "6469:3:0", + "subExpression": { + "argumentTypes": null, + "id": 1003, + "name": "k", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 994, + "src": "6469:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6464:9:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3438", + "id": 1010, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6487:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1011, + "name": "_i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 955, + "src": "6492:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 1012, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6497:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "6492:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6487:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1009, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6481:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 1008, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "6481:5:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6481:19:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 1007, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6476:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": { + "id": 1006, + "name": "byte", + "nodeType": "ElementaryTypeName", + "src": "6476:4:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6476:25:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "6464:37:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 1018, + "nodeType": "ExpressionStatement", + "src": "6464:37:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 1021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1019, + "name": "_i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 955, + "src": "6515:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3130", + "id": 1020, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6521:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "6515:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1022, + "nodeType": "ExpressionStatement", + "src": "6515:8:0" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 999, + "name": "_i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 955, + "src": "6441:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1000, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6447:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6441:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1024, + "nodeType": "WhileStatement", + "src": "6434:100:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1027, + "name": "bstr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 987, + "src": "6557:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1026, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6550:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 1025, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6550:6:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6550:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 959, + "id": 1029, + "nodeType": "Return", + "src": "6543:19:0" + } + ] + }, + "documentation": null, + "id": 1031, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "uint2str", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 956, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 955, + "mutability": "mutable", + "name": "_i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1031, + "src": "6122:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 954, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6122:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6121:9:0" + }, + "returnParameters": { + "id": 959, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 958, + "mutability": "mutable", + "name": "_uintAsString", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1031, + "src": "6154:27:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 957, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6154:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6153:29:0" + }, + "scope": 1032, + "src": "6104:465:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 1033, + "src": "58:6513:0" + } + ], + "src": "32:6539:0" + }, + "id": 0 + } + } + } +} diff --git a/artifacts/build-info/a5c2336dcd813008d0af5fd231e1eb45.json b/artifacts/build-info/a5c2336dcd813008d0af5fd231e1eb45.json new file mode 100644 index 00000000..8bbba6fe --- /dev/null +++ b/artifacts/build-info/a5c2336dcd813008d0af5fd231e1eb45.json @@ -0,0 +1,835 @@ +{ + "id": "a5c2336dcd813008d0af5fd231e1eb45", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.10", + "solcLongVersion": "0.8.10+commit.fc410830", + "input": { + "language": "Solidity", + "sources": { + "contracts/Math/SignedSafeMath.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations.\n *\n * NOTE: `SignedSafeMath` is no longer needed starting with Solidity 0.8. The compiler\n * now has built in overflow checking.\n */\nlibrary SignedSafeMath {\n /**\n * @dev Returns the multiplication of two signed integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `*` operator.\n *\n * Requirements:\n *\n * - Multiplication cannot overflow.\n */\n function mul(int256 a, int256 b) internal pure returns (int256) {\n return a * b;\n }\n\n /**\n * @dev Returns the integer division of two signed integers. Reverts on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator.\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function div(int256 a, int256 b) internal pure returns (int256) {\n return a / b;\n }\n\n /**\n * @dev Returns the subtraction of two signed integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(int256 a, int256 b) internal pure returns (int256) {\n return a - b;\n }\n\n /**\n * @dev Returns the addition of two signed integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n *\n * - Addition cannot overflow.\n */\n function add(int256 a, int256 b) internal pure returns (int256) {\n return a + b;\n }\n}" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "output": { + "contracts": { + "contracts/Math/SignedSafeMath.sol": { + "SignedSafeMath": { + "abi": [], + "devdoc": { + "details": "Wrappers over Solidity's arithmetic operations. NOTE: `SignedSafeMath` is no longer needed starting with Solidity 0.8. The compiler now has built in overflow checking.", + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f6b1bc39a6e0d6666f91dbec23ad323c9c67160cf85b3653f6eac2abb5218bbf64736f6c634300080a0033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF6 0xB1 0xBC CODECOPY 0xA6 0xE0 0xD6 PUSH7 0x6F91DBEC23AD32 EXTCODECOPY SWAP13 PUSH8 0x160CF85B3653F6EA 0xC2 0xAB 0xB5 0x21 DUP12 0xBF PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "251:1399:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;251:1399:0;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f6b1bc39a6e0d6666f91dbec23ad323c9c67160cf85b3653f6eac2abb5218bbf64736f6c634300080a0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF6 0xB1 0xBC CODECOPY 0xA6 0xE0 0xD6 PUSH7 0x6F91DBEC23AD32 EXTCODECOPY SWAP13 PUSH8 0x160CF85B3653F6EA 0xC2 0xAB 0xB5 0x21 DUP12 0xBF PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "251:1399:0:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17200", + "executionCost": "103", + "totalCost": "17303" + }, + "internal": { + "add(int256,int256)": "infinite", + "div(int256,int256)": "infinite", + "mul(int256,int256)": "infinite", + "sub(int256,int256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations. NOTE: `SignedSafeMath` is no longer needed starting with Solidity 0.8. The compiler now has built in overflow checking.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Math/SignedSafeMath.sol\":\"SignedSafeMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Math/SignedSafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations.\\n *\\n * NOTE: `SignedSafeMath` is no longer needed starting with Solidity 0.8. The compiler\\n * now has built in overflow checking.\\n */\\nlibrary SignedSafeMath {\\n /**\\n * @dev Returns the multiplication of two signed integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `*` operator.\\n *\\n * Requirements:\\n *\\n * - Multiplication cannot overflow.\\n */\\n function mul(int256 a, int256 b) internal pure returns (int256) {\\n return a * b;\\n }\\n\\n /**\\n * @dev Returns the integer division of two signed integers. Reverts on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator.\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(int256 a, int256 b) internal pure returns (int256) {\\n return a / b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two signed integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(int256 a, int256 b) internal pure returns (int256) {\\n return a - b;\\n }\\n\\n /**\\n * @dev Returns the addition of two signed integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\n *\\n * - Addition cannot overflow.\\n */\\n function add(int256 a, int256 b) internal pure returns (int256) {\\n return a + b;\\n }\\n}\",\"keccak256\":\"0xdd167823bab876969c1f7820375fa16bf8ea12022c08c202f2f3540fe64db843\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "sources": { + "contracts/Math/SignedSafeMath.sol": { + "ast": { + "absolutePath": "contracts/Math/SignedSafeMath.sol", + "exportedSymbols": { + "SignedSafeMath": [ + 63 + ] + }, + "id": 64, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "SignedSafeMath", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 2, + "nodeType": "StructuredDocumentation", + "src": "58:192:0", + "text": " @dev Wrappers over Solidity's arithmetic operations.\n NOTE: `SignedSafeMath` is no longer needed starting with Solidity 0.8. The compiler\n now has built in overflow checking." + }, + "fullyImplemented": true, + "id": 63, + "linearizedBaseContracts": [ + 63 + ], + "name": "SignedSafeMath", + "nameLocation": "259:14:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 16, + "nodeType": "Block", + "src": "583:29:0", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 14, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "600:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 13, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "604:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "600:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 11, + "id": 15, + "nodeType": "Return", + "src": "593:12:0" + } + ] + }, + "documentation": { + "id": 3, + "nodeType": "StructuredDocumentation", + "src": "280:234:0", + "text": " @dev Returns the multiplication of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow." + }, + "id": 17, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mul", + "nameLocation": "528:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5, + "mutability": "mutable", + "name": "a", + "nameLocation": "539:1:0", + "nodeType": "VariableDeclaration", + "scope": 17, + "src": "532:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 4, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "532:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7, + "mutability": "mutable", + "name": "b", + "nameLocation": "549:1:0", + "nodeType": "VariableDeclaration", + "scope": 17, + "src": "542:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 6, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "542:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "531:20:0" + }, + "returnParameters": { + "id": 11, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 17, + "src": "575:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "575:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "574:8:0" + }, + "scope": 63, + "src": "519:93:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 31, + "nodeType": "Block", + "src": "961:29:0", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 29, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 27, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20, + "src": "978:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 28, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "982:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "978:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 26, + "id": 30, + "nodeType": "Return", + "src": "971:12:0" + } + ] + }, + "documentation": { + "id": 18, + "nodeType": "StructuredDocumentation", + "src": "618:274:0", + "text": " @dev Returns the integer division of two signed integers. Reverts on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator.\n Requirements:\n - The divisor cannot be zero." + }, + "id": 32, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nameLocation": "906:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 23, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 20, + "mutability": "mutable", + "name": "a", + "nameLocation": "917:1:0", + "nodeType": "VariableDeclaration", + "scope": 32, + "src": "910:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 19, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "910:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 22, + "mutability": "mutable", + "name": "b", + "nameLocation": "927:1:0", + "nodeType": "VariableDeclaration", + "scope": 32, + "src": "920:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 21, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "920:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "909:20:0" + }, + "returnParameters": { + "id": 26, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 25, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 32, + "src": "953:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 24, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "953:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "952:8:0" + }, + "scope": 63, + "src": "897:93:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 46, + "nodeType": "Block", + "src": "1293:29:0", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 44, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 42, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "1310:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 43, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37, + "src": "1314:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1310:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 41, + "id": 45, + "nodeType": "Return", + "src": "1303:12:0" + } + ] + }, + "documentation": { + "id": 33, + "nodeType": "StructuredDocumentation", + "src": "996:228:0", + "text": " @dev Returns the subtraction of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow." + }, + "id": 47, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nameLocation": "1238:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 38, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 35, + "mutability": "mutable", + "name": "a", + "nameLocation": "1249:1:0", + "nodeType": "VariableDeclaration", + "scope": 47, + "src": "1242:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 34, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1242:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 37, + "mutability": "mutable", + "name": "b", + "nameLocation": "1259:1:0", + "nodeType": "VariableDeclaration", + "scope": 47, + "src": "1252:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 36, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1252:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1241:20:0" + }, + "returnParameters": { + "id": 41, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 40, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 47, + "src": "1285:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 39, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1285:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1284:8:0" + }, + "scope": 63, + "src": "1229:93:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 61, + "nodeType": "Block", + "src": "1619:29:0", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 59, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 57, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "1636:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 58, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "1640:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1636:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 56, + "id": 60, + "nodeType": "Return", + "src": "1629:12:0" + } + ] + }, + "documentation": { + "id": 48, + "nodeType": "StructuredDocumentation", + "src": "1328:222:0", + "text": " @dev Returns the addition of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow." + }, + "id": 62, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "1564:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 53, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50, + "mutability": "mutable", + "name": "a", + "nameLocation": "1575:1:0", + "nodeType": "VariableDeclaration", + "scope": 62, + "src": "1568:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 49, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1568:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 52, + "mutability": "mutable", + "name": "b", + "nameLocation": "1585:1:0", + "nodeType": "VariableDeclaration", + "scope": 62, + "src": "1578:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 51, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1578:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1567:20:0" + }, + "returnParameters": { + "id": 56, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 55, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 62, + "src": "1611:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 54, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1611:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1610:8:0" + }, + "scope": 63, + "src": "1555:93:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 64, + "src": "251:1399:0", + "usedErrors": [] + } + ], + "src": "33:1617:0" + }, + "id": 0 + } + } + } +} diff --git a/artifacts/build-info/bb8d59f3a7a2a485b603276e00bcd4a5.json b/artifacts/build-info/bb8d59f3a7a2a485b603276e00bcd4a5.json new file mode 100644 index 00000000..a7ac89c6 --- /dev/null +++ b/artifacts/build-info/bb8d59f3a7a2a485b603276e00bcd4a5.json @@ -0,0 +1,547 @@ +{ + "id": "bb8d59f3a7a2a485b603276e00bcd4a5", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.10", + "solcLongVersion": "0.8.10+commit.fc410830", + "input": { + "language": "Solidity", + "sources": { + "contracts/ERC20/IWETH.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\ninterface IWETH {\n function deposit() external payable;\n function transfer(address to, uint value) external returns (bool);\n function transferFrom(address src, address dst, uint wad) external returns (bool);\n function withdraw(uint) external;\n}" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "output": { + "contracts": { + "contracts/ERC20/IWETH.sol": { + "IWETH": { + "abi": [ + { + "inputs": [], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "wad", + "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": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "deposit()": "d0e30db0", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd", + "withdraw(uint256)": "2e1a7d4d" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"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\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ERC20/IWETH.sol\":\"IWETH\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/ERC20/IWETH.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ninterface IWETH {\\n function deposit() external payable;\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address src, address dst, uint wad) external returns (bool);\\n function withdraw(uint) external;\\n}\",\"keccak256\":\"0x18212a89037731f408481a447fb8044224896108bca501237d9ff509a9e6335b\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "sources": { + "contracts/ERC20/IWETH.sol": { + "ast": { + "absolutePath": "contracts/ERC20/IWETH.sol", + "exportedSymbols": { + "IWETH": [ + 30 + ] + }, + "id": 31, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IWETH", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 30, + "linearizedBaseContracts": [ + 30 + ], + "name": "IWETH", + "nameLocation": "69:5:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "d0e30db0", + "id": 4, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "deposit", + "nameLocation": "90:7:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2, + "nodeType": "ParameterList", + "parameters": [], + "src": "97:2:0" + }, + "returnParameters": { + "id": 3, + "nodeType": "ParameterList", + "parameters": [], + "src": "116:0:0" + }, + "scope": 30, + "src": "81:36:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a9059cbb", + "id": 13, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "131:8:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6, + "mutability": "mutable", + "name": "to", + "nameLocation": "148:2:0", + "nodeType": "VariableDeclaration", + "scope": 13, + "src": "140:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "140:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8, + "mutability": "mutable", + "name": "value", + "nameLocation": "157:5:0", + "nodeType": "VariableDeclaration", + "scope": 13, + "src": "152:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "152:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "139:24:0" + }, + "returnParameters": { + "id": 12, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 13, + "src": "182:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "182:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "181:6:0" + }, + "scope": 30, + "src": "122:66:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "23b872dd", + "id": 24, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "202:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 20, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15, + "mutability": "mutable", + "name": "src", + "nameLocation": "223:3:0", + "nodeType": "VariableDeclaration", + "scope": 24, + "src": "215:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "215:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 17, + "mutability": "mutable", + "name": "dst", + "nameLocation": "236:3:0", + "nodeType": "VariableDeclaration", + "scope": 24, + "src": "228:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "228:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 19, + "mutability": "mutable", + "name": "wad", + "nameLocation": "246:3:0", + "nodeType": "VariableDeclaration", + "scope": 24, + "src": "241:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 18, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "241:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "214:36:0" + }, + "returnParameters": { + "id": 23, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 22, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 24, + "src": "269:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 21, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "269:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "268:6:0" + }, + "scope": 30, + "src": "193:82:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "2e1a7d4d", + "id": 29, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "withdraw", + "nameLocation": "289:8:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 27, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 26, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 29, + "src": "298:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 25, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "298:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "297:6:0" + }, + "returnParameters": { + "id": 28, + "nodeType": "ParameterList", + "parameters": [], + "src": "312:0:0" + }, + "scope": 30, + "src": "280:33:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 31, + "src": "59:256:0", + "usedErrors": [] + } + ], + "src": "32:283:0" + }, + "id": 0 + } + } + } +} diff --git a/artifacts/build-info/c711a20ba259c6a2d94e00a1efe2a0cb.json b/artifacts/build-info/c711a20ba259c6a2d94e00a1efe2a0cb.json new file mode 100644 index 00000000..7ac2d191 --- /dev/null +++ b/artifacts/build-info/c711a20ba259c6a2d94e00a1efe2a0cb.json @@ -0,0 +1,2241 @@ +{ + "id": "c711a20ba259c6a2d94e00a1efe2a0cb", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.10", + "solcLongVersion": "0.8.10+commit.fc410830", + "input": { + "language": "Solidity", + "sources": { + "contracts/DEI/Pools/IDEIPool.sol": { + "content": "// Be name Khoda\n// Bime Abolfazl\n\n// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.6.11;\n\ninterface IDEIPool {\n function minting_fee() external returns (uint256);\n function redemption_fee() external returns (uint256);\n function buyback_fee() external returns (uint256);\n function recollat_fee() external returns (uint256);\n function collatDollarBalance() external returns (uint256);\n function availableExcessCollatDV() external returns (uint256);\n function getCollateralPrice() external returns (uint256);\n function setCollatETHOracle(address _collateral_weth_oracle_address, address _weth_address) external;\n function mint1t1DEI(uint256 collateral_amount, uint256 DEI_out_min) external;\n function mintAlgorithmicDEI(uint256 deus_amount_d18, uint256 DEI_out_min) external;\n function mintFractionalDEI(uint256 collateral_amount, uint256 deus_amount, uint256 DEI_out_min) external;\n function redeem1t1DEI(uint256 DEI_amount, uint256 COLLATERAL_out_min) external;\n function redeemFractionalDEI(uint256 DEI_amount, uint256 DEUS_out_min, uint256 COLLATERAL_out_min) external;\n function redeemAlgorithmicDEI(uint256 DEI_amount, uint256 DEUS_out_min) external;\n function collectRedemption() external;\n function recollateralizeDEI(uint256 collateral_amount, uint256 DEUS_out_min) external;\n function buyBackDEUS(uint256 DEUS_amount, uint256 COLLATERAL_out_min) external;\n function toggleMinting() external;\n function toggleRedeeming() external;\n function toggleRecollateralize() external;\n function toggleBuyBack() external;\n function toggleCollateralPrice(uint256 _new_price) external;\n function setPoolParameters(uint256 new_ceiling, uint256 new_bonus_rate, uint256 new_redemption_delay, uint256 new_mint_fee, uint256 new_redeem_fee, uint256 new_buyback_fee, uint256 new_recollat_fee) external;\n function setTimelock(address new_timelock) external;\n function setOwner(address _owner_address) external;\n}\n\n//Dar panah khoda" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "output": { + "contracts": { + "contracts/DEI/Pools/IDEIPool.sol": { + "IDEIPool": { + "abi": [ + { + "inputs": [], + "name": "availableExcessCollatDV", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEUS_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "COLLATERAL_out_min", + "type": "uint256" + } + ], + "name": "buyBackDEUS", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "buyback_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "collatDollarBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "collectRedemption", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getCollateralPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "DEI_out_min", + "type": "uint256" + } + ], + "name": "mint1t1DEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deus_amount_d18", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "DEI_out_min", + "type": "uint256" + } + ], + "name": "mintAlgorithmicDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "DEI_out_min", + "type": "uint256" + } + ], + "name": "mintFractionalDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "minting_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "recollat_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "DEUS_out_min", + "type": "uint256" + } + ], + "name": "recollateralizeDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "COLLATERAL_out_min", + "type": "uint256" + } + ], + "name": "redeem1t1DEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "DEUS_out_min", + "type": "uint256" + } + ], + "name": "redeemAlgorithmicDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "DEUS_out_min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "COLLATERAL_out_min", + "type": "uint256" + } + ], + "name": "redeemFractionalDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "redemption_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_collateral_weth_oracle_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_weth_address", + "type": "address" + } + ], + "name": "setCollatETHOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner_address", + "type": "address" + } + ], + "name": "setOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "new_ceiling", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_bonus_rate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_redemption_delay", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_mint_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_redeem_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_buyback_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_recollat_fee", + "type": "uint256" + } + ], + "name": "setPoolParameters", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "new_timelock", + "type": "address" + } + ], + "name": "setTimelock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleBuyBack", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_new_price", + "type": "uint256" + } + ], + "name": "toggleCollateralPrice", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleMinting", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleRecollateralize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleRedeeming", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "availableExcessCollatDV()": "f61adab2", + "buyBackDEUS(uint256,uint256)": "1725ebdd", + "buyback_fee()": "101197c7", + "collatDollarBalance()": "17284c94", + "collectRedemption()": "12ace5a2", + "getCollateralPrice()": "f7683bbc", + "mint1t1DEI(uint256,uint256)": "f81358c4", + "mintAlgorithmicDEI(uint256,uint256)": "828e73f8", + "mintFractionalDEI(uint256,uint256,uint256)": "bc4701dc", + "minting_fee()": "c3355b8d", + "recollat_fee()": "fede5c9c", + "recollateralizeDEI(uint256,uint256)": "50291fd1", + "redeem1t1DEI(uint256,uint256)": "cbf97cf7", + "redeemAlgorithmicDEI(uint256,uint256)": "206a5d99", + "redeemFractionalDEI(uint256,uint256,uint256)": "a20fccde", + "redemption_fee()": "cb73999f", + "setCollatETHOracle(address,address)": "88d42cf2", + "setOwner(address)": "13af4035", + "setPoolParameters(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": "4ebbe762", + "setTimelock(address)": "bdacb303", + "toggleBuyBack()": "50c9ecd9", + "toggleCollateralPrice(uint256)": "7ad1f61b", + "toggleMinting()": "7d55094d", + "toggleRecollateralize()": "42d15aec", + "toggleRedeeming()": "daa50485" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"availableExcessCollatDV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"DEUS_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"COLLATERAL_out_min\",\"type\":\"uint256\"}],\"name\":\"buyBackDEUS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"buyback_fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collatDollarBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectRedemption\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCollateralPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"collateral_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"DEI_out_min\",\"type\":\"uint256\"}],\"name\":\"mint1t1DEI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deus_amount_d18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"DEI_out_min\",\"type\":\"uint256\"}],\"name\":\"mintAlgorithmicDEI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"collateral_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deus_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"DEI_out_min\",\"type\":\"uint256\"}],\"name\":\"mintFractionalDEI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minting_fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recollat_fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"collateral_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"DEUS_out_min\",\"type\":\"uint256\"}],\"name\":\"recollateralizeDEI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"DEI_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"COLLATERAL_out_min\",\"type\":\"uint256\"}],\"name\":\"redeem1t1DEI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"DEI_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"DEUS_out_min\",\"type\":\"uint256\"}],\"name\":\"redeemAlgorithmicDEI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"DEI_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"DEUS_out_min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"COLLATERAL_out_min\",\"type\":\"uint256\"}],\"name\":\"redeemFractionalDEI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redemption_fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_collateral_weth_oracle_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_weth_address\",\"type\":\"address\"}],\"name\":\"setCollatETHOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner_address\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"new_ceiling\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_bonus_rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_redemption_delay\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_mint_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_redeem_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_buyback_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_recollat_fee\",\"type\":\"uint256\"}],\"name\":\"setPoolParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"new_timelock\",\"type\":\"address\"}],\"name\":\"setTimelock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleBuyBack\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_new_price\",\"type\":\"uint256\"}],\"name\":\"toggleCollateralPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleMinting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleRecollateralize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleRedeeming\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/DEI/Pools/IDEIPool.sol\":\"IDEIPool\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/DEI/Pools/IDEIPool.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.6.11;\\n\\ninterface IDEIPool {\\n function minting_fee() external returns (uint256);\\n function redemption_fee() external returns (uint256);\\n function buyback_fee() external returns (uint256);\\n function recollat_fee() external returns (uint256);\\n function collatDollarBalance() external returns (uint256);\\n function availableExcessCollatDV() external returns (uint256);\\n function getCollateralPrice() external returns (uint256);\\n function setCollatETHOracle(address _collateral_weth_oracle_address, address _weth_address) external;\\n function mint1t1DEI(uint256 collateral_amount, uint256 DEI_out_min) external;\\n function mintAlgorithmicDEI(uint256 deus_amount_d18, uint256 DEI_out_min) external;\\n function mintFractionalDEI(uint256 collateral_amount, uint256 deus_amount, uint256 DEI_out_min) external;\\n function redeem1t1DEI(uint256 DEI_amount, uint256 COLLATERAL_out_min) external;\\n function redeemFractionalDEI(uint256 DEI_amount, uint256 DEUS_out_min, uint256 COLLATERAL_out_min) external;\\n function redeemAlgorithmicDEI(uint256 DEI_amount, uint256 DEUS_out_min) external;\\n function collectRedemption() external;\\n function recollateralizeDEI(uint256 collateral_amount, uint256 DEUS_out_min) external;\\n function buyBackDEUS(uint256 DEUS_amount, uint256 COLLATERAL_out_min) external;\\n function toggleMinting() external;\\n function toggleRedeeming() external;\\n function toggleRecollateralize() external;\\n function toggleBuyBack() external;\\n function toggleCollateralPrice(uint256 _new_price) external;\\n function setPoolParameters(uint256 new_ceiling, uint256 new_bonus_rate, uint256 new_redemption_delay, uint256 new_mint_fee, uint256 new_redeem_fee, uint256 new_buyback_fee, uint256 new_recollat_fee) external;\\n function setTimelock(address new_timelock) external;\\n function setOwner(address _owner_address) external;\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x6627b96f8de970f6f745af0a3b3126e62bc743d9bbfbd15599051dc56627a8bc\",\"license\":\"GPL-2.0-or-later\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "sources": { + "contracts/DEI/Pools/IDEIPool.sol": { + "ast": { + "absolutePath": "contracts/DEI/Pools/IDEIPool.sol", + "exportedSymbols": { + "IDEIPool": [ + 151 + ] + }, + "id": 152, + "license": "GPL-2.0-or-later", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "80:25:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IDEIPool", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 151, + "linearizedBaseContracts": [ + 151 + ], + "name": "IDEIPool", + "nameLocation": "117:8:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "c3355b8d", + "id": 6, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "minting_fee", + "nameLocation": "141:11:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2, + "nodeType": "ParameterList", + "parameters": [], + "src": "152:2:0" + }, + "returnParameters": { + "id": 5, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6, + "src": "173:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "173:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "172:9:0" + }, + "scope": 151, + "src": "132:50:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "cb73999f", + "id": 11, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "redemption_fee", + "nameLocation": "196:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7, + "nodeType": "ParameterList", + "parameters": [], + "src": "210:2:0" + }, + "returnParameters": { + "id": 10, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11, + "src": "231:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "231:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "230:9:0" + }, + "scope": 151, + "src": "187:53:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "101197c7", + "id": 16, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "buyback_fee", + "nameLocation": "254:11:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12, + "nodeType": "ParameterList", + "parameters": [], + "src": "265:2:0" + }, + "returnParameters": { + "id": 15, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 16, + "src": "286:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "286:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "285:9:0" + }, + "scope": 151, + "src": "245:50:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "fede5c9c", + "id": 21, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "recollat_fee", + "nameLocation": "309:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17, + "nodeType": "ParameterList", + "parameters": [], + "src": "321:2:0" + }, + "returnParameters": { + "id": 20, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 19, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 21, + "src": "342:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 18, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "342:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "341:9:0" + }, + "scope": 151, + "src": "300:51:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "17284c94", + "id": 26, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "collatDollarBalance", + "nameLocation": "365:19:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 22, + "nodeType": "ParameterList", + "parameters": [], + "src": "384:2:0" + }, + "returnParameters": { + "id": 25, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 24, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 26, + "src": "405:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 23, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "405:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "404:9:0" + }, + "scope": 151, + "src": "356:58:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "f61adab2", + "id": 31, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "availableExcessCollatDV", + "nameLocation": "428:23:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 27, + "nodeType": "ParameterList", + "parameters": [], + "src": "451:2:0" + }, + "returnParameters": { + "id": 30, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 29, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 31, + "src": "472:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 28, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "472:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "471:9:0" + }, + "scope": 151, + "src": "419:62:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "f7683bbc", + "id": 36, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getCollateralPrice", + "nameLocation": "495:18:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 32, + "nodeType": "ParameterList", + "parameters": [], + "src": "513:2:0" + }, + "returnParameters": { + "id": 35, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 34, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 36, + "src": "534:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 33, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "534:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "533:9:0" + }, + "scope": 151, + "src": "486:57:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "88d42cf2", + "id": 43, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setCollatETHOracle", + "nameLocation": "557:18:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 41, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 38, + "mutability": "mutable", + "name": "_collateral_weth_oracle_address", + "nameLocation": "584:31:0", + "nodeType": "VariableDeclaration", + "scope": 43, + "src": "576:39:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 37, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "576:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 40, + "mutability": "mutable", + "name": "_weth_address", + "nameLocation": "625:13:0", + "nodeType": "VariableDeclaration", + "scope": 43, + "src": "617:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 39, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "617:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "575:64:0" + }, + "returnParameters": { + "id": 42, + "nodeType": "ParameterList", + "parameters": [], + "src": "648:0:0" + }, + "scope": 151, + "src": "548:101:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "f81358c4", + "id": 50, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "mint1t1DEI", + "nameLocation": "663:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 48, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 45, + "mutability": "mutable", + "name": "collateral_amount", + "nameLocation": "682:17:0", + "nodeType": "VariableDeclaration", + "scope": 50, + "src": "674:25:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "674:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 47, + "mutability": "mutable", + "name": "DEI_out_min", + "nameLocation": "709:11:0", + "nodeType": "VariableDeclaration", + "scope": 50, + "src": "701:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 46, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "701:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "673:48:0" + }, + "returnParameters": { + "id": 49, + "nodeType": "ParameterList", + "parameters": [], + "src": "730:0:0" + }, + "scope": 151, + "src": "654:77:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "828e73f8", + "id": 57, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "mintAlgorithmicDEI", + "nameLocation": "745:18:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 55, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 52, + "mutability": "mutable", + "name": "deus_amount_d18", + "nameLocation": "772:15:0", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "764:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 51, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "764:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 54, + "mutability": "mutable", + "name": "DEI_out_min", + "nameLocation": "797:11:0", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "789:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 53, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "789:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "763:46:0" + }, + "returnParameters": { + "id": 56, + "nodeType": "ParameterList", + "parameters": [], + "src": "818:0:0" + }, + "scope": 151, + "src": "736:83:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "bc4701dc", + "id": 66, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "mintFractionalDEI", + "nameLocation": "833:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 64, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 59, + "mutability": "mutable", + "name": "collateral_amount", + "nameLocation": "859:17:0", + "nodeType": "VariableDeclaration", + "scope": 66, + "src": "851:25:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "851:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 61, + "mutability": "mutable", + "name": "deus_amount", + "nameLocation": "886:11:0", + "nodeType": "VariableDeclaration", + "scope": 66, + "src": "878:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 60, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "878:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 63, + "mutability": "mutable", + "name": "DEI_out_min", + "nameLocation": "907:11:0", + "nodeType": "VariableDeclaration", + "scope": 66, + "src": "899:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 62, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "899:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "850:69:0" + }, + "returnParameters": { + "id": 65, + "nodeType": "ParameterList", + "parameters": [], + "src": "928:0:0" + }, + "scope": 151, + "src": "824:105:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "cbf97cf7", + "id": 73, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "redeem1t1DEI", + "nameLocation": "943:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 71, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 68, + "mutability": "mutable", + "name": "DEI_amount", + "nameLocation": "964:10:0", + "nodeType": "VariableDeclaration", + "scope": 73, + "src": "956:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 67, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "956:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 70, + "mutability": "mutable", + "name": "COLLATERAL_out_min", + "nameLocation": "984:18:0", + "nodeType": "VariableDeclaration", + "scope": 73, + "src": "976:26:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 69, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "976:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "955:48:0" + }, + "returnParameters": { + "id": 72, + "nodeType": "ParameterList", + "parameters": [], + "src": "1012:0:0" + }, + "scope": 151, + "src": "934:79:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a20fccde", + "id": 82, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "redeemFractionalDEI", + "nameLocation": "1027:19:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 80, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 75, + "mutability": "mutable", + "name": "DEI_amount", + "nameLocation": "1055:10:0", + "nodeType": "VariableDeclaration", + "scope": 82, + "src": "1047:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 74, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1047:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 77, + "mutability": "mutable", + "name": "DEUS_out_min", + "nameLocation": "1075:12:0", + "nodeType": "VariableDeclaration", + "scope": 82, + "src": "1067:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 76, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1067:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 79, + "mutability": "mutable", + "name": "COLLATERAL_out_min", + "nameLocation": "1097:18:0", + "nodeType": "VariableDeclaration", + "scope": 82, + "src": "1089:26:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 78, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1089:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1046:70:0" + }, + "returnParameters": { + "id": 81, + "nodeType": "ParameterList", + "parameters": [], + "src": "1125:0:0" + }, + "scope": 151, + "src": "1018:108:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "206a5d99", + "id": 89, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "redeemAlgorithmicDEI", + "nameLocation": "1140:20:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 87, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 84, + "mutability": "mutable", + "name": "DEI_amount", + "nameLocation": "1169:10:0", + "nodeType": "VariableDeclaration", + "scope": 89, + "src": "1161:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 83, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1161:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 86, + "mutability": "mutable", + "name": "DEUS_out_min", + "nameLocation": "1189:12:0", + "nodeType": "VariableDeclaration", + "scope": 89, + "src": "1181:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 85, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1181:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1160:42:0" + }, + "returnParameters": { + "id": 88, + "nodeType": "ParameterList", + "parameters": [], + "src": "1211:0:0" + }, + "scope": 151, + "src": "1131:81:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "12ace5a2", + "id": 92, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "collectRedemption", + "nameLocation": "1226:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 90, + "nodeType": "ParameterList", + "parameters": [], + "src": "1243:2:0" + }, + "returnParameters": { + "id": 91, + "nodeType": "ParameterList", + "parameters": [], + "src": "1254:0:0" + }, + "scope": 151, + "src": "1217:38:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "50291fd1", + "id": 99, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "recollateralizeDEI", + "nameLocation": "1269:18:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 97, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 94, + "mutability": "mutable", + "name": "collateral_amount", + "nameLocation": "1296:17:0", + "nodeType": "VariableDeclaration", + "scope": 99, + "src": "1288:25:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 93, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1288:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 96, + "mutability": "mutable", + "name": "DEUS_out_min", + "nameLocation": "1323:12:0", + "nodeType": "VariableDeclaration", + "scope": 99, + "src": "1315:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 95, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1315:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1287:49:0" + }, + "returnParameters": { + "id": 98, + "nodeType": "ParameterList", + "parameters": [], + "src": "1345:0:0" + }, + "scope": 151, + "src": "1260:86:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "1725ebdd", + "id": 106, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "buyBackDEUS", + "nameLocation": "1360:11:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 104, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 101, + "mutability": "mutable", + "name": "DEUS_amount", + "nameLocation": "1380:11:0", + "nodeType": "VariableDeclaration", + "scope": 106, + "src": "1372:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 100, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1372:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 103, + "mutability": "mutable", + "name": "COLLATERAL_out_min", + "nameLocation": "1401:18:0", + "nodeType": "VariableDeclaration", + "scope": 106, + "src": "1393:26:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 102, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1393:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1371:49:0" + }, + "returnParameters": { + "id": 105, + "nodeType": "ParameterList", + "parameters": [], + "src": "1429:0:0" + }, + "scope": 151, + "src": "1351:79:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "7d55094d", + "id": 109, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "toggleMinting", + "nameLocation": "1444:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 107, + "nodeType": "ParameterList", + "parameters": [], + "src": "1457:2:0" + }, + "returnParameters": { + "id": 108, + "nodeType": "ParameterList", + "parameters": [], + "src": "1468:0:0" + }, + "scope": 151, + "src": "1435:34:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "daa50485", + "id": 112, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "toggleRedeeming", + "nameLocation": "1483:15:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 110, + "nodeType": "ParameterList", + "parameters": [], + "src": "1498:2:0" + }, + "returnParameters": { + "id": 111, + "nodeType": "ParameterList", + "parameters": [], + "src": "1509:0:0" + }, + "scope": 151, + "src": "1474:36:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "42d15aec", + "id": 115, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "toggleRecollateralize", + "nameLocation": "1524:21:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 113, + "nodeType": "ParameterList", + "parameters": [], + "src": "1545:2:0" + }, + "returnParameters": { + "id": 114, + "nodeType": "ParameterList", + "parameters": [], + "src": "1556:0:0" + }, + "scope": 151, + "src": "1515:42:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "50c9ecd9", + "id": 118, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "toggleBuyBack", + "nameLocation": "1571:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 116, + "nodeType": "ParameterList", + "parameters": [], + "src": "1584:2:0" + }, + "returnParameters": { + "id": 117, + "nodeType": "ParameterList", + "parameters": [], + "src": "1595:0:0" + }, + "scope": 151, + "src": "1562:34:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "7ad1f61b", + "id": 123, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "toggleCollateralPrice", + "nameLocation": "1610:21:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 120, + "mutability": "mutable", + "name": "_new_price", + "nameLocation": "1640:10:0", + "nodeType": "VariableDeclaration", + "scope": 123, + "src": "1632:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 119, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1632:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1631:20:0" + }, + "returnParameters": { + "id": 122, + "nodeType": "ParameterList", + "parameters": [], + "src": "1660:0:0" + }, + "scope": 151, + "src": "1601:60:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "4ebbe762", + "id": 140, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setPoolParameters", + "nameLocation": "1675:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 138, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 125, + "mutability": "mutable", + "name": "new_ceiling", + "nameLocation": "1701:11:0", + "nodeType": "VariableDeclaration", + "scope": 140, + "src": "1693:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 124, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1693:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 127, + "mutability": "mutable", + "name": "new_bonus_rate", + "nameLocation": "1722:14:0", + "nodeType": "VariableDeclaration", + "scope": 140, + "src": "1714:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 126, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1714:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 129, + "mutability": "mutable", + "name": "new_redemption_delay", + "nameLocation": "1746:20:0", + "nodeType": "VariableDeclaration", + "scope": 140, + "src": "1738:28:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 128, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1738:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 131, + "mutability": "mutable", + "name": "new_mint_fee", + "nameLocation": "1776:12:0", + "nodeType": "VariableDeclaration", + "scope": 140, + "src": "1768:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 130, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1768:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 133, + "mutability": "mutable", + "name": "new_redeem_fee", + "nameLocation": "1798:14:0", + "nodeType": "VariableDeclaration", + "scope": 140, + "src": "1790:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 132, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1790:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 135, + "mutability": "mutable", + "name": "new_buyback_fee", + "nameLocation": "1822:15:0", + "nodeType": "VariableDeclaration", + "scope": 140, + "src": "1814:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 134, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1814:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 137, + "mutability": "mutable", + "name": "new_recollat_fee", + "nameLocation": "1847:16:0", + "nodeType": "VariableDeclaration", + "scope": 140, + "src": "1839:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 136, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1839:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1692:172:0" + }, + "returnParameters": { + "id": 139, + "nodeType": "ParameterList", + "parameters": [], + "src": "1873:0:0" + }, + "scope": 151, + "src": "1666:208:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "bdacb303", + "id": 145, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setTimelock", + "nameLocation": "1888:11:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 143, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 142, + "mutability": "mutable", + "name": "new_timelock", + "nameLocation": "1908:12:0", + "nodeType": "VariableDeclaration", + "scope": 145, + "src": "1900:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 141, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1900:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1899:22:0" + }, + "returnParameters": { + "id": 144, + "nodeType": "ParameterList", + "parameters": [], + "src": "1930:0:0" + }, + "scope": 151, + "src": "1879:52:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "13af4035", + "id": 150, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setOwner", + "nameLocation": "1945:8:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 148, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 147, + "mutability": "mutable", + "name": "_owner_address", + "nameLocation": "1962:14:0", + "nodeType": "VariableDeclaration", + "scope": 150, + "src": "1954:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 146, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1954:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1953:24:0" + }, + "returnParameters": { + "id": 149, + "nodeType": "ParameterList", + "parameters": [], + "src": "1986:0:0" + }, + "scope": 151, + "src": "1936:51:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 152, + "src": "107:1882:0", + "usedErrors": [] + } + ], + "src": "80:1928:0" + }, + "id": 0 + } + } + } +} diff --git a/artifacts/build-info/c887ad884643e1c706a3fa87fe50383e.json b/artifacts/build-info/c887ad884643e1c706a3fa87fe50383e.json new file mode 100644 index 00000000..529e0562 --- /dev/null +++ b/artifacts/build-info/c887ad884643e1c706a3fa87fe50383e.json @@ -0,0 +1,1549 @@ +{ + "id": "c887ad884643e1c706a3fa87fe50383e", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.10", + "solcLongVersion": "0.8.10+commit.fc410830", + "input": { + "language": "Solidity", + "sources": { + "contracts/Utils/BundleUtils.sol": { + "content": "//SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\npragma experimental ABIEncoderV2;\n\ncontract BundleUtils {\n\n\tconstructor() {}\n\n\tfunction checkParentHash(bytes32 _parent_hash) public view returns (bool) {\n\t\trequire(blockhash(block.number - 1) == _parent_hash, \"stale bundle\");\n\t\treturn true;\n\t}\n\n\tfunction payFlashbotsMiner(uint256 _amount_wei) public payable returns (bool) {\n\t\tblock.coinbase.transfer(_amount_wei);\n\t\treturn true;\n\t}\n\n}" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "output": { + "contracts": { + "contracts/Utils/BundleUtils.sol": { + "BundleUtils": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_parent_hash", + "type": "bytes32" + } + ], + "name": "checkParentHash", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount_wei", + "type": "uint256" + } + ], + "name": "payFlashbotsMiner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "payable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": { + "@_6": { + "entryPoint": null, + "id": 6, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [], + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506101bc806100206000396000f3fe6080604052600436106100295760003560e01c80633456913f1461002e578063d66f5fba14610055575b600080fd5b61004161003c36600461012f565b610075565b604051901515815260200160405180910390f35b34801561006157600080fd5b5061004161007036600461012f565b6100ad565b604051600090419083156108fc0290849084818181858888f193505050501580156100a4573d6000803e3d6000fd5b50600192915050565b6000816100bb600143610148565b4014610127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7374616c652062756e646c650000000000000000000000000000000000000000604482015260640160405180910390fd5b506001919050565b60006020828403121561014157600080fd5b5035919050565b600082821015610181577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50039056fea2646970667358221220d20f7e2eb12c5d5007280ed03bdec488281c1349962a7efcc13ed8acfca7a80464736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BC DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3456913F EQ PUSH2 0x2E JUMPI DUP1 PUSH4 0xD66F5FBA EQ PUSH2 0x55 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x41 PUSH2 0x3C CALLDATASIZE PUSH1 0x4 PUSH2 0x12F JUMP JUMPDEST PUSH2 0x75 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41 PUSH2 0x70 CALLDATASIZE PUSH1 0x4 PUSH2 0x12F JUMP JUMPDEST PUSH2 0xAD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 COINBASE SWAP1 DUP4 ISZERO PUSH2 0x8FC MUL SWAP1 DUP5 SWAP1 DUP5 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0xA4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0xBB PUSH1 0x1 NUMBER PUSH2 0x148 JUMP JUMPDEST BLOCKHASH EQ PUSH2 0x127 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7374616C652062756E646C650000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x181 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SUB SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD2 0xF PUSH31 0x2EB12C5D5007280ED03BDEC488281C1349962A7EFCC13ED8ACFCA7A8046473 PUSH16 0x6C634300080A00330000000000000000 ", + "sourceMap": "90:352:0:-:0;;;115:16;;;;;;;;;;90:352;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@checkParentHash_28": { + "entryPoint": 173, + "id": 28, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@payFlashbotsMiner_46": { + "entryPoint": 117, + "id": 46, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": 303, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_f7aa65b5aac87bb0ac4916671de0c6cd1419ddb4f82e6824c185d10c99901302__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 328, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:1198:1", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:1", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "84:110:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "130:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "139:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "142:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "132:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "132:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "132:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "105:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "114:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "101:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "101:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "126:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "97:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "97:32:1" + }, + "nodeType": "YulIf", + "src": "94:52:1" + }, + { + "nodeType": "YulAssignment", + "src": "155:33:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "178:9:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "165:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "165:23:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "155:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "50:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "61:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "73:6:1", + "type": "" + } + ], + "src": "14:180:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "294:92:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "304:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "316:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "327:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "312:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "312:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "304:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "346:9:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "371:6:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "364:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "364:14:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "357:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "357:22:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "339:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "339:41:1" + }, + "nodeType": "YulExpressionStatement", + "src": "339:41:1" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "263:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "274:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "285:4:1", + "type": "" + } + ], + "src": "199:187:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "461:110:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "507:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "516:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "519:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "509:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "509:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "509:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "482:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "491:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "478:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "478:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "503:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "474:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "474:32:1" + }, + "nodeType": "YulIf", + "src": "471:52:1" + }, + { + "nodeType": "YulAssignment", + "src": "532:33:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "555:9:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "542:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "542:23:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "532:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "427:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "438:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "450:6:1", + "type": "" + } + ], + "src": "391:180:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "625:230:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "655:168:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "676:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "679:77:1", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "669:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "669:88:1" + }, + "nodeType": "YulExpressionStatement", + "src": "669:88:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "777:1:1", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "780:4:1", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "770:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "770:15:1" + }, + "nodeType": "YulExpressionStatement", + "src": "770:15:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "805:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "808:4:1", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "798:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "798:15:1" + }, + "nodeType": "YulExpressionStatement", + "src": "798:15:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "641:1:1" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "644:1:1" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "638:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "638:8:1" + }, + "nodeType": "YulIf", + "src": "635:188:1" + }, + { + "nodeType": "YulAssignment", + "src": "832:17:1", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "844:1:1" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "847:1:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "840:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "840:9:1" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "832:4:1" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "607:1:1", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "610:1:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "616:4:1", + "type": "" + } + ], + "src": "576:279:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1034:162:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1051:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1062:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1044:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1044:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1044:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1085:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1096:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1081:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1081:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1101:2:1", + "type": "", + "value": "12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1074:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1074:30:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1074:30:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1124:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1135:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1120:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1120:18:1" + }, + { + "hexValue": "7374616c652062756e646c65", + "kind": "string", + "nodeType": "YulLiteral", + "src": "1140:14:1", + "type": "", + "value": "stale bundle" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1113:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1113:42:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1113:42:1" + }, + { + "nodeType": "YulAssignment", + "src": "1164:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1176:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1187:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1172:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1172:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1164:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_f7aa65b5aac87bb0ac4916671de0c6cd1419ddb4f82e6824c185d10c99901302__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1011:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1025:4:1", + "type": "" + } + ], + "src": "860:336:1" + } + ] + }, + "contents": "{\n { }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y)\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n diff := sub(x, y)\n }\n function abi_encode_tuple_t_stringliteral_f7aa65b5aac87bb0ac4916671de0c6cd1419ddb4f82e6824c185d10c99901302__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), \"stale bundle\")\n tail := add(headStart, 96)\n }\n}", + "id": 1, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "6080604052600436106100295760003560e01c80633456913f1461002e578063d66f5fba14610055575b600080fd5b61004161003c36600461012f565b610075565b604051901515815260200160405180910390f35b34801561006157600080fd5b5061004161007036600461012f565b6100ad565b604051600090419083156108fc0290849084818181858888f193505050501580156100a4573d6000803e3d6000fd5b50600192915050565b6000816100bb600143610148565b4014610127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7374616c652062756e646c650000000000000000000000000000000000000000604482015260640160405180910390fd5b506001919050565b60006020828403121561014157600080fd5b5035919050565b600082821015610181577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50039056fea2646970667358221220d20f7e2eb12c5d5007280ed03bdec488281c1349962a7efcc13ed8acfca7a80464736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3456913F EQ PUSH2 0x2E JUMPI DUP1 PUSH4 0xD66F5FBA EQ PUSH2 0x55 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x41 PUSH2 0x3C CALLDATASIZE PUSH1 0x4 PUSH2 0x12F JUMP JUMPDEST PUSH2 0x75 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41 PUSH2 0x70 CALLDATASIZE PUSH1 0x4 PUSH2 0x12F JUMP JUMPDEST PUSH2 0xAD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 COINBASE SWAP1 DUP4 ISZERO PUSH2 0x8FC MUL SWAP1 DUP5 SWAP1 DUP5 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0xA4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0xBB PUSH1 0x1 NUMBER PUSH2 0x148 JUMP JUMPDEST BLOCKHASH EQ PUSH2 0x127 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7374616C652062756E646C650000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x181 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SUB SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD2 0xF PUSH31 0x2EB12C5D5007280ED03BDEC488281C1349962A7EFCC13ED8ACFCA7A8046473 PUSH16 0x6C634300080A00330000000000000000 ", + "sourceMap": "90:352:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;302:137;;;;;;:::i;:::-;;:::i;:::-;;;364:14:1;;357:22;339:41;;327:2;312:18;302:137:0;;;;;;;134:165;;;;;;;;;;-1:-1:-1;134:165:0;;;;;:::i;:::-;;:::i;302:137::-;384:36;;374:4;;384:14;;:36;;;;;408:11;;374:4;384:36;374:4;384:36;408:11;384:14;:36;;;;;;;;;;;;;;;;;;;;-1:-1:-1;431:4:0;;302:137;-1:-1:-1;;302:137:0:o;134:165::-;202:4;251:12;230:16;245:1;230:12;:16;:::i;:::-;220:27;:43;212:68;;;;;;;1062:2:1;212:68:0;;;1044:21:1;1101:2;1081:18;;;1074:30;1140:14;1120:18;;;1113:42;1172:18;;212:68:0;;;;;;;;-1:-1:-1;291:4:0;;134:165;-1:-1:-1;134:165:0:o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;576:279::-;616:4;644:1;641;638:8;635:188;;;679:77;676:1;669:88;780:4;777:1;770:15;808:4;805:1;798:15;635:188;-1:-1:-1;840:9:1;;576:279::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "88800", + "executionCost": "135", + "totalCost": "88935" + }, + "external": { + "checkParentHash(bytes32)": "419", + "payFlashbotsMiner(uint256)": "infinite" + } + }, + "methodIdentifiers": { + "checkParentHash(bytes32)": "d66f5fba", + "payFlashbotsMiner(uint256)": "3456913f" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_parent_hash\",\"type\":\"bytes32\"}],\"name\":\"checkParentHash\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount_wei\",\"type\":\"uint256\"}],\"name\":\"payFlashbotsMiner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Utils/BundleUtils.sol\":\"BundleUtils\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Utils/BundleUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\npragma experimental ABIEncoderV2;\\n\\ncontract BundleUtils {\\n\\n\\tconstructor() {}\\n\\n\\tfunction checkParentHash(bytes32 _parent_hash) public view returns (bool) {\\n\\t\\trequire(blockhash(block.number - 1) == _parent_hash, \\\"stale bundle\\\");\\n\\t\\treturn true;\\n\\t}\\n\\n\\tfunction payFlashbotsMiner(uint256 _amount_wei) public payable returns (bool) {\\n\\t\\tblock.coinbase.transfer(_amount_wei);\\n\\t\\treturn true;\\n\\t}\\n\\n}\",\"keccak256\":\"0x3c9321a46a26a0a05e0c083b665b11b54e787bb929b99ac20b8de8330efee692\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "sources": { + "contracts/Utils/BundleUtils.sol": { + "ast": { + "absolutePath": "contracts/Utils/BundleUtils.sol", + "exportedSymbols": { + "BundleUtils": [ + 47 + ] + }, + "id": 48, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "31:23:0" + }, + { + "id": 2, + "literals": [ + "experimental", + "ABIEncoderV2" + ], + "nodeType": "PragmaDirective", + "src": "55:33:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "BundleUtils", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 47, + "linearizedBaseContracts": [ + 47 + ], + "name": "BundleUtils", + "nameLocation": "99:11:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 5, + "nodeType": "Block", + "src": "129:2:0", + "statements": [] + }, + "id": 6, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3, + "nodeType": "ParameterList", + "parameters": [], + "src": "126:2:0" + }, + "returnParameters": { + "id": 4, + "nodeType": "ParameterList", + "parameters": [], + "src": "129:0:0" + }, + "scope": 47, + "src": "115:16:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 27, + "nodeType": "Block", + "src": "208:91:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 21, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 18, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 15, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "230:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 16, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "src": "230:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 17, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "245:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "230:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 14, + "name": "blockhash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -5, + "src": "220:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (uint256) view returns (bytes32)" + } + }, + "id": 19, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "220:27:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 20, + "name": "_parent_hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "251:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "220:43:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "7374616c652062756e646c65", + "id": 22, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "265:14:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f7aa65b5aac87bb0ac4916671de0c6cd1419ddb4f82e6824c185d10c99901302", + "typeString": "literal_string \"stale bundle\"" + }, + "value": "stale bundle" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f7aa65b5aac87bb0ac4916671de0c6cd1419ddb4f82e6824c185d10c99901302", + "typeString": "literal_string \"stale bundle\"" + } + ], + "id": 13, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "212:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 23, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "212:68:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 24, + "nodeType": "ExpressionStatement", + "src": "212:68:0" + }, + { + "expression": { + "hexValue": "74727565", + "id": 25, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "291:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 12, + "id": 26, + "nodeType": "Return", + "src": "284:11:0" + } + ] + }, + "functionSelector": "d66f5fba", + "id": 28, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "checkParentHash", + "nameLocation": "143:15:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8, + "mutability": "mutable", + "name": "_parent_hash", + "nameLocation": "167:12:0", + "nodeType": "VariableDeclaration", + "scope": 28, + "src": "159:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "159:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "158:22:0" + }, + "returnParameters": { + "id": 12, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 28, + "src": "202:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "202:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "201:6:0" + }, + "scope": 47, + "src": "134:165:0", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 45, + "nodeType": "Block", + "src": "380:59:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 40, + "name": "_amount_wei", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "408:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "expression": { + "id": 35, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "384:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 38, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "coinbase", + "nodeType": "MemberAccess", + "src": "384:14:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 39, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "src": "384:23:0", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 41, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "384:36:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 42, + "nodeType": "ExpressionStatement", + "src": "384:36:0" + }, + { + "expression": { + "hexValue": "74727565", + "id": 43, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "431:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 34, + "id": 44, + "nodeType": "Return", + "src": "424:11:0" + } + ] + }, + "functionSelector": "3456913f", + "id": 46, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "payFlashbotsMiner", + "nameLocation": "311:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 31, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 30, + "mutability": "mutable", + "name": "_amount_wei", + "nameLocation": "337:11:0", + "nodeType": "VariableDeclaration", + "scope": 46, + "src": "329:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 29, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "329:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "328:21:0" + }, + "returnParameters": { + "id": 34, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 46, + "src": "374:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 32, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "374:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "373:6:0" + }, + "scope": 47, + "src": "302:137:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 48, + "src": "90:352:0", + "usedErrors": [] + } + ], + "src": "31:411:0" + }, + "id": 0 + } + } + } +} diff --git a/artifacts/build-info/d1ece953ed017d623e632c196097c6c1.json b/artifacts/build-info/d1ece953ed017d623e632c196097c6c1.json new file mode 100644 index 00000000..1f7c0119 --- /dev/null +++ b/artifacts/build-info/d1ece953ed017d623e632c196097c6c1.json @@ -0,0 +1,995 @@ +{ + "id": "d1ece953ed017d623e632c196097c6c1", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.10", + "solcLongVersion": "0.8.10+commit.fc410830", + "input": { + "language": "Solidity", + "sources": { + "contracts/Utils/Migrations.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\ncontract Migrations {\n address public owner;\n uint public last_completed_migration;\n\n modifier restricted() {\n if (msg.sender == owner) _;\n }\n\n constructor() public {\n owner = msg.sender;\n }\n\n function setCompleted(uint completed) public restricted {\n last_completed_migration = completed;\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "output": { + "contracts": { + "contracts/Utils/Migrations.sol": { + "Migrations": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "last_completed_migration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "completed", + "type": "uint256" + } + ], + "name": "setCompleted", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": { + "@_23": { + "entryPoint": null, + "id": 23, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [], + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600080546001600160a01b03191633179055610126806100326000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c8063445df0ac1460415780638da5cb5b14605c578063fdacd57614609f575b600080fd5b604960015481565b6040519081526020015b60405180910390f35b600054607b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016053565b60ae60aa36600460d8565b60b0565b005b60005473ffffffffffffffffffffffffffffffffffffffff1633141560d55760018190555b50565b60006020828403121560e957600080fd5b503591905056fea264697066735822122017d1325a47fe1c9e09fe6cbb0b555a5bf2ad937453db9b4be6f31f73bf0abe8b64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x126 DUP1 PUSH2 0x32 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x445DF0AC EQ PUSH1 0x41 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH1 0x5C JUMPI DUP1 PUSH4 0xFDACD576 EQ PUSH1 0x9F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x49 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x7B SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x53 JUMP JUMPDEST PUSH1 0xAE PUSH1 0xAA CALLDATASIZE PUSH1 0x4 PUSH1 0xD8 JUMP JUMPDEST PUSH1 0xB0 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ ISZERO PUSH1 0xD5 JUMPI PUSH1 0x1 DUP2 SWAP1 SSTORE JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 OR 0xD1 ORIGIN GAS SELFBALANCE INVALID SHR SWAP15 MULMOD INVALID PUSH13 0xBB0B555A5BF2AD937453DB9B4B 0xE6 RETURN 0x1F PUSH20 0xBF0ABE8B64736F6C634300080A00330000000000 ", + "sourceMap": "59:311:0:-:0;;;211:50;;;;;;;;;-1:-1:-1;238:5:0;:18;;-1:-1:-1;;;;;;238:18:0;246:10;238:18;;;59:311;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@last_completed_migration_5": { + "entryPoint": null, + "id": 5, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@owner_3": { + "entryPoint": null, + "id": 3, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@setCompleted_35": { + "entryPoint": 176, + "id": 35, + "parameterSlots": 1, + "returnSlots": 0 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": 216, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:609:1", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:1", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "115:76:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "125:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "137:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "148:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "133:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "133:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "125:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "167:9:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "178:6:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "160:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "160:25:1" + }, + "nodeType": "YulExpressionStatement", + "src": "160:25:1" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "84:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "95:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "106:4:1", + "type": "" + } + ], + "src": "14:177:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "297:125:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "307:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "319:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "330:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "315:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "315:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "307:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "349:9:1" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "364:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "372:42:1", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "360:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "360:55:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "342:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "342:74:1" + }, + "nodeType": "YulExpressionStatement", + "src": "342:74:1" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "266:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "277:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "288:4:1", + "type": "" + } + ], + "src": "196:226:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "497:110:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "543:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "552:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "555:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "545:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "545:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "545:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "518:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "527:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "514:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "514:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "539:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "510:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "510:32:1" + }, + "nodeType": "YulIf", + "src": "507:52:1" + }, + { + "nodeType": "YulAssignment", + "src": "568:33:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "591:9:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "578:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "578:23:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "568:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "463:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "474:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "486:6:1", + "type": "" + } + ], + "src": "427:180:1" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_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_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n}", + "id": 1, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "6080604052348015600f57600080fd5b5060043610603c5760003560e01c8063445df0ac1460415780638da5cb5b14605c578063fdacd57614609f575b600080fd5b604960015481565b6040519081526020015b60405180910390f35b600054607b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016053565b60ae60aa36600460d8565b60b0565b005b60005473ffffffffffffffffffffffffffffffffffffffff1633141560d55760018190555b50565b60006020828403121560e957600080fd5b503591905056fea264697066735822122017d1325a47fe1c9e09fe6cbb0b555a5bf2ad937453db9b4be6f31f73bf0abe8b64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x445DF0AC EQ PUSH1 0x41 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH1 0x5C JUMPI DUP1 PUSH4 0xFDACD576 EQ PUSH1 0x9F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x49 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x7B SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x53 JUMP JUMPDEST PUSH1 0xAE PUSH1 0xAA CALLDATASIZE PUSH1 0x4 PUSH1 0xD8 JUMP JUMPDEST PUSH1 0xB0 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ ISZERO PUSH1 0xD5 JUMPI PUSH1 0x1 DUP2 SWAP1 SSTORE JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 OR 0xD1 ORIGIN GAS SELFBALANCE INVALID SHR SWAP15 MULMOD INVALID PUSH13 0xBB0B555A5BF2AD937453DB9B4B 0xE6 RETURN 0x1F PUSH20 0xBF0ABE8B64736F6C634300080A00330000000000 ", + "sourceMap": "59:311:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;107:36;;;;;;;;;160:25:1;;;148:2;133:18;107:36:0;;;;;;;;83:20;;;;;;;;;;;;372:42:1;360:55;;;342:74;;330:2;315:18;83:20:0;196:226:1;265:103:0;;;;;;:::i;:::-;;:::i;:::-;;;194:5;;;;180:10;:19;176:26;;;327:24:::1;:36:::0;;;176:26;265:103;:::o;427:180:1:-;486:6;539:2;527:9;518:7;514:23;510:32;507:52;;;555:1;552;545:12;507:52;-1:-1:-1;578:23:1;;427:180;-1:-1:-1;427:180:1:o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "58800", + "executionCost": "24346", + "totalCost": "83146" + }, + "external": { + "last_completed_migration()": "2262", + "owner()": "2313", + "setCompleted(uint256)": "24485" + } + }, + "methodIdentifiers": { + "last_completed_migration()": "445df0ac", + "owner()": "8da5cb5b", + "setCompleted(uint256)": "fdacd576" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"last_completed_migration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"completed\",\"type\":\"uint256\"}],\"name\":\"setCompleted\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Utils/Migrations.sol\":\"Migrations\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Utils/Migrations.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ncontract Migrations {\\n address public owner;\\n uint public last_completed_migration;\\n\\n modifier restricted() {\\n if (msg.sender == owner) _;\\n }\\n\\n constructor() public {\\n owner = msg.sender;\\n }\\n\\n function setCompleted(uint completed) public restricted {\\n last_completed_migration = completed;\\n }\\n}\\n\",\"keccak256\":\"0xf337dfa42251b2f26b1da3f8e8bac969f59da0d05e6e4daf89126870e935d303\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 3, + "contract": "contracts/Utils/Migrations.sol:Migrations", + "label": "owner", + "offset": 0, + "slot": "0", + "type": "t_address" + }, + { + "astId": 5, + "contract": "contracts/Utils/Migrations.sol:Migrations", + "label": "last_completed_migration", + "offset": 0, + "slot": "1", + "type": "t_uint256" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "errors": [ + { + "component": "general", + "errorCode": "2462", + "formattedMessage": "Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n --> contracts/Utils/Migrations.sol:12:3:\n |\n12 | constructor() public {\n | ^ (Relevant source part starts here and spans across multiple lines).\n\n", + "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.", + "severity": "warning", + "sourceLocation": { + "end": 261, + "file": "contracts/Utils/Migrations.sol", + "start": 211 + }, + "type": "Warning" + } + ], + "sources": { + "contracts/Utils/Migrations.sol": { + "ast": { + "absolutePath": "contracts/Utils/Migrations.sol", + "exportedSymbols": { + "Migrations": [ + 36 + ] + }, + "id": 37, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Migrations", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 36, + "linearizedBaseContracts": [ + 36 + ], + "name": "Migrations", + "nameLocation": "68:10:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "8da5cb5b", + "id": 3, + "mutability": "mutable", + "name": "owner", + "nameLocation": "98:5:0", + "nodeType": "VariableDeclaration", + "scope": 36, + "src": "83:20:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "83:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "445df0ac", + "id": 5, + "mutability": "mutable", + "name": "last_completed_migration", + "nameLocation": "119:24:0", + "nodeType": "VariableDeclaration", + "scope": 36, + "src": "107:36:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "107:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 13, + "nodeType": "Block", + "src": "170:37:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 7, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "180:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 8, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "180:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 9, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "194:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "180:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12, + "nodeType": "IfStatement", + "src": "176:26:0", + "trueBody": { + "id": 11, + "nodeType": "PlaceholderStatement", + "src": "201:1:0" + } + } + ] + }, + "id": 14, + "name": "restricted", + "nameLocation": "157:10:0", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 6, + "nodeType": "ParameterList", + "parameters": [], + "src": "167:2:0" + }, + "src": "148:59:0", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 22, + "nodeType": "Block", + "src": "232:29:0", + "statements": [ + { + "expression": { + "id": 20, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 17, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "238:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 18, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "246:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 19, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "246:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "238:18:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 21, + "nodeType": "ExpressionStatement", + "src": "238:18:0" + } + ] + }, + "id": 23, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15, + "nodeType": "ParameterList", + "parameters": [], + "src": "222:2:0" + }, + "returnParameters": { + "id": 16, + "nodeType": "ParameterList", + "parameters": [], + "src": "232:0:0" + }, + "scope": 36, + "src": "211:50:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 34, + "nodeType": "Block", + "src": "321:47:0", + "statements": [ + { + "expression": { + "id": 32, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 30, + "name": "last_completed_migration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "327:24:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 31, + "name": "completed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "354:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "327:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 33, + "nodeType": "ExpressionStatement", + "src": "327:36:0" + } + ] + }, + "functionSelector": "fdacd576", + "id": 35, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 28, + "kind": "modifierInvocation", + "modifierName": { + "id": 27, + "name": "restricted", + "nodeType": "IdentifierPath", + "referencedDeclaration": 14, + "src": "310:10:0" + }, + "nodeType": "ModifierInvocation", + "src": "310:10:0" + } + ], + "name": "setCompleted", + "nameLocation": "274:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 26, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 25, + "mutability": "mutable", + "name": "completed", + "nameLocation": "292:9:0", + "nodeType": "VariableDeclaration", + "scope": 35, + "src": "287:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 24, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "287:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "286:16:0" + }, + "returnParameters": { + "id": 29, + "nodeType": "ParameterList", + "parameters": [], + "src": "321:0:0" + }, + "scope": 36, + "src": "265:103:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 37, + "src": "59:311:0", + "usedErrors": [] + } + ], + "src": "32:339:0" + }, + "id": 0 + } + } + } +} diff --git a/artifacts/build-info/e442c70280793b4492ada7e044c0460f.json b/artifacts/build-info/e442c70280793b4492ada7e044c0460f.json new file mode 100644 index 00000000..73b09c3a --- /dev/null +++ b/artifacts/build-info/e442c70280793b4492ada7e044c0460f.json @@ -0,0 +1,380394 @@ +{ + "id": "e442c70280793b4492ada7e044c0460f", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.10", + "solcLongVersion": "0.8.10+commit.fc410830", + "input": { + "language": "Solidity", + "sources": { + "contracts/Common/Context.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\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 payable(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}" + }, + "contracts/ERC20/IERC20_Detailed.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\nimport \"../Common/Context.sol\";\nimport \"../Math/SafeMath.sol\";\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\n * the optional functions; to access them see {ERC20Detailed}.\n */\ninterface IERC20_Detailed {\n function _name() external view returns (string memory);\n function _symbol() external view returns (string memory);\n function _decimals() external view returns (uint8);\n\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\n" + }, + "contracts/Math/SafeMath.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\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, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\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\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 * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n return sub(a, b, \"SafeMath: subtraction overflow\");\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 * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n * - Subtraction cannot overflow.\n *\n * _Available since v2.4.0._\n */\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b <= a, errorMessage);\n uint256 c = a - b;\n\n return c;\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 * - Multiplication cannot overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (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) {\n return 0;\n }\n\n uint256 c = a * b;\n require(c / a == b, \"SafeMath: multiplication overflow\");\n\n return c;\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers. Reverts 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 * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n return div(a, b, \"SafeMath: division by zero\");\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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 * - The divisor cannot be zero.\n *\n * _Available since v2.4.0._\n */\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n // Solidity only automatically asserts when dividing by 0\n require(b > 0, errorMessage);\n uint256 c = a / b;\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\n\n return c;\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * Reverts 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 * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n return mod(a, b, \"SafeMath: modulo by zero\");\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * Reverts with custom message 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 * - The divisor cannot be zero.\n *\n * _Available since v2.4.0._\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}" + }, + "contracts/Uniswap/UniswapV2Library.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\nimport './Interfaces/IUniswapV2Pair.sol';\nimport './Interfaces/IUniswapV2Factory.sol';\n\nimport \"../Math/SafeMath.sol\";\n\nlibrary UniswapV2Library {\n using SafeMath for uint;\n\n // returns sorted token addresses, used to handle return values from pairs sorted in this order\n function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {\n require(tokenA != tokenB, 'UniswapV2Library: IDENTICAL_ADDRESSES');\n (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);\n require(token0 != address(0), 'UniswapV2Library: ZERO_ADDRESS');\n }\n\n // Less efficient than the CREATE2 method below\n function pairFor(address factory, address tokenA, address tokenB) internal view returns (address pair) {\n (address token0, address token1) = sortTokens(tokenA, tokenB);\n pair = IUniswapV2Factory(factory).getPair(token0, token1);\n }\n\n // calculates the CREATE2 address for a pair without making any external calls\n function pairForCreate2(address factory, address tokenA, address tokenB) internal pure returns (address pair) {\n (address token0, address token1) = sortTokens(tokenA, tokenB);\n pair = address(uint160(bytes20(keccak256(abi.encodePacked(\n hex'ff',\n factory,\n keccak256(abi.encodePacked(token0, token1)),\n hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // init code hash\n ))))); // this matches the CREATE2 in UniswapV2Factory.createPair\n }\n\n // fetches and sorts the reserves for a pair\n function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {\n (address token0,) = sortTokens(tokenA, tokenB);\n (uint reserve0, uint reserve1,) = IUniswapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves();\n (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\n }\n\n // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset\n function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {\n require(amountA > 0, 'UniswapV2Library: INSUFFICIENT_AMOUNT');\n require(reserveA > 0 && reserveB > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\n amountB = amountA.mul(reserveB) / reserveA;\n }\n\n // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {\n require(amountIn > 0, 'UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT');\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\n uint amountInWithFee = amountIn.mul(997);\n uint numerator = amountInWithFee.mul(reserveOut);\n uint denominator = reserveIn.mul(1000).add(amountInWithFee);\n amountOut = numerator / denominator;\n }\n\n // given an output amount of an asset and pair reserves, returns a required input amount of the other asset\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {\n require(amountOut > 0, 'UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT');\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\n uint numerator = reserveIn.mul(amountOut).mul(1000);\n uint denominator = reserveOut.sub(amountOut).mul(997);\n amountIn = (numerator / denominator).add(1);\n }\n\n // performs chained getAmountOut calculations on any number of pairs\n function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\n amounts = new uint[](path.length);\n amounts[0] = amountIn;\n for (uint i = 0; i < path.length - 1; i++) {\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]);\n amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);\n }\n }\n\n // performs chained getAmountIn calculations on any number of pairs\n function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\n amounts = new uint[](path.length);\n amounts[amounts.length - 1] = amountOut;\n for (uint i = path.length - 1; i > 0; i--) {\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);\n amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);\n }\n }\n}" + }, + "contracts/Uniswap/Interfaces/IUniswapV2Pair.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\ninterface IUniswapV2Pair {\n event Approval(address indexed owner, address indexed spender, uint value);\n event Transfer(address indexed from, address indexed to, uint value);\n\n function name() external pure returns (string memory);\n function symbol() external pure returns (string memory);\n function decimals() external pure returns (uint8);\n function totalSupply() external view returns (uint);\n function balanceOf(address owner) external view returns (uint);\n function allowance(address owner, address spender) external view returns (uint);\n\n function approve(address spender, uint value) external returns (bool);\n function transfer(address to, uint value) external returns (bool);\n function transferFrom(address from, address to, uint value) external returns (bool);\n\n function DOMAIN_SEPARATOR() external view returns (bytes32);\n function PERMIT_TYPEHASH() external pure returns (bytes32);\n function nonces(address owner) external view returns (uint);\n\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\n\n event Mint(address indexed sender, uint amount0, uint amount1);\n event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\n event Swap(\n address indexed sender,\n uint amount0In,\n uint amount1In,\n uint amount0Out,\n uint amount1Out,\n address indexed to\n );\n event Sync(uint112 reserve0, uint112 reserve1);\n\n function MINIMUM_LIQUIDITY() external pure returns (uint);\n function factory() external view returns (address);\n function token0() external view returns (address);\n function token1() external view returns (address);\n function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\n function price0CumulativeLast() external view returns (uint);\n function price1CumulativeLast() external view returns (uint);\n function kLast() external view returns (uint);\n\n function mint(address to) external returns (uint liquidity);\n function burn(address to) external returns (uint amount0, uint amount1);\n function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;\n function skim(address to) external;\n function sync() external;\n\n function initialize(address, address) external; \n}\n" + }, + "contracts/Uniswap/Interfaces/IUniswapV2Factory.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\ninterface IUniswapV2Factory {\n event PairCreated(address indexed token0, address indexed token1, address pair, uint);\n\n function feeTo() external view returns (address);\n function feeToSetter() external view returns (address);\n\n function getPair(address tokenA, address tokenB) external view returns (address pair);\n function allPairs(uint) external view returns (address pair);\n function allPairsLength() external view returns (uint);\n\n function createPair(address tokenA, address tokenB) external returns (address pair);\n\n function setFeeTo(address) external;\n function setFeeToSetter(address) external;\n}\n" + }, + "contracts/Uniswap/UniswapV2Pair.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\n\nimport './Interfaces/IUniswapV2Pair.sol';\nimport './UniswapV2ERC20.sol';\nimport '../Math/Math.sol';\nimport '../Math/UQ112x112.sol';\nimport '../ERC20/IERC20.sol';\nimport './Interfaces/IUniswapV2Factory.sol';\nimport './Interfaces/IUniswapV2Callee.sol';\n\ncontract UniswapV2Pair is IUniswapV2Pair {\n using SafeMath for uint;\n using UQ112x112 for uint224;\n\n string public override constant name = 'Uniswap V2';\n string public override constant symbol = 'UNI-V2';\n uint8 public override constant decimals = 18;\n uint public override totalSupply;\n mapping(address => uint) public override balanceOf;\n mapping(address => mapping(address => uint)) public override allowance;\n\n uint public override constant MINIMUM_LIQUIDITY = 10**3;\n bytes4 private constant SELECTOR = bytes4(keccak256(bytes('transfer(address,uint256)')));\n bytes32 public override DOMAIN_SEPARATOR;\n // keccak256(\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\");\n bytes32 public constant override PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;\n mapping(address => uint) public override nonces;\n\n\n \n\n address public override factory;\n address public override token0;\n address public override token1;\n\n uint112 private reserve0; // uses single storage slot, accessible via getReserves\n uint112 private reserve1; // uses single storage slot, accessible via getReserves\n uint32 private blockTimestampLast; // uses single storage slot, accessible via getReserves\n\n uint public override price0CumulativeLast;\n uint public override price1CumulativeLast;\n uint public override kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event\n\n uint private unlocked = 1;\n modifier lock() {\n require(unlocked == 1, 'UniswapV2: LOCKED');\n unlocked = 0;\n _;\n unlocked = 1;\n }\n\n function getReserves() public override view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) {\n _reserve0 = reserve0;\n _reserve1 = reserve1;\n _blockTimestampLast = blockTimestampLast;\n }\n\n function _safeTransfer(address token, address to, uint value) private {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, to, value));\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'UniswapV2: TRANSFER_FAILED');\n }\n\n // event Mint(address indexed sender, uint amount0, uint amount1);\n // event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\n // event Swap(\n // address indexed sender,\n // uint amount0In,\n // uint amount1In,\n // uint amount0Out,\n // uint amount1Out,\n // address indexed to\n // );\n // event Sync(uint112 reserve0, uint112 reserve1);\n\n constructor() {\n factory = msg.sender;\n }\n\n // called once by the factory at time of deployment\n function initialize(address _token0, address _token1) external override {\n require(msg.sender == factory, 'UniswapV2: FORBIDDEN'); // sufficient check\n token0 = _token0;\n token1 = _token1;\n }\n\n // update reserves and, on the first call per block, price accumulators\n function _update(uint balance0, uint balance1, uint112 _reserve0, uint112 _reserve1) private {\n require(balance0 <= type(uint112).max && balance1 <= type(uint112).max, 'UniswapV2: OVERFLOW');\n uint32 blockTimestamp = uint32(block.timestamp % 2**32);\n uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired\n if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) {\n // * never overflows, and + overflow is desired\n price0CumulativeLast += uint(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed;\n price1CumulativeLast += uint(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed;\n }\n reserve0 = uint112(balance0);\n reserve1 = uint112(balance1);\n blockTimestampLast = blockTimestamp;\n emit Sync(reserve0, reserve1);\n }\n\n // if fee is on, mint liquidity equivalent to 1/6th of the growth in sqrt(k)\n function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {\n address feeTo = IUniswapV2Factory(factory).feeTo();\n feeOn = feeTo != address(0);\n uint _kLast = kLast; // gas savings\n if (feeOn) {\n if (_kLast != 0) {\n uint rootK = Math.sqrt(uint(_reserve0).mul(_reserve1));\n uint rootKLast = Math.sqrt(_kLast);\n if (rootK > rootKLast) {\n uint numerator = totalSupply.mul(rootK.sub(rootKLast));\n uint denominator = rootK.mul(5).add(rootKLast);\n uint liquidity = numerator / denominator;\n if (liquidity > 0) _mint(feeTo, liquidity);\n }\n }\n } else if (_kLast != 0) {\n kLast = 0;\n }\n }\n\n // this low-level function should be called from a contract which performs important safety checks\n function mint(address to) external override lock returns (uint liquidity) {\n (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings\n uint balance0 = IERC20(token0).balanceOf(address(this));\n uint balance1 = IERC20(token1).balanceOf(address(this));\n uint amount0 = balance0.sub(_reserve0);\n uint amount1 = balance1.sub(_reserve1);\n bool feeOn = _mintFee(_reserve0, _reserve1);\n uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee\n\n if (_totalSupply == 0) {\n liquidity = Math.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY);\n _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock the first MINIMUM_LIQUIDITY tokens\n } else {\n liquidity = Math.min(amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1);\n }\n\n require(liquidity > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_MINTED');\n _mint(to, liquidity);\n\n _update(balance0, balance1, _reserve0, _reserve1);\n if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date\n emit Mint(msg.sender, amount0, amount1);\n }\n\n // this low-level function should be called from a contract which performs important safety checks\n function burn(address to) external override lock returns (uint amount0, uint amount1) {\n (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings\n address _token0 = token0; // gas savings\n address _token1 = token1; // gas savings\n uint balance0 = IERC20(_token0).balanceOf(address(this));\n uint balance1 = IERC20(_token1).balanceOf(address(this));\n uint liquidity = balanceOf[address(this)];\n\n bool feeOn = _mintFee(_reserve0, _reserve1);\n uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee\n amount0 = liquidity.mul(balance0) / _totalSupply; // using balances ensures pro-rata distribution\n amount1 = liquidity.mul(balance1) / _totalSupply; // using balances ensures pro-rata distribution\n require(amount0 > 0 && amount1 > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED');\n _burn(address(this), liquidity);\n _safeTransfer(_token0, to, amount0);\n _safeTransfer(_token1, to, amount1);\n balance0 = IERC20(_token0).balanceOf(address(this));\n balance1 = IERC20(_token1).balanceOf(address(this));\n\n _update(balance0, balance1, _reserve0, _reserve1);\n if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date\n emit Burn(msg.sender, amount0, amount1, to);\n }\n\n // this low-level function should be called from a contract which performs important safety checks\n function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external override lock {\n require(amount0Out > 0 || amount1Out > 0, 'UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT');\n (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings\n require(amount0Out < _reserve0 && amount1Out < _reserve1, 'UniswapV2: INSUFFICIENT_LIQUIDITY');\n\n uint balance0;\n uint balance1;\n { // scope for _token{0,1}, avoids stack too deep errors\n address _token0 = token0;\n address _token1 = token1;\n require(to != _token0 && to != _token1, 'UniswapV2: INVALID_TO');\n if (amount0Out > 0) _safeTransfer(_token0, to, amount0Out); // optimistically transfer tokens\n if (amount1Out > 0) _safeTransfer(_token1, to, amount1Out); // optimistically transfer tokens\n if (data.length > 0) IUniswapV2Callee(to).uniswapV2Call(msg.sender, amount0Out, amount1Out, data);\n balance0 = IERC20(_token0).balanceOf(address(this));\n balance1 = IERC20(_token1).balanceOf(address(this));\n }\n uint amount0In = balance0 > _reserve0 - amount0Out ? balance0 - (_reserve0 - amount0Out) : 0;\n uint amount1In = balance1 > _reserve1 - amount1Out ? balance1 - (_reserve1 - amount1Out) : 0;\n require(amount0In > 0 || amount1In > 0, 'UniswapV2: INSUFFICIENT_INPUT_AMOUNT');\n { // scope for reserve{0,1}Adjusted, avoids stack too deep errors\n uint balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(3));\n uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(3));\n require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'UniswapV2: K');\n }\n\n _update(balance0, balance1, _reserve0, _reserve1);\n emit Swap(msg.sender, amount0In, amount1In, amount0Out, amount1Out, to);\n }\n\n // force balances to match reserves\n function skim(address to) external override lock {\n address _token0 = token0; // gas savings\n address _token1 = token1; // gas savings\n _safeTransfer(_token0, to, IERC20(_token0).balanceOf(address(this)).sub(reserve0));\n _safeTransfer(_token1, to, IERC20(_token1).balanceOf(address(this)).sub(reserve1));\n }\n\n // force reserves to match balances\n function sync() external override lock {\n _update(IERC20(token0).balanceOf(address(this)), IERC20(token1).balanceOf(address(this)), reserve0, reserve1);\n }\n\n\n\n // Migrated over from UniswapV2ERC20. Needed for ^0.6.0\n // ===============================================\n\n function _mint(address to, uint value) internal {\n totalSupply = totalSupply.add(value);\n balanceOf[to] = balanceOf[to].add(value);\n emit Transfer(address(0), to, value);\n }\n\n function _burn(address from, uint value) internal {\n balanceOf[from] = balanceOf[from].sub(value);\n totalSupply = totalSupply.sub(value);\n emit Transfer(from, address(0), value);\n }\n\n function _approve(address owner, address spender, uint value) private {\n allowance[owner][spender] = value;\n emit Approval(owner, spender, value);\n }\n\n function _transfer(address from, address to, uint value) private {\n balanceOf[from] = balanceOf[from].sub(value);\n balanceOf[to] = balanceOf[to].add(value);\n emit Transfer(from, to, value);\n }\n\n function approve(address spender, uint value) external override returns (bool) {\n _approve(msg.sender, spender, value);\n return true;\n }\n\n function transfer(address to, uint value) external override returns (bool) {\n _transfer(msg.sender, to, value);\n return true;\n }\n\n function transferFrom(address from, address to, uint value) external override returns (bool) {\n if (allowance[from][msg.sender] != type(uint).max) {\n allowance[from][msg.sender] = allowance[from][msg.sender].sub(value);\n }\n _transfer(from, to, value);\n return true;\n }\n\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external override {\n require(deadline >= block.timestamp, 'UniswapV2: EXPIRED');\n bytes32 digest = keccak256(\n abi.encodePacked(\n '\\x19\\x01',\n DOMAIN_SEPARATOR,\n keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))\n )\n );\n address recoveredAddress = ecrecover(digest, v, r, s);\n require(recoveredAddress != address(0) && recoveredAddress == owner, 'UniswapV2: INVALID_SIGNATURE');\n _approve(owner, spender, value);\n }\n\n\n\n}" + }, + "contracts/Uniswap/UniswapV2ERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\nimport './Interfaces/IUniswapV2ERC20.sol';\nimport '../Math/SafeMath.sol';\n\ncontract UniswapV2ERC20 is IUniswapV2ERC20 {\n using SafeMath for uint;\n\n string public override constant name = 'Uniswap V2';\n string public override constant symbol = 'UNI-V2';\n uint8 public override constant decimals = 18;\n uint public override totalSupply;\n mapping(address => uint) public override balanceOf;\n mapping(address => mapping(address => uint)) public override allowance;\n\n bytes32 public override DOMAIN_SEPARATOR;\n // keccak256(\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\");\n bytes32 public constant override PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;\n mapping(address => uint) public override nonces;\n\n // event Approval(address indexed owner, address indexed spender, uint value);\n // event Transfer(address indexed from, address indexed to, uint value);\n\n constructor() {\n uint chainId;\n assembly {\n chainId := chainid()\n }\n DOMAIN_SEPARATOR = keccak256(\n abi.encode(\n keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),\n keccak256(bytes(name)),\n keccak256(bytes('1')),\n chainId,\n address(this)\n )\n );\n }\n\n function _mint(address to, uint value) internal {\n totalSupply = totalSupply.add(value);\n balanceOf[to] = balanceOf[to].add(value);\n emit Transfer(address(0), to, value);\n }\n\n function _burn(address from, uint value) internal {\n balanceOf[from] = balanceOf[from].sub(value);\n totalSupply = totalSupply.sub(value);\n emit Transfer(from, address(0), value);\n }\n\n function _approve(address owner, address spender, uint value) private {\n allowance[owner][spender] = value;\n emit Approval(owner, spender, value);\n }\n\n function _transfer(address from, address to, uint value) private {\n balanceOf[from] = balanceOf[from].sub(value);\n balanceOf[to] = balanceOf[to].add(value);\n emit Transfer(from, to, value);\n }\n\n function approve(address spender, uint value) external override returns (bool) {\n _approve(msg.sender, spender, value);\n return true;\n }\n\n function transfer(address to, uint value) external override returns (bool) {\n _transfer(msg.sender, to, value);\n return true;\n }\n\n function transferFrom(address from, address to, uint value) external override returns (bool) {\n if (allowance[from][msg.sender] != type(uint).max) {\n allowance[from][msg.sender] = allowance[from][msg.sender].sub(value);\n }\n _transfer(from, to, value);\n return true;\n }\n\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external override {\n require(deadline >= block.timestamp, 'UniswapV2: EXPIRED');\n bytes32 digest = keccak256(\n abi.encodePacked(\n '\\x19\\x01',\n DOMAIN_SEPARATOR,\n keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))\n )\n );\n address recoveredAddress = ecrecover(digest, v, r, s);\n require(recoveredAddress != address(0) && recoveredAddress == owner, 'UniswapV2: INVALID_SIGNATURE');\n _approve(owner, spender, value);\n }\n}\n" + }, + "contracts/Math/Math.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a >= b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow, so we distribute\n return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);\n }\n\n // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)\n function sqrt(uint y) internal pure returns (uint z) {\n if (y > 3) {\n z = y;\n uint x = y / 2 + 1;\n while (x < z) {\n z = x;\n x = (y / x + x) / 2;\n }\n } else if (y != 0) {\n z = 1;\n }\n }\n}" + }, + "contracts/Math/UQ112x112.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\n// a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format))\n\n// range: [0, 2**112 - 1]\n// resolution: 1 / 2**112\n\nlibrary UQ112x112 {\n uint224 constant Q112 = 2**112;\n\n // encode a uint112 as a UQ112x112\n function encode(uint112 y) internal pure returns (uint224 z) {\n z = uint224(y) * Q112; // never overflows\n }\n\n // divide a UQ112x112 by a uint112, returning a UQ112x112\n function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) {\n z = x / uint224(y);\n }\n}" + }, + "contracts/ERC20/IERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\nimport \"../Common/Context.sol\";\nimport \"../Math/SafeMath.sol\";\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\n * the optional functions; to access them see {ERC20Detailed}.\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\n" + }, + "contracts/Uniswap/Interfaces/IUniswapV2Callee.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\ninterface IUniswapV2Callee {\n function uniswapV2Call(address sender, uint amount0, uint amount1, bytes calldata data) external;\n}\n" + }, + "contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\ninterface IUniswapV2ERC20 {\n event Approval(address indexed owner, address indexed spender, uint value);\n event Transfer(address indexed from, address indexed to, uint value);\n\n function name() external pure returns (string memory);\n function symbol() external pure returns (string memory);\n function decimals() external pure returns (uint8);\n function totalSupply() external view returns (uint);\n function balanceOf(address owner) external view returns (uint);\n function allowance(address owner, address spender) external view returns (uint);\n\n function approve(address spender, uint value) external returns (bool);\n function transfer(address to, uint value) external returns (bool);\n function transferFrom(address from, address to, uint value) external returns (bool);\n\n function DOMAIN_SEPARATOR() external view returns (bytes32);\n function PERMIT_TYPEHASH() external pure returns (bytes32);\n function nonces(address owner) external view returns (uint);\n\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\n}\n" + }, + "contracts/ERC20/SafeERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\nimport \"./IERC20.sol\";\nimport \"../Math/SafeMath.sol\";\nimport \"../Utils/Address.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n using SafeMath for uint256;\n using Address for address;\n\n function safeTransfer(IERC20 token, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n }\n\n function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n }\n\n /**\n * @dev Deprecated. This function has issues similar to the ones found in\n * {IERC20-approve}, and its usage is discouraged.\n *\n * Whenever possible, use {safeIncreaseAllowance} and\n * {safeDecreaseAllowance} instead.\n */\n function safeApprove(IERC20 token, address spender, uint256 value) internal {\n // safeApprove should only be called when setting an initial allowance,\n // or when resetting it to zero. To increase and decrease it, use\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\n // solhint-disable-next-line max-line-length\n require((value == 0) || (token.allowance(address(this), spender) == 0),\n \"SafeERC20: approve from non-zero to non-zero allowance\"\n );\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n }\n\n function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n uint256 newAllowance = token.allowance(address(this), spender).add(value);\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n }\n\n function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n uint256 newAllowance = token.allowance(address(this), spender).sub(value, \"SafeERC20: decreased allowance below zero\");\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n */\n function _callOptionalReturn(IERC20 token, bytes memory data) private {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\n // the target address contains contract code and also asserts for success in the low-level call.\n\n bytes memory returndata = address(token).functionCall(data, \"SafeERC20: low-level call failed\");\n if (returndata.length > 0) { // Return data is optional\n // solhint-disable-next-line max-line-length\n require(abi.decode(returndata, (bool)), \"SafeERC20: ERC20 operation did not succeed\");\n }\n }\n}" + }, + "contracts/Utils/Address.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11 <0.9.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}" + }, + "contracts/ERC20/ERC20Custom.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\nimport \"../Common/Context.sol\";\nimport \"./IERC20.sol\";\nimport \"../Math/SafeMath.sol\";\nimport \"../Utils/Address.sol\";\n\n// Due to compiling issues, _name, _symbol, and _decimals were removed\n\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20Mintable}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin guidelines: functions revert instead\n * of returning `false` on failure. This behavior is nonetheless conventional\n * and does not conflict with the expectations of ERC20 applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20Custom is Context, IERC20 {\n using SafeMath for uint256;\n\n mapping (address => uint256) internal _balances;\n\n mapping (address => mapping (address => uint256)) internal _allowances;\n\n uint256 private _totalSupply;\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `recipient` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\n _transfer(_msgSender(), recipient, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.approve(address spender, uint256 amount)\n */\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\n _approve(_msgSender(), spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20};\n *\n * Requirements:\n * - `sender` and `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n * - the caller must have allowance for `sender`'s tokens of at least\n * `amount`.\n */\n function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {\n _transfer(sender, recipient, amount);\n _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \"ERC20: transfer amount exceeds allowance\"));\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \"ERC20: decreased allowance below zero\"));\n return true;\n }\n\n /**\n * @dev Moves tokens `amount` from `sender` to `recipient`.\n *\n * This is internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `sender` cannot be the zero address.\n * - `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n */\n function _transfer(address sender, address recipient, uint256 amount) internal virtual {\n require(sender != address(0), \"ERC20: transfer from the zero address\");\n require(recipient != address(0), \"ERC20: transfer to the zero address\");\n\n _beforeTokenTransfer(sender, recipient, amount);\n\n _balances[sender] = _balances[sender].sub(amount, \"ERC20: transfer amount exceeds balance\");\n _balances[recipient] = _balances[recipient].add(amount);\n emit Transfer(sender, recipient, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements\n *\n * - `to` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _beforeTokenTransfer(address(0), account, amount);\n\n _totalSupply = _totalSupply.add(amount);\n _balances[account] = _balances[account].add(amount);\n emit Transfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from the caller.\n *\n * See {ERC20-_burn}.\n */\n function burn(uint256 amount) public virtual {\n _burn(_msgSender(), amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, deducting from the caller's\n * allowance.\n *\n * See {ERC20-_burn} and {ERC20-allowance}.\n *\n * Requirements:\n *\n * - the caller must have allowance for `accounts`'s tokens of at least\n * `amount`.\n */\n function burnFrom(address account, uint256 amount) public virtual {\n uint256 decreasedAllowance = allowance(account, _msgSender()).sub(amount, \"ERC20: burn amount exceeds allowance\");\n\n _approve(account, _msgSender(), decreasedAllowance);\n _burn(account, amount);\n }\n\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _beforeTokenTransfer(account, address(0), amount);\n\n _balances[account] = _balances[account].sub(amount, \"ERC20: burn amount exceeds balance\");\n _totalSupply = _totalSupply.sub(amount);\n emit Transfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n *\n * This is internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(address owner, address spender, uint256 amount) internal virtual {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`.`amount` is then deducted\n * from the caller's allowance.\n *\n * See {_burn} and {_approve}.\n */\n function _burnFrom(address account, uint256 amount) internal virtual {\n _burn(account, amount);\n _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, \"ERC20: burn amount exceeds allowance\"));\n }\n\n /**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of `from`'s tokens\n * will be to transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of `from`'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:using-hooks.adoc[Using Hooks].\n */\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }\n}" + }, + "contracts/ERC20/draft-ERC20Permit.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"./ERC20Custom.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\n\n/**\n * @dev Implementation 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 *\n * _Available since v3.4._\n */\nabstract contract ERC20Permit is ERC20Custom, IERC20Permit, EIP712 {\n using Counters for Counters.Counter;\n\n mapping(address => Counters.Counter) private _nonces;\n\n // solhint-disable-next-line var-name-mixedcase\n bytes32 private immutable _PERMIT_TYPEHASH = keccak256(\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\");\n\n /**\n * @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\"1\"`.\n *\n * It's a good idea to use the same `name` that is defined as the ERC20 token name.\n */\n constructor(string memory name) EIP712(name, \"1\") {}\n\n /**\n * @dev See {IERC20Permit-permit}.\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) public virtual override {\n require(block.timestamp <= deadline, \"ERC20Permit: expired deadline\");\n\n bytes32 structHash = keccak256(abi.encode(_PERMIT_TYPEHASH, owner, spender, value, _useNonce(owner), deadline));\n\n bytes32 hash = _hashTypedDataV4(structHash);\n\n address signer = ECDSA.recover(hash, v, r, s);\n require(signer == owner, \"ERC20Permit: invalid signature\");\n\n _approve(owner, spender, value);\n }\n\n /**\n * @dev See {IERC20Permit-nonces}.\n */\n function nonces(address owner) public view virtual override returns (uint256) {\n return _nonces[owner].current();\n }\n\n /**\n * @dev See {IERC20Permit-DOMAIN_SEPARATOR}.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view override returns (bytes32) {\n return _domainSeparatorV4();\n }\n\n /**\n * @dev \"Consume a nonce\": return the current value and increment.\n *\n * _Available since v4.1._\n */\n function _useNonce(address owner) internal virtual returns (uint256 current) {\n Counters.Counter storage nonce = _nonces[owner];\n current = nonce.current();\n nonce.increment();\n }\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^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(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) 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/utils/cryptography/draft-EIP712.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"./ECDSA.sol\";\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n *\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\n *\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n * ({_hashTypedDataV4}).\n *\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n * the chain id to protect against replay attacks on an eventual fork of the chain.\n *\n * NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n *\n * _Available since v3.4._\n */\nabstract contract EIP712 {\n /* solhint-disable var-name-mixedcase */\n // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to\n // invalidate the cached domain separator if the chain id changes.\n bytes32 private immutable _CACHED_DOMAIN_SEPARATOR;\n uint256 private immutable _CACHED_CHAIN_ID;\n\n bytes32 private immutable _HASHED_NAME;\n bytes32 private immutable _HASHED_VERSION;\n bytes32 private immutable _TYPE_HASH;\n\n /* solhint-enable var-name-mixedcase */\n\n /**\n * @dev Initializes the domain separator and parameter caches.\n *\n * The meaning of `name` and `version` is specified in\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n *\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n * - `version`: the current major version of the signing domain.\n *\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n * contract upgrade].\n */\n constructor(string memory name, string memory version) {\n bytes32 hashedName = keccak256(bytes(name));\n bytes32 hashedVersion = keccak256(bytes(version));\n bytes32 typeHash = keccak256(\n \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"\n );\n _HASHED_NAME = hashedName;\n _HASHED_VERSION = hashedVersion;\n _CACHED_CHAIN_ID = block.chainid;\n _CACHED_DOMAIN_SEPARATOR = _buildDomainSeparator(typeHash, hashedName, hashedVersion);\n _TYPE_HASH = typeHash;\n }\n\n /**\n * @dev Returns the domain separator for the current chain.\n */\n function _domainSeparatorV4() internal view returns (bytes32) {\n if (block.chainid == _CACHED_CHAIN_ID) {\n return _CACHED_DOMAIN_SEPARATOR;\n } else {\n return _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION);\n }\n }\n\n function _buildDomainSeparator(\n bytes32 typeHash,\n bytes32 nameHash,\n bytes32 versionHash\n ) private view returns (bytes32) {\n return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this)));\n }\n\n /**\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n * function returns the hash of the fully encoded EIP712 message for this domain.\n *\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n *\n * ```solidity\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n * keccak256(\"Mail(address to,string contents)\"),\n * mailTo,\n * keccak256(bytes(mailContents))\n * )));\n * address signer = ECDSA.recover(digest, signature);\n * ```\n */\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\n return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash);\n }\n}\n" + }, + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSA {\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature`. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {toEthSignedMessageHash} on it.\n *\n * Documentation for signature generation:\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n */\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n // Check the signature length\n // - case 65: r,s,v signature (standard)\n // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._\n if (signature.length == 65) {\n bytes32 r;\n bytes32 s;\n uint8 v;\n // ecrecover takes the signature parameters, and the only way to get them\n // currently is to use assembly.\n assembly {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n return recover(hash, v, r, s);\n } else if (signature.length == 64) {\n bytes32 r;\n bytes32 vs;\n // ecrecover takes the signature parameters, and the only way to get them\n // currently is to use assembly.\n assembly {\n r := mload(add(signature, 0x20))\n vs := mload(add(signature, 0x40))\n }\n return recover(hash, r, vs);\n } else {\n revert(\"ECDSA: invalid signature length\");\n }\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `r` and `vs` short-signature fields separately.\n *\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n *\n * _Available since v4.2._\n */\n function recover(\n bytes32 hash,\n bytes32 r,\n bytes32 vs\n ) internal pure returns (address) {\n bytes32 s;\n uint8 v;\n assembly {\n s := and(vs, 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n v := add(shr(255, vs), 27)\n }\n return recover(hash, v, r, s);\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `v`, `r` and `s` signature fields separately.\n */\n function recover(\n bytes32 hash,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal pure returns (address) {\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n // the valid range for s in (281): 0 < s < secp256k1n ÷ 2 + 1, and for v in (282): v ∈ {27, 28}. Most\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n //\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n // these malleable signatures as well.\n require(\n uint256(s) <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0,\n \"ECDSA: invalid signature 's' value\"\n );\n require(v == 27 || v == 28, \"ECDSA: invalid signature 'v' value\");\n\n // If the signature is valid (and not malleable), return the signer address\n address signer = ecrecover(hash, v, r, s);\n require(signer != address(0), \"ECDSA: invalid signature\");\n\n return signer;\n }\n\n /**\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\n * produces hash corresponding to the one signed with the\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n * JSON-RPC method as part of EIP-191.\n *\n * See {recover}.\n */\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\n // 32 is the length in bytes of hash,\n // enforced by the type signature above\n return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", hash));\n }\n\n /**\n * @dev Returns an Ethereum Signed Typed Data, created from a\n * `domainSeparator` and a `structHash`. This produces hash corresponding\n * to the one signed with the\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\n * JSON-RPC method as part of EIP-712.\n *\n * See {recover}.\n */\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19\\x01\", domainSeparator, structHash));\n }\n}\n" + }, + "@openzeppelin/contracts/utils/Counters.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @title Counters\n * @author Matt Condon (@shrugs)\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\n *\n * Include with `using Counters for Counters.Counter;`\n */\nlibrary Counters {\n struct Counter {\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\n // this feature: see https://github.com/ethereum/solidity/issues/4637\n uint256 _value; // default: 0\n }\n\n function current(Counter storage counter) internal view returns (uint256) {\n return counter._value;\n }\n\n function increment(Counter storage counter) internal {\n unchecked {\n counter._value += 1;\n }\n }\n\n function decrement(Counter storage counter) internal {\n uint256 value = counter._value;\n require(value > 0, \"Counter: decrement overflow\");\n unchecked {\n counter._value = value - 1;\n }\n }\n\n function reset(Counter storage counter) internal {\n counter._value = 0;\n }\n}\n" + }, + "contracts/DEUS/DEUS.sol": { + "content": "// Be name Khoda\n// Bime Abolfazl\n\n// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity ^0.8.10;\n\n// =================================================================================================================\n// _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| |\n// _| _| _| _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| |\n// _| _| _|_|_| _| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_|_|_| |\n// _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| |\n// _|_|_| _|_|_|_| _|_| _|_|_| _| _| _| _| _|_|_| _| _| _|_|_| _|_|_| |\n// =================================================================================================================\n// ========================= DEUS (DEUS) =========================\n// ===============================================================\n// DEUS Finance: https://github.com/DeusFinance\n\n// Primary Author(s)\n// Travis Moore: https://github.com/FortisFortuna\n// Jason Huan: https://github.com/jasonhuan\n// Sam Kazemian: https://github.com/samkazemian\n// Vahid Gh: https://github.com/vahid-dev\n// SAYaghoubnejad: https://github.com/SAYaghoubnejad\n\n// Reviewer(s) / Contributor(s)\n// Sam Sun: https://github.com/samczsun\n\nimport \"../DEI/IDEI.sol\";\nimport \"../ERC20/draft-ERC20Permit.sol\";\nimport \"../Governance/AccessControl.sol\";\n\ncontract DEUSToken is ERC20Permit, AccessControl {\n\n\t/* ========== STATE VARIABLES ========== */\n\n\tstring public symbol;\n\tstring public name;\n\tuint8 public constant decimals = 18;\n\n\tuint256 public constant genesis_supply = 100e18; // genesis supply has been minted on ETH & Polygon\n\n\taddress public dei_contract_address;\n\n\tbytes32 public constant TRUSTY_ROLE = keccak256(\"TRUSTY_ROLE\");\n\tbytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n\n\t/* ========== MODIFIERS ========== */\n\n\n\t// Note: Used by staking contracts to mint rewards\n\tmodifier onlyMinters() {\n\t\trequire(hasRole(MINTER_ROLE, msg.sender), \"DEUS: Only minters are allowed to do this operation\");\n\t\t_;\n\t}\n\n\tmodifier onlyPools() {\n\t\trequire(IDEIStablecoin(dei_contract_address).dei_pools(msg.sender), \"DEUS: Only dei pools are allowed to do this operation\");\n\t\t_;\n\t}\n\n\tmodifier onlyTrusty() {\n\t\trequire(hasRole(TRUSTY_ROLE, msg.sender), \"DEUS: You are not trusty\");\n\t\t_;\n\t}\n\n\t/* ========== CONSTRUCTOR ========== */\n\n\tconstructor(\n\t\tstring memory _name,\n\t\tstring memory _symbol,\n\t\taddress _trusty_address\n\t) ERC20Permit(name) {\n\t\trequire(_trusty_address != address(0), \"DEUS::constructor: zero address detected\"); \n\t\tname = _name;\n\t\tsymbol = _symbol;\n\t\t_setupRole(DEFAULT_ADMIN_ROLE, _trusty_address);\n\t\t_setupRole(TRUSTY_ROLE, _trusty_address);\n\t\t_mint(_trusty_address, genesis_supply);\n\t}\n\n\n\t/* ========== RESTRICTED FUNCTIONS ========== */\n\n\tfunction setNameAndSymbol(string memory _name, string memory _symbol) external onlyTrusty {\n\t\tname = _name;\n\t\tsymbol = _symbol;\n\n\t\temit NameAndSymbolSet(name, symbol);\n\t}\n\n\tfunction setDEIAddress(address _dei_contract_address)\n\t\texternal\n\t\tonlyTrusty\n\t{\n\t\trequire(_dei_contract_address != address(0), \"DEUS::setDEIAddress: Zero address detected\");\n\n\t\tdei_contract_address = _dei_contract_address;\n\n\t\temit DEIAddressSet(dei_contract_address);\n\t}\n\n\t// Note: Used by staking contracts to mint rewards\n\tfunction mint(address to, uint256 amount) public onlyMinters {\n\t\t_mint(to, amount);\n\t}\n\n\t// This function is what other dei pools will call to mint new DEUS (similar to the DEI mint) and staking contracts can call this function too.\n\tfunction pool_mint(address m_address, uint256 m_amount) external onlyPools {\n\t\tsuper._mint(m_address, m_amount);\n\t\temit DEUSMinted(address(this), m_address, m_amount);\n\t}\n\n\t// This function is what other dei pools will call to burn DEUS\n\tfunction pool_burn_from(address b_address, uint256 b_amount) external onlyPools {\n\t\tsuper._burnFrom(b_address, b_amount);\n\t\temit DEUSBurned(b_address, address(this), b_amount);\n\t}\n\n\t/* ========== EVENTS ========== */\n\tevent DEUSBurned(address indexed from, address indexed to, uint256 amount);\n\tevent DEUSMinted(address indexed from, address indexed to, uint256 amount);\n\tevent DEIAddressSet(address addr);\n\tevent NameAndSymbolSet(string name, string symbol);\n}\n\n//Dar panah khoda" + }, + "contracts/DEI/IDEI.sol": { + "content": "// Be name Khoda\n// Bime Abolfazl\n\n// SPDX-License-Identifier: GPL-2.0-or-later\n\ninterface IDEIStablecoin {\n function name() external view returns (string memory);\n function symbol() external view returns (string memory);\n function totalSupply() external view returns (uint256);\n function global_collateral_ratio() external view returns (uint256);\n function dei_pools(address _address) external view returns (bool);\n function dei_pools_array() external view returns (address[] memory);\n function verify_price(bytes32 sighash, bytes[] calldata sigs) external view returns (bool);\n function dei_info(uint256[] memory collat_usd_price) external view returns (uint256, uint256, uint256);\n function getChainID() external view returns (uint256);\n function globalCollateralValue(uint256[] memory collat_usd_price) external view returns (uint256);\n function refreshCollateralRatio(uint deus_price, uint dei_price, uint256 expire_block, bytes[] calldata sigs) external;\n function useGrowthRatio(bool _use_growth_ratio) external;\n function setGrowthRatioBands(uint256 _GR_top_band, uint256 _GR_bottom_band) external;\n function setPriceBands(uint256 _top_band, uint256 _bottom_band) external;\n function activateDIP(bool _activate) external;\n function pool_burn_from(address b_address, uint256 b_amount) external;\n function pool_mint(address m_address, uint256 m_amount) external;\n function addPool(address pool_address) external;\n function removePool(address pool_address) external;\n function setNameAndSymbol(string memory _name, string memory _symbol) external;\n function setOracle(address _oracle) external;\n function setDEIStep(uint256 _new_step) external;\n function setReserveTracker(address _reserve_tracker_address) external;\n function setRefreshCooldown(uint256 _new_cooldown) external;\n function setDEUSAddress(address _deus_address) external;\n function toggleCollateralRatio() external;\n}\n\n//Dar panah khoda" + }, + "contracts/Governance/AccessControl.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.11;\n\nimport \"../Utils/EnumerableSet.sol\";\nimport \"../Utils/Address.sol\";\nimport \"../Common/Context.sol\";\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```\n * function foo() public {\n * require(hasRole(MY_ROLE, msg.sender));\n * ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it.\n */\nabstract contract AccessControl is Context {\n using EnumerableSet for EnumerableSet.AddressSet;\n using Address for address;\n\n struct RoleData {\n EnumerableSet.AddressSet members;\n bytes32 adminRole;\n }\n\n mapping (bytes32 => RoleData) private _roles;\n\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; //bytes32(uint256(0x4B437D01b575618140442A4975db38850e3f8f5f) << 96);\n\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n *\n * _Available since v3.1._\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {_setupRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) public view returns (bool) {\n return _roles[role].members.contains(account);\n }\n\n /**\n * @dev Returns the number of accounts that have `role`. Can be used\n * together with {getRoleMember} to enumerate all bearers of a role.\n */\n function getRoleMemberCount(bytes32 role) public view returns (uint256) {\n return _roles[role].members.length();\n }\n\n /**\n * @dev Returns one of the accounts that have `role`. `index` must be a\n * value between 0 and {getRoleMemberCount}, non-inclusive.\n *\n * Role bearers are not sorted in any particular way, and their ordering may\n * change at any point.\n *\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n * you perform all queries on the same block. See the following\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n * for more information.\n */\n function getRoleMember(bytes32 role, uint256 index) public view returns (address) {\n return _roles[role].members.at(index);\n }\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) public view returns (bytes32) {\n return _roles[role].adminRole;\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) public virtual {\n require(hasRole(_roles[role].adminRole, _msgSender()), \"AccessControl: sender must be an admin to grant\");\n\n _grantRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) public virtual {\n require(hasRole(_roles[role].adminRole, _msgSender()), \"AccessControl: sender must be an admin to revoke\");\n\n _revokeRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n */\n function renounceRole(bytes32 role, address account) public virtual {\n require(account == _msgSender(), \"AccessControl: can only renounce roles for self\");\n\n _revokeRole(role, account);\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event. Note that unlike {grantRole}, this function doesn't perform any\n * checks on the calling account.\n *\n * [WARNING]\n * ====\n * This function should only be called from the constructor when setting\n * up the initial roles for the system.\n *\n * Using this function in any other way is effectively circumventing the admin\n * system imposed by {AccessControl}.\n * ====\n */\n function _setupRole(bytes32 role, address account) internal virtual {\n _grantRole(role, account);\n }\n\n /**\n * @dev Sets `adminRole` as ``role``'s admin role.\n *\n * Emits a {RoleAdminChanged} event.\n */\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);\n _roles[role].adminRole = adminRole;\n }\n\n function _grantRole(bytes32 role, address account) private {\n if (_roles[role].members.add(account)) {\n emit RoleGranted(role, account, _msgSender());\n }\n }\n\n function _revokeRole(bytes32 role, address account) private {\n if (_roles[role].members.remove(account)) {\n emit RoleRevoked(role, account, _msgSender());\n }\n }\n}\n" + }, + "contracts/Utils/EnumerableSet.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.11;\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.0.0, only sets of type `address` (`AddressSet`) and `uint256`\n * (`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 // 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(bytes20(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(bytes20(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(bytes20(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(bytes20(_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" + }, + "contracts/Staking/Staking.sol": { + "content": "// Be name Khoda\n// Bime Abolfazl\n\n// =================================================================================================================\n// _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| |\n// _| _| _| _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| |\n// _| _| _|_|_| _| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_|_|_| |\n// _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| |\n// _|_|_| _|_|_|_| _|_| _|_|_| _| _| _| _| _|_|_| _| _| _|_|_| _|_|_| |\n// =================================================================================================================\n// ======================= STAKING ======================\n// ======================================================\n// DEUS Finance: https://github.com/DeusFinance\n\n// Primary Author(s)\n// Vahid: https://github.com/vahid-dev\n// Hosein: https://github.com/hedzed\n\n// Reviewer(s) / Contributor(s)\n// S.A. Yaghoubnejad: https://github.com/SAYaghoubnejad\n// Hosein: https://github.com/hedzed\n\npragma solidity ^0.8.9;\n\nimport \"../Governance/AccessControl.sol\";\n\ninterface IERC20 {\n\tfunction balanceOf(address account) external view returns (uint256);\n\tfunction transfer(address recipient, uint256 amount) external returns (bool);\n\tfunction transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\n}\n\ninterface DEUSToken {\n\tfunction pool_mint(address m_address, uint256 m_amount) external;\n}\n\ncontract Staking is AccessControl {\n\n\tstruct User {\n\t\tuint256 depositAmount;\n\t\tuint256 paidReward;\n\t}\n\n\tmapping (address => User) public users;\n\n\tuint256 public rewardTillNowPerToken = 0;\n\tuint256 public lastUpdatedBlock;\n\tuint256 public rewardPerBlock;\n\tuint256 public scale = 1e18;\n\n\tuint256 public particleCollector = 0;\n\tuint256 public daoShare;\n\tuint256 public earlyFoundersShare;\n\taddress public daoWallet;\n\taddress public earlyFoundersWallet;\n\tuint256 public totalStakedToken = 1; // init with 1 instead of 0 to avoid division by zero\n\n\taddress public stakedToken;\n\taddress public rewardToken;\n\n\tbytes32 public constant REWARD_PER_BLOCK_SETTER = keccak256(\"REWARD_PER_BLOCK_SETTER\");\n\tbytes32 public constant TRUSTY_ROLE = keccak256(\"TRUSTY_ROLE\");\n\n\t/* ========== CONSTRUCTOR ========== */\n\n\tconstructor (\n\t\taddress _stakedToken,\n\t\taddress _rewardToken,\n\t\tuint256 _rewardPerBlock,\n\t\tuint256 _daoShare,\n\t\tuint256 _earlyFoundersShare,\n\t\taddress _daoWallet,\n\t\taddress _earlyFoundersWallet,\n\t\taddress _rewardPerBlockSetter)\n\t{\n\t\trequire(\n\t\t\t_stakedToken != address(0) &&\n\t\t\t_rewardToken != address(0) &&\n\t\t\t_daoWallet != address(0) &&\n\t\t\t_earlyFoundersWallet != address(0),\n\t\t\t\"STAKING::constructor: Zero address detected\"\n\t\t);\n\t\t_setupRole(DEFAULT_ADMIN_ROLE, msg.sender);\n\t\t_setupRole(REWARD_PER_BLOCK_SETTER, _rewardPerBlockSetter);\n\t\t_setupRole(TRUSTY_ROLE, msg.sender);\n\t\tstakedToken = _stakedToken;\n\t\trewardToken = _rewardToken;\n\t\trewardPerBlock = _rewardPerBlock;\n\t\tdaoShare = _daoShare;\n\t\tearlyFoundersShare = _earlyFoundersShare;\n\t\tlastUpdatedBlock = block.number;\n\t\tdaoWallet = _daoWallet;\n\t\tearlyFoundersWallet = _earlyFoundersWallet;\n\t}\n\n\n\tmodifier onlyTrusty() {\n\t\trequire(hasRole(TRUSTY_ROLE, msg.sender), \"STAKING:: Caller is not a trusty\");\n\t\t_;\n\t}\n\n\t/* ========== VIEWS ========== */\n\n\t// View function to see pending reward on frontend.\n\tfunction pendingReward(address _user) external view returns (uint256 reward) {\n\t\tUser storage user = users[_user];\n\t\tuint256 accRewardPerToken = rewardTillNowPerToken;\n\n\t\tif (block.number > lastUpdatedBlock) {\n\t\t\tuint256 rewardAmount = (block.number - lastUpdatedBlock) * rewardPerBlock;\n\t\t\taccRewardPerToken = accRewardPerToken + (rewardAmount * scale / totalStakedToken);\n\t\t}\n\t\treward = (user.depositAmount * accRewardPerToken / scale) - user.paidReward;\n\t}\n\n\t/* ========== PUBLIC FUNCTIONS ========== */\n\n\t// Update reward variables of the pool to be up-to-date.\n\tfunction update() public {\n\t\tif (block.number <= lastUpdatedBlock) {\n\t\t\treturn;\n\t\t}\n\n\t\tuint256 rewardAmount = (block.number - lastUpdatedBlock) * rewardPerBlock;\n\n\t\trewardTillNowPerToken = rewardTillNowPerToken + (rewardAmount * scale / totalStakedToken);\n\t\tlastUpdatedBlock = block.number;\n\t}\n\n\tfunction deposit(uint256 amount) external {\n\t\tdepositFor(msg.sender, amount);\n\t}\n\n\tfunction depositFor(address _user, uint256 amount) public {\n\t\tUser storage user = users[_user];\n\t\tupdate();\n\n\t\tif (user.depositAmount > 0) {\n\t\t\tuint256 _pendingReward = (user.depositAmount * rewardTillNowPerToken / scale) - user.paidReward;\n\t\t\tsendReward(_user, _pendingReward);\n\t\t}\n\n\t\tuser.depositAmount = user.depositAmount + amount;\n\t\tuser.paidReward = user.depositAmount * rewardTillNowPerToken / scale;\n\n\t\tIERC20(stakedToken).transferFrom(msg.sender, address(this), amount);\n\t\ttotalStakedToken = totalStakedToken + amount;\n\t\temit Deposit(_user, amount);\n\t}\n\n\tfunction withdraw(uint256 amount) external {\n\t\tUser storage user = users[msg.sender];\n\t\trequire(user.depositAmount >= amount, \"STAKING::withdraw: withdraw amount exceeds deposited amount\");\n\t\tupdate();\n\n\t\tuint256 _pendingReward = (user.depositAmount * rewardTillNowPerToken / scale) - user.paidReward;\n\t\tsendReward(msg.sender, _pendingReward);\n\n\t\tuint256 particleCollectorShare = _pendingReward * (daoShare + earlyFoundersShare) / scale;\n\t\tparticleCollector = particleCollector + particleCollectorShare;\n\n\t\tif (amount > 0) {\n\t\t\tuser.depositAmount = user.depositAmount - amount;\n\t\t\tIERC20(stakedToken).transfer(address(msg.sender), amount);\n\t\t\ttotalStakedToken = totalStakedToken - amount;\n\t\t\temit Withdraw(msg.sender, amount);\n\t\t}\n\n\t\tuser.paidReward = user.depositAmount * rewardTillNowPerToken / scale;\n\t}\n\n\tfunction withdrawParticleCollector() public {\n\t\tuint256 _daoShare = particleCollector * daoShare / (daoShare + earlyFoundersShare);\n\t\tDEUSToken(rewardToken).pool_mint(daoWallet, _daoShare);\n\n\t\tuint256 _earlyFoundersShare = particleCollector * earlyFoundersShare / (daoShare + earlyFoundersShare);\n\t\tDEUSToken(rewardToken).pool_mint(earlyFoundersWallet, _earlyFoundersShare);\n\n\t\tparticleCollector = 0;\n\n\t\temit WithdrawParticleCollectorAmount(_earlyFoundersShare, _daoShare);\n\t}\n\n\t// Withdraw without caring about rewards. EMERGENCY ONLY.\n\tfunction emergencyWithdraw() external {\n\t\tUser storage user = users[msg.sender];\n\n\t\ttotalStakedToken = totalStakedToken - user.depositAmount;\n\n\t\tIERC20(stakedToken).transfer(msg.sender, user.depositAmount);\n\t\temit EmergencyWithdraw(msg.sender, user.depositAmount);\n\n\t\tuser.depositAmount = 0;\n\t\tuser.paidReward = 0;\n\t}\n\n\tfunction sendReward(address user, uint256 amount) internal {\n\t\t// uint256 _daoShareAndEarlyFoundersShare = amount * (daoShare + earlyFoundersShare) / scale;\n\t\t// DEUSToken(rewardToken).pool_mint(user, amount - _daoShareAndEarlyFoundersShare);\n\t\tDEUSToken(rewardToken).pool_mint(user, amount);\n\t\temit RewardClaimed(user, amount);\n\t}\n\n\t/* ========== EMERGENCY FUNCTIONS ========== */\n\n\t// Add temporary withdrawal functionality for owner(DAO) to transfer all tokens to a safe place.\n\t// Contract ownership will transfer to address(0x) after full auditing of codes.\n\tfunction withdrawAllStakedtokens(address to) external onlyTrusty {\n\t\tuint256 totalStakedTokens = IERC20(stakedToken).balanceOf(address(this));\n\t\ttotalStakedToken = 1;\n\t\tIERC20(stakedToken).transfer(to, totalStakedTokens);\n\n\t\temit withdrawStakedtokens(totalStakedTokens, to);\n\t}\n\n\tfunction setStakedToken(address _stakedToken) external onlyTrusty {\n\t\tstakedToken = _stakedToken;\n\n\t\temit StakedTokenSet(_stakedToken);\n\t}\n\n\tfunction emergencyWithdrawERC20(address to, address _token, uint256 amount) external onlyTrusty {\n\t\tIERC20(_token).transfer(to, amount);\n\t}\n\tfunction emergencyWithdrawETH(address payable to, uint amount) external onlyTrusty {\n\t\tpayable(to).transfer(amount);\n\t}\n\n\tfunction setWallets(address _daoWallet, address _earlyFoundersWallet) external onlyTrusty {\n\t\tdaoWallet = _daoWallet;\n\t\tearlyFoundersWallet = _earlyFoundersWallet;\n\n\t\temit WalletsSet(_daoWallet, _earlyFoundersWallet);\n\t}\n\n\tfunction setShares(uint256 _daoShare, uint256 _earlyFoundersShare) external onlyTrusty {\n\t\twithdrawParticleCollector();\n\t\tdaoShare = _daoShare;\n\t\tearlyFoundersShare = _earlyFoundersShare;\n\n\t\temit SharesSet(_daoShare, _earlyFoundersShare);\n\t}\n\n\tfunction setRewardPerBlock(uint256 _rewardPerBlock) external {\n\t\trequire(hasRole(REWARD_PER_BLOCK_SETTER, msg.sender), \"STAKING::setRewardPerBlock: Caller is not a rewardPerBlockSetter\");\n\t\tupdate();\n\t\temit RewardPerBlockChanged(rewardPerBlock, _rewardPerBlock);\n\t\trewardPerBlock = _rewardPerBlock;\n\t}\n\n\n\t/* ========== EVENTS ========== */\n\n\tevent withdrawStakedtokens(uint256 totalStakedTokens, address to);\n\tevent StakedTokenSet(address _stakedToken);\n\tevent SharesSet(uint256 _daoShare, uint256 _earlyFoundersShare);\n\tevent WithdrawParticleCollectorAmount(uint256 _earlyFoundersShare, uint256 _daoShare);\n\tevent WalletsSet(address _daoWallet, address _earlyFoundersWallet);\n\tevent Deposit(address user, uint256 amount);\n\tevent Withdraw(address user, uint256 amount);\n\tevent EmergencyWithdraw(address user, uint256 amount);\n\tevent RewardClaimed(address user, uint256 amount);\n\tevent RewardPerBlockChanged(uint256 oldValue, uint256 newValue);\n}\n\n//Dar panah khoda" + }, + "contracts/Oracle/ReserveTracker.sol": { + "content": "// Be name Khoda\n// Bime Abolfazl\n\n// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity ^0.8.7;\n\n// =================================================================================================================\n// _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| |\n// _| _| _| _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| |\n// _| _| _|_|_| _| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_|_|_| |\n// _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| |\n// _|_|_| _|_|_|_| _|_| _|_|_| _| _| _| _| _|_|_| _| _| _|_|_| _|_|_| | \n// =================================================================================================================\n// ====================================================================\n// =========================== ReserveTracker =========================\n// ====================================================================\n// Deus Finance: https://github.com/DeusFinance\n\n// Primary Author(s)\n// Jason Huan: https://github.com/jasonhuan\n// Sam Kazemian: https://github.com/samkazemian\n// Vahid: https://github.com/vahid-dev\n// SAYaghoubnejad: https://github.com/SAYaghoubnejad\n\n// Reviewer(s) / Contributor(s)\n// Travis Moore: https://github.com/FortisFortuna\n\nimport \"../Math/SafeMath.sol\";\nimport \"../Math/Math.sol\";\nimport \"../Uniswap/Interfaces/IUniswapV2Pair.sol\";\nimport \"../Governance/AccessControl.sol\";\n\ncontract ReserveTracker is AccessControl {\n\n\t// Roles\n bytes32 public constant TRUSTY_ROLE = keccak256(\"TRUSTY_ROLE\");\n\n\t// Various precisions\n\tuint256 private PRICE_PRECISION = 1e6;\n\n\t// Contract addresses\n\taddress private dei_contract_address;\n\taddress private deus_contract_address;\n\n\t// Array of pairs for DEUS\n\taddress[] public deus_pairs_array;\n\n\t// Mapping is also used for faster verification\n\tmapping(address => bool) public deus_pairs;\n\n\t// ========== MODIFIERS ==========\n\n\tmodifier onlyTrusty() {\n\t\trequire(hasRole(TRUSTY_ROLE, msg.sender), \"Caller is not trusty\");\n\t\t_;\n\t}\n\n\t// ========== CONSTRUCTOR ==========\n\n\tconstructor(\n\t\taddress _dei_contract_address,\n\t\taddress _deus_contract_address\n\t) {\n\t\tdei_contract_address = _dei_contract_address;\n\t\tdeus_contract_address = _deus_contract_address;\n\t\t_setupRole(DEFAULT_ADMIN_ROLE, msg.sender);\n\t\t_setupRole(TRUSTY_ROLE, msg.sender);\n\t}\n\n\t// ========== VIEWS ==========\n\n\tfunction getDEUSReserves() public view returns (uint256) {\n\t\tuint256 total_deus_reserves = 0;\n\n\t\tfor (uint i = 0; i < deus_pairs_array.length; i++){ \n\t\t\t// Exclude null addresses\n\t\t\tif (deus_pairs_array[i] != address(0)){\n\t\t\t\tif(IUniswapV2Pair(deus_pairs_array[i]).token0() == deus_contract_address) {\n\t\t\t\t\t(uint reserves0, , ) = IUniswapV2Pair(deus_pairs_array[i]).getReserves();\n\t\t\t\t\ttotal_deus_reserves = total_deus_reserves + reserves0;\n\t\t\t\t} else if (IUniswapV2Pair(deus_pairs_array[i]).token1() == deus_contract_address) {\n\t\t\t\t\t( , uint reserves1, ) = IUniswapV2Pair(deus_pairs_array[i]).getReserves();\n\t\t\t\t\ttotal_deus_reserves = total_deus_reserves + reserves1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn total_deus_reserves;\n\t}\n\n\t// Adds collateral addresses supported, such as tether and busd, must be ERC20 \n\tfunction addDEUSPair(address pair_address) public onlyTrusty {\n\t\trequire(deus_pairs[pair_address] == false, \"Address already exists\");\n\t\tdeus_pairs[pair_address] = true; \n\t\tdeus_pairs_array.push(pair_address);\n\t}\n\n\t// Remove a pool \n\tfunction removeDEUSPair(address pair_address) public onlyTrusty {\n\t\trequire(deus_pairs[pair_address] == true, \"Address nonexistant\");\n\t\t\n\t\t// Delete from the mapping\n\t\tdelete deus_pairs[pair_address];\n\n\t\t// 'Delete' from the array by setting the address to 0x0\n\t\tfor (uint i = 0; i < deus_pairs_array.length; i++){ \n\t\t\tif (deus_pairs_array[i] == pair_address) {\n\t\t\t\tdeus_pairs_array[i] = address(0); // This will leave a null in the array and keep the indices the same\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\n//Dar panah khoda" + }, + "contracts/DEI/DEI.sol": { + "content": "// Be name Khoda\n// Bime Abolfazl\n\n// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity ^0.8.0;\n\n// =================================================================================================================\n// _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| |\n// _| _| _| _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| |\n// _| _| _|_|_| _| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_|_|_| |\n// _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| |\n// _|_|_| _|_|_|_| _|_| _|_|_| _| _| _| _| _|_|_| _| _| _|_|_| _|_|_| |\n// =================================================================================================================\n// ======================= DEIStablecoin (DEI) ======================\n// ==================================================================\n// DEUS Finance: https://github.com/DeusFinance\n\n// Primary Author(s)\n// Travis Moore: https://github.com/FortisFortuna\n// Jason Huan: https://github.com/jasonhuan\n// Sam Kazemian: https://github.com/samkazemian\n// Vahid: https://github.com/vahid-dev\n// SAYaghoubnejad: https://github.com/SAYaghoubnejad\n\n// Reviewer(s) / Contributor(s)\n// Sam Sun: https://github.com/samczsun\n\nimport \"./Pools/DEIPool.sol\";\nimport \"../Oracle/Oracle.sol\";\nimport \"../Oracle/ReserveTracker.sol\";\nimport \"../ERC20/draft-ERC20Permit.sol\";\nimport \"../Governance/AccessControl.sol\";\n\ncontract DEIStablecoin is ERC20Permit, AccessControl {\n\tusing ECDSA for bytes32;\n\n\t/* ========== STATE VARIABLES ========== */\n\tstring public symbol;\n\tstring public name;\n\tuint8 public constant decimals = 18;\n\taddress public oracle;\n\taddress public deus_address;\n\tuint256 public constant genesis_supply = 10000e18; // genesis supply is 10k. This is to help with establishing the Uniswap pools, as they need liquidity\n\taddress public reserve_tracker_address;\n\n\t// The addresses in this array are added by the oracle and these contracts are able to mint DEI\n\taddress[] public dei_pools_array;\n\n\t// Mapping is also used for faster verification\n\tmapping(address => bool) public dei_pools;\n\n\t// Constants for various precisions\n\tuint256 private constant PRICE_PRECISION = 1e6;\n\n\tuint256 public global_collateral_ratio; // 6 decimals of precision, e.g. 924102 = 0.924102\n\tuint256 public dei_step; // Amount to change the collateralization ratio by upon refreshCollateralRatio()\n\tuint256 public refresh_cooldown; // Seconds to wait before being able to run refreshCollateralRatio() again\n\n\tbytes32 public constant COLLATERAL_RATIO_PAUSER = keccak256(\"COLLATERAL_RATIO_PAUSER\");\n\tbytes32 public constant TRUSTY_ROLE = keccak256(\"TRUSTY_ROLE\");\n\tbool public collateral_ratio_paused = false;\n\n\n\t// 6 decimals of precision\n\tuint256 public growth_ratio;\n\tuint256 public GR_top_band;\n\tuint256 public GR_bottom_band;\n\n\t// Bands\n\tuint256 public DEI_top_band;\n\tuint256 public DEI_bottom_band;\n\n\t// Booleans\n\tbool public use_growth_ratio;\n\tbool public DIP;\n\n\n\t/* ========== MODIFIERS ========== */\n\n\tmodifier onlyPools() {\n\t\trequire(\n\t\t\tdei_pools[msg.sender] == true,\n\t\t\t\"DEI: only dei pools can call this function\"\n\t\t);\n\t\t_;\n\t}\n\n\tmodifier onlyTrusty() {\n\t\trequire(\n\t\t\thasRole(TRUSTY_ROLE, msg.sender),\n\t\t\t\"DEI: you are not the owner\"\n\t\t);\n\t\t_;\n\t}\n\n\t/* ========== CONSTRUCTOR ========== */\n\n\tconstructor(\n\t\tstring memory _name,\n\t\tstring memory _symbol,\n\t\taddress _trusty_address\n\t) ERC20Permit(name) {\n\t\trequire(\n\t\t\t_trusty_address != address(0),\n\t\t\t\"DEI: zero address detected.\"\n\t\t);\n\t\tname = _name;\n\t\tsymbol = _symbol;\n\t\tdei_step = 2500; // 6 decimals of precision, equal to 0.25%\n\t\tglobal_collateral_ratio = 800000; // Dei system starts off fully collateralized (6 decimals of precision)\n\t\trefresh_cooldown = 300; // Refresh cooldown period is set to 5 minutes (300 seconds) at genesis\n\t\t_setupRole(DEFAULT_ADMIN_ROLE, _trusty_address);\n\t\t_setupRole(COLLATERAL_RATIO_PAUSER, _trusty_address);\n\t\t_setupRole(TRUSTY_ROLE, _trusty_address);\n\t\t_mint(_trusty_address, genesis_supply);\n\n\t\t// Upon genesis, if GR changes by more than 1% percent, enable change of collateral ratio\n\t\tGR_top_band = 1000;\n\t\tGR_bottom_band = 1000; \n\t}\n\n\t/* ========== VIEWS ========== */\n\n\t// Verify X DEUS or X DEI = 1 USD or ...\n\tfunction verify_price(bytes32 sighash, bytes[] calldata sigs)\n\t\tpublic\n\t\tview\n\t\treturns (bool)\n\t{\n\t\treturn Oracle(oracle).verify(sighash.toEthSignedMessageHash(), sigs);\n\t}\n\n\t// This is needed to avoid costly repeat calls to different getter functions\n\t// It is cheaper gas-wise to just dump everything and only use some of the info\n\tfunction dei_info(uint256[] memory collat_usd_price)\n\t\tpublic\n\t\tview\n\t\treturns (\n\t\t\tuint256,\n\t\t\tuint256,\n\t\t\tuint256\n\t\t)\n\t{\n\t\treturn (\n\t\t\ttotalSupply(), // totalSupply()\n\t\t\tglobal_collateral_ratio, // global_collateral_ratio()\n\t\t\tglobalCollateralValue(collat_usd_price) // globalCollateralValue\n\t\t);\n\t}\n\n\t// Iterate through all dei pools and calculate all value of collateral in all pools globally\n\tfunction globalCollateralValue(uint256[] memory collat_usd_price) public view returns (uint256) {\n\t\tuint256 total_collateral_value_d18 = 0;\n\n\t\tfor (uint256 i = 0; i < dei_pools_array.length; i++) {\n\t\t\t// Exclude null addresses\n\t\t\tif (dei_pools_array[i] != address(0)) {\n\t\t\t\ttotal_collateral_value_d18 = total_collateral_value_d18 + DEIPool(dei_pools_array[i]).collatDollarBalance(collat_usd_price[i]);\n\t\t\t}\n\t\t}\n\t\treturn total_collateral_value_d18;\n\t}\n\n\tfunction getChainID() public view returns (uint256) {\n\t\tuint256 id;\n\t\tassembly {\n\t\t\tid := chainid()\n\t\t}\n\t\treturn id;\n\t}\n\n\t/* ========== PUBLIC FUNCTIONS ========== */\n\n\t// There needs to be a time interval that this can be called. Otherwise it can be called multiple times per expansion.\n\tuint256 public last_call_time; // Last time the refreshCollateralRatio function was called\n\n\t// Note: New function to refresh collateral ratio\n\tfunction refreshCollateralRatio(uint deus_price, uint dei_price, uint256 expire_block, bytes[] calldata sigs) external {\n\t\trequire(collateral_ratio_paused == false, \"DEI::Collateral Ratio has been paused\");\n\t\tuint256 time_elapsed = (block.timestamp) - last_call_time;\n\t\trequire(time_elapsed >= refresh_cooldown, \"DEI::Internal cooldown not passed\");\n\t\tuint256 deus_reserves = ReserveTracker(reserve_tracker_address).getDEUSReserves();\n\n\t\tbytes32 sighash = keccak256(abi.encodePacked(\n\t\t\t\t\t\t\t\t\t\tdeus_address,\n\t\t\t\t\t\t\t\t\t\tdeus_price,\n\t\t\t\t\t\t\t\t\t\taddress(this),\n\t\t\t\t\t\t\t\t\t\tdei_price,\n\t\t\t\t\t\t\t\t\t\texpire_block,\n\t\t\t\t\t\t\t\t\t\tgetChainID()\n\t\t\t\t\t\t\t\t\t));\n\n\t\tverify_price(sighash, sigs);\n\n\t\tuint256 deus_liquidity = deus_reserves * deus_price; // Has 6 decimals of precision\n\n\t\tuint256 dei_supply = totalSupply();\n\n\t\tuint256 new_growth_ratio = deus_liquidity / dei_supply; // (E18 + E6) / E18\n\n\t\tif(DIP){\n\t\t\trequire(dei_price > DEI_top_band || dei_price < DEI_bottom_band, \"DEI::Use refreshCollateralRatio when DEI is outside of peg\");\n\t\t}\n\n\t\t// First, check if the price is out of the band\n\t\tif(dei_price > DEI_top_band){\n\t\t\tglobal_collateral_ratio = global_collateral_ratio - dei_step;\n\t\t} else if (dei_price < DEI_bottom_band){\n\t\t\tglobal_collateral_ratio = global_collateral_ratio + dei_step;\n\n\t\t// Else, check if the growth ratio has increased or decreased since last update\n\t\t} else if(use_growth_ratio){\n\t\t\tif(new_growth_ratio > growth_ratio * (1e6 + GR_top_band) / 1e6){\n\t\t\t\tglobal_collateral_ratio = global_collateral_ratio - dei_step;\n\t\t\t} else if (new_growth_ratio < growth_ratio * (1e6 - GR_bottom_band) / 1e6){\n\t\t\t\tglobal_collateral_ratio = global_collateral_ratio + dei_step;\n\t\t\t}\n\t\t}\n\n\t\tgrowth_ratio = new_growth_ratio;\n\t\tlast_call_time = block.timestamp;\n\n\t\t// No need for checking CR under 0 as the last_collateral_ratio.sub(dei_step) will throw \n\t\t// an error above in that case\n\t\tif(global_collateral_ratio > 1e6){\n\t\t\tglobal_collateral_ratio = 1e6;\n\t\t}\n\n\t\temit CollateralRatioRefreshed(global_collateral_ratio);\n\n\t}\n\n\tfunction setUseGrowthRatio(bool _use_growth_ratio) external onlyTrusty {\n\t\tuse_growth_ratio = _use_growth_ratio;\n\n\t\temit UseGrowthRatioSet(_use_growth_ratio);\n\t}\n\n\tfunction setGrowthRatioBands(uint256 _GR_top_band, uint256 _GR_bottom_band) external onlyTrusty {\n\t\tGR_top_band = _GR_top_band;\n\t\tGR_bottom_band = _GR_bottom_band;\n\t\temit GrowthRatioBandSet( _GR_top_band, _GR_bottom_band);\n\t}\n\n\tfunction setPriceBands(uint256 _top_band, uint256 _bottom_band) external onlyTrusty {\n\t\tDEI_top_band = _top_band;\n\t\tDEI_bottom_band = _bottom_band;\n\n\t\temit PriceBandSet(_top_band, _bottom_band);\n\t}\n\n\tfunction activateDIP(bool _activate) external onlyTrusty {\n\t\tDIP = _activate;\n\n\t\temit DIPSet(_activate);\n\t}\n\n\t// Used by pools when user redeems\n\tfunction pool_burn_from(address b_address, uint256 b_amount) public onlyPools {\n\t\tsuper._burnFrom(b_address, b_amount);\n\t\temit DEIBurned(b_address, msg.sender, b_amount);\n\t}\n\n\t// This function is what other dei pools will call to mint new DEI\n\tfunction pool_mint(address m_address, uint256 m_amount) public onlyPools {\n\t\tsuper._mint(m_address, m_amount);\n\t\temit DEIMinted(msg.sender, m_address, m_amount);\n\t}\n\n\t/* ========== RESTRICTED FUNCTIONS ========== */\n\n\t// Adds collateral addresses supported, such as tether and busd, must be ERC20\n\tfunction addPool(address pool_address)\n\t\texternal\n\t\tonlyTrusty\n\t{\n\t\trequire(pool_address != address(0), \"DEI::addPool: Zero address detected\");\n\t\trequire(dei_pools[pool_address] == false, \"DEI::addPool: Address already exists\");\n\n\t\tdei_pools[pool_address] = true;\n\t\tdei_pools_array.push(pool_address);\n\n\t\temit PoolAdded(pool_address);\n\t}\n\n\t// Remove a pool\n\tfunction removePool(address pool_address)\n\t\texternal\n\t\tonlyTrusty\n\t{\n\t\trequire(pool_address != address(0), \"DEI::removePool: Zero address detected\");\n\t\trequire(dei_pools[pool_address] == true, \"DEI::removePool: Address nonexistant\");\n\n\t\t// Delete from the mapping\n\t\tdelete dei_pools[pool_address];\n\n\t\t// 'Delete' from the array by setting the address to 0x0\n\t\tfor (uint256 i = 0; i < dei_pools_array.length; i++) {\n\t\t\tif (dei_pools_array[i] == pool_address) {\n\t\t\t\tdei_pools_array[i] = address(0); // This will leave a null in the array and keep the indices the same\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\temit PoolRemoved(pool_address);\n\t}\n\n\tfunction setNameAndSymbol(string memory _name, string memory _symbol) external onlyTrusty {\n\t\tname = _name;\n\t\tsymbol = _symbol;\n\n\t\temit NameAndSymbolSet(name, symbol);\n\t}\n\n\tfunction setOracle(address _oracle) external onlyTrusty {\n\t\toracle = _oracle;\n\n\t\temit OracleSet(_oracle);\n\t}\n\n\tfunction setDEIStep(uint256 _new_step) external onlyTrusty {\n\t\tdei_step = _new_step;\n\n\t\temit DEIStepSet(_new_step);\n\t}\n\n\tfunction setReserveTracker(address _reserve_tracker_address) external onlyTrusty {\n\t\treserve_tracker_address = _reserve_tracker_address;\n\n\t\temit ReserveTrackerSet(_reserve_tracker_address);\n\t}\n\n\tfunction setRefreshCooldown(uint256 _new_cooldown) external onlyTrusty {\n\t\trefresh_cooldown = _new_cooldown;\n\n\t\temit RefreshCooldownSet(_new_cooldown);\n\t}\n\n\tfunction setDEUSAddress(address _deus_address) external onlyTrusty {\n\t\trequire(_deus_address != address(0), \"DEI::setDEUSAddress: Zero address detected\");\n\n\t\tdeus_address = _deus_address;\n\n\t\temit DEUSAddressSet(_deus_address);\n\t}\n\n\tfunction toggleCollateralRatio() external {\n\t\trequire(hasRole(COLLATERAL_RATIO_PAUSER, msg.sender), \"DEI: you are not the collateral ratio pauser\");\n\t\tcollateral_ratio_paused = !collateral_ratio_paused;\n\n\t\temit CollateralRatioToggled(collateral_ratio_paused);\n\t}\n\n\t/* ========== EVENTS ========== */\n\n\t// Track DEI burned\n\tevent DEIBurned(address indexed from, address indexed to, uint256 amount);\n\t// Track DEI minted\n\tevent DEIMinted(address indexed from, address indexed to, uint256 amount);\n\tevent CollateralRatioRefreshed(uint256 global_collateral_ratio);\n\tevent PoolAdded(address pool_address);\n\tevent PoolRemoved(address pool_address);\n\tevent DEIStepSet(uint256 new_step);\n\tevent RefreshCooldownSet(uint256 new_cooldown);\n\tevent DEUSAddressSet(address deus_address);\n\tevent PriceBandSet(uint256 top_band, uint256 bottom_band);\n\tevent CollateralRatioToggled(bool collateral_ratio_paused);\n\tevent OracleSet(address oracle);\n\tevent ReserveTrackerSet(address reserve_tracker_address);\n\tevent UseGrowthRatioSet( bool use_growth_ratio);\n\tevent DIPSet(bool activate);\n\tevent GrowthRatioBandSet(uint256 GR_top_band, uint256 GR_bottom_band);\n\tevent NameAndSymbolSet(string name, string symbol);\n}\n\n//Dar panah khoda\n" + }, + "contracts/DEI/Pools/DEIPool.sol": { + "content": "// Be name Khoda\n// Bime Abolfazl\n\n// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity ^0.8.0;\npragma abicoder v2;\n// =================================================================================================================\n// _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| |\n// _| _| _| _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| |\n// _| _| _|_|_| _| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_|_|_| |\n// _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| |\n// _|_|_| _|_|_|_| _|_| _|_|_| _| _| _| _| _|_|_| _| _| _|_|_| _|_|_| |\n// =================================================================================================================\n// ============================= DEIPool =============================\n// ====================================================================\n// DEUS Finance: https://github.com/DeusFinance\n\n// Primary Author(s)\n// Travis Moore: https://github.com/FortisFortuna\n// Jason Huan: https://github.com/jasonhuan\n// Sam Kazemian: https://github.com/samkazemian\n// Vahid Gh: https://github.com/vahid-dev\n// SAYaghoubnejad: https://github.com/SAYaghoubnejad\n\n// Reviewer(s) / Contributor(s)\n// Sam Sun: https://github.com/samczsun\n\nimport \"../../Uniswap/TransferHelper.sol\";\nimport \"../../DEUS/IDEUS.sol\";\nimport \"../../DEI/IDEI.sol\";\nimport \"../../ERC20/ERC20.sol\";\nimport \"../../Governance/AccessControl.sol\";\nimport \"./DEIPoolLibrary.sol\";\n\ncontract DEIPool is AccessControl {\n\n\tstruct RecollateralizeDEI {\n\t\tuint256 collateral_amount;\n\t\tuint256 pool_collateral_price;\n\t\tuint256[] collateral_price;\n\t\tuint256 deus_current_price;\n\t\tuint256 expireBlock;\n\t\tbytes[] sigs;\n\t}\n\n\t/* ========== STATE VARIABLES ========== */\n\n\tERC20 private collateral_token;\n\taddress private collateral_address;\n\n\taddress private dei_contract_address;\n\taddress private deus_contract_address;\n\n\tuint256 public minting_fee;\n\tuint256 public redemption_fee;\n\tuint256 public buyback_fee;\n\tuint256 public recollat_fee;\n\n\tmapping(address => uint256) public redeemDEUSBalances;\n\tmapping(address => uint256) public redeemCollateralBalances;\n\tuint256 public unclaimedPoolCollateral;\n\tuint256 public unclaimedPoolDEUS;\n\tmapping(address => uint256) public lastRedeemed;\n\n\t// Constants for various precisions\n\tuint256 private constant PRICE_PRECISION = 1e6;\n\tuint256 private constant COLLATERAL_RATIO_PRECISION = 1e6;\n\tuint256 private constant COLLATERAL_RATIO_MAX = 1e6;\n\n\t// Number of decimals needed to get to 18\n\tuint256 private immutable missing_decimals;\n\n\t// Pool_ceiling is the total units of collateral that a pool contract can hold\n\tuint256 public pool_ceiling = 0;\n\n\t// Stores price of the collateral, if price is paused\n\tuint256 public pausedPrice = 0;\n\n\t// Bonus rate on DEUS minted during recollateralizeDEI(); 6 decimals of precision, set to 0.75% on genesis\n\tuint256 public bonus_rate = 7500;\n\n\t// Number of blocks to wait before being able to collectRedemption()\n\tuint256 public redemption_delay = 2;\n\n\t// Minting/Redeeming fees goes to daoWallet\n\tuint256 public daoShare = 0;\n\n\tDEIPoolLibrary poolLibrary;\n\n\t// AccessControl Roles\n\tbytes32 private constant MINT_PAUSER = keccak256(\"MINT_PAUSER\");\n\tbytes32 private constant REDEEM_PAUSER = keccak256(\"REDEEM_PAUSER\");\n\tbytes32 private constant BUYBACK_PAUSER = keccak256(\"BUYBACK_PAUSER\");\n\tbytes32 private constant RECOLLATERALIZE_PAUSER = keccak256(\"RECOLLATERALIZE_PAUSER\");\n\tbytes32 public constant TRUSTY_ROLE = keccak256(\"TRUSTY_ROLE\");\n\tbytes32 public constant DAO_SHARE_COLLECTOR = keccak256(\"DAO_SHARE_COLLECTOR\");\n\tbytes32 public constant PARAMETER_SETTER_ROLE = keccak256(\"PARAMETER_SETTER_ROLE\");\n\n\t// AccessControl state variables\n\tbool public mintPaused = false;\n\tbool public redeemPaused = false;\n\tbool public recollateralizePaused = false;\n\tbool public buyBackPaused = false;\n\n\t/* ========== MODIFIERS ========== */\n\n\tmodifier onlyTrusty() {\n\t\trequire(\n\t\t\thasRole(TRUSTY_ROLE, msg.sender),\n\t\t\t\"POOL::you are not trusty\"\n\t\t);\n\t\t_;\n\t}\n\n\tmodifier notRedeemPaused() {\n\t\trequire(redeemPaused == false, \"POOL::Redeeming is paused\");\n\t\t_;\n\t}\n\n\tmodifier notMintPaused() {\n\t\trequire(mintPaused == false, \"POOL::Minting is paused\");\n\t\t_;\n\t}\n\n\t/* ========== CONSTRUCTOR ========== */\n\n\tconstructor(\n\t\taddress _dei_contract_address,\n\t\taddress _deus_contract_address,\n\t\taddress _collateral_address,\n\t\taddress _trusty_address,\n\t\taddress _admin_address,\n\t\tuint256 _pool_ceiling,\n\t\taddress _library\n\t) {\n\t\trequire(\n\t\t\t(_dei_contract_address != address(0)) &&\n\t\t\t\t(_deus_contract_address != address(0)) &&\n\t\t\t\t(_collateral_address != address(0)) &&\n\t\t\t\t(_trusty_address != address(0)) &&\n\t\t\t\t(_admin_address != address(0)) &&\n\t\t\t\t(_library != address(0)),\n\t\t\t\"POOL::Zero address detected\"\n\t\t);\n\t\tpoolLibrary = DEIPoolLibrary(_library);\n\t\tdei_contract_address = _dei_contract_address;\n\t\tdeus_contract_address = _deus_contract_address;\n\t\tcollateral_address = _collateral_address;\n\t\tcollateral_token = ERC20(_collateral_address);\n\t\tpool_ceiling = _pool_ceiling;\n\t\tmissing_decimals = uint256(18) - collateral_token.decimals();\n\n\t\t_setupRole(DEFAULT_ADMIN_ROLE, _admin_address);\n\t\t_setupRole(MINT_PAUSER, _trusty_address);\n\t\t_setupRole(REDEEM_PAUSER, _trusty_address);\n\t\t_setupRole(RECOLLATERALIZE_PAUSER, _trusty_address);\n\t\t_setupRole(BUYBACK_PAUSER, _trusty_address);\n\t\t_setupRole(TRUSTY_ROLE, _trusty_address);\n\t\t_setupRole(PARAMETER_SETTER_ROLE, _trusty_address);\n\t}\n\n\t/* ========== VIEWS ========== */\n\n\t// Returns dollar value of collateral held in this DEI pool\n\tfunction collatDollarBalance(uint256 collat_usd_price) public view returns (uint256) {\n\t\treturn ((collateral_token.balanceOf(address(this)) - unclaimedPoolCollateral) * (10**missing_decimals) * collat_usd_price) / (PRICE_PRECISION);\n\t}\n\n\t// Returns the value of excess collateral held in this DEI pool, compared to what is needed to maintain the global collateral ratio\n\tfunction availableExcessCollatDV(uint256[] memory collat_usd_price) public view returns (uint256) {\n\t\tuint256 total_supply = IDEIStablecoin(dei_contract_address).totalSupply();\n\t\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\n\t\tuint256 global_collat_value = IDEIStablecoin(dei_contract_address).globalCollateralValue(collat_usd_price);\n\n\t\tif (global_collateral_ratio > COLLATERAL_RATIO_PRECISION)\n\t\t\tglobal_collateral_ratio = COLLATERAL_RATIO_PRECISION; // Handles an overcollateralized contract with CR > 1\n\t\tuint256 required_collat_dollar_value_d18 = (total_supply * global_collateral_ratio) / (COLLATERAL_RATIO_PRECISION); // Calculates collateral needed to back each 1 DEI with $1 of collateral at current collat ratio\n\t\tif (global_collat_value > required_collat_dollar_value_d18)\n\t\t\treturn global_collat_value - required_collat_dollar_value_d18;\n\t\telse return 0;\n\t}\n\n\tfunction getChainID() public view returns (uint256) {\n\t\tuint256 id;\n\t\tassembly {\n\t\t\tid := chainid()\n\t\t}\n\t\treturn id;\n\t}\n\n\t/* ========== PUBLIC FUNCTIONS ========== */\n\n\t// We separate out the 1t1, fractional and algorithmic minting functions for gas efficiency\n\tfunction mint1t1DEI(uint256 collateral_amount, uint256 collateral_price, uint256 expireBlock, bytes[] calldata sigs)\n\t\texternal\n\t\tnotMintPaused\n\t\treturns (uint256 dei_amount_d18)\n\t{\n\n\t\trequire(\n\t\t\tIDEIStablecoin(dei_contract_address).global_collateral_ratio() >= COLLATERAL_RATIO_MAX,\n\t\t\t\"Collateral ratio must be >= 1\"\n\t\t);\n\t\trequire(\n\t\t\tcollateral_token.balanceOf(address(this)) - unclaimedPoolCollateral + collateral_amount <= pool_ceiling,\n\t\t\t\"[Pool's Closed]: Ceiling reached\"\n\t\t);\n\n\t\trequire(expireBlock >= block.number, \"POOL::mint1t1DEI: signature is expired\");\n\t\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, expireBlock, getChainID()));\n\t\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \"POOL::mint1t1DEI: invalid signatures\");\n\n\t\tuint256 collateral_amount_d18 = collateral_amount * (10**missing_decimals);\n\t\tdei_amount_d18 = poolLibrary.calcMint1t1DEI(\n\t\t\tcollateral_price,\n\t\t\tcollateral_amount_d18\n\t\t); //1 DEI for each $1 worth of collateral\n\n\t\tdei_amount_d18 = (dei_amount_d18 * (uint256(1e6) - minting_fee)) / 1e6; //remove precision at the end\n\n\t\tTransferHelper.safeTransferFrom(\n\t\t\taddress(collateral_token),\n\t\t\tmsg.sender,\n\t\t\taddress(this),\n\t\t\tcollateral_amount\n\t\t);\n\n\t\tdaoShare += dei_amount_d18 * minting_fee / 1e6;\n\t\tIDEIStablecoin(dei_contract_address).pool_mint(msg.sender, dei_amount_d18);\n\t}\n\n\t// 0% collateral-backed\n\tfunction mintAlgorithmicDEI(\n\t\tuint256 deus_amount_d18,\n\t\tuint256 deus_current_price,\n\t\tuint256 expireBlock,\n\t\tbytes[] calldata sigs\n\t) external notMintPaused returns (uint256 dei_amount_d18) {\n\t\trequire(\n\t\t\tIDEIStablecoin(dei_contract_address).global_collateral_ratio() == 0,\n\t\t\t\"Collateral ratio must be 0\"\n\t\t);\n\t\trequire(expireBlock >= block.number, \"POOL::mintAlgorithmicDEI: signature is expired.\");\n\t\tbytes32 sighash = keccak256(abi.encodePacked(deus_contract_address, deus_current_price, expireBlock, getChainID()));\n\t\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \"POOL::mintAlgorithmicDEI: invalid signatures\");\n\n\t\tdei_amount_d18 = poolLibrary.calcMintAlgorithmicDEI(\n\t\t\tdeus_current_price, // X DEUS / 1 USD\n\t\t\tdeus_amount_d18\n\t\t);\n\n\t\tdei_amount_d18 = (dei_amount_d18 * (uint256(1e6) - (minting_fee))) / (1e6);\n\t\tdaoShare += dei_amount_d18 * minting_fee / 1e6;\n\n\t\tIDEUSToken(deus_contract_address).pool_burn_from(msg.sender, deus_amount_d18);\n\t\tIDEIStablecoin(dei_contract_address).pool_mint(msg.sender, dei_amount_d18);\n\t}\n\n\t// Will fail if fully collateralized or fully algorithmic\n\t// > 0% and < 100% collateral-backed\n\tfunction mintFractionalDEI(\n\t\tuint256 collateral_amount,\n\t\tuint256 deus_amount,\n\t\tuint256 collateral_price,\n\t\tuint256 deus_current_price,\n\t\tuint256 expireBlock,\n\t\tbytes[] calldata sigs\n\t) external notMintPaused returns (uint256 mint_amount) {\n\t\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\n\t\trequire(\n\t\t\tglobal_collateral_ratio < COLLATERAL_RATIO_MAX && global_collateral_ratio > 0,\n\t\t\t\"Collateral ratio needs to be between .000001 and .999999\"\n\t\t);\n\t\trequire(\n\t\t\tcollateral_token.balanceOf(address(this)) - unclaimedPoolCollateral + collateral_amount <= pool_ceiling,\n\t\t\t\"Pool ceiling reached, no more DEI can be minted with this collateral\"\n\t\t);\n\n\t\trequire(expireBlock >= block.number, \"POOL::mintFractionalDEI: signature is expired.\");\n\t\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, deus_contract_address, deus_current_price, expireBlock, getChainID()));\n\t\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \"POOL::mintFractionalDEI: invalid signatures\");\n\n\t\tDEIPoolLibrary.MintFD_Params memory input_params;\n\n\t\t// Blocking is just for solving stack depth problem\n\t\t{\n\t\t\tuint256 collateral_amount_d18 = collateral_amount * (10**missing_decimals);\n\t\t\tinput_params = DEIPoolLibrary.MintFD_Params(\n\t\t\t\t\t\t\t\t\t\t\tdeus_current_price,\n\t\t\t\t\t\t\t\t\t\t\tcollateral_price,\n\t\t\t\t\t\t\t\t\t\t\tcollateral_amount_d18,\n\t\t\t\t\t\t\t\t\t\t\tglobal_collateral_ratio\n\t\t\t\t\t\t\t\t\t\t);\n\t\t}\t\t\t\t\t\t\n\n\t\tuint256 deus_needed;\n\t\t(mint_amount, deus_needed) = poolLibrary.calcMintFractionalDEI(input_params);\n\t\trequire(deus_needed <= deus_amount, \"Not enough DEUS inputted\");\n\t\t\n\t\tmint_amount = (mint_amount * (uint256(1e6) - minting_fee)) / (1e6);\n\n\t\tIDEUSToken(deus_contract_address).pool_burn_from(msg.sender, deus_needed);\n\t\tTransferHelper.safeTransferFrom(\n\t\t\taddress(collateral_token),\n\t\t\tmsg.sender,\n\t\t\taddress(this),\n\t\t\tcollateral_amount\n\t\t);\n\n\t\tdaoShare += mint_amount * minting_fee / 1e6;\n\t\tIDEIStablecoin(dei_contract_address).pool_mint(msg.sender, mint_amount);\n\t}\n\n\t// Redeem collateral. 100% collateral-backed\n\tfunction redeem1t1DEI(uint256 DEI_amount, uint256 collateral_price, uint256 expireBlock, bytes[] calldata sigs)\n\t\texternal\n\t\tnotRedeemPaused\n\t{\n\t\trequire(\n\t\t\tIDEIStablecoin(dei_contract_address).global_collateral_ratio() == COLLATERAL_RATIO_MAX,\n\t\t\t\"Collateral ratio must be == 1\"\n\t\t);\n\n\t\trequire(expireBlock >= block.number, \"POOL::mintAlgorithmicDEI: signature is expired.\");\n\t\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, expireBlock, getChainID()));\n\t\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \"POOL::redeem1t1DEI: invalid signatures\");\n\n\t\t// Need to adjust for decimals of collateral\n\t\tuint256 DEI_amount_precision = DEI_amount / (10**missing_decimals);\n\t\tuint256 collateral_needed = poolLibrary.calcRedeem1t1DEI(\n\t\t\tcollateral_price,\n\t\t\tDEI_amount_precision\n\t\t);\n\n\t\tcollateral_needed = (collateral_needed * (uint256(1e6) - redemption_fee)) / (1e6);\n\t\trequire(\n\t\t\tcollateral_needed <= collateral_token.balanceOf(address(this)) - unclaimedPoolCollateral,\n\t\t\t\"Not enough collateral in pool\"\n\t\t);\n\n\t\tredeemCollateralBalances[msg.sender] = redeemCollateralBalances[msg.sender] + collateral_needed;\n\t\tunclaimedPoolCollateral = unclaimedPoolCollateral + collateral_needed;\n\t\tlastRedeemed[msg.sender] = block.number;\n\n\t\tdaoShare += DEI_amount * redemption_fee / 1e6;\n\t\t// Move all external functions to the end\n\t\tIDEIStablecoin(dei_contract_address).pool_burn_from(msg.sender, DEI_amount);\n\t}\n\n\t// Will fail if fully collateralized or algorithmic\n\t// Redeem DEI for collateral and DEUS. > 0% and < 100% collateral-backed\n\tfunction redeemFractionalDEI(\n\t\tuint256 DEI_amount,\n\t\tuint256 collateral_price, \n\t\tuint256 deus_current_price,\n\t\tuint256 expireBlock,\n\t\tbytes[] calldata sigs\n\t) external notRedeemPaused {\n\t\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\n\t\trequire(\n\t\t\tglobal_collateral_ratio < COLLATERAL_RATIO_MAX && global_collateral_ratio > 0,\n\t\t\t\"POOL::redeemFractionalDEI: Collateral ratio needs to be between .000001 and .999999\"\n\t\t);\n\n\t\trequire(expireBlock >= block.number, \"DEI::redeemFractionalDEI: signature is expired\");\n\t\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, deus_contract_address, deus_current_price, expireBlock, getChainID()));\n\t\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \"POOL::redeemFractionalDEI: invalid signatures\");\n\n\t\t// Blocking is just for solving stack depth problem\n\t\tuint256 deus_amount;\n\t\tuint256 collateral_amount;\n\t\t{\n\t\t\tuint256 col_price_usd = collateral_price;\n\n\t\t\tuint256 DEI_amount_post_fee = (DEI_amount * (uint256(1e6) - redemption_fee)) / (PRICE_PRECISION);\n\n\t\t\tuint256 deus_dollar_value_d18 = DEI_amount_post_fee - ((DEI_amount_post_fee * global_collateral_ratio) / (PRICE_PRECISION));\n\t\t\tdeus_amount = deus_dollar_value_d18 * (PRICE_PRECISION) / (deus_current_price);\n\n\t\t\t// Need to adjust for decimals of collateral\n\t\t\tuint256 DEI_amount_precision = DEI_amount_post_fee / (10**missing_decimals);\n\t\t\tuint256 collateral_dollar_value = (DEI_amount_precision * global_collateral_ratio) / PRICE_PRECISION;\n\t\t\tcollateral_amount = (collateral_dollar_value * PRICE_PRECISION) / (col_price_usd);\n\t\t}\n\t\trequire(\n\t\t\tcollateral_amount <= collateral_token.balanceOf(address(this)) - unclaimedPoolCollateral,\n\t\t\t\"Not enough collateral in pool\"\n\t\t);\n\n\t\tredeemCollateralBalances[msg.sender] = redeemCollateralBalances[msg.sender] + collateral_amount;\n\t\tunclaimedPoolCollateral = unclaimedPoolCollateral + collateral_amount;\n\n\t\tredeemDEUSBalances[msg.sender] = redeemDEUSBalances[msg.sender] + deus_amount;\n\t\tunclaimedPoolDEUS = unclaimedPoolDEUS + deus_amount;\n\n\t\tlastRedeemed[msg.sender] = block.number;\n\n\t\tdaoShare += DEI_amount * redemption_fee / 1e6;\n\t\t// Move all external functions to the end\n\t\tIDEIStablecoin(dei_contract_address).pool_burn_from(msg.sender, DEI_amount);\n\t\tIDEUSToken(deus_contract_address).pool_mint(address(this), deus_amount);\n\t}\n\n\t// Redeem DEI for DEUS. 0% collateral-backed\n\tfunction redeemAlgorithmicDEI(\n\t\tuint256 DEI_amount,\n\t\tuint256 deus_current_price,\n\t\tuint256 expireBlock,\n\t\tbytes[] calldata sigs\n\t) external notRedeemPaused {\n\t\trequire(IDEIStablecoin(dei_contract_address).global_collateral_ratio() == 0, \"POOL::redeemAlgorithmicDEI: Collateral ratio must be 0\");\n\n\t\trequire(expireBlock >= block.number, \"DEI::redeemAlgorithmicDEI: signature is expired.\");\n\t\tbytes32 sighash = keccak256(abi.encodePacked(deus_contract_address, deus_current_price, expireBlock, getChainID()));\n\t\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \"POOL::redeemAlgorithmicDEI: invalid signatures\");\n\n\t\tuint256 deus_dollar_value_d18 = DEI_amount;\n\n\t\tdeus_dollar_value_d18 = (deus_dollar_value_d18 * (uint256(1e6) - redemption_fee)) / 1e6; //apply fees\n\n\t\tuint256 deus_amount = (deus_dollar_value_d18 * (PRICE_PRECISION)) / deus_current_price;\n\n\t\tredeemDEUSBalances[msg.sender] = redeemDEUSBalances[msg.sender] + deus_amount;\n\t\tunclaimedPoolDEUS = unclaimedPoolDEUS + deus_amount;\n\n\t\tlastRedeemed[msg.sender] = block.number;\n\n\t\tdaoShare += DEI_amount * redemption_fee / 1e6;\n\t\t// Move all external functions to the end\n\t\tIDEIStablecoin(dei_contract_address).pool_burn_from(msg.sender, DEI_amount);\n\t\tIDEUSToken(deus_contract_address).pool_mint(address(this), deus_amount);\n\t}\n\n\t// After a redemption happens, transfer the newly minted DEUS and owed collateral from this pool\n\t// contract to the user. Redemption is split into two functions to prevent flash loans from being able\n\t// to take out DEI/collateral from the system, use an AMM to trade the new price, and then mint back into the system.\n\tfunction collectRedemption() external {\n\t\trequire(\n\t\t\t(lastRedeemed[msg.sender] + redemption_delay) <= block.number,\n\t\t\t\"POOL::collectRedemption: Must wait for redemption_delay blocks before collecting redemption\"\n\t\t);\n\t\tbool sendDEUS = false;\n\t\tbool sendCollateral = false;\n\t\tuint256 DEUSAmount = 0;\n\t\tuint256 CollateralAmount = 0;\n\n\t\t// Use Checks-Effects-Interactions pattern\n\t\tif (redeemDEUSBalances[msg.sender] > 0) {\n\t\t\tDEUSAmount = redeemDEUSBalances[msg.sender];\n\t\t\tredeemDEUSBalances[msg.sender] = 0;\n\t\t\tunclaimedPoolDEUS = unclaimedPoolDEUS - DEUSAmount;\n\n\t\t\tsendDEUS = true;\n\t\t}\n\n\t\tif (redeemCollateralBalances[msg.sender] > 0) {\n\t\t\tCollateralAmount = redeemCollateralBalances[msg.sender];\n\t\t\tredeemCollateralBalances[msg.sender] = 0;\n\t\t\tunclaimedPoolCollateral = unclaimedPoolCollateral - CollateralAmount;\n\t\t\tsendCollateral = true;\n\t\t}\n\n\t\tif (sendDEUS) {\n\t\t\tTransferHelper.safeTransfer(address(deus_contract_address), msg.sender, DEUSAmount);\n\t\t}\n\t\tif (sendCollateral) {\n\t\t\tTransferHelper.safeTransfer(\n\t\t\t\taddress(collateral_token),\n\t\t\t\tmsg.sender,\n\t\t\t\tCollateralAmount\n\t\t\t);\n\t\t}\n\t}\n\n\t// When the protocol is recollateralizing, we need to give a discount of DEUS to hit the new CR target\n\t// Thus, if the target collateral ratio is higher than the actual value of collateral, minters get DEUS for adding collateral\n\t// This function simply rewards anyone that sends collateral to a pool with the same amount of DEUS + the bonus rate\n\t// Anyone can call this function to recollateralize the protocol and take the extra DEUS value from the bonus rate as an arb opportunity\n\tfunction recollateralizeDEI(RecollateralizeDEI memory inputs) external {\n\t\trequire(recollateralizePaused == false, \"POOL::recollateralizeDEI: Recollateralize is paused\");\n\n\t\trequire(inputs.expireBlock >= block.number, \"POOL::recollateralizeDEI: signature is expired.\");\n\t\tbytes32 sighash = keccak256(abi.encodePacked(\n\t\t\t\t\t\t\t\t\t\tcollateral_address, \n\t\t\t\t\t\t\t\t\t\tinputs.collateral_price,\n\t\t\t\t\t\t\t\t\t\tdeus_contract_address, \n\t\t\t\t\t\t\t\t\t\tinputs.deus_current_price, \n\t\t\t\t\t\t\t\t\t\tinputs.expireBlock,\n\t\t\t\t\t\t\t\t\t\tgetChainID()\n\t\t\t\t\t\t\t\t\t));\n\t\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, inputs.sigs), \"POOL::recollateralizeDEI: invalid signatures\");\n\n\t\tuint256 collateral_amount_d18 = inputs.collateral_amount * (10**missing_decimals);\n\n\t\tuint256 dei_total_supply = IDEIStablecoin(dei_contract_address).totalSupply();\n\t\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\n\t\tuint256 global_collat_value = IDEIStablecoin(dei_contract_address).globalCollateralValue(inputs.collateral_price);\n\n\t\t(uint256 collateral_units, uint256 amount_to_recollat) = poolLibrary.calcRecollateralizeDEIInner(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcollateral_amount_d18,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tinputs.collateral_price[inputs.collateral_price.length - 1], // pool collateral price exist in last index\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tglobal_collat_value,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdei_total_supply,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tglobal_collateral_ratio\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\tuint256 collateral_units_precision = collateral_units / (10**missing_decimals);\n\n\t\tuint256 deus_paid_back = (amount_to_recollat * (uint256(1e6) + bonus_rate - recollat_fee)) / inputs.deus_current_price;\n\n\t\tTransferHelper.safeTransferFrom(\n\t\t\taddress(collateral_token),\n\t\t\tmsg.sender,\n\t\t\taddress(this),\n\t\t\tcollateral_units_precision\n\t\t);\n\t\tIDEUSToken(deus_contract_address).pool_mint(msg.sender, deus_paid_back);\n\t}\n\n\t// Function can be called by an DEUS holder to have the protocol buy back DEUS with excess collateral value from a desired collateral pool\n\t// This can also happen if the collateral ratio > 1\n\tfunction buyBackDEUS(\n\t\tuint256 DEUS_amount,\n\t\tuint256[] memory collateral_price,\n\t\tuint256 deus_current_price,\n\t\tuint256 expireBlock,\n\t\tbytes[] calldata sigs\n\t) external {\n\t\trequire(buyBackPaused == false, \"POOL::buyBackDEUS: Buyback is paused\");\n\t\trequire(expireBlock >= block.number, \"DEI::buyBackDEUS: signature is expired.\");\n\t\tbytes32 sighash = keccak256(abi.encodePacked(\n\t\t\t\t\t\t\t\t\t\tcollateral_address,\n\t\t\t\t\t\t\t\t\t\tcollateral_price,\n\t\t\t\t\t\t\t\t\t\tdeus_contract_address,\n\t\t\t\t\t\t\t\t\t\tdeus_current_price,\n\t\t\t\t\t\t\t\t\t\texpireBlock,\n\t\t\t\t\t\t\t\t\t\tgetChainID()));\n\t\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \"POOL::buyBackDEUS: invalid signatures\");\n\n\t\tDEIPoolLibrary.BuybackDEUS_Params memory input_params = DEIPoolLibrary.BuybackDEUS_Params(\n\t\t\t\t\t\t\t\t\t\t\t\t\tavailableExcessCollatDV(collateral_price),\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeus_current_price,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcollateral_price[collateral_price.length - 1], // pool collateral price exist in last index\n\t\t\t\t\t\t\t\t\t\t\t\t\tDEUS_amount\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\tuint256 collateral_equivalent_d18 = (poolLibrary.calcBuyBackDEUS(input_params) * (uint256(1e6) - buyback_fee)) / (1e6);\n\t\tuint256 collateral_precision = collateral_equivalent_d18 / (10**missing_decimals);\n\n\t\t// Give the sender their desired collateral and burn the DEUS\n\t\tIDEUSToken(deus_contract_address).pool_burn_from(msg.sender, DEUS_amount);\n\t\tTransferHelper.safeTransfer(\n\t\t\taddress(collateral_token),\n\t\t\tmsg.sender,\n\t\t\tcollateral_precision\n\t\t);\n\t}\n\n\t/* ========== RESTRICTED FUNCTIONS ========== */\n\n\tfunction collectDaoShare(uint256 amount, address to) external {\n\t\trequire(hasRole(DAO_SHARE_COLLECTOR, msg.sender));\n\t\trequire(amount <= daoShare, \"amount<=daoShare\");\n\t\tIDEIStablecoin(dei_contract_address).pool_mint(to, amount);\n\t\tdaoShare -= amount;\n\n\t\temit daoShareCollected(amount, to);\n\t}\n\n\tfunction emergencyWithdrawERC20(address token, uint amount, address to) external onlyTrusty {\n\t\tIERC20(token).transfer(to, amount);\n\t}\n\n\tfunction toggleMinting() external {\n\t\trequire(hasRole(MINT_PAUSER, msg.sender));\n\t\tmintPaused = !mintPaused;\n\n\t\temit MintingToggled(mintPaused);\n\t}\n\n\tfunction toggleRedeeming() external {\n\t\trequire(hasRole(REDEEM_PAUSER, msg.sender));\n\t\tredeemPaused = !redeemPaused;\n\n\t\temit RedeemingToggled(redeemPaused);\n\t}\n\n\tfunction toggleRecollateralize() external {\n\t\trequire(hasRole(RECOLLATERALIZE_PAUSER, msg.sender));\n\t\trecollateralizePaused = !recollateralizePaused;\n\n\t\temit RecollateralizeToggled(recollateralizePaused);\n\t}\n\n\tfunction toggleBuyBack() external {\n\t\trequire(hasRole(BUYBACK_PAUSER, msg.sender));\n\t\tbuyBackPaused = !buyBackPaused;\n\n\t\temit BuybackToggled(buyBackPaused);\n\t}\n\n\t// Combined into one function due to 24KiB contract memory limit\n\tfunction setPoolParameters(\n\t\tuint256 new_ceiling,\n\t\tuint256 new_bonus_rate,\n\t\tuint256 new_redemption_delay,\n\t\tuint256 new_mint_fee,\n\t\tuint256 new_redeem_fee,\n\t\tuint256 new_buyback_fee,\n\t\tuint256 new_recollat_fee\n\t) external {\n\t\trequire(hasRole(PARAMETER_SETTER_ROLE, msg.sender), \"POOL: Caller is not PARAMETER_SETTER_ROLE\");\n\t\tpool_ceiling = new_ceiling;\n\t\tbonus_rate = new_bonus_rate;\n\t\tredemption_delay = new_redemption_delay;\n\t\tminting_fee = new_mint_fee;\n\t\tredemption_fee = new_redeem_fee;\n\t\tbuyback_fee = new_buyback_fee;\n\t\trecollat_fee = new_recollat_fee;\n\n\t\temit PoolParametersSet(\n\t\t\tnew_ceiling,\n\t\t\tnew_bonus_rate,\n\t\t\tnew_redemption_delay,\n\t\t\tnew_mint_fee,\n\t\t\tnew_redeem_fee,\n\t\t\tnew_buyback_fee,\n\t\t\tnew_recollat_fee\n\t\t);\n\t}\n\n\t/* ========== EVENTS ========== */\n\n\tevent PoolParametersSet(\n\t\tuint256 new_ceiling,\n\t\tuint256 new_bonus_rate,\n\t\tuint256 new_redemption_delay,\n\t\tuint256 new_mint_fee,\n\t\tuint256 new_redeem_fee,\n\t\tuint256 new_buyback_fee,\n\t\tuint256 new_recollat_fee\n\t);\n\tevent daoShareCollected(uint256 daoShare, address to);\n\tevent MintingToggled(bool toggled);\n\tevent RedeemingToggled(bool toggled);\n\tevent RecollateralizeToggled(bool toggled);\n\tevent BuybackToggled(bool toggled);\n}\n\n//Dar panah khoda" + }, + "contracts/Oracle/Oracle.sol": { + "content": "// Be name Khoda\n// Bime Abolfazl\n\npragma solidity >=0.6.12;\n\nimport \"../Governance/AccessControl.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\";\n\ncontract Oracle is AccessControl {\n\tusing ECDSA for bytes32;\n\n\t// role\n\tbytes32 public constant ORACLE_ROLE = keccak256(\"ORACLE_ROLE\");\n\tbytes32 public constant TRUSTY_ROLE = keccak256(\"TRUSTY_ROLE\");\n\n\tuint256 minimumRequiredSignature;\n\n\tevent MinimumRequiredSignatureSet(uint256 minimumRequiredSignature);\n\n\tconstructor(address _admin, uint256 _minimumRequiredSignature, address _trusty_address) {\n\t\trequire(_admin != address(0), \"ORACLE::constructor: Zero address detected\");\n\t\t_setupRole(DEFAULT_ADMIN_ROLE, _admin);\n\t\t_setupRole(TRUSTY_ROLE, _trusty_address);\n\t\tminimumRequiredSignature = _minimumRequiredSignature;\n\t}\n\n\tfunction verify(bytes32 hash, bytes[] calldata sigs)\n\t\tpublic\n\t\tview\n\t\treturns (bool)\n\t{\n\t\taddress lastOracle;\n\t\tfor (uint256 index = 0; index < minimumRequiredSignature; ++index) {\n\t\t\taddress oracle = hash.recover(sigs[index]);\n\t\t\trequire(hasRole(ORACLE_ROLE, oracle), \"ORACLE::verify: Signer is not valid\");\n\t\t\trequire(oracle > lastOracle, \"ORACLE::verify: Signers are same\");\n\t\t\tlastOracle = oracle;\n\t\t}\n\t\treturn true;\n\t}\n\n\tfunction setMinimumRequiredSignature(uint256 _minimumRequiredSignature)\n\t\tpublic\n\t{\n\t\trequire(\n\t\t\thasRole(TRUSTY_ROLE, msg.sender),\n\t\t\t\"ORACLE::setMinimumRequiredSignature: You are not trusty\"\n\t\t);\n\t\tminimumRequiredSignature = _minimumRequiredSignature;\n\n\t\temit MinimumRequiredSignatureSet(_minimumRequiredSignature);\n\t}\n}\n\n//Dar panah khoda" + }, + "contracts/Uniswap/TransferHelper.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\n// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false\nlibrary TransferHelper {\n function safeApprove(address token, address to, uint value) internal {\n // bytes4(keccak256(bytes('approve(address,uint256)')));\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');\n }\n\n function safeTransfer(address token, address to, uint value) internal {\n // bytes4(keccak256(bytes('transfer(address,uint256)')));\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');\n }\n\n function safeTransferFrom(address token, address from, address to, uint value) internal {\n // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');\n }\n\n function safeTransferETH(address to, uint value) internal {\n (bool success,) = to.call{value:value}(new bytes(0));\n require(success, 'TransferHelper: ETH_TRANSFER_FAILED');\n }\n}" + }, + "contracts/DEUS/IDEUS.sol": { + "content": "// Be name Khoda\n// Bime Abolfazl\n\n// SPDX-License-Identifier: GPL-2.0-or-later\n\ninterface IDEUSToken {\n function name() external view returns (string memory);\n function symbol() external view returns (string memory);\n function pool_burn_from(address b_address, uint256 b_amount) external;\n function pool_mint(address m_address, uint256 m_amount) external;\n function mint(address to, uint256 amount) external;\n function setDEIAddress(address dei_contract_address) external;\n function setNameAndSymbol(string memory _name, string memory _symbol) external;\n}\n\n//Dar panah khoda" + }, + "contracts/ERC20/ERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\nimport \"../Common/Context.sol\";\nimport \"./IERC20.sol\";\nimport \"../Math/SafeMath.sol\";\nimport \"../Utils/Address.sol\";\n\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20Mintable}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin guidelines: functions revert instead\n * of returning `false` on failure. This behavior is nonetheless conventional\n * and does not conflict with the expectations of ERC20 applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\n \ncontract ERC20 is Context, IERC20 {\n using SafeMath for uint256;\n\n mapping (address => uint256) private _balances;\n\n mapping (address => mapping (address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n uint8 private _decimals;\n \n /**\n * @dev Sets the values for {name} and {symbol}, initializes {decimals} with\n * a default value of 18.\n *\n * To select a different value for {decimals}, use {_setupDecimals}.\n *\n * All three of these values are immutable: they can only be set once during\n * construction.\n */\n constructor (string memory __name, string memory __symbol) public {\n _name = __name;\n _symbol = __symbol;\n _decimals = 18;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n * called.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view returns (uint8) {\n return _decimals;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `recipient` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\n _transfer(_msgSender(), recipient, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.approve(address spender, uint256 amount)\n */\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\n _approve(_msgSender(), spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20};\n *\n * Requirements:\n * - `sender` and `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n * - the caller must have allowance for `sender`'s tokens of at least\n * `amount`.\n */\n function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {\n _transfer(sender, recipient, amount);\n _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \"ERC20: transfer amount exceeds allowance\"));\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \"ERC20: decreased allowance below zero\"));\n return true;\n }\n\n /**\n * @dev Moves tokens `amount` from `sender` to `recipient`.\n *\n * This is internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `sender` cannot be the zero address.\n * - `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n */\n function _transfer(address sender, address recipient, uint256 amount) internal virtual {\n require(sender != address(0), \"ERC20: transfer from the zero address\");\n require(recipient != address(0), \"ERC20: transfer to the zero address\");\n\n _beforeTokenTransfer(sender, recipient, amount);\n\n _balances[sender] = _balances[sender].sub(amount, \"ERC20: transfer amount exceeds balance\");\n _balances[recipient] = _balances[recipient].add(amount);\n emit Transfer(sender, recipient, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements\n *\n * - `to` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _beforeTokenTransfer(address(0), account, amount);\n\n _totalSupply = _totalSupply.add(amount);\n _balances[account] = _balances[account].add(amount);\n emit Transfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from the caller.\n *\n * See {ERC20-_burn}.\n */\n function burn(uint256 amount) public virtual {\n _burn(_msgSender(), amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, deducting from the caller's\n * allowance.\n *\n * See {ERC20-_burn} and {ERC20-allowance}.\n *\n * Requirements:\n *\n * - the caller must have allowance for `accounts`'s tokens of at least\n * `amount`.\n */\n function burnFrom(address account, uint256 amount) public virtual {\n uint256 decreasedAllowance = allowance(account, _msgSender()).sub(amount, \"ERC20: burn amount exceeds allowance\");\n\n _approve(account, _msgSender(), decreasedAllowance);\n _burn(account, amount);\n }\n\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _beforeTokenTransfer(account, address(0), amount);\n\n _balances[account] = _balances[account].sub(amount, \"ERC20: burn amount exceeds balance\");\n _totalSupply = _totalSupply.sub(amount);\n emit Transfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n *\n * This is internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(address owner, address spender, uint256 amount) internal virtual {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`.`amount` is then deducted\n * from the caller's allowance.\n *\n * See {_burn} and {_approve}.\n */\n function _burnFrom(address account, uint256 amount) internal virtual {\n _burn(account, amount);\n _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, \"ERC20: burn amount exceeds allowance\"));\n }\n\n /**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of `from`'s tokens\n * will be to transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of `from`'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:using-hooks.adoc[Using Hooks].\n */\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }\n}\n" + }, + "contracts/DEI/Pools/DEIPoolLibrary.sol": { + "content": "// Be name Khoda\n// Bime Abolfazl\n\n// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.8.0;\n\ncontract DEIPoolLibrary {\n\n // Constants for various precisions\n uint256 private constant PRICE_PRECISION = 1e6;\n\n constructor() {}\n\n // ================ Structs ================\n // Needed to lower stack size\n struct MintFD_Params {\n uint256 deus_price_usd; \n uint256 col_price_usd;\n uint256 collateral_amount;\n uint256 col_ratio;\n }\n\n struct BuybackDEUS_Params {\n uint256 excess_collateral_dollar_value_d18;\n uint256 deus_price_usd;\n uint256 col_price_usd;\n uint256 DEUS_amount;\n }\n\n // ================ Functions ================\n\n function calcMint1t1DEI(uint256 col_price, uint256 collateral_amount_d18) public pure returns (uint256) {\n return (collateral_amount_d18 * col_price) / (1e6);\n }\n\n function calcMintAlgorithmicDEI(uint256 deus_price_usd, uint256 deus_amount_d18) public pure returns (uint256) {\n return (deus_amount_d18 * deus_price_usd) / (1e6);\n }\n\n function calcMintFractionalDEI(MintFD_Params memory params) public pure returns (uint256, uint256) {\n // Since solidity truncates division, every division operation must be the last operation in the equation to ensure minimum error\n // The contract must check the proper ratio was sent to mint DEI. We do this by seeing the minimum mintable DEI based on each amount \n uint256 c_dollar_value_d18;\n \n // Scoping for stack concerns\n { \n // USD amounts of the collateral and the DEUS\n c_dollar_value_d18 = (params.collateral_amount * params.col_price_usd) / (1e6);\n\n }\n uint calculated_deus_dollar_value_d18 = ((c_dollar_value_d18 * (1e6)) / params.col_ratio) - c_dollar_value_d18;\n\n uint calculated_deus_needed = (calculated_deus_dollar_value_d18 * (1e6)) / params.deus_price_usd;\n\n return (\n c_dollar_value_d18 + calculated_deus_dollar_value_d18,\n calculated_deus_needed\n );\n }\n\n function calcRedeem1t1DEI(uint256 col_price_usd, uint256 DEI_amount) public pure returns (uint256) {\n return (DEI_amount * (1e6)) / col_price_usd;\n }\n\n function calcBuyBackDEUS(BuybackDEUS_Params memory params) public pure returns (uint256) {\n // If the total collateral value is higher than the amount required at the current collateral ratio then buy back up to the possible DEUS with the desired collateral\n require(params.excess_collateral_dollar_value_d18 > 0, \"No excess collateral to buy back!\");\n\n // Make sure not to take more than is available\n uint256 deus_dollar_value_d18 = (params.DEUS_amount * (params.deus_price_usd)) / (1e6);\n require(deus_dollar_value_d18 <= params.excess_collateral_dollar_value_d18, \"You are trying to buy back more than the excess!\");\n\n // Get the equivalent amount of collateral based on the market value of DEUS provided \n uint256 collateral_equivalent_d18 = (deus_dollar_value_d18 * (1e6)) / params.col_price_usd;\n //collateral_equivalent_d18 = collateral_equivalent_d18.sub((collateral_equivalent_d18.mul(params.buyback_fee)).div(1e6));\n\n return collateral_equivalent_d18;\n\n }\n\n\n // Returns value of collateral that must increase to reach recollateralization target (if 0 means no recollateralization)\n function recollateralizeAmount(uint256 total_supply, uint256 global_collateral_ratio, uint256 global_collat_value) public pure returns (uint256) {\n uint256 target_collat_value = (total_supply * global_collateral_ratio) / (1e6); // We want 18 decimals of precision so divide by 1e6; total_supply is 1e18 and global_collateral_ratio is 1e6\n // Subtract the current value of collateral from the target value needed, if higher than 0 then system needs to recollateralize\n return target_collat_value - global_collat_value; // If recollateralization is not needed, throws a subtraction underflow\n }\n\n function calcRecollateralizeDEIInner(\n uint256 collateral_amount, \n uint256 col_price,\n uint256 global_collat_value,\n uint256 dei_total_supply,\n uint256 global_collateral_ratio\n ) public pure returns (uint256, uint256) {\n uint256 collat_value_attempted = (collateral_amount * col_price) / (1e6);\n uint256 effective_collateral_ratio = (global_collat_value * (1e6)) / dei_total_supply; //returns it in 1e6\n uint256 recollat_possible = (global_collateral_ratio * dei_total_supply - (dei_total_supply * effective_collateral_ratio)) / (1e6);\n\n uint256 amount_to_recollat;\n if(collat_value_attempted <= recollat_possible){\n amount_to_recollat = collat_value_attempted;\n } else {\n amount_to_recollat = recollat_possible;\n }\n\n return ((amount_to_recollat * (1e6)) / col_price, amount_to_recollat);\n\n }\n\n}\n\n//Dar panah khoda" + }, + "contracts/DEI/Pools/Pool_USDC.sol": { + "content": "// Be name Khoda\n// Bime Abolfazl\n\n// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.6.11;\n\nimport \"./DEIPool.sol\";\n\ncontract Pool_USDC is DEIPool {\n address public USDC_address;\n constructor(\n address _dei_contract_address,\n address _deus_contract_address,\n address _collateral_address,\n address _trusty_address,\n address _admin_address,\n uint256 _pool_ceiling,\n address _library\n ) \n DEIPool(_dei_contract_address, _deus_contract_address, _collateral_address, _trusty_address, _admin_address, _pool_ceiling, _library)\n public {\n require(_collateral_address != address(0), \"Zero address detected\");\n\n _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());\n USDC_address = _collateral_address;\n }\n}\n\n//Dar panah khoda" + }, + "contracts/DEI/Pools/Pool_HUSD.sol": { + "content": "// Be name Khoda\n// Bime Abolfazl\n\n// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.6.11;\n\nimport \"./DEIPool.sol\";\n\ncontract Pool_HUSD is DEIPool {\n address public HUSD_address;\n constructor(\n address _dei_contract_address,\n address _deus_contract_address,\n address _collateral_address,\n address _trusty_address,\n address _admin_address,\n uint256 _pool_ceiling,\n address _library\n ) \n DEIPool(_dei_contract_address, _deus_contract_address, _collateral_address, _trusty_address, _admin_address, _pool_ceiling, _library)\n public {\n require(_collateral_address != address(0), \"Zero address detected\");\n\n _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());\n HUSD_address = _collateral_address;\n }\n}\n\n//Dar panah khoda" + }, + "contracts/DEI/Pools/Pool_DAI.sol": { + "content": "// Be name Khoda\n// Bime Abolfazl\n\n// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.6.11;\n\nimport \"./DEIPool.sol\";\n\ncontract Pool_DAI is DEIPool {\n address public DAI_address;\n constructor(\n address _dei_contract_address,\n address _deus_contract_address,\n address _collateral_address,\n address _trusty_address,\n address _admin_address,\n uint256 _pool_ceiling,\n address _library\n ) \n DEIPool(_dei_contract_address, _deus_contract_address, _collateral_address, _trusty_address, _admin_address, _pool_ceiling, _library)\n public {\n require(_collateral_address != address(0), \"Zero address detected\");\n\n _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());\n DAI_address = _collateral_address;\n }\n}\n\n//Dar panah khoda" + }, + "contracts/Uniswap/UniswapV2Factory.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\nimport './Interfaces/IUniswapV2Factory.sol';\nimport './UniswapV2Pair.sol';\n\ncontract UniswapV2Factory is IUniswapV2Factory {\n address public override feeTo;\n address public override feeToSetter;\n\n mapping(address => mapping(address => address)) public override getPair;\n address[] public override allPairs;\n\n // event PairCreated(address indexed token0, address indexed token1, address pair, uint);\n\n constructor(address _feeToSetter) public {\n feeToSetter = _feeToSetter;\n }\n\n function allPairsLength() external override view returns (uint) {\n return allPairs.length;\n }\n\n function createPair(address tokenA, address tokenB) external override returns (address pair) {\n require(tokenA != tokenB, 'UniswapV2: IDENTICAL_ADDRESSES');\n (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);\n require(token0 != address(0), 'UniswapV2: ZERO_ADDRESS');\n require(getPair[token0][token1] == address(0), 'UniswapV2: PAIR_EXISTS'); // single check is sufficient\n bytes memory bytecode = type(UniswapV2Pair).creationCode;\n bytes32 salt = keccak256(abi.encodePacked(token0, token1));\n\n // This creates a new contract\n assembly {\n pair := create2(0, add(bytecode, 32), mload(bytecode), salt)\n }\n IUniswapV2Pair(pair).initialize(token0, token1);\n getPair[token0][token1] = pair;\n getPair[token1][token0] = pair; // populate mapping in the reverse direction\n allPairs.push(pair);\n emit PairCreated(token0, token1, pair, allPairs.length);\n }\n\n function setFeeTo(address _feeTo) external override {\n require(msg.sender == feeToSetter, 'UniswapV2: FORBIDDEN');\n feeTo = _feeTo;\n }\n\n function setFeeToSetter(address _feeToSetter) external override {\n require(msg.sender == feeToSetter, 'UniswapV2: FORBIDDEN');\n feeToSetter = _feeToSetter;\n }\n}\n" + }, + "contracts/Math/SafeDecimalMath.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\n// Libraries\nimport './SafeMath.sol';\n\n\n// https://docs.synthetix.io/contracts/source/libraries/safedecimalmath\nlibrary SafeDecimalMath {\n using SafeMath for uint;\n\n /* Number of decimal places in the representations. */\n uint8 public constant decimals = 18;\n uint8 public constant highPrecisionDecimals = 27;\n\n /* The number representing 1.0. */\n uint public constant UNIT = 10**uint(decimals);\n\n /* The number representing 1.0 for higher fidelity numbers. */\n uint public constant PRECISE_UNIT = 10**uint(highPrecisionDecimals);\n uint private constant UNIT_TO_HIGH_PRECISION_CONVERSION_FACTOR = 10**uint(highPrecisionDecimals - decimals);\n\n /**\n * @return Provides an interface to UNIT.\n */\n function unit() external pure returns (uint) {\n return UNIT;\n }\n\n /**\n * @return Provides an interface to PRECISE_UNIT.\n */\n function preciseUnit() external pure returns (uint) {\n return PRECISE_UNIT;\n }\n\n /**\n * @return The result of multiplying x and y, interpreting the operands as fixed-point\n * decimals.\n *\n * @dev A unit factor is divided out after the product of x and y is evaluated,\n * so that product must be less than 2**256. As this is an integer division,\n * the internal division always rounds down. This helps save on gas. Rounding\n * is more expensive on gas.\n */\n function multiplyDecimal(uint x, uint y) internal pure returns (uint) {\n /* Divide by UNIT to remove the extra factor introduced by the product. */\n return x.mul(y) / UNIT;\n }\n\n /**\n * @return The result of safely multiplying x and y, interpreting the operands\n * as fixed-point decimals of the specified precision unit.\n *\n * @dev The operands should be in the form of a the specified unit factor which will be\n * divided out after the product of x and y is evaluated, so that product must be\n * less than 2**256.\n *\n * Unlike multiplyDecimal, this function rounds the result to the nearest increment.\n * Rounding is useful when you need to retain fidelity for small decimal numbers\n * (eg. small fractions or percentages).\n */\n function _multiplyDecimalRound(\n uint x,\n uint y,\n uint precisionUnit\n ) private pure returns (uint) {\n /* Divide by UNIT to remove the extra factor introduced by the product. */\n uint quotientTimesTen = x.mul(y) / (precisionUnit / 10);\n\n if (quotientTimesTen % 10 >= 5) {\n quotientTimesTen += 10;\n }\n\n return quotientTimesTen / 10;\n }\n\n /**\n * @return The result of safely multiplying x and y, interpreting the operands\n * as fixed-point decimals of a precise unit.\n *\n * @dev The operands should be in the precise unit factor which will be\n * divided out after the product of x and y is evaluated, so that product must be\n * less than 2**256.\n *\n * Unlike multiplyDecimal, this function rounds the result to the nearest increment.\n * Rounding is useful when you need to retain fidelity for small decimal numbers\n * (eg. small fractions or percentages).\n */\n function multiplyDecimalRoundPrecise(uint x, uint y) internal pure returns (uint) {\n return _multiplyDecimalRound(x, y, PRECISE_UNIT);\n }\n\n /**\n * @return The result of safely multiplying x and y, interpreting the operands\n * as fixed-point decimals of a standard unit.\n *\n * @dev The operands should be in the standard unit factor which will be\n * divided out after the product of x and y is evaluated, so that product must be\n * less than 2**256.\n *\n * Unlike multiplyDecimal, this function rounds the result to the nearest increment.\n * Rounding is useful when you need to retain fidelity for small decimal numbers\n * (eg. small fractions or percentages).\n */\n function multiplyDecimalRound(uint x, uint y) internal pure returns (uint) {\n return _multiplyDecimalRound(x, y, UNIT);\n }\n\n /**\n * @return The result of safely dividing x and y. The return value is a high\n * precision decimal.\n *\n * @dev y is divided after the product of x and the standard precision unit\n * is evaluated, so the product of x and UNIT must be less than 2**256. As\n * this is an integer division, the result is always rounded down.\n * This helps save on gas. Rounding is more expensive on gas.\n */\n function divideDecimal(uint x, uint y) internal pure returns (uint) {\n /* Reintroduce the UNIT factor that will be divided out by y. */\n return x.mul(UNIT).div(y);\n }\n\n /**\n * @return The result of safely dividing x and y. The return value is as a rounded\n * decimal in the precision unit specified in the parameter.\n *\n * @dev y is divided after the product of x and the specified precision unit\n * is evaluated, so the product of x and the specified precision unit must\n * be less than 2**256. The result is rounded to the nearest increment.\n */\n function _divideDecimalRound(\n uint x,\n uint y,\n uint precisionUnit\n ) private pure returns (uint) {\n uint resultTimesTen = x.mul(precisionUnit * 10).div(y);\n\n if (resultTimesTen % 10 >= 5) {\n resultTimesTen += 10;\n }\n\n return resultTimesTen / 10;\n }\n\n /**\n * @return The result of safely dividing x and y. The return value is as a rounded\n * standard precision decimal.\n *\n * @dev y is divided after the product of x and the standard precision unit\n * is evaluated, so the product of x and the standard precision unit must\n * be less than 2**256. The result is rounded to the nearest increment.\n */\n function divideDecimalRound(uint x, uint y) internal pure returns (uint) {\n return _divideDecimalRound(x, y, UNIT);\n }\n\n /**\n * @return The result of safely dividing x and y. The return value is as a rounded\n * high precision decimal.\n *\n * @dev y is divided after the product of x and the high precision unit\n * is evaluated, so the product of x and the high precision unit must\n * be less than 2**256. The result is rounded to the nearest increment.\n */\n function divideDecimalRoundPrecise(uint x, uint y) internal pure returns (uint) {\n return _divideDecimalRound(x, y, PRECISE_UNIT);\n }\n\n /**\n * @dev Convert a standard decimal representation to a high precision one.\n */\n function decimalToPreciseDecimal(uint i) internal pure returns (uint) {\n return i.mul(UNIT_TO_HIGH_PRECISION_CONVERSION_FACTOR);\n }\n\n /**\n * @dev Convert a high precision decimal to a standard decimal representation.\n */\n function preciseDecimalToDecimal(uint i) internal pure returns (uint) {\n uint quotientTimesTen = i / (UNIT_TO_HIGH_PRECISION_CONVERSION_FACTOR / 10);\n\n if (quotientTimesTen % 10 >= 5) {\n quotientTimesTen += 10;\n }\n\n return quotientTimesTen / 10;\n }\n}" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "output": { + "contracts": { + "@openzeppelin/contracts/token/ERC20/extensions/draft-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" + } + ], + "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 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "DOMAIN_SEPARATOR()": "3644e515", + "nonces(address)": "7ecebe00", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"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/token/ERC20/extensions/draft-IERC20Permit.sol\":\"IERC20Permit\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^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(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) 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\",\"keccak256\":\"0x3aab711a5f9a5a5a394191e928cc8258e8a243e855bb0275e7834f9686383277\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "@openzeppelin/contracts/utils/Counters.sol": { + "Counters": { + "abi": [], + "devdoc": { + "author": "Matt Condon (@shrugs)", + "details": "Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`", + "kind": "dev", + "methods": {}, + "title": "Counters", + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bb219c296f3935bc53f9bd5c532831879d70edfd17ef6c4a7dce9d653b2da36264736f6c634300080a0033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB 0x21 SWAP13 0x29 PUSH16 0x3935BC53F9BD5C532831879D70EDFD17 0xEF PUSH13 0x4A7DCE9D653B2DA36264736F6C PUSH4 0x4300080A STOP CALLER ", + "sourceMap": "370:971:1:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;370:971:1;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bb219c296f3935bc53f9bd5c532831879d70edfd17ef6c4a7dce9d653b2da36264736f6c634300080a0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB 0x21 SWAP13 0x29 PUSH16 0x3935BC53F9BD5C532831879D70EDFD17 0xEF PUSH13 0x4A7DCE9D653B2DA36264736F6C PUSH4 0x4300080A STOP CALLER ", + "sourceMap": "370:971:1:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17200", + "executionCost": "103", + "totalCost": "17303" + }, + "internal": { + "current(struct Counters.Counter storage pointer)": "infinite", + "decrement(struct Counters.Counter storage pointer)": "infinite", + "increment(struct Counters.Counter storage pointer)": "infinite", + "reset(struct Counters.Counter storage pointer)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Matt Condon (@shrugs)\",\"details\":\"Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Counters\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Counters.sol\":\"Counters\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Counters.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary Counters {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0x78450f4e3b722cce467b21e285f72ce5eaf361e9ba9dd2241a413926246773cd\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol": { + "ECDSA": { + "abi": [], + "devdoc": { + "details": "Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.", + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220515008b9193cb0f6891bd852f15890080911960ea4bc09b9a356284184b66de564736f6c634300080a0033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MLOAD POP ADDMOD 0xB9 NOT EXTCODECOPY 0xB0 0xF6 DUP10 SHL 0xD8 MSTORE CALL PC SWAP1 ADDMOD MULMOD GT SWAP7 0xE LOG4 0xBC MULMOD 0xB9 LOG3 JUMP 0x28 COINBASE DUP5 0xB6 PUSH14 0xE564736F6C634300080A00330000 ", + "sourceMap": "264:5577:2:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;264:5577:2;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220515008b9193cb0f6891bd852f15890080911960ea4bc09b9a356284184b66de564736f6c634300080a0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MLOAD POP ADDMOD 0xB9 NOT EXTCODECOPY 0xB0 0xF6 DUP10 SHL 0xD8 MSTORE CALL PC SWAP1 ADDMOD MULMOD GT SWAP7 0xE LOG4 0xBC MULMOD 0xB9 LOG3 JUMP 0x28 COINBASE DUP5 0xB6 PUSH14 0xE564736F6C634300080A00330000 ", + "sourceMap": "264:5577:2:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17200", + "executionCost": "103", + "totalCost": "17303" + }, + "internal": { + "recover(bytes32,bytes memory)": "infinite", + "recover(bytes32,bytes32,bytes32)": "infinite", + "recover(bytes32,uint8,bytes32,bytes32)": "infinite", + "toEthSignedMessageHash(bytes32)": "infinite", + "toTypedDataHash(bytes32,bytes32)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":\"ECDSA\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n *\\n * Documentation for signature generation:\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n // Check the signature length\\n // - case 65: r,s,v signature (standard)\\n // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._\\n if (signature.length == 65) {\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n return recover(hash, v, r, s);\\n } else if (signature.length == 64) {\\n bytes32 r;\\n bytes32 vs;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n assembly {\\n r := mload(add(signature, 0x20))\\n vs := mload(add(signature, 0x40))\\n }\\n return recover(hash, r, vs);\\n } else {\\n revert(\\\"ECDSA: invalid signature length\\\");\\n }\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `r` and `vs` short-signature fields separately.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n *\\n * _Available since v4.2._\\n */\\n function recover(\\n bytes32 hash,\\n bytes32 r,\\n bytes32 vs\\n ) internal pure returns (address) {\\n bytes32 s;\\n uint8 v;\\n assembly {\\n s := and(vs, 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\\n v := add(shr(255, vs), 27)\\n }\\n return recover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `v`, `r` and `s` signature fields separately.\\n */\\n function recover(\\n bytes32 hash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal pure returns (address) {\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (281): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (282): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n require(\\n uint256(s) <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0,\\n \\\"ECDSA: invalid signature 's' value\\\"\\n );\\n require(v == 27 || v == 28, \\\"ECDSA: invalid signature 'v' value\\\");\\n\\n // If the signature is valid (and not malleable), return the signer address\\n address signer = ecrecover(hash, v, r, s);\\n require(signer != address(0), \\\"ECDSA: invalid signature\\\");\\n\\n return signer;\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Typed Data, created from a\\n * `domainSeparator` and a `structHash`. This produces hash corresponding\\n * to the one signed with the\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n * JSON-RPC method as part of EIP-712.\\n *\\n * See {recover}.\\n */\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n }\\n}\\n\",\"keccak256\":\"0x828774372910d18e7337bc31a288d786748af4cd9da80222467e486ed1d569ab\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol": { + "EIP712": { + "abi": [], + "devdoc": { + "details": "https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data. The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible, thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in their contracts using a combination of `abi.encode` and `keccak256`. This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA ({_hashTypedDataV4}). The implementation of the domain separator was designed to be as efficient as possible while still properly updating the chain id to protect against replay attacks on an eventual fork of the chain. NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. _Available since v3.4._", + "kind": "dev", + "methods": { + "constructor": { + "details": "Initializes the domain separator and parameter caches. The meaning of `name` and `version` is specified in https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]: - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol. - `version`: the current major version of the signing domain. NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart contract upgrade]." + } + }, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data. The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible, thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in their contracts using a combination of `abi.encode` and `keccak256`. This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA ({_hashTypedDataV4}). The implementation of the domain separator was designed to be as efficient as possible while still properly updating the chain id to protect against replay attacks on an eventual fork of the chain. NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the domain separator and parameter caches. The meaning of `name` and `version` is specified in https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]: - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol. - `version`: the current major version of the signing domain. NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart contract upgrade].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol\":\"EIP712\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n *\\n * Documentation for signature generation:\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n // Check the signature length\\n // - case 65: r,s,v signature (standard)\\n // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._\\n if (signature.length == 65) {\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n return recover(hash, v, r, s);\\n } else if (signature.length == 64) {\\n bytes32 r;\\n bytes32 vs;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n assembly {\\n r := mload(add(signature, 0x20))\\n vs := mload(add(signature, 0x40))\\n }\\n return recover(hash, r, vs);\\n } else {\\n revert(\\\"ECDSA: invalid signature length\\\");\\n }\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `r` and `vs` short-signature fields separately.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n *\\n * _Available since v4.2._\\n */\\n function recover(\\n bytes32 hash,\\n bytes32 r,\\n bytes32 vs\\n ) internal pure returns (address) {\\n bytes32 s;\\n uint8 v;\\n assembly {\\n s := and(vs, 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\\n v := add(shr(255, vs), 27)\\n }\\n return recover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `v`, `r` and `s` signature fields separately.\\n */\\n function recover(\\n bytes32 hash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal pure returns (address) {\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (281): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (282): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n require(\\n uint256(s) <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0,\\n \\\"ECDSA: invalid signature 's' value\\\"\\n );\\n require(v == 27 || v == 28, \\\"ECDSA: invalid signature 'v' value\\\");\\n\\n // If the signature is valid (and not malleable), return the signer address\\n address signer = ecrecover(hash, v, r, s);\\n require(signer != address(0), \\\"ECDSA: invalid signature\\\");\\n\\n return signer;\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Typed Data, created from a\\n * `domainSeparator` and a `structHash`. This produces hash corresponding\\n * to the one signed with the\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n * JSON-RPC method as part of EIP-712.\\n *\\n * See {recover}.\\n */\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n }\\n}\\n\",\"keccak256\":\"0x828774372910d18e7337bc31a288d786748af4cd9da80222467e486ed1d569ab\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./ECDSA.sol\\\";\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\\n *\\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\\n *\\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\\n * ({_hashTypedDataV4}).\\n *\\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\\n * the chain id to protect against replay attacks on an eventual fork of the chain.\\n *\\n * NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method\\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\\n *\\n * _Available since v3.4._\\n */\\nabstract contract EIP712 {\\n /* solhint-disable var-name-mixedcase */\\n // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to\\n // invalidate the cached domain separator if the chain id changes.\\n bytes32 private immutable _CACHED_DOMAIN_SEPARATOR;\\n uint256 private immutable _CACHED_CHAIN_ID;\\n\\n bytes32 private immutable _HASHED_NAME;\\n bytes32 private immutable _HASHED_VERSION;\\n bytes32 private immutable _TYPE_HASH;\\n\\n /* solhint-enable var-name-mixedcase */\\n\\n /**\\n * @dev Initializes the domain separator and parameter caches.\\n *\\n * The meaning of `name` and `version` is specified in\\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\\n *\\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\\n * - `version`: the current major version of the signing domain.\\n *\\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\\n * contract upgrade].\\n */\\n constructor(string memory name, string memory version) {\\n bytes32 hashedName = keccak256(bytes(name));\\n bytes32 hashedVersion = keccak256(bytes(version));\\n bytes32 typeHash = keccak256(\\n \\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"\\n );\\n _HASHED_NAME = hashedName;\\n _HASHED_VERSION = hashedVersion;\\n _CACHED_CHAIN_ID = block.chainid;\\n _CACHED_DOMAIN_SEPARATOR = _buildDomainSeparator(typeHash, hashedName, hashedVersion);\\n _TYPE_HASH = typeHash;\\n }\\n\\n /**\\n * @dev Returns the domain separator for the current chain.\\n */\\n function _domainSeparatorV4() internal view returns (bytes32) {\\n if (block.chainid == _CACHED_CHAIN_ID) {\\n return _CACHED_DOMAIN_SEPARATOR;\\n } else {\\n return _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION);\\n }\\n }\\n\\n function _buildDomainSeparator(\\n bytes32 typeHash,\\n bytes32 nameHash,\\n bytes32 versionHash\\n ) private view returns (bytes32) {\\n return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this)));\\n }\\n\\n /**\\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\\n * function returns the hash of the fully encoded EIP712 message for this domain.\\n *\\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\\n *\\n * ```solidity\\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\\n * keccak256(\\\"Mail(address to,string contents)\\\"),\\n * mailTo,\\n * keccak256(bytes(mailContents))\\n * )));\\n * address signer = ECDSA.recover(digest, signature);\\n * ```\\n */\\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\\n return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash);\\n }\\n}\\n\",\"keccak256\":\"0xba18d725602452307e5b278ed4566616c63792d89f3a0388a6f285428c26e681\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/Common/Context.sol": { + "Context": { + "abi": [], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Common/Context.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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 payable(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}\",\"keccak256\":\"0x60d51a32063a4975dbf9433d38f5849173527da72f007c38053274e06698cb54\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/DEI/DEI.sol": { + "DEIStablecoin": { + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "_trusty_address", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "global_collateral_ratio", + "type": "uint256" + } + ], + "name": "CollateralRatioRefreshed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "collateral_ratio_paused", + "type": "bool" + } + ], + "name": "CollateralRatioToggled", + "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": "amount", + "type": "uint256" + } + ], + "name": "DEIBurned", + "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": "amount", + "type": "uint256" + } + ], + "name": "DEIMinted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "new_step", + "type": "uint256" + } + ], + "name": "DEIStepSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "deus_address", + "type": "address" + } + ], + "name": "DEUSAddressSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "activate", + "type": "bool" + } + ], + "name": "DIPSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "GR_top_band", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "GR_bottom_band", + "type": "uint256" + } + ], + "name": "GrowthRatioBandSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "name": "NameAndSymbolSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oracle", + "type": "address" + } + ], + "name": "OracleSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "pool_address", + "type": "address" + } + ], + "name": "PoolAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "pool_address", + "type": "address" + } + ], + "name": "PoolRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "top_band", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bottom_band", + "type": "uint256" + } + ], + "name": "PriceBandSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "new_cooldown", + "type": "uint256" + } + ], + "name": "RefreshCooldownSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "reserve_tracker_address", + "type": "address" + } + ], + "name": "ReserveTrackerSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "use_growth_ratio", + "type": "bool" + } + ], + "name": "UseGrowthRatioSet", + "type": "event" + }, + { + "inputs": [], + "name": "COLLATERAL_RATIO_PAUSER", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEI_bottom_band", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEI_top_band", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DIP", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GR_bottom_band", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GR_top_band", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TRUSTY_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_activate", + "type": "bool" + } + ], + "name": "activateDIP", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pool_address", + "type": "address" + } + ], + "name": "addPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "collateral_ratio_paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "collat_usd_price", + "type": "uint256[]" + } + ], + "name": "dei_info", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "dei_pools", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "dei_pools_array", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "dei_step", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "deus_address", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "genesis_supply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getChainID", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "collat_usd_price", + "type": "uint256[]" + } + ], + "name": "globalCollateralValue", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "global_collateral_ratio", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "growth_ratio", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "last_call_time", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "oracle", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "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" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "b_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "b_amount", + "type": "uint256" + } + ], + "name": "pool_burn_from", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "m_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "m_amount", + "type": "uint256" + } + ], + "name": "pool_mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deus_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "dei_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expire_block", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "refreshCollateralRatio", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "refresh_cooldown", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pool_address", + "type": "address" + } + ], + "name": "removePool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "reserve_tracker_address", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_new_step", + "type": "uint256" + } + ], + "name": "setDEIStep", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_deus_address", + "type": "address" + } + ], + "name": "setDEUSAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_GR_top_band", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_GR_bottom_band", + "type": "uint256" + } + ], + "name": "setGrowthRatioBands", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + } + ], + "name": "setNameAndSymbol", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_oracle", + "type": "address" + } + ], + "name": "setOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_top_band", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_bottom_band", + "type": "uint256" + } + ], + "name": "setPriceBands", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_new_cooldown", + "type": "uint256" + } + ], + "name": "setRefreshCooldown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_reserve_tracker_address", + "type": "address" + } + ], + "name": "setReserveTracker", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_use_growth_ratio", + "type": "bool" + } + ], + "name": "setUseGrowthRatio", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "toggleCollateralRatio", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "use_growth_ratio", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "sighash", + "type": "bytes32" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "verify_price", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "DOMAIN_SEPARATOR()": { + "details": "See {IERC20Permit-DOMAIN_SEPARATOR}." + }, + "allowance(address,address)": { + "details": "See {IERC20-allowance}." + }, + "approve(address,uint256)": { + "details": "See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.approve(address spender, uint256 amount)" + }, + "balanceOf(address)": { + "details": "See {IERC20-balanceOf}." + }, + "burn(uint256)": { + "details": "Destroys `amount` tokens from the caller. See {ERC20-_burn}." + }, + "burnFrom(address,uint256)": { + "details": "Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for `accounts`'s tokens of at least `amount`." + }, + "decreaseAllowance(address,uint256)": { + "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`." + }, + "getRoleAdmin(bytes32)": { + "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." + }, + "getRoleMember(bytes32,uint256)": { + "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information." + }, + "getRoleMemberCount(bytes32)": { + "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role." + }, + "grantRole(bytes32,address)": { + "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role." + }, + "hasRole(bytes32,address)": { + "details": "Returns `true` if `account` has been granted `role`." + }, + "increaseAllowance(address,uint256)": { + "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address." + }, + "nonces(address)": { + "details": "See {IERC20Permit-nonces}." + }, + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": { + "details": "See {IERC20Permit-permit}." + }, + "renounceRole(bytes32,address)": { + "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`." + }, + "revokeRole(bytes32,address)": { + "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role." + }, + "totalSupply()": { + "details": "See {IERC20-totalSupply}." + }, + "transfer(address,uint256)": { + "details": "See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`." + }, + "transferFrom(address,address,uint256)": { + "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`." + } + }, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": { + "@_364": { + "entryPoint": null, + "id": 364, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_5867": { + "entryPoint": null, + "id": 5867, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_627": { + "entryPoint": null, + "id": 627, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_add_11596": { + "entryPoint": null, + "id": 11596, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_beforeTokenTransfer_5433": { + "entryPoint": null, + "id": 5433, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_buildDomainSeparator_413": { + "entryPoint": null, + "id": 413, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@_contains_11696": { + "entryPoint": null, + "id": 11696, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_6258": { + "entryPoint": 999, + "id": 6258, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_mint_5245": { + "entryPoint": 747, + "id": 5245, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_msgSender_444": { + "entryPoint": null, + "id": 444, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_setupRole_6209": { + "entryPoint": 731, + "id": 6209, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@add_11764": { + "entryPoint": 1212, + "id": 11764, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@add_6728": { + "entryPoint": 1104, + "id": 6728, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_string_fromMemory": { + "entryPoint": 1504, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_address_fromMemory": { + "entryPoint": 1687, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_fd12587f28f7579f9edc9dfa9f560dc6a63e780125a45e58a8d654bac967dbf7__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 1889, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "extract_byte_array_length": { + "entryPoint": 1828, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "panic_error_0x41": { + "entryPoint": 1482, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:4130:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "46:95:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "63:1:39", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "70:3:39", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "75:10:39", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "66:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "66:20:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "56:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "56:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "56:31:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "103:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "106:4:39", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "96:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "96:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "96:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "127:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "130:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "120:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "120:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "120:15:39" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "14:127:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "210:821:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "259:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "268:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "271:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "261:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "261:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "261:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "238:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "246:4:39", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "234:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "234:17:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "253:3:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "230:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "230:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "223:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "223:35:39" + }, + "nodeType": "YulIf", + "src": "220:55:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "284:23:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "300:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "294:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "294:13:39" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "288:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "316:28:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "334:2:39", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "338:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "330:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "330:10:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "342:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "326:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "326:18:39" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "320:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "367:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "369:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "369:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "369:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "359:2:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "363:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "356:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "356:10:39" + }, + "nodeType": "YulIf", + "src": "353:36:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "398:17:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "412:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "408:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "408:7:39" + }, + "variables": [ + { + "name": "_3", + "nodeType": "YulTypedName", + "src": "402:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "424:23:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "444:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "438:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "438:9:39" + }, + "variables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "428:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "456:71:39", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "478:6:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "502:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "506:4:39", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "498:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "498:13:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "513:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "494:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "494:22:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "518:2:39", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "490:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "490:31:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "523:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "486:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "486:40:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "474:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "474:53:39" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "460:10:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "586:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "588:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "588:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "588:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "545:10:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "557:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "542:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "542:18:39" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "565:10:39" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "577:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "562:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "562:22:39" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "539:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "539:46:39" + }, + "nodeType": "YulIf", + "src": "536:72:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "624:2:39", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "628:10:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "617:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "617:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "617:22:39" + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "655:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "663:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "648:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "648:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "648:18:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "675:14:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "685:4:39", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_4", + "nodeType": "YulTypedName", + "src": "679:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "735:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "744:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "747:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "737:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "737:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "737:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "712:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "720:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "708:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "708:15:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "725:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "704:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "704:24:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "730:3:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "701:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "701:33:39" + }, + "nodeType": "YulIf", + "src": "698:53:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "760:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "769:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "764:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "825:87:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "854:6:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "862:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "850:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "850:14:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "866:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "846:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "846:23:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "885:6:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "893:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "881:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "881:14:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "897:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "877:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "877:23:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "871:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "871:30:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "839:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "839:63:39" + }, + "nodeType": "YulExpressionStatement", + "src": "839:63:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "790:1:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "793:2:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "787:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "787:9:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "797:19:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "799:15:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "808:1:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "811:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "804:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "804:10:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "799:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "783:3:39", + "statements": [] + }, + "src": "779:133:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "942:59:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "971:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "979:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "967:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "967:15:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "984:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "963:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "963:24:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "989:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "956:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "956:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "956:35:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "927:1:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "930:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "924:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "924:9:39" + }, + "nodeType": "YulIf", + "src": "921:80:39" + }, + { + "nodeType": "YulAssignment", + "src": "1010:15:39", + "value": { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1019:6:39" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "1010:5:39" + } + ] + } + ] + }, + "name": "abi_decode_string_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "184:6:39", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "192:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "200:5:39", + "type": "" + } + ], + "src": "146:885:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1171:594:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1217:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1226:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1229:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1219:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1219:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1219:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1192:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1201:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1188:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1188:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1213:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1184:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1184:32:39" + }, + "nodeType": "YulIf", + "src": "1181:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1242:30:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1262:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1256:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "1256:16:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1246:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1281:28:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1299:2:39", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1303:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1295:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1295:10:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1307:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1291:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1291:18:39" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "1285:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1336:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1345:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1348:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1338:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1338:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1338:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1324:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "1332:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1321:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1321:14:39" + }, + "nodeType": "YulIf", + "src": "1318:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "1361:71:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1404:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1415:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1400:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1400:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1424:7:39" + } + ], + "functionName": { + "name": "abi_decode_string_fromMemory", + "nodeType": "YulIdentifier", + "src": "1371:28:39" + }, + "nodeType": "YulFunctionCall", + "src": "1371:61:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1361:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1441:41:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1467:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1478:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1463:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1463:18:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1457:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "1457:25:39" + }, + "variables": [ + { + "name": "offset_1", + "nodeType": "YulTypedName", + "src": "1445:8:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1511:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1520:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1523:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1513:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1513:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1513:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "1497:8:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "1507:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1494:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1494:16:39" + }, + "nodeType": "YulIf", + "src": "1491:36:39" + }, + { + "nodeType": "YulAssignment", + "src": "1536:73:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1579:9:39" + }, + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "1590:8:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1575:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1575:24:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1601:7:39" + } + ], + "functionName": { + "name": "abi_decode_string_fromMemory", + "nodeType": "YulIdentifier", + "src": "1546:28:39" + }, + "nodeType": "YulFunctionCall", + "src": "1546:63:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1536:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1618:38:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1641:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1652:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1637:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1637:18:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1631:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "1631:25:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1622:5:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1719:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1728:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1731:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1721:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1721:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1721:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1678:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1689:5:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1704:3:39", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1709:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1700:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1700:11:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1713:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1696:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1696:19:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1685:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1685:31:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1675:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1675:42:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1668:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1668:50:39" + }, + "nodeType": "YulIf", + "src": "1665:70:39" + }, + { + "nodeType": "YulAssignment", + "src": "1744:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1754:5:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "1744:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1121:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1132:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1144:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1152:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "1160:6:39", + "type": "" + } + ], + "src": "1036:729:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1825:325:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1835:22:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1849:1:39", + "type": "", + "value": "1" + }, + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "1852:4:39" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "1845:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1845:12:39" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1835:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1866:38:39", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "1896:4:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1902:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1892:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1892:12:39" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "1870:18:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1943:31:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1945:27:39", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1959:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1967:4:39", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1955:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1955:17:39" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1945:6:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "1923:18:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1916:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1916:26:39" + }, + "nodeType": "YulIf", + "src": "1913:61:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2033:111:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2054:1:39", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2061:3:39", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2066:10:39", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "2057:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2057:20:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2047:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2047:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2047:31:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2098:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2101:4:39", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2091:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2091:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2091:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2126:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2129:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2119:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2119:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2119:15:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "1989:18:39" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2012:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2020:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2009:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2009:14:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1986:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1986:38:39" + }, + "nodeType": "YulIf", + "src": "1983:161:39" + } + ] + }, + "name": "extract_byte_array_length", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "1805:4:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1814:6:39", + "type": "" + } + ], + "src": "1770:380:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2329:177:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2346:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2357:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2339:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2339:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2339:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2380:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2391:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2376:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2376:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2396:2:39", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2369:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2369:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2369:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2419:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2430:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2415:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2415:18:39" + }, + { + "hexValue": "4445493a207a65726f20616464726573732064657465637465642e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "2435:29:39", + "type": "", + "value": "DEI: zero address detected." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2408:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2408:57:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2408:57:39" + }, + { + "nodeType": "YulAssignment", + "src": "2474:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2486:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2497:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2482:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2482:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2474:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_fd12587f28f7579f9edc9dfa9f560dc6a63e780125a45e58a8d654bac967dbf7__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2306:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2320:4:39", + "type": "" + } + ], + "src": "2155:351:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2724:276:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2734:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2746:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2757:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2742:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2742:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2734:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2777:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2788:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2770:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2770:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2770:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2815:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2826:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2811:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2811:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2831:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2804:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2804:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2804:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2858:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2869:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2854:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2854:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "2874:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2847:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2847:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2847:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2901:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2912:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2897:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2897:18:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "2917:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2890:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2890:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2890:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2944:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2955:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2940:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2940:19:39" + }, + { + "arguments": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "2965:6:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2981:3:39", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2986:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "2977:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2977:11:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2990:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2973:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2973:19:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2961:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2961:32:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2933:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2933:61:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2933:61:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2661:9:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "2672:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "2680:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "2688:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2696:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2704:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2715:4:39", + "type": "" + } + ], + "src": "2511:489:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3179:181:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3196:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3207:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3189:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3189:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3189:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3230:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3241:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3226:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3226:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3246:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3219:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3219:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3219:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3269:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3280:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3265:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3265:18:39" + }, + { + "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "3285:33:39", + "type": "", + "value": "ERC20: mint to the zero address" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3258:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3258:61:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3258:61:39" + }, + { + "nodeType": "YulAssignment", + "src": "3328:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3340:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3351:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3336:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3336:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3328:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3156:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3170:4:39", + "type": "" + } + ], + "src": "3005:355:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3466:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3476:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3488:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3499:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3484:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3484:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3476:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3518:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3529:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3511:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3511:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3511:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3435:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3446:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3457:4:39", + "type": "" + } + ], + "src": "3365:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3595:177:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3630:111:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3651:1:39", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3658:3:39", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3663:10:39", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3654:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3654:20:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3644:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3644:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3644:31:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3695:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3698:4:39", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3688:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3688:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3688:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3723:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3726:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3716:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3716:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3716:15:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3611:1:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "3618:1:39" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "3614:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3614:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3608:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3608:13:39" + }, + "nodeType": "YulIf", + "src": "3605:136:39" + }, + { + "nodeType": "YulAssignment", + "src": "3750:16:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3761:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "3764:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3757:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3757:9:39" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "3750:3:39" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "3578:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "3581:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "3587:3:39", + "type": "" + } + ], + "src": "3547:225:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3951:177:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3968:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3979:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3961:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3961:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3961:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4002:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4013:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3998:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3998:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4018:2:39", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3991:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3991:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3991:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4041:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4052:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4037:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4037:18:39" + }, + { + "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4057:29:39", + "type": "", + "value": "SafeMath: addition overflow" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4030:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4030:57:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4030:57:39" + }, + { + "nodeType": "YulAssignment", + "src": "4096:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4108:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4119:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4104:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4104:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4096:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3928:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3942:4:39", + "type": "" + } + ], + "src": "3777:351:39" + } + ] + }, + "contents": "{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_string_fromMemory(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := mload(offset)\n let _2 := sub(shl(64, 1), 1)\n if gt(_1, _2) { panic_error_0x41() }\n let _3 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _1)\n let _4 := 0x20\n if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n let i := 0\n for { } lt(i, _1) { i := add(i, _4) }\n {\n mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n }\n if gt(i, _1)\n {\n mstore(add(add(memPtr, _1), _4), 0)\n }\n array := memPtr\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_address_fromMemory(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let offset := mload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n let value := mload(add(headStart, 64))\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value2 := value\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_fd12587f28f7579f9edc9dfa9f560dc6a63e780125a45e58a8d654bac967dbf7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"DEI: zero address detected.\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 160)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 31)\n mstore(add(headStart, 64), \"ERC20: mint to the zero address\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n sum := add(x, y)\n }\n function abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"SafeMath: addition overflow\")\n tail := add(headStart, 96)\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "6101406040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c961012052600f805460ff191690553480156200004157600080fd5b5060405162004b9038038062004b90833981016040819052620000649162000697565b60068054620000739062000724565b80601f0160208091040260200160405190810160405280929190818152602001828054620000a19062000724565b8015620000f25780601f10620000c657610100808354040283529160200191620000f2565b820191906000526020600020905b815481529060010190602001808311620000d457829003601f168201915b505060408051808201825260018152603160f81b60209182015285519581019590952060c08181527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660e08190524660a081815285517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818c018190528188019690965260608101939093526080808401929092523083820152855180840390910181529190920190935282519290960191909120909452505050610100526001600160a01b0381166200020d5760405162461bcd60e51b815260206004820152601b60248201527f4445493a207a65726f20616464726573732064657465637465642e000000000060448201526064015b60405180910390fd5b82516200022290600690602086019062000524565b5081516200023890600590602085019062000524565b506109c4600d55620c3500600c5561012c600e5562000259600082620002db565b620002857fb25402418ad555013210365a422f9f1206b2dd00719998db06f8a1fbe014641b82620002db565b620002b17f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c82620002db565b620002c78169021e19e0c9bab2400000620002eb565b50506103e860118190556012555062000788565b620002e78282620003e7565b5050565b6001600160a01b038216620003435760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000204565b6200035f816002546200045060201b620029861790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620003929183906200298662000450821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60008281526004602090815260409091206200040e918390620029ff620004bc821b17901c565b15620002e75760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6000806200045f838562000761565b905083811015620004b35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000204565b90505b92915050565b6000620004b3836001600160601b0319606085901b1660008181526001830160205260408120546200051b57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620004b6565b506000620004b6565b828054620005329062000724565b90600052602060002090601f016020900481019282620005565760008555620005a1565b82601f106200057157805160ff1916838001178555620005a1565b82800160010185558215620005a1579182015b82811115620005a157825182559160200191906001019062000584565b50620005af929150620005b3565b5090565b5b80821115620005af5760008155600101620005b4565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620005f257600080fd5b81516001600160401b03808211156200060f576200060f620005ca565b604051601f8301601f19908116603f011681019082821181831017156200063a576200063a620005ca565b816040528381526020925086838588010111156200065757600080fd5b600091505b838210156200067b57858201830151818301840152908201906200065c565b838211156200068d5760008385830101525b9695505050505050565b600080600060608486031215620006ad57600080fd5b83516001600160401b0380821115620006c557600080fd5b620006d387838801620005e0565b94506020860151915080821115620006ea57600080fd5b50620006f986828701620005e0565b604086015190935090506001600160a01b03811681146200071957600080fd5b809150509250925092565b600181811c908216806200073957607f821691505b602082108114156200075b57634e487b7160e01b600052602260045260246000fd5b50919050565b600082198211156200078357634e487b7160e01b600052601160045260246000fd5b500190565b60805160a05160c05160e05161010051610120516143b8620007d860003960006123dd01526000612f1f01526000612f6e01526000612f4901526000612ecd01526000612ef601526143b86000f3fe608060405234801561001057600080fd5b50600436106103d05760003560e01c806379cc6790116101ff578063ae7730291161011a578063d01dd162116100ad578063dd62ed3e1161007c578063dd62ed3e146108b4578063e6344628146108fa578063f1fc1fff1461090d578063f72bd4f01461091657600080fd5b8063d01dd16214610868578063d505accf1461087b578063d547741f1461088e578063d914cd4b146108a157600080fd5b8063c03f7be3116100e9578063c03f7be314610836578063c1e2785b1461083f578063c2593c2714610848578063ca15c8731461085557600080fd5b8063ae773029146107da578063aee06a5e14610808578063b4f56b261461081b578063bef40ec81461082e57600080fd5b80639a6f978d11610192578063a6959f0f11610161578063a6959f0f1461078e578063a8a778ae146107a1578063a9059cbb146107b4578063ab3d1bb6146107c757600080fd5b80639a6f978d1461074e578063a085ea7c14610760578063a217fddf14610773578063a457c2d71461077b57600080fd5b806387a140c3116101ce57806387a140c3146107135780639010d07c1461072057806391d148541461073357806395d89b411461074657600080fd5b806379cc6790146106ba5780637adbf973146106cd5780637dc0d1d0146106e05780637ecebe001461070057600080fd5b8063313ce567116102ef5780634d97897b11610282578063597bf73811610251578063597bf7381461064b5780635a4462151461065e5780636793f0ac1461067157806370a082311461068457600080fd5b80634d97897b146105ed57806351e238e31461060d578063545055171461061e578063564b81ef1461064557600080fd5b806336568abe116102be57806336568abe146105a157806339509351146105b45780633b7d0946146105c757806342966c68146105da57600080fd5b8063313ce5671461054f578063349432d91461056957806334ddb95d146105725780633644e5151461059957600080fd5b80631c5df1e511610367578063248a9ca311610336578063248a9ca3146104cb57806327daf4f8146104ee5780632eb9771b146105335780632f2ff15d1461053c57600080fd5b80631c5df1e5146104895780632258750a1461049c57806323b872dd146104a55780632480fcea146104b857600080fd5b806315ea919c116103a357806315ea919c1461043e57806316b0c8461461046157806318160ddd1461047857806319d05d091461048057600080fd5b806306fdde03146103d5578063095ea7b3146103f35780630c0a25aa1461041657806311af9a4b1461042b575b600080fd5b6103dd61091f565b6040516103ea9190613956565b60405180910390f35b6104066104013660046139f2565b6109ad565b60405190151581526020016103ea565b610429610424366004613a2a565b6109c4565b005b610429610439366004613a47565b610aca565b61040661044c366004613a47565b600b6020526000908152604090205460ff1681565b61046a60105481565b6040519081526020016103ea565b60025461046a565b61046a60135481565b610429610497366004613a62565b610bcd565b61046a60165481565b6104066104b3366004613a7b565b610c92565b61046a6104c6366004613b35565b610d26565b61046a6104d9366004613a62565b60009081526004602052604090206002015490565b60085461050e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103ea565b61046a600c5481565b61042961054a366004613bdb565b610e66565b610557601281565b60405160ff90911681526020016103ea565b61046a60125481565b61046a7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b61046a610f1c565b6104296105af366004613bdb565b610f2b565b6104066105c23660046139f2565b610fda565b6104296105d5366004613a47565b61101d565b6104296105e8366004613a62565b61136c565b60095461050e9073ffffffffffffffffffffffffffffffffffffffff1681565b61046a69021e19e0c9bab240000081565b61046a7fb25402418ad555013210365a422f9f1206b2dd00719998db06f8a1fbe014641b81565b4661046a565b610429610659366004613a62565b611379565b61042961066c366004613c95565b61143e565b61040661067f366004613d45565b611535565b61046a610692366004613a47565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6104296106c83660046139f2565b611616565b6104296106db366004613a47565b611662565b60075461050e9073ffffffffffffffffffffffffffffffffffffffff1681565b61046a61070e366004613a47565b611765565b600f546104069060ff1681565b61050e61072e366004613d91565b611790565b610406610741366004613bdb565b6117af565b6103dd6117c7565b60155461040690610100900460ff1681565b61042961076e366004613d91565b6117d4565b61046a600081565b6104066107893660046139f2565b6118a4565b61042961079c366004613d91565b611900565b6104296107af3660046139f2565b6119d0565b6104066107c23660046139f2565b611ad0565b6104296107d5366004613db3565b611add565b6107ed6107e8366004613b35565b611f3b565b604080519384526020840192909252908201526060016103ea565b610429610816366004613a47565b611f62565b6104296108293660046139f2565b612108565b610429612200565b61046a600e5481565b61046a60145481565b6015546104069060ff1681565b61046a610863366004613a62565b612321565b61050e610876366004613a62565b612338565b610429610889366004613e14565b61236f565b61042961089c366004613bdb565b61252e565b6104296108af366004613a47565b6125d6565b61046a6108c2366004613e87565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b610429610908366004613a2a565b612897565b61046a600d5481565b61046a60115481565b6006805461092c90613eb1565b80601f016020809104026020016040519081016040528092919081815260200182805461095890613eb1565b80156109a55780601f1061097a576101008083540402835291602001916109a5565b820191906000526020600020905b81548152906001019060200180831161098857829003601f168201915b505050505081565b60006109ba338484612a31565b5060015b92915050565b6109ee7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b610a59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e657200000000000060448201526064015b60405180910390fd5b60158054821515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff9091161790556040517fe50bc939dc0e5025414f0f3b58008de090812f288a3670db7e723ef663dcdc5490610abf90831515815260200190565b60405180910390a150565b610af47f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b610b5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd7ab6b495fc0223207243f48d9c9e2c8303180b6d1914be5710ecf209ebd2d1c90602001610abf565b610bf77f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b610c5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b600e8190556040518181527fc7443059c2ed485e2c9efe4e766bef9432a6f0ed6695741ab4afdffab3b9215790602001610abf565b6000610c9f848484612be5565b610d1c8433610d17856040518060600160405280602881526020016143126028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020526040812090335b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190612e0f565b612a31565b5060019392505050565b600080805b600a54811015610e5f57600073ffffffffffffffffffffffffffffffffffffffff16600a8281548110610d6057610d60613eff565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614610e4d57600a8181548110610d9a57610d9a613eff565b600091825260209091200154845173ffffffffffffffffffffffffffffffffffffffff9091169063b6258aaa90869084908110610dd957610dd9613eff565b60200260200101516040518263ffffffff1660e01b8152600401610dff91815260200190565b602060405180830381865afa158015610e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e409190613f2e565b610e4a9083613f76565b91505b80610e5781613f8e565b915050610d2b565b5092915050565b600082815260046020526040902060020154610e8290336117af565b610f0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e7400000000000000000000000000000000006064820152608401610a50565b610f188282612e63565b5050565b6000610f26612ec9565b905090565b73ffffffffffffffffffffffffffffffffffffffff81163314610fd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610a50565b610f188282612fbc565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916109ba918590610d179086612986565b6110477f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b6110ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b73ffffffffffffffffffffffffffffffffffffffff8116611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4445493a3a72656d6f7665506f6f6c3a205a65726f206164647265737320646560448201527f74656374656400000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b602052604090205460ff161515600114611209576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4445493a3a72656d6f7665506f6f6c3a2041646472657373206e6f6e6578697360448201527f74616e74000000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b6020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600a54811015611325578173ffffffffffffffffffffffffffffffffffffffff16600a828154811061128957611289613eff565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415611313576000600a82815481106112c6576112c6613eff565b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611325565b8061131d81613f8e565b915050611255565b5060405173ffffffffffffffffffffffffffffffffffffffff821681527f4106dfdaa577573db51c0ca93f766dbedfa0758faa2e7f5bcdb7c142be803c3f90602001610abf565b6113763382613022565b50565b6113a37f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b600d8190556040518181527f3e2f198539455d04450252bfc103c833ca10d4231da6509e0528bb2383e22b7390602001610abf565b6114687f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b6114ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b81516114e19060069060208501906138bd565b5080516114f59060059060208401906138bd565b507f24a9aef9121ba62598f20f8f80fd406fa1d2d956747e0728068c649f324ddf416006600560405161152992919061409e565b60405180910390a15050565b60075460009073ffffffffffffffffffffffffffffffffffffffff1663fb0fe3f46115ad866040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b85856040518463ffffffff1660e01b81526004016115cd9392919061410c565b602060405180830381865afa1580156115ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160e91906141ee565b949350505050565b60006116468260405180606001604052806024815260200161433a6024913961163f86336108c2565b9190612e0f565b9050611653833383612a31565b61165d8383613022565b505050565b61168c7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b6116f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3f32684a32a11dabdbb8c0177de80aa3ae36a004d75210335b49e544e48cd0aa90602001610abf565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600360205260408120546109be565b60008281526004602052604081206117a89083613190565b9392505050565b60008281526004602052604081206117a890836131a6565b6005805461092c90613eb1565b6117fe7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b6011829055601281905560408051838152602081018390527f36d9a5eb34de8b03405baea3d54341f11312730be6f93d18c932728c9e2250d49101611529565b60006109ba3384610d178560405180606001604052806025815260200161435e6025913933600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d1684529091529020549190612e0f565b61192a7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b611990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b6013829055601481905560408051838152602081018390527f2896b6d714a04536ba6121e132dc3aff2eaca8a2ba3eff2676d6a8b435f317459101611529565b336000908152600b602052604090205460ff161515600114611a74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4445493a206f6e6c792064656920706f6f6c732063616e2063616c6c2074686960448201527f732066756e6374696f6e000000000000000000000000000000000000000000006064820152608401610a50565b611a7e82826131e5565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907f4857273a485c2cfff4b12a1064c50e871b8e0c686cf17f44c16b4f8554ede3b1906020015b60405180910390a35050565b60006109ba338484612be5565b600f5460ff1615611b70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4445493a3a436f6c6c61746572616c20526174696f20686173206265656e207060448201527f61757365640000000000000000000000000000000000000000000000000000006064820152608401610a50565b600060165442611b80919061420b565b9050600e54811015611c14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4445493a3a496e7465726e616c20636f6f6c646f776e206e6f7420706173736560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b600954604080517ea66f1f000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169162a66f1f9160048083019260209291908290030181865afa158015611c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca69190613f2e565b600854604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b8116602080840191909152603483018d90523090941b166054820152606881018a9052608881018990524660a8808301919091528251808303909101815260c89091019091528051910120909150611d2c818686611535565b506000611d398984614222565b90506000611d4660025490565b90506000611d54828461425f565b601554909150610100900460ff1615611e04576013548a1180611d7857506014548a105b611e04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4445493a3a5573652072656672657368436f6c6c61746572616c526174696f2060448201527f7768656e20444549206973206f757473696465206f66207065670000000000006064820152608401610a50565b6013548a1115611e2657600d54600c54611e1e919061420b565b600c55611ed5565b6014548a1015611e4057600d54600c54611e1e9190613f76565b60155460ff1615611ed557620f4240601154620f4240611e609190613f76565b601054611e6d9190614222565b611e77919061425f565b811115611e8e57600d54600c54611e1e919061420b565b620f4240601254620f4240611ea3919061420b565b601054611eb09190614222565b611eba919061425f565b811015611ed557600d54600c54611ed19190613f76565b600c555b601081905542601655600c54620f42401015611ef357620f4240600c555b7fb1200af9b3ac4dec88c9d01e1fb7cc7fa1f0fe55bf4afac1f30cc4fc2b2d1dd2600c54604051611f2691815260200190565b60405180910390a15050505050505050505050565b6000806000611f4960025490565b600c54611f5586610d26565b9250925092509193909250565b611f8c7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b611ff2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b73ffffffffffffffffffffffffffffffffffffffff8116612095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4445493a3a73657444455553416464726573733a205a65726f2061646472657360448201527f73206465746563746564000000000000000000000000000000000000000000006064820152608401610a50565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f40c19b0139e5bc25c64e466d74e6e13ee1095acc65b58faf1932f9583e7d812c90602001610abf565b336000908152600b602052604090205460ff1615156001146121ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4445493a206f6e6c792064656920706f6f6c732063616e2063616c6c2074686960448201527f732066756e6374696f6e000000000000000000000000000000000000000000006064820152608401610a50565b6121b6828261323d565b60405181815273ffffffffffffffffffffffffffffffffffffffff83169033907f97847a1fcbba98b997fb5b6c48f68c2d69b53a19157db1622218a559b95fe9be90602001611ac4565b61222a7fb25402418ad555013210365a422f9f1206b2dd00719998db06f8a1fbe014641b336117af565b6122b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4445493a20796f7520617265206e6f742074686520636f6c6c61746572616c2060448201527f726174696f2070617573657200000000000000000000000000000000000000006064820152608401610a50565b600f805460ff808216157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090921682179092556040519116151581527f209068f7bed5a02fb7695c3e3b61bb8324d1facb25523c6422bfd2105ec44d929060200160405180910390a1565b60008181526004602052604081206109be90613355565b600a818154811061234857600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b834211156123d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610a50565b60007f00000000000000000000000000000000000000000000000000000000000000008888886124088c61335f565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061247082613394565b90506000612480828787876133fd565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610a50565b6125228a8a8a612a31565b50505050505050505050565b60008281526004602052604090206002015461254a90336117af565b610fd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b65000000000000000000000000000000006064820152608401610a50565b6126007f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b612666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b73ffffffffffffffffffffffffffffffffffffffff8116612709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4445493a3a616464506f6f6c3a205a65726f206164647265737320646574656360448201527f74656400000000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b602052604090205460ff16156127be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4445493a3a616464506f6f6c3a204164647265737320616c726561647920657860448201527f69737473000000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff81166000818152600b6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600a805491820181559093527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a890920180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905590519182527f73cca62ab1b520c9715bf4e6c71e3e518c754e7148f65102f43289a7df0efea69101610abf565b6128c17f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b612927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b601580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215159081179091556040519081527fa272b58e328af1078a931ae3f79e96ad602c5fbbf0e953a5651b5e7e107846d290602001610abf565b6000806129938385613f76565b9050838110156117a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a50565b60006117a8837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1661364c565b73ffffffffffffffffffffffffffffffffffffffff8316612ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff8216612b76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316612c88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff8216612d2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610a50565b612d75816040518060600160405280602681526020016142ec6026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190612e0f565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054612db19082612986565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101612bd8565b60008184841115612e4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a509190613956565b506000612e5a848661420b565b95945050505050565b6000828152600460205260409020612e7b90826129ff565b15610f1857604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612f1857507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000828152600460205260409020612fd4908261369b565b15610f1857604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b73ffffffffffffffffffffffffffffffffffffffff82166130c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b61310f816040518060600160405280602281526020016142ca6022913973ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020549190612e0f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205560025461314290826136cd565b60025560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611ac4565b600061319c838361370f565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156117a8565b6131ef8282613022565b610f188233610d178460405180606001604052806024815260200161433a6024913973ffffffffffffffffffffffffffffffffffffffff881660009081526001602052604081209033610ce9565b73ffffffffffffffffffffffffffffffffffffffff82166132ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610a50565b6002546132c79082612986565b60025573ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546132fa9082612986565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611ac4565b60006109be825490565b73ffffffffffffffffffffffffffffffffffffffff811660009081526003602052604090208054600181018255905b50919050565b60006109be6133a1612ec9565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156134af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b8360ff16601b14806134c457508360ff16601c145b613550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b6040805160008082526020820180845288905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156135a4573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116612e5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610a50565b6000818152600183016020526040812054613693575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109be565b5060006109be565b60006117a8837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b166137ca565b60006117a883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612e0f565b815460009082106137a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f64730000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b8260000182815481106137b7576137b7613eff565b9060005260206000200154905092915050565b600081815260018301602052604081205480156138b35760006137ee60018361420b565b85549091506000906138029060019061420b565b9050600086600001828154811061381b5761381b613eff565b906000526020600020015490508087600001848154811061383e5761383e613eff565b600091825260209091200155613855836001613f76565b600082815260018901602052604090205586548790806138775761387761429a565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506109be565b60009150506109be565b8280546138c990613eb1565b90600052602060002090601f0160209004810192826138eb5760008555613931565b82601f1061390457805160ff1916838001178555613931565b82800160010185558215613931579182015b82811115613931578251825591602001919060010190613916565b5061393d929150613941565b5090565b5b8082111561393d5760008155600101613942565b600060208083528351808285015260005b8181101561398357858101830151858201604001528201613967565b81811115613995576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146139ed57600080fd5b919050565b60008060408385031215613a0557600080fd5b613a0e836139c9565b946020939093013593505050565b801515811461137657600080fd5b600060208284031215613a3c57600080fd5b81356117a881613a1c565b600060208284031215613a5957600080fd5b6117a8826139c9565b600060208284031215613a7457600080fd5b5035919050565b600080600060608486031215613a9057600080fd5b613a99846139c9565b9250613aa7602085016139c9565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613b2d57613b2d613ab7565b604052919050565b60006020808385031215613b4857600080fd5b823567ffffffffffffffff80821115613b6057600080fd5b818501915085601f830112613b7457600080fd5b813581811115613b8657613b86613ab7565b8060051b9150613b97848301613ae6565b8181529183018401918481019088841115613bb157600080fd5b938501935b83851015613bcf57843582529385019390850190613bb6565b98975050505050505050565b60008060408385031215613bee57600080fd5b82359150613bfe602084016139c9565b90509250929050565b600082601f830112613c1857600080fd5b813567ffffffffffffffff811115613c3257613c32613ab7565b613c6360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613ae6565b818152846020838601011115613c7857600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215613ca857600080fd5b823567ffffffffffffffff80821115613cc057600080fd5b613ccc86838701613c07565b93506020850135915080821115613ce257600080fd5b50613cef85828601613c07565b9150509250929050565b60008083601f840112613d0b57600080fd5b50813567ffffffffffffffff811115613d2357600080fd5b6020830191508360208260051b8501011115613d3e57600080fd5b9250929050565b600080600060408486031215613d5a57600080fd5b83359250602084013567ffffffffffffffff811115613d7857600080fd5b613d8486828701613cf9565b9497909650939450505050565b60008060408385031215613da457600080fd5b50508035926020909101359150565b600080600080600060808688031215613dcb57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff811115613df757600080fd5b613e0388828901613cf9565b969995985093965092949392505050565b600080600080600080600060e0888a031215613e2f57600080fd5b613e38886139c9565b9650613e46602089016139c9565b95506040880135945060608801359350608088013560ff81168114613e6a57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215613e9a57600080fd5b613ea3836139c9565b9150613bfe602084016139c9565b600181811c90821680613ec557607f821691505b6020821081141561338e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215613f4057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613f8957613f89613f47565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613fc057613fc0613f47565b5060010190565b8054600090600181811c9080831680613fe157607f831692505b602080841082141561401c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b83885260208801828015614037576001811461406657614091565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00871682528282019750614091565b60008981526020902060005b8781101561408b57815484820152908601908401614072565b83019850505b5050505050505092915050565b6040815260006140b16040830185613fc7565b8281036020840152612e5a8185613fc7565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b878110156141e0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18a360301811261419757600080fd5b8901803567ffffffffffffffff8111156141b057600080fd5b8036038b13156141bf57600080fd5b6141cc87828885016140c3565b965050509183019190830190600101614136565b509298975050505050505050565b60006020828403121561420057600080fd5b81516117a881613a1c565b60008282101561421d5761421d613f47565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561425a5761425a613f47565b500290565b600082614295577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e461646f2d503bf780a9f3926215ffa592ef73f33f8529487295fcaf87728f9e64736f6c634300080a0033", + "opcodes": "PUSH2 0x140 PUSH1 0x40 MSTORE PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 PUSH2 0x120 MSTORE PUSH1 0xF DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x4B90 CODESIZE SUB DUP1 PUSH3 0x4B90 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x64 SWAP2 PUSH3 0x697 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH3 0x73 SWAP1 PUSH3 0x724 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH3 0xA1 SWAP1 PUSH3 0x724 JUMP JUMPDEST DUP1 ISZERO PUSH3 0xF2 JUMPI DUP1 PUSH1 0x1F LT PUSH3 0xC6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH3 0xF2 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 PUSH3 0xD4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP6 MLOAD SWAP6 DUP2 ADD SWAP6 SWAP1 SWAP6 KECCAK256 PUSH1 0xC0 DUP2 DUP2 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0xE0 DUP2 SWAP1 MSTORE CHAINID PUSH1 0xA0 DUP2 DUP2 MSTORE DUP6 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP13 ADD DUP2 SWAP1 MSTORE DUP2 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x60 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x80 DUP1 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE ADDRESS DUP4 DUP3 ADD MSTORE DUP6 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP2 SWAP1 SWAP3 ADD SWAP1 SWAP4 MSTORE DUP3 MLOAD SWAP3 SWAP1 SWAP7 ADD SWAP2 SWAP1 SWAP2 KECCAK256 SWAP1 SWAP5 MSTORE POP POP POP PUSH2 0x100 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x20D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A207A65726F20616464726573732064657465637465642E0000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x222 SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP7 ADD SWAP1 PUSH3 0x524 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x238 SWAP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x524 JUMP JUMPDEST POP PUSH2 0x9C4 PUSH1 0xD SSTORE PUSH3 0xC3500 PUSH1 0xC SSTORE PUSH2 0x12C PUSH1 0xE SSTORE PUSH3 0x259 PUSH1 0x0 DUP3 PUSH3 0x2DB JUMP JUMPDEST PUSH3 0x285 PUSH32 0xB25402418AD555013210365A422F9F1206B2DD00719998DB06F8A1FBE014641B DUP3 PUSH3 0x2DB JUMP JUMPDEST PUSH3 0x2B1 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP3 PUSH3 0x2DB JUMP JUMPDEST PUSH3 0x2C7 DUP2 PUSH10 0x21E19E0C9BAB2400000 PUSH3 0x2EB JUMP JUMPDEST POP POP PUSH2 0x3E8 PUSH1 0x11 DUP2 SWAP1 SSTORE PUSH1 0x12 SSTORE POP PUSH3 0x788 JUMP JUMPDEST PUSH3 0x2E7 DUP3 DUP3 PUSH3 0x3E7 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x343 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x204 JUMP JUMPDEST PUSH3 0x35F DUP2 PUSH1 0x2 SLOAD PUSH3 0x450 PUSH1 0x20 SHL PUSH3 0x2986 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH3 0x392 SWAP2 DUP4 SWAP1 PUSH3 0x2986 PUSH3 0x450 DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE SWAP3 MLOAD DUP5 DUP2 MSTORE SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH3 0x40E SWAP2 DUP4 SWAP1 PUSH3 0x29FF PUSH3 0x4BC DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST ISZERO PUSH3 0x2E7 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x45F DUP4 DUP6 PUSH3 0x761 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH3 0x4B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x204 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x4B3 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH3 0x51B 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 PUSH3 0x4B6 JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0x4B6 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x532 SWAP1 PUSH3 0x724 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x556 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x5A1 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x571 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x5A1 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x5A1 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x5A1 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x584 JUMP JUMPDEST POP PUSH3 0x5AF SWAP3 SWAP2 POP PUSH3 0x5B3 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x5AF JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x5B4 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x5F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x60F JUMPI PUSH3 0x60F PUSH3 0x5CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x63A JUMPI PUSH3 0x63A PUSH3 0x5CA JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0x657 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x67B JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0x65C JUMP JUMPDEST DUP4 DUP3 GT ISZERO PUSH3 0x68D JUMPI PUSH1 0x0 DUP4 DUP6 DUP4 ADD ADD MSTORE JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x6AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x6C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x6D3 DUP8 DUP4 DUP9 ADD PUSH3 0x5E0 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x6EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x6F9 DUP7 DUP3 DUP8 ADD PUSH3 0x5E0 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD SWAP1 SWAP4 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x719 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x739 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0x75B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0x783 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x43B8 PUSH3 0x7D8 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH2 0x23DD ADD MSTORE PUSH1 0x0 PUSH2 0x2F1F ADD MSTORE PUSH1 0x0 PUSH2 0x2F6E ADD MSTORE PUSH1 0x0 PUSH2 0x2F49 ADD MSTORE PUSH1 0x0 PUSH2 0x2ECD ADD MSTORE PUSH1 0x0 PUSH2 0x2EF6 ADD MSTORE PUSH2 0x43B8 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 0x3D0 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x79CC6790 GT PUSH2 0x1FF JUMPI DUP1 PUSH4 0xAE773029 GT PUSH2 0x11A JUMPI DUP1 PUSH4 0xD01DD162 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0xE6344628 EQ PUSH2 0x8FA JUMPI DUP1 PUSH4 0xF1FC1FFF EQ PUSH2 0x90D JUMPI DUP1 PUSH4 0xF72BD4F0 EQ PUSH2 0x916 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xD01DD162 EQ PUSH2 0x868 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x87B JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x88E JUMPI DUP1 PUSH4 0xD914CD4B EQ PUSH2 0x8A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC03F7BE3 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xC03F7BE3 EQ PUSH2 0x836 JUMPI DUP1 PUSH4 0xC1E2785B EQ PUSH2 0x83F JUMPI DUP1 PUSH4 0xC2593C27 EQ PUSH2 0x848 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xAE773029 EQ PUSH2 0x7DA JUMPI DUP1 PUSH4 0xAEE06A5E EQ PUSH2 0x808 JUMPI DUP1 PUSH4 0xB4F56B26 EQ PUSH2 0x81B JUMPI DUP1 PUSH4 0xBEF40EC8 EQ PUSH2 0x82E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9A6F978D GT PUSH2 0x192 JUMPI DUP1 PUSH4 0xA6959F0F GT PUSH2 0x161 JUMPI DUP1 PUSH4 0xA6959F0F EQ PUSH2 0x78E JUMPI DUP1 PUSH4 0xA8A778AE EQ PUSH2 0x7A1 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x7B4 JUMPI DUP1 PUSH4 0xAB3D1BB6 EQ PUSH2 0x7C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9A6F978D EQ PUSH2 0x74E JUMPI DUP1 PUSH4 0xA085EA7C EQ PUSH2 0x760 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x773 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x77B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x87A140C3 GT PUSH2 0x1CE JUMPI DUP1 PUSH4 0x87A140C3 EQ PUSH2 0x713 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x720 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x733 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x746 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x6BA JUMPI DUP1 PUSH4 0x7ADBF973 EQ PUSH2 0x6CD JUMPI DUP1 PUSH4 0x7DC0D1D0 EQ PUSH2 0x6E0 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x700 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x2EF JUMPI DUP1 PUSH4 0x4D97897B GT PUSH2 0x282 JUMPI DUP1 PUSH4 0x597BF738 GT PUSH2 0x251 JUMPI DUP1 PUSH4 0x597BF738 EQ PUSH2 0x64B JUMPI DUP1 PUSH4 0x5A446215 EQ PUSH2 0x65E JUMPI DUP1 PUSH4 0x6793F0AC EQ PUSH2 0x671 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x684 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4D97897B EQ PUSH2 0x5ED JUMPI DUP1 PUSH4 0x51E238E3 EQ PUSH2 0x60D JUMPI DUP1 PUSH4 0x54505517 EQ PUSH2 0x61E JUMPI DUP1 PUSH4 0x564B81EF EQ PUSH2 0x645 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x36568ABE GT PUSH2 0x2BE JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x5A1 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x5B4 JUMPI DUP1 PUSH4 0x3B7D0946 EQ PUSH2 0x5C7 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x54F JUMPI DUP1 PUSH4 0x349432D9 EQ PUSH2 0x569 JUMPI DUP1 PUSH4 0x34DDB95D EQ PUSH2 0x572 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x599 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1C5DF1E5 GT PUSH2 0x367 JUMPI DUP1 PUSH4 0x248A9CA3 GT PUSH2 0x336 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x4CB JUMPI DUP1 PUSH4 0x27DAF4F8 EQ PUSH2 0x4EE JUMPI DUP1 PUSH4 0x2EB9771B EQ PUSH2 0x533 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x53C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1C5DF1E5 EQ PUSH2 0x489 JUMPI DUP1 PUSH4 0x2258750A EQ PUSH2 0x49C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x4A5 JUMPI DUP1 PUSH4 0x2480FCEA EQ PUSH2 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x15EA919C GT PUSH2 0x3A3 JUMPI DUP1 PUSH4 0x15EA919C EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0x16B0C846 EQ PUSH2 0x461 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x478 JUMPI DUP1 PUSH4 0x19D05D09 EQ PUSH2 0x480 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x3D5 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x3F3 JUMPI DUP1 PUSH4 0xC0A25AA EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x11AF9A4B EQ PUSH2 0x42B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3DD PUSH2 0x91F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3EA SWAP2 SWAP1 PUSH2 0x3956 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x406 PUSH2 0x401 CALLDATASIZE PUSH1 0x4 PUSH2 0x39F2 JUMP JUMPDEST PUSH2 0x9AD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3EA JUMP JUMPDEST PUSH2 0x429 PUSH2 0x424 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A2A JUMP JUMPDEST PUSH2 0x9C4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x429 PUSH2 0x439 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A47 JUMP JUMPDEST PUSH2 0xACA JUMP JUMPDEST PUSH2 0x406 PUSH2 0x44C CALLDATASIZE PUSH1 0x4 PUSH2 0x3A47 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x46A PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3EA JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x46A JUMP JUMPDEST PUSH2 0x46A PUSH1 0x13 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x497 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A62 JUMP JUMPDEST PUSH2 0xBCD JUMP JUMPDEST PUSH2 0x46A PUSH1 0x16 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x4B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A7B JUMP JUMPDEST PUSH2 0xC92 JUMP JUMPDEST PUSH2 0x46A PUSH2 0x4C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B35 JUMP JUMPDEST PUSH2 0xD26 JUMP JUMPDEST PUSH2 0x46A PUSH2 0x4D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A62 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH2 0x50E SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3EA JUMP JUMPDEST PUSH2 0x46A PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x54A CALLDATASIZE PUSH1 0x4 PUSH2 0x3BDB JUMP JUMPDEST PUSH2 0xE66 JUMP JUMPDEST PUSH2 0x557 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3EA JUMP JUMPDEST PUSH2 0x46A PUSH1 0x12 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x46A PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP2 JUMP JUMPDEST PUSH2 0x46A PUSH2 0xF1C JUMP JUMPDEST PUSH2 0x429 PUSH2 0x5AF CALLDATASIZE PUSH1 0x4 PUSH2 0x3BDB JUMP JUMPDEST PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x406 PUSH2 0x5C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x39F2 JUMP JUMPDEST PUSH2 0xFDA JUMP JUMPDEST PUSH2 0x429 PUSH2 0x5D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A47 JUMP JUMPDEST PUSH2 0x101D JUMP JUMPDEST PUSH2 0x429 PUSH2 0x5E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A62 JUMP JUMPDEST PUSH2 0x136C JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x50E SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x46A PUSH10 0x21E19E0C9BAB2400000 DUP2 JUMP JUMPDEST PUSH2 0x46A PUSH32 0xB25402418AD555013210365A422F9F1206B2DD00719998DB06F8A1FBE014641B DUP2 JUMP JUMPDEST CHAINID PUSH2 0x46A JUMP JUMPDEST PUSH2 0x429 PUSH2 0x659 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A62 JUMP JUMPDEST PUSH2 0x1379 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x66C CALLDATASIZE PUSH1 0x4 PUSH2 0x3C95 JUMP JUMPDEST PUSH2 0x143E JUMP JUMPDEST PUSH2 0x406 PUSH2 0x67F CALLDATASIZE PUSH1 0x4 PUSH2 0x3D45 JUMP JUMPDEST PUSH2 0x1535 JUMP JUMPDEST PUSH2 0x46A PUSH2 0x692 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A47 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x6C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x39F2 JUMP JUMPDEST PUSH2 0x1616 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x6DB CALLDATASIZE PUSH1 0x4 PUSH2 0x3A47 JUMP JUMPDEST PUSH2 0x1662 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH2 0x50E SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x46A PUSH2 0x70E CALLDATASIZE PUSH1 0x4 PUSH2 0x3A47 JUMP JUMPDEST PUSH2 0x1765 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH2 0x406 SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x50E PUSH2 0x72E CALLDATASIZE PUSH1 0x4 PUSH2 0x3D91 JUMP JUMPDEST PUSH2 0x1790 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x741 CALLDATASIZE PUSH1 0x4 PUSH2 0x3BDB JUMP JUMPDEST PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x3DD PUSH2 0x17C7 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH2 0x406 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x76E CALLDATASIZE PUSH1 0x4 PUSH2 0x3D91 JUMP JUMPDEST PUSH2 0x17D4 JUMP JUMPDEST PUSH2 0x46A PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x789 CALLDATASIZE PUSH1 0x4 PUSH2 0x39F2 JUMP JUMPDEST PUSH2 0x18A4 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x79C CALLDATASIZE PUSH1 0x4 PUSH2 0x3D91 JUMP JUMPDEST PUSH2 0x1900 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x7AF CALLDATASIZE PUSH1 0x4 PUSH2 0x39F2 JUMP JUMPDEST PUSH2 0x19D0 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x7C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x39F2 JUMP JUMPDEST PUSH2 0x1AD0 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x7D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DB3 JUMP JUMPDEST PUSH2 0x1ADD JUMP JUMPDEST PUSH2 0x7ED PUSH2 0x7E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B35 JUMP JUMPDEST PUSH2 0x1F3B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x3EA JUMP JUMPDEST PUSH2 0x429 PUSH2 0x816 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A47 JUMP JUMPDEST PUSH2 0x1F62 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x829 CALLDATASIZE PUSH1 0x4 PUSH2 0x39F2 JUMP JUMPDEST PUSH2 0x2108 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x2200 JUMP JUMPDEST PUSH2 0x46A PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH2 0x46A PUSH1 0x14 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH2 0x406 SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x46A PUSH2 0x863 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A62 JUMP JUMPDEST PUSH2 0x2321 JUMP JUMPDEST PUSH2 0x50E PUSH2 0x876 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A62 JUMP JUMPDEST PUSH2 0x2338 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x889 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E14 JUMP JUMPDEST PUSH2 0x236F JUMP JUMPDEST PUSH2 0x429 PUSH2 0x89C CALLDATASIZE PUSH1 0x4 PUSH2 0x3BDB JUMP JUMPDEST PUSH2 0x252E JUMP JUMPDEST PUSH2 0x429 PUSH2 0x8AF CALLDATASIZE PUSH1 0x4 PUSH2 0x3A47 JUMP JUMPDEST PUSH2 0x25D6 JUMP JUMPDEST PUSH2 0x46A PUSH2 0x8C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E87 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x908 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A2A JUMP JUMPDEST PUSH2 0x2897 JUMP JUMPDEST PUSH2 0x46A PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH2 0x46A PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH2 0x92C SWAP1 PUSH2 0x3EB1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x958 SWAP1 PUSH2 0x3EB1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x9A5 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x97A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x9A5 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 0x988 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9BA CALLER DUP5 DUP5 PUSH2 0x2A31 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x9EE PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0xA59 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x15 DUP1 SLOAD DUP3 ISZERO ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF SWAP1 SWAP2 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xE50BC939DC0E5025414F0F3B58008DE090812F288A3670DB7E723EF663DCDC54 SWAP1 PUSH2 0xABF SWAP1 DUP4 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xAF4 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0xB5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xD7AB6B495FC0223207243F48D9C9E2C8303180B6D1914BE5710ECF209EBD2D1C SWAP1 PUSH1 0x20 ADD PUSH2 0xABF JUMP JUMPDEST PUSH2 0xBF7 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0xC5D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0xE DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0xC7443059C2ED485E2C9EFE4E766BEF9432A6F0ED6695741AB4AFDFFAB3B92157 SWAP1 PUSH1 0x20 ADD PUSH2 0xABF JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC9F DUP5 DUP5 DUP5 PUSH2 0x2BE5 JUMP JUMPDEST PUSH2 0xD1C DUP5 CALLER PUSH2 0xD17 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4312 PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 CALLER JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x2E0F JUMP JUMPDEST PUSH2 0x2A31 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 JUMPDEST PUSH1 0xA SLOAD DUP2 LT ISZERO PUSH2 0xE5F JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xA DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xD60 JUMPI PUSH2 0xD60 PUSH2 0x3EFF JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xE4D JUMPI PUSH1 0xA DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xD9A JUMPI PUSH2 0xD9A PUSH2 0x3EFF JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xB6258AAA SWAP1 DUP7 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0xDD9 JUMPI PUSH2 0xDD9 PUSH2 0x3EFF JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDFF SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE1C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE40 SWAP2 SWAP1 PUSH2 0x3F2E JUMP JUMPDEST PUSH2 0xE4A SWAP1 DUP4 PUSH2 0x3F76 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP1 PUSH2 0xE57 DUP2 PUSH2 0x3F8E JUMP JUMPDEST SWAP2 POP POP PUSH2 0xD2B JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xE82 SWAP1 CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0xF0E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F206772616E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH2 0xF18 DUP3 DUP3 PUSH2 0x2E63 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF26 PUSH2 0x2EC9 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ PUSH2 0xFD0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH2 0xF18 DUP3 DUP3 PUSH2 0x2FBC JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x9BA SWAP2 DUP6 SWAP1 PUSH2 0xD17 SWAP1 DUP7 PUSH2 0x2986 JUMP JUMPDEST PUSH2 0x1047 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x10AD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1150 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A72656D6F7665506F6F6C3A205A65726F2061646472657373206465 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7465637465640000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x1 EQ PUSH2 0x1209 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4445493A3A72656D6F7665506F6F6C3A2041646472657373206E6F6E65786973 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x74616E7400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMPDEST PUSH1 0xA SLOAD DUP2 LT ISZERO PUSH2 0x1325 JUMPI DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xA DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1289 JUMPI PUSH2 0x1289 PUSH2 0x3EFF JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1313 JUMPI PUSH1 0x0 PUSH1 0xA DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x12C6 JUMPI PUSH2 0x12C6 PUSH2 0x3EFF JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1325 JUMP JUMPDEST DUP1 PUSH2 0x131D DUP2 PUSH2 0x3F8E JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1255 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x4106DFDAA577573DB51C0CA93F766DBEDFA0758FAA2E7F5BCDB7C142BE803C3F SWAP1 PUSH1 0x20 ADD PUSH2 0xABF JUMP JUMPDEST PUSH2 0x1376 CALLER DUP3 PUSH2 0x3022 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x13A3 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x1409 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0xD DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0x3E2F198539455D04450252BFC103C833CA10D4231DA6509E0528BB2383E22B73 SWAP1 PUSH1 0x20 ADD PUSH2 0xABF JUMP JUMPDEST PUSH2 0x1468 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x14CE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST DUP2 MLOAD PUSH2 0x14E1 SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x38BD JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x14F5 SWAP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x38BD JUMP JUMPDEST POP PUSH32 0x24A9AEF9121BA62598F20F8F80FD406FA1D2D956747E0728068C649F324DDF41 PUSH1 0x6 PUSH1 0x5 PUSH1 0x40 MLOAD PUSH2 0x1529 SWAP3 SWAP2 SWAP1 PUSH2 0x409E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xFB0FE3F4 PUSH2 0x15AD DUP7 PUSH1 0x40 MLOAD PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x3C DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x5C ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15CD SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x410C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x160E SWAP2 SWAP1 PUSH2 0x41EE JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1646 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x433A PUSH1 0x24 SWAP2 CODECOPY PUSH2 0x163F DUP7 CALLER PUSH2 0x8C2 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x2E0F JUMP JUMPDEST SWAP1 POP PUSH2 0x1653 DUP4 CALLER DUP4 PUSH2 0x2A31 JUMP JUMPDEST PUSH2 0x165D DUP4 DUP4 PUSH2 0x3022 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x168C PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x16F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x3F32684A32A11DABDBB8C0177DE80AA3AE36A004D75210335B49E544E48CD0AA SWAP1 PUSH1 0x20 ADD PUSH2 0xABF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x17A8 SWAP1 DUP4 PUSH2 0x3190 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x17A8 SWAP1 DUP4 PUSH2 0x31A6 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH2 0x92C SWAP1 PUSH2 0x3EB1 JUMP JUMPDEST PUSH2 0x17FE PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x1864 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x11 DUP3 SWAP1 SSTORE PUSH1 0x12 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH32 0x36D9A5EB34DE8B03405BAEA3D54341F11312730BE6F93D18C932728C9E2250D4 SWAP2 ADD PUSH2 0x1529 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9BA CALLER DUP5 PUSH2 0xD17 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x435E PUSH1 0x25 SWAP2 CODECOPY CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x2E0F JUMP JUMPDEST PUSH2 0x192A PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x1990 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x13 DUP3 SWAP1 SSTORE PUSH1 0x14 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH32 0x2896B6D714A04536BA6121E132DC3AFF2EACA8A2BA3EFF2676D6A8B435F31745 SWAP2 ADD PUSH2 0x1529 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x1 EQ PUSH2 0x1A74 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A206F6E6C792064656920706F6F6C732063616E2063616C6C20746869 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x732066756E6374696F6E00000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH2 0x1A7E DUP3 DUP3 PUSH2 0x31E5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0x4857273A485C2CFFF4B12A1064C50E871B8E0C686CF17F44C16B4F8554EDE3B1 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9BA CALLER DUP5 DUP5 PUSH2 0x2BE5 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1B70 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A436F6C6C61746572616C20526174696F20686173206265656E2070 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6175736564000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x16 SLOAD TIMESTAMP PUSH2 0x1B80 SWAP2 SWAP1 PUSH2 0x420B JUMP JUMPDEST SWAP1 POP PUSH1 0xE SLOAD DUP2 LT ISZERO PUSH2 0x1C14 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A496E7465726E616C20636F6F6C646F776E206E6F74207061737365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH31 0xA66F1F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH3 0xA66F1F SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C82 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1CA6 SWAP2 SWAP1 PUSH2 0x3F2E JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP4 DUP5 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x34 DUP4 ADD DUP14 SWAP1 MSTORE ADDRESS SWAP1 SWAP5 SHL AND PUSH1 0x54 DUP3 ADD MSTORE PUSH1 0x68 DUP2 ADD DUP11 SWAP1 MSTORE PUSH1 0x88 DUP2 ADD DUP10 SWAP1 MSTORE CHAINID PUSH1 0xA8 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC8 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 SWAP2 POP PUSH2 0x1D2C DUP2 DUP7 DUP7 PUSH2 0x1535 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1D39 DUP10 DUP5 PUSH2 0x4222 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1D46 PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1D54 DUP3 DUP5 PUSH2 0x425F JUMP JUMPDEST PUSH1 0x15 SLOAD SWAP1 SWAP2 POP PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1E04 JUMPI PUSH1 0x13 SLOAD DUP11 GT DUP1 PUSH2 0x1D78 JUMPI POP PUSH1 0x14 SLOAD DUP11 LT JUMPDEST PUSH2 0x1E04 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A5573652072656672657368436F6C6C61746572616C526174696F20 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7768656E20444549206973206F757473696465206F6620706567000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x13 SLOAD DUP11 GT ISZERO PUSH2 0x1E26 JUMPI PUSH1 0xD SLOAD PUSH1 0xC SLOAD PUSH2 0x1E1E SWAP2 SWAP1 PUSH2 0x420B JUMP JUMPDEST PUSH1 0xC SSTORE PUSH2 0x1ED5 JUMP JUMPDEST PUSH1 0x14 SLOAD DUP11 LT ISZERO PUSH2 0x1E40 JUMPI PUSH1 0xD SLOAD PUSH1 0xC SLOAD PUSH2 0x1E1E SWAP2 SWAP1 PUSH2 0x3F76 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1ED5 JUMPI PUSH3 0xF4240 PUSH1 0x11 SLOAD PUSH3 0xF4240 PUSH2 0x1E60 SWAP2 SWAP1 PUSH2 0x3F76 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH2 0x1E6D SWAP2 SWAP1 PUSH2 0x4222 JUMP JUMPDEST PUSH2 0x1E77 SWAP2 SWAP1 PUSH2 0x425F JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x1E8E JUMPI PUSH1 0xD SLOAD PUSH1 0xC SLOAD PUSH2 0x1E1E SWAP2 SWAP1 PUSH2 0x420B JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x12 SLOAD PUSH3 0xF4240 PUSH2 0x1EA3 SWAP2 SWAP1 PUSH2 0x420B JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH2 0x1EB0 SWAP2 SWAP1 PUSH2 0x4222 JUMP JUMPDEST PUSH2 0x1EBA SWAP2 SWAP1 PUSH2 0x425F JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x1ED5 JUMPI PUSH1 0xD SLOAD PUSH1 0xC SLOAD PUSH2 0x1ED1 SWAP2 SWAP1 PUSH2 0x3F76 JUMP JUMPDEST PUSH1 0xC SSTORE JUMPDEST PUSH1 0x10 DUP2 SWAP1 SSTORE TIMESTAMP PUSH1 0x16 SSTORE PUSH1 0xC SLOAD PUSH3 0xF4240 LT ISZERO PUSH2 0x1EF3 JUMPI PUSH3 0xF4240 PUSH1 0xC SSTORE JUMPDEST PUSH32 0xB1200AF9B3AC4DEC88C9D01E1FB7CC7FA1F0FE55BF4AFAC1F30CC4FC2B2D1DD2 PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH2 0x1F26 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1F49 PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH2 0x1F55 DUP7 PUSH2 0xD26 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH2 0x1F8C PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x1FF2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x2095 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A73657444455553416464726573733A205A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7320646574656374656400000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x40C19B0139E5BC25C64E466D74E6E13EE1095ACC65B58FAF1932F9583E7D812C SWAP1 PUSH1 0x20 ADD PUSH2 0xABF JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x1 EQ PUSH2 0x21AC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A206F6E6C792064656920706F6F6C732063616E2063616C6C20746869 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x732066756E6374696F6E00000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH2 0x21B6 DUP3 DUP3 PUSH2 0x323D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 CALLER SWAP1 PUSH32 0x97847A1FCBBA98B997FB5B6C48F68C2D69B53A19157DB1622218A559B95FE9BE SWAP1 PUSH1 0x20 ADD PUSH2 0x1AC4 JUMP JUMPDEST PUSH2 0x222A PUSH32 0xB25402418AD555013210365A422F9F1206B2DD00719998DB06F8A1FBE014641B CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x22B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F742074686520636F6C6C61746572616C20 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x726174696F207061757365720000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0xF DUP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP1 SWAP3 AND DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 MLOAD SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH32 0x209068F7BED5A02FB7695C3E3B61BB8324D1FACB25523C6422BFD2105EC44D92 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x9BE SWAP1 PUSH2 0x3355 JUMP JUMPDEST PUSH1 0xA DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x2348 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 JUMP JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x23D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332305065726D69743A206578706972656420646561646C696E65000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP9 DUP9 DUP9 PUSH2 0x2408 DUP13 PUSH2 0x335F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x2470 DUP3 PUSH2 0x3394 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2480 DUP3 DUP8 DUP8 DUP8 PUSH2 0x33FD JUMP JUMPDEST SWAP1 POP DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2517 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332305065726D69743A20696E76616C6964207369676E61747572650000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH2 0x2522 DUP11 DUP11 DUP11 PUSH2 0x2A31 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x254A SWAP1 CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0xFD0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F207265766F6B6500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH2 0x2600 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x2666 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x2709 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A616464506F6F6C3A205A65726F2061646472657373206465746563 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7465640000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x27BE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4445493A3A616464506F6F6C3A204164647265737320616C7265616479206578 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6973747300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0xA DUP1 SLOAD SWAP2 DUP3 ADD DUP2 SSTORE SWAP1 SWAP4 MSTORE PUSH32 0xC65A7BB8D6351C1CF70C95A316CC6A92839C986682D98BC35F958F4883F9D2A8 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND DUP5 OR SWAP1 SSTORE SWAP1 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x73CCA62AB1B520C9715BF4E6C71E3E518C754E7148F65102F43289A7DF0EFEA6 SWAP2 ADD PUSH2 0xABF JUMP JUMPDEST PUSH2 0x28C1 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x2927 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x15 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP3 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xA272B58E328AF1078A931AE3F79E96AD602C5FBBF0E953A5651B5E7E107846D2 SWAP1 PUSH1 0x20 ADD PUSH2 0xABF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2993 DUP4 DUP6 PUSH2 0x3F76 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x17A8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17A8 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x364C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x2AD3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x2B76 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x2C88 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x2D2B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH2 0x2D75 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x42EC PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x2E0F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x2DB1 SWAP1 DUP3 PUSH2 0x2986 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE MLOAD DUP5 DUP2 MSTORE SWAP1 SWAP3 SWAP2 DUP7 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x2BD8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x2E4D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA50 SWAP2 SWAP1 PUSH2 0x3956 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x2E5A DUP5 DUP7 PUSH2 0x420B JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x2E7B SWAP1 DUP3 PUSH2 0x29FF JUMP JUMPDEST ISZERO PUSH2 0xF18 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ ISZERO PUSH2 0x2F18 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 DUP3 DUP5 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP4 ADD MSTORE CHAINID PUSH1 0x80 DUP4 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x2FD4 SWAP1 DUP3 PUSH2 0x369B JUMP JUMPDEST ISZERO PUSH2 0xF18 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x30C5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH2 0x310F DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x42CA PUSH1 0x22 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x2E0F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x2 SLOAD PUSH2 0x3142 SWAP1 DUP3 PUSH2 0x36CD JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0x1AC4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x319C DUP4 DUP4 PUSH2 0x370F JUMP JUMPDEST PUSH1 0x60 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD ISZERO ISZERO PUSH2 0x17A8 JUMP JUMPDEST PUSH2 0x31EF DUP3 DUP3 PUSH2 0x3022 JUMP JUMPDEST PUSH2 0xF18 DUP3 CALLER PUSH2 0xD17 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x433A PUSH1 0x24 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 CALLER PUSH2 0xCE9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x32BA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x32C7 SWAP1 DUP3 PUSH2 0x2986 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x32FA SWAP1 DUP3 PUSH2 0x2986 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE SWAP3 MLOAD DUP5 DUP2 MSTORE SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x1AC4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9BE DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9BE PUSH2 0x33A1 PUSH2 0x2EC9 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x22 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x42 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x62 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP3 GT ISZERO PUSH2 0x34AF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7565000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST DUP4 PUSH1 0xFF AND PUSH1 0x1B EQ DUP1 PUSH2 0x34C4 JUMPI POP DUP4 PUSH1 0xFF AND PUSH1 0x1C EQ JUMPDEST PUSH2 0x3550 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7565000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP9 SWAP1 MSTORE PUSH1 0xFF DUP8 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x2E5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x3693 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 0x9BE JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17A8 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x37CA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17A8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x2E0F JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x37A2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E756D657261626C655365743A20696E646578206F7574206F6620626F756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6473000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x37B7 JUMPI PUSH2 0x37B7 PUSH2 0x3EFF JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x38B3 JUMPI PUSH1 0x0 PUSH2 0x37EE PUSH1 0x1 DUP4 PUSH2 0x420B JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x3802 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x420B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x381B JUMPI PUSH2 0x381B PUSH2 0x3EFF JUMP 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 0x383E JUMPI PUSH2 0x383E PUSH2 0x3EFF JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH2 0x3855 DUP4 PUSH1 0x1 PUSH2 0x3F76 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x3877 JUMPI PUSH2 0x3877 PUSH2 0x429A JUMP 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 0x9BE JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x9BE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x38C9 SWAP1 PUSH2 0x3EB1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x38EB JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x3931 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x3904 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x3931 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3931 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3931 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3916 JUMP JUMPDEST POP PUSH2 0x393D SWAP3 SWAP2 POP PUSH2 0x3941 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x393D JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3942 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3983 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x3967 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x3995 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x39ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3A05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3A0E DUP4 PUSH2 0x39C9 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3A3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x17A8 DUP2 PUSH2 0x3A1C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3A59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x17A8 DUP3 PUSH2 0x39C9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3A74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3A90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3A99 DUP5 PUSH2 0x39C9 JUMP JUMPDEST SWAP3 POP PUSH2 0x3AA7 PUSH1 0x20 DUP6 ADD PUSH2 0x39C9 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3B2D JUMPI PUSH2 0x3B2D PUSH2 0x3AB7 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3B48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3B60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3B74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3B86 JUMPI PUSH2 0x3B86 PUSH2 0x3AB7 JUMP JUMPDEST DUP1 PUSH1 0x5 SHL SWAP2 POP PUSH2 0x3B97 DUP5 DUP4 ADD PUSH2 0x3AE6 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 DUP4 ADD DUP5 ADD SWAP2 DUP5 DUP2 ADD SWAP1 DUP9 DUP5 GT ISZERO PUSH2 0x3BB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 DUP6 ADD SWAP4 JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x3BCF JUMPI DUP5 CALLDATALOAD DUP3 MSTORE SWAP4 DUP6 ADD SWAP4 SWAP1 DUP6 ADD SWAP1 PUSH2 0x3BB6 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3BEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x3BFE PUSH1 0x20 DUP5 ADD PUSH2 0x39C9 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3C18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3C32 JUMPI PUSH2 0x3C32 PUSH2 0x3AB7 JUMP JUMPDEST PUSH2 0x3C63 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x3AE6 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x3C78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3CA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3CC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3CCC DUP7 DUP4 DUP8 ADD PUSH2 0x3C07 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3CE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CEF DUP6 DUP3 DUP7 ADD PUSH2 0x3C07 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3D0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3D23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x3D3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3D5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3D78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D84 DUP7 DUP3 DUP8 ADD PUSH2 0x3CF9 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3DCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3DF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3E03 DUP9 DUP3 DUP10 ADD PUSH2 0x3CF9 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3E2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3E38 DUP9 PUSH2 0x39C9 JUMP JUMPDEST SWAP7 POP PUSH2 0x3E46 PUSH1 0x20 DUP10 ADD PUSH2 0x39C9 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3E6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3E9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3EA3 DUP4 PUSH2 0x39C9 JUMP JUMPDEST SWAP2 POP PUSH2 0x3BFE PUSH1 0x20 DUP5 ADD PUSH2 0x39C9 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x3EC5 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x338E JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3F89 JUMPI PUSH2 0x3F89 PUSH2 0x3F47 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x3FC0 JUMPI PUSH2 0x3FC0 PUSH2 0x3F47 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP1 DUP4 AND DUP1 PUSH2 0x3FE1 JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x20 DUP1 DUP5 LT DUP3 EQ ISZERO PUSH2 0x401C JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 DUP9 MSTORE PUSH1 0x20 DUP9 ADD DUP3 DUP1 ISZERO PUSH2 0x4037 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x4066 JUMPI PUSH2 0x4091 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP8 AND DUP3 MSTORE DUP3 DUP3 ADD SWAP8 POP PUSH2 0x4091 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x408B JUMPI DUP2 SLOAD DUP5 DUP3 ADD MSTORE SWAP1 DUP7 ADD SWAP1 DUP5 ADD PUSH2 0x4072 JUMP JUMPDEST DUP4 ADD SWAP9 POP POP JUMPDEST POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x40B1 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3FC7 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2E5A DUP2 DUP6 PUSH2 0x3FC7 JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD DUP6 DUP4 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP6 ADD MSTORE DUP2 DUP6 DUP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP1 POP PUSH1 0x60 DUP7 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP7 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x41E0 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP8 DUP7 SUB ADD DUP4 MSTORE DUP2 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP11 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4197 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 ADD DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x41B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP12 SGT ISZERO PUSH2 0x41BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x41CC DUP8 DUP3 DUP9 DUP6 ADD PUSH2 0x40C3 JUMP JUMPDEST SWAP7 POP POP POP SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4136 JUMP JUMPDEST POP SWAP3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x17A8 DUP2 PUSH2 0x3A1C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x421D JUMPI PUSH2 0x421D PUSH2 0x3F47 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x425A JUMPI PUSH2 0x425A PUSH2 0x3F47 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4295 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x2062616C616E636545524332303A207472616E73 PUSH7 0x657220616D6F75 PUSH15 0x74206578636565647320616C6C6F77 PUSH2 0x6E63 PUSH6 0x45524332303A KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E74206578636565647320616C6C6F77616E63654552 NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x7358221220E461 PUSH5 0x6F2D503BF7 DUP1 0xA9 RETURN SWAP3 PUSH3 0x15FFA5 SWAP3 0xEF PUSH20 0xF33F8529487295FCAF87728F9E64736F6C634300 ADDMOD EXP STOP CALLER ", + "sourceMap": "1626:10870:5:-:0;;;1142:95:19;1097:140;;2863:43:5;;;-1:-1:-1;;2863:43:5;;;3501:833;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3603:4;1469:52:19;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2340:564:3;;;;;;;;;;;-1:-1:-1;;;2340:564:3;;;;;2426:22;;;;;;;;;2663:25;;;;2482;2698:31;;;;2758:13;2739:32;;;;3447:73;;2536:117;3447:73;;;2770:25:39;;;2811:18;;;2804:34;;;;2854:18;;;2847:34;;;;2897:18;;;;2890:34;;;;3514:4:3;2940:19:39;;;2933:61;3447:73:3;;;;;;;;;;2742:19:39;;;;3447:73:3;;;3437:84;;;;;;;;;;2781:85;;;-1:-1:-1;;;2876:21:3;;-1:-1:-1;;;;;3625:29:5;::::1;3613:79;;;::::0;-1:-1:-1;;;3613:79:5;;2357:2:39;3613:79:5::1;::::0;::::1;2339:21:39::0;2396:2;2376:18;;;2369:30;2435:29;2415:18;;;2408:57;2482:18;;3613:79:5::1;;;;;;;;;3696:12:::0;;::::1;::::0;:4:::1;::::0;:12:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;3712:16:5;;::::1;::::0;:6:::1;::::0;:16:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;3743:4:5::1;3732:8;:15:::0;3820:6:::1;3794:23;:32:::0;3921:3:::1;3902:16;:22:::0;4000:47:::1;-1:-1:-1::0;4031:15:5;4000:10:::1;:47::i;:::-;4051:52;2759:36;4087:15:::0;4051:10:::1;:52::i;:::-;4107:40;2836:24;4131:15:::0;4107:10:::1;:40::i;:::-;4151:38;4157:15:::0;1931:8:::1;4151:5;:38::i;:::-;-1:-1:-1::0;;4300:4:5::1;4286:11;:18:::0;;;4308:14:::1;:21:::0;-1:-1:-1;1626:10870:5;;6653:110:20;6731:25;6742:4;6748:7;6731:10;:25::i;:::-;6653:110;;:::o;6313:370:15:-;-1:-1:-1;;;;;6396:21:15;;6388:65;;;;-1:-1:-1;;;6388:65:15;;3207:2:39;6388:65:15;;;3189:21:39;3246:2;3226:18;;;3219:30;3285:33;3265:18;;;3258:61;3336:18;;6388:65:15;3005:355:39;6388:65:15;6539:24;6556:6;6539:12;;:16;;;;;;:24;;;;:::i;:::-;6524:12;:39;-1:-1:-1;;;;;6594:18:15;;:9;:18;;;;;;;;;;;;:30;;6617:6;;6594:22;;;;;:30;;:::i;:::-;-1:-1:-1;;;;;6573:18:15;;:9;:18;;;;;;;;;;;:51;;;;6639:37;;3511:25:39;;;6573:18:15;;:9;;6639:37;;3484:18:39;6639:37:15;;;;;;;6313:370;;:::o;7090:184:20:-;7163:12;;;;:6;:12;;;;;;;;:33;;7188:7;;7163:24;;;;;:33;;:::i;:::-;7159:109;;;7217:40;;686:10:4;;-1:-1:-1;;;;;7217:40:20;;;7229:4;;7217:40;;;;;7090:184;;:::o;868:176:23:-;926:7;;957:5;961:1;957;:5;:::i;:::-;945:17;;985:1;980;:6;;972:46;;;;-1:-1:-1;;;972:46:23;;3979:2:39;972:46:23;;;3961:21:39;4018:2;3998:18;;;3991:30;4057:29;4037:18;;;4030:57;4104:18;;972:46:23;3777:351:39;972:46:23;1036:1;-1:-1:-1;868:176:23;;;;;:::o;4866:141:38:-;4936:4;4959:41;4964:3;-1:-1:-1;;;;;;4984:14:38;;;;4976:23;1676:4;3874:19;;;:12;;;:19;;;;;;1692:319;;-1:-1:-1;1734:23:38;;;;;;;;:11;:23;;;;;;;;;;;;;1914:18;;1892:19;;;:12;;;:19;;;;;;:40;;;;1946:11;;1692:319;-1:-1:-1;1995:5:38;1988:12;;1626:10870:5;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1626:10870:5;;;-1:-1:-1;1626:10870:5;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:39;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:885;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:39;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:39;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;930:2;927:1;924:9;921:80;;;989:1;984:2;979;971:6;967:15;963:24;956:35;921:80;1019:6;146:885;-1:-1:-1;;;;;;146:885:39:o;1036:729::-;1144:6;1152;1160;1213:2;1201:9;1192:7;1188:23;1184:32;1181:52;;;1229:1;1226;1219:12;1181:52;1256:16;;-1:-1:-1;;;;;1321:14:39;;;1318:34;;;1348:1;1345;1338:12;1318:34;1371:61;1424:7;1415:6;1404:9;1400:22;1371:61;:::i;:::-;1361:71;;1478:2;1467:9;1463:18;1457:25;1441:41;;1507:2;1497:8;1494:16;1491:36;;;1523:1;1520;1513:12;1491:36;;1546:63;1601:7;1590:8;1579:9;1575:24;1546:63;:::i;:::-;1652:2;1637:18;;1631:25;1536:73;;-1:-1:-1;1631:25:39;-1:-1:-1;;;;;;1685:31:39;;1675:42;;1665:70;;1731:1;1728;1721:12;1665:70;1754:5;1744:15;;;1036:729;;;;;:::o;1770:380::-;1849:1;1845:12;;;;1892;;;1913:61;;1967:4;1959:6;1955:17;1945:27;;1913:61;2020:2;2012:6;2009:14;1989:18;1986:38;1983:161;;;2066:10;2061:3;2057:20;2054:1;2047:31;2101:4;2098:1;2091:15;2129:4;2126:1;2119:15;1983:161;;1770:380;;;:::o;3547:225::-;3587:3;3618:1;3614:6;3611:1;3608:13;3605:136;;;3663:10;3658:3;3654:20;3651:1;3644:31;3698:4;3695:1;3688:15;3726:4;3723:1;3716:15;3605:136;-1:-1:-1;3757:9:39;;3547:225::o;3777:351::-;1626:10870:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@COLLATERAL_RATIO_PAUSER_507": { + "entryPoint": null, + "id": 507, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DEFAULT_ADMIN_ROLE_6026": { + "entryPoint": null, + "id": 6026, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DEI_bottom_band_525": { + "entryPoint": null, + "id": 525, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DEI_top_band_523": { + "entryPoint": null, + "id": 523, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DIP_529": { + "entryPoint": null, + "id": 529, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DOMAIN_SEPARATOR_5967": { + "entryPoint": 3868, + "id": 5967, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@GR_bottom_band_521": { + "entryPoint": null, + "id": 521, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@GR_top_band_519": { + "entryPoint": null, + "id": 519, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@TRUSTY_ROLE_512": { + "entryPoint": null, + "id": 512, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_add_11596": { + "entryPoint": 13900, + "id": 11596, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_approve_5392": { + "entryPoint": 10801, + "id": 5392, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_at_11736": { + "entryPoint": 14095, + "id": 11736, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_beforeTokenTransfer_5433": { + "entryPoint": null, + "id": 5433, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_buildDomainSeparator_413": { + "entryPoint": null, + "id": 413, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@_burnFrom_5422": { + "entryPoint": 12773, + "id": 5422, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_burn_5347": { + "entryPoint": 12322, + "id": 5347, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_contains_11696": { + "entryPoint": null, + "id": 11696, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_domainSeparatorV4_386": { + "entryPoint": 11977, + "id": 386, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_grantRole_6258": { + "entryPoint": 11875, + "id": 6258, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_hashTypedDataV4_429": { + "entryPoint": 13204, + "id": 429, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_length_11710": { + "entryPoint": null, + "id": 11710, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_mint_5245": { + "entryPoint": 12861, + "id": 5245, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_msgSender_444": { + "entryPoint": null, + "id": 444, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_remove_11677": { + "entryPoint": 14282, + "id": 11677, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_revokeRole_6282": { + "entryPoint": 12220, + "id": 6282, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_transfer_5190": { + "entryPoint": 11237, + "id": 5190, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_useNonce_5996": { + "entryPoint": 13151, + "id": 5996, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@activateDIP_994": { + "entryPoint": 2500, + "id": 994, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@addPool_1085": { + "entryPoint": 9686, + "id": 1085, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@add_11764": { + "entryPoint": 10751, + "id": 11764, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@add_6728": { + "entryPoint": 10630, + "id": 6728, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@allowance_5008": { + "entryPoint": null, + "id": 5008, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@approve_5029": { + "entryPoint": 2477, + "id": 5029, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@at_11851": { + "entryPoint": 12688, + "id": 11851, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@balanceOf_4969": { + "entryPoint": null, + "id": 4969, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@burnFrom_5291": { + "entryPoint": 5654, + "id": 5291, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@burn_5258": { + "entryPoint": 4972, + "id": 5258, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@collateral_ratio_paused_515": { + "entryPoint": null, + "id": 515, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@contains_11812": { + "entryPoint": 12710, + "id": 11812, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@current_53": { + "entryPoint": null, + "id": 53, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@decimals_477": { + "entryPoint": null, + "id": 477, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@decreaseAllowance_5124": { + "entryPoint": 6308, + "id": 5124, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@dei_info_669": { + "entryPoint": 7995, + "id": 669, + "parameterSlots": 1, + "returnSlots": 3 + }, + "@dei_pools_493": { + "entryPoint": null, + "id": 493, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@dei_pools_array_489": { + "entryPoint": 9016, + "id": 489, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@dei_step_500": { + "entryPoint": null, + "id": 500, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@deus_address_481": { + "entryPoint": null, + "id": 481, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@genesis_supply_484": { + "entryPoint": null, + "id": 484, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@getChainID_734": { + "entryPoint": null, + "id": 734, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getRoleAdmin_6121": { + "entryPoint": null, + "id": 6121, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMemberCount_6088": { + "entryPoint": 8993, + "id": 6088, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMember_6107": { + "entryPoint": 6032, + "id": 6107, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@globalCollateralValue_722": { + "entryPoint": 3366, + "id": 722, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@global_collateral_ratio_498": { + "entryPoint": null, + "id": 498, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@grantRole_6147": { + "entryPoint": 3686, + "id": 6147, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@growth_ratio_517": { + "entryPoint": null, + "id": 517, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@hasRole_6072": { + "entryPoint": 6063, + "id": 6072, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@increaseAllowance_5095": { + "entryPoint": 4058, + "id": 5095, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@increment_67": { + "entryPoint": null, + "id": 67, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@last_call_time_736": { + "entryPoint": null, + "id": 736, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@length_11827": { + "entryPoint": 13141, + "id": 11827, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@name_474": { + "entryPoint": 2335, + "id": 474, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@nonces_5956": { + "entryPoint": 5989, + "id": 5956, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@oracle_479": { + "entryPoint": null, + "id": 479, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@permit_5940": { + "entryPoint": 9071, + "id": 5940, + "parameterSlots": 7, + "returnSlots": 0 + }, + "@pool_burn_from_1018": { + "entryPoint": 6608, + "id": 1018, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@pool_mint_1042": { + "entryPoint": 8456, + "id": 1042, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@recover_254": { + "entryPoint": 13309, + "id": 254, + "parameterSlots": 4, + "returnSlots": 1 + }, + "@refreshCollateralRatio_916": { + "entryPoint": 6877, + "id": 916, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@refresh_cooldown_502": { + "entryPoint": null, + "id": 502, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@removePool_1151": { + "entryPoint": 4125, + "id": 1151, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@remove_11788": { + "entryPoint": 13979, + "id": 11788, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@renounceRole_6195": { + "entryPoint": 3883, + "id": 6195, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@reserve_tracker_address_486": { + "entryPoint": null, + "id": 486, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@revokeRole_6173": { + "entryPoint": 9518, + "id": 6173, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setDEIStep_1206": { + "entryPoint": 4985, + "id": 1206, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setDEUSAddress_1264": { + "entryPoint": 8034, + "id": 1264, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setGrowthRatioBands_955": { + "entryPoint": 6100, + "id": 955, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setNameAndSymbol_1174": { + "entryPoint": 5182, + "id": 1174, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setOracle_1190": { + "entryPoint": 5730, + "id": 1190, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setPriceBands_978": { + "entryPoint": 6400, + "id": 978, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setRefreshCooldown_1238": { + "entryPoint": 3021, + "id": 1238, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setReserveTracker_1222": { + "entryPoint": 2762, + "id": 1222, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setUseGrowthRatio_932": { + "entryPoint": 10391, + "id": 932, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@sub_6745": { + "entryPoint": 14029, + "id": 6745, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@sub_6773": { + "entryPoint": 11791, + "id": 6773, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@symbol_472": { + "entryPoint": 6087, + "id": 472, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@toEthSignedMessageHash_271": { + "entryPoint": null, + "id": 271, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@toTypedDataHash_291": { + "entryPoint": null, + "id": 291, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@toggleCollateralRatio_1286": { + "entryPoint": 8704, + "id": 1286, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@totalSupply_4955": { + "entryPoint": null, + "id": 4955, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@transferFrom_5067": { + "entryPoint": 3218, + "id": 5067, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@transfer_4990": { + "entryPoint": 6864, + "id": 4990, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@use_growth_ratio_527": { + "entryPoint": null, + "id": 527, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@verify_price_648": { + "entryPoint": 5429, + "id": 648, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_address": { + "entryPoint": 14793, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_array_bytes_calldata_dyn_calldata": { + "entryPoint": 15609, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_string": { + "entryPoint": 15367, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 14919, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 16007, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_addresst_uint256": { + "entryPoint": 14971, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32": { + "entryPoint": 15892, + "id": null, + "parameterSlots": 2, + "returnSlots": 7 + }, + "abi_decode_tuple_t_addresst_uint256": { + "entryPoint": 14834, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr": { + "entryPoint": 15157, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bool": { + "entryPoint": 14890, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bool_fromMemory": { + "entryPoint": 16878, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32t_address": { + "entryPoint": 15323, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes32t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": { + "entryPoint": 15685, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_bytes32t_uint256": { + "entryPoint": 15761, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr": { + "entryPoint": 15509, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": 14946, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256_fromMemory": { + "entryPoint": 16174, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256t_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": { + "entryPoint": 15795, + "id": null, + "parameterSlots": 2, + "returnSlots": 5 + }, + "abi_encode_bytes_calldata": { + "entryPoint": 16579, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_string_storage": { + "entryPoint": 16327, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 7, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73_t_bytes32__to_t_string_memory_ptr_t_bytes32__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 7, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 16652, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 14678, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_storage_t_string_storage__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 16542, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_12ac24c3ffefd74f53fba28db5a84496d08720f6235d7115ecc606be7567fe10__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_135752039067ec9728ec6cc2401f2209e0aa44d6599e067098e5282676485de6__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_2c2a9a3e1243d1c4990a92a49185c5301054f4ed462802e7413e97975991ef03__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_31b4913319800bc14f3ac10959626412727e6e236f8f0f67dfae737e33f2a9ea__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3e89525a63fb9c966b61cf8f5305156de8420bc773a2b60828a2f32c3c5797bd__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_5d76525ad886bfae65df1a2a4093e79ca5549605e2e56b119fbbd06a964cb1c1__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_79790c34889f935f8f9c1f9e95159c47311bbacd30b96ce8eb641f4da4a41ea5__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_94ca1ab58dfda790a1782ffbb0c0a140ec51d4148dbeecc6c39e37b25ff4b124__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_ad6015c13a0e63f548d13ba3fdb3fd25b250b515fed8d06aa09cb97bfbd3a2ad__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_c446382fb772bec07e0925670c9a4b988b44e71ae32f6ec0b51063257cb4a352__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_cd3981bc95962e0a9b20d76af41ca9bc6eca9273045b5feb5b9ab06e8f37766c__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_d7b768e1373234e0883c129bd428f5c8535c242446bb3a854d95826c27f5ad93__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_f1302f3464c1aea577cd673876485194e38e4985225906230482083933ea77bf__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "allocate_memory": { + "entryPoint": 15078, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_dataslot_string_storage": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_string": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 16246, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_div_t_uint256": { + "entryPoint": 16991, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_mul_t_uint256": { + "entryPoint": 16930, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 16907, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "extract_byte_array_length": { + "entryPoint": 16049, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "increment_t_uint256": { + "entryPoint": 16270, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 16199, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x31": { + "entryPoint": 17050, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 16127, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 15031, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_bool": { + "entryPoint": 14876, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:29567:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "91:73:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "108:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "113:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "101:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "101:19:39" + }, + "nodeType": "YulExpressionStatement", + "src": "101:19:39" + }, + { + "nodeType": "YulAssignment", + "src": "129:29:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "148:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "153:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "144:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "144:14:39" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "129:11:39" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_string", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "59:3:39", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "64:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "75:11:39", + "type": "" + } + ], + "src": "14:150:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "290:535:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "300:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "310:2:39", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "304:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "328:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "339:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "321:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "321:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "321:21:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "351:27:39", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "371:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "365:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "365:13:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "355:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "398:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "409:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "394:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "394:18:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "414:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "387:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "387:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "387:34:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "430:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "439:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "434:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "499:90:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "528:9:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "539:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "524:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "524:17:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "543:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "520:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "520:26:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "562:6:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "570:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "558:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "558:14:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "574:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "554:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "554:23:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "548:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "548:30:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "513:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "513:66:39" + }, + "nodeType": "YulExpressionStatement", + "src": "513:66:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "460:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "463:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "457:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "457:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "471:19:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "473:15:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "482:1:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "485:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "478:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "478:10:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "473:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "453:3:39", + "statements": [] + }, + "src": "449:140:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "623:66:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "652:9:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "663:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "648:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "648:22:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "672:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "644:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "644:31:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "677:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "637:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "637:42:39" + }, + "nodeType": "YulExpressionStatement", + "src": "637:42:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "604:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "607:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "601:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "601:13:39" + }, + "nodeType": "YulIf", + "src": "598:91:39" + }, + { + "nodeType": "YulAssignment", + "src": "698:121:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "714:9:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "733:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "741:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "729:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "729:15:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "746:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "725:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "725:88:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "710:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "710:104:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "816:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "706:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "706:113:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "698:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "259:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "270:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "281:4:39", + "type": "" + } + ], + "src": "169:656:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "879:147:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "889:29:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "911:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "898:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "898:20:39" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "889:5:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1004:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1013:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1016:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1006:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1006:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1006:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "940:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "951:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "958:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "947:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "947:54:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "937:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "937:65:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "930:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "930:73:39" + }, + "nodeType": "YulIf", + "src": "927:93:39" + } + ] + }, + "name": "abi_decode_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "858:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "869:5:39", + "type": "" + } + ], + "src": "830:196:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1118:167:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1164:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1173:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1176:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1166:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1166:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1166:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1139:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1148:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1135:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1135:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1160:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1131:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1131:32:39" + }, + "nodeType": "YulIf", + "src": "1128:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "1189:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1218:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "1199:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "1199:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1189:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1237:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1264:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1275:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1260:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1260:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1247:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1247:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1237:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1076:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1087:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1099:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1107:6:39", + "type": "" + } + ], + "src": "1031:254:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1385:92:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1395:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1407:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1418:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1403:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1403:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1395:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1437:9:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1462:6:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1455:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1455:14:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1448:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1448:22:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1430:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1430:41:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1430:41:39" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1354:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1365:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1376:4:39", + "type": "" + } + ], + "src": "1290:187:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1524:76:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1578:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1587:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1590:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1580:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1580:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1580:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1547:5:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1568:5:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1561:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1561:13:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1554:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1554:21:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1544:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1544:32:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1537:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1537:40:39" + }, + "nodeType": "YulIf", + "src": "1534:60:39" + } + ] + }, + "name": "validator_revert_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1513:5:39", + "type": "" + } + ], + "src": "1482:118:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1672:174:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1718:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1727:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1730:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1720:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1720:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1720:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1693:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1702:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1689:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1689:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1714:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1685:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1685:32:39" + }, + "nodeType": "YulIf", + "src": "1682:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1743:36:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1769:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1756:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1756:23:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1747:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1810:5:39" + } + ], + "functionName": { + "name": "validator_revert_bool", + "nodeType": "YulIdentifier", + "src": "1788:21:39" + }, + "nodeType": "YulFunctionCall", + "src": "1788:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1788:28:39" + }, + { + "nodeType": "YulAssignment", + "src": "1825:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1835:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1825:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1638:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1649:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1661:6:39", + "type": "" + } + ], + "src": "1605:241:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1921:116:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1967:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1976:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1979:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1969:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1969:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1969:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1942:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1951:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1938:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1938:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1963:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1934:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1934:32:39" + }, + "nodeType": "YulIf", + "src": "1931:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "1992:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2021:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "2002:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "2002:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1992:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1887:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1898:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1910:6:39", + "type": "" + } + ], + "src": "1851:186:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2143:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2153:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2165:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2176:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2161:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2161:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2153:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2195:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2206:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2188:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2188:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2188:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2112:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2123:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2134:4:39", + "type": "" + } + ], + "src": "2042:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2294:110:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2340:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2349:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2352:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2342:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2342:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2342:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2315:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2324:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2311:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2311:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2336:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2307:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2307:32:39" + }, + "nodeType": "YulIf", + "src": "2304:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "2365:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2388:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2375:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2375:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2365:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2260:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2271:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2283:6:39", + "type": "" + } + ], + "src": "2224:180:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2513:224:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2559:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2568:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2571:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2561:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2561:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2561:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2534:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2543:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2530:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2530:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2555:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2526:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2526:32:39" + }, + "nodeType": "YulIf", + "src": "2523:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "2584:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2613:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "2594:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "2594:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2584:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2632:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2665:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2676:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2661:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2661:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "2642:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "2642:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2632:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2689:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2716:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2727:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2712:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2712:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2699:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2699:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "2689:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2463:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2474:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2486:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2494:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "2502:6:39", + "type": "" + } + ], + "src": "2409:328:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2774:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2791:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2794:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2784:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2784:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2784:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2888:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2891:4:39", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2881:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2881:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2881:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2912:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2915:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2905:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2905:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2905:15:39" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "2742:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2976:289:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2986:19:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3002:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2996:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "2996:9:39" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2986:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3014:117:39", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "3036:6:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "3052:4:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3058:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3048:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3048:13:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3063:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "3044:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3044:86:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3032:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3032:99:39" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "3018:10:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3206:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "3208:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "3208:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3208:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "3149:10:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3161:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3146:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3146:34:39" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "3185:10:39" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "3197:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "3182:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3182:22:39" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "3143:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3143:62:39" + }, + "nodeType": "YulIf", + "src": "3140:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3244:2:39", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "3248:10:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3237:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3237:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3237:22:39" + } + ] + }, + "name": "allocate_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "2956:4:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "2965:6:39", + "type": "" + } + ], + "src": "2931:334:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3365:851:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3375:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3385:2:39", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "3379:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3432:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3441:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3444:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3434:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3434:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3434:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3407:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3416:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3403:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3403:23:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3428:2:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3399:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3399:32:39" + }, + "nodeType": "YulIf", + "src": "3396:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3457:37:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3484:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3471:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "3471:23:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3461:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3503:28:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3513:18:39", + "type": "", + "value": "0xffffffffffffffff" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "3507:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3558:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3567:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3570:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3560:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3560:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3560:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3546:6:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3554:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3543:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3543:14:39" + }, + "nodeType": "YulIf", + "src": "3540:34:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3583:32:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3597:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3608:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3593:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3593:22:39" + }, + "variables": [ + { + "name": "_3", + "nodeType": "YulTypedName", + "src": "3587:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3663:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3672:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3675:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3665:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3665:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3665:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "3642:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3646:4:39", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3638:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3638:13:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3653:7:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3634:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3634:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3627:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3627:35:39" + }, + "nodeType": "YulIf", + "src": "3624:55:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3688:26:39", + "value": { + "arguments": [ + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "3711:2:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3698:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "3698:16:39" + }, + "variables": [ + { + "name": "_4", + "nodeType": "YulTypedName", + "src": "3692:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3737:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "3739:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "3739:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3739:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "3729:2:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3733:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3726:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3726:10:39" + }, + "nodeType": "YulIf", + "src": "3723:36:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3768:20:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3782:1:39", + "type": "", + "value": "5" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "3785:2:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3778:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3778:10:39" + }, + "variables": [ + { + "name": "_5", + "nodeType": "YulTypedName", + "src": "3772:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3797:39:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_5", + "nodeType": "YulIdentifier", + "src": "3828:2:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3832:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3824:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3824:11:39" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "3808:15:39" + }, + "nodeType": "YulFunctionCall", + "src": "3808:28:39" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "3801:3:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3845:16:39", + "value": { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3858:3:39" + }, + "variables": [ + { + "name": "dst_1", + "nodeType": "YulTypedName", + "src": "3849:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3877:3:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "3882:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3870:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3870:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3870:15:39" + }, + { + "nodeType": "YulAssignment", + "src": "3894:19:39", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3905:3:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3910:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3901:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3901:12:39" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3894:3:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3922:34:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "3944:2:39" + }, + { + "name": "_5", + "nodeType": "YulIdentifier", + "src": "3948:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3940:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3940:11:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3953:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3936:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3936:20:39" + }, + "variables": [ + { + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "3926:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3988:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3997:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4000:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3990:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3990:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3990:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "3971:6:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3979:7:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3968:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3968:19:39" + }, + "nodeType": "YulIf", + "src": "3965:39:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4013:22:39", + "value": { + "arguments": [ + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "4028:2:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "4032:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4024:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4024:11:39" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "4017:3:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4100:86:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4121:3:39" + }, + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4139:3:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4126:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4126:17:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4114:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4114:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4114:30:39" + }, + { + "nodeType": "YulAssignment", + "src": "4157:19:39", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4168:3:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "4173:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4164:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4164:12:39" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4157:3:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4055:3:39" + }, + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "4060:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "4052:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "4052:15:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "4068:23:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4070:19:39", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4081:3:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "4086:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4077:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4077:12:39" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4070:3:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "4048:3:39", + "statements": [] + }, + "src": "4044:142:39" + }, + { + "nodeType": "YulAssignment", + "src": "4195:15:39", + "value": { + "name": "dst_1", + "nodeType": "YulIdentifier", + "src": "4205:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4195:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3331:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3342:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3354:6:39", + "type": "" + } + ], + "src": "3270:946:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4291:110:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4337:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4346:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4349:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4339:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4339:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4339:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4312:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4321:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4308:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4308:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4333:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4304:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4304:32:39" + }, + "nodeType": "YulIf", + "src": "4301:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "4362:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4385:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4372:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4372:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4362:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4257:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "4268:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4280:6:39", + "type": "" + } + ], + "src": "4221:180:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4507:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4517:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4529:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4540:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4525:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4525:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4517:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4559:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4570:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4552:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4552:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4552:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4476:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4487:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4498:4:39", + "type": "" + } + ], + "src": "4406:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4689:125:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4699:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4711:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4722:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4707:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4707:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4699:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4741:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4756:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4764:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "4752:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4752:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4734:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4734:74:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4734:74:39" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4658:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4669:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4680:4:39", + "type": "" + } + ], + "src": "4588:226:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4906:167:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4952:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4961:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4964:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4954:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4954:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4954:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4927:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4936:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4923:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4923:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4948:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4919:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4919:32:39" + }, + "nodeType": "YulIf", + "src": "4916:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "4977:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5000:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4987:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4987:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4977:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5019:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5052:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5063:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5048:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5048:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "5029:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "5029:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "5019:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4864:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "4875:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4887:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "4895:6:39", + "type": "" + } + ], + "src": "4819:254:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5175:87:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5185:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5197:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5208:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5193:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5193:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5185:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5227:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5242:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5250:4:39", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5238:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5238:17:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5220:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5220:36:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5220:36:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5144:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5155:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5166:4:39", + "type": "" + } + ], + "src": "5078:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5320:537:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5369:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5378:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5381:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5371:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5371:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5371:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5348:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5356:4:39", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5344:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5344:17:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "5363:3:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5340:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5340:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5333:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5333:35:39" + }, + "nodeType": "YulIf", + "src": "5330:55:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5394:30:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5417:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5404:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5404:20:39" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "5398:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5463:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "5465:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "5465:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5465:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "5439:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5443:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "5436:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "5436:26:39" + }, + "nodeType": "YulIf", + "src": "5433:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5494:129:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "5537:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5541:4:39", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5533:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5533:13:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5548:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5529:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5529:86:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5617:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5525:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5525:97:39" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "5509:15:39" + }, + "nodeType": "YulFunctionCall", + "src": "5509:114:39" + }, + "variables": [ + { + "name": "array_1", + "nodeType": "YulTypedName", + "src": "5498:7:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "5639:7:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "5648:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5632:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5632:19:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5632:19:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5699:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5708:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5711:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5701:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5701:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5701:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5674:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "5682:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5670:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5670:15:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5687:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5666:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5666:26:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "5694:3:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "5663:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "5663:35:39" + }, + "nodeType": "YulIf", + "src": "5660:55:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "5741:7:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5750:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5737:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5737:18:39" + }, + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5761:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5769:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5757:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5757:17:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "5776:2:39" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "5724:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5724:55:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5724:55:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "5803:7:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "5812:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5799:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5799:16:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5817:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5795:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5795:27:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5824:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5788:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5788:38:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5788:38:39" + }, + { + "nodeType": "YulAssignment", + "src": "5835:16:39", + "value": { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "5844:7:39" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "5835:5:39" + } + ] + } + ] + }, + "name": "abi_decode_string", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5294:6:39", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "5302:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "5310:5:39", + "type": "" + } + ], + "src": "5267:590:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5969:436:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6015:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6024:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6027:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6017:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6017:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6017:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5990:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5999:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5986:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5986:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6011:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5982:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5982:32:39" + }, + "nodeType": "YulIf", + "src": "5979:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6040:37:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6067:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6054:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "6054:23:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "6044:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6086:28:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6096:18:39", + "type": "", + "value": "0xffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "6090:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6141:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6150:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6153:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6143:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6143:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6143:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6129:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "6137:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "6126:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "6126:14:39" + }, + "nodeType": "YulIf", + "src": "6123:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "6166:60:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6198:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6209:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6194:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6194:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6218:7:39" + } + ], + "functionName": { + "name": "abi_decode_string", + "nodeType": "YulIdentifier", + "src": "6176:17:39" + }, + "nodeType": "YulFunctionCall", + "src": "6176:50:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6166:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6235:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6268:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6279:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6264:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6264:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6251:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "6251:32:39" + }, + "variables": [ + { + "name": "offset_1", + "nodeType": "YulTypedName", + "src": "6239:8:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6312:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6321:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6324:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6314:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6314:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6314:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "6298:8:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "6308:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "6295:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "6295:16:39" + }, + "nodeType": "YulIf", + "src": "6292:36:39" + }, + { + "nodeType": "YulAssignment", + "src": "6337:62:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6369:9:39" + }, + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "6380:8:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6365:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6365:24:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6391:7:39" + } + ], + "functionName": { + "name": "abi_decode_string", + "nodeType": "YulIdentifier", + "src": "6347:17:39" + }, + "nodeType": "YulFunctionCall", + "src": "6347:52:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "6337:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5927:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "5938:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5950:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "5958:6:39", + "type": "" + } + ], + "src": "5862:543:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6501:283:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6550:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6559:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6562:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6552:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6552:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6552:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6529:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6537:4:39", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6525:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6525:17:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "6544:3:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "6521:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6521:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "6514:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6514:35:39" + }, + "nodeType": "YulIf", + "src": "6511:55:39" + }, + { + "nodeType": "YulAssignment", + "src": "6575:30:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6598:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6585:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "6585:20:39" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6575:6:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6648:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6657:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6660:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6650:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6650:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6650:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6620:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6628:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "6617:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "6617:30:39" + }, + "nodeType": "YulIf", + "src": "6614:50:39" + }, + { + "nodeType": "YulAssignment", + "src": "6673:29:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6689:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6697:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6685:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6685:17:39" + }, + "variableNames": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "6673:8:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6762:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6771:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6774:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6764:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6764:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6764:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6725:6:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6737:1:39", + "type": "", + "value": "5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6740:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "6733:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6733:14:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6721:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6721:27:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6750:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6717:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6717:38:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "6757:3:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "6714:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "6714:47:39" + }, + "nodeType": "YulIf", + "src": "6711:67:39" + } + ] + }, + "name": "abi_decode_array_bytes_calldata_dyn_calldata", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "6464:6:39", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "6472:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "arrayPos", + "nodeType": "YulTypedName", + "src": "6480:8:39", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "6490:6:39", + "type": "" + } + ], + "src": "6410:374:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6922:390:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6968:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6977:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6980:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6970:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6970:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6970:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6943:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6952:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6939:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6939:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6964:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "6935:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6935:32:39" + }, + "nodeType": "YulIf", + "src": "6932:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "6993:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7016:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7003:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "7003:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6993:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7035:46:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7066:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7077:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7062:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7062:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7049:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "7049:32:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "7039:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7124:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7133:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7136:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7126:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7126:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7126:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7096:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7104:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7093:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "7093:30:39" + }, + "nodeType": "YulIf", + "src": "7090:50:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7149:103:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7224:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7235:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7220:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7220:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7244:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_bytes_calldata_dyn_calldata", + "nodeType": "YulIdentifier", + "src": "7175:44:39" + }, + "nodeType": "YulFunctionCall", + "src": "7175:77:39" + }, + "variables": [ + { + "name": "value1_1", + "nodeType": "YulTypedName", + "src": "7153:8:39", + "type": "" + }, + { + "name": "value2_1", + "nodeType": "YulTypedName", + "src": "7163:8:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7261:18:39", + "value": { + "name": "value1_1", + "nodeType": "YulIdentifier", + "src": "7271:8:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "7261:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7288:18:39", + "value": { + "name": "value2_1", + "nodeType": "YulIdentifier", + "src": "7298:8:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "7288:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6872:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "6883:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6895:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "6903:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "6911:6:39", + "type": "" + } + ], + "src": "6789:523:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7404:161:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "7450:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7459:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7462:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7452:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7452:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7452:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7425:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7434:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7421:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7421:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7446:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "7417:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7417:32:39" + }, + "nodeType": "YulIf", + "src": "7414:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "7475:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7498:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7485:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "7485:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7475:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7517:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7544:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7555:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7540:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7540:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7527:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "7527:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "7517:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7362:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "7373:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "7385:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "7393:6:39", + "type": "" + } + ], + "src": "7317:248:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7657:161:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "7703:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7712:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7715:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7705:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7705:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7705:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7678:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7687:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7674:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7674:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7699:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "7670:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7670:32:39" + }, + "nodeType": "YulIf", + "src": "7667:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "7728:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7751:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7738:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "7738:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7728:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7770:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7797:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7808:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7793:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7793:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7780:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "7780:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "7770:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7615:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "7626:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "7638:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "7646:6:39", + "type": "" + } + ], + "src": "7570:248:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7990:493:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "8037:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8046:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8049:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8039:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8039:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8039:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8011:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8020:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8007:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8007:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8032:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "8003:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8003:33:39" + }, + "nodeType": "YulIf", + "src": "8000:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "8062:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8085:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8072:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8072:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "8062:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8104:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8131:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8142:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8127:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8127:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8114:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8114:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "8104:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8155:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8182:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8193:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8178:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8178:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8165:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8165:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "8155:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8206:46:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8237:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8248:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8233:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8233:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8220:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8220:32:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8210:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8295:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8304:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8307:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8297:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8297:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8297:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8267:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8275:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8264:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "8264:30:39" + }, + "nodeType": "YulIf", + "src": "8261:50:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8320:103:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8395:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8406:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8391:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8391:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8415:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_bytes_calldata_dyn_calldata", + "nodeType": "YulIdentifier", + "src": "8346:44:39" + }, + "nodeType": "YulFunctionCall", + "src": "8346:77:39" + }, + "variables": [ + { + "name": "value3_1", + "nodeType": "YulTypedName", + "src": "8324:8:39", + "type": "" + }, + { + "name": "value4_1", + "nodeType": "YulTypedName", + "src": "8334:8:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8432:18:39", + "value": { + "name": "value3_1", + "nodeType": "YulIdentifier", + "src": "8442:8:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "8432:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8459:18:39", + "value": { + "name": "value4_1", + "nodeType": "YulIdentifier", + "src": "8469:8:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "8459:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7924:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "7935:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "7947:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "7955:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "7963:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "7971:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "7979:6:39", + "type": "" + } + ], + "src": "7823:660:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8645:162:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8655:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8667:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8678:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8663:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8663:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8655:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8697:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "8708:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8690:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8690:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8690:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8735:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8746:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8731:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8731:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "8751:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8724:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8724:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8724:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8778:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8789:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8774:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8774:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "8794:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8767:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8767:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8767:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8598:9:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "8609:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "8617:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "8625:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "8636:4:39", + "type": "" + } + ], + "src": "8488:319:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8982:523:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9029:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9038:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9041:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9031:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9031:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9031:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9003:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9012:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8999:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8999:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9024:3:39", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "8995:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8995:33:39" + }, + "nodeType": "YulIf", + "src": "8992:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "9054:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9083:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "9064:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "9064:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9054:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9102:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9135:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9146:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9131:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9131:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "9112:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "9112:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "9102:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9159:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9186:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9197:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9182:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9182:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9169:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9169:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "9159:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9210:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9237:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9248:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9233:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9233:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9220:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9220:32:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "9210:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "9261:46:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9291:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9302:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9287:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9287:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9274:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9274:33:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "9265:5:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9355:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9364:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9367:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9357:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9357:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9357:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9329:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9340:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9347:4:39", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "9336:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9336:16:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "9326:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "9326:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "9319:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9319:35:39" + }, + "nodeType": "YulIf", + "src": "9316:55:39" + }, + { + "nodeType": "YulAssignment", + "src": "9380:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9390:5:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "9380:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9404:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9431:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9442:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9427:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9427:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9414:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9414:33:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "9404:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9456:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9483:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9494:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9479:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9479:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9466:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9466:33:39" + }, + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "9456:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8900:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "8911:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "8923:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "8931:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "8939:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "8947:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "8955:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "8963:6:39", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "8971:6:39", + "type": "" + } + ], + "src": "8812:693:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9597:173:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9643:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9652:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9655:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9645:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9645:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9645:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9618:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9627:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9614:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9614:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9639:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "9610:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9610:32:39" + }, + "nodeType": "YulIf", + "src": "9607:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "9668:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9697:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "9678:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "9678:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9668:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9716:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9749:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9760:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9745:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9745:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "9726:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "9726:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "9716:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9555:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "9566:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9578:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "9586:6:39", + "type": "" + } + ], + "src": "9510:260:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9830:382:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9840:22:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9854:1:39", + "type": "", + "value": "1" + }, + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "9857:4:39" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "9850:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9850:12:39" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9840:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "9871:38:39", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "9901:4:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9907:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "9897:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9897:12:39" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "9875:18:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9948:31:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9950:27:39", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9964:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9972:4:39", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "9960:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9960:17:39" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9950:6:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "9928:18:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "9921:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9921:26:39" + }, + "nodeType": "YulIf", + "src": "9918:61:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10038:168:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10059:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10062:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10052:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10052:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10052:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10160:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10163:4:39", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10153:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10153:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10153:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10188:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10191:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10181:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10181:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10181:15:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "9994:18:39" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10017:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10025:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "10014:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "10014:14:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "9991:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "9991:38:39" + }, + "nodeType": "YulIf", + "src": "9988:218:39" + } + ] + }, + "name": "extract_byte_array_length", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "9810:4:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "9819:6:39", + "type": "" + } + ], + "src": "9775:437:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10391:176:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10408:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10419:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10401:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10401:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10401:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10442:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10453:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10438:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10438:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10458:2:39", + "type": "", + "value": "26" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10431:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10431:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10431:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10481:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10492:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10477:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10477:18:39" + }, + { + "hexValue": "4445493a20796f7520617265206e6f7420746865206f776e6572", + "kind": "string", + "nodeType": "YulLiteral", + "src": "10497:28:39", + "type": "", + "value": "DEI: you are not the owner" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10470:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10470:56:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10470:56:39" + }, + { + "nodeType": "YulAssignment", + "src": "10535:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10547:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10558:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10543:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10543:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10535:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_31b4913319800bc14f3ac10959626412727e6e236f8f0f67dfae737e33f2a9ea__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10368:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "10382:4:39", + "type": "" + } + ], + "src": "10217:350:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10604:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10621:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10624:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10614:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10614:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10614:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10718:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10721:4:39", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10711:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10711:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10711:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10742:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10745:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10735:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10735:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10735:15:39" + } + ] + }, + "name": "panic_error_0x32", + "nodeType": "YulFunctionDefinition", + "src": "10572:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10842:103:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "10888:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10897:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10900:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10890:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10890:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10890:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10863:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10872:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10859:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10859:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10884:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "10855:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10855:32:39" + }, + "nodeType": "YulIf", + "src": "10852:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "10913:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10929:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "10923:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "10923:16:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "10913:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10808:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "10819:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "10831:6:39", + "type": "" + } + ], + "src": "10761:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10982:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10999:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11002:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10992:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10992:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10992:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11096:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11099:4:39", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11089:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11089:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11089:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11120:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11123:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "11113:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11113:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11113:15:39" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "10950:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11187:80:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "11214:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "11216:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "11216:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11216:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11203:1:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11210:1:39" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "11206:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11206:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "11200:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "11200:13:39" + }, + "nodeType": "YulIf", + "src": "11197:39:39" + }, + { + "nodeType": "YulAssignment", + "src": "11245:16:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11256:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11259:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11252:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11252:9:39" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "11245:3:39" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "11170:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "11173:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "11179:3:39", + "type": "" + } + ], + "src": "11139:128:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11319:148:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "11410:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "11412:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "11412:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11412:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11335:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11342:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "11332:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "11332:77:39" + }, + "nodeType": "YulIf", + "src": "11329:103:39" + }, + { + "nodeType": "YulAssignment", + "src": "11441:20:39", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11452:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11459:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11448:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11448:13:39" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "11441:3:39" + } + ] + } + ] + }, + "name": "increment_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "11301:5:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "11311:3:39", + "type": "" + } + ], + "src": "11272:195:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11646:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11663:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11674:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11656:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11656:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11656:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11697:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11708:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11693:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11693:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11713:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11686:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11686:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11686:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11736:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11747:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11732:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11732:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "11752:34:39", + "type": "", + "value": "AccessControl: sender must be an" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11725:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11725:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11725:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11807:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11818:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11803:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11803:18:39" + }, + { + "hexValue": "2061646d696e20746f206772616e74", + "kind": "string", + "nodeType": "YulLiteral", + "src": "11823:17:39", + "type": "", + "value": " admin to grant" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11796:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11796:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11796:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "11850:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11862:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11873:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11858:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11858:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "11850:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "11623:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "11637:4:39", + "type": "" + } + ], + "src": "11472:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12062:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12079:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12090:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12072:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12072:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12072:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12113:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12124:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12109:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12109:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12129:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12102:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12102:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12102:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12152:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12163:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12148:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12148:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e6365", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12168:34:39", + "type": "", + "value": "AccessControl: can only renounce" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12141:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12141:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12141:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12223:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12234:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12219:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12219:18:39" + }, + { + "hexValue": "20726f6c657320666f722073656c66", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12239:17:39", + "type": "", + "value": " roles for self" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12212:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12212:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12212:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "12266:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12278:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12289:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12274:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12274:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12266:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12039:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "12053:4:39", + "type": "" + } + ], + "src": "11888:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12478:228:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12495:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12506:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12488:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12488:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12488:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12529:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12540:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12525:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12525:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12545:2:39", + "type": "", + "value": "38" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12518:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12518:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12518:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12568:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12579:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12564:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12564:18:39" + }, + { + "hexValue": "4445493a3a72656d6f7665506f6f6c3a205a65726f2061646472657373206465", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12584:34:39", + "type": "", + "value": "DEI::removePool: Zero address de" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12557:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12557:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12557:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12639:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12650:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12635:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12635:18:39" + }, + { + "hexValue": "746563746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12655:8:39", + "type": "", + "value": "tected" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12628:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12628:36:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12628:36:39" + }, + { + "nodeType": "YulAssignment", + "src": "12673:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12685:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12696:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12681:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12681:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12673:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_5d76525ad886bfae65df1a2a4093e79ca5549605e2e56b119fbbd06a964cb1c1__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12455:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "12469:4:39", + "type": "" + } + ], + "src": "12304:402:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12885:226:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12902:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12913:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12895:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12895:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12895:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12936:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12947:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12932:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12932:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12952:2:39", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12925:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12925:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12925:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12975:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12986:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12971:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12971:18:39" + }, + { + "hexValue": "4445493a3a72656d6f7665506f6f6c3a2041646472657373206e6f6e65786973", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12991:34:39", + "type": "", + "value": "DEI::removePool: Address nonexis" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12964:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12964:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12964:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13046:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13057:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13042:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13042:18:39" + }, + { + "hexValue": "74616e74", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13062:6:39", + "type": "", + "value": "tant" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13035:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13035:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13035:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "13078:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13090:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13101:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13086:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13086:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13078:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_ad6015c13a0e63f548d13ba3fdb3fd25b250b515fed8d06aa09cb97bfbd3a2ad__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12862:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "12876:4:39", + "type": "" + } + ], + "src": "12711:400:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13172:65:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13189:1:39", + "type": "", + "value": "0" + }, + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "13192:3:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13182:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13182:14:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13182:14:39" + }, + { + "nodeType": "YulAssignment", + "src": "13205:26:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13223:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13226:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nodeType": "YulIdentifier", + "src": "13213:9:39" + }, + "nodeType": "YulFunctionCall", + "src": "13213:18:39" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "13205:4:39" + } + ] + } + ] + }, + "name": "array_dataslot_string_storage", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nodeType": "YulTypedName", + "src": "13155:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "13163:4:39", + "type": "" + } + ], + "src": "13116:121:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13300:1099:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "13310:29:39", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13333:5:39" + } + ], + "functionName": { + "name": "sload", + "nodeType": "YulIdentifier", + "src": "13327:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "13327:12:39" + }, + "variables": [ + { + "name": "slotValue", + "nodeType": "YulTypedName", + "src": "13314:9:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "13348:15:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13362:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "13352:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "13372:11:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13382:1:39", + "type": "", + "value": "1" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "13376:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "13392:28:39", + "value": { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "13406:2:39" + }, + { + "name": "slotValue", + "nodeType": "YulIdentifier", + "src": "13410:9:39" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "13402:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13402:18:39" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "13392:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "13429:44:39", + "value": { + "arguments": [ + { + "name": "slotValue", + "nodeType": "YulIdentifier", + "src": "13459:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "13470:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "13455:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13455:18:39" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "13433:18:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13512:31:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13514:27:39", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "13528:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13536:4:39", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "13524:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13524:17:39" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "13514:6:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "13492:18:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "13485:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13485:26:39" + }, + "nodeType": "YulIf", + "src": "13482:61:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "13552:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13562:2:39", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "13556:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13623:168:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13644:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13647:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13637:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13637:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13637:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13745:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13748:4:39", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13738:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13738:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13738:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13773:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13776:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "13766:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13766:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13766:15:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "13579:18:39" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "13602:6:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "13610:2:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "13599:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "13599:14:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "13576:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "13576:38:39" + }, + "nodeType": "YulIf", + "src": "13573:218:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "13800:61:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13849:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "13854:6:39" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_string", + "nodeType": "YulIdentifier", + "src": "13813:35:39" + }, + "nodeType": "YulFunctionCall", + "src": "13813:48:39" + }, + "variables": [ + { + "name": "pos_1", + "nodeType": "YulTypedName", + "src": "13804:5:39", + "type": "" + } + ] + }, + { + "cases": [ + { + "body": { + "nodeType": "YulBlock", + "src": "13911:155:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "13932:5:39" + }, + { + "arguments": [ + { + "name": "slotValue", + "nodeType": "YulIdentifier", + "src": "13943:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13954:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "13939:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13939:82:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13925:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13925:97:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13925:97:39" + }, + { + "nodeType": "YulAssignment", + "src": "14035:21:39", + "value": { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "14046:5:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "14053:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14042:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14042:14:39" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "14035:3:39" + } + ] + } + ] + }, + "nodeType": "YulCase", + "src": "13904:162:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13909:1:39", + "type": "", + "value": "0" + } + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14082:311:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14096:51:39", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "14141:5:39" + } + ], + "functionName": { + "name": "array_dataslot_string_storage", + "nodeType": "YulIdentifier", + "src": "14111:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "14111:36:39" + }, + "variables": [ + { + "name": "dataPos", + "nodeType": "YulTypedName", + "src": "14100:7:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "14160:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14169:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "14164:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14237:113:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "14266:5:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "14273:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14262:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14262:13:39" + }, + { + "arguments": [ + { + "name": "dataPos", + "nodeType": "YulIdentifier", + "src": "14283:7:39" + } + ], + "functionName": { + "name": "sload", + "nodeType": "YulIdentifier", + "src": "14277:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "14277:14:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14255:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14255:37:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14255:37:39" + }, + { + "nodeType": "YulAssignment", + "src": "14309:27:39", + "value": { + "arguments": [ + { + "name": "dataPos", + "nodeType": "YulIdentifier", + "src": "14324:7:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "14333:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14320:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14320:16:39" + }, + "variableNames": [ + { + "name": "dataPos", + "nodeType": "YulIdentifier", + "src": "14309:7:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "14194:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14197:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "14191:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "14191:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "14205:19:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "14207:15:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "14216:1:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "14219:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14212:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14212:10:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "14207:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "14187:3:39", + "statements": [] + }, + "src": "14183:167:39" + }, + { + "nodeType": "YulAssignment", + "src": "14363:20:39", + "value": { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "14374:5:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "14381:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14370:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14370:13:39" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "14363:3:39" + } + ] + } + ] + }, + "nodeType": "YulCase", + "src": "14075:318:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14080:1:39", + "type": "", + "value": "1" + } + } + ], + "expression": { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "13877:18:39" + }, + "nodeType": "YulSwitch", + "src": "13870:523:39" + } + ] + }, + "name": "abi_encode_string_storage", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "13277:5:39", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "13284:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "13292:3:39", + "type": "" + } + ], + "src": "13242:1157:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14567:230:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14584:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14595:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14577:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14577:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14577:21:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "14607:67:39", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "14647:6:39" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14659:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14670:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14655:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14655:18:39" + } + ], + "functionName": { + "name": "abi_encode_string_storage", + "nodeType": "YulIdentifier", + "src": "14621:25:39" + }, + "nodeType": "YulFunctionCall", + "src": "14621:53:39" + }, + "variables": [ + { + "name": "tail_1", + "nodeType": "YulTypedName", + "src": "14611:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14694:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14705:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14690:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14690:18:39" + }, + { + "arguments": [ + { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "14714:6:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14722:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "14710:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14710:22:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14683:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14683:50:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14683:50:39" + }, + { + "nodeType": "YulAssignment", + "src": "14742:49:39", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "14776:6:39" + }, + { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "14784:6:39" + } + ], + "functionName": { + "name": "abi_encode_string_storage", + "nodeType": "YulIdentifier", + "src": "14750:25:39" + }, + "nodeType": "YulFunctionCall", + "src": "14750:41:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "14742:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_storage_t_string_storage__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "14528:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "14539:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "14547:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "14558:4:39", + "type": "" + } + ], + "src": "14404:393:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14868:259:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14885:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14890:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14878:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14878:19:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14878:19:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14923:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14928:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14919:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14919:14:39" + }, + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "14935:5:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14942:6:39" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "14906:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "14906:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14906:43:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14973:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14978:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14969:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14969:16:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14987:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14965:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14965:27:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14994:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14958:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14958:38:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14958:38:39" + }, + { + "nodeType": "YulAssignment", + "src": "15005:116:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15020:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "15033:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15041:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15029:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15029:15:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15046:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "15025:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15025:88:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15016:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15016:98:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15116:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15012:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15012:109:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "15005:3:39" + } + ] + } + ] + }, + "name": "abi_encode_bytes_calldata", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "start", + "nodeType": "YulTypedName", + "src": "14837:5:39", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "14844:6:39", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "14852:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "14860:3:39", + "type": "" + } + ], + "src": "14802:325:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15341:1170:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "15351:32:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15369:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15380:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15365:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15365:18:39" + }, + "variables": [ + { + "name": "tail_1", + "nodeType": "YulTypedName", + "src": "15355:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15399:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "15410:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15392:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15392:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15392:25:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15426:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15436:2:39", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "15430:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15458:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "15469:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15454:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15454:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15474:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15447:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15447:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15447:30:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15486:17:39", + "value": { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "15497:6:39" + }, + "variables": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "15490:3:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "15519:6:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "15527:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15512:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15512:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15512:22:39" + }, + { + "nodeType": "YulAssignment", + "src": "15543:25:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15554:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15565:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15550:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15550:18:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15543:3:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15577:53:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15599:9:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15614:1:39", + "type": "", + "value": "5" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "15617:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "15610:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15610:14:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15595:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15595:30:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15627:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15591:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15591:39:39" + }, + "variables": [ + { + "name": "tail_2", + "nodeType": "YulTypedName", + "src": "15581:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15639:20:39", + "value": { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "15653:6:39" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "15643:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15668:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15677:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "15672:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15736:746:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15757:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "15770:6:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15778:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15766:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15766:22:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15790:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15762:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15762:95:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15750:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15750:108:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15750:108:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15871:46:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "15910:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "15897:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "15897:20:39" + }, + "variables": [ + { + "name": "rel_offset_of_tail", + "nodeType": "YulTypedName", + "src": "15875:18:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16067:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16076:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16079:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "16069:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16069:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16069:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "rel_offset_of_tail", + "nodeType": "YulIdentifier", + "src": "15944:18:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier", + "src": "15972:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "15972:14:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "15988:6:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15968:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15968:27:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15997:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15964:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15964:100:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "15940:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15940:125:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "15933:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15933:133:39" + }, + "nodeType": "YulIf", + "src": "15930:153:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "16096:44:39", + "value": { + "arguments": [ + { + "name": "rel_offset_of_tail", + "nodeType": "YulIdentifier", + "src": "16113:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "16133:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16109:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16109:31:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16100:5:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "16153:33:39", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16180:5:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "16167:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "16167:19:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "16157:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16233:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16242:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16245:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "16235:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16235:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16235:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "16205:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16213:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "16202:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "16202:30:39" + }, + "nodeType": "YulIf", + "src": "16199:50:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16306:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16315:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16318:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "16308:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16308:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16308:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "16269:6:39" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier", + "src": "16281:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "16281:14:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "16297:6:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "16277:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16277:27:39" + } + ], + "functionName": { + "name": "sgt", + "nodeType": "YulIdentifier", + "src": "16265:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16265:40:39" + }, + "nodeType": "YulIf", + "src": "16262:60:39" + }, + { + "nodeType": "YulAssignment", + "src": "16335:67:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16375:5:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "16382:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16371:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16371:14:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "16387:6:39" + }, + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "16395:6:39" + } + ], + "functionName": { + "name": "abi_encode_bytes_calldata", + "nodeType": "YulIdentifier", + "src": "16345:25:39" + }, + "nodeType": "YulFunctionCall", + "src": "16345:57:39" + }, + "variableNames": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "16335:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16415:25:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "16429:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "16437:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16425:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16425:15:39" + }, + "variableNames": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "16415:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16453:19:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "16464:3:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "16469:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16460:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16460:12:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "16453:3:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "15698:1:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "15701:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "15695:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "15695:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "15709:18:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15711:14:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "15720:1:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15723:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15716:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15716:9:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "15711:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "15691:3:39", + "statements": [] + }, + "src": "15687:795:39" + }, + { + "nodeType": "YulAssignment", + "src": "16491:14:39", + "value": { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "16499:6:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "16491:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15294:9:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "15305:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "15313:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "15321:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "15332:4:39", + "type": "" + } + ], + "src": "15132:1379:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16594:167:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "16640:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16649:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16652:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "16642:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16642:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16642:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "16615:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16624:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "16611:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16611:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16636:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "16607:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16607:32:39" + }, + "nodeType": "YulIf", + "src": "16604:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "16665:29:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16684:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "16678:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "16678:16:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16669:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16725:5:39" + } + ], + "functionName": { + "name": "validator_revert_bool", + "nodeType": "YulIdentifier", + "src": "16703:21:39" + }, + "nodeType": "YulFunctionCall", + "src": "16703:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16703:28:39" + }, + { + "nodeType": "YulAssignment", + "src": "16740:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16750:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "16740:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bool_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "16560:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "16571:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "16583:6:39", + "type": "" + } + ], + "src": "16516:245:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16895:119:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16905:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16917:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16928:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16913:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16913:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "16905:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16947:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "16958:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16940:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16940:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16940:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16985:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16996:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16981:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16981:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "17001:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16974:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16974:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16974:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "16856:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "16867:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "16875:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "16886:4:39", + "type": "" + } + ], + "src": "16766:248:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17193:232:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17210:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17221:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17203:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17203:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17203:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17244:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17255:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17240:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17240:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17260:2:39", + "type": "", + "value": "42" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17233:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17233:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17233:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17283:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17294:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17279:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17279:18:39" + }, + { + "hexValue": "4445493a206f6e6c792064656920706f6f6c732063616e2063616c6c20746869", + "kind": "string", + "nodeType": "YulLiteral", + "src": "17299:34:39", + "type": "", + "value": "DEI: only dei pools can call thi" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17272:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17272:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17272:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17354:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17365:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17350:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17350:18:39" + }, + { + "hexValue": "732066756e6374696f6e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "17370:12:39", + "type": "", + "value": "s function" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17343:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17343:40:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17343:40:39" + }, + { + "nodeType": "YulAssignment", + "src": "17392:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17404:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17415:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17400:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17400:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "17392:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_cd3981bc95962e0a9b20d76af41ca9bc6eca9273045b5feb5b9ab06e8f37766c__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "17170:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "17184:4:39", + "type": "" + } + ], + "src": "17019:406:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17604:227:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17621:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17632:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17614:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17614:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17614:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17655:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17666:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17651:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17651:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17671:2:39", + "type": "", + "value": "37" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17644:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17644:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17644:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17694:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17705:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17690:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17690:18:39" + }, + { + "hexValue": "4445493a3a436f6c6c61746572616c20526174696f20686173206265656e2070", + "kind": "string", + "nodeType": "YulLiteral", + "src": "17710:34:39", + "type": "", + "value": "DEI::Collateral Ratio has been p" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17683:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17683:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17683:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17765:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17776:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17761:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17761:18:39" + }, + { + "hexValue": "6175736564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "17781:7:39", + "type": "", + "value": "aused" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17754:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17754:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17754:35:39" + }, + { + "nodeType": "YulAssignment", + "src": "17798:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17810:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17821:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17806:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17806:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "17798:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_d7b768e1373234e0883c129bd428f5c8535c242446bb3a854d95826c27f5ad93__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "17581:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "17595:4:39", + "type": "" + } + ], + "src": "17430:401:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17885:76:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "17907:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "17909:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "17909:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17909:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "17901:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "17904:1:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "17898:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17898:8:39" + }, + "nodeType": "YulIf", + "src": "17895:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "17938:17:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "17950:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "17953:1:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "17946:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17946:9:39" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "17938:4:39" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "17867:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "17870:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "17876:4:39", + "type": "" + } + ], + "src": "17836:125:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18140:223:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18157:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18168:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18150:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18150:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18150:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18191:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18202:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18187:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18187:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18207:2:39", + "type": "", + "value": "33" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18180:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18180:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18180:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18230:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18241:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18226:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18226:18:39" + }, + { + "hexValue": "4445493a3a496e7465726e616c20636f6f6c646f776e206e6f74207061737365", + "kind": "string", + "nodeType": "YulLiteral", + "src": "18246:34:39", + "type": "", + "value": "DEI::Internal cooldown not passe" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18219:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18219:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18219:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18301:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18312:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18297:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18297:18:39" + }, + { + "hexValue": "64", + "kind": "string", + "nodeType": "YulLiteral", + "src": "18317:3:39", + "type": "", + "value": "d" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18290:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18290:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18290:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "18330:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18342:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18353:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18338:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18338:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "18330:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_2c2a9a3e1243d1c4990a92a49185c5301054f4ed462802e7413e97975991ef03__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18117:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "18131:4:39", + "type": "" + } + ], + "src": "17966:397:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18627:372:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "18637:76:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18647:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "18641:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18729:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18742:2:39", + "type": "", + "value": "96" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "18746:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "18738:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18738:15:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "18755:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "18734:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18734:24:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18722:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18722:37:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18722:37:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18779:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18784:2:39", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18775:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18775:12:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "18789:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18768:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18768:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18768:28:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18816:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18821:2:39", + "type": "", + "value": "52" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18812:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18812:12:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18834:2:39", + "type": "", + "value": "96" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "18838:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "18830:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18830:15:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "18847:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "18826:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18826:24:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18805:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18805:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18805:46:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18871:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18876:2:39", + "type": "", + "value": "72" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18867:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18867:12:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "18881:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18860:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18860:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18860:28:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18908:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18913:3:39", + "type": "", + "value": "104" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18904:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18904:13:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "18919:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18897:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18897:29:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18897:29:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18946:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18951:3:39", + "type": "", + "value": "136" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18942:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18942:13:39" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "18957:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18935:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18935:29:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18935:29:39" + }, + { + "nodeType": "YulAssignment", + "src": "18973:20:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18984:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18989:3:39", + "type": "", + "value": "168" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18980:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18980:13:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "18973:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "18563:3:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "18568:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "18576:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "18584:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "18592:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "18600:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "18608:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "18619:3:39", + "type": "" + } + ], + "src": "18368:631:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19056:176:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "19175:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "19177:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "19177:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19177:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "19087:1:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "19080:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19080:9:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "19073:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19073:17:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "19095:1:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19102:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "19170:1:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "19098:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19098:74:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "19092:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "19092:81:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "19069:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19069:105:39" + }, + "nodeType": "YulIf", + "src": "19066:131:39" + }, + { + "nodeType": "YulAssignment", + "src": "19206:20:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "19221:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "19224:1:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "19217:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19217:9:39" + }, + "variableNames": [ + { + "name": "product", + "nodeType": "YulIdentifier", + "src": "19206:7:39" + } + ] + } + ] + }, + "name": "checked_mul_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "19035:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "19038:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nodeType": "YulTypedName", + "src": "19044:7:39", + "type": "" + } + ], + "src": "19004:228:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19283:228:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "19314:168:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19335:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19338:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19328:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19328:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19328:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19436:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19439:4:39", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19429:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19429:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19429:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19464:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19467:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "19457:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19457:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19457:15:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "19303:1:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "19296:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19296:9:39" + }, + "nodeType": "YulIf", + "src": "19293:189:39" + }, + { + "nodeType": "YulAssignment", + "src": "19491:14:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "19500:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "19503:1:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "19496:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19496:9:39" + }, + "variableNames": [ + { + "name": "r", + "nodeType": "YulIdentifier", + "src": "19491:1:39" + } + ] + } + ] + }, + "name": "checked_div_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "19268:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "19271:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "r", + "nodeType": "YulTypedName", + "src": "19277:1:39", + "type": "" + } + ], + "src": "19237:274:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19690:248:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19707:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19718:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19700:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19700:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19700:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19741:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19752:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19737:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19737:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19757:2:39", + "type": "", + "value": "58" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19730:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19730:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19730:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19780:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19791:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19776:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19776:18:39" + }, + { + "hexValue": "4445493a3a5573652072656672657368436f6c6c61746572616c526174696f20", + "kind": "string", + "nodeType": "YulLiteral", + "src": "19796:34:39", + "type": "", + "value": "DEI::Use refreshCollateralRatio " + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19769:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19769:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19769:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19851:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19862:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19847:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19847:18:39" + }, + { + "hexValue": "7768656e20444549206973206f757473696465206f6620706567", + "kind": "string", + "nodeType": "YulLiteral", + "src": "19867:28:39", + "type": "", + "value": "when DEI is outside of peg" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19840:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19840:56:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19840:56:39" + }, + { + "nodeType": "YulAssignment", + "src": "19905:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19917:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19928:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19913:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19913:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19905:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_f1302f3464c1aea577cd673876485194e38e4985225906230482083933ea77bf__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "19667:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "19681:4:39", + "type": "" + } + ], + "src": "19516:422:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20117:232:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20134:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20145:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20127:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20127:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20127:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20168:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20179:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20164:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20164:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20184:2:39", + "type": "", + "value": "42" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20157:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20157:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20157:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20207:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20218:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20203:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20203:18:39" + }, + { + "hexValue": "4445493a3a73657444455553416464726573733a205a65726f20616464726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "20223:34:39", + "type": "", + "value": "DEI::setDEUSAddress: Zero addres" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20196:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20196:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20196:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20278:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20289:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20274:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20274:18:39" + }, + { + "hexValue": "73206465746563746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "20294:12:39", + "type": "", + "value": "s detected" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20267:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20267:40:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20267:40:39" + }, + { + "nodeType": "YulAssignment", + "src": "20316:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20328:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20339:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20324:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20324:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20316:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_12ac24c3ffefd74f53fba28db5a84496d08720f6235d7115ecc606be7567fe10__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "20094:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20108:4:39", + "type": "" + } + ], + "src": "19943:406:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20528:234:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20545:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20556:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20538:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20538:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20538:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20579:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20590:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20575:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20575:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20595:2:39", + "type": "", + "value": "44" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20568:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20568:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20568:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20618:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20629:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20614:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20614:18:39" + }, + { + "hexValue": "4445493a20796f7520617265206e6f742074686520636f6c6c61746572616c20", + "kind": "string", + "nodeType": "YulLiteral", + "src": "20634:34:39", + "type": "", + "value": "DEI: you are not the collateral " + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20607:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20607:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20607:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20689:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20700:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20685:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20685:18:39" + }, + { + "hexValue": "726174696f20706175736572", + "kind": "string", + "nodeType": "YulLiteral", + "src": "20705:14:39", + "type": "", + "value": "ratio pauser" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20678:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20678:42:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20678:42:39" + }, + { + "nodeType": "YulAssignment", + "src": "20729:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20741:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20752:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20737:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20737:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20729:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_c446382fb772bec07e0925670c9a4b988b44e71ae32f6ec0b51063257cb4a352__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "20505:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20519:4:39", + "type": "" + } + ], + "src": "20354:408:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20941:179:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20958:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20969:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20951:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20951:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20951:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20992:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21003:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20988:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20988:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21008:2:39", + "type": "", + "value": "29" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20981:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20981:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20981:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21031:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21042:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21027:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21027:18:39" + }, + { + "hexValue": "45524332305065726d69743a206578706972656420646561646c696e65", + "kind": "string", + "nodeType": "YulLiteral", + "src": "21047:31:39", + "type": "", + "value": "ERC20Permit: expired deadline" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21020:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21020:59:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21020:59:39" + }, + { + "nodeType": "YulAssignment", + "src": "21088:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21100:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21111:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21096:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21096:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21088:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3e89525a63fb9c966b61cf8f5305156de8420bc773a2b60828a2f32c3c5797bd__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "20918:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20932:4:39", + "type": "" + } + ], + "src": "20767:353:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21366:373:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "21376:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21388:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21399:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21384:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21384:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21376:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21419:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "21430:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21412:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21412:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21412:25:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "21446:52:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21456:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "21450:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21518:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21529:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21514:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21514:18:39" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "21538:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "21546:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "21534:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21534:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21507:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21507:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21507:43:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21570:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21581:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21566:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21566:18:39" + }, + { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "21590:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "21598:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "21586:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21586:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21559:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21559:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21559:43:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21622:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21633:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21618:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21618:18:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "21638:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21611:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21611:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21611:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21665:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21676:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21661:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21661:19:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "21682:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21654:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21654:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21654:35:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21709:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21720:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21705:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21705:19:39" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "21726:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21698:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21698:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21698:35:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "21295:9:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "21306:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "21314:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "21322:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "21330:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "21338:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "21346:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "21357:4:39", + "type": "" + } + ], + "src": "21125:614:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21918:180:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21935:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21946:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21928:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21928:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21928:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21969:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21980:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21965:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21965:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21985:2:39", + "type": "", + "value": "30" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21958:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21958:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21958:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22008:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22019:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22004:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22004:18:39" + }, + { + "hexValue": "45524332305065726d69743a20696e76616c6964207369676e6174757265", + "kind": "string", + "nodeType": "YulLiteral", + "src": "22024:32:39", + "type": "", + "value": "ERC20Permit: invalid signature" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21997:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21997:60:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21997:60:39" + }, + { + "nodeType": "YulAssignment", + "src": "22066:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22078:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22089:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22074:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22074:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22066:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_94ca1ab58dfda790a1782ffbb0c0a140ec51d4148dbeecc6c39e37b25ff4b124__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "21895:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "21909:4:39", + "type": "" + } + ], + "src": "21744:354:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22277:238:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22294:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22305:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22287:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22287:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22287:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22328:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22339:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22324:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22324:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22344:2:39", + "type": "", + "value": "48" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22317:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22317:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22317:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22367:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22378:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22363:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22363:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "22383:34:39", + "type": "", + "value": "AccessControl: sender must be an" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22356:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22356:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22356:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22438:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22449:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22434:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22434:18:39" + }, + { + "hexValue": "2061646d696e20746f207265766f6b65", + "kind": "string", + "nodeType": "YulLiteral", + "src": "22454:18:39", + "type": "", + "value": " admin to revoke" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22427:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22427:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22427:46:39" + }, + { + "nodeType": "YulAssignment", + "src": "22482:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22494:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22505:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22490:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22490:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22482:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "22254:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "22268:4:39", + "type": "" + } + ], + "src": "22103:412:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22694:225:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22711:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22722:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22704:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22704:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22704:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22745:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22756:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22741:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22741:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22761:2:39", + "type": "", + "value": "35" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22734:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22734:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22734:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22784:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22795:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22780:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22780:18:39" + }, + { + "hexValue": "4445493a3a616464506f6f6c3a205a65726f2061646472657373206465746563", + "kind": "string", + "nodeType": "YulLiteral", + "src": "22800:34:39", + "type": "", + "value": "DEI::addPool: Zero address detec" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22773:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22773:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22773:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22855:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22866:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22851:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22851:18:39" + }, + { + "hexValue": "746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "22871:5:39", + "type": "", + "value": "ted" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22844:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22844:33:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22844:33:39" + }, + { + "nodeType": "YulAssignment", + "src": "22886:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22898:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22909:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22894:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22894:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22886:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_79790c34889f935f8f9c1f9e95159c47311bbacd30b96ce8eb641f4da4a41ea5__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "22671:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "22685:4:39", + "type": "" + } + ], + "src": "22520:399:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23098:226:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23115:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23126:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23108:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23108:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23108:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23149:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23160:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23145:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23145:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23165:2:39", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23138:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23138:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23138:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23188:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23199:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23184:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23184:18:39" + }, + { + "hexValue": "4445493a3a616464506f6f6c3a204164647265737320616c7265616479206578", + "kind": "string", + "nodeType": "YulLiteral", + "src": "23204:34:39", + "type": "", + "value": "DEI::addPool: Address already ex" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23177:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23177:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23177:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23259:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23270:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23255:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23255:18:39" + }, + { + "hexValue": "69737473", + "kind": "string", + "nodeType": "YulLiteral", + "src": "23275:6:39", + "type": "", + "value": "ists" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23248:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23248:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23248:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "23291:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23303:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23314:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23299:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23299:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23291:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_135752039067ec9728ec6cc2401f2209e0aa44d6599e067098e5282676485de6__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "23075:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "23089:4:39", + "type": "" + } + ], + "src": "22924:400:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23503:177:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23520:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23531:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23513:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23513:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23513:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23554:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23565:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23550:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23550:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23570:2:39", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23543:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23543:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23543:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23593:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23604:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23589:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23589:18:39" + }, + { + "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77", + "kind": "string", + "nodeType": "YulLiteral", + "src": "23609:29:39", + "type": "", + "value": "SafeMath: addition overflow" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23582:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23582:57:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23582:57:39" + }, + { + "nodeType": "YulAssignment", + "src": "23648:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23660:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23671:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23656:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23656:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23648:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "23480:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "23494:4:39", + "type": "" + } + ], + "src": "23329:351:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23859:226:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23876:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23887:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23869:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23869:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23869:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23910:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23921:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23906:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23906:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23926:2:39", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23899:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23899:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23899:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23949:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23960:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23945:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23945:18:39" + }, + { + "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f20616464", + "kind": "string", + "nodeType": "YulLiteral", + "src": "23965:34:39", + "type": "", + "value": "ERC20: approve from the zero add" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23938:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23938:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23938:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24020:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24031:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24016:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24016:18:39" + }, + { + "hexValue": "72657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24036:6:39", + "type": "", + "value": "ress" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24009:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24009:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24009:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "24052:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24064:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24075:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24060:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24060:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24052:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "23836:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "23850:4:39", + "type": "" + } + ], + "src": "23685:400:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24264:224:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24281:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24292:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24274:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24274:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24274:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24315:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24326:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24311:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24311:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24331:2:39", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24304:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24304:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24304:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24354:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24365:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24350:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24350:18:39" + }, + { + "hexValue": "45524332303a20617070726f766520746f20746865207a65726f206164647265", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24370:34:39", + "type": "", + "value": "ERC20: approve to the zero addre" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24343:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24343:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24343:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24425:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24436:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24421:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24421:18:39" + }, + { + "hexValue": "7373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24441:4:39", + "type": "", + "value": "ss" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24414:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24414:32:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24414:32:39" + }, + { + "nodeType": "YulAssignment", + "src": "24455:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24467:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24478:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24463:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24463:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24455:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "24241:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "24255:4:39", + "type": "" + } + ], + "src": "24090:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24667:227:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24684:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24695:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24677:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24677:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24677:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24718:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24729:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24714:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24714:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24734:2:39", + "type": "", + "value": "37" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24707:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24707:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24707:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24757:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24768:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24753:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24753:18:39" + }, + { + "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f206164", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24773:34:39", + "type": "", + "value": "ERC20: transfer from the zero ad" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24746:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24746:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24746:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24828:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24839:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24824:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24824:18:39" + }, + { + "hexValue": "6472657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24844:7:39", + "type": "", + "value": "dress" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24817:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24817:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24817:35:39" + }, + { + "nodeType": "YulAssignment", + "src": "24861:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24873:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24884:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24869:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24869:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24861:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "24644:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "24658:4:39", + "type": "" + } + ], + "src": "24493:401:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25073:225:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25090:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25101:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25083:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25083:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25083:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25124:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25135:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25120:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25120:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25140:2:39", + "type": "", + "value": "35" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25113:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25113:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25113:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25163:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25174:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25159:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25159:18:39" + }, + { + "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472", + "kind": "string", + "nodeType": "YulLiteral", + "src": "25179:34:39", + "type": "", + "value": "ERC20: transfer to the zero addr" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25152:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25152:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25152:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25234:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25245:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25230:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25230:18:39" + }, + { + "hexValue": "657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "25250:5:39", + "type": "", + "value": "ess" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25223:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25223:33:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25223:33:39" + }, + { + "nodeType": "YulAssignment", + "src": "25265:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25277:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25288:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25273:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25273:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "25265:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "25050:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "25064:4:39", + "type": "" + } + ], + "src": "24899:399:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25477:223:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25494:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25505:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25487:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25487:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25487:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25528:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25539:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25524:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25524:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25544:2:39", + "type": "", + "value": "33" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25517:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25517:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25517:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25567:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25578:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25563:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25563:18:39" + }, + { + "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f20616464726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "25583:34:39", + "type": "", + "value": "ERC20: burn from the zero addres" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25556:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25556:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25556:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25638:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25649:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25634:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25634:18:39" + }, + { + "hexValue": "73", + "kind": "string", + "nodeType": "YulLiteral", + "src": "25654:3:39", + "type": "", + "value": "s" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25627:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25627:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25627:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "25667:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25679:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25690:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25675:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25675:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "25667:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "25454:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "25468:4:39", + "type": "" + } + ], + "src": "25303:397:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25925:160:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25942:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25947:66:39", + "type": "", + "value": "0x19457468657265756d205369676e6564204d6573736167653a0a333200000000" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25935:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25935:79:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25935:79:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26034:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26039:2:39", + "type": "", + "value": "28" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26030:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26030:12:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "26044:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26023:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26023:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26023:28:39" + }, + { + "nodeType": "YulAssignment", + "src": "26060:19:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26071:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26076:2:39", + "type": "", + "value": "60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26067:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26067:12:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "26060:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73_t_bytes32__to_t_string_memory_ptr_t_bytes32__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "25901:3:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "25906:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "25917:3:39", + "type": "" + } + ], + "src": "25705:380:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26264:181:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26281:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26292:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26274:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26274:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26274:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26315:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26326:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26311:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26311:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26331:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26304:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26304:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26304:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26354:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26365:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26350:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26350:18:39" + }, + { + "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "26370:33:39", + "type": "", + "value": "ERC20: mint to the zero address" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26343:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26343:61:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26343:61:39" + }, + { + "nodeType": "YulAssignment", + "src": "26413:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26425:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26436:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26421:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26421:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26413:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "26241:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "26255:4:39", + "type": "" + } + ], + "src": "26090:355:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26624:224:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26641:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26652:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26634:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26634:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26634:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26675:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26686:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26671:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26671:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26691:2:39", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26664:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26664:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26664:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26714:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26725:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26710:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26710:18:39" + }, + { + "hexValue": "45434453413a20696e76616c6964207369676e6174757265202773272076616c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "26730:34:39", + "type": "", + "value": "ECDSA: invalid signature 's' val" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26703:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26703:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26703:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26785:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26796:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26781:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26781:18:39" + }, + { + "hexValue": "7565", + "kind": "string", + "nodeType": "YulLiteral", + "src": "26801:4:39", + "type": "", + "value": "ue" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26774:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26774:32:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26774:32:39" + }, + { + "nodeType": "YulAssignment", + "src": "26815:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26827:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26838:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26823:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26823:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26815:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "26601:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "26615:4:39", + "type": "" + } + ], + "src": "26450:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27027:224:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27044:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27055:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27037:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27037:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27037:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27078:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27089:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27074:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27074:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27094:2:39", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27067:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27067:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27067:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27117:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27128:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27113:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27113:18:39" + }, + { + "hexValue": "45434453413a20696e76616c6964207369676e6174757265202776272076616c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "27133:34:39", + "type": "", + "value": "ECDSA: invalid signature 'v' val" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27106:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27106:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27106:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27188:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27199:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27184:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27184:18:39" + }, + { + "hexValue": "7565", + "kind": "string", + "nodeType": "YulLiteral", + "src": "27204:4:39", + "type": "", + "value": "ue" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27177:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27177:32:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27177:32:39" + }, + { + "nodeType": "YulAssignment", + "src": "27218:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27230:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27241:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27226:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27226:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27218:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "27004:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "27018:4:39", + "type": "" + } + ], + "src": "26853:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27437:217:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "27447:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27459:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27470:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27455:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27455:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27447:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27490:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "27501:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27483:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27483:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27483:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27528:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27539:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27524:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27524:18:39" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "27548:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27556:4:39", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "27544:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27544:17:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27517:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27517:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27517:45:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27582:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27593:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27578:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27578:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "27598:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27571:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27571:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27571:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27625:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27636:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27621:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27621:18:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "27641:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27614:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27614:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27614:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "27382:9:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "27393:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "27401:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "27409:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "27417:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "27428:4:39", + "type": "" + } + ], + "src": "27256:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27833:174:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27850:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27861:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27843:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27843:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27843:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27884:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27895:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27880:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27880:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27900:2:39", + "type": "", + "value": "24" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27873:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27873:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27873:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27923:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27934:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27919:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27919:18:39" + }, + { + "hexValue": "45434453413a20696e76616c6964207369676e6174757265", + "kind": "string", + "nodeType": "YulLiteral", + "src": "27939:26:39", + "type": "", + "value": "ECDSA: invalid signature" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27912:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27912:54:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27912:54:39" + }, + { + "nodeType": "YulAssignment", + "src": "27975:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27987:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27998:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27983:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27983:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27975:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "27810:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "27824:4:39", + "type": "" + } + ], + "src": "27659:348:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28225:299:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "28235:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28247:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28258:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28243:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28243:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "28235:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28278:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "28289:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28271:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28271:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28271:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28316:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28327:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28312:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28312:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "28332:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28305:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28305:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28305:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28359:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28370:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28355:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28355:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "28375:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28348:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28348:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28348:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28402:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28413:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28398:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28398:18:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "28418:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28391:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28391:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28391:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28445:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28456:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28441:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28441:19:39" + }, + { + "arguments": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "28466:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28474:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "28462:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28462:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28434:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28434:84:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28434:84:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "28162:9:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "28173:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "28181:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "28189:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "28197:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "28205:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "28216:4:39", + "type": "" + } + ], + "src": "28012:512:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28703:224:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28720:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28731:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28713:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28713:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28713:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28754:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28765:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28750:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28750:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28770:2:39", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28743:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28743:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28743:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28793:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28804:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28789:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28789:18:39" + }, + { + "hexValue": "456e756d657261626c655365743a20696e646578206f7574206f6620626f756e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "28809:34:39", + "type": "", + "value": "EnumerableSet: index out of boun" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28782:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28782:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28782:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28864:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28875:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28860:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28860:18:39" + }, + { + "hexValue": "6473", + "kind": "string", + "nodeType": "YulLiteral", + "src": "28880:4:39", + "type": "", + "value": "ds" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28853:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28853:32:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28853:32:39" + }, + { + "nodeType": "YulAssignment", + "src": "28894:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28906:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28917:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28902:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28902:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "28894:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "28680:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "28694:4:39", + "type": "" + } + ], + "src": "28529:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29180:196:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "29197:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29202:66:39", + "type": "", + "value": "0x1901000000000000000000000000000000000000000000000000000000000000" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29190:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29190:79:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29190:79:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "29289:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29294:1:39", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29285:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29285:11:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "29298:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29278:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29278:27:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29278:27:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "29325:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29330:2:39", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29321:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29321:12:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "29335:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29314:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29314:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29314:28:39" + }, + { + "nodeType": "YulAssignment", + "src": "29351:19:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "29362:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29367:2:39", + "type": "", + "value": "66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29358:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29358:12:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "29351:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "29148:3:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "29153:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "29161:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "29172:3:39", + "type": "" + } + ], + "src": "28932:444:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29413:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29430:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29433:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29423:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29423:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29423:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29527:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29530:4:39", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29520:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29520:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29520:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29551:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29554:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "29544:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29544:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29544:15:39" + } + ] + }, + "name": "panic_error_0x31", + "nodeType": "YulFunctionDefinition", + "src": "29381:184:39" + } + ] + }, + "contents": "{\n { }\n function array_storeLengthForEncoding_string(pos, length) -> updated_pos\n {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n if gt(i, length)\n {\n mstore(add(add(headStart, length), 64), 0)\n }\n tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function validator_revert_bool(value)\n {\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bool(value)\n value0 := value\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function panic_error_0x41()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0\n {\n let _1 := 32\n if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _2 := 0xffffffffffffffff\n if gt(offset, _2) { revert(0, 0) }\n let _3 := add(headStart, offset)\n if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n let _4 := calldataload(_3)\n if gt(_4, _2) { panic_error_0x41() }\n let _5 := shl(5, _4)\n let dst := allocate_memory(add(_5, _1))\n let dst_1 := dst\n mstore(dst, _4)\n dst := add(dst, _1)\n let srcEnd := add(add(_3, _5), _1)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_3, _1)\n for { } lt(src, srcEnd) { src := add(src, _1) }\n {\n mstore(dst, calldataload(src))\n dst := add(dst, _1)\n }\n value0 := dst_1\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_decode_string(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n let array_1 := allocate_memory(add(and(add(_1, 0x1f), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20))\n mstore(array_1, _1)\n if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n mstore(add(add(array_1, _1), 0x20), 0)\n array := array_1\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_string(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_string(add(headStart, offset_1), dataEnd)\n }\n function abi_decode_array_bytes_calldata_dyn_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes32t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value1_1, value2_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n value1 := value1_1\n value2 := value2_1\n }\n function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value3_1, value4_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n value3 := value3_1\n value4 := value4_1\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let value := calldataload(add(headStart, 128))\n if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n value4 := value\n value5 := calldataload(add(headStart, 160))\n value6 := calldataload(add(headStart, 192))\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_31b4913319800bc14f3ac10959626412727e6e236f8f0f67dfae737e33f2a9ea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 26)\n mstore(add(headStart, 64), \"DEI: you are not the owner\")\n tail := add(headStart, 96)\n }\n function panic_error_0x32()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"AccessControl: sender must be an\")\n mstore(add(headStart, 96), \" admin to grant\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"AccessControl: can only renounce\")\n mstore(add(headStart, 96), \" roles for self\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_5d76525ad886bfae65df1a2a4093e79ca5549605e2e56b119fbbd06a964cb1c1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"DEI::removePool: Zero address de\")\n mstore(add(headStart, 96), \"tected\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_ad6015c13a0e63f548d13ba3fdb3fd25b250b515fed8d06aa09cb97bfbd3a2ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"DEI::removePool: Address nonexis\")\n mstore(add(headStart, 96), \"tant\")\n tail := add(headStart, 128)\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function abi_encode_string_storage(value, pos) -> ret\n {\n let slotValue := sload(value)\n let length := 0\n let _1 := 1\n length := shr(_1, slotValue)\n let outOfPlaceEncoding := and(slotValue, _1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n let _2 := 32\n if eq(outOfPlaceEncoding, lt(length, _2))\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n let pos_1 := array_storeLengthForEncoding_string(pos, length)\n switch outOfPlaceEncoding\n case 0 {\n mstore(pos_1, and(slotValue, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00))\n ret := add(pos_1, _2)\n }\n case 1 {\n let dataPos := array_dataslot_string_storage(value)\n let i := 0\n for { } lt(i, length) { i := add(i, _2) }\n {\n mstore(add(pos_1, i), sload(dataPos))\n dataPos := add(dataPos, _1)\n }\n ret := add(pos_1, i)\n }\n }\n function abi_encode_tuple_t_string_storage_t_string_storage__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_string_storage(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_string_storage(value1, tail_1)\n }\n function abi_encode_bytes_calldata(start, length, pos) -> end\n {\n mstore(pos, length)\n calldatacopy(add(pos, 0x20), start, length)\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n }\n function abi_encode_tuple_t_bytes32_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n let tail_1 := add(headStart, 64)\n mstore(headStart, value0)\n let _1 := 32\n mstore(add(headStart, _1), 64)\n let pos := tail_1\n mstore(tail_1, value2)\n pos := add(headStart, 96)\n let tail_2 := add(add(headStart, shl(5, value2)), 96)\n let srcPtr := value1\n let i := 0\n for { } lt(i, value2) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0))\n let rel_offset_of_tail := calldataload(srcPtr)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), value1), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n let value := add(rel_offset_of_tail, value1)\n let length := calldataload(value)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n if sgt(value1, sub(calldatasize(), length)) { revert(0, 0) }\n tail_2 := abi_encode_bytes_calldata(add(value, _1), length, tail_2)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n tail := tail_2\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bool(value)\n value0 := value\n }\n function abi_encode_tuple_t_uint256_t_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_stringliteral_cd3981bc95962e0a9b20d76af41ca9bc6eca9273045b5feb5b9ab06e8f37766c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"DEI: only dei pools can call thi\")\n mstore(add(headStart, 96), \"s function\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_d7b768e1373234e0883c129bd428f5c8535c242446bb3a854d95826c27f5ad93__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"DEI::Collateral Ratio has been p\")\n mstore(add(headStart, 96), \"aused\")\n tail := add(headStart, 128)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function abi_encode_tuple_t_stringliteral_2c2a9a3e1243d1c4990a92a49185c5301054f4ed462802e7413e97975991ef03__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"DEI::Internal cooldown not passe\")\n mstore(add(headStart, 96), \"d\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed(pos, value5, value4, value3, value2, value1, value0) -> end\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000\n mstore(pos, and(shl(96, value0), _1))\n mstore(add(pos, 20), value1)\n mstore(add(pos, 52), and(shl(96, value2), _1))\n mstore(add(pos, 72), value3)\n mstore(add(pos, 104), value4)\n mstore(add(pos, 136), value5)\n end := add(pos, 168)\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n product := mul(x, y)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n function abi_encode_tuple_t_stringliteral_f1302f3464c1aea577cd673876485194e38e4985225906230482083933ea77bf__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 58)\n mstore(add(headStart, 64), \"DEI::Use refreshCollateralRatio \")\n mstore(add(headStart, 96), \"when DEI is outside of peg\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_12ac24c3ffefd74f53fba28db5a84496d08720f6235d7115ecc606be7567fe10__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"DEI::setDEUSAddress: Zero addres\")\n mstore(add(headStart, 96), \"s detected\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_c446382fb772bec07e0925670c9a4b988b44e71ae32f6ec0b51063257cb4a352__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), \"DEI: you are not the collateral \")\n mstore(add(headStart, 96), \"ratio pauser\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_3e89525a63fb9c966b61cf8f5305156de8420bc773a2b60828a2f32c3c5797bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"ERC20Permit: expired deadline\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 192)\n mstore(headStart, value0)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n mstore(add(headStart, 160), value5)\n }\n function abi_encode_tuple_t_stringliteral_94ca1ab58dfda790a1782ffbb0c0a140ec51d4148dbeecc6c39e37b25ff4b124__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 30)\n mstore(add(headStart, 64), \"ERC20Permit: invalid signature\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 48)\n mstore(add(headStart, 64), \"AccessControl: sender must be an\")\n mstore(add(headStart, 96), \" admin to revoke\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_79790c34889f935f8f9c1f9e95159c47311bbacd30b96ce8eb641f4da4a41ea5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 35)\n mstore(add(headStart, 64), \"DEI::addPool: Zero address detec\")\n mstore(add(headStart, 96), \"ted\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_135752039067ec9728ec6cc2401f2209e0aa44d6599e067098e5282676485de6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"DEI::addPool: Address already ex\")\n mstore(add(headStart, 96), \"ists\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"SafeMath: addition overflow\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n mstore(add(headStart, 96), \"ress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n mstore(add(headStart, 96), \"ss\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n mstore(add(headStart, 96), \"dress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 35)\n mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n mstore(add(headStart, 96), \"ess\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"ERC20: burn from the zero addres\")\n mstore(add(headStart, 96), \"s\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73_t_bytes32__to_t_string_memory_ptr_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n mstore(pos, 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000)\n mstore(add(pos, 28), value0)\n end := add(pos, 60)\n }\n function abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 31)\n mstore(add(headStart, 64), \"ERC20: mint to the zero address\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"ECDSA: invalid signature 's' val\")\n mstore(add(headStart, 96), \"ue\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"ECDSA: invalid signature 'v' val\")\n mstore(add(headStart, 96), \"ue\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, 0xff))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"ECDSA: invalid signature\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 160)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), and(value4, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"EnumerableSet: index out of boun\")\n mstore(add(headStart, 96), \"ds\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n mstore(pos, 0x1901000000000000000000000000000000000000000000000000000000000000)\n mstore(add(pos, 2), value0)\n mstore(add(pos, 34), value1)\n end := add(pos, 66)\n }\n function panic_error_0x31()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": { + "298": [ + { + "length": 32, + "start": 12022 + } + ], + "300": [ + { + "length": 32, + "start": 11981 + } + ], + "302": [ + { + "length": 32, + "start": 12105 + } + ], + "304": [ + { + "length": 32, + "start": 12142 + } + ], + "306": [ + { + "length": 32, + "start": 12063 + } + ], + "5856": [ + { + "length": 32, + "start": 9181 + } + ] + }, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106103d05760003560e01c806379cc6790116101ff578063ae7730291161011a578063d01dd162116100ad578063dd62ed3e1161007c578063dd62ed3e146108b4578063e6344628146108fa578063f1fc1fff1461090d578063f72bd4f01461091657600080fd5b8063d01dd16214610868578063d505accf1461087b578063d547741f1461088e578063d914cd4b146108a157600080fd5b8063c03f7be3116100e9578063c03f7be314610836578063c1e2785b1461083f578063c2593c2714610848578063ca15c8731461085557600080fd5b8063ae773029146107da578063aee06a5e14610808578063b4f56b261461081b578063bef40ec81461082e57600080fd5b80639a6f978d11610192578063a6959f0f11610161578063a6959f0f1461078e578063a8a778ae146107a1578063a9059cbb146107b4578063ab3d1bb6146107c757600080fd5b80639a6f978d1461074e578063a085ea7c14610760578063a217fddf14610773578063a457c2d71461077b57600080fd5b806387a140c3116101ce57806387a140c3146107135780639010d07c1461072057806391d148541461073357806395d89b411461074657600080fd5b806379cc6790146106ba5780637adbf973146106cd5780637dc0d1d0146106e05780637ecebe001461070057600080fd5b8063313ce567116102ef5780634d97897b11610282578063597bf73811610251578063597bf7381461064b5780635a4462151461065e5780636793f0ac1461067157806370a082311461068457600080fd5b80634d97897b146105ed57806351e238e31461060d578063545055171461061e578063564b81ef1461064557600080fd5b806336568abe116102be57806336568abe146105a157806339509351146105b45780633b7d0946146105c757806342966c68146105da57600080fd5b8063313ce5671461054f578063349432d91461056957806334ddb95d146105725780633644e5151461059957600080fd5b80631c5df1e511610367578063248a9ca311610336578063248a9ca3146104cb57806327daf4f8146104ee5780632eb9771b146105335780632f2ff15d1461053c57600080fd5b80631c5df1e5146104895780632258750a1461049c57806323b872dd146104a55780632480fcea146104b857600080fd5b806315ea919c116103a357806315ea919c1461043e57806316b0c8461461046157806318160ddd1461047857806319d05d091461048057600080fd5b806306fdde03146103d5578063095ea7b3146103f35780630c0a25aa1461041657806311af9a4b1461042b575b600080fd5b6103dd61091f565b6040516103ea9190613956565b60405180910390f35b6104066104013660046139f2565b6109ad565b60405190151581526020016103ea565b610429610424366004613a2a565b6109c4565b005b610429610439366004613a47565b610aca565b61040661044c366004613a47565b600b6020526000908152604090205460ff1681565b61046a60105481565b6040519081526020016103ea565b60025461046a565b61046a60135481565b610429610497366004613a62565b610bcd565b61046a60165481565b6104066104b3366004613a7b565b610c92565b61046a6104c6366004613b35565b610d26565b61046a6104d9366004613a62565b60009081526004602052604090206002015490565b60085461050e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103ea565b61046a600c5481565b61042961054a366004613bdb565b610e66565b610557601281565b60405160ff90911681526020016103ea565b61046a60125481565b61046a7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b61046a610f1c565b6104296105af366004613bdb565b610f2b565b6104066105c23660046139f2565b610fda565b6104296105d5366004613a47565b61101d565b6104296105e8366004613a62565b61136c565b60095461050e9073ffffffffffffffffffffffffffffffffffffffff1681565b61046a69021e19e0c9bab240000081565b61046a7fb25402418ad555013210365a422f9f1206b2dd00719998db06f8a1fbe014641b81565b4661046a565b610429610659366004613a62565b611379565b61042961066c366004613c95565b61143e565b61040661067f366004613d45565b611535565b61046a610692366004613a47565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6104296106c83660046139f2565b611616565b6104296106db366004613a47565b611662565b60075461050e9073ffffffffffffffffffffffffffffffffffffffff1681565b61046a61070e366004613a47565b611765565b600f546104069060ff1681565b61050e61072e366004613d91565b611790565b610406610741366004613bdb565b6117af565b6103dd6117c7565b60155461040690610100900460ff1681565b61042961076e366004613d91565b6117d4565b61046a600081565b6104066107893660046139f2565b6118a4565b61042961079c366004613d91565b611900565b6104296107af3660046139f2565b6119d0565b6104066107c23660046139f2565b611ad0565b6104296107d5366004613db3565b611add565b6107ed6107e8366004613b35565b611f3b565b604080519384526020840192909252908201526060016103ea565b610429610816366004613a47565b611f62565b6104296108293660046139f2565b612108565b610429612200565b61046a600e5481565b61046a60145481565b6015546104069060ff1681565b61046a610863366004613a62565b612321565b61050e610876366004613a62565b612338565b610429610889366004613e14565b61236f565b61042961089c366004613bdb565b61252e565b6104296108af366004613a47565b6125d6565b61046a6108c2366004613e87565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b610429610908366004613a2a565b612897565b61046a600d5481565b61046a60115481565b6006805461092c90613eb1565b80601f016020809104026020016040519081016040528092919081815260200182805461095890613eb1565b80156109a55780601f1061097a576101008083540402835291602001916109a5565b820191906000526020600020905b81548152906001019060200180831161098857829003601f168201915b505050505081565b60006109ba338484612a31565b5060015b92915050565b6109ee7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b610a59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e657200000000000060448201526064015b60405180910390fd5b60158054821515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff9091161790556040517fe50bc939dc0e5025414f0f3b58008de090812f288a3670db7e723ef663dcdc5490610abf90831515815260200190565b60405180910390a150565b610af47f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b610b5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd7ab6b495fc0223207243f48d9c9e2c8303180b6d1914be5710ecf209ebd2d1c90602001610abf565b610bf77f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b610c5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b600e8190556040518181527fc7443059c2ed485e2c9efe4e766bef9432a6f0ed6695741ab4afdffab3b9215790602001610abf565b6000610c9f848484612be5565b610d1c8433610d17856040518060600160405280602881526020016143126028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020526040812090335b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190612e0f565b612a31565b5060019392505050565b600080805b600a54811015610e5f57600073ffffffffffffffffffffffffffffffffffffffff16600a8281548110610d6057610d60613eff565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614610e4d57600a8181548110610d9a57610d9a613eff565b600091825260209091200154845173ffffffffffffffffffffffffffffffffffffffff9091169063b6258aaa90869084908110610dd957610dd9613eff565b60200260200101516040518263ffffffff1660e01b8152600401610dff91815260200190565b602060405180830381865afa158015610e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e409190613f2e565b610e4a9083613f76565b91505b80610e5781613f8e565b915050610d2b565b5092915050565b600082815260046020526040902060020154610e8290336117af565b610f0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e7400000000000000000000000000000000006064820152608401610a50565b610f188282612e63565b5050565b6000610f26612ec9565b905090565b73ffffffffffffffffffffffffffffffffffffffff81163314610fd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610a50565b610f188282612fbc565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916109ba918590610d179086612986565b6110477f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b6110ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b73ffffffffffffffffffffffffffffffffffffffff8116611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4445493a3a72656d6f7665506f6f6c3a205a65726f206164647265737320646560448201527f74656374656400000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b602052604090205460ff161515600114611209576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4445493a3a72656d6f7665506f6f6c3a2041646472657373206e6f6e6578697360448201527f74616e74000000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b6020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600a54811015611325578173ffffffffffffffffffffffffffffffffffffffff16600a828154811061128957611289613eff565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415611313576000600a82815481106112c6576112c6613eff565b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611325565b8061131d81613f8e565b915050611255565b5060405173ffffffffffffffffffffffffffffffffffffffff821681527f4106dfdaa577573db51c0ca93f766dbedfa0758faa2e7f5bcdb7c142be803c3f90602001610abf565b6113763382613022565b50565b6113a37f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b600d8190556040518181527f3e2f198539455d04450252bfc103c833ca10d4231da6509e0528bb2383e22b7390602001610abf565b6114687f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b6114ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b81516114e19060069060208501906138bd565b5080516114f59060059060208401906138bd565b507f24a9aef9121ba62598f20f8f80fd406fa1d2d956747e0728068c649f324ddf416006600560405161152992919061409e565b60405180910390a15050565b60075460009073ffffffffffffffffffffffffffffffffffffffff1663fb0fe3f46115ad866040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b85856040518463ffffffff1660e01b81526004016115cd9392919061410c565b602060405180830381865afa1580156115ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160e91906141ee565b949350505050565b60006116468260405180606001604052806024815260200161433a6024913961163f86336108c2565b9190612e0f565b9050611653833383612a31565b61165d8383613022565b505050565b61168c7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b6116f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3f32684a32a11dabdbb8c0177de80aa3ae36a004d75210335b49e544e48cd0aa90602001610abf565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600360205260408120546109be565b60008281526004602052604081206117a89083613190565b9392505050565b60008281526004602052604081206117a890836131a6565b6005805461092c90613eb1565b6117fe7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b6011829055601281905560408051838152602081018390527f36d9a5eb34de8b03405baea3d54341f11312730be6f93d18c932728c9e2250d49101611529565b60006109ba3384610d178560405180606001604052806025815260200161435e6025913933600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d1684529091529020549190612e0f565b61192a7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b611990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b6013829055601481905560408051838152602081018390527f2896b6d714a04536ba6121e132dc3aff2eaca8a2ba3eff2676d6a8b435f317459101611529565b336000908152600b602052604090205460ff161515600114611a74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4445493a206f6e6c792064656920706f6f6c732063616e2063616c6c2074686960448201527f732066756e6374696f6e000000000000000000000000000000000000000000006064820152608401610a50565b611a7e82826131e5565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907f4857273a485c2cfff4b12a1064c50e871b8e0c686cf17f44c16b4f8554ede3b1906020015b60405180910390a35050565b60006109ba338484612be5565b600f5460ff1615611b70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4445493a3a436f6c6c61746572616c20526174696f20686173206265656e207060448201527f61757365640000000000000000000000000000000000000000000000000000006064820152608401610a50565b600060165442611b80919061420b565b9050600e54811015611c14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4445493a3a496e7465726e616c20636f6f6c646f776e206e6f7420706173736560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b600954604080517ea66f1f000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169162a66f1f9160048083019260209291908290030181865afa158015611c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca69190613f2e565b600854604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b8116602080840191909152603483018d90523090941b166054820152606881018a9052608881018990524660a8808301919091528251808303909101815260c89091019091528051910120909150611d2c818686611535565b506000611d398984614222565b90506000611d4660025490565b90506000611d54828461425f565b601554909150610100900460ff1615611e04576013548a1180611d7857506014548a105b611e04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4445493a3a5573652072656672657368436f6c6c61746572616c526174696f2060448201527f7768656e20444549206973206f757473696465206f66207065670000000000006064820152608401610a50565b6013548a1115611e2657600d54600c54611e1e919061420b565b600c55611ed5565b6014548a1015611e4057600d54600c54611e1e9190613f76565b60155460ff1615611ed557620f4240601154620f4240611e609190613f76565b601054611e6d9190614222565b611e77919061425f565b811115611e8e57600d54600c54611e1e919061420b565b620f4240601254620f4240611ea3919061420b565b601054611eb09190614222565b611eba919061425f565b811015611ed557600d54600c54611ed19190613f76565b600c555b601081905542601655600c54620f42401015611ef357620f4240600c555b7fb1200af9b3ac4dec88c9d01e1fb7cc7fa1f0fe55bf4afac1f30cc4fc2b2d1dd2600c54604051611f2691815260200190565b60405180910390a15050505050505050505050565b6000806000611f4960025490565b600c54611f5586610d26565b9250925092509193909250565b611f8c7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b611ff2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b73ffffffffffffffffffffffffffffffffffffffff8116612095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4445493a3a73657444455553416464726573733a205a65726f2061646472657360448201527f73206465746563746564000000000000000000000000000000000000000000006064820152608401610a50565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f40c19b0139e5bc25c64e466d74e6e13ee1095acc65b58faf1932f9583e7d812c90602001610abf565b336000908152600b602052604090205460ff1615156001146121ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4445493a206f6e6c792064656920706f6f6c732063616e2063616c6c2074686960448201527f732066756e6374696f6e000000000000000000000000000000000000000000006064820152608401610a50565b6121b6828261323d565b60405181815273ffffffffffffffffffffffffffffffffffffffff83169033907f97847a1fcbba98b997fb5b6c48f68c2d69b53a19157db1622218a559b95fe9be90602001611ac4565b61222a7fb25402418ad555013210365a422f9f1206b2dd00719998db06f8a1fbe014641b336117af565b6122b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4445493a20796f7520617265206e6f742074686520636f6c6c61746572616c2060448201527f726174696f2070617573657200000000000000000000000000000000000000006064820152608401610a50565b600f805460ff808216157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090921682179092556040519116151581527f209068f7bed5a02fb7695c3e3b61bb8324d1facb25523c6422bfd2105ec44d929060200160405180910390a1565b60008181526004602052604081206109be90613355565b600a818154811061234857600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b834211156123d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610a50565b60007f00000000000000000000000000000000000000000000000000000000000000008888886124088c61335f565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061247082613394565b90506000612480828787876133fd565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610a50565b6125228a8a8a612a31565b50505050505050505050565b60008281526004602052604090206002015461254a90336117af565b610fd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b65000000000000000000000000000000006064820152608401610a50565b6126007f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b612666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b73ffffffffffffffffffffffffffffffffffffffff8116612709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4445493a3a616464506f6f6c3a205a65726f206164647265737320646574656360448201527f74656400000000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b602052604090205460ff16156127be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4445493a3a616464506f6f6c3a204164647265737320616c726561647920657860448201527f69737473000000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff81166000818152600b6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600a805491820181559093527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a890920180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905590519182527f73cca62ab1b520c9715bf4e6c71e3e518c754e7148f65102f43289a7df0efea69101610abf565b6128c17f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b612927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b601580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215159081179091556040519081527fa272b58e328af1078a931ae3f79e96ad602c5fbbf0e953a5651b5e7e107846d290602001610abf565b6000806129938385613f76565b9050838110156117a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a50565b60006117a8837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1661364c565b73ffffffffffffffffffffffffffffffffffffffff8316612ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff8216612b76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316612c88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff8216612d2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610a50565b612d75816040518060600160405280602681526020016142ec6026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190612e0f565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054612db19082612986565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101612bd8565b60008184841115612e4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a509190613956565b506000612e5a848661420b565b95945050505050565b6000828152600460205260409020612e7b90826129ff565b15610f1857604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612f1857507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000828152600460205260409020612fd4908261369b565b15610f1857604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b73ffffffffffffffffffffffffffffffffffffffff82166130c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b61310f816040518060600160405280602281526020016142ca6022913973ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020549190612e0f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205560025461314290826136cd565b60025560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611ac4565b600061319c838361370f565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156117a8565b6131ef8282613022565b610f188233610d178460405180606001604052806024815260200161433a6024913973ffffffffffffffffffffffffffffffffffffffff881660009081526001602052604081209033610ce9565b73ffffffffffffffffffffffffffffffffffffffff82166132ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610a50565b6002546132c79082612986565b60025573ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546132fa9082612986565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611ac4565b60006109be825490565b73ffffffffffffffffffffffffffffffffffffffff811660009081526003602052604090208054600181018255905b50919050565b60006109be6133a1612ec9565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156134af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b8360ff16601b14806134c457508360ff16601c145b613550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b6040805160008082526020820180845288905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156135a4573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116612e5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610a50565b6000818152600183016020526040812054613693575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109be565b5060006109be565b60006117a8837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b166137ca565b60006117a883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612e0f565b815460009082106137a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f64730000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b8260000182815481106137b7576137b7613eff565b9060005260206000200154905092915050565b600081815260018301602052604081205480156138b35760006137ee60018361420b565b85549091506000906138029060019061420b565b9050600086600001828154811061381b5761381b613eff565b906000526020600020015490508087600001848154811061383e5761383e613eff565b600091825260209091200155613855836001613f76565b600082815260018901602052604090205586548790806138775761387761429a565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506109be565b60009150506109be565b8280546138c990613eb1565b90600052602060002090601f0160209004810192826138eb5760008555613931565b82601f1061390457805160ff1916838001178555613931565b82800160010185558215613931579182015b82811115613931578251825591602001919060010190613916565b5061393d929150613941565b5090565b5b8082111561393d5760008155600101613942565b600060208083528351808285015260005b8181101561398357858101830151858201604001528201613967565b81811115613995576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146139ed57600080fd5b919050565b60008060408385031215613a0557600080fd5b613a0e836139c9565b946020939093013593505050565b801515811461137657600080fd5b600060208284031215613a3c57600080fd5b81356117a881613a1c565b600060208284031215613a5957600080fd5b6117a8826139c9565b600060208284031215613a7457600080fd5b5035919050565b600080600060608486031215613a9057600080fd5b613a99846139c9565b9250613aa7602085016139c9565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613b2d57613b2d613ab7565b604052919050565b60006020808385031215613b4857600080fd5b823567ffffffffffffffff80821115613b6057600080fd5b818501915085601f830112613b7457600080fd5b813581811115613b8657613b86613ab7565b8060051b9150613b97848301613ae6565b8181529183018401918481019088841115613bb157600080fd5b938501935b83851015613bcf57843582529385019390850190613bb6565b98975050505050505050565b60008060408385031215613bee57600080fd5b82359150613bfe602084016139c9565b90509250929050565b600082601f830112613c1857600080fd5b813567ffffffffffffffff811115613c3257613c32613ab7565b613c6360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613ae6565b818152846020838601011115613c7857600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215613ca857600080fd5b823567ffffffffffffffff80821115613cc057600080fd5b613ccc86838701613c07565b93506020850135915080821115613ce257600080fd5b50613cef85828601613c07565b9150509250929050565b60008083601f840112613d0b57600080fd5b50813567ffffffffffffffff811115613d2357600080fd5b6020830191508360208260051b8501011115613d3e57600080fd5b9250929050565b600080600060408486031215613d5a57600080fd5b83359250602084013567ffffffffffffffff811115613d7857600080fd5b613d8486828701613cf9565b9497909650939450505050565b60008060408385031215613da457600080fd5b50508035926020909101359150565b600080600080600060808688031215613dcb57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff811115613df757600080fd5b613e0388828901613cf9565b969995985093965092949392505050565b600080600080600080600060e0888a031215613e2f57600080fd5b613e38886139c9565b9650613e46602089016139c9565b95506040880135945060608801359350608088013560ff81168114613e6a57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215613e9a57600080fd5b613ea3836139c9565b9150613bfe602084016139c9565b600181811c90821680613ec557607f821691505b6020821081141561338e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215613f4057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613f8957613f89613f47565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613fc057613fc0613f47565b5060010190565b8054600090600181811c9080831680613fe157607f831692505b602080841082141561401c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b83885260208801828015614037576001811461406657614091565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00871682528282019750614091565b60008981526020902060005b8781101561408b57815484820152908601908401614072565b83019850505b5050505050505092915050565b6040815260006140b16040830185613fc7565b8281036020840152612e5a8185613fc7565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b878110156141e0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18a360301811261419757600080fd5b8901803567ffffffffffffffff8111156141b057600080fd5b8036038b13156141bf57600080fd5b6141cc87828885016140c3565b965050509183019190830190600101614136565b509298975050505050505050565b60006020828403121561420057600080fd5b81516117a881613a1c565b60008282101561421d5761421d613f47565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561425a5761425a613f47565b500290565b600082614295577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e461646f2d503bf780a9f3926215ffa592ef73f33f8529487295fcaf87728f9e64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3D0 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x79CC6790 GT PUSH2 0x1FF JUMPI DUP1 PUSH4 0xAE773029 GT PUSH2 0x11A JUMPI DUP1 PUSH4 0xD01DD162 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x8B4 JUMPI DUP1 PUSH4 0xE6344628 EQ PUSH2 0x8FA JUMPI DUP1 PUSH4 0xF1FC1FFF EQ PUSH2 0x90D JUMPI DUP1 PUSH4 0xF72BD4F0 EQ PUSH2 0x916 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xD01DD162 EQ PUSH2 0x868 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x87B JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x88E JUMPI DUP1 PUSH4 0xD914CD4B EQ PUSH2 0x8A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC03F7BE3 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xC03F7BE3 EQ PUSH2 0x836 JUMPI DUP1 PUSH4 0xC1E2785B EQ PUSH2 0x83F JUMPI DUP1 PUSH4 0xC2593C27 EQ PUSH2 0x848 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xAE773029 EQ PUSH2 0x7DA JUMPI DUP1 PUSH4 0xAEE06A5E EQ PUSH2 0x808 JUMPI DUP1 PUSH4 0xB4F56B26 EQ PUSH2 0x81B JUMPI DUP1 PUSH4 0xBEF40EC8 EQ PUSH2 0x82E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9A6F978D GT PUSH2 0x192 JUMPI DUP1 PUSH4 0xA6959F0F GT PUSH2 0x161 JUMPI DUP1 PUSH4 0xA6959F0F EQ PUSH2 0x78E JUMPI DUP1 PUSH4 0xA8A778AE EQ PUSH2 0x7A1 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x7B4 JUMPI DUP1 PUSH4 0xAB3D1BB6 EQ PUSH2 0x7C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9A6F978D EQ PUSH2 0x74E JUMPI DUP1 PUSH4 0xA085EA7C EQ PUSH2 0x760 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x773 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x77B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x87A140C3 GT PUSH2 0x1CE JUMPI DUP1 PUSH4 0x87A140C3 EQ PUSH2 0x713 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x720 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x733 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x746 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x6BA JUMPI DUP1 PUSH4 0x7ADBF973 EQ PUSH2 0x6CD JUMPI DUP1 PUSH4 0x7DC0D1D0 EQ PUSH2 0x6E0 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x700 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x2EF JUMPI DUP1 PUSH4 0x4D97897B GT PUSH2 0x282 JUMPI DUP1 PUSH4 0x597BF738 GT PUSH2 0x251 JUMPI DUP1 PUSH4 0x597BF738 EQ PUSH2 0x64B JUMPI DUP1 PUSH4 0x5A446215 EQ PUSH2 0x65E JUMPI DUP1 PUSH4 0x6793F0AC EQ PUSH2 0x671 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x684 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4D97897B EQ PUSH2 0x5ED JUMPI DUP1 PUSH4 0x51E238E3 EQ PUSH2 0x60D JUMPI DUP1 PUSH4 0x54505517 EQ PUSH2 0x61E JUMPI DUP1 PUSH4 0x564B81EF EQ PUSH2 0x645 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x36568ABE GT PUSH2 0x2BE JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x5A1 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x5B4 JUMPI DUP1 PUSH4 0x3B7D0946 EQ PUSH2 0x5C7 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x54F JUMPI DUP1 PUSH4 0x349432D9 EQ PUSH2 0x569 JUMPI DUP1 PUSH4 0x34DDB95D EQ PUSH2 0x572 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x599 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1C5DF1E5 GT PUSH2 0x367 JUMPI DUP1 PUSH4 0x248A9CA3 GT PUSH2 0x336 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x4CB JUMPI DUP1 PUSH4 0x27DAF4F8 EQ PUSH2 0x4EE JUMPI DUP1 PUSH4 0x2EB9771B EQ PUSH2 0x533 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x53C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1C5DF1E5 EQ PUSH2 0x489 JUMPI DUP1 PUSH4 0x2258750A EQ PUSH2 0x49C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x4A5 JUMPI DUP1 PUSH4 0x2480FCEA EQ PUSH2 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x15EA919C GT PUSH2 0x3A3 JUMPI DUP1 PUSH4 0x15EA919C EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0x16B0C846 EQ PUSH2 0x461 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x478 JUMPI DUP1 PUSH4 0x19D05D09 EQ PUSH2 0x480 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x3D5 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x3F3 JUMPI DUP1 PUSH4 0xC0A25AA EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x11AF9A4B EQ PUSH2 0x42B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3DD PUSH2 0x91F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3EA SWAP2 SWAP1 PUSH2 0x3956 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x406 PUSH2 0x401 CALLDATASIZE PUSH1 0x4 PUSH2 0x39F2 JUMP JUMPDEST PUSH2 0x9AD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3EA JUMP JUMPDEST PUSH2 0x429 PUSH2 0x424 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A2A JUMP JUMPDEST PUSH2 0x9C4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x429 PUSH2 0x439 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A47 JUMP JUMPDEST PUSH2 0xACA JUMP JUMPDEST PUSH2 0x406 PUSH2 0x44C CALLDATASIZE PUSH1 0x4 PUSH2 0x3A47 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x46A PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3EA JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x46A JUMP JUMPDEST PUSH2 0x46A PUSH1 0x13 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x497 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A62 JUMP JUMPDEST PUSH2 0xBCD JUMP JUMPDEST PUSH2 0x46A PUSH1 0x16 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x4B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A7B JUMP JUMPDEST PUSH2 0xC92 JUMP JUMPDEST PUSH2 0x46A PUSH2 0x4C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B35 JUMP JUMPDEST PUSH2 0xD26 JUMP JUMPDEST PUSH2 0x46A PUSH2 0x4D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A62 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH2 0x50E SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3EA JUMP JUMPDEST PUSH2 0x46A PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x54A CALLDATASIZE PUSH1 0x4 PUSH2 0x3BDB JUMP JUMPDEST PUSH2 0xE66 JUMP JUMPDEST PUSH2 0x557 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3EA JUMP JUMPDEST PUSH2 0x46A PUSH1 0x12 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x46A PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP2 JUMP JUMPDEST PUSH2 0x46A PUSH2 0xF1C JUMP JUMPDEST PUSH2 0x429 PUSH2 0x5AF CALLDATASIZE PUSH1 0x4 PUSH2 0x3BDB JUMP JUMPDEST PUSH2 0xF2B JUMP JUMPDEST PUSH2 0x406 PUSH2 0x5C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x39F2 JUMP JUMPDEST PUSH2 0xFDA JUMP JUMPDEST PUSH2 0x429 PUSH2 0x5D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A47 JUMP JUMPDEST PUSH2 0x101D JUMP JUMPDEST PUSH2 0x429 PUSH2 0x5E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A62 JUMP JUMPDEST PUSH2 0x136C JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x50E SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x46A PUSH10 0x21E19E0C9BAB2400000 DUP2 JUMP JUMPDEST PUSH2 0x46A PUSH32 0xB25402418AD555013210365A422F9F1206B2DD00719998DB06F8A1FBE014641B DUP2 JUMP JUMPDEST CHAINID PUSH2 0x46A JUMP JUMPDEST PUSH2 0x429 PUSH2 0x659 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A62 JUMP JUMPDEST PUSH2 0x1379 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x66C CALLDATASIZE PUSH1 0x4 PUSH2 0x3C95 JUMP JUMPDEST PUSH2 0x143E JUMP JUMPDEST PUSH2 0x406 PUSH2 0x67F CALLDATASIZE PUSH1 0x4 PUSH2 0x3D45 JUMP JUMPDEST PUSH2 0x1535 JUMP JUMPDEST PUSH2 0x46A PUSH2 0x692 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A47 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x6C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x39F2 JUMP JUMPDEST PUSH2 0x1616 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x6DB CALLDATASIZE PUSH1 0x4 PUSH2 0x3A47 JUMP JUMPDEST PUSH2 0x1662 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH2 0x50E SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x46A PUSH2 0x70E CALLDATASIZE PUSH1 0x4 PUSH2 0x3A47 JUMP JUMPDEST PUSH2 0x1765 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH2 0x406 SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x50E PUSH2 0x72E CALLDATASIZE PUSH1 0x4 PUSH2 0x3D91 JUMP JUMPDEST PUSH2 0x1790 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x741 CALLDATASIZE PUSH1 0x4 PUSH2 0x3BDB JUMP JUMPDEST PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x3DD PUSH2 0x17C7 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH2 0x406 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x76E CALLDATASIZE PUSH1 0x4 PUSH2 0x3D91 JUMP JUMPDEST PUSH2 0x17D4 JUMP JUMPDEST PUSH2 0x46A PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x789 CALLDATASIZE PUSH1 0x4 PUSH2 0x39F2 JUMP JUMPDEST PUSH2 0x18A4 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x79C CALLDATASIZE PUSH1 0x4 PUSH2 0x3D91 JUMP JUMPDEST PUSH2 0x1900 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x7AF CALLDATASIZE PUSH1 0x4 PUSH2 0x39F2 JUMP JUMPDEST PUSH2 0x19D0 JUMP JUMPDEST PUSH2 0x406 PUSH2 0x7C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x39F2 JUMP JUMPDEST PUSH2 0x1AD0 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x7D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DB3 JUMP JUMPDEST PUSH2 0x1ADD JUMP JUMPDEST PUSH2 0x7ED PUSH2 0x7E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B35 JUMP JUMPDEST PUSH2 0x1F3B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x3EA JUMP JUMPDEST PUSH2 0x429 PUSH2 0x816 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A47 JUMP JUMPDEST PUSH2 0x1F62 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x829 CALLDATASIZE PUSH1 0x4 PUSH2 0x39F2 JUMP JUMPDEST PUSH2 0x2108 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x2200 JUMP JUMPDEST PUSH2 0x46A PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH2 0x46A PUSH1 0x14 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH2 0x406 SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x46A PUSH2 0x863 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A62 JUMP JUMPDEST PUSH2 0x2321 JUMP JUMPDEST PUSH2 0x50E PUSH2 0x876 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A62 JUMP JUMPDEST PUSH2 0x2338 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x889 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E14 JUMP JUMPDEST PUSH2 0x236F JUMP JUMPDEST PUSH2 0x429 PUSH2 0x89C CALLDATASIZE PUSH1 0x4 PUSH2 0x3BDB JUMP JUMPDEST PUSH2 0x252E JUMP JUMPDEST PUSH2 0x429 PUSH2 0x8AF CALLDATASIZE PUSH1 0x4 PUSH2 0x3A47 JUMP JUMPDEST PUSH2 0x25D6 JUMP JUMPDEST PUSH2 0x46A PUSH2 0x8C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E87 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x908 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A2A JUMP JUMPDEST PUSH2 0x2897 JUMP JUMPDEST PUSH2 0x46A PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH2 0x46A PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH2 0x92C SWAP1 PUSH2 0x3EB1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x958 SWAP1 PUSH2 0x3EB1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x9A5 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x97A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x9A5 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 0x988 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9BA CALLER DUP5 DUP5 PUSH2 0x2A31 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x9EE PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0xA59 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x15 DUP1 SLOAD DUP3 ISZERO ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF SWAP1 SWAP2 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xE50BC939DC0E5025414F0F3B58008DE090812F288A3670DB7E723EF663DCDC54 SWAP1 PUSH2 0xABF SWAP1 DUP4 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xAF4 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0xB5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xD7AB6B495FC0223207243F48D9C9E2C8303180B6D1914BE5710ECF209EBD2D1C SWAP1 PUSH1 0x20 ADD PUSH2 0xABF JUMP JUMPDEST PUSH2 0xBF7 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0xC5D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0xE DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0xC7443059C2ED485E2C9EFE4E766BEF9432A6F0ED6695741AB4AFDFFAB3B92157 SWAP1 PUSH1 0x20 ADD PUSH2 0xABF JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC9F DUP5 DUP5 DUP5 PUSH2 0x2BE5 JUMP JUMPDEST PUSH2 0xD1C DUP5 CALLER PUSH2 0xD17 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4312 PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 CALLER JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x2E0F JUMP JUMPDEST PUSH2 0x2A31 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 JUMPDEST PUSH1 0xA SLOAD DUP2 LT ISZERO PUSH2 0xE5F JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xA DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xD60 JUMPI PUSH2 0xD60 PUSH2 0x3EFF JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xE4D JUMPI PUSH1 0xA DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xD9A JUMPI PUSH2 0xD9A PUSH2 0x3EFF JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xB6258AAA SWAP1 DUP7 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0xDD9 JUMPI PUSH2 0xDD9 PUSH2 0x3EFF JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDFF SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE1C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE40 SWAP2 SWAP1 PUSH2 0x3F2E JUMP JUMPDEST PUSH2 0xE4A SWAP1 DUP4 PUSH2 0x3F76 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP1 PUSH2 0xE57 DUP2 PUSH2 0x3F8E JUMP JUMPDEST SWAP2 POP POP PUSH2 0xD2B JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xE82 SWAP1 CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0xF0E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F206772616E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH2 0xF18 DUP3 DUP3 PUSH2 0x2E63 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF26 PUSH2 0x2EC9 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ PUSH2 0xFD0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH2 0xF18 DUP3 DUP3 PUSH2 0x2FBC JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x9BA SWAP2 DUP6 SWAP1 PUSH2 0xD17 SWAP1 DUP7 PUSH2 0x2986 JUMP JUMPDEST PUSH2 0x1047 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x10AD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1150 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A72656D6F7665506F6F6C3A205A65726F2061646472657373206465 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7465637465640000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x1 EQ PUSH2 0x1209 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4445493A3A72656D6F7665506F6F6C3A2041646472657373206E6F6E65786973 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x74616E7400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMPDEST PUSH1 0xA SLOAD DUP2 LT ISZERO PUSH2 0x1325 JUMPI DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xA DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1289 JUMPI PUSH2 0x1289 PUSH2 0x3EFF JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1313 JUMPI PUSH1 0x0 PUSH1 0xA DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x12C6 JUMPI PUSH2 0x12C6 PUSH2 0x3EFF JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1325 JUMP JUMPDEST DUP1 PUSH2 0x131D DUP2 PUSH2 0x3F8E JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1255 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x4106DFDAA577573DB51C0CA93F766DBEDFA0758FAA2E7F5BCDB7C142BE803C3F SWAP1 PUSH1 0x20 ADD PUSH2 0xABF JUMP JUMPDEST PUSH2 0x1376 CALLER DUP3 PUSH2 0x3022 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x13A3 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x1409 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0xD DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0x3E2F198539455D04450252BFC103C833CA10D4231DA6509E0528BB2383E22B73 SWAP1 PUSH1 0x20 ADD PUSH2 0xABF JUMP JUMPDEST PUSH2 0x1468 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x14CE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST DUP2 MLOAD PUSH2 0x14E1 SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x38BD JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x14F5 SWAP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x38BD JUMP JUMPDEST POP PUSH32 0x24A9AEF9121BA62598F20F8F80FD406FA1D2D956747E0728068C649F324DDF41 PUSH1 0x6 PUSH1 0x5 PUSH1 0x40 MLOAD PUSH2 0x1529 SWAP3 SWAP2 SWAP1 PUSH2 0x409E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xFB0FE3F4 PUSH2 0x15AD DUP7 PUSH1 0x40 MLOAD PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x3C DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x5C ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15CD SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x410C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x160E SWAP2 SWAP1 PUSH2 0x41EE JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1646 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x433A PUSH1 0x24 SWAP2 CODECOPY PUSH2 0x163F DUP7 CALLER PUSH2 0x8C2 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x2E0F JUMP JUMPDEST SWAP1 POP PUSH2 0x1653 DUP4 CALLER DUP4 PUSH2 0x2A31 JUMP JUMPDEST PUSH2 0x165D DUP4 DUP4 PUSH2 0x3022 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x168C PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x16F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x3F32684A32A11DABDBB8C0177DE80AA3AE36A004D75210335B49E544E48CD0AA SWAP1 PUSH1 0x20 ADD PUSH2 0xABF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x17A8 SWAP1 DUP4 PUSH2 0x3190 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x17A8 SWAP1 DUP4 PUSH2 0x31A6 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH2 0x92C SWAP1 PUSH2 0x3EB1 JUMP JUMPDEST PUSH2 0x17FE PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x1864 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x11 DUP3 SWAP1 SSTORE PUSH1 0x12 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH32 0x36D9A5EB34DE8B03405BAEA3D54341F11312730BE6F93D18C932728C9E2250D4 SWAP2 ADD PUSH2 0x1529 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9BA CALLER DUP5 PUSH2 0xD17 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x435E PUSH1 0x25 SWAP2 CODECOPY CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x2E0F JUMP JUMPDEST PUSH2 0x192A PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x1990 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x13 DUP3 SWAP1 SSTORE PUSH1 0x14 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH32 0x2896B6D714A04536BA6121E132DC3AFF2EACA8A2BA3EFF2676D6A8B435F31745 SWAP2 ADD PUSH2 0x1529 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x1 EQ PUSH2 0x1A74 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A206F6E6C792064656920706F6F6C732063616E2063616C6C20746869 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x732066756E6374696F6E00000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH2 0x1A7E DUP3 DUP3 PUSH2 0x31E5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0x4857273A485C2CFFF4B12A1064C50E871B8E0C686CF17F44C16B4F8554EDE3B1 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9BA CALLER DUP5 DUP5 PUSH2 0x2BE5 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1B70 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A436F6C6C61746572616C20526174696F20686173206265656E2070 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6175736564000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x16 SLOAD TIMESTAMP PUSH2 0x1B80 SWAP2 SWAP1 PUSH2 0x420B JUMP JUMPDEST SWAP1 POP PUSH1 0xE SLOAD DUP2 LT ISZERO PUSH2 0x1C14 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A496E7465726E616C20636F6F6C646F776E206E6F74207061737365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH31 0xA66F1F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH3 0xA66F1F SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C82 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1CA6 SWAP2 SWAP1 PUSH2 0x3F2E JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP4 DUP5 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x34 DUP4 ADD DUP14 SWAP1 MSTORE ADDRESS SWAP1 SWAP5 SHL AND PUSH1 0x54 DUP3 ADD MSTORE PUSH1 0x68 DUP2 ADD DUP11 SWAP1 MSTORE PUSH1 0x88 DUP2 ADD DUP10 SWAP1 MSTORE CHAINID PUSH1 0xA8 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC8 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 SWAP2 POP PUSH2 0x1D2C DUP2 DUP7 DUP7 PUSH2 0x1535 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1D39 DUP10 DUP5 PUSH2 0x4222 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1D46 PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1D54 DUP3 DUP5 PUSH2 0x425F JUMP JUMPDEST PUSH1 0x15 SLOAD SWAP1 SWAP2 POP PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1E04 JUMPI PUSH1 0x13 SLOAD DUP11 GT DUP1 PUSH2 0x1D78 JUMPI POP PUSH1 0x14 SLOAD DUP11 LT JUMPDEST PUSH2 0x1E04 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A5573652072656672657368436F6C6C61746572616C526174696F20 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7768656E20444549206973206F757473696465206F6620706567000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x13 SLOAD DUP11 GT ISZERO PUSH2 0x1E26 JUMPI PUSH1 0xD SLOAD PUSH1 0xC SLOAD PUSH2 0x1E1E SWAP2 SWAP1 PUSH2 0x420B JUMP JUMPDEST PUSH1 0xC SSTORE PUSH2 0x1ED5 JUMP JUMPDEST PUSH1 0x14 SLOAD DUP11 LT ISZERO PUSH2 0x1E40 JUMPI PUSH1 0xD SLOAD PUSH1 0xC SLOAD PUSH2 0x1E1E SWAP2 SWAP1 PUSH2 0x3F76 JUMP JUMPDEST PUSH1 0x15 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1ED5 JUMPI PUSH3 0xF4240 PUSH1 0x11 SLOAD PUSH3 0xF4240 PUSH2 0x1E60 SWAP2 SWAP1 PUSH2 0x3F76 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH2 0x1E6D SWAP2 SWAP1 PUSH2 0x4222 JUMP JUMPDEST PUSH2 0x1E77 SWAP2 SWAP1 PUSH2 0x425F JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x1E8E JUMPI PUSH1 0xD SLOAD PUSH1 0xC SLOAD PUSH2 0x1E1E SWAP2 SWAP1 PUSH2 0x420B JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x12 SLOAD PUSH3 0xF4240 PUSH2 0x1EA3 SWAP2 SWAP1 PUSH2 0x420B JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH2 0x1EB0 SWAP2 SWAP1 PUSH2 0x4222 JUMP JUMPDEST PUSH2 0x1EBA SWAP2 SWAP1 PUSH2 0x425F JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x1ED5 JUMPI PUSH1 0xD SLOAD PUSH1 0xC SLOAD PUSH2 0x1ED1 SWAP2 SWAP1 PUSH2 0x3F76 JUMP JUMPDEST PUSH1 0xC SSTORE JUMPDEST PUSH1 0x10 DUP2 SWAP1 SSTORE TIMESTAMP PUSH1 0x16 SSTORE PUSH1 0xC SLOAD PUSH3 0xF4240 LT ISZERO PUSH2 0x1EF3 JUMPI PUSH3 0xF4240 PUSH1 0xC SSTORE JUMPDEST PUSH32 0xB1200AF9B3AC4DEC88C9D01E1FB7CC7FA1F0FE55BF4AFAC1F30CC4FC2B2D1DD2 PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH2 0x1F26 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1F49 PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH2 0x1F55 DUP7 PUSH2 0xD26 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH2 0x1F8C PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x1FF2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x2095 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A73657444455553416464726573733A205A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7320646574656374656400000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x40C19B0139E5BC25C64E466D74E6E13EE1095ACC65B58FAF1932F9583E7D812C SWAP1 PUSH1 0x20 ADD PUSH2 0xABF JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x1 EQ PUSH2 0x21AC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A206F6E6C792064656920706F6F6C732063616E2063616C6C20746869 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x732066756E6374696F6E00000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH2 0x21B6 DUP3 DUP3 PUSH2 0x323D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 CALLER SWAP1 PUSH32 0x97847A1FCBBA98B997FB5B6C48F68C2D69B53A19157DB1622218A559B95FE9BE SWAP1 PUSH1 0x20 ADD PUSH2 0x1AC4 JUMP JUMPDEST PUSH2 0x222A PUSH32 0xB25402418AD555013210365A422F9F1206B2DD00719998DB06F8A1FBE014641B CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x22B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F742074686520636F6C6C61746572616C20 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x726174696F207061757365720000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0xF DUP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP1 SWAP3 AND DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 MLOAD SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH32 0x209068F7BED5A02FB7695C3E3B61BB8324D1FACB25523C6422BFD2105EC44D92 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x9BE SWAP1 PUSH2 0x3355 JUMP JUMPDEST PUSH1 0xA DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x2348 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 JUMP JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x23D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332305065726D69743A206578706972656420646561646C696E65000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP9 DUP9 DUP9 PUSH2 0x2408 DUP13 PUSH2 0x335F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x2470 DUP3 PUSH2 0x3394 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2480 DUP3 DUP8 DUP8 DUP8 PUSH2 0x33FD JUMP JUMPDEST SWAP1 POP DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2517 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332305065726D69743A20696E76616C6964207369676E61747572650000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH2 0x2522 DUP11 DUP11 DUP11 PUSH2 0x2A31 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x254A SWAP1 CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0xFD0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F207265766F6B6500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH2 0x2600 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x2666 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x2709 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A616464506F6F6C3A205A65726F2061646472657373206465746563 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7465640000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x27BE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4445493A3A616464506F6F6C3A204164647265737320616C7265616479206578 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6973747300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0xA DUP1 SLOAD SWAP2 DUP3 ADD DUP2 SSTORE SWAP1 SWAP4 MSTORE PUSH32 0xC65A7BB8D6351C1CF70C95A316CC6A92839C986682D98BC35F958F4883F9D2A8 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND DUP5 OR SWAP1 SSTORE SWAP1 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x73CCA62AB1B520C9715BF4E6C71E3E518C754E7148F65102F43289A7DF0EFEA6 SWAP2 ADD PUSH2 0xABF JUMP JUMPDEST PUSH2 0x28C1 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x2927 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A20796F7520617265206E6F7420746865206F776E6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x15 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP3 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xA272B58E328AF1078A931AE3F79E96AD602C5FBBF0E953A5651B5E7E107846D2 SWAP1 PUSH1 0x20 ADD PUSH2 0xABF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2993 DUP4 DUP6 PUSH2 0x3F76 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x17A8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17A8 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x364C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x2AD3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x2B76 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x2C88 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x2D2B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH2 0x2D75 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x42EC PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x2E0F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x2DB1 SWAP1 DUP3 PUSH2 0x2986 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE MLOAD DUP5 DUP2 MSTORE SWAP1 SWAP3 SWAP2 DUP7 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x2BD8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x2E4D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA50 SWAP2 SWAP1 PUSH2 0x3956 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x2E5A DUP5 DUP7 PUSH2 0x420B JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x2E7B SWAP1 DUP3 PUSH2 0x29FF JUMP JUMPDEST ISZERO PUSH2 0xF18 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ ISZERO PUSH2 0x2F18 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 DUP3 DUP5 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP4 ADD MSTORE CHAINID PUSH1 0x80 DUP4 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x2FD4 SWAP1 DUP3 PUSH2 0x369B JUMP JUMPDEST ISZERO PUSH2 0xF18 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x30C5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH2 0x310F DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x42CA PUSH1 0x22 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x2E0F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x2 SLOAD PUSH2 0x3142 SWAP1 DUP3 PUSH2 0x36CD JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0x1AC4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x319C DUP4 DUP4 PUSH2 0x370F JUMP JUMPDEST PUSH1 0x60 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD ISZERO ISZERO PUSH2 0x17A8 JUMP JUMPDEST PUSH2 0x31EF DUP3 DUP3 PUSH2 0x3022 JUMP JUMPDEST PUSH2 0xF18 DUP3 CALLER PUSH2 0xD17 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x433A PUSH1 0x24 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 CALLER PUSH2 0xCE9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x32BA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x32C7 SWAP1 DUP3 PUSH2 0x2986 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x32FA SWAP1 DUP3 PUSH2 0x2986 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE SWAP3 MLOAD DUP5 DUP2 MSTORE SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x1AC4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9BE DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9BE PUSH2 0x33A1 PUSH2 0x2EC9 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x22 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x42 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x62 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP3 GT ISZERO PUSH2 0x34AF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7565000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST DUP4 PUSH1 0xFF AND PUSH1 0x1B EQ DUP1 PUSH2 0x34C4 JUMPI POP DUP4 PUSH1 0xFF AND PUSH1 0x1C EQ JUMPDEST PUSH2 0x3550 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7565000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP9 SWAP1 MSTORE PUSH1 0xFF DUP8 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x2E5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x3693 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 0x9BE JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17A8 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x37CA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17A8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x2E0F JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x37A2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E756D657261626C655365743A20696E646578206F7574206F6620626F756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6473000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xA50 JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x37B7 JUMPI PUSH2 0x37B7 PUSH2 0x3EFF JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x38B3 JUMPI PUSH1 0x0 PUSH2 0x37EE PUSH1 0x1 DUP4 PUSH2 0x420B JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x3802 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x420B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x381B JUMPI PUSH2 0x381B PUSH2 0x3EFF JUMP 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 0x383E JUMPI PUSH2 0x383E PUSH2 0x3EFF JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH2 0x3855 DUP4 PUSH1 0x1 PUSH2 0x3F76 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x3877 JUMPI PUSH2 0x3877 PUSH2 0x429A JUMP 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 0x9BE JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x9BE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x38C9 SWAP1 PUSH2 0x3EB1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x38EB JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x3931 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x3904 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x3931 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3931 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3931 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3916 JUMP JUMPDEST POP PUSH2 0x393D SWAP3 SWAP2 POP PUSH2 0x3941 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x393D JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3942 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3983 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x3967 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x3995 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x39ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3A05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3A0E DUP4 PUSH2 0x39C9 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3A3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x17A8 DUP2 PUSH2 0x3A1C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3A59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x17A8 DUP3 PUSH2 0x39C9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3A74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3A90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3A99 DUP5 PUSH2 0x39C9 JUMP JUMPDEST SWAP3 POP PUSH2 0x3AA7 PUSH1 0x20 DUP6 ADD PUSH2 0x39C9 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3B2D JUMPI PUSH2 0x3B2D PUSH2 0x3AB7 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3B48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3B60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3B74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3B86 JUMPI PUSH2 0x3B86 PUSH2 0x3AB7 JUMP JUMPDEST DUP1 PUSH1 0x5 SHL SWAP2 POP PUSH2 0x3B97 DUP5 DUP4 ADD PUSH2 0x3AE6 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 DUP4 ADD DUP5 ADD SWAP2 DUP5 DUP2 ADD SWAP1 DUP9 DUP5 GT ISZERO PUSH2 0x3BB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 DUP6 ADD SWAP4 JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x3BCF JUMPI DUP5 CALLDATALOAD DUP3 MSTORE SWAP4 DUP6 ADD SWAP4 SWAP1 DUP6 ADD SWAP1 PUSH2 0x3BB6 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3BEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x3BFE PUSH1 0x20 DUP5 ADD PUSH2 0x39C9 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3C18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3C32 JUMPI PUSH2 0x3C32 PUSH2 0x3AB7 JUMP JUMPDEST PUSH2 0x3C63 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x3AE6 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x3C78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3CA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3CC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3CCC DUP7 DUP4 DUP8 ADD PUSH2 0x3C07 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3CE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CEF DUP6 DUP3 DUP7 ADD PUSH2 0x3C07 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3D0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3D23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x3D3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3D5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3D78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D84 DUP7 DUP3 DUP8 ADD PUSH2 0x3CF9 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3DCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3DF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3E03 DUP9 DUP3 DUP10 ADD PUSH2 0x3CF9 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3E2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3E38 DUP9 PUSH2 0x39C9 JUMP JUMPDEST SWAP7 POP PUSH2 0x3E46 PUSH1 0x20 DUP10 ADD PUSH2 0x39C9 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3E6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3E9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3EA3 DUP4 PUSH2 0x39C9 JUMP JUMPDEST SWAP2 POP PUSH2 0x3BFE PUSH1 0x20 DUP5 ADD PUSH2 0x39C9 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x3EC5 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x338E JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3F89 JUMPI PUSH2 0x3F89 PUSH2 0x3F47 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x3FC0 JUMPI PUSH2 0x3FC0 PUSH2 0x3F47 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP1 DUP4 AND DUP1 PUSH2 0x3FE1 JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x20 DUP1 DUP5 LT DUP3 EQ ISZERO PUSH2 0x401C JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 DUP9 MSTORE PUSH1 0x20 DUP9 ADD DUP3 DUP1 ISZERO PUSH2 0x4037 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x4066 JUMPI PUSH2 0x4091 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP8 AND DUP3 MSTORE DUP3 DUP3 ADD SWAP8 POP PUSH2 0x4091 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x408B JUMPI DUP2 SLOAD DUP5 DUP3 ADD MSTORE SWAP1 DUP7 ADD SWAP1 DUP5 ADD PUSH2 0x4072 JUMP JUMPDEST DUP4 ADD SWAP9 POP POP JUMPDEST POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x40B1 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3FC7 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2E5A DUP2 DUP6 PUSH2 0x3FC7 JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD DUP6 DUP4 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP6 ADD MSTORE DUP2 DUP6 DUP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP1 POP PUSH1 0x60 DUP7 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP7 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x41E0 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP8 DUP7 SUB ADD DUP4 MSTORE DUP2 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP11 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4197 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 ADD DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x41B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP12 SGT ISZERO PUSH2 0x41BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x41CC DUP8 DUP3 DUP9 DUP6 ADD PUSH2 0x40C3 JUMP JUMPDEST SWAP7 POP POP POP SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4136 JUMP JUMPDEST POP SWAP3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x17A8 DUP2 PUSH2 0x3A1C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x421D JUMPI PUSH2 0x421D PUSH2 0x3F47 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x425A JUMPI PUSH2 0x425A PUSH2 0x3F47 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4295 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x2062616C616E636545524332303A207472616E73 PUSH7 0x657220616D6F75 PUSH15 0x74206578636565647320616C6C6F77 PUSH2 0x6E63 PUSH6 0x45524332303A KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E74206578636565647320616C6C6F77616E63654552 NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x7358221220E461 PUSH5 0x6F2D503BF7 DUP1 0xA9 RETURN SWAP3 PUSH3 0x15FFA5 SWAP3 0xEF PUSH20 0xF33F8529487295FCAF87728F9E64736F6C634300 ADDMOD EXP STOP CALLER ", + "sourceMap": "1626:10870:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1777:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2735:166:15;;;;;;:::i;:::-;;:::i;:::-;;;1455:14:39;;1448:22;1430:41;;1418:2;1403:18;2735:166:15;1290:187:39;8641:107:5;;;;;;:::i;:::-;;:::i;:::-;;10718:192;;;;;;:::i;:::-;;:::i;2268:41::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2939:27;;;;;;;;;2188:25:39;;;2176:2;2161:18;2939:27:5;2042:177:39;1702:98:15;1781:12;;1702:98;;3041:27:5;;;;;;10913:154;;;;;;:::i;:::-;;:::i;5889:29::-;;;;;;3359:317:15;;;;;;:::i;:::-;;:::i;5147:450:5:-;;;;;;:::i;:::-;;:::i;4347:112:20:-;;;;;;:::i;:::-;4404:7;4430:12;;;:6;:12;;;;;:22;;;;4347:112;1860:27:5;;;;;;;;;;;;4764:42:39;4752:55;;;4734:74;;4722:2;4707:18;1860:27:5;4588:226:39;2400:38:5;;;;;;4709:223:20;;;;;;:::i;:::-;;:::i;1798:35:5:-;;1831:2;1798:35;;;;;5250:4:39;5238:17;;;5220:36;;5208:2;5193:18;1798:35:5;5078:184:39;2998:29:5;;;;;;2798:62;;2836:24;2798:62;;2519:113:19;;;:::i;5883:205:20:-;;;;;;:::i;:::-;;:::i;4071:215:15:-;;;;;;:::i;:::-;;:::i;9687:623:5:-;;;;;;:::i;:::-;;:::i;6792:89:15:-;;;;;;:::i;:::-;;:::i;2044:38:5:-;;;;;;;;;1890:49;;1931:8;1890:49;;2709:86;;2759:36;2709:86;;5600:119;5690:9;5600:119;;10597:118;;;;;;:::i;:::-;;:::i;10313:170::-;;;;;;:::i;:::-;;:::i;4415:172::-;;;;;;:::i;:::-;;:::i;1858:117:15:-;;;;;;:::i;:::-;1950:18;;1924:7;1950:18;;;;;;;;;;;;1858:117;7185:290;;;;;;:::i;:::-;;:::i;10486:108:5:-;;;;;;:::i;:::-;;:::i;1836:21::-;;;;;;;;;2269:126:19;;;;;;:::i;:::-;;:::i;2863:43:5:-;;;;;;;;;4030:136:20;;;;;;:::i;:::-;;:::i;3015:137::-;;;;;;:::i;:::-;;:::i;1754:20:5:-;;;:::i;3149:15::-;;;;;;;;;;;;8213:225;;;;;;:::i;:::-;;:::i;1722:49:20:-;;1767:4;1722:49;;4773:266:15;;;;;;:::i;:::-;;:::i;8441:197:5:-;;;;;;:::i;:::-;;:::i;8787:173::-;;;;;;:::i;:::-;;:::i;2178:172:15:-;;;;;;:::i;:::-;;:::i;6033:2013:5:-;;;;;;:::i;:::-;;:::i;4749:301::-;;;;;;:::i;:::-;;:::i;:::-;;;;8690:25:39;;;8746:2;8731:18;;8724:34;;;;8774:18;;;8767:34;8678:2;8663:18;4749:301:5;8488:319:39;11070:229:5;;;;;;:::i;:::-;;:::i;9031:164::-;;;;;;:::i;:::-;;:::i;11302:262::-;;;:::i;2599:31::-;;;;;;3071:30;;;;;;3118:28;;;;;;;;;3320:125:20;;;;;;:::i;:::-;;:::i;2183:32:5:-;;;;;;:::i;:::-;;:::i;1582:626:19:-;;;;;;:::i;:::-;;:::i;5166:226:20:-;;;;;;:::i;:::-;;:::i;9329:337:5:-;;;;;;:::i;:::-;;:::i;2408:149:15:-;;;;;;:::i;:::-;2523:18;;;;2497:7;2523:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2408:149;8049:161:5;;;;;;:::i;:::-;;:::i;2492:23::-;;;;;;2969:26;;;;;;1777:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2735:166:15:-;2818:4;2834:39;686:10:4;2857:7:15;2866:6;2834:8;:39::i;:::-;-1:-1:-1;2890:4:15;2735:166;;;;;:::o;8641:107:5:-;3378:32;2836:24;3399:10;3378:7;:32::i;:::-;3366:81;;;;;;;10419:2:39;3366:81:5;;;10401:21:39;10458:2;10438:18;;;10431:30;10497:28;10477:18;;;10470:56;10543:18;;3366:81:5;;;;;;;;;8702:3:::1;:15:::0;;;::::1;;;;::::0;;;::::1;;::::0;;8727:17:::1;::::0;::::1;::::0;::::1;::::0;8708:9;1455:14:39;1448:22;1430:41;;1418:2;1403:18;;1290:187;8727:17:5::1;;;;;;;;8641:107:::0;:::o;10718:192::-;3378:32;2836:24;3399:10;3378:7;:32::i;:::-;3366:81;;;;;;;10419:2:39;3366:81:5;;;10401:21:39;10458:2;10438:18;;;10431:30;10497:28;10477:18;;;10470:56;10543:18;;3366:81:5;10217:350:39;3366:81:5;10803:23:::1;:50:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;10863:43:::1;::::0;4734:74:39;;;10863:43:5::1;::::0;4722:2:39;4707:18;10863:43:5::1;4588:226:39::0;10913:154:5;3378:32;2836:24;3399:10;3378:7;:32::i;:::-;3366:81;;;;;;;10419:2:39;3366:81:5;;;10401:21:39;10458:2;10438:18;;;10431:30;10497:28;10477:18;;;10470:56;10543:18;;3366:81:5;10217:350:39;3366:81:5;10988:16:::1;:32:::0;;;11030:33:::1;::::0;2188:25:39;;;11030:33:5::1;::::0;2176:2:39;2161:18;11030:33:5::1;2042:177:39::0;3359:317:15;3465:4;3481:36;3491:6;3499:9;3510:6;3481:9;:36::i;:::-;3527:121;3536:6;686:10:4;3558:89:15;3596:6;3558:89;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;686:10:4;3578:12:15;3558:33;;;;;;;;;;;;;-1:-1:-1;3558:33:15;;;:89;:37;:89::i;:::-;3527:8;:121::i;:::-;-1:-1:-1;3665:4:15;3359:317;;;;;:::o;5147:450:5:-;5234:7;;;5290:267;5314:15;:22;5310:26;;5290:267;;;5411:1;5381:32;;:15;5397:1;5381:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;:32;5377:176;;5487:15;5503:1;5487:18;;;;;;;;:::i;:::-;;;;;;;;;;;5527:19;;5487:18;;;;;5479:47;;5527:16;;5544:1;;5527:19;;;;;;:::i;:::-;;;;;;;5479:68;;;;;;;;;;;;;2188:25:39;;2176:2;2161:18;;2042:177;5479:68:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5450:97;;:26;:97;:::i;:::-;5421:126;;5377:176;5338:3;;;;:::i;:::-;;;;5290:267;;;-1:-1:-1;5567:26:5;5147:450;-1:-1:-1;;5147:450:5:o;4709:223:20:-;4800:12;;;;:6;:12;;;;;:22;;;4792:45;;686:10:4;3015:137:20;:::i;4792:45::-;4784:105;;;;;;;11674:2:39;4784:105:20;;;11656:21:39;11713:2;11693:18;;;11686:30;11752:34;11732:18;;;11725:62;11823:17;11803:18;;;11796:45;11858:19;;4784:105:20;11472:411:39;4784:105:20;4900:25;4911:4;4917:7;4900:10;:25::i;:::-;4709:223;;:::o;2519:113:19:-;2579:7;2605:20;:18;:20::i;:::-;2598:27;;2519:113;:::o;5883:205:20:-;5969:23;;;686:10:4;5969:23:20;5961:83;;;;;;;12090:2:39;5961:83:20;;;12072:21:39;12129:2;12109:18;;;12102:30;12168:34;12148:18;;;12141:62;12239:17;12219:18;;;12212:45;12274:19;;5961:83:20;11888:411:39;5961:83:20;6055:26;6067:4;6073:7;6055:11;:26::i;4071:215:15:-;686:10:4;4159:4:15;4207:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;4159:4;;4175:83;;4198:7;;4207:50;;4246:10;4207:38;:50::i;9687:623:5:-;3378:32;2836:24;3399:10;3378:7;:32::i;:::-;3366:81;;;;;;;10419:2:39;3366:81:5;;;10401:21:39;10458:2;10438:18;;;10431:30;10497:28;10477:18;;;10470:56;10543:18;;3366:81:5;10217:350:39;3366:81:5;9766:26:::1;::::0;::::1;9758:77;;;::::0;::::1;::::0;;12506:2:39;9758:77:5::1;::::0;::::1;12488:21:39::0;12545:2;12525:18;;;12518:30;12584:34;12564:18;;;12557:62;12655:8;12635:18;;;12628:36;12681:19;;9758:77:5::1;12304:402:39::0;9758:77:5::1;9847:23;::::0;::::1;;::::0;;;:9:::1;:23;::::0;;;;;::::1;;:31;;:23:::0;:31:::1;9839:80;;;::::0;::::1;::::0;;12913:2:39;9839:80:5::1;::::0;::::1;12895:21:39::0;12952:2;12932:18;;;12925:30;12991:34;12971:18;;;12964:62;13062:6;13042:18;;;13035:34;13086:19;;9839:80:5::1;12711:400:39::0;9839:80:5::1;9960:23;::::0;::::1;;::::0;;;:9:::1;:23;::::0;;;;9953:30;;;::::1;::::0;;10047:225:::1;10071:15;:22:::0;10067:26;::::1;10047:225;;;10131:12;10109:34;;:15;10125:1;10109:18;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;:34;10105:163;;;10180:1;10151:15;10167:1;10151:18;;;;;;;;:::i;:::-;;;;;;;;;:31;;;;;;;;;;;;;;;;;;10257:5;;10105:163;10095:3:::0;::::1;::::0;::::1;:::i;:::-;;;;10047:225;;;-1:-1:-1::0;10281:25:5::1;::::0;4764:42:39;4752:55;;4734:74;;10281:25:5::1;::::0;4722:2:39;4707:18;10281:25:5::1;4588:226:39::0;6792:89:15;6847:27;686:10:4;6867:6:15;6847:5;:27::i;:::-;6792:89;:::o;10597:118:5:-;3378:32;2836:24;3399:10;3378:7;:32::i;:::-;3366:81;;;;;;;10419:2:39;3366:81:5;;;10401:21:39;10458:2;10438:18;;;10431:30;10497:28;10477:18;;;10470:56;10543:18;;3366:81:5;10217:350:39;3366:81:5;10660:8:::1;:20:::0;;;10690:21:::1;::::0;2188:25:39;;;10690:21:5::1;::::0;2176:2:39;2161:18;10690:21:5::1;2042:177:39::0;10313:170:5;3378:32;2836:24;3399:10;3378:7;:32::i;:::-;3366:81;;;;;;;10419:2:39;3366:81:5;;;10401:21:39;10458:2;10438:18;;;10431:30;10497:28;10477:18;;;10470:56;10543:18;;3366:81:5;10217:350:39;3366:81:5;10407:12;;::::1;::::0;:4:::1;::::0;:12:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;10423:16:5;;::::1;::::0;:6:::1;::::0;:16:::1;::::0;::::1;::::0;::::1;:::i;:::-;;10449:30;10466:4;10472:6;10449:30;;;;;;;:::i;:::-;;;;;;;;10313:170:::0;;:::o;4415:172::-;4529:6;;4504:4;;4529:6;;4522:21;4544:32;:7;5240:58:2;;25947:66:39;5240:58:2;;;25935:79:39;26030:12;;;26023:28;;;5110:7:2;;26067:12:39;;5240:58:2;;;;;;;;;;;;5230:69;;;;;;5223:76;;5041:265;;;;4544:32:5;4578:4;;4522:61;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4515:68;4415:172;-1:-1:-1;;;;4415:172:5:o;7185:290:15:-;7261:26;7290:84;7327:6;7290:84;;;;;;;;;;;;;;;;;:32;7300:7;686:10:4;2408:149:15;:::i;7290:32::-;:36;:84;:36;:84::i;:::-;7261:113;-1:-1:-1;7385:51:15;7394:7;686:10:4;7417:18:15;7385:8;:51::i;:::-;7446:22;7452:7;7461:6;7446:5;:22::i;:::-;7251:224;7185:290;;:::o;10486:108:5:-;3378:32;2836:24;3399:10;3378:7;:32::i;:::-;3366:81;;;;;;;10419:2:39;3366:81:5;;;10401:21:39;10458:2;10438:18;;;10431:30;10497:28;10477:18;;;10470:56;10543:18;;3366:81:5;10217:350:39;3366:81:5;10546:6:::1;:16:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;10572:18:::1;::::0;4734:74:39;;;10572:18:5::1;::::0;4722:2:39;4707:18;10572::5::1;4588:226:39::0;2269:126:19;2364:14;;;2338:7;2364:14;;;:7;:14;;;;;864::1;2364:24:19;773:112:1;4030:136:20;4103:7;4129:12;;;:6;:12;;;;;:30;;4153:5;4129:23;:30::i;:::-;4122:37;4030:136;-1:-1:-1;;;4030:136:20:o;3015:137::-;3084:4;3107:12;;;:6;:12;;;;;:38;;3137:7;3107:29;:38::i;1754:20:5:-;;;;;;;:::i;8213:225::-;3378:32;2836:24;3399:10;3378:7;:32::i;:::-;3366:81;;;;;;;10419:2:39;3366:81:5;;;10401:21:39;10458:2;10438:18;;;10431:30;10497:28;10477:18;;;10470:56;10543:18;;3366:81:5;10217:350:39;3366:81:5;8313:11:::1;:26:::0;;;8343:14:::1;:32:::0;;;8384:50:::1;::::0;;16940:25:39;;;16996:2;16981:18;;16974:34;;;8384:50:5::1;::::0;16913:18:39;8384:50:5::1;16766:248:39::0;4773:266:15;4866:4;4882:129;686:10:4;4905:7:15;4914:96;4953:15;4914:96;;;;;;;;;;;;;;;;;686:10:4;4914:25:15;;;;:11;:25;;;;;;;;;:34;;;;;;;;;;;;:38;:96::i;8441:197:5:-;3378:32;2836:24;3399:10;3378:7;:32::i;:::-;3366:81;;;;;;;10419:2:39;3366:81:5;;;10401:21:39;10458:2;10438:18;;;10431:30;10497:28;10477:18;;;10470:56;10543:18;;3366:81:5;10217:350:39;3366:81:5;8529:12:::1;:24:::0;;;8557:15:::1;:30:::0;;;8597:37:::1;::::0;;16940:25:39;;;16996:2;16981:18;;16974:34;;;8597:37:5::1;::::0;16913:18:39;8597:37:5::1;16766:248:39::0;8787:173:5;3256:10;3246:21;;;;:9;:21;;;;;;;;:29;;:21;:29;3234:94;;;;;;;17221:2:39;3234:94:5;;;17203:21:39;17260:2;17240:18;;;17233:30;17299:34;17279:18;;;17272:62;17370:12;17350:18;;;17343:40;17400:19;;3234:94:5;17019:406:39;3234:94:5;8869:36:::1;8885:9;8896:8;8869:15;:36::i;:::-;8914:42;::::0;2188:25:39;;;8935:10:5::1;::::0;8914:42:::1;::::0;::::1;::::0;::::1;::::0;2176:2:39;2161:18;8914:42:5::1;;;;;;;;8787:173:::0;;:::o;2178:172:15:-;2264:4;2280:42;686:10:4;2304:9:15;2315:6;2280:9;:42::i;6033:2013:5:-;6164:23;;;;:32;6156:82;;;;;;;17632:2:39;6156:82:5;;;17614:21:39;17671:2;17651:18;;;17644:30;17710:34;17690:18;;;17683:62;17781:7;17761:18;;;17754:35;17806:19;;6156:82:5;17430:401:39;6156:82:5;6242:20;6285:14;;6266:15;6265:34;;;;:::i;:::-;6242:57;;6327:16;;6311:12;:32;;6303:78;;;;;;;18168:2:39;6303:78:5;;;18150:21:39;18207:2;18187:18;;;18180:30;18246:34;18226:18;;;18219:62;18317:3;18297:18;;;18290:31;18338:19;;6303:78:5;17966:397:39;6303:78:5;6424:23;;6409:57;;;;;;;;6385:21;;6424:23;;;6409:55;;:57;;;;;;;;;;;;;;6424:23;6409:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6527:12;;6499:167;;;18647:66:39;18742:2;18738:15;;;;;6499:167:5;;;;18722:37:39;;;;18775:12;;;18768:28;;;6581:4:5;18830:15:39;;;18826:24;18812:12;;;18805:46;18867:12;;;18860:28;;;18904:13;;;18897:29;;;5690:9:5;18942:13:39;;;;18935:29;;;;6499:167:5;;;;;;;;;;18980:13:39;;;;6499:167:5;;;6489:178;;;;;6385:81;;-1:-1:-1;6672:27:5;6489:178;6694:4;;6672:12;:27::i;:::-;-1:-1:-1;6704:22:5;6729:26;6745:10;6729:13;:26;:::i;:::-;6704:51;;6791:18;6812:13;1781:12:15;;;1702:98;6812:13:5;6791:34;-1:-1:-1;6830:24:5;6857:27;6791:34;6857:14;:27;:::i;:::-;6912:3;;6830:54;;-1:-1:-1;6912:3:5;;;;;6909:143;;;6941:12;;6929:9;:24;:55;;;;6969:15;;6957:9;:27;6929:55;6921:126;;;;;;;19718:2:39;6921:126:5;;;19700:21:39;19757:2;19737:18;;;19730:30;19796:34;19776:18;;;19769:62;19867:28;19847:18;;;19840:56;19913:19;;6921:126:5;19516:422:39;6921:126:5;7121:12;;7109:9;:24;7106:604;;;7191:8;;7165:23;;:34;;;;:::i;:::-;7139:23;:60;7106:604;;;7226:15;;7214:9;:27;7210:500;;;7299:8;;7273:23;;:34;;;;:::i;7210:500::-;7404:16;;;;7401:309;;;7485:3;7470:11;;7464:3;:17;;;;:::i;:::-;7448:12;;:34;;;;:::i;:::-;:40;;;;:::i;:::-;7429:16;:59;7426:280;;;7547:8;;7521:23;;:34;;;;:::i;7426:280::-;7630:3;7612:14;;7606:3;:20;;;;:::i;:::-;7590:12;;:37;;;;:::i;:::-;:43;;;;:::i;:::-;7571:16;:62;7567:139;;;7692:8;;7666:23;;:34;;;;:::i;:::-;7640:23;:60;7567:139;7714:12;:31;;;7766:15;7749:14;:32;7914:23;;7940:3;-1:-1:-1;7911:72:5;;;7975:3;7949:23;:29;7911:72;7992:49;8017:23;;7992:49;;;;2188:25:39;;2176:2;2161:18;;2042:177;7992:49:5;;;;;;;;6152:1894;;;;;;6033:2013;;;;;:::o;4749:301::-;4833:7;4845;4857;4886:13;1781:12:15;;;1702:98;4886:13:5;4921:23;;4978:39;5000:16;4978:21;:39::i;:::-;4874:172;;;;;;4749:301;;;;;:::o;11070:229::-;3378:32;2836:24;3399:10;3378:7;:32::i;:::-;3366:81;;;;;;;10419:2:39;3366:81:5;;;10401:21:39;10458:2;10438:18;;;10431:30;10497:28;10477:18;;;10470:56;10543:18;;3366:81:5;10217:350:39;3366:81:5;11149:27:::1;::::0;::::1;11141:82;;;::::0;::::1;::::0;;20145:2:39;11141:82:5::1;::::0;::::1;20127:21:39::0;20184:2;20164:18;;;20157:30;20223:34;20203:18;;;20196:62;20294:12;20274:18;;;20267:40;20324:19;;11141:82:5::1;19943:406:39::0;11141:82:5::1;11228:12;:28:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;11266:29:::1;::::0;4734:74:39;;;11266:29:5::1;::::0;4722:2:39;4707:18;11266:29:5::1;4588:226:39::0;9031:164:5;3256:10;3246:21;;;;:9;:21;;;;;;;;:29;;:21;:29;3234:94;;;;;;;17221:2:39;3234:94:5;;;17203:21:39;17260:2;17240:18;;;17233:30;17299:34;17279:18;;;17272:62;17370:12;17350:18;;;17343:40;17400:19;;3234:94:5;17019:406:39;3234:94:5;9108:32:::1;9120:9;9131:8;9108:11;:32::i;:::-;9149:42;::::0;2188:25:39;;;9149:42:5::1;::::0;::::1;::::0;9159:10:::1;::::0;9149:42:::1;::::0;2176:2:39;2161:18;9149:42:5::1;2042:177:39::0;11302:262:5;11356:44;2759:36;11389:10;11356:7;:44::i;:::-;11348:101;;;;;;;20556:2:39;11348:101:5;;;20538:21:39;20595:2;20575:18;;;20568:30;20634:34;20614:18;;;20607:62;20705:14;20685:18;;;20678:42;20737:19;;11348:101:5;20354:408:39;11348:101:5;11480:23;;;;;;;11479:24;11453:50;;;;;;;;;11513:47;;11536:23;;1455:14:39;1448:22;1430:41;;11513:47:5;;1418:2:39;1403:18;11513:47:5;;;;;;;11302:262::o;3320:125:20:-;3383:7;3409:12;;;:6;:12;;;;;:29;;:27;:29::i;2183:32:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2183:32:5;:::o;1582:626:19:-;1817:8;1798:15;:27;;1790:69;;;;;;;20969:2:39;1790:69:19;;;20951:21:39;21008:2;20988:18;;;20981:30;21047:31;21027:18;;;21020:59;21096:18;;1790:69:19;20767:353:39;1790:69:19;1870:18;1912:16;1930:5;1937:7;1946:5;1953:16;1963:5;1953:9;:16::i;:::-;1901:79;;;;;;21412:25:39;;;;21456:42;21534:15;;;21514:18;;;21507:43;21586:15;;;;21566:18;;;21559:43;21618:18;;;21611:34;21661:19;;;21654:35;21705:19;;;21698:35;;;21384:19;;1901:79:19;;;;;;;;;;;;1891:90;;;;;;1870:111;;1992:12;2007:28;2024:10;2007:16;:28::i;:::-;1992:43;;2046:14;2063:28;2077:4;2083:1;2086;2089;2063:13;:28::i;:::-;2046:45;;2119:5;2109:15;;:6;:15;;;2101:58;;;;;;;21946:2:39;2101:58:19;;;21928:21:39;21985:2;21965:18;;;21958:30;22024:32;22004:18;;;21997:60;22074:18;;2101:58:19;21744:354:39;2101:58:19;2170:31;2179:5;2186:7;2195:5;2170:8;:31::i;:::-;1780:428;;;1582:626;;;;;;;:::o;5166:226:20:-;5258:12;;;;:6;:12;;;;;:22;;;5250:45;;686:10:4;3015:137:20;:::i;5250:45::-;5242:106;;;;;;;22305:2:39;5242:106:20;;;22287:21:39;22344:2;22324:18;;;22317:30;22383:34;22363:18;;;22356:62;22454:18;22434;;;22427:46;22490:19;;5242:106:20;22103:412:39;9329:337:5;3378:32;2836:24;3399:10;3378:7;:32::i;:::-;3366:81;;;;;;;10419:2:39;3366:81:5;;;10401:21:39;10458:2;10438:18;;;10431:30;10497:28;10477:18;;;10470:56;10543:18;;3366:81:5;10217:350:39;3366:81:5;9405:26:::1;::::0;::::1;9397:74;;;::::0;::::1;::::0;;22722:2:39;9397:74:5::1;::::0;::::1;22704:21:39::0;22761:2;22741:18;;;22734:30;22800:34;22780:18;;;22773:62;22871:5;22851:18;;;22844:33;22894:19;;9397:74:5::1;22520:399:39::0;9397:74:5::1;9483:23;::::0;::::1;;::::0;;;:9:::1;:23;::::0;;;;;::::1;;:32;9475:81;;;::::0;::::1;::::0;;23126:2:39;9475:81:5::1;::::0;::::1;23108:21:39::0;23165:2;23145:18;;;23138:30;23204:34;23184:18;;;23177:62;23275:6;23255:18;;;23248:34;23299:19;;9475:81:5::1;22924:400:39::0;9475:81:5::1;9561:23;::::0;::::1;;::::0;;;:9:::1;:23;::::0;;;;;;;:30;;;::::1;9587:4;9561:30:::0;;::::1;::::0;;;9595:15:::1;:34:::0;;;;::::1;::::0;;;;;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;9639:23;;4734:74:39;;;9639:23:5::1;::::0;4707:18:39;9639:23:5::1;4588:226:39::0;8049:161:5;3378:32;2836:24;3399:10;3378:7;:32::i;:::-;3366:81;;;;;;;10419:2:39;3366:81:5;;;10401:21:39;10458:2;10438:18;;;10431:30;10497:28;10477:18;;;10470:56;10543:18;;3366:81:5;10217:350:39;3366:81:5;8124:16:::1;:36:::0;;;::::1;::::0;::::1;;::::0;;::::1;::::0;;;8170::::1;::::0;1430:41:39;;;8170:36:5::1;::::0;1418:2:39;1403:18;8170:36:5::1;1290:187:39::0;868:176:23;926:7;;957:5;961:1;957;:5;:::i;:::-;945:17;;985:1;980;:6;;972:46;;;;;;;23531:2:39;972:46:23;;;23513:21:39;23570:2;23550:18;;;23543:30;23609:29;23589:18;;;23582:57;23656:18;;972:46:23;23329:351:39;4866:141:38;4936:4;4959:41;4964:3;4976:23;4984:14;;;;4976:23;4959:4;:41::i;8630:340:15:-;8731:19;;;8723:68;;;;;;;23887:2:39;8723:68:15;;;23869:21:39;23926:2;23906:18;;;23899:30;23965:34;23945:18;;;23938:62;24036:6;24016:18;;;24009:34;24060:19;;8723:68:15;23685:400:39;8723:68:15;8809:21;;;8801:68;;;;;;;24292:2:39;8801:68:15;;;24274:21:39;24331:2;24311:18;;;24304:30;24370:34;24350:18;;;24343:62;24441:4;24421:18;;;24414:32;24463:19;;8801:68:15;24090:398:39;8801:68:15;8880:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8931:32;;2188:25:39;;;8931:32:15;;2161:18:39;8931:32:15;;;;;;;;8630:340;;;:::o;5513:530::-;5618:20;;;5610:70;;;;;;;24695:2:39;5610:70:15;;;24677:21:39;24734:2;24714:18;;;24707:30;24773:34;24753:18;;;24746:62;24844:7;24824:18;;;24817:35;24869:19;;5610:70:15;24493:401:39;5610:70:15;5698:23;;;5690:71;;;;;;;25101:2:39;5690:71:15;;;25083:21:39;25140:2;25120:18;;;25113:30;25179:34;25159:18;;;25152:62;25250:5;25230:18;;;25223:33;25273:19;;5690:71:15;24899:399:39;5690:71:15;5850;5872:6;5850:71;;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;5830:17;;;;:9;:17;;;;;;;;;;;:91;;;;5954:20;;;;;;;:32;;5979:6;5954:24;:32::i;:::-;5931:20;;;;:9;:20;;;;;;;;;;;;:55;;;;6001:35;2188:25:39;;;5931:20:15;;6001:35;;;;;;2161:18:39;6001:35:15;2042:177:39;1766:187:23;1852:7;1887:12;1879:6;;;;1871:29;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1910:9:23;1922:5;1926:1;1922;:5;:::i;:::-;1910:17;1766:187;-1:-1:-1;;;;;1766:187:23:o;7090:184:20:-;7163:12;;;;:6;:12;;;;;:33;;7188:7;7163:24;:33::i;:::-;7159:109;;;7217:40;;686:10:4;;7217:40:20;;;;7229:4;;7217:40;;;;;7090:184;;:::o;2990:275:3:-;3043:7;3083:16;3066:13;:33;3062:197;;;-1:-1:-1;3122:24:3;;2990:275::o;3062:197::-;-1:-1:-1;3447:73:3;;;3206:10;3447:73;;;;28271:25:39;;;;3218:12:3;28312:18:39;;;28305:34;3232:15:3;28355:18:39;;;28348:34;3491:13:3;28398:18:39;;;28391:34;3514:4:3;28441:19:39;;;;28434:84;;;;3447:73:3;;;;;;;;;;28243:19:39;;;;3447:73:3;;;3437:84;;;;;;2519:113:19:o;7280:188:20:-;7354:12;;;;:6;:12;;;;;:36;;7382:7;7354:27;:36::i;:::-;7350:112;;;7411:40;;686:10:4;;7411:40:20;;;;7423:4;;7411:40;;;;;7280:188;;:::o;7795:410:15:-;7878:21;;;7870:67;;;;;;;25505:2:39;7870:67:15;;;25487:21:39;25544:2;25524:18;;;25517:30;25583:34;25563:18;;;25556:62;25654:3;25634:18;;;25627:31;25675:19;;7870:67:15;25303:397:39;7870:67:15;8029:68;8052:6;8029:68;;;;;;;;;;;;;;;;;:18;;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;8008:18;;;:9;:18;;;;;;;;;;:89;8122:12;;:24;;8139:6;8122:16;:24::i;:::-;8107:12;:39;8161:37;;2188:25:39;;;8187:1:15;;8161:37;;;;;;2176:2:39;2161:18;8161:37:15;2042:177:39;6087:147:38;6161:7;6203:22;6207:3;6219:5;6203:3;:22::i;:::-;6187:40;;;6087:147;-1:-1:-1;;;6087:147:38:o;5403:156::-;5536:14;;;;5528:23;;5483:4;3874:19;;;:12;;;:19;;;;;;:24;;5506:46;3778:127;9148:237:15;9227:22;9233:7;9242:6;9227:5;:22::i;:::-;9259:119;9268:7;686:10:4;9291:86:15;9330:6;9291:86;;;;;;;;;;;;;;;;;:20;;;;;;;:11;:20;;;;;;686:10:4;9312:12:15;591:113:4;6313:370:15;6396:21;;;6388:65;;;;;;;26292:2:39;6388:65:15;;;26274:21:39;26331:2;26311:18;;;26304:30;26370:33;26350:18;;;26343:61;26421:18;;6388:65:15;26090:355:39;6388:65:15;6539:12;;:24;;6556:6;6539:16;:24::i;:::-;6524:12;:39;6594:18;;;:9;:18;;;;;;;;;;;:30;;6617:6;6594:22;:30::i;:::-;6573:18;;;:9;:18;;;;;;;;;;;:51;;;;6639:37;;2188:25:39;;;6573:18:15;;:9;;6639:37;;2161:18:39;6639:37:15;2042:177:39;5640:115:38;5703:7;5729:19;5737:3;4068:18;;3986:107;2763:203:19;2883:14;;;2823:15;2883:14;;;:7;:14;;;;;864::1;;996:1;978:19;;;;864:14;2942:17:19;2840:126;2763:203;;;:::o;4153:165:3:-;4230:7;4256:55;4278:20;:18;:20::i;:::-;4300:10;5774:57:2;;29202:66:39;5774:57:2;;;29190:79:39;29285:11;;;29278:27;;;29321:12;;;29314:28;;;5738:7:2;;29358:12:39;;5774:57:2;;;;;;;;;;;;5764:68;;;;;;5757:75;;5645:194;;;;;3265:1486;3388:7;4316:66;4302:80;;;4281:161;;;;;;;26652:2:39;4281:161:2;;;26634:21:39;26691:2;26671:18;;;26664:30;26730:34;26710:18;;;26703:62;26801:4;26781:18;;;26774:32;26823:19;;4281:161:2;26450:398:39;4281:161:2;4460:1;:7;;4465:2;4460:7;:18;;;;4471:1;:7;;4476:2;4471:7;4460:18;4452:65;;;;;;;27055:2:39;4452:65:2;;;27037:21:39;27094:2;27074:18;;;27067:30;27133:34;27113:18;;;27106:62;27204:4;27184:18;;;27177:32;27226:19;;4452:65:2;26853:398:39;4452:65:2;4629:24;;;4612:14;4629:24;;;;;;;;;27483:25:39;;;27556:4;27544:17;;27524:18;;;27517:45;;;;27578:18;;;27571:34;;;27621:18;;;27614:34;;;4629:24:2;;27455:19:39;;4629:24:2;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4629:24:2;;;;;;-1:-1:-1;;4671:20:2;;;4663:57;;;;;;;27861:2:39;4663:57:2;;;27843:21:39;27900:2;27880:18;;;27873:30;27939:26;27919:18;;;27912:54;27983:18;;4663:57:2;27659:348:39;1613:404:38;1676:4;3874:19;;;:12;;;:19;;;;;;1692:319;;-1:-1:-1;1734:23:38;;;;;;;;:11;:23;;;;;;;;;;;;;1914:18;;1892:19;;;:12;;;:19;;;;;;:40;;;;1946:11;;1692:319;-1:-1:-1;1995:5:38;1988:12;;5175:147;5248:4;5271:44;5279:3;5291:23;5299:14;;;;5291:23;5271:7;:44::i;1308:134:23:-;1366:7;1392:43;1396:1;1399;1392:43;;;;;;;;;;;;;;;;;:3;:43::i;4425:201:38:-;4519:18;;4492:7;;4519:26;-1:-1:-1;4511:73:38;;;;;;;28731:2:39;4511:73:38;;;28713:21:39;28770:2;28750:18;;;28743:30;28809:34;28789:18;;;28782:62;28880:4;28860:18;;;28853:32;28902:19;;4511:73:38;28529:398:39;4511:73:38;4601:3;:11;;4613:5;4601:18;;;;;;;;:::i;:::-;;;;;;;;;4594:25;;4425:201;;;;:::o;2185:1512::-;2251:4;2388:19;;;:12;;;:19;;;;;;2422:15;;2418:1273;;2779:21;2803:14;2816:1;2803:10;:14;:::i;:::-;2851:18;;2779:38;;-1:-1:-1;2831:17:38;;2851:22;;2872:1;;2851:22;:::i;:::-;2831:42;;3113:17;3133:3;:11;;3145:9;3133:22;;;;;;;;:::i;:::-;;;;;;;;;3113:42;;3276:9;3247:3;:11;;3259:13;3247:26;;;;;;;;:::i;:::-;;;;;;;;;;:38;3377:17;:13;3393:1;3377:17;:::i;:::-;3351:23;;;;:12;;;:23;;;;;:43;3500:17;;3351:3;;3500:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3592:3;:12;;:19;3605:5;3592:19;;;;;;;;;;;3585:26;;;3633:4;3626:11;;;;;;;;2418:1273;3675:5;3668:12;;;;;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;169:656:39;281:4;310:2;339;328:9;321:21;371:6;365:13;414:6;409:2;398:9;394:18;387:34;439:1;449:140;463:6;460:1;457:13;449:140;;;558:14;;;554:23;;548:30;524:17;;;543:2;520:26;513:66;478:10;;449:140;;;607:6;604:1;601:13;598:91;;;677:1;672:2;663:6;652:9;648:22;644:31;637:42;598:91;-1:-1:-1;741:2:39;729:15;746:66;725:88;710:104;;;;816:2;706:113;;169:656;-1:-1:-1;;;169:656:39:o;830:196::-;898:20;;958:42;947:54;;937:65;;927:93;;1016:1;1013;1006:12;927:93;830:196;;;:::o;1031:254::-;1099:6;1107;1160:2;1148:9;1139:7;1135:23;1131:32;1128:52;;;1176:1;1173;1166:12;1128:52;1199:29;1218:9;1199:29;:::i;:::-;1189:39;1275:2;1260:18;;;;1247:32;;-1:-1:-1;;;1031:254:39:o;1482:118::-;1568:5;1561:13;1554:21;1547:5;1544:32;1534:60;;1590:1;1587;1580:12;1605:241;1661:6;1714:2;1702:9;1693:7;1689:23;1685:32;1682:52;;;1730:1;1727;1720:12;1682:52;1769:9;1756:23;1788:28;1810:5;1788:28;:::i;1851:186::-;1910:6;1963:2;1951:9;1942:7;1938:23;1934:32;1931:52;;;1979:1;1976;1969:12;1931:52;2002:29;2021:9;2002:29;:::i;2224:180::-;2283:6;2336:2;2324:9;2315:7;2311:23;2307:32;2304:52;;;2352:1;2349;2342:12;2304:52;-1:-1:-1;2375:23:39;;2224:180;-1:-1:-1;2224:180:39:o;2409:328::-;2486:6;2494;2502;2555:2;2543:9;2534:7;2530:23;2526:32;2523:52;;;2571:1;2568;2561:12;2523:52;2594:29;2613:9;2594:29;:::i;:::-;2584:39;;2642:38;2676:2;2665:9;2661:18;2642:38;:::i;:::-;2632:48;;2727:2;2716:9;2712:18;2699:32;2689:42;;2409:328;;;;;:::o;2742:184::-;2794:77;2791:1;2784:88;2891:4;2888:1;2881:15;2915:4;2912:1;2905:15;2931:334;3002:2;2996:9;3058:2;3048:13;;3063:66;3044:86;3032:99;;3161:18;3146:34;;3182:22;;;3143:62;3140:88;;;3208:18;;:::i;:::-;3244:2;3237:22;2931:334;;-1:-1:-1;2931:334:39:o;3270:946::-;3354:6;3385:2;3428;3416:9;3407:7;3403:23;3399:32;3396:52;;;3444:1;3441;3434:12;3396:52;3484:9;3471:23;3513:18;3554:2;3546:6;3543:14;3540:34;;;3570:1;3567;3560:12;3540:34;3608:6;3597:9;3593:22;3583:32;;3653:7;3646:4;3642:2;3638:13;3634:27;3624:55;;3675:1;3672;3665:12;3624:55;3711:2;3698:16;3733:2;3729;3726:10;3723:36;;;3739:18;;:::i;:::-;3785:2;3782:1;3778:10;3768:20;;3808:28;3832:2;3828;3824:11;3808:28;:::i;:::-;3870:15;;;3940:11;;;3936:20;;;3901:12;;;;3968:19;;;3965:39;;;4000:1;3997;3990:12;3965:39;4024:11;;;;4044:142;4060:6;4055:3;4052:15;4044:142;;;4126:17;;4114:30;;4077:12;;;;4164;;;;4044:142;;;4205:5;3270:946;-1:-1:-1;;;;;;;;3270:946:39:o;4819:254::-;4887:6;4895;4948:2;4936:9;4927:7;4923:23;4919:32;4916:52;;;4964:1;4961;4954:12;4916:52;5000:9;4987:23;4977:33;;5029:38;5063:2;5052:9;5048:18;5029:38;:::i;:::-;5019:48;;4819:254;;;;;:::o;5267:590::-;5310:5;5363:3;5356:4;5348:6;5344:17;5340:27;5330:55;;5381:1;5378;5371:12;5330:55;5417:6;5404:20;5443:18;5439:2;5436:26;5433:52;;;5465:18;;:::i;:::-;5509:114;5617:4;5548:66;5541:4;5537:2;5533:13;5529:86;5525:97;5509:114;:::i;:::-;5648:2;5639:7;5632:19;5694:3;5687:4;5682:2;5674:6;5670:15;5666:26;5663:35;5660:55;;;5711:1;5708;5701:12;5660:55;5776:2;5769:4;5761:6;5757:17;5750:4;5741:7;5737:18;5724:55;5824:1;5799:16;;;5817:4;5795:27;5788:38;;;;5803:7;5267:590;-1:-1:-1;;;5267:590:39:o;5862:543::-;5950:6;5958;6011:2;5999:9;5990:7;5986:23;5982:32;5979:52;;;6027:1;6024;6017:12;5979:52;6067:9;6054:23;6096:18;6137:2;6129:6;6126:14;6123:34;;;6153:1;6150;6143:12;6123:34;6176:50;6218:7;6209:6;6198:9;6194:22;6176:50;:::i;:::-;6166:60;;6279:2;6268:9;6264:18;6251:32;6235:48;;6308:2;6298:8;6295:16;6292:36;;;6324:1;6321;6314:12;6292:36;;6347:52;6391:7;6380:8;6369:9;6365:24;6347:52;:::i;:::-;6337:62;;;5862:543;;;;;:::o;6410:374::-;6480:8;6490:6;6544:3;6537:4;6529:6;6525:17;6521:27;6511:55;;6562:1;6559;6552:12;6511:55;-1:-1:-1;6585:20:39;;6628:18;6617:30;;6614:50;;;6660:1;6657;6650:12;6614:50;6697:4;6689:6;6685:17;6673:29;;6757:3;6750:4;6740:6;6737:1;6733:14;6725:6;6721:27;6717:38;6714:47;6711:67;;;6774:1;6771;6764:12;6711:67;6410:374;;;;;:::o;6789:523::-;6895:6;6903;6911;6964:2;6952:9;6943:7;6939:23;6935:32;6932:52;;;6980:1;6977;6970:12;6932:52;7016:9;7003:23;6993:33;;7077:2;7066:9;7062:18;7049:32;7104:18;7096:6;7093:30;7090:50;;;7136:1;7133;7126:12;7090:50;7175:77;7244:7;7235:6;7224:9;7220:22;7175:77;:::i;:::-;6789:523;;7271:8;;-1:-1:-1;7149:103:39;;-1:-1:-1;;;;6789:523:39:o;7317:248::-;7385:6;7393;7446:2;7434:9;7425:7;7421:23;7417:32;7414:52;;;7462:1;7459;7452:12;7414:52;-1:-1:-1;;7485:23:39;;;7555:2;7540:18;;;7527:32;;-1:-1:-1;7317:248:39:o;7823:660::-;7947:6;7955;7963;7971;7979;8032:3;8020:9;8011:7;8007:23;8003:33;8000:53;;;8049:1;8046;8039:12;8000:53;8085:9;8072:23;8062:33;;8142:2;8131:9;8127:18;8114:32;8104:42;;8193:2;8182:9;8178:18;8165:32;8155:42;;8248:2;8237:9;8233:18;8220:32;8275:18;8267:6;8264:30;8261:50;;;8307:1;8304;8297:12;8261:50;8346:77;8415:7;8406:6;8395:9;8391:22;8346:77;:::i;:::-;7823:660;;;;-1:-1:-1;7823:660:39;;-1:-1:-1;8442:8:39;;8320:103;7823:660;-1:-1:-1;;;7823:660:39:o;8812:693::-;8923:6;8931;8939;8947;8955;8963;8971;9024:3;9012:9;9003:7;8999:23;8995:33;8992:53;;;9041:1;9038;9031:12;8992:53;9064:29;9083:9;9064:29;:::i;:::-;9054:39;;9112:38;9146:2;9135:9;9131:18;9112:38;:::i;:::-;9102:48;;9197:2;9186:9;9182:18;9169:32;9159:42;;9248:2;9237:9;9233:18;9220:32;9210:42;;9302:3;9291:9;9287:19;9274:33;9347:4;9340:5;9336:16;9329:5;9326:27;9316:55;;9367:1;9364;9357:12;9316:55;8812:693;;;;-1:-1:-1;8812:693:39;;;;9390:5;9442:3;9427:19;;9414:33;;-1:-1:-1;9494:3:39;9479:19;;;9466:33;;8812:693;-1:-1:-1;;8812:693:39:o;9510:260::-;9578:6;9586;9639:2;9627:9;9618:7;9614:23;9610:32;9607:52;;;9655:1;9652;9645:12;9607:52;9678:29;9697:9;9678:29;:::i;:::-;9668:39;;9726:38;9760:2;9749:9;9745:18;9726:38;:::i;9775:437::-;9854:1;9850:12;;;;9897;;;9918:61;;9972:4;9964:6;9960:17;9950:27;;9918:61;10025:2;10017:6;10014:14;9994:18;9991:38;9988:218;;;10062:77;10059:1;10052:88;10163:4;10160:1;10153:15;10191:4;10188:1;10181:15;10572:184;10624:77;10621:1;10614:88;10721:4;10718:1;10711:15;10745:4;10742:1;10735:15;10761:184;10831:6;10884:2;10872:9;10863:7;10859:23;10855:32;10852:52;;;10900:1;10897;10890:12;10852:52;-1:-1:-1;10923:16:39;;10761:184;-1:-1:-1;10761:184:39:o;10950:::-;11002:77;10999:1;10992:88;11099:4;11096:1;11089:15;11123:4;11120:1;11113:15;11139:128;11179:3;11210:1;11206:6;11203:1;11200:13;11197:39;;;11216:18;;:::i;:::-;-1:-1:-1;11252:9:39;;11139:128::o;11272:195::-;11311:3;11342:66;11335:5;11332:77;11329:103;;;11412:18;;:::i;:::-;-1:-1:-1;11459:1:39;11448:13;;11272:195::o;13242:1157::-;13327:12;;13292:3;;13382:1;13402:18;;;;13455;;;;13482:61;;13536:4;13528:6;13524:17;13514:27;;13482:61;13562:2;13610;13602:6;13599:14;13579:18;13576:38;13573:218;;;13647:77;13644:1;13637:88;13748:4;13745:1;13738:15;13776:4;13773:1;13766:15;13573:218;101:19;;;153:4;144:14;;13877:18;13904:162;;;;14080:1;14075:318;;;;13870:523;;13904:162;13954:66;13943:9;13939:82;13932:5;13925:97;14053:2;14046:5;14042:14;14035:21;;13904:162;;14075:318;13189:1;13182:14;;;13226:4;13213:18;;14169:1;14183:167;14197:6;14194:1;14191:13;14183:167;;;14277:14;;14262:13;;;14255:37;14320:16;;;;14212:10;;14183:167;;;14370:13;;;-1:-1:-1;;13870:523:39;;;;;;;;13242:1157;;;;:::o;14404:393::-;14595:2;14584:9;14577:21;14558:4;14621:53;14670:2;14659:9;14655:18;14647:6;14621:53;:::i;:::-;14722:9;14714:6;14710:22;14705:2;14694:9;14690:18;14683:50;14750:41;14784:6;14776;14750:41;:::i;14802:325::-;14890:6;14885:3;14878:19;14942:6;14935:5;14928:4;14923:3;14919:14;14906:43;;14994:1;14987:4;14978:6;14973:3;14969:16;14965:27;14958:38;14860:3;15116:4;15046:66;15041:2;15033:6;15029:15;15025:88;15020:3;15016:98;15012:109;15005:116;;14802:325;;;;:::o;15132:1379::-;15332:4;15380:2;15369:9;15365:18;15410:6;15399:9;15392:25;15436:2;15474;15469;15458:9;15454:18;15447:30;15497:6;15527;15519;15512:22;15565:2;15554:9;15550:18;15543:25;;15627:2;15617:6;15614:1;15610:14;15599:9;15595:30;15591:39;15577:53;;15653:6;15677:1;15687:795;15701:6;15698:1;15695:13;15687:795;;;15790:66;15778:9;15770:6;15766:22;15762:95;15757:3;15750:108;15910:6;15897:20;15997:66;15988:6;15972:14;15968:27;15964:100;15944:18;15940:125;15930:153;;16079:1;16076;16069:12;15930:153;16109:31;;16167:19;;16213:18;16202:30;;16199:50;;;16245:1;16242;16235:12;16199:50;16297:6;16281:14;16277:27;16269:6;16265:40;16262:60;;;16318:1;16315;16308:12;16262:60;16345:57;16395:6;16387;16382:2;16375:5;16371:14;16345:57;:::i;:::-;16335:67;-1:-1:-1;;;16460:12:39;;;;16425:15;;;;15723:1;15716:9;15687:795;;;-1:-1:-1;16499:6:39;;15132:1379;-1:-1:-1;;;;;;;;15132:1379:39:o;16516:245::-;16583:6;16636:2;16624:9;16615:7;16611:23;16607:32;16604:52;;;16652:1;16649;16642:12;16604:52;16684:9;16678:16;16703:28;16725:5;16703:28;:::i;17836:125::-;17876:4;17904:1;17901;17898:8;17895:34;;;17909:18;;:::i;:::-;-1:-1:-1;17946:9:39;;17836:125::o;19004:228::-;19044:7;19170:1;19102:66;19098:74;19095:1;19092:81;19087:1;19080:9;19073:17;19069:105;19066:131;;;19177:18;;:::i;:::-;-1:-1:-1;19217:9:39;;19004:228::o;19237:274::-;19277:1;19303;19293:189;;19338:77;19335:1;19328:88;19439:4;19436:1;19429:15;19467:4;19464:1;19457:15;19293:189;-1:-1:-1;19496:9:39;;19237:274::o;29381:184::-;29433:77;29430:1;29423:88;29530:4;29527:1;29520:15;29554:4;29551:1;29544:15" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "3467200", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "COLLATERAL_RATIO_PAUSER()": "307", + "DEFAULT_ADMIN_ROLE()": "307", + "DEI_bottom_band()": "2384", + "DEI_top_band()": "2430", + "DIP()": "2389", + "DOMAIN_SEPARATOR()": "infinite", + "GR_bottom_band()": "2386", + "GR_top_band()": "2427", + "TRUSTY_ROLE()": "308", + "activateDIP(bool)": "infinite", + "addPool(address)": "infinite", + "allowance(address,address)": "infinite", + "approve(address,uint256)": "24642", + "balanceOf(address)": "2649", + "burn(uint256)": "infinite", + "burnFrom(address,uint256)": "infinite", + "collateral_ratio_paused()": "2378", + "decimals()": "273", + "decreaseAllowance(address,uint256)": "infinite", + "dei_info(uint256[])": "infinite", + "dei_pools(address)": "2588", + "dei_pools_array(uint256)": "4657", + "dei_step()": "2405", + "deus_address()": "2403", + "genesis_supply()": "285", + "getChainID()": "325", + "getRoleAdmin(bytes32)": "2512", + "getRoleMember(bytes32,uint256)": "6995", + "getRoleMemberCount(bytes32)": "infinite", + "globalCollateralValue(uint256[])": "infinite", + "global_collateral_ratio()": "2407", + "grantRole(bytes32,address)": "infinite", + "growth_ratio()": "2386", + "hasRole(bytes32,address)": "infinite", + "increaseAllowance(address,uint256)": "27042", + "last_call_time()": "2386", + "name()": "infinite", + "nonces(address)": "2682", + "oracle()": "2426", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "infinite", + "pool_burn_from(address,uint256)": "infinite", + "pool_mint(address,uint256)": "infinite", + "refreshCollateralRatio(uint256,uint256,uint256,bytes[])": "infinite", + "refresh_cooldown()": "2362", + "removePool(address)": "infinite", + "renounceRole(bytes32,address)": "infinite", + "reserve_tracker_address()": "2381", + "revokeRole(bytes32,address)": "infinite", + "setDEIStep(uint256)": "infinite", + "setDEUSAddress(address)": "infinite", + "setGrowthRatioBands(uint256,uint256)": "infinite", + "setNameAndSymbol(string,string)": "infinite", + "setOracle(address)": "infinite", + "setPriceBands(uint256,uint256)": "infinite", + "setRefreshCooldown(uint256)": "infinite", + "setReserveTracker(address)": "infinite", + "setUseGrowthRatio(bool)": "infinite", + "symbol()": "infinite", + "toggleCollateralRatio()": "infinite", + "totalSupply()": "2405", + "transfer(address,uint256)": "infinite", + "transferFrom(address,address,uint256)": "infinite", + "use_growth_ratio()": "2421", + "verify_price(bytes32,bytes[])": "infinite" + } + }, + "methodIdentifiers": { + "COLLATERAL_RATIO_PAUSER()": "54505517", + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "DEI_bottom_band()": "c1e2785b", + "DEI_top_band()": "19d05d09", + "DIP()": "9a6f978d", + "DOMAIN_SEPARATOR()": "3644e515", + "GR_bottom_band()": "349432d9", + "GR_top_band()": "f72bd4f0", + "TRUSTY_ROLE()": "34ddb95d", + "activateDIP(bool)": "0c0a25aa", + "addPool(address)": "d914cd4b", + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "burn(uint256)": "42966c68", + "burnFrom(address,uint256)": "79cc6790", + "collateral_ratio_paused()": "87a140c3", + "decimals()": "313ce567", + "decreaseAllowance(address,uint256)": "a457c2d7", + "dei_info(uint256[])": "ae773029", + "dei_pools(address)": "15ea919c", + "dei_pools_array(uint256)": "d01dd162", + "dei_step()": "f1fc1fff", + "deus_address()": "27daf4f8", + "genesis_supply()": "51e238e3", + "getChainID()": "564b81ef", + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "globalCollateralValue(uint256[])": "2480fcea", + "global_collateral_ratio()": "2eb9771b", + "grantRole(bytes32,address)": "2f2ff15d", + "growth_ratio()": "16b0c846", + "hasRole(bytes32,address)": "91d14854", + "increaseAllowance(address,uint256)": "39509351", + "last_call_time()": "2258750a", + "name()": "06fdde03", + "nonces(address)": "7ecebe00", + "oracle()": "7dc0d1d0", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf", + "pool_burn_from(address,uint256)": "a8a778ae", + "pool_mint(address,uint256)": "b4f56b26", + "refreshCollateralRatio(uint256,uint256,uint256,bytes[])": "ab3d1bb6", + "refresh_cooldown()": "c03f7be3", + "removePool(address)": "3b7d0946", + "renounceRole(bytes32,address)": "36568abe", + "reserve_tracker_address()": "4d97897b", + "revokeRole(bytes32,address)": "d547741f", + "setDEIStep(uint256)": "597bf738", + "setDEUSAddress(address)": "aee06a5e", + "setGrowthRatioBands(uint256,uint256)": "a085ea7c", + "setNameAndSymbol(string,string)": "5a446215", + "setOracle(address)": "7adbf973", + "setPriceBands(uint256,uint256)": "a6959f0f", + "setRefreshCooldown(uint256)": "1c5df1e5", + "setReserveTracker(address)": "11af9a4b", + "setUseGrowthRatio(bool)": "e6344628", + "symbol()": "95d89b41", + "toggleCollateralRatio()": "bef40ec8", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd", + "use_growth_ratio()": "c2593c27", + "verify_price(bytes32,bytes[])": "6793f0ac" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_trusty_address\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"global_collateral_ratio\",\"type\":\"uint256\"}],\"name\":\"CollateralRatioRefreshed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"collateral_ratio_paused\",\"type\":\"bool\"}],\"name\":\"CollateralRatioToggled\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DEIBurned\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DEIMinted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_step\",\"type\":\"uint256\"}],\"name\":\"DEIStepSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"deus_address\",\"type\":\"address\"}],\"name\":\"DEUSAddressSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"activate\",\"type\":\"bool\"}],\"name\":\"DIPSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"GR_top_band\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"GR_bottom_band\",\"type\":\"uint256\"}],\"name\":\"GrowthRatioBandSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"NameAndSymbolSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"OracleSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pool_address\",\"type\":\"address\"}],\"name\":\"PoolAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pool_address\",\"type\":\"address\"}],\"name\":\"PoolRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"top_band\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bottom_band\",\"type\":\"uint256\"}],\"name\":\"PriceBandSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_cooldown\",\"type\":\"uint256\"}],\"name\":\"RefreshCooldownSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"reserve_tracker_address\",\"type\":\"address\"}],\"name\":\"ReserveTrackerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"use_growth_ratio\",\"type\":\"bool\"}],\"name\":\"UseGrowthRatioSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COLLATERAL_RATIO_PAUSER\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEI_bottom_band\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEI_top_band\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DIP\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GR_bottom_band\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GR_top_band\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRUSTY_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_activate\",\"type\":\"bool\"}],\"name\":\"activateDIP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool_address\",\"type\":\"address\"}],\"name\":\"addPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collateral_ratio_paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"collat_usd_price\",\"type\":\"uint256[]\"}],\"name\":\"dei_info\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"dei_pools\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"dei_pools_array\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dei_step\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deus_address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesis_supply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"collat_usd_price\",\"type\":\"uint256[]\"}],\"name\":\"globalCollateralValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"global_collateral_ratio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"growth_ratio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"last_call_time\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"b_address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"b_amount\",\"type\":\"uint256\"}],\"name\":\"pool_burn_from\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"m_address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m_amount\",\"type\":\"uint256\"}],\"name\":\"pool_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deus_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dei_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expire_block\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"refreshCollateralRatio\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"refresh_cooldown\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool_address\",\"type\":\"address\"}],\"name\":\"removePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reserve_tracker_address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_new_step\",\"type\":\"uint256\"}],\"name\":\"setDEIStep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_deus_address\",\"type\":\"address\"}],\"name\":\"setDEUSAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_GR_top_band\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_GR_bottom_band\",\"type\":\"uint256\"}],\"name\":\"setGrowthRatioBands\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"setNameAndSymbol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oracle\",\"type\":\"address\"}],\"name\":\"setOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_top_band\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bottom_band\",\"type\":\"uint256\"}],\"name\":\"setPriceBands\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_new_cooldown\",\"type\":\"uint256\"}],\"name\":\"setRefreshCooldown\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve_tracker_address\",\"type\":\"address\"}],\"name\":\"setReserveTracker\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_use_growth_ratio\",\"type\":\"bool\"}],\"name\":\"setUseGrowthRatio\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleCollateralRatio\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"use_growth_ratio\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sighash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"verify_price\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.approve(address spender, uint256 amount)\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for `accounts`'s tokens of at least `amount`.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/DEI/DEI.sol\":\"DEIStablecoin\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^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(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) 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\",\"keccak256\":\"0x3aab711a5f9a5a5a394191e928cc8258e8a243e855bb0275e7834f9686383277\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Counters.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary Counters {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0x78450f4e3b722cce467b21e285f72ce5eaf361e9ba9dd2241a413926246773cd\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n *\\n * Documentation for signature generation:\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n // Check the signature length\\n // - case 65: r,s,v signature (standard)\\n // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._\\n if (signature.length == 65) {\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n return recover(hash, v, r, s);\\n } else if (signature.length == 64) {\\n bytes32 r;\\n bytes32 vs;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n assembly {\\n r := mload(add(signature, 0x20))\\n vs := mload(add(signature, 0x40))\\n }\\n return recover(hash, r, vs);\\n } else {\\n revert(\\\"ECDSA: invalid signature length\\\");\\n }\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `r` and `vs` short-signature fields separately.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n *\\n * _Available since v4.2._\\n */\\n function recover(\\n bytes32 hash,\\n bytes32 r,\\n bytes32 vs\\n ) internal pure returns (address) {\\n bytes32 s;\\n uint8 v;\\n assembly {\\n s := and(vs, 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\\n v := add(shr(255, vs), 27)\\n }\\n return recover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `v`, `r` and `s` signature fields separately.\\n */\\n function recover(\\n bytes32 hash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal pure returns (address) {\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (281): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (282): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n require(\\n uint256(s) <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0,\\n \\\"ECDSA: invalid signature 's' value\\\"\\n );\\n require(v == 27 || v == 28, \\\"ECDSA: invalid signature 'v' value\\\");\\n\\n // If the signature is valid (and not malleable), return the signer address\\n address signer = ecrecover(hash, v, r, s);\\n require(signer != address(0), \\\"ECDSA: invalid signature\\\");\\n\\n return signer;\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Typed Data, created from a\\n * `domainSeparator` and a `structHash`. This produces hash corresponding\\n * to the one signed with the\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n * JSON-RPC method as part of EIP-712.\\n *\\n * See {recover}.\\n */\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n }\\n}\\n\",\"keccak256\":\"0x828774372910d18e7337bc31a288d786748af4cd9da80222467e486ed1d569ab\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./ECDSA.sol\\\";\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\\n *\\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\\n *\\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\\n * ({_hashTypedDataV4}).\\n *\\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\\n * the chain id to protect against replay attacks on an eventual fork of the chain.\\n *\\n * NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method\\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\\n *\\n * _Available since v3.4._\\n */\\nabstract contract EIP712 {\\n /* solhint-disable var-name-mixedcase */\\n // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to\\n // invalidate the cached domain separator if the chain id changes.\\n bytes32 private immutable _CACHED_DOMAIN_SEPARATOR;\\n uint256 private immutable _CACHED_CHAIN_ID;\\n\\n bytes32 private immutable _HASHED_NAME;\\n bytes32 private immutable _HASHED_VERSION;\\n bytes32 private immutable _TYPE_HASH;\\n\\n /* solhint-enable var-name-mixedcase */\\n\\n /**\\n * @dev Initializes the domain separator and parameter caches.\\n *\\n * The meaning of `name` and `version` is specified in\\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\\n *\\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\\n * - `version`: the current major version of the signing domain.\\n *\\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\\n * contract upgrade].\\n */\\n constructor(string memory name, string memory version) {\\n bytes32 hashedName = keccak256(bytes(name));\\n bytes32 hashedVersion = keccak256(bytes(version));\\n bytes32 typeHash = keccak256(\\n \\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"\\n );\\n _HASHED_NAME = hashedName;\\n _HASHED_VERSION = hashedVersion;\\n _CACHED_CHAIN_ID = block.chainid;\\n _CACHED_DOMAIN_SEPARATOR = _buildDomainSeparator(typeHash, hashedName, hashedVersion);\\n _TYPE_HASH = typeHash;\\n }\\n\\n /**\\n * @dev Returns the domain separator for the current chain.\\n */\\n function _domainSeparatorV4() internal view returns (bytes32) {\\n if (block.chainid == _CACHED_CHAIN_ID) {\\n return _CACHED_DOMAIN_SEPARATOR;\\n } else {\\n return _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION);\\n }\\n }\\n\\n function _buildDomainSeparator(\\n bytes32 typeHash,\\n bytes32 nameHash,\\n bytes32 versionHash\\n ) private view returns (bytes32) {\\n return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this)));\\n }\\n\\n /**\\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\\n * function returns the hash of the fully encoded EIP712 message for this domain.\\n *\\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\\n *\\n * ```solidity\\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\\n * keccak256(\\\"Mail(address to,string contents)\\\"),\\n * mailTo,\\n * keccak256(bytes(mailContents))\\n * )));\\n * address signer = ECDSA.recover(digest, signature);\\n * ```\\n */\\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\\n return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash);\\n }\\n}\\n\",\"keccak256\":\"0xba18d725602452307e5b278ed4566616c63792d89f3a0388a6f285428c26e681\",\"license\":\"MIT\"},\"contracts/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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 payable(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}\",\"keccak256\":\"0x60d51a32063a4975dbf9433d38f5849173527da72f007c38053274e06698cb54\",\"license\":\"MIT\"},\"contracts/DEI/DEI.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity ^0.8.0;\\n\\n// =================================================================================================================\\n// _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| |\\n// _| _| _| _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| |\\n// _| _| _|_|_| _| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_|_|_| |\\n// _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| |\\n// _|_|_| _|_|_|_| _|_| _|_|_| _| _| _| _| _|_|_| _| _| _|_|_| _|_|_| |\\n// =================================================================================================================\\n// ======================= DEIStablecoin (DEI) ======================\\n// ==================================================================\\n// DEUS Finance: https://github.com/DeusFinance\\n\\n// Primary Author(s)\\n// Travis Moore: https://github.com/FortisFortuna\\n// Jason Huan: https://github.com/jasonhuan\\n// Sam Kazemian: https://github.com/samkazemian\\n// Vahid: https://github.com/vahid-dev\\n// SAYaghoubnejad: https://github.com/SAYaghoubnejad\\n\\n// Reviewer(s) / Contributor(s)\\n// Sam Sun: https://github.com/samczsun\\n\\nimport \\\"./Pools/DEIPool.sol\\\";\\nimport \\\"../Oracle/Oracle.sol\\\";\\nimport \\\"../Oracle/ReserveTracker.sol\\\";\\nimport \\\"../ERC20/draft-ERC20Permit.sol\\\";\\nimport \\\"../Governance/AccessControl.sol\\\";\\n\\ncontract DEIStablecoin is ERC20Permit, AccessControl {\\n\\tusing ECDSA for bytes32;\\n\\n\\t/* ========== STATE VARIABLES ========== */\\n\\tstring public symbol;\\n\\tstring public name;\\n\\tuint8 public constant decimals = 18;\\n\\taddress public oracle;\\n\\taddress public deus_address;\\n\\tuint256 public constant genesis_supply = 10000e18; // genesis supply is 10k. This is to help with establishing the Uniswap pools, as they need liquidity\\n\\taddress public reserve_tracker_address;\\n\\n\\t// The addresses in this array are added by the oracle and these contracts are able to mint DEI\\n\\taddress[] public dei_pools_array;\\n\\n\\t// Mapping is also used for faster verification\\n\\tmapping(address => bool) public dei_pools;\\n\\n\\t// Constants for various precisions\\n\\tuint256 private constant PRICE_PRECISION = 1e6;\\n\\n\\tuint256 public global_collateral_ratio; // 6 decimals of precision, e.g. 924102 = 0.924102\\n\\tuint256 public dei_step; // Amount to change the collateralization ratio by upon refreshCollateralRatio()\\n\\tuint256 public refresh_cooldown; // Seconds to wait before being able to run refreshCollateralRatio() again\\n\\n\\tbytes32 public constant COLLATERAL_RATIO_PAUSER = keccak256(\\\"COLLATERAL_RATIO_PAUSER\\\");\\n\\tbytes32 public constant TRUSTY_ROLE = keccak256(\\\"TRUSTY_ROLE\\\");\\n\\tbool public collateral_ratio_paused = false;\\n\\n\\n\\t// 6 decimals of precision\\n\\tuint256 public growth_ratio;\\n\\tuint256 public GR_top_band;\\n\\tuint256 public GR_bottom_band;\\n\\n\\t// Bands\\n\\tuint256 public DEI_top_band;\\n\\tuint256 public DEI_bottom_band;\\n\\n\\t// Booleans\\n\\tbool public use_growth_ratio;\\n\\tbool public DIP;\\n\\n\\n\\t/* ========== MODIFIERS ========== */\\n\\n\\tmodifier onlyPools() {\\n\\t\\trequire(\\n\\t\\t\\tdei_pools[msg.sender] == true,\\n\\t\\t\\t\\\"DEI: only dei pools can call this function\\\"\\n\\t\\t);\\n\\t\\t_;\\n\\t}\\n\\n\\tmodifier onlyTrusty() {\\n\\t\\trequire(\\n\\t\\t\\thasRole(TRUSTY_ROLE, msg.sender),\\n\\t\\t\\t\\\"DEI: you are not the owner\\\"\\n\\t\\t);\\n\\t\\t_;\\n\\t}\\n\\n\\t/* ========== CONSTRUCTOR ========== */\\n\\n\\tconstructor(\\n\\t\\tstring memory _name,\\n\\t\\tstring memory _symbol,\\n\\t\\taddress _trusty_address\\n\\t) ERC20Permit(name) {\\n\\t\\trequire(\\n\\t\\t\\t_trusty_address != address(0),\\n\\t\\t\\t\\\"DEI: zero address detected.\\\"\\n\\t\\t);\\n\\t\\tname = _name;\\n\\t\\tsymbol = _symbol;\\n\\t\\tdei_step = 2500; // 6 decimals of precision, equal to 0.25%\\n\\t\\tglobal_collateral_ratio = 800000; // Dei system starts off fully collateralized (6 decimals of precision)\\n\\t\\trefresh_cooldown = 300; // Refresh cooldown period is set to 5 minutes (300 seconds) at genesis\\n\\t\\t_setupRole(DEFAULT_ADMIN_ROLE, _trusty_address);\\n\\t\\t_setupRole(COLLATERAL_RATIO_PAUSER, _trusty_address);\\n\\t\\t_setupRole(TRUSTY_ROLE, _trusty_address);\\n\\t\\t_mint(_trusty_address, genesis_supply);\\n\\n\\t\\t// Upon genesis, if GR changes by more than 1% percent, enable change of collateral ratio\\n\\t\\tGR_top_band = 1000;\\n\\t\\tGR_bottom_band = 1000; \\n\\t}\\n\\n\\t/* ========== VIEWS ========== */\\n\\n\\t// Verify X DEUS or X DEI = 1 USD or ...\\n\\tfunction verify_price(bytes32 sighash, bytes[] calldata sigs)\\n\\t\\tpublic\\n\\t\\tview\\n\\t\\treturns (bool)\\n\\t{\\n\\t\\treturn Oracle(oracle).verify(sighash.toEthSignedMessageHash(), sigs);\\n\\t}\\n\\n\\t// This is needed to avoid costly repeat calls to different getter functions\\n\\t// It is cheaper gas-wise to just dump everything and only use some of the info\\n\\tfunction dei_info(uint256[] memory collat_usd_price)\\n\\t\\tpublic\\n\\t\\tview\\n\\t\\treturns (\\n\\t\\t\\tuint256,\\n\\t\\t\\tuint256,\\n\\t\\t\\tuint256\\n\\t\\t)\\n\\t{\\n\\t\\treturn (\\n\\t\\t\\ttotalSupply(), // totalSupply()\\n\\t\\t\\tglobal_collateral_ratio, // global_collateral_ratio()\\n\\t\\t\\tglobalCollateralValue(collat_usd_price) // globalCollateralValue\\n\\t\\t);\\n\\t}\\n\\n\\t// Iterate through all dei pools and calculate all value of collateral in all pools globally\\n\\tfunction globalCollateralValue(uint256[] memory collat_usd_price) public view returns (uint256) {\\n\\t\\tuint256 total_collateral_value_d18 = 0;\\n\\n\\t\\tfor (uint256 i = 0; i < dei_pools_array.length; i++) {\\n\\t\\t\\t// Exclude null addresses\\n\\t\\t\\tif (dei_pools_array[i] != address(0)) {\\n\\t\\t\\t\\ttotal_collateral_value_d18 = total_collateral_value_d18 + DEIPool(dei_pools_array[i]).collatDollarBalance(collat_usd_price[i]);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn total_collateral_value_d18;\\n\\t}\\n\\n\\tfunction getChainID() public view returns (uint256) {\\n\\t\\tuint256 id;\\n\\t\\tassembly {\\n\\t\\t\\tid := chainid()\\n\\t\\t}\\n\\t\\treturn id;\\n\\t}\\n\\n\\t/* ========== PUBLIC FUNCTIONS ========== */\\n\\n\\t// There needs to be a time interval that this can be called. Otherwise it can be called multiple times per expansion.\\n\\tuint256 public last_call_time; // Last time the refreshCollateralRatio function was called\\n\\n\\t// Note: New function to refresh collateral ratio\\n\\tfunction refreshCollateralRatio(uint deus_price, uint dei_price, uint256 expire_block, bytes[] calldata sigs) external {\\n\\t\\trequire(collateral_ratio_paused == false, \\\"DEI::Collateral Ratio has been paused\\\");\\n\\t\\tuint256 time_elapsed = (block.timestamp) - last_call_time;\\n\\t\\trequire(time_elapsed >= refresh_cooldown, \\\"DEI::Internal cooldown not passed\\\");\\n\\t\\tuint256 deus_reserves = ReserveTracker(reserve_tracker_address).getDEUSReserves();\\n\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_address,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\taddress(this),\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdei_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\texpire_block,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tgetChainID()\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t));\\n\\n\\t\\tverify_price(sighash, sigs);\\n\\n\\t\\tuint256 deus_liquidity = deus_reserves * deus_price; // Has 6 decimals of precision\\n\\n\\t\\tuint256 dei_supply = totalSupply();\\n\\n\\t\\tuint256 new_growth_ratio = deus_liquidity / dei_supply; // (E18 + E6) / E18\\n\\n\\t\\tif(DIP){\\n\\t\\t\\trequire(dei_price > DEI_top_band || dei_price < DEI_bottom_band, \\\"DEI::Use refreshCollateralRatio when DEI is outside of peg\\\");\\n\\t\\t}\\n\\n\\t\\t// First, check if the price is out of the band\\n\\t\\tif(dei_price > DEI_top_band){\\n\\t\\t\\tglobal_collateral_ratio = global_collateral_ratio - dei_step;\\n\\t\\t} else if (dei_price < DEI_bottom_band){\\n\\t\\t\\tglobal_collateral_ratio = global_collateral_ratio + dei_step;\\n\\n\\t\\t// Else, check if the growth ratio has increased or decreased since last update\\n\\t\\t} else if(use_growth_ratio){\\n\\t\\t\\tif(new_growth_ratio > growth_ratio * (1e6 + GR_top_band) / 1e6){\\n\\t\\t\\t\\tglobal_collateral_ratio = global_collateral_ratio - dei_step;\\n\\t\\t\\t} else if (new_growth_ratio < growth_ratio * (1e6 - GR_bottom_band) / 1e6){\\n\\t\\t\\t\\tglobal_collateral_ratio = global_collateral_ratio + dei_step;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tgrowth_ratio = new_growth_ratio;\\n\\t\\tlast_call_time = block.timestamp;\\n\\n\\t\\t// No need for checking CR under 0 as the last_collateral_ratio.sub(dei_step) will throw \\n\\t\\t// an error above in that case\\n\\t\\tif(global_collateral_ratio > 1e6){\\n\\t\\t\\tglobal_collateral_ratio = 1e6;\\n\\t\\t}\\n\\n\\t\\temit CollateralRatioRefreshed(global_collateral_ratio);\\n\\n\\t}\\n\\n\\tfunction setUseGrowthRatio(bool _use_growth_ratio) external onlyTrusty {\\n\\t\\tuse_growth_ratio = _use_growth_ratio;\\n\\n\\t\\temit UseGrowthRatioSet(_use_growth_ratio);\\n\\t}\\n\\n\\tfunction setGrowthRatioBands(uint256 _GR_top_band, uint256 _GR_bottom_band) external onlyTrusty {\\n\\t\\tGR_top_band = _GR_top_band;\\n\\t\\tGR_bottom_band = _GR_bottom_band;\\n\\t\\temit GrowthRatioBandSet( _GR_top_band, _GR_bottom_band);\\n\\t}\\n\\n\\tfunction setPriceBands(uint256 _top_band, uint256 _bottom_band) external onlyTrusty {\\n\\t\\tDEI_top_band = _top_band;\\n\\t\\tDEI_bottom_band = _bottom_band;\\n\\n\\t\\temit PriceBandSet(_top_band, _bottom_band);\\n\\t}\\n\\n\\tfunction activateDIP(bool _activate) external onlyTrusty {\\n\\t\\tDIP = _activate;\\n\\n\\t\\temit DIPSet(_activate);\\n\\t}\\n\\n\\t// Used by pools when user redeems\\n\\tfunction pool_burn_from(address b_address, uint256 b_amount) public onlyPools {\\n\\t\\tsuper._burnFrom(b_address, b_amount);\\n\\t\\temit DEIBurned(b_address, msg.sender, b_amount);\\n\\t}\\n\\n\\t// This function is what other dei pools will call to mint new DEI\\n\\tfunction pool_mint(address m_address, uint256 m_amount) public onlyPools {\\n\\t\\tsuper._mint(m_address, m_amount);\\n\\t\\temit DEIMinted(msg.sender, m_address, m_amount);\\n\\t}\\n\\n\\t/* ========== RESTRICTED FUNCTIONS ========== */\\n\\n\\t// Adds collateral addresses supported, such as tether and busd, must be ERC20\\n\\tfunction addPool(address pool_address)\\n\\t\\texternal\\n\\t\\tonlyTrusty\\n\\t{\\n\\t\\trequire(pool_address != address(0), \\\"DEI::addPool: Zero address detected\\\");\\n\\t\\trequire(dei_pools[pool_address] == false, \\\"DEI::addPool: Address already exists\\\");\\n\\n\\t\\tdei_pools[pool_address] = true;\\n\\t\\tdei_pools_array.push(pool_address);\\n\\n\\t\\temit PoolAdded(pool_address);\\n\\t}\\n\\n\\t// Remove a pool\\n\\tfunction removePool(address pool_address)\\n\\t\\texternal\\n\\t\\tonlyTrusty\\n\\t{\\n\\t\\trequire(pool_address != address(0), \\\"DEI::removePool: Zero address detected\\\");\\n\\t\\trequire(dei_pools[pool_address] == true, \\\"DEI::removePool: Address nonexistant\\\");\\n\\n\\t\\t// Delete from the mapping\\n\\t\\tdelete dei_pools[pool_address];\\n\\n\\t\\t// 'Delete' from the array by setting the address to 0x0\\n\\t\\tfor (uint256 i = 0; i < dei_pools_array.length; i++) {\\n\\t\\t\\tif (dei_pools_array[i] == pool_address) {\\n\\t\\t\\t\\tdei_pools_array[i] = address(0); // This will leave a null in the array and keep the indices the same\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\temit PoolRemoved(pool_address);\\n\\t}\\n\\n\\tfunction setNameAndSymbol(string memory _name, string memory _symbol) external onlyTrusty {\\n\\t\\tname = _name;\\n\\t\\tsymbol = _symbol;\\n\\n\\t\\temit NameAndSymbolSet(name, symbol);\\n\\t}\\n\\n\\tfunction setOracle(address _oracle) external onlyTrusty {\\n\\t\\toracle = _oracle;\\n\\n\\t\\temit OracleSet(_oracle);\\n\\t}\\n\\n\\tfunction setDEIStep(uint256 _new_step) external onlyTrusty {\\n\\t\\tdei_step = _new_step;\\n\\n\\t\\temit DEIStepSet(_new_step);\\n\\t}\\n\\n\\tfunction setReserveTracker(address _reserve_tracker_address) external onlyTrusty {\\n\\t\\treserve_tracker_address = _reserve_tracker_address;\\n\\n\\t\\temit ReserveTrackerSet(_reserve_tracker_address);\\n\\t}\\n\\n\\tfunction setRefreshCooldown(uint256 _new_cooldown) external onlyTrusty {\\n\\t\\trefresh_cooldown = _new_cooldown;\\n\\n\\t\\temit RefreshCooldownSet(_new_cooldown);\\n\\t}\\n\\n\\tfunction setDEUSAddress(address _deus_address) external onlyTrusty {\\n\\t\\trequire(_deus_address != address(0), \\\"DEI::setDEUSAddress: Zero address detected\\\");\\n\\n\\t\\tdeus_address = _deus_address;\\n\\n\\t\\temit DEUSAddressSet(_deus_address);\\n\\t}\\n\\n\\tfunction toggleCollateralRatio() external {\\n\\t\\trequire(hasRole(COLLATERAL_RATIO_PAUSER, msg.sender), \\\"DEI: you are not the collateral ratio pauser\\\");\\n\\t\\tcollateral_ratio_paused = !collateral_ratio_paused;\\n\\n\\t\\temit CollateralRatioToggled(collateral_ratio_paused);\\n\\t}\\n\\n\\t/* ========== EVENTS ========== */\\n\\n\\t// Track DEI burned\\n\\tevent DEIBurned(address indexed from, address indexed to, uint256 amount);\\n\\t// Track DEI minted\\n\\tevent DEIMinted(address indexed from, address indexed to, uint256 amount);\\n\\tevent CollateralRatioRefreshed(uint256 global_collateral_ratio);\\n\\tevent PoolAdded(address pool_address);\\n\\tevent PoolRemoved(address pool_address);\\n\\tevent DEIStepSet(uint256 new_step);\\n\\tevent RefreshCooldownSet(uint256 new_cooldown);\\n\\tevent DEUSAddressSet(address deus_address);\\n\\tevent PriceBandSet(uint256 top_band, uint256 bottom_band);\\n\\tevent CollateralRatioToggled(bool collateral_ratio_paused);\\n\\tevent OracleSet(address oracle);\\n\\tevent ReserveTrackerSet(address reserve_tracker_address);\\n\\tevent UseGrowthRatioSet( bool use_growth_ratio);\\n\\tevent DIPSet(bool activate);\\n\\tevent GrowthRatioBandSet(uint256 GR_top_band, uint256 GR_bottom_band);\\n\\tevent NameAndSymbolSet(string name, string symbol);\\n}\\n\\n//Dar panah khoda\\n\",\"keccak256\":\"0x53f2bc5d11497cc219e6d5fb41160339ee7a42652a935830cea03090d7529121\",\"license\":\"GPL-2.0-or-later\"},\"contracts/DEI/IDEI.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\n\\ninterface IDEIStablecoin {\\n function name() external view returns (string memory);\\n function symbol() external view returns (string memory);\\n function totalSupply() external view returns (uint256);\\n function global_collateral_ratio() external view returns (uint256);\\n function dei_pools(address _address) external view returns (bool);\\n function dei_pools_array() external view returns (address[] memory);\\n function verify_price(bytes32 sighash, bytes[] calldata sigs) external view returns (bool);\\n function dei_info(uint256[] memory collat_usd_price) external view returns (uint256, uint256, uint256);\\n function getChainID() external view returns (uint256);\\n function globalCollateralValue(uint256[] memory collat_usd_price) external view returns (uint256);\\n function refreshCollateralRatio(uint deus_price, uint dei_price, uint256 expire_block, bytes[] calldata sigs) external;\\n function useGrowthRatio(bool _use_growth_ratio) external;\\n function setGrowthRatioBands(uint256 _GR_top_band, uint256 _GR_bottom_band) external;\\n function setPriceBands(uint256 _top_band, uint256 _bottom_band) external;\\n function activateDIP(bool _activate) external;\\n function pool_burn_from(address b_address, uint256 b_amount) external;\\n function pool_mint(address m_address, uint256 m_amount) external;\\n function addPool(address pool_address) external;\\n function removePool(address pool_address) external;\\n function setNameAndSymbol(string memory _name, string memory _symbol) external;\\n function setOracle(address _oracle) external;\\n function setDEIStep(uint256 _new_step) external;\\n function setReserveTracker(address _reserve_tracker_address) external;\\n function setRefreshCooldown(uint256 _new_cooldown) external;\\n function setDEUSAddress(address _deus_address) external;\\n function toggleCollateralRatio() external;\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x0c16e210870801fd11bac76f0cddbe1f61b19f18eb75a648144da3cba5f5f035\",\"license\":\"GPL-2.0-or-later\"},\"contracts/DEI/Pools/DEIPool.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity ^0.8.0;\\npragma abicoder v2;\\n// =================================================================================================================\\n// _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| |\\n// _| _| _| _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| |\\n// _| _| _|_|_| _| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_|_|_| |\\n// _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| |\\n// _|_|_| _|_|_|_| _|_| _|_|_| _| _| _| _| _|_|_| _| _| _|_|_| _|_|_| |\\n// =================================================================================================================\\n// ============================= DEIPool =============================\\n// ====================================================================\\n// DEUS Finance: https://github.com/DeusFinance\\n\\n// Primary Author(s)\\n// Travis Moore: https://github.com/FortisFortuna\\n// Jason Huan: https://github.com/jasonhuan\\n// Sam Kazemian: https://github.com/samkazemian\\n// Vahid Gh: https://github.com/vahid-dev\\n// SAYaghoubnejad: https://github.com/SAYaghoubnejad\\n\\n// Reviewer(s) / Contributor(s)\\n// Sam Sun: https://github.com/samczsun\\n\\nimport \\\"../../Uniswap/TransferHelper.sol\\\";\\nimport \\\"../../DEUS/IDEUS.sol\\\";\\nimport \\\"../../DEI/IDEI.sol\\\";\\nimport \\\"../../ERC20/ERC20.sol\\\";\\nimport \\\"../../Governance/AccessControl.sol\\\";\\nimport \\\"./DEIPoolLibrary.sol\\\";\\n\\ncontract DEIPool is AccessControl {\\n\\n\\tstruct RecollateralizeDEI {\\n\\t\\tuint256 collateral_amount;\\n\\t\\tuint256 pool_collateral_price;\\n\\t\\tuint256[] collateral_price;\\n\\t\\tuint256 deus_current_price;\\n\\t\\tuint256 expireBlock;\\n\\t\\tbytes[] sigs;\\n\\t}\\n\\n\\t/* ========== STATE VARIABLES ========== */\\n\\n\\tERC20 private collateral_token;\\n\\taddress private collateral_address;\\n\\n\\taddress private dei_contract_address;\\n\\taddress private deus_contract_address;\\n\\n\\tuint256 public minting_fee;\\n\\tuint256 public redemption_fee;\\n\\tuint256 public buyback_fee;\\n\\tuint256 public recollat_fee;\\n\\n\\tmapping(address => uint256) public redeemDEUSBalances;\\n\\tmapping(address => uint256) public redeemCollateralBalances;\\n\\tuint256 public unclaimedPoolCollateral;\\n\\tuint256 public unclaimedPoolDEUS;\\n\\tmapping(address => uint256) public lastRedeemed;\\n\\n\\t// Constants for various precisions\\n\\tuint256 private constant PRICE_PRECISION = 1e6;\\n\\tuint256 private constant COLLATERAL_RATIO_PRECISION = 1e6;\\n\\tuint256 private constant COLLATERAL_RATIO_MAX = 1e6;\\n\\n\\t// Number of decimals needed to get to 18\\n\\tuint256 private immutable missing_decimals;\\n\\n\\t// Pool_ceiling is the total units of collateral that a pool contract can hold\\n\\tuint256 public pool_ceiling = 0;\\n\\n\\t// Stores price of the collateral, if price is paused\\n\\tuint256 public pausedPrice = 0;\\n\\n\\t// Bonus rate on DEUS minted during recollateralizeDEI(); 6 decimals of precision, set to 0.75% on genesis\\n\\tuint256 public bonus_rate = 7500;\\n\\n\\t// Number of blocks to wait before being able to collectRedemption()\\n\\tuint256 public redemption_delay = 2;\\n\\n\\t// Minting/Redeeming fees goes to daoWallet\\n\\tuint256 public daoShare = 0;\\n\\n\\tDEIPoolLibrary poolLibrary;\\n\\n\\t// AccessControl Roles\\n\\tbytes32 private constant MINT_PAUSER = keccak256(\\\"MINT_PAUSER\\\");\\n\\tbytes32 private constant REDEEM_PAUSER = keccak256(\\\"REDEEM_PAUSER\\\");\\n\\tbytes32 private constant BUYBACK_PAUSER = keccak256(\\\"BUYBACK_PAUSER\\\");\\n\\tbytes32 private constant RECOLLATERALIZE_PAUSER = keccak256(\\\"RECOLLATERALIZE_PAUSER\\\");\\n\\tbytes32 public constant TRUSTY_ROLE = keccak256(\\\"TRUSTY_ROLE\\\");\\n\\tbytes32 public constant DAO_SHARE_COLLECTOR = keccak256(\\\"DAO_SHARE_COLLECTOR\\\");\\n\\tbytes32 public constant PARAMETER_SETTER_ROLE = keccak256(\\\"PARAMETER_SETTER_ROLE\\\");\\n\\n\\t// AccessControl state variables\\n\\tbool public mintPaused = false;\\n\\tbool public redeemPaused = false;\\n\\tbool public recollateralizePaused = false;\\n\\tbool public buyBackPaused = false;\\n\\n\\t/* ========== MODIFIERS ========== */\\n\\n\\tmodifier onlyTrusty() {\\n\\t\\trequire(\\n\\t\\t\\thasRole(TRUSTY_ROLE, msg.sender),\\n\\t\\t\\t\\\"POOL::you are not trusty\\\"\\n\\t\\t);\\n\\t\\t_;\\n\\t}\\n\\n\\tmodifier notRedeemPaused() {\\n\\t\\trequire(redeemPaused == false, \\\"POOL::Redeeming is paused\\\");\\n\\t\\t_;\\n\\t}\\n\\n\\tmodifier notMintPaused() {\\n\\t\\trequire(mintPaused == false, \\\"POOL::Minting is paused\\\");\\n\\t\\t_;\\n\\t}\\n\\n\\t/* ========== CONSTRUCTOR ========== */\\n\\n\\tconstructor(\\n\\t\\taddress _dei_contract_address,\\n\\t\\taddress _deus_contract_address,\\n\\t\\taddress _collateral_address,\\n\\t\\taddress _trusty_address,\\n\\t\\taddress _admin_address,\\n\\t\\tuint256 _pool_ceiling,\\n\\t\\taddress _library\\n\\t) {\\n\\t\\trequire(\\n\\t\\t\\t(_dei_contract_address != address(0)) &&\\n\\t\\t\\t\\t(_deus_contract_address != address(0)) &&\\n\\t\\t\\t\\t(_collateral_address != address(0)) &&\\n\\t\\t\\t\\t(_trusty_address != address(0)) &&\\n\\t\\t\\t\\t(_admin_address != address(0)) &&\\n\\t\\t\\t\\t(_library != address(0)),\\n\\t\\t\\t\\\"POOL::Zero address detected\\\"\\n\\t\\t);\\n\\t\\tpoolLibrary = DEIPoolLibrary(_library);\\n\\t\\tdei_contract_address = _dei_contract_address;\\n\\t\\tdeus_contract_address = _deus_contract_address;\\n\\t\\tcollateral_address = _collateral_address;\\n\\t\\tcollateral_token = ERC20(_collateral_address);\\n\\t\\tpool_ceiling = _pool_ceiling;\\n\\t\\tmissing_decimals = uint256(18) - collateral_token.decimals();\\n\\n\\t\\t_setupRole(DEFAULT_ADMIN_ROLE, _admin_address);\\n\\t\\t_setupRole(MINT_PAUSER, _trusty_address);\\n\\t\\t_setupRole(REDEEM_PAUSER, _trusty_address);\\n\\t\\t_setupRole(RECOLLATERALIZE_PAUSER, _trusty_address);\\n\\t\\t_setupRole(BUYBACK_PAUSER, _trusty_address);\\n\\t\\t_setupRole(TRUSTY_ROLE, _trusty_address);\\n\\t\\t_setupRole(PARAMETER_SETTER_ROLE, _trusty_address);\\n\\t}\\n\\n\\t/* ========== VIEWS ========== */\\n\\n\\t// Returns dollar value of collateral held in this DEI pool\\n\\tfunction collatDollarBalance(uint256 collat_usd_price) public view returns (uint256) {\\n\\t\\treturn ((collateral_token.balanceOf(address(this)) - unclaimedPoolCollateral) * (10**missing_decimals) * collat_usd_price) / (PRICE_PRECISION);\\n\\t}\\n\\n\\t// Returns the value of excess collateral held in this DEI pool, compared to what is needed to maintain the global collateral ratio\\n\\tfunction availableExcessCollatDV(uint256[] memory collat_usd_price) public view returns (uint256) {\\n\\t\\tuint256 total_supply = IDEIStablecoin(dei_contract_address).totalSupply();\\n\\t\\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\\n\\t\\tuint256 global_collat_value = IDEIStablecoin(dei_contract_address).globalCollateralValue(collat_usd_price);\\n\\n\\t\\tif (global_collateral_ratio > COLLATERAL_RATIO_PRECISION)\\n\\t\\t\\tglobal_collateral_ratio = COLLATERAL_RATIO_PRECISION; // Handles an overcollateralized contract with CR > 1\\n\\t\\tuint256 required_collat_dollar_value_d18 = (total_supply * global_collateral_ratio) / (COLLATERAL_RATIO_PRECISION); // Calculates collateral needed to back each 1 DEI with $1 of collateral at current collat ratio\\n\\t\\tif (global_collat_value > required_collat_dollar_value_d18)\\n\\t\\t\\treturn global_collat_value - required_collat_dollar_value_d18;\\n\\t\\telse return 0;\\n\\t}\\n\\n\\tfunction getChainID() public view returns (uint256) {\\n\\t\\tuint256 id;\\n\\t\\tassembly {\\n\\t\\t\\tid := chainid()\\n\\t\\t}\\n\\t\\treturn id;\\n\\t}\\n\\n\\t/* ========== PUBLIC FUNCTIONS ========== */\\n\\n\\t// We separate out the 1t1, fractional and algorithmic minting functions for gas efficiency\\n\\tfunction mint1t1DEI(uint256 collateral_amount, uint256 collateral_price, uint256 expireBlock, bytes[] calldata sigs)\\n\\t\\texternal\\n\\t\\tnotMintPaused\\n\\t\\treturns (uint256 dei_amount_d18)\\n\\t{\\n\\n\\t\\trequire(\\n\\t\\t\\tIDEIStablecoin(dei_contract_address).global_collateral_ratio() >= COLLATERAL_RATIO_MAX,\\n\\t\\t\\t\\\"Collateral ratio must be >= 1\\\"\\n\\t\\t);\\n\\t\\trequire(\\n\\t\\t\\tcollateral_token.balanceOf(address(this)) - unclaimedPoolCollateral + collateral_amount <= pool_ceiling,\\n\\t\\t\\t\\\"[Pool's Closed]: Ceiling reached\\\"\\n\\t\\t);\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"POOL::mint1t1DEI: signature is expired\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::mint1t1DEI: invalid signatures\\\");\\n\\n\\t\\tuint256 collateral_amount_d18 = collateral_amount * (10**missing_decimals);\\n\\t\\tdei_amount_d18 = poolLibrary.calcMint1t1DEI(\\n\\t\\t\\tcollateral_price,\\n\\t\\t\\tcollateral_amount_d18\\n\\t\\t); //1 DEI for each $1 worth of collateral\\n\\n\\t\\tdei_amount_d18 = (dei_amount_d18 * (uint256(1e6) - minting_fee)) / 1e6; //remove precision at the end\\n\\n\\t\\tTransferHelper.safeTransferFrom(\\n\\t\\t\\taddress(collateral_token),\\n\\t\\t\\tmsg.sender,\\n\\t\\t\\taddress(this),\\n\\t\\t\\tcollateral_amount\\n\\t\\t);\\n\\n\\t\\tdaoShare += dei_amount_d18 * minting_fee / 1e6;\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_mint(msg.sender, dei_amount_d18);\\n\\t}\\n\\n\\t// 0% collateral-backed\\n\\tfunction mintAlgorithmicDEI(\\n\\t\\tuint256 deus_amount_d18,\\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external notMintPaused returns (uint256 dei_amount_d18) {\\n\\t\\trequire(\\n\\t\\t\\tIDEIStablecoin(dei_contract_address).global_collateral_ratio() == 0,\\n\\t\\t\\t\\\"Collateral ratio must be 0\\\"\\n\\t\\t);\\n\\t\\trequire(expireBlock >= block.number, \\\"POOL::mintAlgorithmicDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(deus_contract_address, deus_current_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::mintAlgorithmicDEI: invalid signatures\\\");\\n\\n\\t\\tdei_amount_d18 = poolLibrary.calcMintAlgorithmicDEI(\\n\\t\\t\\tdeus_current_price, // X DEUS / 1 USD\\n\\t\\t\\tdeus_amount_d18\\n\\t\\t);\\n\\n\\t\\tdei_amount_d18 = (dei_amount_d18 * (uint256(1e6) - (minting_fee))) / (1e6);\\n\\t\\tdaoShare += dei_amount_d18 * minting_fee / 1e6;\\n\\n\\t\\tIDEUSToken(deus_contract_address).pool_burn_from(msg.sender, deus_amount_d18);\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_mint(msg.sender, dei_amount_d18);\\n\\t}\\n\\n\\t// Will fail if fully collateralized or fully algorithmic\\n\\t// > 0% and < 100% collateral-backed\\n\\tfunction mintFractionalDEI(\\n\\t\\tuint256 collateral_amount,\\n\\t\\tuint256 deus_amount,\\n\\t\\tuint256 collateral_price,\\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external notMintPaused returns (uint256 mint_amount) {\\n\\t\\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\\n\\t\\trequire(\\n\\t\\t\\tglobal_collateral_ratio < COLLATERAL_RATIO_MAX && global_collateral_ratio > 0,\\n\\t\\t\\t\\\"Collateral ratio needs to be between .000001 and .999999\\\"\\n\\t\\t);\\n\\t\\trequire(\\n\\t\\t\\tcollateral_token.balanceOf(address(this)) - unclaimedPoolCollateral + collateral_amount <= pool_ceiling,\\n\\t\\t\\t\\\"Pool ceiling reached, no more DEI can be minted with this collateral\\\"\\n\\t\\t);\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"POOL::mintFractionalDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, deus_contract_address, deus_current_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::mintFractionalDEI: invalid signatures\\\");\\n\\n\\t\\tDEIPoolLibrary.MintFD_Params memory input_params;\\n\\n\\t\\t// Blocking is just for solving stack depth problem\\n\\t\\t{\\n\\t\\t\\tuint256 collateral_amount_d18 = collateral_amount * (10**missing_decimals);\\n\\t\\t\\tinput_params = DEIPoolLibrary.MintFD_Params(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_current_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_amount_d18,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tglobal_collateral_ratio\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\t\\t}\\t\\t\\t\\t\\t\\t\\n\\n\\t\\tuint256 deus_needed;\\n\\t\\t(mint_amount, deus_needed) = poolLibrary.calcMintFractionalDEI(input_params);\\n\\t\\trequire(deus_needed <= deus_amount, \\\"Not enough DEUS inputted\\\");\\n\\t\\t\\n\\t\\tmint_amount = (mint_amount * (uint256(1e6) - minting_fee)) / (1e6);\\n\\n\\t\\tIDEUSToken(deus_contract_address).pool_burn_from(msg.sender, deus_needed);\\n\\t\\tTransferHelper.safeTransferFrom(\\n\\t\\t\\taddress(collateral_token),\\n\\t\\t\\tmsg.sender,\\n\\t\\t\\taddress(this),\\n\\t\\t\\tcollateral_amount\\n\\t\\t);\\n\\n\\t\\tdaoShare += mint_amount * minting_fee / 1e6;\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_mint(msg.sender, mint_amount);\\n\\t}\\n\\n\\t// Redeem collateral. 100% collateral-backed\\n\\tfunction redeem1t1DEI(uint256 DEI_amount, uint256 collateral_price, uint256 expireBlock, bytes[] calldata sigs)\\n\\t\\texternal\\n\\t\\tnotRedeemPaused\\n\\t{\\n\\t\\trequire(\\n\\t\\t\\tIDEIStablecoin(dei_contract_address).global_collateral_ratio() == COLLATERAL_RATIO_MAX,\\n\\t\\t\\t\\\"Collateral ratio must be == 1\\\"\\n\\t\\t);\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"POOL::mintAlgorithmicDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::redeem1t1DEI: invalid signatures\\\");\\n\\n\\t\\t// Need to adjust for decimals of collateral\\n\\t\\tuint256 DEI_amount_precision = DEI_amount / (10**missing_decimals);\\n\\t\\tuint256 collateral_needed = poolLibrary.calcRedeem1t1DEI(\\n\\t\\t\\tcollateral_price,\\n\\t\\t\\tDEI_amount_precision\\n\\t\\t);\\n\\n\\t\\tcollateral_needed = (collateral_needed * (uint256(1e6) - redemption_fee)) / (1e6);\\n\\t\\trequire(\\n\\t\\t\\tcollateral_needed <= collateral_token.balanceOf(address(this)) - unclaimedPoolCollateral,\\n\\t\\t\\t\\\"Not enough collateral in pool\\\"\\n\\t\\t);\\n\\n\\t\\tredeemCollateralBalances[msg.sender] = redeemCollateralBalances[msg.sender] + collateral_needed;\\n\\t\\tunclaimedPoolCollateral = unclaimedPoolCollateral + collateral_needed;\\n\\t\\tlastRedeemed[msg.sender] = block.number;\\n\\n\\t\\tdaoShare += DEI_amount * redemption_fee / 1e6;\\n\\t\\t// Move all external functions to the end\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_burn_from(msg.sender, DEI_amount);\\n\\t}\\n\\n\\t// Will fail if fully collateralized or algorithmic\\n\\t// Redeem DEI for collateral and DEUS. > 0% and < 100% collateral-backed\\n\\tfunction redeemFractionalDEI(\\n\\t\\tuint256 DEI_amount,\\n\\t\\tuint256 collateral_price, \\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external notRedeemPaused {\\n\\t\\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\\n\\t\\trequire(\\n\\t\\t\\tglobal_collateral_ratio < COLLATERAL_RATIO_MAX && global_collateral_ratio > 0,\\n\\t\\t\\t\\\"POOL::redeemFractionalDEI: Collateral ratio needs to be between .000001 and .999999\\\"\\n\\t\\t);\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"DEI::redeemFractionalDEI: signature is expired\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, deus_contract_address, deus_current_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::redeemFractionalDEI: invalid signatures\\\");\\n\\n\\t\\t// Blocking is just for solving stack depth problem\\n\\t\\tuint256 deus_amount;\\n\\t\\tuint256 collateral_amount;\\n\\t\\t{\\n\\t\\t\\tuint256 col_price_usd = collateral_price;\\n\\n\\t\\t\\tuint256 DEI_amount_post_fee = (DEI_amount * (uint256(1e6) - redemption_fee)) / (PRICE_PRECISION);\\n\\n\\t\\t\\tuint256 deus_dollar_value_d18 = DEI_amount_post_fee - ((DEI_amount_post_fee * global_collateral_ratio) / (PRICE_PRECISION));\\n\\t\\t\\tdeus_amount = deus_dollar_value_d18 * (PRICE_PRECISION) / (deus_current_price);\\n\\n\\t\\t\\t// Need to adjust for decimals of collateral\\n\\t\\t\\tuint256 DEI_amount_precision = DEI_amount_post_fee / (10**missing_decimals);\\n\\t\\t\\tuint256 collateral_dollar_value = (DEI_amount_precision * global_collateral_ratio) / PRICE_PRECISION;\\n\\t\\t\\tcollateral_amount = (collateral_dollar_value * PRICE_PRECISION) / (col_price_usd);\\n\\t\\t}\\n\\t\\trequire(\\n\\t\\t\\tcollateral_amount <= collateral_token.balanceOf(address(this)) - unclaimedPoolCollateral,\\n\\t\\t\\t\\\"Not enough collateral in pool\\\"\\n\\t\\t);\\n\\n\\t\\tredeemCollateralBalances[msg.sender] = redeemCollateralBalances[msg.sender] + collateral_amount;\\n\\t\\tunclaimedPoolCollateral = unclaimedPoolCollateral + collateral_amount;\\n\\n\\t\\tredeemDEUSBalances[msg.sender] = redeemDEUSBalances[msg.sender] + deus_amount;\\n\\t\\tunclaimedPoolDEUS = unclaimedPoolDEUS + deus_amount;\\n\\n\\t\\tlastRedeemed[msg.sender] = block.number;\\n\\n\\t\\tdaoShare += DEI_amount * redemption_fee / 1e6;\\n\\t\\t// Move all external functions to the end\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_burn_from(msg.sender, DEI_amount);\\n\\t\\tIDEUSToken(deus_contract_address).pool_mint(address(this), deus_amount);\\n\\t}\\n\\n\\t// Redeem DEI for DEUS. 0% collateral-backed\\n\\tfunction redeemAlgorithmicDEI(\\n\\t\\tuint256 DEI_amount,\\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external notRedeemPaused {\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).global_collateral_ratio() == 0, \\\"POOL::redeemAlgorithmicDEI: Collateral ratio must be 0\\\");\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"DEI::redeemAlgorithmicDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(deus_contract_address, deus_current_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::redeemAlgorithmicDEI: invalid signatures\\\");\\n\\n\\t\\tuint256 deus_dollar_value_d18 = DEI_amount;\\n\\n\\t\\tdeus_dollar_value_d18 = (deus_dollar_value_d18 * (uint256(1e6) - redemption_fee)) / 1e6; //apply fees\\n\\n\\t\\tuint256 deus_amount = (deus_dollar_value_d18 * (PRICE_PRECISION)) / deus_current_price;\\n\\n\\t\\tredeemDEUSBalances[msg.sender] = redeemDEUSBalances[msg.sender] + deus_amount;\\n\\t\\tunclaimedPoolDEUS = unclaimedPoolDEUS + deus_amount;\\n\\n\\t\\tlastRedeemed[msg.sender] = block.number;\\n\\n\\t\\tdaoShare += DEI_amount * redemption_fee / 1e6;\\n\\t\\t// Move all external functions to the end\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_burn_from(msg.sender, DEI_amount);\\n\\t\\tIDEUSToken(deus_contract_address).pool_mint(address(this), deus_amount);\\n\\t}\\n\\n\\t// After a redemption happens, transfer the newly minted DEUS and owed collateral from this pool\\n\\t// contract to the user. Redemption is split into two functions to prevent flash loans from being able\\n\\t// to take out DEI/collateral from the system, use an AMM to trade the new price, and then mint back into the system.\\n\\tfunction collectRedemption() external {\\n\\t\\trequire(\\n\\t\\t\\t(lastRedeemed[msg.sender] + redemption_delay) <= block.number,\\n\\t\\t\\t\\\"POOL::collectRedemption: Must wait for redemption_delay blocks before collecting redemption\\\"\\n\\t\\t);\\n\\t\\tbool sendDEUS = false;\\n\\t\\tbool sendCollateral = false;\\n\\t\\tuint256 DEUSAmount = 0;\\n\\t\\tuint256 CollateralAmount = 0;\\n\\n\\t\\t// Use Checks-Effects-Interactions pattern\\n\\t\\tif (redeemDEUSBalances[msg.sender] > 0) {\\n\\t\\t\\tDEUSAmount = redeemDEUSBalances[msg.sender];\\n\\t\\t\\tredeemDEUSBalances[msg.sender] = 0;\\n\\t\\t\\tunclaimedPoolDEUS = unclaimedPoolDEUS - DEUSAmount;\\n\\n\\t\\t\\tsendDEUS = true;\\n\\t\\t}\\n\\n\\t\\tif (redeemCollateralBalances[msg.sender] > 0) {\\n\\t\\t\\tCollateralAmount = redeemCollateralBalances[msg.sender];\\n\\t\\t\\tredeemCollateralBalances[msg.sender] = 0;\\n\\t\\t\\tunclaimedPoolCollateral = unclaimedPoolCollateral - CollateralAmount;\\n\\t\\t\\tsendCollateral = true;\\n\\t\\t}\\n\\n\\t\\tif (sendDEUS) {\\n\\t\\t\\tTransferHelper.safeTransfer(address(deus_contract_address), msg.sender, DEUSAmount);\\n\\t\\t}\\n\\t\\tif (sendCollateral) {\\n\\t\\t\\tTransferHelper.safeTransfer(\\n\\t\\t\\t\\taddress(collateral_token),\\n\\t\\t\\t\\tmsg.sender,\\n\\t\\t\\t\\tCollateralAmount\\n\\t\\t\\t);\\n\\t\\t}\\n\\t}\\n\\n\\t// When the protocol is recollateralizing, we need to give a discount of DEUS to hit the new CR target\\n\\t// Thus, if the target collateral ratio is higher than the actual value of collateral, minters get DEUS for adding collateral\\n\\t// This function simply rewards anyone that sends collateral to a pool with the same amount of DEUS + the bonus rate\\n\\t// Anyone can call this function to recollateralize the protocol and take the extra DEUS value from the bonus rate as an arb opportunity\\n\\tfunction recollateralizeDEI(RecollateralizeDEI memory inputs) external {\\n\\t\\trequire(recollateralizePaused == false, \\\"POOL::recollateralizeDEI: Recollateralize is paused\\\");\\n\\n\\t\\trequire(inputs.expireBlock >= block.number, \\\"POOL::recollateralizeDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_address, \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinputs.collateral_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_contract_address, \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinputs.deus_current_price, \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinputs.expireBlock,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tgetChainID()\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, inputs.sigs), \\\"POOL::recollateralizeDEI: invalid signatures\\\");\\n\\n\\t\\tuint256 collateral_amount_d18 = inputs.collateral_amount * (10**missing_decimals);\\n\\n\\t\\tuint256 dei_total_supply = IDEIStablecoin(dei_contract_address).totalSupply();\\n\\t\\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\\n\\t\\tuint256 global_collat_value = IDEIStablecoin(dei_contract_address).globalCollateralValue(inputs.collateral_price);\\n\\n\\t\\t(uint256 collateral_units, uint256 amount_to_recollat) = poolLibrary.calcRecollateralizeDEIInner(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_amount_d18,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinputs.collateral_price[inputs.collateral_price.length - 1], // pool collateral price exist in last index\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tglobal_collat_value,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdei_total_supply,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tglobal_collateral_ratio\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\tuint256 collateral_units_precision = collateral_units / (10**missing_decimals);\\n\\n\\t\\tuint256 deus_paid_back = (amount_to_recollat * (uint256(1e6) + bonus_rate - recollat_fee)) / inputs.deus_current_price;\\n\\n\\t\\tTransferHelper.safeTransferFrom(\\n\\t\\t\\taddress(collateral_token),\\n\\t\\t\\tmsg.sender,\\n\\t\\t\\taddress(this),\\n\\t\\t\\tcollateral_units_precision\\n\\t\\t);\\n\\t\\tIDEUSToken(deus_contract_address).pool_mint(msg.sender, deus_paid_back);\\n\\t}\\n\\n\\t// Function can be called by an DEUS holder to have the protocol buy back DEUS with excess collateral value from a desired collateral pool\\n\\t// This can also happen if the collateral ratio > 1\\n\\tfunction buyBackDEUS(\\n\\t\\tuint256 DEUS_amount,\\n\\t\\tuint256[] memory collateral_price,\\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external {\\n\\t\\trequire(buyBackPaused == false, \\\"POOL::buyBackDEUS: Buyback is paused\\\");\\n\\t\\trequire(expireBlock >= block.number, \\\"DEI::buyBackDEUS: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_address,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_contract_address,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_current_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\texpireBlock,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tgetChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::buyBackDEUS: invalid signatures\\\");\\n\\n\\t\\tDEIPoolLibrary.BuybackDEUS_Params memory input_params = DEIPoolLibrary.BuybackDEUS_Params(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tavailableExcessCollatDV(collateral_price),\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_current_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_price[collateral_price.length - 1], // pool collateral price exist in last index\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tDEUS_amount\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\tuint256 collateral_equivalent_d18 = (poolLibrary.calcBuyBackDEUS(input_params) * (uint256(1e6) - buyback_fee)) / (1e6);\\n\\t\\tuint256 collateral_precision = collateral_equivalent_d18 / (10**missing_decimals);\\n\\n\\t\\t// Give the sender their desired collateral and burn the DEUS\\n\\t\\tIDEUSToken(deus_contract_address).pool_burn_from(msg.sender, DEUS_amount);\\n\\t\\tTransferHelper.safeTransfer(\\n\\t\\t\\taddress(collateral_token),\\n\\t\\t\\tmsg.sender,\\n\\t\\t\\tcollateral_precision\\n\\t\\t);\\n\\t}\\n\\n\\t/* ========== RESTRICTED FUNCTIONS ========== */\\n\\n\\tfunction collectDaoShare(uint256 amount, address to) external {\\n\\t\\trequire(hasRole(DAO_SHARE_COLLECTOR, msg.sender));\\n\\t\\trequire(amount <= daoShare, \\\"amount<=daoShare\\\");\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_mint(to, amount);\\n\\t\\tdaoShare -= amount;\\n\\n\\t\\temit daoShareCollected(amount, to);\\n\\t}\\n\\n\\tfunction emergencyWithdrawERC20(address token, uint amount, address to) external onlyTrusty {\\n\\t\\tIERC20(token).transfer(to, amount);\\n\\t}\\n\\n\\tfunction toggleMinting() external {\\n\\t\\trequire(hasRole(MINT_PAUSER, msg.sender));\\n\\t\\tmintPaused = !mintPaused;\\n\\n\\t\\temit MintingToggled(mintPaused);\\n\\t}\\n\\n\\tfunction toggleRedeeming() external {\\n\\t\\trequire(hasRole(REDEEM_PAUSER, msg.sender));\\n\\t\\tredeemPaused = !redeemPaused;\\n\\n\\t\\temit RedeemingToggled(redeemPaused);\\n\\t}\\n\\n\\tfunction toggleRecollateralize() external {\\n\\t\\trequire(hasRole(RECOLLATERALIZE_PAUSER, msg.sender));\\n\\t\\trecollateralizePaused = !recollateralizePaused;\\n\\n\\t\\temit RecollateralizeToggled(recollateralizePaused);\\n\\t}\\n\\n\\tfunction toggleBuyBack() external {\\n\\t\\trequire(hasRole(BUYBACK_PAUSER, msg.sender));\\n\\t\\tbuyBackPaused = !buyBackPaused;\\n\\n\\t\\temit BuybackToggled(buyBackPaused);\\n\\t}\\n\\n\\t// Combined into one function due to 24KiB contract memory limit\\n\\tfunction setPoolParameters(\\n\\t\\tuint256 new_ceiling,\\n\\t\\tuint256 new_bonus_rate,\\n\\t\\tuint256 new_redemption_delay,\\n\\t\\tuint256 new_mint_fee,\\n\\t\\tuint256 new_redeem_fee,\\n\\t\\tuint256 new_buyback_fee,\\n\\t\\tuint256 new_recollat_fee\\n\\t) external {\\n\\t\\trequire(hasRole(PARAMETER_SETTER_ROLE, msg.sender), \\\"POOL: Caller is not PARAMETER_SETTER_ROLE\\\");\\n\\t\\tpool_ceiling = new_ceiling;\\n\\t\\tbonus_rate = new_bonus_rate;\\n\\t\\tredemption_delay = new_redemption_delay;\\n\\t\\tminting_fee = new_mint_fee;\\n\\t\\tredemption_fee = new_redeem_fee;\\n\\t\\tbuyback_fee = new_buyback_fee;\\n\\t\\trecollat_fee = new_recollat_fee;\\n\\n\\t\\temit PoolParametersSet(\\n\\t\\t\\tnew_ceiling,\\n\\t\\t\\tnew_bonus_rate,\\n\\t\\t\\tnew_redemption_delay,\\n\\t\\t\\tnew_mint_fee,\\n\\t\\t\\tnew_redeem_fee,\\n\\t\\t\\tnew_buyback_fee,\\n\\t\\t\\tnew_recollat_fee\\n\\t\\t);\\n\\t}\\n\\n\\t/* ========== EVENTS ========== */\\n\\n\\tevent PoolParametersSet(\\n\\t\\tuint256 new_ceiling,\\n\\t\\tuint256 new_bonus_rate,\\n\\t\\tuint256 new_redemption_delay,\\n\\t\\tuint256 new_mint_fee,\\n\\t\\tuint256 new_redeem_fee,\\n\\t\\tuint256 new_buyback_fee,\\n\\t\\tuint256 new_recollat_fee\\n\\t);\\n\\tevent daoShareCollected(uint256 daoShare, address to);\\n\\tevent MintingToggled(bool toggled);\\n\\tevent RedeemingToggled(bool toggled);\\n\\tevent RecollateralizeToggled(bool toggled);\\n\\tevent BuybackToggled(bool toggled);\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0xc714b5aaa2c0b0b8129e279d395e924d1ea17699f830b64250af9127e6026d21\",\"license\":\"GPL-2.0-or-later\"},\"contracts/DEI/Pools/DEIPoolLibrary.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.8.0;\\n\\ncontract DEIPoolLibrary {\\n\\n // Constants for various precisions\\n uint256 private constant PRICE_PRECISION = 1e6;\\n\\n constructor() {}\\n\\n // ================ Structs ================\\n // Needed to lower stack size\\n struct MintFD_Params {\\n uint256 deus_price_usd; \\n uint256 col_price_usd;\\n uint256 collateral_amount;\\n uint256 col_ratio;\\n }\\n\\n struct BuybackDEUS_Params {\\n uint256 excess_collateral_dollar_value_d18;\\n uint256 deus_price_usd;\\n uint256 col_price_usd;\\n uint256 DEUS_amount;\\n }\\n\\n // ================ Functions ================\\n\\n function calcMint1t1DEI(uint256 col_price, uint256 collateral_amount_d18) public pure returns (uint256) {\\n return (collateral_amount_d18 * col_price) / (1e6);\\n }\\n\\n function calcMintAlgorithmicDEI(uint256 deus_price_usd, uint256 deus_amount_d18) public pure returns (uint256) {\\n return (deus_amount_d18 * deus_price_usd) / (1e6);\\n }\\n\\n function calcMintFractionalDEI(MintFD_Params memory params) public pure returns (uint256, uint256) {\\n // Since solidity truncates division, every division operation must be the last operation in the equation to ensure minimum error\\n // The contract must check the proper ratio was sent to mint DEI. We do this by seeing the minimum mintable DEI based on each amount \\n uint256 c_dollar_value_d18;\\n \\n // Scoping for stack concerns\\n { \\n // USD amounts of the collateral and the DEUS\\n c_dollar_value_d18 = (params.collateral_amount * params.col_price_usd) / (1e6);\\n\\n }\\n uint calculated_deus_dollar_value_d18 = ((c_dollar_value_d18 * (1e6)) / params.col_ratio) - c_dollar_value_d18;\\n\\n uint calculated_deus_needed = (calculated_deus_dollar_value_d18 * (1e6)) / params.deus_price_usd;\\n\\n return (\\n c_dollar_value_d18 + calculated_deus_dollar_value_d18,\\n calculated_deus_needed\\n );\\n }\\n\\n function calcRedeem1t1DEI(uint256 col_price_usd, uint256 DEI_amount) public pure returns (uint256) {\\n return (DEI_amount * (1e6)) / col_price_usd;\\n }\\n\\n function calcBuyBackDEUS(BuybackDEUS_Params memory params) public pure returns (uint256) {\\n // If the total collateral value is higher than the amount required at the current collateral ratio then buy back up to the possible DEUS with the desired collateral\\n require(params.excess_collateral_dollar_value_d18 > 0, \\\"No excess collateral to buy back!\\\");\\n\\n // Make sure not to take more than is available\\n uint256 deus_dollar_value_d18 = (params.DEUS_amount * (params.deus_price_usd)) / (1e6);\\n require(deus_dollar_value_d18 <= params.excess_collateral_dollar_value_d18, \\\"You are trying to buy back more than the excess!\\\");\\n\\n // Get the equivalent amount of collateral based on the market value of DEUS provided \\n uint256 collateral_equivalent_d18 = (deus_dollar_value_d18 * (1e6)) / params.col_price_usd;\\n //collateral_equivalent_d18 = collateral_equivalent_d18.sub((collateral_equivalent_d18.mul(params.buyback_fee)).div(1e6));\\n\\n return collateral_equivalent_d18;\\n\\n }\\n\\n\\n // Returns value of collateral that must increase to reach recollateralization target (if 0 means no recollateralization)\\n function recollateralizeAmount(uint256 total_supply, uint256 global_collateral_ratio, uint256 global_collat_value) public pure returns (uint256) {\\n uint256 target_collat_value = (total_supply * global_collateral_ratio) / (1e6); // We want 18 decimals of precision so divide by 1e6; total_supply is 1e18 and global_collateral_ratio is 1e6\\n // Subtract the current value of collateral from the target value needed, if higher than 0 then system needs to recollateralize\\n return target_collat_value - global_collat_value; // If recollateralization is not needed, throws a subtraction underflow\\n }\\n\\n function calcRecollateralizeDEIInner(\\n uint256 collateral_amount, \\n uint256 col_price,\\n uint256 global_collat_value,\\n uint256 dei_total_supply,\\n uint256 global_collateral_ratio\\n ) public pure returns (uint256, uint256) {\\n uint256 collat_value_attempted = (collateral_amount * col_price) / (1e6);\\n uint256 effective_collateral_ratio = (global_collat_value * (1e6)) / dei_total_supply; //returns it in 1e6\\n uint256 recollat_possible = (global_collateral_ratio * dei_total_supply - (dei_total_supply * effective_collateral_ratio)) / (1e6);\\n\\n uint256 amount_to_recollat;\\n if(collat_value_attempted <= recollat_possible){\\n amount_to_recollat = collat_value_attempted;\\n } else {\\n amount_to_recollat = recollat_possible;\\n }\\n\\n return ((amount_to_recollat * (1e6)) / col_price, amount_to_recollat);\\n\\n }\\n\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x6c2db8a8f39e018d8beb032c29cb86e4c99766669e511f328fa8faf0b173966a\",\"license\":\"GPL-2.0-or-later\"},\"contracts/DEUS/IDEUS.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\n\\ninterface IDEUSToken {\\n function name() external view returns (string memory);\\n function symbol() external view returns (string memory);\\n function pool_burn_from(address b_address, uint256 b_amount) external;\\n function pool_mint(address m_address, uint256 m_amount) external;\\n function mint(address to, uint256 amount) external;\\n function setDEIAddress(address dei_contract_address) external;\\n function setNameAndSymbol(string memory _name, string memory _symbol) external;\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x7be865a95630d427608efd14514c9875ed1a6d65e4b421eaf61c2d63f43b9eb7\",\"license\":\"GPL-2.0-or-later\"},\"contracts/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\n\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20Mintable}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * We have followed general OpenZeppelin guidelines: functions revert instead\\n * of returning `false` on failure. This behavior is nonetheless conventional\\n * and does not conflict with the expectations of ERC20 applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\n \\ncontract ERC20 is Context, IERC20 {\\n using SafeMath for uint256;\\n\\n mapping (address => uint256) private _balances;\\n\\n mapping (address => mapping (address => uint256)) private _allowances;\\n\\n uint256 private _totalSupply;\\n\\n string private _name;\\n string private _symbol;\\n uint8 private _decimals;\\n \\n /**\\n * @dev Sets the values for {name} and {symbol}, initializes {decimals} with\\n * a default value of 18.\\n *\\n * To select a different value for {decimals}, use {_setupDecimals}.\\n *\\n * All three of these values are immutable: they can only be set once during\\n * construction.\\n */\\n constructor (string memory __name, string memory __symbol) public {\\n _name = __name;\\n _symbol = __symbol;\\n _decimals = 18;\\n }\\n\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() public view returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev Returns the symbol of the token, usually a shorter version of the\\n * name.\\n */\\n function symbol() public view returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev Returns the number of decimals used to get its user representation.\\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\\n *\\n * Tokens usually opt for a value of 18, imitating the relationship between\\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\\n * called.\\n *\\n * NOTE: This information is only used for _display_ purposes: it in\\n * no way affects any of the arithmetic of the contract, including\\n * {IERC20-balanceOf} and {IERC20-transfer}.\\n */\\n function decimals() public view returns (uint8) {\\n return _decimals;\\n }\\n\\n /**\\n * @dev See {IERC20-totalSupply}.\\n */\\n function totalSupply() public view override returns (uint256) {\\n return _totalSupply;\\n }\\n\\n /**\\n * @dev See {IERC20-balanceOf}.\\n */\\n function balanceOf(address account) public view override returns (uint256) {\\n return _balances[account];\\n }\\n\\n /**\\n * @dev See {IERC20-transfer}.\\n *\\n * Requirements:\\n *\\n * - `recipient` cannot be the zero address.\\n * - the caller must have a balance of at least `amount`.\\n */\\n function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\\n _transfer(_msgSender(), recipient, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-allowance}.\\n */\\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n return _allowances[owner][spender];\\n }\\n\\n /**\\n * @dev See {IERC20-approve}.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.approve(address spender, uint256 amount)\\n */\\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n _approve(_msgSender(), spender, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-transferFrom}.\\n *\\n * Emits an {Approval} event indicating the updated allowance. This is not\\n * required by the EIP. See the note at the beginning of {ERC20};\\n *\\n * Requirements:\\n * - `sender` and `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n * - the caller must have allowance for `sender`'s tokens of at least\\n * `amount`.\\n */\\n function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {\\n _transfer(sender, recipient, amount);\\n _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \\\"ERC20: transfer amount exceeds allowance\\\"));\\n return true;\\n }\\n\\n /**\\n * @dev Atomically increases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\\n return true;\\n }\\n\\n /**\\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `spender` must have allowance for the caller of at least\\n * `subtractedValue`.\\n */\\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \\\"ERC20: decreased allowance below zero\\\"));\\n return true;\\n }\\n\\n /**\\n * @dev Moves tokens `amount` from `sender` to `recipient`.\\n *\\n * This is internal function is equivalent to {transfer}, and can be used to\\n * e.g. implement automatic token fees, slashing mechanisms, etc.\\n *\\n * Emits a {Transfer} event.\\n *\\n * Requirements:\\n *\\n * - `sender` cannot be the zero address.\\n * - `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n */\\n function _transfer(address sender, address recipient, uint256 amount) internal virtual {\\n require(sender != address(0), \\\"ERC20: transfer from the zero address\\\");\\n require(recipient != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(sender, recipient, amount);\\n\\n _balances[sender] = _balances[sender].sub(amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n _balances[recipient] = _balances[recipient].add(amount);\\n emit Transfer(sender, recipient, amount);\\n }\\n\\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n * the total supply.\\n *\\n * Emits a {Transfer} event with `from` set to the zero address.\\n *\\n * Requirements\\n *\\n * - `to` cannot be the zero address.\\n */\\n function _mint(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n _beforeTokenTransfer(address(0), account, amount);\\n\\n _totalSupply = _totalSupply.add(amount);\\n _balances[account] = _balances[account].add(amount);\\n emit Transfer(address(0), account, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from the caller.\\n *\\n * See {ERC20-_burn}.\\n */\\n function burn(uint256 amount) public virtual {\\n _burn(_msgSender(), amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, deducting from the caller's\\n * allowance.\\n *\\n * See {ERC20-_burn} and {ERC20-allowance}.\\n *\\n * Requirements:\\n *\\n * - the caller must have allowance for `accounts`'s tokens of at least\\n * `amount`.\\n */\\n function burnFrom(address account, uint256 amount) public virtual {\\n uint256 decreasedAllowance = allowance(account, _msgSender()).sub(amount, \\\"ERC20: burn amount exceeds allowance\\\");\\n\\n _approve(account, _msgSender(), decreasedAllowance);\\n _burn(account, amount);\\n }\\n\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, reducing the\\n * total supply.\\n *\\n * Emits a {Transfer} event with `to` set to the zero address.\\n *\\n * Requirements\\n *\\n * - `account` cannot be the zero address.\\n * - `account` must have at least `amount` tokens.\\n */\\n function _burn(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n _beforeTokenTransfer(account, address(0), amount);\\n\\n _balances[account] = _balances[account].sub(amount, \\\"ERC20: burn amount exceeds balance\\\");\\n _totalSupply = _totalSupply.sub(amount);\\n emit Transfer(account, address(0), amount);\\n }\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\\n *\\n * This is internal function is equivalent to `approve`, and can be used to\\n * e.g. set automatic allowances for certain subsystems, etc.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `owner` cannot be the zero address.\\n * - `spender` cannot be the zero address.\\n */\\n function _approve(address owner, address spender, uint256 amount) internal virtual {\\n require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n _allowances[owner][spender] = amount;\\n emit Approval(owner, spender, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`.`amount` is then deducted\\n * from the caller's allowance.\\n *\\n * See {_burn} and {_approve}.\\n */\\n function _burnFrom(address account, uint256 amount) internal virtual {\\n _burn(account, amount);\\n _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, \\\"ERC20: burn amount exceeds allowance\\\"));\\n }\\n\\n /**\\n * @dev Hook that is called before any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of `from`'s tokens\\n * will be to transferred to `to`.\\n * - when `from` is zero, `amount` tokens will be minted for `to`.\\n * - when `to` is zero, `amount` of `from`'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:using-hooks.adoc[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }\\n}\\n\",\"keccak256\":\"0x433b9ee195d0bd257219bc337ff8aac624282a826726b18fdb299de0e3d4149e\",\"license\":\"MIT\"},\"contracts/ERC20/ERC20Custom.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\n\\n// Due to compiling issues, _name, _symbol, and _decimals were removed\\n\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20Mintable}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * We have followed general OpenZeppelin guidelines: functions revert instead\\n * of returning `false` on failure. This behavior is nonetheless conventional\\n * and does not conflict with the expectations of ERC20 applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\ncontract ERC20Custom is Context, IERC20 {\\n using SafeMath for uint256;\\n\\n mapping (address => uint256) internal _balances;\\n\\n mapping (address => mapping (address => uint256)) internal _allowances;\\n\\n uint256 private _totalSupply;\\n\\n /**\\n * @dev See {IERC20-totalSupply}.\\n */\\n function totalSupply() public view override returns (uint256) {\\n return _totalSupply;\\n }\\n\\n /**\\n * @dev See {IERC20-balanceOf}.\\n */\\n function balanceOf(address account) public view override returns (uint256) {\\n return _balances[account];\\n }\\n\\n /**\\n * @dev See {IERC20-transfer}.\\n *\\n * Requirements:\\n *\\n * - `recipient` cannot be the zero address.\\n * - the caller must have a balance of at least `amount`.\\n */\\n function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\\n _transfer(_msgSender(), recipient, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-allowance}.\\n */\\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n return _allowances[owner][spender];\\n }\\n\\n /**\\n * @dev See {IERC20-approve}.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.approve(address spender, uint256 amount)\\n */\\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n _approve(_msgSender(), spender, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-transferFrom}.\\n *\\n * Emits an {Approval} event indicating the updated allowance. This is not\\n * required by the EIP. See the note at the beginning of {ERC20};\\n *\\n * Requirements:\\n * - `sender` and `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n * - the caller must have allowance for `sender`'s tokens of at least\\n * `amount`.\\n */\\n function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {\\n _transfer(sender, recipient, amount);\\n _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \\\"ERC20: transfer amount exceeds allowance\\\"));\\n return true;\\n }\\n\\n /**\\n * @dev Atomically increases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\\n return true;\\n }\\n\\n /**\\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `spender` must have allowance for the caller of at least\\n * `subtractedValue`.\\n */\\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \\\"ERC20: decreased allowance below zero\\\"));\\n return true;\\n }\\n\\n /**\\n * @dev Moves tokens `amount` from `sender` to `recipient`.\\n *\\n * This is internal function is equivalent to {transfer}, and can be used to\\n * e.g. implement automatic token fees, slashing mechanisms, etc.\\n *\\n * Emits a {Transfer} event.\\n *\\n * Requirements:\\n *\\n * - `sender` cannot be the zero address.\\n * - `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n */\\n function _transfer(address sender, address recipient, uint256 amount) internal virtual {\\n require(sender != address(0), \\\"ERC20: transfer from the zero address\\\");\\n require(recipient != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(sender, recipient, amount);\\n\\n _balances[sender] = _balances[sender].sub(amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n _balances[recipient] = _balances[recipient].add(amount);\\n emit Transfer(sender, recipient, amount);\\n }\\n\\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n * the total supply.\\n *\\n * Emits a {Transfer} event with `from` set to the zero address.\\n *\\n * Requirements\\n *\\n * - `to` cannot be the zero address.\\n */\\n function _mint(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n _beforeTokenTransfer(address(0), account, amount);\\n\\n _totalSupply = _totalSupply.add(amount);\\n _balances[account] = _balances[account].add(amount);\\n emit Transfer(address(0), account, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from the caller.\\n *\\n * See {ERC20-_burn}.\\n */\\n function burn(uint256 amount) public virtual {\\n _burn(_msgSender(), amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, deducting from the caller's\\n * allowance.\\n *\\n * See {ERC20-_burn} and {ERC20-allowance}.\\n *\\n * Requirements:\\n *\\n * - the caller must have allowance for `accounts`'s tokens of at least\\n * `amount`.\\n */\\n function burnFrom(address account, uint256 amount) public virtual {\\n uint256 decreasedAllowance = allowance(account, _msgSender()).sub(amount, \\\"ERC20: burn amount exceeds allowance\\\");\\n\\n _approve(account, _msgSender(), decreasedAllowance);\\n _burn(account, amount);\\n }\\n\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, reducing the\\n * total supply.\\n *\\n * Emits a {Transfer} event with `to` set to the zero address.\\n *\\n * Requirements\\n *\\n * - `account` cannot be the zero address.\\n * - `account` must have at least `amount` tokens.\\n */\\n function _burn(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n _beforeTokenTransfer(account, address(0), amount);\\n\\n _balances[account] = _balances[account].sub(amount, \\\"ERC20: burn amount exceeds balance\\\");\\n _totalSupply = _totalSupply.sub(amount);\\n emit Transfer(account, address(0), amount);\\n }\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\\n *\\n * This is internal function is equivalent to `approve`, and can be used to\\n * e.g. set automatic allowances for certain subsystems, etc.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `owner` cannot be the zero address.\\n * - `spender` cannot be the zero address.\\n */\\n function _approve(address owner, address spender, uint256 amount) internal virtual {\\n require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n _allowances[owner][spender] = amount;\\n emit Approval(owner, spender, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`.`amount` is then deducted\\n * from the caller's allowance.\\n *\\n * See {_burn} and {_approve}.\\n */\\n function _burnFrom(address account, uint256 amount) internal virtual {\\n _burn(account, amount);\\n _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, \\\"ERC20: burn amount exceeds allowance\\\"));\\n }\\n\\n /**\\n * @dev Hook that is called before any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of `from`'s tokens\\n * will be to transferred to `to`.\\n * - when `from` is zero, `amount` tokens will be minted for `to`.\\n * - when `to` is zero, `amount` of `from`'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:using-hooks.adoc[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }\\n}\",\"keccak256\":\"0xff03c1b74f9769a972c7a45f1876f8d14f02692d6994e23a2e61cb7b47f2dcc7\",\"license\":\"MIT\"},\"contracts/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {ERC20Detailed}.\\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\\n\",\"keccak256\":\"0x057bec1fafd7ca222117f41fcfb9c8dc1f61aa30e5a0222c981196e9113de7e6\",\"license\":\"MIT\"},\"contracts/ERC20/draft-ERC20Permit.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./ERC20Custom.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Counters.sol\\\";\\n\\n/**\\n * @dev Implementation 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 *\\n * _Available since v3.4._\\n */\\nabstract contract ERC20Permit is ERC20Custom, IERC20Permit, EIP712 {\\n using Counters for Counters.Counter;\\n\\n mapping(address => Counters.Counter) private _nonces;\\n\\n // solhint-disable-next-line var-name-mixedcase\\n bytes32 private immutable _PERMIT_TYPEHASH = keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\");\\n\\n /**\\n * @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\\\"1\\\"`.\\n *\\n * It's a good idea to use the same `name` that is defined as the ERC20 token name.\\n */\\n constructor(string memory name) EIP712(name, \\\"1\\\") {}\\n\\n /**\\n * @dev See {IERC20Permit-permit}.\\n */\\n function permit(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) public virtual override {\\n require(block.timestamp <= deadline, \\\"ERC20Permit: expired deadline\\\");\\n\\n bytes32 structHash = keccak256(abi.encode(_PERMIT_TYPEHASH, owner, spender, value, _useNonce(owner), deadline));\\n\\n bytes32 hash = _hashTypedDataV4(structHash);\\n\\n address signer = ECDSA.recover(hash, v, r, s);\\n require(signer == owner, \\\"ERC20Permit: invalid signature\\\");\\n\\n _approve(owner, spender, value);\\n }\\n\\n /**\\n * @dev See {IERC20Permit-nonces}.\\n */\\n function nonces(address owner) public view virtual override returns (uint256) {\\n return _nonces[owner].current();\\n }\\n\\n /**\\n * @dev See {IERC20Permit-DOMAIN_SEPARATOR}.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view override returns (bytes32) {\\n return _domainSeparatorV4();\\n }\\n\\n /**\\n * @dev \\\"Consume a nonce\\\": return the current value and increment.\\n *\\n * _Available since v4.1._\\n */\\n function _useNonce(address owner) internal virtual returns (uint256 current) {\\n Counters.Counter storage nonce = _nonces[owner];\\n current = nonce.current();\\n nonce.increment();\\n }\\n}\\n\",\"keccak256\":\"0xefbc2b0babe05f093cd2aae981fb80413601ffa53704fad7376cbdd14ee6d0ab\",\"license\":\"MIT\"},\"contracts/Governance/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Utils/EnumerableSet.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\nimport \\\"../Common/Context.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it.\\n */\\nabstract contract AccessControl is Context {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n using Address for address;\\n\\n struct RoleData {\\n EnumerableSet.AddressSet members;\\n bytes32 adminRole;\\n }\\n\\n mapping (bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; //bytes32(uint256(0x4B437D01b575618140442A4975db38850e3f8f5f) << 96);\\n\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view returns (bool) {\\n return _roles[role].members.contains(account);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view returns (uint256) {\\n return _roles[role].members.length();\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view returns (address) {\\n return _roles[role].members.at(index);\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to grant\\\");\\n\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to revoke\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) public virtual {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);\\n _roles[role].adminRole = adminRole;\\n }\\n\\n function _grantRole(bytes32 role, address account) private {\\n if (_roles[role].members.add(account)) {\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n function _revokeRole(bytes32 role, address account) private {\\n if (_roles[role].members.remove(account)) {\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x749b2c0e515a59c6d03cf4908a252ebc5d2b482ca3fd7ec997d1143c302f4e89\",\"license\":\"MIT\"},\"contracts/Math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a >= b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow, so we distribute\\n return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);\\n }\\n\\n // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)\\n function sqrt(uint y) internal pure returns (uint z) {\\n if (y > 3) {\\n z = y;\\n uint x = y / 2 + 1;\\n while (x < z) {\\n z = x;\\n x = (y / x + x) / 2;\\n }\\n } else if (y != 0) {\\n z = 1;\\n }\\n }\\n}\",\"keccak256\":\"0x62bc6e8ee2764351c70251d50f023f15a87b6e9e31fe64e344c33a2580982dda\",\"license\":\"MIT\"},\"contracts/Math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\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\\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 * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\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 * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\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 * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (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) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts 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 * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts 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 * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\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}\",\"keccak256\":\"0x43a20f7cf4c4319f81450d53779455e88a7ab80bdfc43925156ed4083b74a180\",\"license\":\"MIT\"},\"contracts/Oracle/Oracle.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\npragma solidity >=0.6.12;\\n\\nimport \\\"../Governance/AccessControl.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\\\";\\n\\ncontract Oracle is AccessControl {\\n\\tusing ECDSA for bytes32;\\n\\n\\t// role\\n\\tbytes32 public constant ORACLE_ROLE = keccak256(\\\"ORACLE_ROLE\\\");\\n\\tbytes32 public constant TRUSTY_ROLE = keccak256(\\\"TRUSTY_ROLE\\\");\\n\\n\\tuint256 minimumRequiredSignature;\\n\\n\\tevent MinimumRequiredSignatureSet(uint256 minimumRequiredSignature);\\n\\n\\tconstructor(address _admin, uint256 _minimumRequiredSignature, address _trusty_address) {\\n\\t\\trequire(_admin != address(0), \\\"ORACLE::constructor: Zero address detected\\\");\\n\\t\\t_setupRole(DEFAULT_ADMIN_ROLE, _admin);\\n\\t\\t_setupRole(TRUSTY_ROLE, _trusty_address);\\n\\t\\tminimumRequiredSignature = _minimumRequiredSignature;\\n\\t}\\n\\n\\tfunction verify(bytes32 hash, bytes[] calldata sigs)\\n\\t\\tpublic\\n\\t\\tview\\n\\t\\treturns (bool)\\n\\t{\\n\\t\\taddress lastOracle;\\n\\t\\tfor (uint256 index = 0; index < minimumRequiredSignature; ++index) {\\n\\t\\t\\taddress oracle = hash.recover(sigs[index]);\\n\\t\\t\\trequire(hasRole(ORACLE_ROLE, oracle), \\\"ORACLE::verify: Signer is not valid\\\");\\n\\t\\t\\trequire(oracle > lastOracle, \\\"ORACLE::verify: Signers are same\\\");\\n\\t\\t\\tlastOracle = oracle;\\n\\t\\t}\\n\\t\\treturn true;\\n\\t}\\n\\n\\tfunction setMinimumRequiredSignature(uint256 _minimumRequiredSignature)\\n\\t\\tpublic\\n\\t{\\n\\t\\trequire(\\n\\t\\t\\thasRole(TRUSTY_ROLE, msg.sender),\\n\\t\\t\\t\\\"ORACLE::setMinimumRequiredSignature: You are not trusty\\\"\\n\\t\\t);\\n\\t\\tminimumRequiredSignature = _minimumRequiredSignature;\\n\\n\\t\\temit MinimumRequiredSignatureSet(_minimumRequiredSignature);\\n\\t}\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x41a5379335f10262e64227d706b47f2b7f700ce738a5545d6af07a041b7d6267\"},\"contracts/Oracle/ReserveTracker.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity ^0.8.7;\\n\\n// =================================================================================================================\\n// _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| |\\n// _| _| _| _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| |\\n// _| _| _|_|_| _| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_|_|_| |\\n// _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| |\\n// _|_|_| _|_|_|_| _|_| _|_|_| _| _| _| _| _|_|_| _| _| _|_|_| _|_|_| | \\n// =================================================================================================================\\n// ====================================================================\\n// =========================== ReserveTracker =========================\\n// ====================================================================\\n// Deus Finance: https://github.com/DeusFinance\\n\\n// Primary Author(s)\\n// Jason Huan: https://github.com/jasonhuan\\n// Sam Kazemian: https://github.com/samkazemian\\n// Vahid: https://github.com/vahid-dev\\n// SAYaghoubnejad: https://github.com/SAYaghoubnejad\\n\\n// Reviewer(s) / Contributor(s)\\n// Travis Moore: https://github.com/FortisFortuna\\n\\nimport \\\"../Math/SafeMath.sol\\\";\\nimport \\\"../Math/Math.sol\\\";\\nimport \\\"../Uniswap/Interfaces/IUniswapV2Pair.sol\\\";\\nimport \\\"../Governance/AccessControl.sol\\\";\\n\\ncontract ReserveTracker is AccessControl {\\n\\n\\t// Roles\\n bytes32 public constant TRUSTY_ROLE = keccak256(\\\"TRUSTY_ROLE\\\");\\n\\n\\t// Various precisions\\n\\tuint256 private PRICE_PRECISION = 1e6;\\n\\n\\t// Contract addresses\\n\\taddress private dei_contract_address;\\n\\taddress private deus_contract_address;\\n\\n\\t// Array of pairs for DEUS\\n\\taddress[] public deus_pairs_array;\\n\\n\\t// Mapping is also used for faster verification\\n\\tmapping(address => bool) public deus_pairs;\\n\\n\\t// ========== MODIFIERS ==========\\n\\n\\tmodifier onlyTrusty() {\\n\\t\\trequire(hasRole(TRUSTY_ROLE, msg.sender), \\\"Caller is not trusty\\\");\\n\\t\\t_;\\n\\t}\\n\\n\\t// ========== CONSTRUCTOR ==========\\n\\n\\tconstructor(\\n\\t\\taddress _dei_contract_address,\\n\\t\\taddress _deus_contract_address\\n\\t) {\\n\\t\\tdei_contract_address = _dei_contract_address;\\n\\t\\tdeus_contract_address = _deus_contract_address;\\n\\t\\t_setupRole(DEFAULT_ADMIN_ROLE, msg.sender);\\n\\t\\t_setupRole(TRUSTY_ROLE, msg.sender);\\n\\t}\\n\\n\\t// ========== VIEWS ==========\\n\\n\\tfunction getDEUSReserves() public view returns (uint256) {\\n\\t\\tuint256 total_deus_reserves = 0;\\n\\n\\t\\tfor (uint i = 0; i < deus_pairs_array.length; i++){ \\n\\t\\t\\t// Exclude null addresses\\n\\t\\t\\tif (deus_pairs_array[i] != address(0)){\\n\\t\\t\\t\\tif(IUniswapV2Pair(deus_pairs_array[i]).token0() == deus_contract_address) {\\n\\t\\t\\t\\t\\t(uint reserves0, , ) = IUniswapV2Pair(deus_pairs_array[i]).getReserves();\\n\\t\\t\\t\\t\\ttotal_deus_reserves = total_deus_reserves + reserves0;\\n\\t\\t\\t\\t} else if (IUniswapV2Pair(deus_pairs_array[i]).token1() == deus_contract_address) {\\n\\t\\t\\t\\t\\t( , uint reserves1, ) = IUniswapV2Pair(deus_pairs_array[i]).getReserves();\\n\\t\\t\\t\\t\\ttotal_deus_reserves = total_deus_reserves + reserves1;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn total_deus_reserves;\\n\\t}\\n\\n\\t// Adds collateral addresses supported, such as tether and busd, must be ERC20 \\n\\tfunction addDEUSPair(address pair_address) public onlyTrusty {\\n\\t\\trequire(deus_pairs[pair_address] == false, \\\"Address already exists\\\");\\n\\t\\tdeus_pairs[pair_address] = true; \\n\\t\\tdeus_pairs_array.push(pair_address);\\n\\t}\\n\\n\\t// Remove a pool \\n\\tfunction removeDEUSPair(address pair_address) public onlyTrusty {\\n\\t\\trequire(deus_pairs[pair_address] == true, \\\"Address nonexistant\\\");\\n\\t\\t\\n\\t\\t// Delete from the mapping\\n\\t\\tdelete deus_pairs[pair_address];\\n\\n\\t\\t// 'Delete' from the array by setting the address to 0x0\\n\\t\\tfor (uint i = 0; i < deus_pairs_array.length; i++){ \\n\\t\\t\\tif (deus_pairs_array[i] == pair_address) {\\n\\t\\t\\t\\tdeus_pairs_array[i] = address(0); // This will leave a null in the array and keep the indices the same\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x0cb0ee2ef0b994507122329c8b1a48ee75a199e8e8235cc3cdfde95c898a5a6c\",\"license\":\"GPL-2.0-or-later\"},\"contracts/Uniswap/Interfaces/IUniswapV2Pair.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ninterface IUniswapV2Pair {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external pure returns (string memory);\\n function symbol() external pure returns (string memory);\\n function decimals() external pure returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n function PERMIT_TYPEHASH() external pure returns (bytes32);\\n function nonces(address owner) external view returns (uint);\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\\n\\n event Mint(address indexed sender, uint amount0, uint amount1);\\n event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\\n event Swap(\\n address indexed sender,\\n uint amount0In,\\n uint amount1In,\\n uint amount0Out,\\n uint amount1Out,\\n address indexed to\\n );\\n event Sync(uint112 reserve0, uint112 reserve1);\\n\\n function MINIMUM_LIQUIDITY() external pure returns (uint);\\n function factory() external view returns (address);\\n function token0() external view returns (address);\\n function token1() external view returns (address);\\n function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\\n function price0CumulativeLast() external view returns (uint);\\n function price1CumulativeLast() external view returns (uint);\\n function kLast() external view returns (uint);\\n\\n function mint(address to) external returns (uint liquidity);\\n function burn(address to) external returns (uint amount0, uint amount1);\\n function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;\\n function skim(address to) external;\\n function sync() external;\\n\\n function initialize(address, address) external; \\n}\\n\",\"keccak256\":\"0x2509844ce3a43ce31165e4101700ab13e95f267a2cae4a2a88ea1ebb5a50513d\",\"license\":\"MIT\"},\"contracts/Uniswap/TransferHelper.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\n// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false\\nlibrary TransferHelper {\\n function safeApprove(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('approve(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');\\n }\\n\\n function safeTransfer(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transfer(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');\\n }\\n\\n function safeTransferFrom(address token, address from, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');\\n }\\n\\n function safeTransferETH(address to, uint value) internal {\\n (bool success,) = to.call{value:value}(new bytes(0));\\n require(success, 'TransferHelper: ETH_TRANSFER_FAILED');\\n }\\n}\",\"keccak256\":\"0x2eb33792741584e83e0794a7493335b5dce9a9b675dda9e647ce29d88a40a196\",\"license\":\"MIT\"},\"contracts/Utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11 <0.9.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}\",\"keccak256\":\"0xe392046e85c78eea7d4c1237af52a5fc06c097b7a480ea4f20159670b4a582a4\",\"license\":\"MIT\"},\"contracts/Utils/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\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.0.0, only sets of type `address` (`AddressSet`) and `uint256`\\n * (`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 // 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(bytes20(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(bytes20(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(bytes20(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(bytes20(_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\",\"keccak256\":\"0x685f4133ba76f930e3761c1d1414d7f6e55dd40d58b4b210cb392662a6cbd27d\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 4937, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 4943, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))" + }, + { + "astId": 4945, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256" + }, + { + "astId": 5851, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "_nonces", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_address,t_struct(Counter)41_storage)" + }, + { + "astId": 6023, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "_roles", + "offset": 0, + "slot": "4", + "type": "t_mapping(t_bytes32,t_struct(RoleData)6018_storage)" + }, + { + "astId": 472, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "symbol", + "offset": 0, + "slot": "5", + "type": "t_string_storage" + }, + { + "astId": 474, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "name", + "offset": 0, + "slot": "6", + "type": "t_string_storage" + }, + { + "astId": 479, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "oracle", + "offset": 0, + "slot": "7", + "type": "t_address" + }, + { + "astId": 481, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "deus_address", + "offset": 0, + "slot": "8", + "type": "t_address" + }, + { + "astId": 486, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "reserve_tracker_address", + "offset": 0, + "slot": "9", + "type": "t_address" + }, + { + "astId": 489, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "dei_pools_array", + "offset": 0, + "slot": "10", + "type": "t_array(t_address)dyn_storage" + }, + { + "astId": 493, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "dei_pools", + "offset": 0, + "slot": "11", + "type": "t_mapping(t_address,t_bool)" + }, + { + "astId": 498, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "global_collateral_ratio", + "offset": 0, + "slot": "12", + "type": "t_uint256" + }, + { + "astId": 500, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "dei_step", + "offset": 0, + "slot": "13", + "type": "t_uint256" + }, + { + "astId": 502, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "refresh_cooldown", + "offset": 0, + "slot": "14", + "type": "t_uint256" + }, + { + "astId": 515, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "collateral_ratio_paused", + "offset": 0, + "slot": "15", + "type": "t_bool" + }, + { + "astId": 517, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "growth_ratio", + "offset": 0, + "slot": "16", + "type": "t_uint256" + }, + { + "astId": 519, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "GR_top_band", + "offset": 0, + "slot": "17", + "type": "t_uint256" + }, + { + "astId": 521, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "GR_bottom_band", + "offset": 0, + "slot": "18", + "type": "t_uint256" + }, + { + "astId": 523, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "DEI_top_band", + "offset": 0, + "slot": "19", + "type": "t_uint256" + }, + { + "astId": 525, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "DEI_bottom_band", + "offset": 0, + "slot": "20", + "type": "t_uint256" + }, + { + "astId": 527, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "use_growth_ratio", + "offset": 0, + "slot": "21", + "type": "t_bool" + }, + { + "astId": 529, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "DIP", + "offset": 1, + "slot": "21", + "type": "t_bool" + }, + { + "astId": 736, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "last_call_time", + "offset": 0, + "slot": "22", + "type": "t_uint256" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "base": "t_address", + "encoding": "dynamic_array", + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_bytes32)dyn_storage": { + "base": "t_bytes32", + "encoding": "dynamic_array", + "label": "bytes32[]", + "numberOfBytes": "32" + }, + "t_bool": { + "encoding": "inplace", + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "encoding": "inplace", + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_bool)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => bool)", + "numberOfBytes": "32", + "value": "t_bool" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32", + "value": "t_mapping(t_address,t_uint256)" + }, + "t_mapping(t_address,t_struct(Counter)41_storage)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => struct Counters.Counter)", + "numberOfBytes": "32", + "value": "t_struct(Counter)41_storage" + }, + "t_mapping(t_address,t_uint256)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_mapping(t_bytes32,t_struct(RoleData)6018_storage)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => struct AccessControl.RoleData)", + "numberOfBytes": "32", + "value": "t_struct(RoleData)6018_storage" + }, + "t_mapping(t_bytes32,t_uint256)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_string_storage": { + "encoding": "bytes", + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressSet)11740_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.AddressSet", + "members": [ + { + "astId": 11739, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "_inner", + "offset": 0, + "slot": "0", + "type": "t_struct(Set)11554_storage" + } + ], + "numberOfBytes": "64" + }, + "t_struct(Counter)41_storage": { + "encoding": "inplace", + "label": "struct Counters.Counter", + "members": [ + { + "astId": 40, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "_value", + "offset": 0, + "slot": "0", + "type": "t_uint256" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)6018_storage": { + "encoding": "inplace", + "label": "struct AccessControl.RoleData", + "members": [ + { + "astId": 6015, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "members", + "offset": 0, + "slot": "0", + "type": "t_struct(AddressSet)11740_storage" + }, + { + "astId": 6017, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "adminRole", + "offset": 0, + "slot": "2", + "type": "t_bytes32" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Set)11554_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.Set", + "members": [ + { + "astId": 11549, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "_values", + "offset": 0, + "slot": "0", + "type": "t_array(t_bytes32)dyn_storage" + }, + { + "astId": 11553, + "contract": "contracts/DEI/DEI.sol:DEIStablecoin", + "label": "_indexes", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ], + "numberOfBytes": "64" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/DEI/IDEI.sol": { + "IDEIStablecoin": { + "abi": [ + { + "inputs": [ + { + "internalType": "bool", + "name": "_activate", + "type": "bool" + } + ], + "name": "activateDIP", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pool_address", + "type": "address" + } + ], + "name": "addPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "collat_usd_price", + "type": "uint256[]" + } + ], + "name": "dei_info", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_address", + "type": "address" + } + ], + "name": "dei_pools", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "dei_pools_array", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getChainID", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "collat_usd_price", + "type": "uint256[]" + } + ], + "name": "globalCollateralValue", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "global_collateral_ratio", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "b_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "b_amount", + "type": "uint256" + } + ], + "name": "pool_burn_from", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "m_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "m_amount", + "type": "uint256" + } + ], + "name": "pool_mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deus_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "dei_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expire_block", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "refreshCollateralRatio", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pool_address", + "type": "address" + } + ], + "name": "removePool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_new_step", + "type": "uint256" + } + ], + "name": "setDEIStep", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_deus_address", + "type": "address" + } + ], + "name": "setDEUSAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_GR_top_band", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_GR_bottom_band", + "type": "uint256" + } + ], + "name": "setGrowthRatioBands", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + } + ], + "name": "setNameAndSymbol", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_oracle", + "type": "address" + } + ], + "name": "setOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_top_band", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_bottom_band", + "type": "uint256" + } + ], + "name": "setPriceBands", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_new_cooldown", + "type": "uint256" + } + ], + "name": "setRefreshCooldown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_reserve_tracker_address", + "type": "address" + } + ], + "name": "setReserveTracker", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "toggleCollateralRatio", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_use_growth_ratio", + "type": "bool" + } + ], + "name": "useGrowthRatio", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "sighash", + "type": "bytes32" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "verify_price", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "activateDIP(bool)": "0c0a25aa", + "addPool(address)": "d914cd4b", + "dei_info(uint256[])": "ae773029", + "dei_pools(address)": "15ea919c", + "dei_pools_array()": "ee74e473", + "getChainID()": "564b81ef", + "globalCollateralValue(uint256[])": "2480fcea", + "global_collateral_ratio()": "2eb9771b", + "name()": "06fdde03", + "pool_burn_from(address,uint256)": "a8a778ae", + "pool_mint(address,uint256)": "b4f56b26", + "refreshCollateralRatio(uint256,uint256,uint256,bytes[])": "ab3d1bb6", + "removePool(address)": "3b7d0946", + "setDEIStep(uint256)": "597bf738", + "setDEUSAddress(address)": "aee06a5e", + "setGrowthRatioBands(uint256,uint256)": "a085ea7c", + "setNameAndSymbol(string,string)": "5a446215", + "setOracle(address)": "7adbf973", + "setPriceBands(uint256,uint256)": "a6959f0f", + "setRefreshCooldown(uint256)": "1c5df1e5", + "setReserveTracker(address)": "11af9a4b", + "symbol()": "95d89b41", + "toggleCollateralRatio()": "bef40ec8", + "totalSupply()": "18160ddd", + "useGrowthRatio(bool)": "2b75ab08", + "verify_price(bytes32,bytes[])": "6793f0ac" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_activate\",\"type\":\"bool\"}],\"name\":\"activateDIP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool_address\",\"type\":\"address\"}],\"name\":\"addPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"collat_usd_price\",\"type\":\"uint256[]\"}],\"name\":\"dei_info\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"dei_pools\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dei_pools_array\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"collat_usd_price\",\"type\":\"uint256[]\"}],\"name\":\"globalCollateralValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"global_collateral_ratio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"b_address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"b_amount\",\"type\":\"uint256\"}],\"name\":\"pool_burn_from\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"m_address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m_amount\",\"type\":\"uint256\"}],\"name\":\"pool_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deus_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dei_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expire_block\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"refreshCollateralRatio\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool_address\",\"type\":\"address\"}],\"name\":\"removePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_new_step\",\"type\":\"uint256\"}],\"name\":\"setDEIStep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_deus_address\",\"type\":\"address\"}],\"name\":\"setDEUSAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_GR_top_band\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_GR_bottom_band\",\"type\":\"uint256\"}],\"name\":\"setGrowthRatioBands\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"setNameAndSymbol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oracle\",\"type\":\"address\"}],\"name\":\"setOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_top_band\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bottom_band\",\"type\":\"uint256\"}],\"name\":\"setPriceBands\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_new_cooldown\",\"type\":\"uint256\"}],\"name\":\"setRefreshCooldown\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve_tracker_address\",\"type\":\"address\"}],\"name\":\"setReserveTracker\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleCollateralRatio\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_use_growth_ratio\",\"type\":\"bool\"}],\"name\":\"useGrowthRatio\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sighash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"verify_price\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/DEI/IDEI.sol\":\"IDEIStablecoin\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/DEI/IDEI.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\n\\ninterface IDEIStablecoin {\\n function name() external view returns (string memory);\\n function symbol() external view returns (string memory);\\n function totalSupply() external view returns (uint256);\\n function global_collateral_ratio() external view returns (uint256);\\n function dei_pools(address _address) external view returns (bool);\\n function dei_pools_array() external view returns (address[] memory);\\n function verify_price(bytes32 sighash, bytes[] calldata sigs) external view returns (bool);\\n function dei_info(uint256[] memory collat_usd_price) external view returns (uint256, uint256, uint256);\\n function getChainID() external view returns (uint256);\\n function globalCollateralValue(uint256[] memory collat_usd_price) external view returns (uint256);\\n function refreshCollateralRatio(uint deus_price, uint dei_price, uint256 expire_block, bytes[] calldata sigs) external;\\n function useGrowthRatio(bool _use_growth_ratio) external;\\n function setGrowthRatioBands(uint256 _GR_top_band, uint256 _GR_bottom_band) external;\\n function setPriceBands(uint256 _top_band, uint256 _bottom_band) external;\\n function activateDIP(bool _activate) external;\\n function pool_burn_from(address b_address, uint256 b_amount) external;\\n function pool_mint(address m_address, uint256 m_amount) external;\\n function addPool(address pool_address) external;\\n function removePool(address pool_address) external;\\n function setNameAndSymbol(string memory _name, string memory _symbol) external;\\n function setOracle(address _oracle) external;\\n function setDEIStep(uint256 _new_step) external;\\n function setReserveTracker(address _reserve_tracker_address) external;\\n function setRefreshCooldown(uint256 _new_cooldown) external;\\n function setDEUSAddress(address _deus_address) external;\\n function toggleCollateralRatio() external;\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x0c16e210870801fd11bac76f0cddbe1f61b19f18eb75a648144da3cba5f5f035\",\"license\":\"GPL-2.0-or-later\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/DEI/Pools/DEIPool.sol": { + "DEIPool": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_dei_contract_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_deus_contract_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_collateral_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_trusty_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_admin_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_pool_ceiling", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_library", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "BuybackToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "MintingToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "new_ceiling", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_bonus_rate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_redemption_delay", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_mint_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_redeem_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_buyback_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_recollat_fee", + "type": "uint256" + } + ], + "name": "PoolParametersSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "RecollateralizeToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "RedeemingToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "daoShare", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "daoShareCollected", + "type": "event" + }, + { + "inputs": [], + "name": "DAO_SHARE_COLLECTOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PARAMETER_SETTER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TRUSTY_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "collat_usd_price", + "type": "uint256[]" + } + ], + "name": "availableExcessCollatDV", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bonus_rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEUS_amount", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "collateral_price", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "buyBackDEUS", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "buyBackPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "buyback_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collat_usd_price", + "type": "uint256" + } + ], + "name": "collatDollarBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "collectDaoShare", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "collectRedemption", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "daoShare", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "emergencyWithdrawERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getChainID", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "lastRedeemed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mint1t1DEI", + "outputs": [ + { + "internalType": "uint256", + "name": "dei_amount_d18", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deus_amount_d18", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mintAlgorithmicDEI", + "outputs": [ + { + "internalType": "uint256", + "name": "dei_amount_d18", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mintFractionalDEI", + "outputs": [ + { + "internalType": "uint256", + "name": "mint_amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "mintPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minting_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pausedPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pool_ceiling", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "recollat_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "pool_collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "collateral_price", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "internalType": "struct DEIPool.RecollateralizeDEI", + "name": "inputs", + "type": "tuple" + } + ], + "name": "recollateralizeDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "recollateralizePaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeem1t1DEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeemAlgorithmicDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "redeemCollateralBalances", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "redeemDEUSBalances", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeemFractionalDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "redeemPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "redemption_delay", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "redemption_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "new_ceiling", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_bonus_rate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_redemption_delay", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_mint_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_redeem_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_buyback_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_recollat_fee", + "type": "uint256" + } + ], + "name": "setPoolParameters", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleBuyBack", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleMinting", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleRecollateralize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleRedeeming", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unclaimedPoolCollateral", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unclaimedPoolDEUS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "getRoleAdmin(bytes32)": { + "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." + }, + "getRoleMember(bytes32,uint256)": { + "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information." + }, + "getRoleMemberCount(bytes32)": { + "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role." + }, + "grantRole(bytes32,address)": { + "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role." + }, + "hasRole(bytes32,address)": { + "details": "Returns `true` if `account` has been granted `role`." + }, + "renounceRole(bytes32,address)": { + "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`." + }, + "revokeRole(bytes32,address)": { + "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role." + } + }, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": { + "@_1843": { + "entryPoint": null, + "id": 1843, + "parameterSlots": 7, + "returnSlots": 0 + }, + "@_add_11596": { + "entryPoint": 940, + "id": 11596, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_contains_11696": { + "entryPoint": null, + "id": 11696, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_6258": { + "entryPoint": 800, + "id": 6258, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_msgSender_444": { + "entryPoint": null, + "id": 444, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_setupRole_6209": { + "entryPoint": 784, + "id": 6209, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@add_11764": { + "entryPoint": 903, + "id": 11764, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_address_fromMemory": { + "entryPoint": 1022, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256t_address_fromMemory": { + "entryPoint": 1051, + "id": null, + "parameterSlots": 2, + "returnSlots": 7 + }, + "abi_decode_tuple_t_uint8_fromMemory": { + "entryPoint": 1191, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_088ae2e6daf22183595f1e6a5f7779d3f2c298acab226e55240662c2e1b8abe6__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 1235, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:1757:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "74:117:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "84:22:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "99:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "93:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "93:13:39" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "84:5:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "169:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "178:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "181:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "171:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "171:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "171:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "128:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "139:5:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "154:3:39", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "159:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "150:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "150:11:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "163:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "146:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "146:19:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "135:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "135:31:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "125:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "125:42:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "118:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "118:50:39" + }, + "nodeType": "YulIf", + "src": "115:70:39" + } + ] + }, + "name": "abi_decode_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "53:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "64:5:39", + "type": "" + } + ], + "src": "14:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "379:515:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "426:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "435:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "438:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "428:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "428:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "428:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "400:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "409:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "396:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "396:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "421:3:39", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "392:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "392:33:39" + }, + "nodeType": "YulIf", + "src": "389:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "451:50:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "491:9:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "461:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "461:40:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "451:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "510:59:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "554:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "565:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "550:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "550:18:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "520:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "520:49:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "510:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "578:59:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "622:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "633:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "618:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "618:18:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "588:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "588:49:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "578:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "646:59:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "690:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "701:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "686:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "686:18:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "656:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "656:49:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "646:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "714:60:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "758:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "769:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "754:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "754:19:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "724:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "724:50:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "714:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "783:36:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "803:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "814:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "799:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "799:19:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "793:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "793:26:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "783:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "828:60:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "872:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "883:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "868:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "868:19:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "838:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "838:50:39" + }, + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "828:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "297:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "308:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "320:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "328:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "336:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "344:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "352:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "360:6:39", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "368:6:39", + "type": "" + } + ], + "src": "196:698:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1073:177:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1090:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1101:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1083:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1083:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1083:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1124:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1135:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1120:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1120:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1140:2:39", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1113:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1113:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1113:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1163:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1174:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1159:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1159:18:39" + }, + { + "hexValue": "504f4f4c3a3a5a65726f2061646472657373206465746563746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "1179:29:39", + "type": "", + "value": "POOL::Zero address detected" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1152:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1152:57:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1152:57:39" + }, + { + "nodeType": "YulAssignment", + "src": "1218:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1230:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1241:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1226:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1226:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1218:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_088ae2e6daf22183595f1e6a5f7779d3f2c298acab226e55240662c2e1b8abe6__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1050:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1064:4:39", + "type": "" + } + ], + "src": "899:351:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1334:194:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1380:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1389:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1392:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1382:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1382:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1382:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1355:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1364:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1351:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1351:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1376:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1347:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1347:32:39" + }, + "nodeType": "YulIf", + "src": "1344:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1405:29:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1424:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1418:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "1418:16:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1409:5:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1482:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1491:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1494:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1484:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1484:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1484:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1456:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1467:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1474:4:39", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1463:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1463:16:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1453:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1453:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1446:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1446:35:39" + }, + "nodeType": "YulIf", + "src": "1443:55:39" + }, + { + "nodeType": "YulAssignment", + "src": "1507:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1517:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1507:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint8_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1300:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1311:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1323:6:39", + "type": "" + } + ], + "src": "1255:273:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1582:173:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1612:111:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1633:1:39", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1640:3:39", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1645:10:39", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1636:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1636:20:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1626:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1626:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1626:31:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1677:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1680:4:39", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1670:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1670:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1670:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1705:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1708:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1698:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1698:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1698:15:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1598:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1601:1:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1595:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1595:8:39" + }, + "nodeType": "YulIf", + "src": "1592:131:39" + }, + { + "nodeType": "YulAssignment", + "src": "1732:17:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1744:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1747:1:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1740:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1740:9:39" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "1732:4:39" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "1564:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "1567:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "1573:4:39", + "type": "" + } + ], + "src": "1533:222:39" + } + ] + }, + "contents": "{\n { }\n function abi_decode_address_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256t_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n value0 := abi_decode_address_fromMemory(headStart)\n value1 := abi_decode_address_fromMemory(add(headStart, 32))\n value2 := abi_decode_address_fromMemory(add(headStart, 64))\n value3 := abi_decode_address_fromMemory(add(headStart, 96))\n value4 := abi_decode_address_fromMemory(add(headStart, 128))\n value5 := mload(add(headStart, 160))\n value6 := abi_decode_address_fromMemory(add(headStart, 192))\n }\n function abi_encode_tuple_t_stringliteral_088ae2e6daf22183595f1e6a5f7779d3f2c298acab226e55240662c2e1b8abe6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"POOL::Zero address detected\")\n tail := add(headStart, 96)\n }\n function abi_decode_tuple_t_uint8_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n value0 := value\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n diff := sub(x, y)\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "60a06040526000600e819055600f819055611d4c60105560026011556012556013805463ffffffff60a01b191690553480156200003b57600080fd5b5060405162006301380380620063018339810160408190526200005e916200041b565b6001600160a01b038716158015906200007f57506001600160a01b03861615155b80156200009457506001600160a01b03851615155b8015620000a957506001600160a01b03841615155b8015620000be57506001600160a01b03831615155b8015620000d357506001600160a01b03811615155b620001245760405162461bcd60e51b815260206004820152601b60248201527f504f4f4c3a3a5a65726f20616464726573732064657465637465640000000000604482015260640160405180910390fd5b601380546001600160a01b038084166001600160a01b031992831617909255600380548a8416908316179055600480548984169083161781556002805493891693831684179055600180549092168317909155600e8490556040805163313ce56760e01b8152905163313ce567928281019260209291908290030181865afa158015620001b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001db9190620004a7565b620001eb9060ff166012620004d3565b608052620001fb60008462000310565b620002277fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b8562000310565b620002537fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c38578562000310565b6200027f7f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f8562000310565b620002ab7f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf8562000310565b620002d77f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c8562000310565b620003037fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f2405098562000310565b50505050505050620004f9565b6200031c828262000320565b5050565b6000828152602081815260409091206200034591839062004aa562000387821b17901c565b156200031c5760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6000620003a3836001600160601b0319606085901b16620003ac565b90505b92915050565b6000818152600183016020526040812054620003f557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620003a6565b506000620003a6565b80516001600160a01b03811681146200041657600080fd5b919050565b600080600080600080600060e0888a0312156200043757600080fd5b6200044288620003fe565b96506200045260208901620003fe565b95506200046260408901620003fe565b94506200047260608901620003fe565b93506200048260808901620003fe565b925060a088015191506200049960c08901620003fe565b905092959891949750929550565b600060208284031215620004ba57600080fd5b815160ff81168114620004cc57600080fd5b9392505050565b600082821015620004f457634e487b7160e01b600052601160045260246000fd5b500390565b608051615dbb6200054660003960008181610c960152818161155a0152818161225601528181612ad201528181612dc40152818161349e0152818161397501526147840152615dbb6000f3fe608060405234801561001057600080fd5b50600436106103205760003560e01c80637b0461e9116101a7578063b6258aaa116100ee578063cb73999f11610097578063e3d84d5e11610071578063e3d84d5e146106d4578063eb2d7461146106e7578063fede5c9c146106fa57600080fd5b8063cb73999f146106b0578063d547741f146106b9578063daa50485146106cc57600080fd5b8063c6301e5d116100c8578063c6301e5d14610681578063c74ec56a14610694578063ca15c8731461069d57600080fd5b8063b6258aaa14610652578063c3355b8d14610665578063c410ca1b1461066e57600080fd5b806391d1485411610150578063a217fddf1161012a578063a217fddf14610604578063abae2c4c1461060c578063b235d4681461062c57600080fd5b806391d14854146105cb578063928d2b31146105de578063978b73b5146105f157600080fd5b80637f877f85116101815780637f877f851461056257806388d19f1b1461058a5780639010d07c1461059357600080fd5b80637b0461e91461052c5780637d55094d146105355780637e4831d31461053d57600080fd5b806340e14b781161026b578063564b81ef116102145780636d2c5615116101ee5780636d2c5615146104bb5780636d82e314146104f25780637901330b1461051957600080fd5b8063564b81ef146104855780635de207cc1461048b5780636526a12a146104b257600080fd5b80634ebbe762116102455780634ebbe7621461045757806350c9ecd91461046a57806354f9769d1461047257600080fd5b806340e14b781461043357806342d15aec146104465780634c6349341461044e57600080fd5b80632f2ff15d116102cd5780633648b7dc116102a75780633648b7dc146103f757806336568abe146104005780633b92da471461041357600080fd5b80632f2ff15d146103aa57806332ad1ee4146103bd57806334ddb95d146103d057600080fd5b806315128425116102fe578063151284251461036b578063248a9ca314610374578063254cd2bd1461039757600080fd5b806308a7493d14610325578063101197c71461035857806312ace5a214610361575b600080fd5b610345610333366004615168565b600a6020526000908152604090205481565b6040519081526020015b60405180910390f35b61034560075481565b610369610703565b005b61034560115481565b610345610382366004615183565b60009081526020819052604090206002015490565b6103696103a53660046151e8565b6108bc565b6103696103b8366004615249565b610fb3565b6103456103cb3660046151e8565b611069565b6103457f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610345600c5481565b61036961040e366004615249565b61173f565b610345610421366004615168565b60096020526000908152604090205481565b6103456104413660046153ab565b6117ee565b610369611a0c565b61034560105481565b6103696104653660046153e8565b611ad3565b610369611c12565b610345610480366004615434565b611cd0565b46610345565b6103457fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f24050981565b610345600e5481565b6013546104e290760100000000000000000000000000000000000000000000900460ff1681565b604051901515815260200161034f565b6103457f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e53081565b610369610527366004615249565b61255b565b610345600b5481565b6103696126ef565b6013546104e29074010000000000000000000000000000000000000000900460ff1681565b6013546104e29077010000000000000000000000000000000000000000000000900460ff1681565b61034560125481565b6105a66105a13660046154a8565b6127aa565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161034f565b6104e26105d9366004615249565b6127cb565b6103696105ec3660046155cc565b6127e3565b6103696105ff3660046151e8565b612eef565b610345600081565b61034561061a366004615168565b600d6020526000908152604090205481565b6013546104e2907501000000000000000000000000000000000000000000900460ff1681565b610345610660366004615183565b613492565b61034560055481565b61036961067c366004615685565b613581565b61034561068f3660046151e8565b613a66565b610345600f5481565b6103456106ab366004615183565b61404e565b61034560065481565b6103696106c7366004615249565b614065565b61036961410d565b6103696106e236600461570c565b6141c9565b6103696106f5366004615748565b6142f2565b61034560085481565b601154336000908152600d60205260409020544391610721916157cf565b11156107da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605b60248201527f504f4f4c3a3a636f6c6c656374526564656d7074696f6e3a204d75737420776160448201527f697420666f7220726564656d7074696f6e5f64656c617920626c6f636b73206260648201527f65666f726520636f6c6c656374696e6720726564656d7074696f6e0000000000608482015260a4015b60405180910390fd5b3360009081526009602052604081205481908190819015610822573360009081526009602052604081208054919055600c5490925061081a9083906157e7565b600c55600193505b336000908152600a6020526040902054156108625750336000908152600a602052604081208054919055600b5461085a9082906157e7565b600b55600192505b831561088c5760045461088c9073ffffffffffffffffffffffffffffffffffffffff163384614ad7565b82156108b6576001546108b69073ffffffffffffffffffffffffffffffffffffffff163383614ad7565b50505050565b6013547501000000000000000000000000000000000000000000900460ff1615610942576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107d1565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa1580156109b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d891906157fe565b14610a3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203d3d203100000060448201526064016107d1565b43831015610acf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107d1565b60025460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90610bc290849087908790600401615860565b602060405180830381865afa158015610bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c039190615942565b610c8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a72656465656d3174314445493a20696e76616c6964207369676e60448201527f617475726573000000000000000000000000000000000000000000000000000060648201526084016107d1565b6000610cbc7f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b610cc69088615a97565b6013546040517f068d54aa000000000000000000000000000000000000000000000000000000008152600481018990526024810183905291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063068d54aa90604401602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6691906157fe565b9050620f4240600654620f4240610d7d91906157e7565b610d879083615ad2565b610d919190615a97565b600b546001546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152929350909173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610e07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2b91906157fe565b610e3591906157e7565b811115610e9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107d1565b336000908152600a6020526040902054610eb99082906157cf565b336000908152600a6020526040902055600b54610ed79082906157cf565b600b55336000908152600d60205260409020439055600654620f424090610efe908a615ad2565b610f089190615a97565b60126000828254610f1991906157cf565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae906044015b600060405180830381600087803b158015610f9157600080fd5b505af1158015610fa5573d6000803e3d6000fd5b505050505050505050505050565b600082815260208190526040902060020154610fcf90336127cb565b61105b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084016107d1565b6110658282614c47565b5050565b60135460009074010000000000000000000000000000000000000000900460ff16156110f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107d1565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015611163573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118791906157fe565b10156111ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203e3d203100000060448201526064016107d1565b600e54600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015289929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611264573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128891906157fe565b61129291906157e7565b61129c91906157cf565b1115611304576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5b506f6f6c277320436c6f7365645d3a204365696c696e67207265616368656460448201526064016107d1565b43841015611394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a6d696e743174314445493a207369676e6174757265206973206560448201527f787069726564000000000000000000000000000000000000000000000000000060648201526084016107d1565b60025460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac9061148790849088908890600401615860565b602060405180830381865afa1580156114a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c89190615942565b611553576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6d696e743174314445493a20696e76616c6964207369676e617460448201527f757265730000000000000000000000000000000000000000000000000000000060648201526084016107d1565b60006115807f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b61158a9089615ad2565b6013546040517f882ab63a000000000000000000000000000000000000000000000000000000008152600481018a90526024810183905291925073ffffffffffffffffffffffffffffffffffffffff169063882ab63a90604401602060405180830381865afa158015611601573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162591906157fe565b9250620f4240600554620f424061163c91906157e7565b6116469085615ad2565b6116509190615a97565b6001549093506116789073ffffffffffffffffffffffffffffffffffffffff1633308b614cad565b620f42406005548461168a9190615ad2565b6116949190615a97565b601260008282546116a591906157cf565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561171c57600080fd5b505af1158015611730573d6000803e3d6000fd5b50505050505095945050505050565b73ffffffffffffffffffffffffffffffffffffffff811633146117e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016107d1565b6110658282614e4b565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561185e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188291906157fe565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191791906157fe565b6003546040517f2480fcea00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690632480fcea90611973908890600401615b0f565b602060405180830381865afa158015611990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b491906157fe565b9050620f42408211156119c857620f424091505b6000620f42406119d88486615ad2565b6119e29190615a97565b905080821115611a00576119f681836157e7565b9695505050505050565b50600095945050505050565b611a367f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f336127cb565b611a3f57600080fd5b6013805460ff76010000000000000000000000000000000000000000000080830482161581027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f2fda313d9b5bb0b73bd003153f2fccbc0dca49791fdd1184dfad82b44f54bd2e93611ac99390049091161515815260200190565b60405180910390a1565b611afd7fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f240509336127cb565b611b89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f504f4f4c3a2043616c6c6572206973206e6f7420504152414d455445525f534560448201527f545445525f524f4c45000000000000000000000000000000000000000000000060648201526084016107d1565b600e8790556010869055601185905560058490556006839055600782905560088190556040805188815260208101889052908101869052606081018590526080810184905260a0810183905260c081018290527f17fe98b66d27bd793ea01bd8a23a54acab8eeb167d9eb016a0c7cd71c573920c9060e00160405180910390a150505050505050565b611c3c7f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf336127cb565b611c4557600080fd5b6013805460ff7701000000000000000000000000000000000000000000000080830482161581027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f4f40fd1c59f78d7a2220da638cd9400daba01e57c7965702f390bf13133cc31f93611ac99390049091161515815260200190565b60135460009074010000000000000000000000000000000000000000900460ff1615611d58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107d1565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015611dc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dec91906157fe565b9050620f424081108015611e005750600081115b611e8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f436f6c6c61746572616c20726174696f206e6565647320746f2062652062657460448201527f7765656e202e30303030303120616e64202e393939393939000000000000000060648201526084016107d1565b600e54600b546001546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528c929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2591906157fe565b611f2f91906157e7565b611f3991906157cf565b1115611fee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f506f6f6c206365696c696e6720726561636865642c206e6f206d6f7265204445908201527f492063616e206265206d696e7465642077697468207468697320636f6c6c617460648201527f6572616c00000000000000000000000000000000000000000000000000000000608482015260a4016107d1565b4385101561207e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a207369676e61747560448201527f726520697320657870697265642e00000000000000000000000000000000000060648201526084016107d1565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018d90529390941b909316605484015260688301899052608883018890524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906121579084908990899060cc01615860565b602060405180830381865afa158015612174573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121989190615942565b612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a20696e76616c696460448201527f207369676e61747572657300000000000000000000000000000000000000000060648201526084016107d1565b61224f6040518060800160405280600081526020016000815260200160008152602001600081525090565b600061227c7f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b612286908d615ad2565b604080516080810182528b8152602081018d9052808201929092526060820186905260135490517f537a30a70000000000000000000000000000000000000000000000000000000081529193506000925073ffffffffffffffffffffffffffffffffffffffff169063537a30a790612302908590600401615b53565b6040805180830381865afa15801561231e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123429190615b7e565b90955090508a8111156123b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e6f7420656e6f756768204445555320696e707574746564000000000000000060448201526064016107d1565b620f4240600554620f42406123c691906157e7565b6123d09087615ad2565b6123da9190615a97565b600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820184905291965073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561245257600080fd5b505af1158015612466573d6000803e3d6000fd5b5050600154612490925073ffffffffffffffffffffffffffffffffffffffff16905033308f614cad565b620f4240600554866124a29190615ad2565b6124ac9190615a97565b601260008282546124bd91906157cf565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810187905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561253457600080fd5b505af1158015612548573d6000803e3d6000fd5b5050505050505050979650505050505050565b6125857f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e530336127cb565b61258e57600080fd5b6012548211156125fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f616d6f756e743c3d64616f53686172650000000000000000000000000000000060448201526064016107d1565b6003546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018590529091169063b4f56b2690604401600060405180830381600087803b15801561266e57600080fd5b505af1158015612682573d6000803e3d6000fd5b50505050816012600082825461269891906157e7565b90915550506040805183815273ffffffffffffffffffffffffffffffffffffffff831660208201527f3a708f2f1c75b12457d207cf1e259ab9f87bbfccb29672903acf4661bd342e49910160405180910390a15050565b6127197fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b336127cb565b61272257600080fd5b6013805460ff7401000000000000000000000000000000000000000080830482161581027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f6bdfe227d5db299c59aa56d5f846f40dbd73b271aaa78e18ed74fc3e00b8aa6b93611ac99390049091161515815260200190565b60008281526020819052604081206127c29083614eb1565b90505b92915050565b60008281526020819052604081206127c29083614ec7565b601354760100000000000000000000000000000000000000000000900460ff1615612890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a205265636f6c6c60448201527f61746572616c697a65206973207061757365640000000000000000000000000060648201526084016107d1565b4381608001511015612924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107d1565b60025460408281015160045460608501516080860151935160009561296d9573ffffffffffffffffffffffffffffffffffffffff91821695949190911692914690602001615ba2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052805160209091012060035460a08501517f6793f0ac00000000000000000000000000000000000000000000000000000000845291935073ffffffffffffffffffffffffffffffffffffffff1691636793f0ac916129fe91859190600401615c4d565b602060405180830381865afa158015612a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a3f9190615942565b612acb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107d1565b6000612af87f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b8351612b049190615ad2565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9991906157fe565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2e91906157fe565b60035460408088015190517f2480fcea00000000000000000000000000000000000000000000000000000000815292935060009273ffffffffffffffffffffffffffffffffffffffff90921691632480fcea91612c8d91600401615b0f565b602060405180830381865afa158015612caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cce91906157fe565b60135460408801518051929350600092839273ffffffffffffffffffffffffffffffffffffffff169163fc01106191899190612d0c906001906157e7565b81518110612d1c57612d1c615d0b565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015260448101869052606481018890526084810187905260a4016040805180830381865afa158015612d94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db89190615b7e565b90925090506000612dea7f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b612df49084615a97565b905060008960600151600854601054620f4240612e1191906157cf565b612e1b91906157e7565b612e259085615ad2565b612e2f9190615a97565b600154909150612e579073ffffffffffffffffffffffffffffffffffffffff16333085614cad565b600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815233928101929092526024820183905273ffffffffffffffffffffffffffffffffffffffff169063b4f56b26906044015b600060405180830381600087803b158015612ecb57600080fd5b505af1158015612edf573d6000803e3d6000fd5b5050505050505050505050505050565b6013547501000000000000000000000000000000000000000000900460ff1615612f75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107d1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fe2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300691906157fe565b15613093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20436f6c6c60448201527f61746572616c20726174696f206d75737420626520300000000000000000000060648201526084016107d1565b43831015613123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4445493a3a72656465656d416c676f726974686d69634445493a207369676e6160448201527f7475726520697320657870697265642e0000000000000000000000000000000060648201526084016107d1565b60045460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac9061321690849087908790600401615860565b602060405180830381865afa158015613233573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132579190615942565b6132e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20696e766160448201527f6c6964207369676e61747572657300000000000000000000000000000000000060648201526084016107d1565b6006548690620f4240906132f790826157e7565b6133019083615ad2565b61330b9190615a97565b905060008661331d620f424084615ad2565b6133279190615a97565b336000908152600960205260409020549091506133459082906157cf565b33600090815260096020526040902055600c546133639082906157cf565b600c55336000908152600d60205260409020439055600654620f42409061338a908a615ad2565b6133949190615a97565b601260008282546133a591906157cf565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561341c57600080fd5b505af1158015613430573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820185905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401610f77565b6000620f4240826134c47f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015613535573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061355991906157fe565b61356391906157e7565b61356d9190615ad2565b6135779190615ad2565b6127c59190615a97565b60135477010000000000000000000000000000000000000000000000900460ff161561362e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6275794261636b444555533a204275796261636b20697320706160448201527f757365640000000000000000000000000000000000000000000000000000000060648201526084016107d1565b438310156136be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4445493a3a6275794261636b444555533a207369676e6174757265206973206560448201527f7870697265642e0000000000000000000000000000000000000000000000000060648201526084016107d1565b60025460045460009173ffffffffffffffffffffffffffffffffffffffff908116918891168787466040516020016136fb96959493929190615ba2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac9061378a90849087908790600401615860565b602060405180830381865afa1580156137a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137cb9190615942565b613857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f504f4f4c3a3a6275794261636b444555533a20696e76616c6964207369676e6160448201527f747572657300000000000000000000000000000000000000000000000000000060648201526084016107d1565b6000604051806080016040528061386d896117ee565b81526020018781526020018860018a5161388791906157e7565b8151811061389757613897615d0b565b602002602001015181526020018981525090506000620f4240600754620f42406138c191906157e7565b6013546040517f3c04af9f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633c04af9f90613917908790600401615b53565b602060405180830381865afa158015613934573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061395891906157fe565b6139629190615ad2565b61396c9190615a97565b9050600061399b7f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b6139a59083615a97565b600480546040517fa8a778ae0000000000000000000000000000000000000000000000000000000081523392810192909252602482018d905291925073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015613a1d57600080fd5b505af1158015613a31573d6000803e3d6000fd5b5050600154613a5a925073ffffffffffffffffffffffffffffffffffffffff1690503383614ad7565b50505050505050505050565b60135460009074010000000000000000000000000000000000000000900460ff1615613aee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107d1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b7f91906157fe565b15613be6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f436f6c6c61746572616c20726174696f206d757374206265203000000000000060448201526064016107d1565b43841015613c76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107d1565b60045460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90613d6990849088908890600401615860565b602060405180830381865afa158015613d86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613daa9190615942565b613e36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107d1565b6013546040517f14da4ee1000000000000000000000000000000000000000000000000000000008152600481018890526024810189905273ffffffffffffffffffffffffffffffffffffffff909116906314da4ee190604401602060405180830381865afa158015613eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ed091906157fe565b9150620f4240600554620f4240613ee791906157e7565b613ef19084615ad2565b613efb9190615a97565b9150620f424060055483613f0f9190615ad2565b613f199190615a97565b60126000828254613f2a91906157cf565b9091555050600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820189905273ffffffffffffffffffffffffffffffffffffffff169063a8a778ae90604401600060405180830381600087803b158015613fa257600080fd5b505af1158015613fb6573d6000803e3d6000fd5b50506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810186905273ffffffffffffffffffffffffffffffffffffffff909116925063b4f56b269150604401600060405180830381600087803b15801561402c57600080fd5b505af1158015614040573d6000803e3d6000fd5b505050505095945050505050565b60008181526020819052604081206127c590614f06565b60008281526020819052604090206002015461408190336127cb565b6117e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b650000000000000000000000000000000060648201526084016107d1565b6141377fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c3857336127cb565b61414057600080fd5b6013805460ff750100000000000000000000000000000000000000000080830482161581027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f5860c5063a65e23cea4e2e2925f1a841bb6d1bc9615bd425f8dd084980b0514193611ac99390049091161515815260200190565b6141f37f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336127cb565b614259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f504f4f4c3a3a796f7520617265206e6f7420747275737479000000000000000060448201526064016107d1565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af11580156142ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b69190615942565b6013547501000000000000000000000000000000000000000000900460ff1615614378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107d1565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa1580156143e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061440c91906157fe565b9050620f4240811080156144205750600081115b6144d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20436f6c6c6160448201527f746572616c20726174696f206e6565647320746f206265206265747765656e2060648201527f2e30303030303120616e64202e39393939393900000000000000000000000000608482015260a4016107d1565b43841015614562576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4445493a3a72656465656d4672616374696f6e616c4445493a207369676e617460448201527f757265206973206578706972656400000000000000000000000000000000000060648201526084016107d1565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018c90529390941b909316605484015260688301889052608883018790524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac9061463b9084908890889060cc01615860565b602060405180830381865afa158015614658573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061467c9190615942565b614708576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20696e76616c60448201527f6964207369676e6174757265730000000000000000000000000000000000000060648201526084016107d1565b60008060008990506000620f4240600654620f424061472791906157e7565b614731908e615ad2565b61473b9190615a97565b90506000620f424061474d8884615ad2565b6147579190615a97565b61476190836157e7565b90508a614771620f424083615ad2565b61477b9190615a97565b945060006147aa7f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b6147b49084615a97565b90506000620f42406147c68a84615ad2565b6147d09190615a97565b9050846147e0620f424083615ad2565b6147ea9190615a97565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015292985090965073ffffffffffffffffffffffffffffffffffffffff1694506370a082319350602401915061484d9050565b602060405180830381865afa15801561486a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061488e91906157fe565b61489891906157e7565b811115614901576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107d1565b336000908152600a602052604090205461491c9082906157cf565b336000908152600a6020526040902055600b5461493a9082906157cf565b600b55336000908152600960205260409020546149589083906157cf565b33600090815260096020526040902055600c546149769083906157cf565b600c55336000908152600d60205260409020439055600654620f42409061499d908c615ad2565b6149a79190615a97565b601260008282546149b891906157cf565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018c905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015614a2f57600080fd5b505af1158015614a43573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820186905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401612eb1565b60006127c2837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16614f10565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691614b6e9190615d3a565b6000604051808303816000865af19150503d8060008114614bab576040519150601f19603f3d011682016040523d82523d6000602084013e614bb0565b606091505b5091509150818015614bda575080511580614bda575080806020019051810190614bda9190615942565b614c40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016107d1565b5050505050565b6000828152602081905260409020614c5f9082614aa5565b1561106557604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691614d4c9190615d3a565b6000604051808303816000865af19150503d8060008114614d89576040519150601f19603f3d011682016040523d82523d6000602084013e614d8e565b606091505b5091509150818015614db8575080511580614db8575080806020019051810190614db89190615942565b614e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016107d1565b505050505050565b6000828152602081905260409020614e639082614f5f565b1561106557604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000614ebd8383614f91565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156127c2565b60006127c5825490565b6000818152600183016020526040812054614f57575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556127c5565b5060006127c5565b60006127c2837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1661504c565b81546000908210615024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f647300000000000000000000000000000000000000000000000000000000000060648201526084016107d1565b82600001828154811061503957615039615d0b565b9060005260206000200154905092915050565b600081815260018301602052604081205480156151355760006150706001836157e7565b8554909150600090615084906001906157e7565b9050600086600001828154811061509d5761509d615d0b565b90600052602060002001549050808760000184815481106150c0576150c0615d0b565b6000918252602090912001556150d78360016157cf565b600082815260018901602052604090205586548790806150f9576150f9615d56565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506127c5565b60009150506127c5565b803573ffffffffffffffffffffffffffffffffffffffff8116811461516357600080fd5b919050565b60006020828403121561517a57600080fd5b6127c28261513f565b60006020828403121561519557600080fd5b5035919050565b60008083601f8401126151ae57600080fd5b50813567ffffffffffffffff8111156151c657600080fd5b6020830191508360208260051b85010111156151e157600080fd5b9250929050565b60008060008060006080868803121561520057600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561522c57600080fd5b6152388882890161519c565b969995985093965092949392505050565b6000806040838503121561525c57600080fd5b8235915061526c6020840161513f565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff811182821017156152c7576152c7615275565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561531457615314615275565b604052919050565b600067ffffffffffffffff82111561533657615336615275565b5060051b60200190565b600082601f83011261535157600080fd5b813560206153666153618361531c565b6152cd565b82815260059290921b8401810191818101908684111561538557600080fd5b8286015b848110156153a05780358352918301918301615389565b509695505050505050565b6000602082840312156153bd57600080fd5b813567ffffffffffffffff8111156153d457600080fd5b6153e084828501615340565b949350505050565b600080600080600080600060e0888a03121561540357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080600080600080600060c0888a03121561544f57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a088013567ffffffffffffffff81111561548957600080fd5b6154958a828b0161519c565b989b979a50959850939692959293505050565b600080604083850312156154bb57600080fd5b50508035926020909101359150565b6000601f83818401126154dc57600080fd5b823560206154ec6153618361531c565b82815260059290921b8501810191818101908784111561550b57600080fd5b8287015b848110156155c057803567ffffffffffffffff808211156155305760008081fd5b818a0191508a603f8301126155455760008081fd5b8582013560408282111561555b5761555b615275565b61558a887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c850116016152cd565b92508183528c818386010111156155a15760008081fd5b818185018985013750600090820187015284525091830191830161550f565b50979650505050505050565b6000602082840312156155de57600080fd5b813567ffffffffffffffff808211156155f657600080fd5b9083019060c0828603121561560a57600080fd5b6156126152a4565b823581526020830135602082015260408301358281111561563257600080fd5b61563e87828601615340565b604083015250606083013560608201526080830135608082015260a08301358281111561566a57600080fd5b615676878286016154ca565b60a08301525095945050505050565b60008060008060008060a0878903121561569e57600080fd5b86359550602087013567ffffffffffffffff808211156156bd57600080fd5b6156c98a838b01615340565b9650604089013595506060890135945060808901359150808211156156ed57600080fd5b506156fa89828a0161519c565b979a9699509497509295939492505050565b60008060006060848603121561572157600080fd5b61572a8461513f565b92506020840135915061573f6040850161513f565b90509250925092565b60008060008060008060a0878903121561576157600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff81111561579457600080fd5b6156fa89828a0161519c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156157e2576157e26157a0565b500190565b6000828210156157f9576157f96157a0565b500390565b60006020828403121561581057600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b87811015615934577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18a36030181126158eb57600080fd5b8901803567ffffffffffffffff81111561590457600080fd5b8036038b131561591357600080fd5b6159208782888501615817565b96505050918301919083019060010161588a565b509298975050505050505050565b60006020828403121561595457600080fd5b8151801515811461596457600080fd5b9392505050565b600181815b808511156159c457817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156159aa576159aa6157a0565b808516156159b757918102915b93841c9390800290615970565b509250929050565b6000826159db575060016127c5565b816159e8575060006127c5565b81600181146159fe5760028114615a0857615a24565b60019150506127c5565b60ff841115615a1957615a196157a0565b50506001821b6127c5565b5060208310610133831016604e8410600b8410161715615a47575081810a6127c5565b615a51838361596b565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615a8357615a836157a0565b029392505050565b60006127c283836159cc565b600082615acd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615b0a57615b0a6157a0565b500290565b6020808252825182820181905260009190848201906040850190845b81811015615b4757835183529284019291840191600101615b2b565b50909695505050505050565b81518152602080830151908201526040808301519082015260608083015190820152608081016127c5565b60008060408385031215615b9157600080fd5b505080516020909101519092909150565b60007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808960601b1683526014830188516020808b0160005b83811015615bf757815185529382019390820190600101615bdb565b5050505060609790971b168652505060148401929092526034830152605482015260740192915050565b60005b83811015615c3c578181015183820152602001615c24565b838111156108b65750506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015615cfd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088870301845281518051808852615cc081888a01898501615c21565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01696909601850195509284019290840190600101615c7b565b509398975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008251615d4c818460208701615c21565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220c79b153746533a6df153629c30a0770abe2f4bca6a754b070e2bc583ce406e7764736f6c634300080a0033", + "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0xE DUP2 SWAP1 SSTORE PUSH1 0xF DUP2 SWAP1 SSTORE PUSH2 0x1D4C PUSH1 0x10 SSTORE PUSH1 0x2 PUSH1 0x11 SSTORE PUSH1 0x12 SSTORE PUSH1 0x13 DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x6301 CODESIZE SUB DUP1 PUSH3 0x6301 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x5E SWAP2 PUSH3 0x41B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND ISZERO DUP1 ISZERO SWAP1 PUSH3 0x7F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH3 0x94 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH3 0xA9 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH3 0xBE JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH3 0xD3 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO ISZERO JUMPDEST PUSH3 0x124 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A5A65726F20616464726573732064657465637465640000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x3 DUP1 SLOAD DUP11 DUP5 AND SWAP1 DUP4 AND OR SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP10 DUP5 AND SWAP1 DUP4 AND OR DUP2 SSTORE PUSH1 0x2 DUP1 SLOAD SWAP4 DUP10 AND SWAP4 DUP4 AND DUP5 OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP3 AND DUP4 OR SWAP1 SWAP2 SSTORE PUSH1 0xE DUP5 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x313CE567 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH4 0x313CE567 SWAP3 DUP3 DUP2 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x1B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1DB SWAP2 SWAP1 PUSH3 0x4A7 JUMP JUMPDEST PUSH3 0x1EB SWAP1 PUSH1 0xFF AND PUSH1 0x12 PUSH3 0x4D3 JUMP JUMPDEST PUSH1 0x80 MSTORE PUSH3 0x1FB PUSH1 0x0 DUP5 PUSH3 0x310 JUMP JUMPDEST PUSH3 0x227 PUSH32 0xC65532185ED70B2E999433E2E9FAC124E083ACB13EC183A4E05944DA0792337B DUP6 PUSH3 0x310 JUMP JUMPDEST PUSH3 0x253 PUSH32 0xA84A5389AD41F9AAB0831B01E5384CAE76E7A7FD09131C206FF7927C201C3857 DUP6 PUSH3 0x310 JUMP JUMPDEST PUSH3 0x27F PUSH32 0x8118EEB5231A5FE4008A55B62860F6A0DB4F6C3AC04F8141927A9B3FEDD86D2F DUP6 PUSH3 0x310 JUMP JUMPDEST PUSH3 0x2AB PUSH32 0x103DA79FF3755FF7A17A557D28B73D37CB4DE0B3C3CC02FA6C48DF0F35071FBF DUP6 PUSH3 0x310 JUMP JUMPDEST PUSH3 0x2D7 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP6 PUSH3 0x310 JUMP JUMPDEST PUSH3 0x303 PUSH32 0xE08E6E8E2E796F02419355C6FA268D1461FE6F2F34114A881A2DB47C0F240509 DUP6 PUSH3 0x310 JUMP JUMPDEST POP POP POP POP POP POP POP PUSH3 0x4F9 JUMP JUMPDEST PUSH3 0x31C DUP3 DUP3 PUSH3 0x320 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH3 0x345 SWAP2 DUP4 SWAP1 PUSH3 0x4AA5 PUSH3 0x387 DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST ISZERO PUSH3 0x31C JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x3A3 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH3 0x3AC JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH3 0x3F5 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 PUSH3 0x3A6 JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0x3A6 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x416 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x442 DUP9 PUSH3 0x3FE JUMP JUMPDEST SWAP7 POP PUSH3 0x452 PUSH1 0x20 DUP10 ADD PUSH3 0x3FE JUMP JUMPDEST SWAP6 POP PUSH3 0x462 PUSH1 0x40 DUP10 ADD PUSH3 0x3FE JUMP JUMPDEST SWAP5 POP PUSH3 0x472 PUSH1 0x60 DUP10 ADD PUSH3 0x3FE JUMP JUMPDEST SWAP4 POP PUSH3 0x482 PUSH1 0x80 DUP10 ADD PUSH3 0x3FE JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD MLOAD SWAP2 POP PUSH3 0x499 PUSH1 0xC0 DUP10 ADD PUSH3 0x3FE JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH3 0x4CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH3 0x4F4 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x5DBB PUSH3 0x546 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0xC96 ADD MSTORE DUP2 DUP2 PUSH2 0x155A ADD MSTORE DUP2 DUP2 PUSH2 0x2256 ADD MSTORE DUP2 DUP2 PUSH2 0x2AD2 ADD MSTORE DUP2 DUP2 PUSH2 0x2DC4 ADD MSTORE DUP2 DUP2 PUSH2 0x349E ADD MSTORE DUP2 DUP2 PUSH2 0x3975 ADD MSTORE PUSH2 0x4784 ADD MSTORE PUSH2 0x5DBB 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 0x320 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7B0461E9 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0xB6258AAA GT PUSH2 0xEE JUMPI DUP1 PUSH4 0xCB73999F GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xE3D84D5E GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE3D84D5E EQ PUSH2 0x6D4 JUMPI DUP1 PUSH4 0xEB2D7461 EQ PUSH2 0x6E7 JUMPI DUP1 PUSH4 0xFEDE5C9C EQ PUSH2 0x6FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCB73999F EQ PUSH2 0x6B0 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xDAA50485 EQ PUSH2 0x6CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC6301E5D GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0xC6301E5D EQ PUSH2 0x681 JUMPI DUP1 PUSH4 0xC74EC56A EQ PUSH2 0x694 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x69D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB6258AAA EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0xC3355B8D EQ PUSH2 0x665 JUMPI DUP1 PUSH4 0xC410CA1B EQ PUSH2 0x66E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 GT PUSH2 0x150 JUMPI DUP1 PUSH4 0xA217FDDF GT PUSH2 0x12A JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x604 JUMPI DUP1 PUSH4 0xABAE2C4C EQ PUSH2 0x60C JUMPI DUP1 PUSH4 0xB235D468 EQ PUSH2 0x62C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 EQ PUSH2 0x5CB JUMPI DUP1 PUSH4 0x928D2B31 EQ PUSH2 0x5DE JUMPI DUP1 PUSH4 0x978B73B5 EQ PUSH2 0x5F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7F877F85 GT PUSH2 0x181 JUMPI DUP1 PUSH4 0x7F877F85 EQ PUSH2 0x562 JUMPI DUP1 PUSH4 0x88D19F1B EQ PUSH2 0x58A JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x593 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7B0461E9 EQ PUSH2 0x52C JUMPI DUP1 PUSH4 0x7D55094D EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x7E4831D3 EQ PUSH2 0x53D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x40E14B78 GT PUSH2 0x26B JUMPI DUP1 PUSH4 0x564B81EF GT PUSH2 0x214 JUMPI DUP1 PUSH4 0x6D2C5615 GT PUSH2 0x1EE JUMPI DUP1 PUSH4 0x6D2C5615 EQ PUSH2 0x4BB JUMPI DUP1 PUSH4 0x6D82E314 EQ PUSH2 0x4F2 JUMPI DUP1 PUSH4 0x7901330B EQ PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x564B81EF EQ PUSH2 0x485 JUMPI DUP1 PUSH4 0x5DE207CC EQ PUSH2 0x48B JUMPI DUP1 PUSH4 0x6526A12A EQ PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4EBBE762 GT PUSH2 0x245 JUMPI DUP1 PUSH4 0x4EBBE762 EQ PUSH2 0x457 JUMPI DUP1 PUSH4 0x50C9ECD9 EQ PUSH2 0x46A JUMPI DUP1 PUSH4 0x54F9769D EQ PUSH2 0x472 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x40E14B78 EQ PUSH2 0x433 JUMPI DUP1 PUSH4 0x42D15AEC EQ PUSH2 0x446 JUMPI DUP1 PUSH4 0x4C634934 EQ PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D GT PUSH2 0x2CD JUMPI DUP1 PUSH4 0x3648B7DC GT PUSH2 0x2A7 JUMPI DUP1 PUSH4 0x3648B7DC EQ PUSH2 0x3F7 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x400 JUMPI DUP1 PUSH4 0x3B92DA47 EQ PUSH2 0x413 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x3AA JUMPI DUP1 PUSH4 0x32AD1EE4 EQ PUSH2 0x3BD JUMPI DUP1 PUSH4 0x34DDB95D EQ PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x15128425 GT PUSH2 0x2FE JUMPI DUP1 PUSH4 0x15128425 EQ PUSH2 0x36B JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x374 JUMPI DUP1 PUSH4 0x254CD2BD EQ PUSH2 0x397 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8A7493D EQ PUSH2 0x325 JUMPI DUP1 PUSH4 0x101197C7 EQ PUSH2 0x358 JUMPI DUP1 PUSH4 0x12ACE5A2 EQ PUSH2 0x361 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x345 PUSH2 0x333 CALLDATASIZE PUSH1 0x4 PUSH2 0x5168 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x345 PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x703 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x345 PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x345 PUSH2 0x382 CALLDATASIZE PUSH1 0x4 PUSH2 0x5183 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x3A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x51E8 JUMP JUMPDEST PUSH2 0x8BC JUMP JUMPDEST PUSH2 0x369 PUSH2 0x3B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x5249 JUMP JUMPDEST PUSH2 0xFB3 JUMP JUMPDEST PUSH2 0x345 PUSH2 0x3CB CALLDATASIZE PUSH1 0x4 PUSH2 0x51E8 JUMP JUMPDEST PUSH2 0x1069 JUMP JUMPDEST PUSH2 0x345 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP2 JUMP JUMPDEST PUSH2 0x345 PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x40E CALLDATASIZE PUSH1 0x4 PUSH2 0x5249 JUMP JUMPDEST PUSH2 0x173F JUMP JUMPDEST PUSH2 0x345 PUSH2 0x421 CALLDATASIZE PUSH1 0x4 PUSH2 0x5168 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x345 PUSH2 0x441 CALLDATASIZE PUSH1 0x4 PUSH2 0x53AB JUMP JUMPDEST PUSH2 0x17EE JUMP JUMPDEST PUSH2 0x369 PUSH2 0x1A0C JUMP JUMPDEST PUSH2 0x345 PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x465 CALLDATASIZE PUSH1 0x4 PUSH2 0x53E8 JUMP JUMPDEST PUSH2 0x1AD3 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x1C12 JUMP JUMPDEST PUSH2 0x345 PUSH2 0x480 CALLDATASIZE PUSH1 0x4 PUSH2 0x5434 JUMP JUMPDEST PUSH2 0x1CD0 JUMP JUMPDEST CHAINID PUSH2 0x345 JUMP JUMPDEST PUSH2 0x345 PUSH32 0xE08E6E8E2E796F02419355C6FA268D1461FE6F2F34114A881A2DB47C0F240509 DUP2 JUMP JUMPDEST PUSH2 0x345 PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4E2 SWAP1 PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34F JUMP JUMPDEST PUSH2 0x345 PUSH32 0xD4A2989857A24DE9C91E1DAFFE87D051D59F52B68729413D1EF656EC487E530 DUP2 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x527 CALLDATASIZE PUSH1 0x4 PUSH2 0x5249 JUMP JUMPDEST PUSH2 0x255B JUMP JUMPDEST PUSH2 0x345 PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x26EF JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4E2 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4E2 SWAP1 PUSH24 0x10000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x345 PUSH1 0x12 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x5A6 PUSH2 0x5A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x54A8 JUMP JUMPDEST PUSH2 0x27AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34F JUMP JUMPDEST PUSH2 0x4E2 PUSH2 0x5D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5249 JUMP JUMPDEST PUSH2 0x27CB JUMP JUMPDEST PUSH2 0x369 PUSH2 0x5EC CALLDATASIZE PUSH1 0x4 PUSH2 0x55CC JUMP JUMPDEST PUSH2 0x27E3 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x5FF CALLDATASIZE PUSH1 0x4 PUSH2 0x51E8 JUMP JUMPDEST PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x345 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x345 PUSH2 0x61A CALLDATASIZE PUSH1 0x4 PUSH2 0x5168 JUMP JUMPDEST PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4E2 SWAP1 PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x345 PUSH2 0x660 CALLDATASIZE PUSH1 0x4 PUSH2 0x5183 JUMP JUMPDEST PUSH2 0x3492 JUMP JUMPDEST PUSH2 0x345 PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x67C CALLDATASIZE PUSH1 0x4 PUSH2 0x5685 JUMP JUMPDEST PUSH2 0x3581 JUMP JUMPDEST PUSH2 0x345 PUSH2 0x68F CALLDATASIZE PUSH1 0x4 PUSH2 0x51E8 JUMP JUMPDEST PUSH2 0x3A66 JUMP JUMPDEST PUSH2 0x345 PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH2 0x345 PUSH2 0x6AB CALLDATASIZE PUSH1 0x4 PUSH2 0x5183 JUMP JUMPDEST PUSH2 0x404E JUMP JUMPDEST PUSH2 0x345 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x6C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x5249 JUMP JUMPDEST PUSH2 0x4065 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x410D JUMP JUMPDEST PUSH2 0x369 PUSH2 0x6E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x570C JUMP JUMPDEST PUSH2 0x41C9 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x6F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x5748 JUMP JUMPDEST PUSH2 0x42F2 JUMP JUMPDEST PUSH2 0x345 PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x11 SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD NUMBER SWAP2 PUSH2 0x721 SWAP2 PUSH2 0x57CF JUMP JUMPDEST GT ISZERO PUSH2 0x7DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A636F6C6C656374526564656D7074696F6E3A204D757374207761 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x697420666F7220726564656D7074696F6E5F64656C617920626C6F636B732062 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x65666F726520636F6C6C656374696E6720726564656D7074696F6E0000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 DUP2 SWAP1 DUP2 SWAP1 ISZERO PUSH2 0x822 JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SSTORE PUSH1 0xC SLOAD SWAP1 SWAP3 POP PUSH2 0x81A SWAP1 DUP4 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH1 0xC SSTORE PUSH1 0x1 SWAP4 POP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x862 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SSTORE PUSH1 0xB SLOAD PUSH2 0x85A SWAP1 DUP3 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH1 0xB SSTORE PUSH1 0x1 SWAP3 POP JUMPDEST DUP4 ISZERO PUSH2 0x88C JUMPI PUSH1 0x4 SLOAD PUSH2 0x88C SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP5 PUSH2 0x4AD7 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x8B6 JUMPI PUSH1 0x1 SLOAD PUSH2 0x8B6 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP4 PUSH2 0x4AD7 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x942 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH3 0xF4240 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9B4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9D8 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST EQ PUSH2 0xA3F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D757374206265203D3D2031000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0xACF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0xBC2 SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5860 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBDF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC03 SWAP2 SWAP1 PUSH2 0x5942 JUMP JUMPDEST PUSH2 0xC8F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D3174314445493A20696E76616C6964207369676E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6174757265730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCBC PUSH32 0x0 PUSH1 0xA PUSH2 0x5A8B JUMP JUMPDEST PUSH2 0xCC6 SWAP1 DUP9 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x68D54AA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x68D54AA SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD42 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD66 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 PUSH1 0x6 SLOAD PUSH3 0xF4240 PUSH2 0xD7D SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH2 0xD87 SWAP1 DUP4 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0xD91 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE07 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE2B SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST PUSH2 0xE35 SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0xE9E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F75676820636F6C6C61746572616C20696E20706F6F6C000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xEB9 SWAP1 DUP3 SWAP1 PUSH2 0x57CF JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xB SLOAD PUSH2 0xED7 SWAP1 DUP3 SWAP1 PUSH2 0x57CF JUMP JUMPDEST PUSH1 0xB SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0xEFE SWAP1 DUP11 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0xF08 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xF19 SWAP2 SWAP1 PUSH2 0x57CF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP11 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFA5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xFCF SWAP1 CALLER PUSH2 0x27CB JUMP JUMPDEST PUSH2 0x105B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F206772616E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH2 0x1065 DUP3 DUP3 PUSH2 0x4C47 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x10F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH3 0xF4240 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1163 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1187 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST LT ISZERO PUSH2 0x11EF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D757374206265203E3D2031000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP10 SWAP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1264 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1288 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST PUSH2 0x1292 SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH2 0x129C SWAP2 SWAP1 PUSH2 0x57CF JUMP JUMPDEST GT ISZERO PUSH2 0x1304 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5B506F6F6C277320436C6F7365645D3A204365696C696E672072656163686564 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x1394 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E743174314445493A207369676E61747572652069732065 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7870697265640000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x1487 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5860 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14C8 SWAP2 SWAP1 PUSH2 0x5942 JUMP JUMPDEST PUSH2 0x1553 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E743174314445493A20696E76616C6964207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7572657300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1580 PUSH32 0x0 PUSH1 0xA PUSH2 0x5A8B JUMP JUMPDEST PUSH2 0x158A SWAP1 DUP10 PUSH2 0x5AD2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x882AB63A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP11 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x882AB63A SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1601 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1625 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST SWAP3 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x163C SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH2 0x1646 SWAP1 DUP6 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x1650 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP4 POP PUSH2 0x1678 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER ADDRESS DUP12 PUSH2 0x4CAD JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP5 PUSH2 0x168A SWAP2 SWAP1 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x1694 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x16A5 SWAP2 SWAP1 PUSH2 0x57CF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x171C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1730 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ PUSH2 0x17E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH2 0x1065 DUP3 DUP3 PUSH2 0x4E4B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x185E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1882 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1917 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2480FCEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x2480FCEA SWAP1 PUSH2 0x1973 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B0F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1990 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19B4 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP3 GT ISZERO PUSH2 0x19C8 JUMPI PUSH3 0xF4240 SWAP2 POP JUMPDEST PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x19D8 DUP5 DUP7 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x19E2 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1A00 JUMPI PUSH2 0x19F6 DUP2 DUP4 PUSH2 0x57E7 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1A36 PUSH32 0x8118EEB5231A5FE4008A55B62860F6A0DB4F6C3AC04F8141927A9B3FEDD86D2F CALLER PUSH2 0x27CB JUMP JUMPDEST PUSH2 0x1A3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x2FDA313D9B5BB0B73BD003153F2FCCBC0DCA49791FDD1184DFAD82B44F54BD2E SWAP4 PUSH2 0x1AC9 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x1AFD PUSH32 0xE08E6E8E2E796F02419355C6FA268D1461FE6F2F34114A881A2DB47C0F240509 CALLER PUSH2 0x27CB JUMP JUMPDEST PUSH2 0x1B89 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A2043616C6C6572206973206E6F7420504152414D455445525F5345 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x545445525F524F4C450000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0xE DUP8 SWAP1 SSTORE PUSH1 0x10 DUP7 SWAP1 SSTORE PUSH1 0x11 DUP6 SWAP1 SSTORE PUSH1 0x5 DUP5 SWAP1 SSTORE PUSH1 0x6 DUP4 SWAP1 SSTORE PUSH1 0x7 DUP3 SWAP1 SSTORE PUSH1 0x8 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x17FE98B66D27BD793EA01BD8A23A54ACAB8EEB167D9EB016A0C7CD71C573920C SWAP1 PUSH1 0xE0 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1C3C PUSH32 0x103DA79FF3755FF7A17A557D28B73D37CB4DE0B3C3CC02FA6C48DF0F35071FBF CALLER PUSH2 0x27CB JUMP JUMPDEST PUSH2 0x1C45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH24 0x10000000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x4F40FD1C59F78D7A2220DA638CD9400DABA01E57C7965702F390BF13133CC31F SWAP4 PUSH2 0x1AC9 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1D58 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DC8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1DEC SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP2 LT DUP1 ISZERO PUSH2 0x1E00 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x1E8C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206E6565647320746F20626520626574 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7765656E202E30303030303120616E64202E3939393939390000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP13 SWAP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F01 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F25 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST PUSH2 0x1F2F SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH2 0x1F39 SWAP2 SWAP1 PUSH2 0x57CF JUMP JUMPDEST GT ISZERO PUSH2 0x1FEE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x44 PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0x506F6F6C206365696C696E6720726561636865642C206E6F206D6F7265204445 SWAP1 DUP3 ADD MSTORE PUSH32 0x492063616E206265206D696E7465642077697468207468697320636F6C6C6174 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x6572616C00000000000000000000000000000000000000000000000000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x7D1 JUMP JUMPDEST NUMBER DUP6 LT ISZERO PUSH2 0x207E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E744672616374696F6E616C4445493A207369676E617475 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x726520697320657870697265642E000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x34 DUP4 ADD DUP14 SWAP1 MSTORE SWAP4 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x54 DUP5 ADD MSTORE PUSH1 0x68 DUP4 ADD DUP10 SWAP1 MSTORE PUSH1 0x88 DUP4 ADD DUP9 SWAP1 MSTORE CHAINID PUSH1 0xA8 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC8 DUP5 ADD SWAP2 DUP3 SWAP1 MSTORE DUP1 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 MSTORE SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x2157 SWAP1 DUP5 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0xCC ADD PUSH2 0x5860 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2174 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2198 SWAP2 SWAP1 PUSH2 0x5942 JUMP JUMPDEST PUSH2 0x2224 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E744672616374696F6E616C4445493A20696E76616C6964 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207369676E617475726573000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH2 0x224F PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x227C PUSH32 0x0 PUSH1 0xA PUSH2 0x5A8B JUMP JUMPDEST PUSH2 0x2286 SWAP1 DUP14 PUSH2 0x5AD2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE DUP12 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP14 SWAP1 MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x13 SLOAD SWAP1 MLOAD PUSH32 0x537A30A700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x537A30A7 SWAP1 PUSH2 0x2302 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B53 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x231E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2342 SWAP2 SWAP1 PUSH2 0x5B7E JUMP JUMPDEST SWAP1 SWAP6 POP SWAP1 POP DUP11 DUP2 GT ISZERO PUSH2 0x23B1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F756768204445555320696E7075747465640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x23C6 SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH2 0x23D0 SWAP1 DUP8 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x23DA SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE SWAP2 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2452 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2466 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH2 0x2490 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP CALLER ADDRESS DUP16 PUSH2 0x4CAD JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP7 PUSH2 0x24A2 SWAP2 SWAP1 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x24AC SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x24BD SWAP2 SWAP1 PUSH2 0x57CF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2534 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2548 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2585 PUSH32 0xD4A2989857A24DE9C91E1DAFFE87D051D59F52B68729413D1EF656EC487E530 CALLER PUSH2 0x27CB JUMP JUMPDEST PUSH2 0x258E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x12 SLOAD DUP3 GT ISZERO PUSH2 0x25FA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x616D6F756E743C3D64616F536861726500000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x266E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2682 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2698 SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x3A708F2F1C75B12457D207CF1E259AB9F87BBFCCB29672903ACF4661BD342E49 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x2719 PUSH32 0xC65532185ED70B2E999433E2E9FAC124E083ACB13EC183A4E05944DA0792337B CALLER PUSH2 0x27CB JUMP JUMPDEST PUSH2 0x2722 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH21 0x10000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x6BDFE227D5DB299C59AA56D5F846F40DBD73B271AAA78E18ED74FC3E00B8AA6B SWAP4 PUSH2 0x1AC9 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27C2 SWAP1 DUP4 PUSH2 0x4EB1 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27C2 SWAP1 DUP4 PUSH2 0x4EC7 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x2890 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A205265636F6C6C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x61746572616C697A652069732070617573656400000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST NUMBER DUP2 PUSH1 0x80 ADD MLOAD LT ISZERO PUSH2 0x2924 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP3 DUP2 ADD MLOAD PUSH1 0x4 SLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x80 DUP7 ADD MLOAD SWAP4 MLOAD PUSH1 0x0 SWAP6 PUSH2 0x296D SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP6 SWAP5 SWAP2 SWAP1 SWAP2 AND SWAP3 SWAP2 CHAINID SWAP1 PUSH1 0x20 ADD PUSH2 0x5BA2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH1 0xA0 DUP6 ADD MLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE SWAP2 SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x6793F0AC SWAP2 PUSH2 0x29FE SWAP2 DUP6 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x5C4D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A1B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A3F SWAP2 SWAP1 PUSH2 0x5942 JUMP JUMPDEST PUSH2 0x2ACB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A20696E76616C69 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x64207369676E6174757265730000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AF8 PUSH32 0x0 PUSH1 0xA PUSH2 0x5A8B JUMP JUMPDEST DUP4 MLOAD PUSH2 0x2B04 SWAP2 SWAP1 PUSH2 0x5AD2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B75 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2B99 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C2E SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 DUP9 ADD MLOAD SWAP1 MLOAD PUSH32 0x2480FCEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x2480FCEA SWAP2 PUSH2 0x2C8D SWAP2 PUSH1 0x4 ADD PUSH2 0x5B0F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2CAA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2CCE SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 DUP9 ADD MLOAD DUP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0xFC011061 SWAP2 DUP10 SWAP2 SWAP1 PUSH2 0x2D0C SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x2D1C JUMPI PUSH2 0x2D1C PUSH2 0x5D0B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x84 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D94 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2DB8 SWAP2 SWAP1 PUSH2 0x5B7E JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x2DEA PUSH32 0x0 PUSH1 0xA PUSH2 0x5A8B JUMP JUMPDEST PUSH2 0x2DF4 SWAP1 DUP5 PUSH2 0x5A97 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP10 PUSH1 0x60 ADD MLOAD PUSH1 0x8 SLOAD PUSH1 0x10 SLOAD PUSH3 0xF4240 PUSH2 0x2E11 SWAP2 SWAP1 PUSH2 0x57CF JUMP JUMPDEST PUSH2 0x2E1B SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH2 0x2E25 SWAP1 DUP6 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x2E2F SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH2 0x2E57 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER ADDRESS DUP6 PUSH2 0x4CAD JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2ECB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2EDF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x2F75 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2FE2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3006 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST ISZERO PUSH2 0x3093 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x36 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D416C676F726974686D69634445493A20436F6C6C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x61746572616C20726174696F206D757374206265203000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0x3123 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A72656465656D416C676F726974686D69634445493A207369676E61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7475726520697320657870697265642E00000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x3216 SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5860 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3233 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3257 SWAP2 SWAP1 PUSH2 0x5942 JUMP JUMPDEST PUSH2 0x32E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D416C676F726974686D69634445493A20696E7661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964207369676E617475726573000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP7 SWAP1 PUSH3 0xF4240 SWAP1 PUSH2 0x32F7 SWAP1 DUP3 PUSH2 0x57E7 JUMP JUMPDEST PUSH2 0x3301 SWAP1 DUP4 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x330B SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH2 0x331D PUSH3 0xF4240 DUP5 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x3327 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x3345 SWAP1 DUP3 SWAP1 PUSH2 0x57CF JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xC SLOAD PUSH2 0x3363 SWAP1 DUP3 SWAP1 PUSH2 0x57CF JUMP JUMPDEST PUSH1 0xC SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0x338A SWAP1 DUP11 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x3394 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x33A5 SWAP2 SWAP1 PUSH2 0x57CF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP11 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x341C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3430 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH2 0xF77 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xF4240 DUP3 PUSH2 0x34C4 PUSH32 0x0 PUSH1 0xA PUSH2 0x5A8B JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3535 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3559 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST PUSH2 0x3563 SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH2 0x356D SWAP2 SWAP1 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x3577 SWAP2 SWAP1 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x27C5 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH24 0x10000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x362E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6275794261636B444555533A204275796261636B206973207061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7573656400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0x36BE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A6275794261636B444555533A207369676E61747572652069732065 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7870697265642E00000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 DUP9 SWAP2 AND DUP8 DUP8 CHAINID PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x36FB SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5BA2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x378A SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5860 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x37A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37CB SWAP2 SWAP1 PUSH2 0x5942 JUMP JUMPDEST PUSH2 0x3857 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6275794261636B444555533A20696E76616C6964207369676E61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7475726573000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x386D DUP10 PUSH2 0x17EE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 DUP11 MLOAD PUSH2 0x3887 SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x3897 JUMPI PUSH2 0x3897 PUSH2 0x5D0B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH1 0x7 SLOAD PUSH3 0xF4240 PUSH2 0x38C1 SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x3C04AF9F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x3C04AF9F SWAP1 PUSH2 0x3917 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B53 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3934 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3958 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST PUSH2 0x3962 SWAP2 SWAP1 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x396C SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x399B PUSH32 0x0 PUSH1 0xA PUSH2 0x5A8B JUMP JUMPDEST PUSH2 0x39A5 SWAP1 DUP4 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP14 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A31 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH2 0x3A5A SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP CALLER DUP4 PUSH2 0x4AD7 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3AEE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B5B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3B7F SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST ISZERO PUSH2 0x3BE6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D7573742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x3C76 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x3D69 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5860 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3D86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3DAA SWAP2 SWAP1 PUSH2 0x5942 JUMP JUMPDEST PUSH2 0x3E36 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A20696E76616C69 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x64207369676E6174757265730000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x14DA4EE100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x14DA4EE1 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3EAC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3ED0 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST SWAP2 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x3EE7 SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH2 0x3EF1 SWAP1 DUP5 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x3EFB SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST SWAP2 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP4 PUSH2 0x3F0F SWAP2 SWAP1 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x3F19 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3F2A SWAP2 SWAP1 PUSH2 0x57CF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3FA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3FB6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x402C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4040 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27C5 SWAP1 PUSH2 0x4F06 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x4081 SWAP1 CALLER PUSH2 0x27CB JUMP JUMPDEST PUSH2 0x17E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F207265766F6B6500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH2 0x4137 PUSH32 0xA84A5389AD41F9AAB0831B01E5384CAE76E7A7FD09131C206FF7927C201C3857 CALLER PUSH2 0x27CB JUMP JUMPDEST PUSH2 0x4140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH22 0x1000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x5860C5063A65E23CEA4E2E2925F1A841BB6D1BC9615BD425F8DD084980B05141 SWAP4 PUSH2 0x1AC9 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x41F3 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x27CB JUMP JUMPDEST PUSH2 0x4259 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A796F7520617265206E6F74207472757374790000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE DUP5 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x42CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8B6 SWAP2 SWAP1 PUSH2 0x5942 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x4378 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x43E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x440C SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP2 LT DUP1 ISZERO PUSH2 0x4420 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x44D2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x53 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D4672616374696F6E616C4445493A20436F6C6C61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x746572616C20726174696F206E6565647320746F206265206265747765656E20 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x2E30303030303120616E64202E39393939393900000000000000000000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x7D1 JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x4562 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A72656465656D4672616374696F6E616C4445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7572652069732065787069726564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x34 DUP4 ADD DUP13 SWAP1 MSTORE SWAP4 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x54 DUP5 ADD MSTORE PUSH1 0x68 DUP4 ADD DUP9 SWAP1 MSTORE PUSH1 0x88 DUP4 ADD DUP8 SWAP1 MSTORE CHAINID PUSH1 0xA8 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC8 DUP5 ADD SWAP2 DUP3 SWAP1 MSTORE DUP1 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 MSTORE SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x463B SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0xCC ADD PUSH2 0x5860 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4658 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x467C SWAP2 SWAP1 PUSH2 0x5942 JUMP JUMPDEST PUSH2 0x4708 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D4672616374696F6E616C4445493A20696E76616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6964207369676E61747572657300000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP10 SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH1 0x6 SLOAD PUSH3 0xF4240 PUSH2 0x4727 SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH2 0x4731 SWAP1 DUP15 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x473B SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x474D DUP9 DUP5 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x4757 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH2 0x4761 SWAP1 DUP4 PUSH2 0x57E7 JUMP JUMPDEST SWAP1 POP DUP11 PUSH2 0x4771 PUSH3 0xF4240 DUP4 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x477B SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST SWAP5 POP PUSH1 0x0 PUSH2 0x47AA PUSH32 0x0 PUSH1 0xA PUSH2 0x5A8B JUMP JUMPDEST PUSH2 0x47B4 SWAP1 DUP5 PUSH2 0x5A97 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x47C6 DUP11 DUP5 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x47D0 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x47E0 PUSH3 0xF4240 DUP4 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x47EA SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP3 SWAP9 POP SWAP1 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP5 POP PUSH4 0x70A08231 SWAP4 POP PUSH1 0x24 ADD SWAP2 POP PUSH2 0x484D SWAP1 POP JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x486A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x488E SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST PUSH2 0x4898 SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x4901 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F75676820636F6C6C61746572616C20696E20706F6F6C000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x491C SWAP1 DUP3 SWAP1 PUSH2 0x57CF JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xB SLOAD PUSH2 0x493A SWAP1 DUP3 SWAP1 PUSH2 0x57CF JUMP JUMPDEST PUSH1 0xB SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x4958 SWAP1 DUP4 SWAP1 PUSH2 0x57CF JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xC SLOAD PUSH2 0x4976 SWAP1 DUP4 SWAP1 PUSH2 0x57CF JUMP JUMPDEST PUSH1 0xC SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0x499D SWAP1 DUP13 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x49A7 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x49B8 SWAP2 SWAP1 PUSH2 0x57CF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP13 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4A2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4A43 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH2 0x2EB1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27C2 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x4F10 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 DUP8 AND SWAP2 PUSH2 0x4B6E SWAP2 SWAP1 PUSH2 0x5D3A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4BAB 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 0x4BB0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4BDA JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4BDA JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4BDA SWAP2 SWAP1 PUSH2 0x5942 JUMP JUMPDEST PUSH2 0x4C40 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F4641494C454400 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x4C5F SWAP1 DUP3 PUSH2 0x4AA5 JUMP JUMPDEST ISZERO PUSH2 0x1065 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 DUP9 AND SWAP2 PUSH2 0x4D4C SWAP2 SWAP1 PUSH2 0x5D3A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4D89 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 0x4D8E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4DB8 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4DB8 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4DB8 SWAP2 SWAP1 PUSH2 0x5942 JUMP JUMPDEST PUSH2 0x4E43 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F46524F4D5F4641 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x494C454400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x4E63 SWAP1 DUP3 PUSH2 0x4F5F JUMP JUMPDEST ISZERO PUSH2 0x1065 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EBD DUP4 DUP4 PUSH2 0x4F91 JUMP JUMPDEST PUSH1 0x60 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD ISZERO ISZERO PUSH2 0x27C2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27C5 DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x4F57 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 0x27C5 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x27C5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27C2 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x504C JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x5024 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E756D657261626C655365743A20696E646578206F7574206F6620626F756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6473000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x5039 JUMPI PUSH2 0x5039 PUSH2 0x5D0B JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x5135 JUMPI PUSH1 0x0 PUSH2 0x5070 PUSH1 0x1 DUP4 PUSH2 0x57E7 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x5084 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x509D JUMPI PUSH2 0x509D PUSH2 0x5D0B JUMP 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 0x50C0 JUMPI PUSH2 0x50C0 PUSH2 0x5D0B JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH2 0x50D7 DUP4 PUSH1 0x1 PUSH2 0x57CF JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x50F9 JUMPI PUSH2 0x50F9 PUSH2 0x5D56 JUMP 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 0x27C5 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x27C5 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x517A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27C2 DUP3 PUSH2 0x513F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x51AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x51C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x51E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x5200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x522C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5238 DUP9 DUP3 DUP10 ADD PUSH2 0x519C JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x525C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x526C PUSH1 0x20 DUP5 ADD PUSH2 0x513F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x52C7 JUMPI PUSH2 0x52C7 PUSH2 0x5275 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x5314 JUMPI PUSH2 0x5314 PUSH2 0x5275 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5336 JUMPI PUSH2 0x5336 PUSH2 0x5275 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5351 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x5366 PUSH2 0x5361 DUP4 PUSH2 0x531C JUMP JUMPDEST PUSH2 0x52CD JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP7 DUP5 GT ISZERO PUSH2 0x5385 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x53A0 JUMPI DUP1 CALLDATALOAD DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x5389 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x53D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x53E0 DUP5 DUP3 DUP6 ADD PUSH2 0x5340 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x5403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP6 CALLDATALOAD SWAP8 PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP8 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP7 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP7 POP PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP6 POP PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 ADD CALLDATALOAD SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x544F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5495 DUP11 DUP3 DUP12 ADD PUSH2 0x519C JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x54BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 DUP2 DUP5 ADD SLT PUSH2 0x54DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x20 PUSH2 0x54EC PUSH2 0x5361 DUP4 PUSH2 0x531C JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP6 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP8 DUP5 GT ISZERO PUSH2 0x550B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP8 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x55C0 JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x5530 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP11 ADD SWAP2 POP DUP11 PUSH1 0x3F DUP4 ADD SLT PUSH2 0x5545 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP6 DUP3 ADD CALLDATALOAD PUSH1 0x40 DUP3 DUP3 GT ISZERO PUSH2 0x555B JUMPI PUSH2 0x555B PUSH2 0x5275 JUMP JUMPDEST PUSH2 0x558A DUP9 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP13 DUP6 ADD AND ADD PUSH2 0x52CD JUMP JUMPDEST SWAP3 POP DUP2 DUP4 MSTORE DUP13 DUP2 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x55A1 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP2 DUP6 ADD DUP10 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 SWAP1 DUP3 ADD DUP8 ADD MSTORE DUP5 MSTORE POP SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x550F JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x55DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x55F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0xC0 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x560A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5612 PUSH2 0x52A4 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x5632 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x563E DUP8 DUP3 DUP7 ADD PUSH2 0x5340 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x566A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5676 DUP8 DUP3 DUP7 ADD PUSH2 0x54CA JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x569E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x56BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x56C9 DUP11 DUP4 DUP12 ADD PUSH2 0x5340 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x56ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x56FA DUP10 DUP3 DUP11 ADD PUSH2 0x519C JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5721 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x572A DUP5 PUSH2 0x513F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0x573F PUSH1 0x40 DUP6 ADD PUSH2 0x513F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x5761 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5794 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x56FA DUP10 DUP3 DUP11 ADD PUSH2 0x519C JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x57E2 JUMPI PUSH2 0x57E2 PUSH2 0x57A0 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x57F9 JUMPI PUSH2 0x57F9 PUSH2 0x57A0 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD DUP6 DUP4 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP6 ADD MSTORE DUP2 DUP6 DUP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP1 POP PUSH1 0x60 DUP7 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP7 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x5934 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP8 DUP7 SUB ADD DUP4 MSTORE DUP2 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP11 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x58EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 ADD DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5904 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP12 SGT ISZERO PUSH2 0x5913 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5920 DUP8 DUP3 DUP9 DUP6 ADD PUSH2 0x5817 JUMP JUMPDEST SWAP7 POP POP POP SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x588A JUMP JUMPDEST POP SWAP3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5954 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x5964 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH2 0x59C4 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x59AA JUMPI PUSH2 0x59AA PUSH2 0x57A0 JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH2 0x59B7 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH2 0x5970 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x59DB JUMPI POP PUSH1 0x1 PUSH2 0x27C5 JUMP JUMPDEST DUP2 PUSH2 0x59E8 JUMPI POP PUSH1 0x0 PUSH2 0x27C5 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x59FE JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x5A08 JUMPI PUSH2 0x5A24 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x27C5 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x5A19 JUMPI PUSH2 0x5A19 PUSH2 0x57A0 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x27C5 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x5A47 JUMPI POP DUP2 DUP2 EXP PUSH2 0x27C5 JUMP JUMPDEST PUSH2 0x5A51 DUP4 DUP4 PUSH2 0x596B JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x5A83 JUMPI PUSH2 0x5A83 PUSH2 0x57A0 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27C2 DUP4 DUP4 PUSH2 0x59CC JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5ACD JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x5B0A JUMPI PUSH2 0x5B0A PUSH2 0x57A0 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5B47 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x5B2B JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD PUSH2 0x27C5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5B91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 DUP1 DUP10 PUSH1 0x60 SHL AND DUP4 MSTORE PUSH1 0x14 DUP4 ADD DUP9 MLOAD PUSH1 0x20 DUP1 DUP12 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5BF7 JUMPI DUP2 MLOAD DUP6 MSTORE SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5BDB JUMP JUMPDEST POP POP POP POP PUSH1 0x60 SWAP8 SWAP1 SWAP8 SHL AND DUP7 MSTORE POP POP PUSH1 0x14 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x34 DUP4 ADD MSTORE PUSH1 0x54 DUP3 ADD MSTORE PUSH1 0x74 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C3C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5C24 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x8B6 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD DUP5 DUP4 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP6 ADD MSTORE DUP2 DUP6 MLOAD DUP1 DUP5 MSTORE PUSH1 0x60 DUP7 ADD SWAP2 POP PUSH1 0x60 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP4 POP DUP3 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5CFD JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP9 DUP8 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP9 MSTORE PUSH2 0x5CC0 DUP2 DUP9 DUP11 ADD DUP10 DUP6 ADD PUSH2 0x5C21 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP7 SWAP1 SWAP7 ADD DUP6 ADD SWAP6 POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5C7B JUMP JUMPDEST POP SWAP4 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x5D4C DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x5C21 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC7 SWAP12 ISZERO CALLDATACOPY CHAINID MSTORE8 GASPRICE PUSH14 0xF153629C30A0770ABE2F4BCA6A75 0x4B SMOD 0xE 0x2B 0xC5 DUP4 0xCE BLOCKHASH PUSH15 0x7764736F6C634300080A0033000000 ", + "sourceMap": "1679:23477:7:-:0;;;2874:1;2844:31;;;;2934:30;;;;3104:4;3076:32;;3216:1;3182:35;;3266:27;;3913:30;;;-1:-1:-1;;;;4025:33:7;;;4459:1174;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4687:35:7;;;;;;4686:83;;-1:-1:-1;;;;;;4732:36:7;;;;4686:83;:126;;;;-1:-1:-1;;;;;;4778:33:7;;;;4686:126;:165;;;;-1:-1:-1;;;;;;4821:29:7;;;;4686:165;:203;;;;-1:-1:-1;;;;;;4860:28:7;;;;4686:203;:235;;;;-1:-1:-1;;;;;;4898:22:7;;;;4686:235;4674:285;;;;-1:-1:-1;;;4674:285:7;;1101:2:39;4674:285:7;;;1083:21:39;1140:2;1120:18;;;1113:30;1179:29;1159:18;;;1152:57;1226:18;;4674:285:7;;;;;;;;4963:11;:38;;-1:-1:-1;;;;;4963:38:7;;;-1:-1:-1;;;;;;4963:38:7;;;;;;;5005:20;:44;;;;;;;;;;;5053:21;:46;;;;;;;;;;;5103:18;:40;;;;;;;;;;;;4963:38;5147:45;;;;;;;;;;5196:12;:28;;;5261:27;;;-1:-1:-1;;;5261:27:7;;;;:25;;:27;;;;;;;;;;;;;5103:40;5261:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5247:41;;;;5255:2;5247:41;:::i;:::-;5228:60;;5293:46;1767:4:20;5324:14:7;5293:10;:46::i;:::-;5343:40;3390:24;5367:15;5343:10;:40::i;:::-;5387:42;3458:26;5413:15;5387:10;:42::i;:::-;5433:51;3609:35;5468:15;5433:10;:51::i;:::-;5488:43;3529:27;5515:15;5488:10;:43::i;:::-;5535:40;3685:24;5559:15;5535:10;:40::i;:::-;5579:50;3841:34;5613:15;5579:10;:50::i;:::-;4459:1174;;;;;;;1679:23477;;6653:110:20;6731:25;6742:4;6748:7;6731:10;:25::i;:::-;6653:110;;:::o;7090:184::-;7163:6;:12;;;;;;;;;;;:33;;7188:7;;7163:24;;;;;:33;;:::i;:::-;7159:109;;;7217:40;;686:10:4;;-1:-1:-1;;;;;7217:40:20;;;7229:4;;7217:40;;;;;7090:184;;:::o;4866:141:38:-;4936:4;4959:41;4964:3;-1:-1:-1;;;;;;4984:14:38;;;;4976:23;4959:4;:41::i;:::-;4952:48;;4866:141;;;;;:::o;1613:404::-;1676:4;3874:19;;;:12;;;:19;;;;;;1692:319;;-1:-1:-1;1734:23:38;;;;;;;;:11;:23;;;;;;;;;;;;;1914:18;;1892:19;;;:12;;;:19;;;;;;:40;;;;1946:11;;1692:319;-1:-1:-1;1995:5:38;1988:12;;14:177:39;93:13;;-1:-1:-1;;;;;135:31:39;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:698::-;320:6;328;336;344;352;360;368;421:3;409:9;400:7;396:23;392:33;389:53;;;438:1;435;428:12;389:53;461:40;491:9;461:40;:::i;:::-;451:50;;520:49;565:2;554:9;550:18;520:49;:::i;:::-;510:59;;588:49;633:2;622:9;618:18;588:49;:::i;:::-;578:59;;656:49;701:2;690:9;686:18;656:49;:::i;:::-;646:59;;724:50;769:3;758:9;754:19;724:50;:::i;:::-;714:60;;814:3;803:9;799:19;793:26;783:36;;838:50;883:3;872:9;868:19;838:50;:::i;:::-;828:60;;196:698;;;;;;;;;;:::o;1255:273::-;1323:6;1376:2;1364:9;1355:7;1351:23;1347:32;1344:52;;;1392:1;1389;1382:12;1344:52;1424:9;1418:16;1474:4;1467:5;1463:16;1456:5;1453:27;1443:55;;1494:1;1491;1484:12;1443:55;1517:5;1255:273;-1:-1:-1;;;1255:273:39:o;1533:222::-;1573:4;1601:1;1598;1595:8;1592:131;;;1645:10;1640:3;1636:20;1633:1;1626:31;1680:4;1677:1;1670:15;1708:4;1705:1;1698:15;1592:131;-1:-1:-1;1740:9:39;;1533:222::o;:::-;1679:23477:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@DAO_SHARE_COLLECTOR_1648": { + "entryPoint": null, + "id": 1648, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DEFAULT_ADMIN_ROLE_6026": { + "entryPoint": null, + "id": 6026, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@PARAMETER_SETTER_ROLE_1653": { + "entryPoint": null, + "id": 1653, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@TRUSTY_ROLE_1643": { + "entryPoint": null, + "id": 1643, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_add_11596": { + "entryPoint": 20240, + "id": 11596, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_at_11736": { + "entryPoint": 20369, + "id": 11736, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_contains_11696": { + "entryPoint": null, + "id": 11696, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_6258": { + "entryPoint": 19527, + "id": 6258, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_length_11710": { + "entryPoint": null, + "id": 11710, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_msgSender_444": { + "entryPoint": null, + "id": 444, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_remove_11677": { + "entryPoint": 20556, + "id": 11677, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_revokeRole_6282": { + "entryPoint": 20043, + "id": 6282, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@add_11764": { + "entryPoint": 19109, + "id": 11764, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@at_11851": { + "entryPoint": 20145, + "id": 11851, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@availableExcessCollatDV_1935": { + "entryPoint": 6126, + "id": 1935, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@bonus_rate_1609": { + "entryPoint": null, + "id": 1609, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@buyBackDEUS_3334": { + "entryPoint": 13697, + "id": 3334, + "parameterSlots": 6, + "returnSlots": 0 + }, + "@buyBackPaused_1665": { + "entryPoint": null, + "id": 1665, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@buyback_fee_1571": { + "entryPoint": null, + "id": 1571, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@collatDollarBalance_1873": { + "entryPoint": 13458, + "id": 1873, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@collectDaoShare_3374": { + "entryPoint": 9563, + "id": 3374, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@collectRedemption_3047": { + "entryPoint": 1795, + "id": 3047, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@contains_11812": { + "entryPoint": 20167, + "id": 11812, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@daoShare_1615": { + "entryPoint": null, + "id": 1615, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@emergencyWithdrawERC20_3394": { + "entryPoint": 16841, + "id": 3394, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@getChainID_1947": { + "entryPoint": null, + "id": 1947, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getRoleAdmin_6121": { + "entryPoint": null, + "id": 6121, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMemberCount_6088": { + "entryPoint": 16462, + "id": 6088, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMember_6107": { + "entryPoint": 10154, + "id": 6107, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@grantRole_6147": { + "entryPoint": 4019, + "id": 6147, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@hasRole_6072": { + "entryPoint": 10187, + "id": 6072, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@lastRedeemed_1589": { + "entryPoint": null, + "id": 1589, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@length_11827": { + "entryPoint": 20230, + "id": 11827, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@mint1t1DEI_2089": { + "entryPoint": 4201, + "id": 2089, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@mintAlgorithmicDEI_2200": { + "entryPoint": 14950, + "id": 2200, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@mintFractionalDEI_2394": { + "entryPoint": 7376, + "id": 2394, + "parameterSlots": 7, + "returnSlots": 1 + }, + "@mintPaused_1656": { + "entryPoint": null, + "id": 1656, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@minting_fee_1567": { + "entryPoint": null, + "id": 1567, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@pausedPrice_1606": { + "entryPoint": null, + "id": 1606, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@pool_ceiling_1603": { + "entryPoint": null, + "id": 1603, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@recollat_fee_1573": { + "entryPoint": null, + "id": 1573, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@recollateralizeDEI_3208": { + "entryPoint": 10211, + "id": 3208, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@recollateralizePaused_1662": { + "entryPoint": null, + "id": 1662, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@redeem1t1DEI_2543": { + "entryPoint": 2236, + "id": 2543, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@redeemAlgorithmicDEI_2919": { + "entryPoint": 12015, + "id": 2919, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@redeemCollateralBalances_1581": { + "entryPoint": null, + "id": 1581, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@redeemDEUSBalances_1577": { + "entryPoint": null, + "id": 1577, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@redeemFractionalDEI_2778": { + "entryPoint": 17138, + "id": 2778, + "parameterSlots": 6, + "returnSlots": 0 + }, + "@redeemPaused_1659": { + "entryPoint": null, + "id": 1659, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@redemption_delay_1612": { + "entryPoint": null, + "id": 1612, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@redemption_fee_1569": { + "entryPoint": null, + "id": 1569, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@remove_11788": { + "entryPoint": 20319, + "id": 11788, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@renounceRole_6195": { + "entryPoint": 5951, + "id": 6195, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@revokeRole_6173": { + "entryPoint": 16485, + "id": 6173, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@safeTransferFrom_8741": { + "entryPoint": 19629, + "id": 8741, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@safeTransfer_8695": { + "entryPoint": 19159, + "id": 8695, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@setPoolParameters_3543": { + "entryPoint": 6867, + "id": 3543, + "parameterSlots": 7, + "returnSlots": 0 + }, + "@toggleBuyBack_3478": { + "entryPoint": 7186, + "id": 3478, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@toggleMinting_3415": { + "entryPoint": 9967, + "id": 3415, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@toggleRecollateralize_3457": { + "entryPoint": 6668, + "id": 3457, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@toggleRedeeming_3436": { + "entryPoint": 16653, + "id": 3436, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@unclaimedPoolCollateral_1583": { + "entryPoint": null, + "id": 1583, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@unclaimedPoolDEUS_1585": { + "entryPoint": null, + "id": 1585, + "parameterSlots": 0, + "returnSlots": 0 + }, + "abi_decode_address": { + "entryPoint": 20799, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_array_bytes_calldata_dyn_calldata": { + "entryPoint": 20892, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_array_bytes_dyn": { + "entryPoint": 21706, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_array_uint256_dyn": { + "entryPoint": 21312, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 20840, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_uint256t_address": { + "entryPoint": 22284, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr": { + "entryPoint": 21419, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bool_fromMemory": { + "entryPoint": 22850, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32": { + "entryPoint": 20867, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32t_address": { + "entryPoint": 21065, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes32t_uint256": { + "entryPoint": 21672, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_struct$_RecollateralizeDEI_$1556_memory_ptr": { + "entryPoint": 21964, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256_fromMemory": { + "entryPoint": 22526, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256t_address": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_memory_ptrt_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": { + "entryPoint": 22149, + "id": null, + "parameterSlots": 2, + "returnSlots": 6 + }, + "abi_decode_tuple_t_uint256t_uint256_fromMemory": { + "entryPoint": 23422, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": { + "entryPoint": 20968, + "id": null, + "parameterSlots": 2, + "returnSlots": 5 + }, + "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": { + "entryPoint": 22344, + "id": null, + "parameterSlots": 2, + "returnSlots": 6 + }, + "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": { + "entryPoint": 21556, + "id": null, + "parameterSlots": 2, + "returnSlots": 7 + }, + "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256": { + "entryPoint": 21480, + "id": null, + "parameterSlots": 2, + "returnSlots": 7 + }, + "abi_encode_bytes_calldata": { + "entryPoint": 22551, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_struct_MintFD_Params": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_packed_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 23458, + "id": null, + "parameterSlots": 7, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 7, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 23866, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 23311, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 22624, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 23629, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_0553f3220b1c65f13a1a0bcfbae12cc9d57080d375095d8011e479f9a164d51f__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_0f701899e5d254af158b94e181e8c864fa1fa8407b8e83a84b212f1856c034bb__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_1eb003467dd04b32fe18359370bc0d0e41e237ed2bf1be23765de9081983dd0d__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_219e324e833041c644ccb1dd3dba73aaa878497ddb310916decd8247cfffb1bd__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_2b6a8f4152754b6a991bf1b0a666b82b00923d2fd769bf1e3367643b70f91813__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_32c377f750f3acdff4f31738199007cf625ea4cb5a4b65f0253238ad0d6fe603__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3517d2a2517b8811826efd915add7c546f6c6059a93aba596e992ef7ede2c237__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3871818a433a796d8749bf69d3757469c36cba69a6da101f4f86b64a03c25fdf__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_38c9fd1b67df6e999cac6aaf315cc13e0fa4fc296b57f92466d27a378c17f081__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3a4aaa4225031aefd603a0181e03bfba377ad02f3a40d8d4ff79e4b75af91117__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3b8d4b54db08ed890798fdc55ba1c410b1b90a23a79193c7486d04051b31717b__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3cf3652b2acfb73942e459b043ef1100fffabb4093e48d3162412f77ff7ce9c4__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_415add743154eebc1c14f0dcbb6d42364bd9228c5bfab92187476352ba4cf3a4__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_43ec8f409eb317e256e176d402e36ec6af276af1f8f749e4d9fbe21bcd7bc664__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_565f0845894e0f662254a5093763af0fee3605d54c84edbcf11c672de6a88543__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_5a2d3f9bcb3c5bd0b1926b1856db5dd186810b6e73d5cb9f87ee953c4da7fee2__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_70791a0be90f5705149d45e0236213cb0328457b5d86e6288006e4f6774b09e7__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_74a9279f050c6419792bc3daa57da050d8e2f426f944681941d34e8909be7eac__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_76b82cf0f5d67f7f31fa6377a21018dea36302e26d7842fad5ba832c330157dd__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_7b7d20f9ca6e9adc6378137dbeda8a962bb9bf07440b2b9db28bb53f4e464fce__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_98984f103b51115a1419edfc23f41285c32977e7b02cc32e067bba007d26b4f9__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_af86e93bd0220a55e8ca62f5f35862820e5999de1371ac209bb45c45b39ee5de__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_bff4c2607c2670a7edf36f88b5d5987db2ccc6a59b36f486c4c57f193ba00833__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_c668331e1a5c68ea41572b6fbf581e9b4ce7392915c1ff6a6872ae765618f9ee__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_c70433350355bf0543fc06a466fe44bcb01281d5a63b8bb87c74c17650f3e4c7__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_cff49a4dc330adf1553dee705fac7862f639b33b74fda177589900b9506a9737__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_d441a1ecab801b1c575c77e3c185431fd7b0029d666fc7417a9f7556b3f83d6f__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_de458c40ee20c89c9807b7a8a5908e3319b480e8b007f55d3d683bc68bb7186e__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_f52391ebd610d5d9d518357ceeaf45367429ac1fd3150210dcaba2450d5bcce8__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_f64a17d208f26e05f2312b5ee80f462bf5bab19979dfd330950359be93bd2d66__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_f836b804fb91fcbb3dafb5e724f5eeb776ededc2eaf47030c5f454694abcbafe__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_f8eb31fdc269657c54ee10149955fecbcb75254d3eeec631bdecc57de525010b__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_ffc61d1a84775e893520fbdfe0ea8909f9284081f97dd4e8ed1bc343abeb295e__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__to_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_struct$_MintFD_Params_$3600_memory_ptr__to_t_struct$_MintFD_Params_$3600_memory_ptr__fromStack_reversed": { + "entryPoint": 23379, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 8, + "returnSlots": 1 + }, + "allocate_memory": { + "entryPoint": 21197, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "allocate_memory_5709": { + "entryPoint": 21156, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "array_allocation_size_array_uint256_dyn": { + "entryPoint": 21276, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 22479, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_div_t_uint256": { + "entryPoint": 23191, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_exp_helper": { + "entryPoint": 22891, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "checked_exp_t_uint256_t_uint256": { + "entryPoint": 23179, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_exp_unsigned": { + "entryPoint": 22988, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_mul_t_uint256": { + "entryPoint": 23250, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 22503, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "copy_memory_to_memory": { + "entryPoint": 23585, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "panic_error_0x11": { + "entryPoint": 22432, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x31": { + "entryPoint": 23894, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 23819, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 21109, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:40011:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "63:147:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "73:29:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "95:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "82:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "82:20:39" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "73:5:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "188:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "200:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "190:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "190:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "190:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "124:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "135:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "142:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "131:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "131:54:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "121:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "121:65:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "114:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "114:73:39" + }, + "nodeType": "YulIf", + "src": "111:93:39" + } + ] + }, + "name": "abi_decode_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "42:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "53:5:39", + "type": "" + } + ], + "src": "14:196:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "285:116:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "331:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "340:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "343:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "333:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "333:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "333:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "306:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "315:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "302:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "302:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "327:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "298:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "298:32:39" + }, + "nodeType": "YulIf", + "src": "295:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "356:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "385:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "366:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "366:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "356:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "251:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "262:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "274:6:39", + "type": "" + } + ], + "src": "215:186:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "507:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "517:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "529:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "540:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "525:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "525:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "517:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "559:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "570:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "552:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "552:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "552:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "476:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "487:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "498:4:39", + "type": "" + } + ], + "src": "406:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "658:110:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "704:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "713:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "716:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "706:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "706:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "706:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "679:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "688:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "675:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "675:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "700:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "671:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "671:32:39" + }, + "nodeType": "YulIf", + "src": "668:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "729:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "752:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "739:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "739:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "729:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "624:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "635:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "647:6:39", + "type": "" + } + ], + "src": "588:180:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "874:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "884:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "896:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "907:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "892:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "892:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "884:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "926:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "937:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "919:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "919:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "919:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "843:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "854:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "865:4:39", + "type": "" + } + ], + "src": "773:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1046:283:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1095:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1104:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1107:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1097:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1097:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1097:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1074:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1082:4:39", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1070:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1070:17:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "1089:3:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1066:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1066:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1059:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1059:35:39" + }, + "nodeType": "YulIf", + "src": "1056:55:39" + }, + { + "nodeType": "YulAssignment", + "src": "1120:30:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1143:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1130:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1130:20:39" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1120:6:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1193:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1202:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1205:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1195:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1195:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1195:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1165:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1173:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1162:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1162:30:39" + }, + "nodeType": "YulIf", + "src": "1159:50:39" + }, + { + "nodeType": "YulAssignment", + "src": "1218:29:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1234:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1242:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1230:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1230:17:39" + }, + "variableNames": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "1218:8:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1307:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1316:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1319:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1309:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1309:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1309:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1270:6:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1282:1:39", + "type": "", + "value": "5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1285:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1278:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1278:14:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1266:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1266:27:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1295:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1262:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1262:38:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "1302:3:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1259:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1259:47:39" + }, + "nodeType": "YulIf", + "src": "1256:67:39" + } + ] + }, + "name": "abi_decode_array_bytes_calldata_dyn_calldata", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1009:6:39", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "1017:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "arrayPos", + "nodeType": "YulTypedName", + "src": "1025:8:39", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1035:6:39", + "type": "" + } + ], + "src": "955:374:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1501:493:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1548:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1557:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1560:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1550:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1550:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1550:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1522:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1531:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1518:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1518:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1543:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1514:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1514:33:39" + }, + "nodeType": "YulIf", + "src": "1511:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "1573:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1596:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1583:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1583:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1573:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1615:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1642:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1653:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1638:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1638:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1625:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1625:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1615:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1666:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1693:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1704:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1689:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1689:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1676:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1676:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "1666:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1717:46:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1748:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1759:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1744:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1744:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1731:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1731:32:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1721:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1806:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1815:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1818:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1808:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1808:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1808:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1778:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1786:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1775:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1775:30:39" + }, + "nodeType": "YulIf", + "src": "1772:50:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1831:103:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1906:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1917:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1902:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1902:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1926:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_bytes_calldata_dyn_calldata", + "nodeType": "YulIdentifier", + "src": "1857:44:39" + }, + "nodeType": "YulFunctionCall", + "src": "1857:77:39" + }, + "variables": [ + { + "name": "value3_1", + "nodeType": "YulTypedName", + "src": "1835:8:39", + "type": "" + }, + { + "name": "value4_1", + "nodeType": "YulTypedName", + "src": "1845:8:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1943:18:39", + "value": { + "name": "value3_1", + "nodeType": "YulIdentifier", + "src": "1953:8:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "1943:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1970:18:39", + "value": { + "name": "value4_1", + "nodeType": "YulIdentifier", + "src": "1980:8:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "1970:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1435:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1446:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1458:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1466:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "1474:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "1482:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "1490:6:39", + "type": "" + } + ], + "src": "1334:660:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2086:167:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2132:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2141:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2144:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2134:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2134:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2134:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2107:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2116:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2103:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2103:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2128:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2099:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2099:32:39" + }, + "nodeType": "YulIf", + "src": "2096:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "2157:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2180:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2167:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2167:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2157:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2199:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2232:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2243:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2228:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2228:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "2209:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "2209:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2199:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2044:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2055:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2067:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2075:6:39", + "type": "" + } + ], + "src": "1999:254:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2290:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2307:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2310:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2300:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2300:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2300:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2404:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2407:4:39", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2397:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2397:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2397:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2428:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2431:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2421:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2421:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2421:15:39" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "2258:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2493:207:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2503:19:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2519:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2513:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "2513:9:39" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2503:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2531:35:39", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2553:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2561:4:39", + "type": "", + "value": "0xc0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2549:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2549:17:39" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "2535:10:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2641:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "2643:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "2643:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2643:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "2584:10:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2596:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2581:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2581:34:39" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "2620:10:39" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2632:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2617:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2617:22:39" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "2578:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2578:62:39" + }, + "nodeType": "YulIf", + "src": "2575:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2679:2:39", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "2683:10:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2672:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2672:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2672:22:39" + } + ] + }, + "name": "allocate_memory_5709", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "2482:6:39", + "type": "" + } + ], + "src": "2447:253:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2750:289:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2760:19:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2776:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2770:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "2770:9:39" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2760:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2788:117:39", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2810:6:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "2826:4:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2832:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2822:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2822:13:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2837:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2818:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2818:86:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2806:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2806:99:39" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "2792:10:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2980:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "2982:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "2982:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2982:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "2923:10:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2935:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2920:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2920:34:39" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "2959:10:39" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2971:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2956:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2956:22:39" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "2917:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2917:62:39" + }, + "nodeType": "YulIf", + "src": "2914:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3018:2:39", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "3022:10:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3011:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3011:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3011:22:39" + } + ] + }, + "name": "allocate_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "2730:4:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "2739:6:39", + "type": "" + } + ], + "src": "2705:334:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3113:114:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3157:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "3159:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "3159:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3159:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3129:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3137:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3126:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3126:30:39" + }, + "nodeType": "YulIf", + "src": "3123:56:39" + }, + { + "nodeType": "YulAssignment", + "src": "3188:33:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3204:1:39", + "type": "", + "value": "5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3207:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3200:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3200:14:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3216:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3196:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3196:25:39" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "3188:4:39" + } + ] + } + ] + }, + "name": "array_allocation_size_array_uint256_dyn", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "3093:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "3104:4:39", + "type": "" + } + ], + "src": "3044:183:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3296:598:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3345:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3354:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3357:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3347:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3347:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3347:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3324:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3332:4:39", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3320:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3320:17:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3339:3:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3316:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3316:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3309:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3309:35:39" + }, + "nodeType": "YulIf", + "src": "3306:55:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3370:30:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3393:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3380:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "3380:20:39" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "3374:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3409:14:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3419:4:39", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "3413:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3432:71:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3499:2:39" + } + ], + "functionName": { + "name": "array_allocation_size_array_uint256_dyn", + "nodeType": "YulIdentifier", + "src": "3459:39:39" + }, + "nodeType": "YulFunctionCall", + "src": "3459:43:39" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "3443:15:39" + }, + "nodeType": "YulFunctionCall", + "src": "3443:60:39" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "3436:3:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3512:16:39", + "value": { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3525:3:39" + }, + "variables": [ + { + "name": "dst_1", + "nodeType": "YulTypedName", + "src": "3516:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3544:3:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3549:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3537:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3537:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3537:15:39" + }, + { + "nodeType": "YulAssignment", + "src": "3561:19:39", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3572:3:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3577:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3568:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3568:12:39" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3561:3:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3589:46:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3611:6:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3623:1:39", + "type": "", + "value": "5" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3626:2:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3619:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3619:10:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3607:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3607:23:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3632:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3603:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3603:32:39" + }, + "variables": [ + { + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "3593:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3663:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3672:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3675:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3665:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3665:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3665:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "3650:6:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3658:3:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3647:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3647:15:39" + }, + "nodeType": "YulIf", + "src": "3644:35:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3688:26:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3703:6:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3711:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3699:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3699:15:39" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "3692:3:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3779:86:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3800:3:39" + }, + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3818:3:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3805:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "3805:17:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3793:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3793:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3793:30:39" + }, + { + "nodeType": "YulAssignment", + "src": "3836:19:39", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3847:3:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3852:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3843:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3843:12:39" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3836:3:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3734:3:39" + }, + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "3739:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "3731:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3731:15:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "3747:23:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3749:19:39", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3760:3:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3765:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3756:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3756:12:39" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3749:3:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "3727:3:39", + "statements": [] + }, + "src": "3723:142:39" + }, + { + "nodeType": "YulAssignment", + "src": "3874:14:39", + "value": { + "name": "dst_1", + "nodeType": "YulIdentifier", + "src": "3883:5:39" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "3874:5:39" + } + ] + } + ] + }, + "name": "abi_decode_array_uint256_dyn", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3270:6:39", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3278:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "3286:5:39", + "type": "" + } + ], + "src": "3232:662:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3994:253:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4040:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4049:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4052:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4042:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4042:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4042:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4015:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4024:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4011:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4011:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4036:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4007:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4007:32:39" + }, + "nodeType": "YulIf", + "src": "4004:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4065:37:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4092:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4079:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4079:23:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4069:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4145:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4154:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4157:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4147:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4147:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4147:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4117:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4125:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4114:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "4114:30:39" + }, + "nodeType": "YulIf", + "src": "4111:50:39" + }, + { + "nodeType": "YulAssignment", + "src": "4170:71:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4213:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4224:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4209:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4209:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4233:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_uint256_dyn", + "nodeType": "YulIdentifier", + "src": "4180:28:39" + }, + "nodeType": "YulFunctionCall", + "src": "4180:61:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4170:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3960:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3971:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3983:6:39", + "type": "" + } + ], + "src": "3899:348:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4424:420:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4471:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4480:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4483:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4473:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4473:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4473:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4445:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4454:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4441:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4441:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4466:3:39", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4437:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4437:33:39" + }, + "nodeType": "YulIf", + "src": "4434:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "4496:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4519:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4506:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4506:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4496:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4538:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4565:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4576:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4561:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4561:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4548:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4548:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "4538:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4589:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4616:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4627:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4612:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4612:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4599:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4599:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "4589:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4640:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4667:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4678:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4663:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4663:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4650:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4650:32:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "4640:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4691:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4718:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4729:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4714:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4714:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4701:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4701:33:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "4691:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4743:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4770:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4781:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4766:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4766:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4753:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4753:33:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "4743:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4795:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4822:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4833:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4818:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4818:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4805:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4805:33:39" + }, + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "4795:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4342:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "4353:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4365:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "4373:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "4381:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "4389:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "4397:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "4405:6:39", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "4413:6:39", + "type": "" + } + ], + "src": "4252:592:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5050:597:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5097:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5106:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5109:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5099:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5099:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5099:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5071:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5080:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5067:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5067:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5092:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5063:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5063:33:39" + }, + "nodeType": "YulIf", + "src": "5060:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "5122:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5145:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5132:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5132:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5122:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5164:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5191:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5202:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5187:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5187:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5174:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5174:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "5164:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5215:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5242:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5253:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5238:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5238:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5225:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5225:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "5215:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5266:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5293:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5304:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5289:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5289:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5276:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5276:32:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "5266:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5317:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5344:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5355:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5340:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5340:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5327:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5327:33:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "5317:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5369:47:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5400:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5411:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5396:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5396:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5383:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5383:33:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5373:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5459:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5468:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5471:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5461:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5461:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5461:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5431:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5439:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "5428:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "5428:30:39" + }, + "nodeType": "YulIf", + "src": "5425:50:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5484:103:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5559:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5570:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5555:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5555:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5579:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_bytes_calldata_dyn_calldata", + "nodeType": "YulIdentifier", + "src": "5510:44:39" + }, + "nodeType": "YulFunctionCall", + "src": "5510:77:39" + }, + "variables": [ + { + "name": "value5_1", + "nodeType": "YulTypedName", + "src": "5488:8:39", + "type": "" + }, + { + "name": "value6_1", + "nodeType": "YulTypedName", + "src": "5498:8:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5596:18:39", + "value": { + "name": "value5_1", + "nodeType": "YulIdentifier", + "src": "5606:8:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "5596:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5623:18:39", + "value": { + "name": "value6_1", + "nodeType": "YulIdentifier", + "src": "5633:8:39" + }, + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "5623:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4968:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "4979:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4991:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "4999:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "5007:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "5015:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "5023:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "5031:6:39", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "5039:6:39", + "type": "" + } + ], + "src": "4849:798:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5747:92:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5757:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5769:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5780:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5765:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5765:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5757:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5799:9:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5824:6:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5817:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5817:14:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5810:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5810:22:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5792:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5792:41:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5792:41:39" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5716:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5727:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5738:4:39", + "type": "" + } + ], + "src": "5652:187:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5931:167:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5977:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5986:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5989:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5979:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5979:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5979:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5952:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5961:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5948:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5948:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5973:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5944:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5944:32:39" + }, + "nodeType": "YulIf", + "src": "5941:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "6002:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6025:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6012:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "6012:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6002:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6044:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6077:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6088:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6073:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6073:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "6054:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "6054:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "6044:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5889:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "5900:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5912:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "5920:6:39", + "type": "" + } + ], + "src": "5844:254:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6190:161:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6236:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6245:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6248:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6238:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6238:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6238:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6211:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6220:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6207:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6207:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6232:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "6203:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6203:32:39" + }, + "nodeType": "YulIf", + "src": "6200:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "6261:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6284:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6271:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "6271:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6261:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6303:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6330:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6341:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6326:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6326:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6313:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "6313:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "6303:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6148:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "6159:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6171:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "6179:6:39", + "type": "" + } + ], + "src": "6103:248:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6457:125:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6467:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6479:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6490:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6475:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6475:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6467:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6509:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6524:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6532:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6520:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6520:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6502:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6502:74:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6502:74:39" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6426:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6437:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6448:4:39", + "type": "" + } + ], + "src": "6356:226:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6649:1536:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6659:14:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6669:4:39", + "type": "", + "value": "0x1f" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "6663:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6719:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6728:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6731:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6721:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6721:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6721:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6700:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "6708:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6696:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6696:15:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "6713:3:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "6692:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6692:25:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "6685:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6685:33:39" + }, + "nodeType": "YulIf", + "src": "6682:53:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6744:30:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6767:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6754:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "6754:20:39" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "6748:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6783:14:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6793:4:39", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_3", + "nodeType": "YulTypedName", + "src": "6787:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6806:71:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "6873:2:39" + } + ], + "functionName": { + "name": "array_allocation_size_array_uint256_dyn", + "nodeType": "YulIdentifier", + "src": "6833:39:39" + }, + "nodeType": "YulFunctionCall", + "src": "6833:43:39" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "6817:15:39" + }, + "nodeType": "YulFunctionCall", + "src": "6817:60:39" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "6810:3:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6886:16:39", + "value": { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6899:3:39" + }, + "variables": [ + { + "name": "dst_1", + "nodeType": "YulTypedName", + "src": "6890:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6918:3:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "6923:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6911:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6911:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6911:15:39" + }, + { + "nodeType": "YulAssignment", + "src": "6935:19:39", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6946:3:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "6951:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6942:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6942:12:39" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6935:3:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6963:46:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6985:6:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6997:1:39", + "type": "", + "value": "5" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "7000:2:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "6993:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6993:10:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6981:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6981:23:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "7006:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6977:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6977:32:39" + }, + "variables": [ + { + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "6967:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7037:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7046:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7049:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7039:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7039:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7039:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "7024:6:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7032:3:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7021:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "7021:15:39" + }, + "nodeType": "YulIf", + "src": "7018:35:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7062:26:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7077:6:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "7085:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7073:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7073:15:39" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "7066:3:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7153:1003:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7167:36:39", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "7199:3:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7186:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "7186:17:39" + }, + "variables": [ + { + "name": "innerOffset", + "nodeType": "YulTypedName", + "src": "7171:11:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7216:28:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7226:18:39", + "type": "", + "value": "0xffffffffffffffff" + }, + "variables": [ + { + "name": "_4", + "nodeType": "YulTypedName", + "src": "7220:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7292:74:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7310:11:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7320:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_5", + "nodeType": "YulTypedName", + "src": "7314:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "_5", + "nodeType": "YulIdentifier", + "src": "7345:2:39" + }, + { + "name": "_5", + "nodeType": "YulIdentifier", + "src": "7349:2:39" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7338:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7338:14:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7338:14:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "innerOffset", + "nodeType": "YulIdentifier", + "src": "7263:11:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "7276:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7260:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "7260:19:39" + }, + "nodeType": "YulIf", + "src": "7257:109:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7379:34:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7393:6:39" + }, + { + "name": "innerOffset", + "nodeType": "YulIdentifier", + "src": "7401:11:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7389:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7389:24:39" + }, + "variables": [ + { + "name": "_6", + "nodeType": "YulTypedName", + "src": "7383:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7471:74:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7489:11:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7499:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_7", + "nodeType": "YulTypedName", + "src": "7493:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "_7", + "nodeType": "YulIdentifier", + "src": "7524:2:39" + }, + { + "name": "_7", + "nodeType": "YulIdentifier", + "src": "7528:2:39" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7517:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7517:14:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7517:14:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_6", + "nodeType": "YulIdentifier", + "src": "7444:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7448:2:39", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7440:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7440:11:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7453:3:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "7436:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7436:21:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "7429:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7429:29:39" + }, + "nodeType": "YulIf", + "src": "7426:119:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7558:35:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_6", + "nodeType": "YulIdentifier", + "src": "7585:2:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "7589:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7581:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7581:11:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7568:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "7568:25:39" + }, + "variables": [ + { + "name": "_8", + "nodeType": "YulTypedName", + "src": "7562:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7606:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7616:2:39", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "_9", + "nodeType": "YulTypedName", + "src": "7610:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7645:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "7647:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "7647:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7647:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "7637:2:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "7641:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7634:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "7634:10:39" + }, + "nodeType": "YulIf", + "src": "7631:36:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7680:125:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "7723:2:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "7727:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7719:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7719:11:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7732:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "7715:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7715:84:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "7801:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7711:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7711:93:39" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "7695:15:39" + }, + "nodeType": "YulFunctionCall", + "src": "7695:110:39" + }, + "variables": [ + { + "name": "array_1", + "nodeType": "YulTypedName", + "src": "7684:7:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "7825:7:39" + }, + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "7834:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7818:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7818:19:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7818:19:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7895:77:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7913:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7924:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_10", + "nodeType": "YulTypedName", + "src": "7917:3:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "_10", + "nodeType": "YulIdentifier", + "src": "7949:3:39" + }, + { + "name": "_10", + "nodeType": "YulIdentifier", + "src": "7954:3:39" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7942:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7942:16:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7942:16:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_6", + "nodeType": "YulIdentifier", + "src": "7864:2:39" + }, + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "7868:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7860:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7860:11:39" + }, + { + "name": "_9", + "nodeType": "YulIdentifier", + "src": "7873:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7856:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7856:20:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7878:3:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7853:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "7853:29:39" + }, + "nodeType": "YulIf", + "src": "7850:122:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "8002:7:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "8011:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7998:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7998:16:39" + }, + { + "arguments": [ + { + "name": "_6", + "nodeType": "YulIdentifier", + "src": "8020:2:39" + }, + { + "name": "_9", + "nodeType": "YulIdentifier", + "src": "8024:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8016:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8016:11:39" + }, + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "8029:2:39" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "7985:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "7985:47:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7985:47:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "8060:7:39" + }, + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "8069:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8056:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8056:16:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "8074:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8052:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8052:25:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8079:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8045:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8045:36:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8045:36:39" + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "8101:3:39" + }, + { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "8106:7:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8094:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8094:20:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8094:20:39" + }, + { + "nodeType": "YulAssignment", + "src": "8127:19:39", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "8138:3:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "8143:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8134:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8134:12:39" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "8127:3:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "7108:3:39" + }, + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "7113:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "7105:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "7105:15:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "7121:23:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7123:19:39", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "7134:3:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "7139:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7130:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7130:12:39" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "7123:3:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "7101:3:39", + "statements": [] + }, + "src": "7097:1059:39" + }, + { + "nodeType": "YulAssignment", + "src": "8165:14:39", + "value": { + "name": "dst_1", + "nodeType": "YulIdentifier", + "src": "8174:5:39" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "8165:5:39" + } + ] + } + ] + }, + "name": "abi_decode_array_bytes_dyn", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "6623:6:39", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "6631:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "6639:5:39", + "type": "" + } + ], + "src": "6587:1598:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8296:943:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "8342:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8351:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8354:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8344:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8344:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8344:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8317:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8326:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8313:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8313:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8338:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "8309:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8309:32:39" + }, + "nodeType": "YulIf", + "src": "8306:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8367:37:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8394:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8381:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8381:23:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8371:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8413:28:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8423:18:39", + "type": "", + "value": "0xffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "8417:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8468:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8477:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8480:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8470:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8470:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8470:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8456:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "8464:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8453:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "8453:14:39" + }, + "nodeType": "YulIf", + "src": "8450:34:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8493:32:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8507:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8518:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8503:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8503:22:39" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "8497:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8565:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8574:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8577:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8567:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8567:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8567:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8545:7:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8554:2:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8541:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8541:16:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8559:4:39", + "type": "", + "value": "0xc0" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "8537:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8537:27:39" + }, + "nodeType": "YulIf", + "src": "8534:47:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8590:35:39", + "value": { + "arguments": [], + "functionName": { + "name": "allocate_memory_5709", + "nodeType": "YulIdentifier", + "src": "8603:20:39" + }, + "nodeType": "YulFunctionCall", + "src": "8603:22:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8594:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8641:5:39" + }, + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8661:2:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8648:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8648:16:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8634:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8634:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8634:31:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8685:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8692:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8681:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8681:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8714:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8718:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8710:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8710:11:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8697:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8697:25:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8674:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8674:49:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8674:49:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8732:41:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8765:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8769:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8761:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8761:11:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8748:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8748:25:39" + }, + "variables": [ + { + "name": "offset_1", + "nodeType": "YulTypedName", + "src": "8736:8:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8802:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8811:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8814:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8804:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8804:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8804:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "8788:8:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "8798:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8785:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "8785:16:39" + }, + "nodeType": "YulIf", + "src": "8782:36:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8838:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8845:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8834:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8834:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8883:2:39" + }, + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "8887:8:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8879:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8879:17:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8898:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_uint256_dyn", + "nodeType": "YulIdentifier", + "src": "8850:28:39" + }, + "nodeType": "YulFunctionCall", + "src": "8850:56:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8827:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8827:80:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8827:80:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8927:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8934:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8923:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8923:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8956:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8960:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8952:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8952:11:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8939:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8939:25:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8916:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8916:49:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8916:49:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8985:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8992:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8981:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8981:15:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "9015:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9019:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9011:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9011:12:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8998:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8998:26:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8974:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8974:51:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8974:51:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "9034:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "9067:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9071:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9063:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9063:12:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9050:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9050:26:39" + }, + "variables": [ + { + "name": "offset_2", + "nodeType": "YulTypedName", + "src": "9038:8:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9105:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9114:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9117:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9107:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9107:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9107:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_2", + "nodeType": "YulIdentifier", + "src": "9091:8:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "9101:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "9088:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "9088:16:39" + }, + "nodeType": "YulIf", + "src": "9085:36:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9141:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9148:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9137:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9137:15:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "9185:2:39" + }, + { + "name": "offset_2", + "nodeType": "YulIdentifier", + "src": "9189:8:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9181:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9181:17:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9200:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_bytes_dyn", + "nodeType": "YulIdentifier", + "src": "9154:26:39" + }, + "nodeType": "YulFunctionCall", + "src": "9154:54:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9130:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9130:79:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9130:79:39" + }, + { + "nodeType": "YulAssignment", + "src": "9218:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9228:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9218:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_struct$_RecollateralizeDEI_$1556_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8262:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "8273:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "8285:6:39", + "type": "" + } + ], + "src": "8190:1049:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9314:110:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9360:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9369:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9372:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9362:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9362:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9362:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9335:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9344:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9331:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9331:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9356:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "9327:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9327:32:39" + }, + "nodeType": "YulIf", + "src": "9324:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "9385:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9408:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9395:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9395:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9385:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9280:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "9291:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9303:6:39", + "type": "" + } + ], + "src": "9244:180:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9638:699:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9685:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9694:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9697:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9687:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9687:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9687:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9659:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9668:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9655:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9655:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9680:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "9651:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9651:33:39" + }, + "nodeType": "YulIf", + "src": "9648:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "9710:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9733:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9720:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9720:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9710:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "9752:46:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9783:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9794:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9779:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9779:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9766:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9766:32:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9756:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "9807:28:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9817:18:39", + "type": "", + "value": "0xffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "9811:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9862:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9871:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9874:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9864:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9864:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9864:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9850:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "9858:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "9847:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "9847:14:39" + }, + "nodeType": "YulIf", + "src": "9844:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "9887:71:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9930:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9941:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9926:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9926:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9950:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_uint256_dyn", + "nodeType": "YulIdentifier", + "src": "9897:28:39" + }, + "nodeType": "YulFunctionCall", + "src": "9897:61:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "9887:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9967:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9994:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10005:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9990:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9990:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9977:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9977:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "9967:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10018:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10045:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10056:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10041:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10041:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10028:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "10028:32:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "10018:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "10069:49:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10102:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10113:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10098:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10098:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10085:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "10085:33:39" + }, + "variables": [ + { + "name": "offset_1", + "nodeType": "YulTypedName", + "src": "10073:8:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10147:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10156:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10159:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10149:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10149:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10149:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "10133:8:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "10143:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "10130:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "10130:16:39" + }, + "nodeType": "YulIf", + "src": "10127:36:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "10172:105:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10247:9:39" + }, + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "10258:8:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10243:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10243:24:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10269:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_bytes_calldata_dyn_calldata", + "nodeType": "YulIdentifier", + "src": "10198:44:39" + }, + "nodeType": "YulFunctionCall", + "src": "10198:79:39" + }, + "variables": [ + { + "name": "value4_1", + "nodeType": "YulTypedName", + "src": "10176:8:39", + "type": "" + }, + { + "name": "value5_1", + "nodeType": "YulTypedName", + "src": "10186:8:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10286:18:39", + "value": { + "name": "value4_1", + "nodeType": "YulIdentifier", + "src": "10296:8:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "10286:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10313:18:39", + "value": { + "name": "value5_1", + "nodeType": "YulIdentifier", + "src": "10323:8:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "10313:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_memory_ptrt_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9564:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "9575:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9587:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "9595:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "9603:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "9611:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "9619:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "9627:6:39", + "type": "" + } + ], + "src": "9429:908:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10446:224:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "10492:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10501:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10504:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10494:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10494:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10494:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10467:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10476:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10463:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10463:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10488:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "10459:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10459:32:39" + }, + "nodeType": "YulIf", + "src": "10456:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "10517:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10546:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "10527:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "10527:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "10517:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10565:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10592:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10603:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10588:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10588:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10575:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "10575:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "10565:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10616:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10649:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10660:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10645:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10645:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "10626:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "10626:38:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "10616:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10396:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "10407:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "10419:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "10427:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "10435:6:39", + "type": "" + } + ], + "src": "10342:328:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10859:545:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "10906:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10915:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10918:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10908:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10908:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10908:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10880:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10889:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10876:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10876:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10901:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "10872:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10872:33:39" + }, + "nodeType": "YulIf", + "src": "10869:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "10931:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10954:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10941:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "10941:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "10931:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10973:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11000:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11011:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10996:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10996:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10983:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "10983:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "10973:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11024:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11051:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11062:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11047:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11047:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "11034:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "11034:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "11024:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11075:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11102:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11113:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11098:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11098:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "11085:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "11085:32:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "11075:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "11126:47:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11157:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11168:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11153:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11153:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "11140:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "11140:33:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "11130:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11216:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11225:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11228:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "11218:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11218:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11218:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11188:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11196:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "11185:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "11185:30:39" + }, + "nodeType": "YulIf", + "src": "11182:50:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "11241:103:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11316:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11327:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11312:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11312:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11336:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_bytes_calldata_dyn_calldata", + "nodeType": "YulIdentifier", + "src": "11267:44:39" + }, + "nodeType": "YulFunctionCall", + "src": "11267:77:39" + }, + "variables": [ + { + "name": "value4_1", + "nodeType": "YulTypedName", + "src": "11245:8:39", + "type": "" + }, + { + "name": "value5_1", + "nodeType": "YulTypedName", + "src": "11255:8:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11353:18:39", + "value": { + "name": "value4_1", + "nodeType": "YulIdentifier", + "src": "11363:8:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "11353:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11380:18:39", + "value": { + "name": "value5_1", + "nodeType": "YulIdentifier", + "src": "11390:8:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "11380:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10785:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "10796:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "10808:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "10816:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "10824:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "10832:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "10840:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "10848:6:39", + "type": "" + } + ], + "src": "10675:729:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11441:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11458:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11461:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11451:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11451:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11451:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11555:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11558:4:39", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11548:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11548:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11548:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11579:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11582:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "11572:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11572:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11572:15:39" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "11409:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11646:80:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "11673:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "11675:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "11675:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11675:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11662:1:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11669:1:39" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "11665:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11665:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "11659:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "11659:13:39" + }, + "nodeType": "YulIf", + "src": "11656:39:39" + }, + { + "nodeType": "YulAssignment", + "src": "11704:16:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11715:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11718:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11711:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11711:9:39" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "11704:3:39" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "11629:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "11632:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "11638:3:39", + "type": "" + } + ], + "src": "11598:128:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11905:321:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11922:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11933:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11915:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11915:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11915:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11956:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11967:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11952:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11952:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11972:2:39", + "type": "", + "value": "91" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11945:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11945:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11945:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11995:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12006:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11991:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11991:18:39" + }, + { + "hexValue": "504f4f4c3a3a636f6c6c656374526564656d7074696f6e3a204d757374207761", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12011:34:39", + "type": "", + "value": "POOL::collectRedemption: Must wa" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11984:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11984:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11984:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12066:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12077:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12062:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12062:18:39" + }, + { + "hexValue": "697420666f7220726564656d7074696f6e5f64656c617920626c6f636b732062", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12082:34:39", + "type": "", + "value": "it for redemption_delay blocks b" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12055:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12055:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12055:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12137:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12148:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12133:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12133:19:39" + }, + { + "hexValue": "65666f726520636f6c6c656374696e6720726564656d7074696f6e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12154:29:39", + "type": "", + "value": "efore collecting redemption" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12126:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12126:58:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12126:58:39" + }, + { + "nodeType": "YulAssignment", + "src": "12193:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12205:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12216:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12201:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12201:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12193:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_38c9fd1b67df6e999cac6aaf315cc13e0fa4fc296b57f92466d27a378c17f081__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "11882:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "11896:4:39", + "type": "" + } + ], + "src": "11731:495:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12280:76:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "12302:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "12304:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "12304:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12304:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "12296:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "12299:1:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "12293:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "12293:8:39" + }, + "nodeType": "YulIf", + "src": "12290:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "12333:17:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "12345:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "12348:1:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "12341:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12341:9:39" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "12333:4:39" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "12262:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "12265:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "12271:4:39", + "type": "" + } + ], + "src": "12231:125:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12535:175:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12552:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12563:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12545:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12545:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12545:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12586:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12597:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12582:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12582:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12602:2:39", + "type": "", + "value": "25" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12575:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12575:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12575:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12625:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12636:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12621:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12621:18:39" + }, + { + "hexValue": "504f4f4c3a3a52656465656d696e6720697320706175736564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12641:27:39", + "type": "", + "value": "POOL::Redeeming is paused" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12614:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12614:55:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12614:55:39" + }, + { + "nodeType": "YulAssignment", + "src": "12678:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12690:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12701:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12686:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12686:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12678:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_de458c40ee20c89c9807b7a8a5908e3319b480e8b007f55d3d683bc68bb7186e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12512:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "12526:4:39", + "type": "" + } + ], + "src": "12361:349:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12796:103:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "12842:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12851:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12854:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "12844:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12844:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12844:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "12817:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12826:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "12813:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12813:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12838:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "12809:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12809:32:39" + }, + "nodeType": "YulIf", + "src": "12806:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "12867:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12883:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "12877:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "12877:16:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "12867:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12762:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "12773:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "12785:6:39", + "type": "" + } + ], + "src": "12715:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13078:179:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13095:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13106:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13088:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13088:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13088:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13129:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13140:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13125:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13125:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13145:2:39", + "type": "", + "value": "29" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13118:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13118:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13118:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13168:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13179:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13164:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13164:18:39" + }, + { + "hexValue": "436f6c6c61746572616c20726174696f206d757374206265203d3d2031", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13184:31:39", + "type": "", + "value": "Collateral ratio must be == 1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13157:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13157:59:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13157:59:39" + }, + { + "nodeType": "YulAssignment", + "src": "13225:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13237:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13248:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13233:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13233:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13225:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_c70433350355bf0543fc06a466fe44bcb01281d5a63b8bb87c74c17650f3e4c7__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13055:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13069:4:39", + "type": "" + } + ], + "src": "12904:353:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13436:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13453:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13464:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13446:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13446:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13446:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13487:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13498:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13483:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13483:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13503:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13476:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13476:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13476:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13526:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13537:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13522:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13522:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e6174", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13542:34:39", + "type": "", + "value": "POOL::mintAlgorithmicDEI: signat" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13515:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13515:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13515:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13597:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13608:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13593:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13593:18:39" + }, + { + "hexValue": "75726520697320657870697265642e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13613:17:39", + "type": "", + "value": "ure is expired." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13586:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13586:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13586:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "13640:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13652:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13663:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13648:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13648:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13640:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0553f3220b1c65f13a1a0bcfbae12cc9d57080d375095d8011e479f9a164d51f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13413:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13427:4:39", + "type": "" + } + ], + "src": "13262:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13881:257:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13898:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13911:2:39", + "type": "", + "value": "96" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13915:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "13907:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13907:15:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13924:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "13903:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13903:88:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13891:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13891:101:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13891:101:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14012:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14017:2:39", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14008:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14008:12:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "14022:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14001:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14001:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14001:28:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14049:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14054:2:39", + "type": "", + "value": "52" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14045:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14045:12:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "14059:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14038:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14038:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14038:28:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14086:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14091:2:39", + "type": "", + "value": "84" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14082:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14082:12:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "14096:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14075:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14075:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14075:28:39" + }, + { + "nodeType": "YulAssignment", + "src": "14112:20:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14123:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14128:3:39", + "type": "", + "value": "116" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14119:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14119:13:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "14112:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "13833:3:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "13838:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "13846:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "13854:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13862:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "13873:3:39", + "type": "" + } + ], + "src": "13678:460:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14209:259:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14226:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14231:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14219:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14219:19:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14219:19:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14264:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14269:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14260:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14260:14:39" + }, + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "14276:5:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14283:6:39" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "14247:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "14247:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14247:43:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14314:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14319:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14310:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14310:16:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14328:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14306:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14306:27:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14335:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14299:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14299:38:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14299:38:39" + }, + { + "nodeType": "YulAssignment", + "src": "14346:116:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14361:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14374:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14382:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14370:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14370:15:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14387:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "14366:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14366:88:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14357:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14357:98:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14457:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14353:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14353:109:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "14346:3:39" + } + ] + } + ] + }, + "name": "abi_encode_bytes_calldata", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "start", + "nodeType": "YulTypedName", + "src": "14178:5:39", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "14185:6:39", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "14193:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "14201:3:39", + "type": "" + } + ], + "src": "14143:325:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14682:1170:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14692:32:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14710:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14721:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14706:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14706:18:39" + }, + "variables": [ + { + "name": "tail_1", + "nodeType": "YulTypedName", + "src": "14696:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14740:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "14751:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14733:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14733:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14733:25:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "14767:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14777:2:39", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "14771:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14799:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "14810:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14795:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14795:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14815:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14788:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14788:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14788:30:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "14827:17:39", + "value": { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "14838:6:39" + }, + "variables": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "14831:3:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "14860:6:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "14868:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14853:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14853:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14853:22:39" + }, + { + "nodeType": "YulAssignment", + "src": "14884:25:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14895:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14906:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14891:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14891:18:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14884:3:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "14918:53:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14940:9:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14955:1:39", + "type": "", + "value": "5" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "14958:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "14951:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14951:14:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14936:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14936:30:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14968:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14932:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14932:39:39" + }, + "variables": [ + { + "name": "tail_2", + "nodeType": "YulTypedName", + "src": "14922:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "14980:20:39", + "value": { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "14994:6:39" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "14984:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15009:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15018:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "15013:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15077:746:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15098:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "15111:6:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15119:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15107:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15107:22:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15131:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15103:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15103:95:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15091:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15091:108:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15091:108:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15212:46:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "15251:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "15238:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "15238:20:39" + }, + "variables": [ + { + "name": "rel_offset_of_tail", + "nodeType": "YulTypedName", + "src": "15216:18:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15408:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15417:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15420:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "15410:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15410:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15410:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "rel_offset_of_tail", + "nodeType": "YulIdentifier", + "src": "15285:18:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier", + "src": "15313:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "15313:14:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "15329:6:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15309:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15309:27:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15338:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15305:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15305:100:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "15281:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15281:125:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "15274:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15274:133:39" + }, + "nodeType": "YulIf", + "src": "15271:153:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15437:44:39", + "value": { + "arguments": [ + { + "name": "rel_offset_of_tail", + "nodeType": "YulIdentifier", + "src": "15454:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "15474:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15450:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15450:31:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "15441:5:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15494:33:39", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15521:5:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "15508:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "15508:19:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "15498:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15574:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15583:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15586:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "15576:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15576:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15576:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "15546:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15554:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "15543:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "15543:30:39" + }, + "nodeType": "YulIf", + "src": "15540:50:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15647:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15656:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15659:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "15649:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15649:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15649:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "15610:6:39" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier", + "src": "15622:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "15622:14:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "15638:6:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15618:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15618:27:39" + } + ], + "functionName": { + "name": "sgt", + "nodeType": "YulIdentifier", + "src": "15606:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15606:40:39" + }, + "nodeType": "YulIf", + "src": "15603:60:39" + }, + { + "nodeType": "YulAssignment", + "src": "15676:67:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15716:5:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "15723:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15712:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15712:14:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "15728:6:39" + }, + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "15736:6:39" + } + ], + "functionName": { + "name": "abi_encode_bytes_calldata", + "nodeType": "YulIdentifier", + "src": "15686:25:39" + }, + "nodeType": "YulFunctionCall", + "src": "15686:57:39" + }, + "variableNames": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "15676:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "15756:25:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "15770:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "15778:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15766:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15766:15:39" + }, + "variableNames": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "15756:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "15794:19:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15805:3:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "15810:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15801:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15801:12:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15794:3:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "15039:1:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "15042:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "15036:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "15036:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "15050:18:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15052:14:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "15061:1:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15064:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15057:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15057:9:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "15052:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "15032:3:39", + "statements": [] + }, + "src": "15028:795:39" + }, + { + "nodeType": "YulAssignment", + "src": "15832:14:39", + "value": { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "15840:6:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15832:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "14635:9:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "14646:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "14654:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "14662:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "14673:4:39", + "type": "" + } + ], + "src": "14473:1379:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15935:199:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "15981:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15990:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15993:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "15983:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15983:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15983:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "15956:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15965:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15952:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15952:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15977:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "15948:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15948:32:39" + }, + "nodeType": "YulIf", + "src": "15945:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "16006:29:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16025:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "16019:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "16019:16:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16010:5:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16088:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16097:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16100:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "16090:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16090:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16090:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16057:5:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16078:5:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "16071:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16071:13:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "16064:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16064:21:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "16054:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "16054:32:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "16047:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16047:40:39" + }, + "nodeType": "YulIf", + "src": "16044:60:39" + }, + { + "nodeType": "YulAssignment", + "src": "16113:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16123:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "16113:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bool_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15901:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "15912:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "15924:6:39", + "type": "" + } + ], + "src": "15857:277:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16313:228:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16330:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16341:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16323:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16323:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16323:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16364:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16375:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16360:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16360:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16380:2:39", + "type": "", + "value": "38" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16353:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16353:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16353:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16403:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16414:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16399:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16399:18:39" + }, + { + "hexValue": "504f4f4c3a3a72656465656d3174314445493a20696e76616c6964207369676e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "16419:34:39", + "type": "", + "value": "POOL::redeem1t1DEI: invalid sign" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16392:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16392:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16392:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16474:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16485:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16470:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16470:18:39" + }, + { + "hexValue": "617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "16490:8:39", + "type": "", + "value": "atures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16463:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16463:36:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16463:36:39" + }, + { + "nodeType": "YulAssignment", + "src": "16508:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16520:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16531:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16516:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16516:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "16508:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3b8d4b54db08ed890798fdc55ba1c410b1b90a23a79193c7486d04051b31717b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "16290:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "16304:4:39", + "type": "" + } + ], + "src": "16139:402:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16610:418:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16620:16:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16635:1:39", + "type": "", + "value": "1" + }, + "variables": [ + { + "name": "power_1", + "nodeType": "YulTypedName", + "src": "16624:7:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16645:16:39", + "value": { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "16654:7:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "16645:5:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16670:13:39", + "value": { + "name": "_base", + "nodeType": "YulIdentifier", + "src": "16678:5:39" + }, + "variableNames": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16670:4:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16734:288:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "16839:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "16841:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "16841:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16841:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16754:4:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16764:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16832:4:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "16760:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16760:77:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "16751:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "16751:87:39" + }, + "nodeType": "YulIf", + "src": "16748:113:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16900:29:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16902:25:39", + "value": { + "arguments": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "16915:5:39" + }, + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16922:4:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "16911:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16911:16:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "16902:5:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "16881:8:39" + }, + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "16891:7:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "16877:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16877:22:39" + }, + "nodeType": "YulIf", + "src": "16874:55:39" + }, + { + "nodeType": "YulAssignment", + "src": "16942:23:39", + "value": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16954:4:39" + }, + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16960:4:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "16950:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16950:15:39" + }, + "variableNames": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16942:4:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16978:34:39", + "value": { + "arguments": [ + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "16994:7:39" + }, + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17003:8:39" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "16990:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16990:22:39" + }, + "variableNames": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "16978:8:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "16703:8:39" + }, + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "16713:7:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "16700:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "16700:21:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "16722:3:39", + "statements": [] + }, + "pre": { + "nodeType": "YulBlock", + "src": "16696:3:39", + "statements": [] + }, + "src": "16692:330:39" + } + ] + }, + "name": "checked_exp_helper", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "_base", + "nodeType": "YulTypedName", + "src": "16574:5:39", + "type": "" + }, + { + "name": "exponent", + "nodeType": "YulTypedName", + "src": "16581:8:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "power", + "nodeType": "YulTypedName", + "src": "16594:5:39", + "type": "" + }, + { + "name": "base", + "nodeType": "YulTypedName", + "src": "16601:4:39", + "type": "" + } + ], + "src": "16546:482:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17092:807:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "17130:52:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17144:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17153:1:39", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17144:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "17167:5:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17112:8:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "17105:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17105:16:39" + }, + "nodeType": "YulIf", + "src": "17102:80:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17215:52:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17229:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17238:1:39", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17229:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "17252:5:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17201:4:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "17194:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17194:12:39" + }, + "nodeType": "YulIf", + "src": "17191:76:39" + }, + { + "cases": [ + { + "body": { + "nodeType": "YulBlock", + "src": "17303:52:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17317:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17326:1:39", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17317:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "17340:5:39" + } + ] + }, + "nodeType": "YulCase", + "src": "17296:59:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17301:1:39", + "type": "", + "value": "1" + } + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17371:123:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "17406:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "17408:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "17408:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17408:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17391:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17401:3:39", + "type": "", + "value": "255" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "17388:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17388:17:39" + }, + "nodeType": "YulIf", + "src": "17385:43:39" + }, + { + "nodeType": "YulAssignment", + "src": "17441:25:39", + "value": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17454:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17464:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "17450:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17450:16:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17441:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "17479:5:39" + } + ] + }, + "nodeType": "YulCase", + "src": "17364:130:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17369:1:39", + "type": "", + "value": "2" + } + } + ], + "expression": { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17283:4:39" + }, + "nodeType": "YulSwitch", + "src": "17276:218:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17592:70:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17606:28:39", + "value": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17619:4:39" + }, + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17625:8:39" + } + ], + "functionName": { + "name": "exp", + "nodeType": "YulIdentifier", + "src": "17615:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17615:19:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17606:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "17647:5:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17516:4:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17522:2:39", + "type": "", + "value": "11" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "17513:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17513:12:39" + }, + { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17530:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17540:2:39", + "type": "", + "value": "78" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "17527:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17527:16:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "17509:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17509:35:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17553:4:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17559:3:39", + "type": "", + "value": "307" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "17550:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17550:13:39" + }, + { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17568:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17578:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "17565:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17565:16:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "17546:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17546:36:39" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "17506:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17506:77:39" + }, + "nodeType": "YulIf", + "src": "17503:159:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "17671:57:39", + "value": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17713:4:39" + }, + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17719:8:39" + } + ], + "functionName": { + "name": "checked_exp_helper", + "nodeType": "YulIdentifier", + "src": "17694:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "17694:34:39" + }, + "variables": [ + { + "name": "power_1", + "nodeType": "YulTypedName", + "src": "17675:7:39", + "type": "" + }, + { + "name": "base_1", + "nodeType": "YulTypedName", + "src": "17684:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17833:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "17835:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "17835:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17835:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "17743:7:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17756:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "base_1", + "nodeType": "YulIdentifier", + "src": "17824:6:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "17752:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17752:79:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "17740:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17740:92:39" + }, + "nodeType": "YulIf", + "src": "17737:118:39" + }, + { + "nodeType": "YulAssignment", + "src": "17864:29:39", + "value": { + "arguments": [ + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "17877:7:39" + }, + { + "name": "base_1", + "nodeType": "YulIdentifier", + "src": "17886:6:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "17873:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17873:20:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17864:5:39" + } + ] + } + ] + }, + "name": "checked_exp_unsigned", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "base", + "nodeType": "YulTypedName", + "src": "17063:4:39", + "type": "" + }, + { + "name": "exponent", + "nodeType": "YulTypedName", + "src": "17069:8:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "power", + "nodeType": "YulTypedName", + "src": "17082:5:39", + "type": "" + } + ], + "src": "17033:866:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17974:61:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17984:45:39", + "value": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "18014:4:39" + }, + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "18020:8:39" + } + ], + "functionName": { + "name": "checked_exp_unsigned", + "nodeType": "YulIdentifier", + "src": "17993:20:39" + }, + "nodeType": "YulFunctionCall", + "src": "17993:36:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17984:5:39" + } + ] + } + ] + }, + "name": "checked_exp_t_uint256_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "base", + "nodeType": "YulTypedName", + "src": "17945:4:39", + "type": "" + }, + { + "name": "exponent", + "nodeType": "YulTypedName", + "src": "17951:8:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "power", + "nodeType": "YulTypedName", + "src": "17964:5:39", + "type": "" + } + ], + "src": "17904:131:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18086:228:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "18117:168:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18138:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18141:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18131:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18131:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18131:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18239:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18242:4:39", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18232:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18232:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18232:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18267:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18270:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "18260:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18260:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18260:15:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "18106:1:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "18099:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18099:9:39" + }, + "nodeType": "YulIf", + "src": "18096:189:39" + }, + { + "nodeType": "YulAssignment", + "src": "18294:14:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "18303:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "18306:1:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "18299:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18299:9:39" + }, + "variableNames": [ + { + "name": "r", + "nodeType": "YulIdentifier", + "src": "18294:1:39" + } + ] + } + ] + }, + "name": "checked_div_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "18071:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "18074:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "r", + "nodeType": "YulTypedName", + "src": "18080:1:39", + "type": "" + } + ], + "src": "18040:274:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18448:119:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "18458:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18470:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18481:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18466:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18466:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "18458:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18500:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "18511:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18493:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18493:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18493:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18538:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18549:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18534:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18534:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "18554:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18527:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18527:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18527:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18409:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "18420:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "18428:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "18439:4:39", + "type": "" + } + ], + "src": "18319:248:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18624:176:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "18743:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "18745:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "18745:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18745:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "18655:1:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "18648:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18648:9:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "18641:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18641:17:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "18663:1:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18670:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "18738:1:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "18666:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18666:74:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "18660:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "18660:81:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "18637:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18637:105:39" + }, + "nodeType": "YulIf", + "src": "18634:131:39" + }, + { + "nodeType": "YulAssignment", + "src": "18774:20:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "18789:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "18792:1:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "18785:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18785:9:39" + }, + "variableNames": [ + { + "name": "product", + "nodeType": "YulIdentifier", + "src": "18774:7:39" + } + ] + } + ] + }, + "name": "checked_mul_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "18603:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "18606:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nodeType": "YulTypedName", + "src": "18612:7:39", + "type": "" + } + ], + "src": "18572:228:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18979:179:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18996:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19007:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18989:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18989:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18989:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19030:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19041:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19026:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19026:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19046:2:39", + "type": "", + "value": "29" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19019:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19019:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19019:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19069:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19080:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19065:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19065:18:39" + }, + { + "hexValue": "4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "19085:31:39", + "type": "", + "value": "Not enough collateral in pool" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19058:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19058:59:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19058:59:39" + }, + { + "nodeType": "YulAssignment", + "src": "19126:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19138:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19149:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19134:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19134:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19126:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_f52391ebd610d5d9d518357ceeaf45367429ac1fd3150210dcaba2450d5bcce8__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18956:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "18970:4:39", + "type": "" + } + ], + "src": "18805:353:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19292:168:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19302:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19314:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19325:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19310:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19310:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19302:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19344:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "19359:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19367:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "19355:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19355:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19337:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19337:74:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19337:74:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19431:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19442:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19427:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19427:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "19447:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19420:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19420:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19420:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "19253:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "19264:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "19272:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "19283:4:39", + "type": "" + } + ], + "src": "19163:297:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19639:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19656:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19667:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19649:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19649:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19649:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19690:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19701:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19686:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19686:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19706:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19679:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19679:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19679:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19729:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19740:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19725:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19725:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "19745:34:39", + "type": "", + "value": "AccessControl: sender must be an" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19718:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19718:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19718:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19800:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19811:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19796:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19796:18:39" + }, + { + "hexValue": "2061646d696e20746f206772616e74", + "kind": "string", + "nodeType": "YulLiteral", + "src": "19816:17:39", + "type": "", + "value": " admin to grant" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19789:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19789:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19789:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "19843:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19855:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19866:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19851:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19851:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19843:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "19616:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "19630:4:39", + "type": "" + } + ], + "src": "19465:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20055:173:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20072:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20083:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20065:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20065:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20065:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20106:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20117:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20102:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20102:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20122:2:39", + "type": "", + "value": "23" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20095:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20095:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20095:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20145:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20156:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20141:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20141:18:39" + }, + { + "hexValue": "504f4f4c3a3a4d696e74696e6720697320706175736564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "20161:25:39", + "type": "", + "value": "POOL::Minting is paused" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20134:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20134:53:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20134:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "20196:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20208:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20219:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20204:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20204:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20196:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_98984f103b51115a1419edfc23f41285c32977e7b02cc32e067bba007d26b4f9__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "20032:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20046:4:39", + "type": "" + } + ], + "src": "19881:347:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20407:179:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20424:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20435:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20417:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20417:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20417:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20458:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20469:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20454:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20454:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20474:2:39", + "type": "", + "value": "29" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20447:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20447:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20447:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20497:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20508:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20493:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20493:18:39" + }, + { + "hexValue": "436f6c6c61746572616c20726174696f206d757374206265203e3d2031", + "kind": "string", + "nodeType": "YulLiteral", + "src": "20513:31:39", + "type": "", + "value": "Collateral ratio must be >= 1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20486:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20486:59:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20486:59:39" + }, + { + "nodeType": "YulAssignment", + "src": "20554:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20566:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20577:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20562:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20562:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20554:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_2b6a8f4152754b6a991bf1b0a666b82b00923d2fd769bf1e3367643b70f91813__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "20384:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20398:4:39", + "type": "" + } + ], + "src": "20233:353:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20765:182:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20782:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20793:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20775:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20775:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20775:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20816:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20827:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20812:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20812:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20832:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20805:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20805:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20805:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20855:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20866:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20851:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20851:18:39" + }, + { + "hexValue": "5b506f6f6c277320436c6f7365645d3a204365696c696e672072656163686564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "20871:34:39", + "type": "", + "value": "[Pool's Closed]: Ceiling reached" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20844:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20844:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20844:62:39" + }, + { + "nodeType": "YulAssignment", + "src": "20915:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20927:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20938:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20923:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20923:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20915:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_cff49a4dc330adf1553dee705fac7862f639b33b74fda177589900b9506a9737__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "20742:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20756:4:39", + "type": "" + } + ], + "src": "20591:356:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21126:228:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21143:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21154:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21136:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21136:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21136:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21177:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21188:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21173:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21173:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21193:2:39", + "type": "", + "value": "38" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21166:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21166:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21166:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21216:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21227:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21212:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21212:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e743174314445493a207369676e61747572652069732065", + "kind": "string", + "nodeType": "YulLiteral", + "src": "21232:34:39", + "type": "", + "value": "POOL::mint1t1DEI: signature is e" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21205:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21205:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21205:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21287:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21298:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21283:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21283:18:39" + }, + { + "hexValue": "787069726564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "21303:8:39", + "type": "", + "value": "xpired" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21276:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21276:36:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21276:36:39" + }, + { + "nodeType": "YulAssignment", + "src": "21321:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21333:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21344:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21329:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21329:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21321:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_f836b804fb91fcbb3dafb5e724f5eeb776ededc2eaf47030c5f454694abcbafe__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "21103:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "21117:4:39", + "type": "" + } + ], + "src": "20952:402:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21533:226:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21550:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21561:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21543:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21543:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21543:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21584:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21595:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21580:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21580:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21600:2:39", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21573:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21573:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21573:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21623:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21634:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21619:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21619:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e743174314445493a20696e76616c6964207369676e6174", + "kind": "string", + "nodeType": "YulLiteral", + "src": "21639:34:39", + "type": "", + "value": "POOL::mint1t1DEI: invalid signat" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21612:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21612:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21612:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21694:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21705:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21690:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21690:18:39" + }, + { + "hexValue": "75726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "21710:6:39", + "type": "", + "value": "ures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21683:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21683:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21683:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "21726:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21738:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21749:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21734:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21734:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21726:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3871818a433a796d8749bf69d3757469c36cba69a6da101f4f86b64a03c25fdf__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "21510:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "21524:4:39", + "type": "" + } + ], + "src": "21359:400:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21938:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21955:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21966:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21948:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21948:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21948:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21989:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22000:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21985:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21985:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22005:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21978:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21978:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21978:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22028:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22039:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22024:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22024:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e6365", + "kind": "string", + "nodeType": "YulLiteral", + "src": "22044:34:39", + "type": "", + "value": "AccessControl: can only renounce" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22017:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22017:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22017:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22099:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22110:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22095:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22095:18:39" + }, + { + "hexValue": "20726f6c657320666f722073656c66", + "kind": "string", + "nodeType": "YulLiteral", + "src": "22115:17:39", + "type": "", + "value": " roles for self" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22088:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22088:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22088:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "22142:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22154:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22165:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22150:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22150:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22142:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "21915:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "21929:4:39", + "type": "" + } + ], + "src": "21764:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22331:481:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "22341:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22351:2:39", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "22345:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22362:32:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22380:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "22391:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22376:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22376:18:39" + }, + "variables": [ + { + "name": "tail_1", + "nodeType": "YulTypedName", + "src": "22366:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22410:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "22421:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22403:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22403:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22403:21:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22433:17:39", + "value": { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "22444:6:39" + }, + "variables": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "22437:3:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22459:27:39", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "22479:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "22473:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "22473:13:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "22463:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "22502:6:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "22510:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22495:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22495:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22495:22:39" + }, + { + "nodeType": "YulAssignment", + "src": "22526:25:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22537:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22548:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22533:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22533:18:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22526:3:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22560:29:39", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "22578:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "22586:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22574:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22574:15:39" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "22564:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22598:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22607:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "22602:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22666:120:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22687:3:39" + }, + { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "22698:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "22692:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "22692:13:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22680:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22680:26:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22680:26:39" + }, + { + "nodeType": "YulAssignment", + "src": "22719:19:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22730:3:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "22735:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22726:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22726:12:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22719:3:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "22751:25:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "22765:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "22773:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22761:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22761:15:39" + }, + "variableNames": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "22751:6:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "22628:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "22631:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "22625:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "22625:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "22639:18:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "22641:14:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "22650:1:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22653:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22646:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22646:9:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "22641:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "22621:3:39", + "statements": [] + }, + "src": "22617:169:39" + }, + { + "nodeType": "YulAssignment", + "src": "22795:11:39", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22803:3:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22795:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "22300:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "22311:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "22322:4:39", + "type": "" + } + ], + "src": "22180:632:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22991:231:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23008:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23019:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23001:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23001:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23001:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23042:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23053:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23038:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23038:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23058:2:39", + "type": "", + "value": "41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23031:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23031:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23031:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23081:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23092:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23077:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23077:18:39" + }, + { + "hexValue": "504f4f4c3a2043616c6c6572206973206e6f7420504152414d455445525f5345", + "kind": "string", + "nodeType": "YulLiteral", + "src": "23097:34:39", + "type": "", + "value": "POOL: Caller is not PARAMETER_SE" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23070:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23070:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23070:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23152:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23163:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23148:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23148:18:39" + }, + { + "hexValue": "545445525f524f4c45", + "kind": "string", + "nodeType": "YulLiteral", + "src": "23168:11:39", + "type": "", + "value": "TTER_ROLE" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23141:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23141:39:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23141:39:39" + }, + { + "nodeType": "YulAssignment", + "src": "23189:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23201:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23212:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23197:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23197:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23189:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_76b82cf0f5d67f7f31fa6377a21018dea36302e26d7842fad5ba832c330157dd__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "22968:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "22982:4:39", + "type": "" + } + ], + "src": "22817:405:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23496:338:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "23506:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23518:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23529:3:39", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23514:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23514:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23506:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23549:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "23560:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23542:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23542:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23542:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23587:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23598:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23583:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23583:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "23603:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23576:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23576:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23576:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23630:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23641:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23626:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23626:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "23646:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23619:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23619:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23619:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23673:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23684:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23669:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23669:18:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "23689:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23662:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23662:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23662:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23716:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23727:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23712:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23712:19:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "23733:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23705:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23705:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23705:35:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23760:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23771:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23756:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23756:19:39" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "23777:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23749:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23749:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23749:35:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23804:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23815:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23800:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23800:19:39" + }, + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "23821:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23793:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23793:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23793:35:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "23417:9:39", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "23428:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "23436:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "23444:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "23452:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "23460:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "23468:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "23476:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "23487:4:39", + "type": "" + } + ], + "src": "23227:607:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24013:246:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24030:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24041:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24023:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24023:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24023:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24064:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24075:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24060:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24060:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24080:2:39", + "type": "", + "value": "56" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24053:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24053:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24053:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24103:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24114:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24099:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24099:18:39" + }, + { + "hexValue": "436f6c6c61746572616c20726174696f206e6565647320746f20626520626574", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24119:34:39", + "type": "", + "value": "Collateral ratio needs to be bet" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24092:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24092:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24092:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24174:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24185:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24170:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24170:18:39" + }, + { + "hexValue": "7765656e202e30303030303120616e64202e393939393939", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24190:26:39", + "type": "", + "value": "ween .000001 and .999999" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24163:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24163:54:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24163:54:39" + }, + { + "nodeType": "YulAssignment", + "src": "24226:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24238:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24249:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24234:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24234:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24226:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3a4aaa4225031aefd603a0181e03bfba377ad02f3a40d8d4ff79e4b75af91117__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "23990:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "24004:4:39", + "type": "" + } + ], + "src": "23839:420:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24438:298:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24455:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24466:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24448:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24448:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24448:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24489:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24500:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24485:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24485:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24505:2:39", + "type": "", + "value": "68" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24478:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24478:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24478:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24528:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24539:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24524:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24524:18:39" + }, + { + "hexValue": "506f6f6c206365696c696e6720726561636865642c206e6f206d6f7265204445", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24544:34:39", + "type": "", + "value": "Pool ceiling reached, no more DE" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24517:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24517:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24517:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24599:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24610:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24595:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24595:18:39" + }, + { + "hexValue": "492063616e206265206d696e7465642077697468207468697320636f6c6c6174", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24615:34:39", + "type": "", + "value": "I can be minted with this collat" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24588:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24588:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24588:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24670:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24681:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24666:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24666:19:39" + }, + { + "hexValue": "6572616c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24687:6:39", + "type": "", + "value": "eral" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24659:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24659:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24659:35:39" + }, + { + "nodeType": "YulAssignment", + "src": "24703:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24715:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24726:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24711:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24711:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24703:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_415add743154eebc1c14f0dcbb6d42364bd9228c5bfab92187476352ba4cf3a4__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "24415:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "24429:4:39", + "type": "" + } + ], + "src": "24264:472:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24915:236:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24932:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24943:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24925:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24925:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24925:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24966:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24977:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24962:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24962:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24982:2:39", + "type": "", + "value": "46" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24955:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24955:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24955:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25005:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25016:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25001:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25001:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e744672616374696f6e616c4445493a207369676e617475", + "kind": "string", + "nodeType": "YulLiteral", + "src": "25021:34:39", + "type": "", + "value": "POOL::mintFractionalDEI: signatu" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24994:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24994:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24994:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25076:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25087:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25072:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25072:18:39" + }, + { + "hexValue": "726520697320657870697265642e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "25092:16:39", + "type": "", + "value": "re is expired." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25065:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25065:44:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25065:44:39" + }, + { + "nodeType": "YulAssignment", + "src": "25118:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25130:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25141:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25126:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25126:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "25118:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3517d2a2517b8811826efd915add7c546f6c6059a93aba596e992ef7ede2c237__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "24892:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "24906:4:39", + "type": "" + } + ], + "src": "24741:410:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25415:372:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "25425:76:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25435:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "25429:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25517:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25530:2:39", + "type": "", + "value": "96" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "25534:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "25526:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25526:15:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "25543:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "25522:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25522:24:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25510:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25510:37:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25510:37:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25567:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25572:2:39", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25563:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25563:12:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "25577:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25556:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25556:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25556:28:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25604:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25609:2:39", + "type": "", + "value": "52" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25600:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25600:12:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25622:2:39", + "type": "", + "value": "96" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "25626:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "25618:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25618:15:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "25635:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "25614:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25614:24:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25593:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25593:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25593:46:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25659:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25664:2:39", + "type": "", + "value": "72" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25655:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25655:12:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "25669:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25648:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25648:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25648:28:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25696:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25701:3:39", + "type": "", + "value": "104" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25692:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25692:13:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "25707:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25685:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25685:29:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25685:29:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25734:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25739:3:39", + "type": "", + "value": "136" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25730:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25730:13:39" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "25745:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25723:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25723:29:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25723:29:39" + }, + { + "nodeType": "YulAssignment", + "src": "25761:20:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25772:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25777:3:39", + "type": "", + "value": "168" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25768:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25768:13:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "25761:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "25351:3:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "25356:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "25364:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "25372:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "25380:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "25388:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "25396:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "25407:3:39", + "type": "" + } + ], + "src": "25156:631:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25966:233:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25983:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25994:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25976:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25976:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25976:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26017:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26028:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26013:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26013:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26033:2:39", + "type": "", + "value": "43" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26006:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26006:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26006:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26056:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26067:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26052:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26052:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e744672616374696f6e616c4445493a20696e76616c6964", + "kind": "string", + "nodeType": "YulLiteral", + "src": "26072:34:39", + "type": "", + "value": "POOL::mintFractionalDEI: invalid" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26045:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26045:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26045:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26127:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26138:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26123:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26123:18:39" + }, + { + "hexValue": "207369676e617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "26143:13:39", + "type": "", + "value": " signatures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26116:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26116:41:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26116:41:39" + }, + { + "nodeType": "YulAssignment", + "src": "26166:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26178:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26189:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26174:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26174:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26166:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_70791a0be90f5705149d45e0236213cb0328457b5d86e6288006e4f6774b09e7__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "25943:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "25957:4:39", + "type": "" + } + ], + "src": "25792:407:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26261:209:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26278:3:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "26289:5:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26283:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26283:12:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26271:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26271:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26271:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26316:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26321:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26312:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26312:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "26338:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26345:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26334:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26334:16:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26328:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26328:23:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26305:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26305:47:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26305:47:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26372:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26377:4:39", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26368:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26368:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "26394:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26401:4:39", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26390:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26390:16:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26384:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26384:23:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26361:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26361:47:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26361:47:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26428:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26433:4:39", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26424:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26424:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "26450:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26457:4:39", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26446:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26446:16:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26440:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26440:23:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26417:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26417:47:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26417:47:39" + } + ] + }, + "name": "abi_encode_struct_MintFD_Params", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "26245:5:39", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "26252:3:39", + "type": "" + } + ], + "src": "26204:266:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26638:102:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "26648:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26660:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26671:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26656:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26656:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26648:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "26716:6:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26724:9:39" + } + ], + "functionName": { + "name": "abi_encode_struct_MintFD_Params", + "nodeType": "YulIdentifier", + "src": "26684:31:39" + }, + "nodeType": "YulFunctionCall", + "src": "26684:50:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26684:50:39" + } + ] + }, + "name": "abi_encode_tuple_t_struct$_MintFD_Params_$3600_memory_ptr__to_t_struct$_MintFD_Params_$3600_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "26607:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "26618:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "26629:4:39", + "type": "" + } + ], + "src": "26475:265:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26843:147:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "26889:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26898:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26901:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "26891:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26891:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26891:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "26864:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26873:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "26860:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26860:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26885:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "26856:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26856:32:39" + }, + "nodeType": "YulIf", + "src": "26853:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "26914:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26930:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26924:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26924:16:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "26914:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "26949:35:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26969:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26980:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26965:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26965:18:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26959:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26959:25:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "26949:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "26801:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "26812:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "26824:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "26832:6:39", + "type": "" + } + ], + "src": "26745:245:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27169:174:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27186:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27197:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27179:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27179:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27179:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27220:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27231:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27216:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27216:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27236:2:39", + "type": "", + "value": "24" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27209:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27209:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27209:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27259:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27270:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27255:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27255:18:39" + }, + { + "hexValue": "4e6f7420656e6f756768204445555320696e707574746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "27275:26:39", + "type": "", + "value": "Not enough DEUS inputted" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27248:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27248:54:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27248:54:39" + }, + { + "nodeType": "YulAssignment", + "src": "27311:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27323:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27334:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27319:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27319:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27311:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_32c377f750f3acdff4f31738199007cf625ea4cb5a4b65f0253238ad0d6fe603__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "27146:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "27160:4:39", + "type": "" + } + ], + "src": "26995:348:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27522:166:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27539:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27550:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27532:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27532:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27532:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27573:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27584:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27569:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27569:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27589:2:39", + "type": "", + "value": "16" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27562:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27562:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27562:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27612:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27623:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27608:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27608:18:39" + }, + { + "hexValue": "616d6f756e743c3d64616f5368617265", + "kind": "string", + "nodeType": "YulLiteral", + "src": "27628:18:39", + "type": "", + "value": "amount<=daoShare" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27601:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27601:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27601:46:39" + }, + { + "nodeType": "YulAssignment", + "src": "27656:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27668:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27679:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27664:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27664:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27656:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_ffc61d1a84775e893520fbdfe0ea8909f9284081f97dd4e8ed1bc343abeb295e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "27499:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "27513:4:39", + "type": "" + } + ], + "src": "27348:340:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27822:168:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "27832:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27844:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27855:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27840:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27840:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27832:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27874:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "27885:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27867:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27867:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27867:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27912:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27923:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27908:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27908:18:39" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "27932:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27940:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "27928:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27928:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27901:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27901:83:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27901:83:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "27783:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "27794:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "27802:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "27813:4:39", + "type": "" + } + ], + "src": "27693:297:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28169:241:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28186:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28197:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28179:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28179:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28179:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28220:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28231:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28216:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28216:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28236:2:39", + "type": "", + "value": "51" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28209:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28209:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28209:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28259:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28270:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28255:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28255:18:39" + }, + { + "hexValue": "504f4f4c3a3a7265636f6c6c61746572616c697a654445493a205265636f6c6c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "28275:34:39", + "type": "", + "value": "POOL::recollateralizeDEI: Recoll" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28248:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28248:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28248:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28330:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28341:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28326:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28326:18:39" + }, + { + "hexValue": "61746572616c697a6520697320706175736564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "28346:21:39", + "type": "", + "value": "ateralize is paused" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28319:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28319:49:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28319:49:39" + }, + { + "nodeType": "YulAssignment", + "src": "28377:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28389:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28400:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28385:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28385:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "28377:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_565f0845894e0f662254a5093763af0fee3605d54c84edbcf11c672de6a88543__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "28146:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "28160:4:39", + "type": "" + } + ], + "src": "27995:415:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28589:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28606:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28617:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28599:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28599:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28599:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28640:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28651:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28636:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28636:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28656:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28629:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28629:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28629:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28679:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28690:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28675:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28675:18:39" + }, + { + "hexValue": "504f4f4c3a3a7265636f6c6c61746572616c697a654445493a207369676e6174", + "kind": "string", + "nodeType": "YulLiteral", + "src": "28695:34:39", + "type": "", + "value": "POOL::recollateralizeDEI: signat" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28668:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28668:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28668:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28750:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28761:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28746:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28746:18:39" + }, + { + "hexValue": "75726520697320657870697265642e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "28766:17:39", + "type": "", + "value": "ure is expired." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28739:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28739:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28739:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "28793:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28805:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28816:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28801:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28801:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "28793:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_43ec8f409eb317e256e176d402e36ec6af276af1f8f749e4d9fbe21bcd7bc664__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "28566:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "28580:4:39", + "type": "" + } + ], + "src": "28415:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29140:691:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "29150:76:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29160:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "29154:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "29242:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29255:2:39", + "type": "", + "value": "96" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "29259:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "29251:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29251:15:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "29268:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "29247:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29247:24:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29235:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29235:37:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29235:37:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "29281:25:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "29298:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29303:2:39", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29294:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29294:12:39" + }, + "variables": [ + { + "name": "pos_1", + "nodeType": "YulTypedName", + "src": "29285:5:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "29315:27:39", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "29335:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "29329:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "29329:13:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "29319:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "29351:14:39", + "value": { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29360:5:39" + }, + "variableNames": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29351:5:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "29374:14:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29384:4:39", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "29378:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "29397:29:39", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "29415:6:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "29423:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29411:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29411:15:39" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "29401:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "29435:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29444:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "29439:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29503:126:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29524:5:39" + }, + { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "29537:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "29531:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "29531:13:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29517:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29517:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29517:28:39" + }, + { + "nodeType": "YulAssignment", + "src": "29558:23:39", + "value": { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29571:5:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "29578:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29567:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29567:14:39" + }, + "variableNames": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29558:5:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "29594:25:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "29608:6:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "29616:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29604:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29604:15:39" + }, + "variableNames": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "29594:6:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29465:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "29468:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "29462:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "29462:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "29476:18:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "29478:14:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29487:1:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29490:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29483:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29483:9:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29478:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "29458:3:39", + "statements": [] + }, + "src": "29454:175:39" + }, + { + "expression": { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29645:5:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29660:2:39", + "type": "", + "value": "96" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "29664:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "29656:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29656:15:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "29673:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "29652:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29652:24:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29638:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29638:39:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29638:39:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29697:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29704:2:39", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29693:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29693:14:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "29709:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29686:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29686:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29686:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29736:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29743:2:39", + "type": "", + "value": "52" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29732:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29732:14:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "29748:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29725:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29725:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29725:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29775:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29782:2:39", + "type": "", + "value": "84" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29771:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29771:14:39" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "29787:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29764:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29764:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29764:30:39" + }, + { + "nodeType": "YulAssignment", + "src": "29803:22:39", + "value": { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29814:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29821:3:39", + "type": "", + "value": "116" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29810:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29810:15:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "29803:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "29076:3:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "29081:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "29089:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "29097:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "29105:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "29113:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "29121:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "29132:3:39", + "type": "" + } + ], + "src": "28831:1000:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29889:205:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "29899:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29908:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "29903:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29968:63:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "29993:3:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29998:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29989:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29989:11:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "30012:3:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "30017:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30008:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30008:11:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "30002:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "30002:18:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29982:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29982:39:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29982:39:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29929:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "29932:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "29926:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "29926:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "29940:19:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "29942:15:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29951:1:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29954:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29947:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29947:10:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29942:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "29922:3:39", + "statements": [] + }, + "src": "29918:113:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30057:31:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "30070:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30075:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30066:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30066:16:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30084:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30059:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30059:27:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30059:27:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "30046:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30049:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "30043:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "30043:13:39" + }, + "nodeType": "YulIf", + "src": "30040:48:39" + } + ] + }, + "name": "copy_memory_to_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "29867:3:39", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "29872:3:39", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "29877:6:39", + "type": "" + } + ], + "src": "29836:258:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30296:991:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "30306:32:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30324:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30335:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30320:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30320:18:39" + }, + "variables": [ + { + "name": "tail_1", + "nodeType": "YulTypedName", + "src": "30310:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30354:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "30365:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30347:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30347:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30347:25:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30381:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30391:2:39", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "30385:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30413:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "30424:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30409:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30409:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30429:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30402:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30402:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30402:30:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30441:17:39", + "value": { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "30452:6:39" + }, + "variables": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "30445:3:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30467:27:39", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "30487:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "30481:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "30481:13:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "30471:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "30510:6:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30518:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30503:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30503:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30503:22:39" + }, + { + "nodeType": "YulAssignment", + "src": "30534:25:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30545:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30556:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30541:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30541:18:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "30534:3:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30568:53:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30590:9:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30605:1:39", + "type": "", + "value": "5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30608:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "30601:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30601:14:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30586:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30586:30:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30618:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30582:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30582:39:39" + }, + "variables": [ + { + "name": "tail_2", + "nodeType": "YulTypedName", + "src": "30572:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30630:29:39", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "30648:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "30656:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30644:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30644:15:39" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "30634:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30668:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30677:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "30672:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30736:522:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "30757:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "30770:6:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30778:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "30766:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30766:22:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30790:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30762:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30762:95:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30750:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30750:108:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30750:108:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30871:23:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "30887:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "30881:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "30881:13:39" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "30875:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30907:25:39", + "value": { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "30929:2:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "30923:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "30923:9:39" + }, + "variables": [ + { + "name": "length_1", + "nodeType": "YulTypedName", + "src": "30911:8:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "30952:6:39" + }, + { + "name": "length_1", + "nodeType": "YulIdentifier", + "src": "30960:8:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30945:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30945:24:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30945:24:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "31008:2:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "31012:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31004:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31004:11:39" + }, + { + "arguments": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "31021:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "31029:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31017:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31017:15:39" + }, + { + "name": "length_1", + "nodeType": "YulIdentifier", + "src": "31034:8:39" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "30982:21:39" + }, + "nodeType": "YulFunctionCall", + "src": "30982:61:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30982:61:39" + }, + { + "nodeType": "YulAssignment", + "src": "31056:122:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "31074:6:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length_1", + "nodeType": "YulIdentifier", + "src": "31090:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31100:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31086:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31086:17:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31105:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "31082:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31082:90:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31070:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31070:103:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "31175:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31066:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31066:112:39" + }, + "variableNames": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "31056:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "31191:25:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "31205:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "31213:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31201:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31201:15:39" + }, + "variableNames": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "31191:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "31229:19:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "31240:3:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "31245:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31236:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31236:12:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "31229:3:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "30698:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30701:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "30695:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "30695:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "30709:18:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "30711:14:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "30720:1:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30723:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30716:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30716:9:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "30711:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "30691:3:39", + "statements": [] + }, + "src": "30687:571:39" + }, + { + "nodeType": "YulAssignment", + "src": "31267:14:39", + "value": { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "31275:6:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "31267:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "30257:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "30268:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "30276:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "30287:4:39", + "type": "" + } + ], + "src": "30099:1188:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "31466:234:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31483:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31494:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31476:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31476:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31476:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31517:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31528:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31513:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31513:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31533:2:39", + "type": "", + "value": "44" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31506:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31506:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31506:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31556:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31567:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31552:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31552:18:39" + }, + { + "hexValue": "504f4f4c3a3a7265636f6c6c61746572616c697a654445493a20696e76616c69", + "kind": "string", + "nodeType": "YulLiteral", + "src": "31572:34:39", + "type": "", + "value": "POOL::recollateralizeDEI: invali" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31545:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31545:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31545:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31627:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31638:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31623:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31623:18:39" + }, + { + "hexValue": "64207369676e617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "31643:14:39", + "type": "", + "value": "d signatures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31616:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31616:42:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31616:42:39" + }, + { + "nodeType": "YulAssignment", + "src": "31667:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31679:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31690:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31675:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31675:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "31667:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_f8eb31fdc269657c54ee10149955fecbcb75254d3eeec631bdecc57de525010b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "31443:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "31457:4:39", + "type": "" + } + ], + "src": "31292:408:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "31737:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31754:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31757:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31747:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31747:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31747:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31851:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31854:4:39", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31844:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31844:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31844:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31875:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31878:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "31868:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31868:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31868:15:39" + } + ] + }, + "name": "panic_error_0x32", + "nodeType": "YulFunctionDefinition", + "src": "31705:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32107:250:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "32117:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32129:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32140:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32125:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32125:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "32117:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32160:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "32171:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32153:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32153:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32153:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32198:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32209:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32194:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32194:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "32214:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32187:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32187:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32187:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32241:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32252:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32237:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32237:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "32257:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32230:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32230:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32230:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32284:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32295:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32280:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32280:18:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "32300:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32273:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32273:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32273:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32327:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32338:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32323:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32323:19:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "32344:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32316:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32316:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32316:35:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "32044:9:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "32055:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "32063:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "32071:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "32079:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "32087:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "32098:4:39", + "type": "" + } + ], + "src": "31894:463:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32536:244:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32553:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32564:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32546:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32546:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32546:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32587:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32598:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32583:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32583:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32603:2:39", + "type": "", + "value": "54" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32576:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32576:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32576:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32626:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32637:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32622:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32622:18:39" + }, + { + "hexValue": "504f4f4c3a3a72656465656d416c676f726974686d69634445493a20436f6c6c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "32642:34:39", + "type": "", + "value": "POOL::redeemAlgorithmicDEI: Coll" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32615:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32615:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32615:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32697:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32708:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32693:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32693:18:39" + }, + { + "hexValue": "61746572616c20726174696f206d7573742062652030", + "kind": "string", + "nodeType": "YulLiteral", + "src": "32713:24:39", + "type": "", + "value": "ateral ratio must be 0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32686:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32686:52:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32686:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "32747:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32759:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32770:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32755:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32755:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "32747:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_219e324e833041c644ccb1dd3dba73aaa878497ddb310916decd8247cfffb1bd__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "32513:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "32527:4:39", + "type": "" + } + ], + "src": "32362:418:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32959:238:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32976:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32987:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32969:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32969:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32969:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33010:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33021:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33006:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33006:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33026:2:39", + "type": "", + "value": "48" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32999:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32999:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32999:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33049:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33060:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33045:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33045:18:39" + }, + { + "hexValue": "4445493a3a72656465656d416c676f726974686d69634445493a207369676e61", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33065:34:39", + "type": "", + "value": "DEI::redeemAlgorithmicDEI: signa" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33038:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33038:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33038:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33120:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33131:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33116:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33116:18:39" + }, + { + "hexValue": "7475726520697320657870697265642e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33136:18:39", + "type": "", + "value": "ture is expired." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33109:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33109:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33109:46:39" + }, + { + "nodeType": "YulAssignment", + "src": "33164:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33176:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33187:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33172:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33172:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "33164:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_af86e93bd0220a55e8ca62f5f35862820e5999de1371ac209bb45c45b39ee5de__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "32936:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "32950:4:39", + "type": "" + } + ], + "src": "32785:412:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33376:236:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33393:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33404:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33386:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33386:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33386:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33427:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33438:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33423:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33423:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33443:2:39", + "type": "", + "value": "46" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33416:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33416:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33416:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33466:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33477:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33462:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33462:18:39" + }, + { + "hexValue": "504f4f4c3a3a72656465656d416c676f726974686d69634445493a20696e7661", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33482:34:39", + "type": "", + "value": "POOL::redeemAlgorithmicDEI: inva" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33455:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33455:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33455:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33537:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33548:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33533:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33533:18:39" + }, + { + "hexValue": "6c6964207369676e617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33553:16:39", + "type": "", + "value": "lid signatures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33526:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33526:44:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33526:44:39" + }, + { + "nodeType": "YulAssignment", + "src": "33579:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33591:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33602:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33587:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33587:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "33579:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_bff4c2607c2670a7edf36f88b5d5987db2ccc6a59b36f486c4c57f193ba00833__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "33353:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "33367:4:39", + "type": "" + } + ], + "src": "33202:410:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33791:226:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33808:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33819:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33801:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33801:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33801:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33842:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33853:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33838:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33838:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33858:2:39", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33831:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33831:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33831:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33881:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33892:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33877:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33877:18:39" + }, + { + "hexValue": "504f4f4c3a3a6275794261636b444555533a204275796261636b206973207061", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33897:34:39", + "type": "", + "value": "POOL::buyBackDEUS: Buyback is pa" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33870:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33870:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33870:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33952:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33963:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33948:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33948:18:39" + }, + { + "hexValue": "75736564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33968:6:39", + "type": "", + "value": "used" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33941:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33941:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33941:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "33984:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33996:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34007:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33992:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33992:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "33984:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0f701899e5d254af158b94e181e8c864fa1fa8407b8e83a84b212f1856c034bb__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "33768:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "33782:4:39", + "type": "" + } + ], + "src": "33617:400:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34196:229:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34213:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34224:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34206:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34206:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34206:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34247:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34258:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34243:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34243:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34263:2:39", + "type": "", + "value": "39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34236:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34236:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34236:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34286:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34297:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34282:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34282:18:39" + }, + { + "hexValue": "4445493a3a6275794261636b444555533a207369676e61747572652069732065", + "kind": "string", + "nodeType": "YulLiteral", + "src": "34302:34:39", + "type": "", + "value": "DEI::buyBackDEUS: signature is e" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34275:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34275:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34275:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34357:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34368:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34353:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34353:18:39" + }, + { + "hexValue": "7870697265642e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "34373:9:39", + "type": "", + "value": "xpired." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34346:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34346:37:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34346:37:39" + }, + { + "nodeType": "YulAssignment", + "src": "34392:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34404:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34415:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34400:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34400:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "34392:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_74a9279f050c6419792bc3daa57da050d8e2f426f944681941d34e8909be7eac__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "34173:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "34187:4:39", + "type": "" + } + ], + "src": "34022:403:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34604:227:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34621:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34632:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34614:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34614:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34614:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34655:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34666:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34651:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34651:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34671:2:39", + "type": "", + "value": "37" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34644:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34644:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34644:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34694:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34705:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34690:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34690:18:39" + }, + { + "hexValue": "504f4f4c3a3a6275794261636b444555533a20696e76616c6964207369676e61", + "kind": "string", + "nodeType": "YulLiteral", + "src": "34710:34:39", + "type": "", + "value": "POOL::buyBackDEUS: invalid signa" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34683:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34683:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34683:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34765:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34776:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34761:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34761:18:39" + }, + { + "hexValue": "7475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "34781:7:39", + "type": "", + "value": "tures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34754:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34754:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34754:35:39" + }, + { + "nodeType": "YulAssignment", + "src": "34798:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34810:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34821:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34806:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34806:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "34798:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_c668331e1a5c68ea41572b6fbf581e9b4ce7392915c1ff6a6872ae765618f9ee__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "34581:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "34595:4:39", + "type": "" + } + ], + "src": "34430:401:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35009:102:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "35019:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35031:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35042:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35027:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35027:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "35019:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "35087:6:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35095:9:39" + } + ], + "functionName": { + "name": "abi_encode_struct_MintFD_Params", + "nodeType": "YulIdentifier", + "src": "35055:31:39" + }, + "nodeType": "YulFunctionCall", + "src": "35055:50:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35055:50:39" + } + ] + }, + "name": "abi_encode_tuple_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__to_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "34978:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "34989:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "35000:4:39", + "type": "" + } + ], + "src": "34836:275:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35290:176:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35307:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35318:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35300:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35300:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35300:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35341:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35352:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35337:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35337:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35357:2:39", + "type": "", + "value": "26" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35330:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35330:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35330:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35380:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35391:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35376:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35376:18:39" + }, + { + "hexValue": "436f6c6c61746572616c20726174696f206d7573742062652030", + "kind": "string", + "nodeType": "YulLiteral", + "src": "35396:28:39", + "type": "", + "value": "Collateral ratio must be 0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35369:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35369:56:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35369:56:39" + }, + { + "nodeType": "YulAssignment", + "src": "35434:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35446:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35457:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35442:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35442:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "35434:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_f64a17d208f26e05f2312b5ee80f462bf5bab19979dfd330950359be93bd2d66__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "35267:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "35281:4:39", + "type": "" + } + ], + "src": "35116:350:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35645:234:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35662:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35673:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35655:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35655:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35655:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35696:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35707:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35692:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35692:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35712:2:39", + "type": "", + "value": "44" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35685:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35685:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35685:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35735:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35746:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35731:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35731:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e74416c676f726974686d69634445493a20696e76616c69", + "kind": "string", + "nodeType": "YulLiteral", + "src": "35751:34:39", + "type": "", + "value": "POOL::mintAlgorithmicDEI: invali" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35724:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35724:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35724:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35806:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35817:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35802:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35802:18:39" + }, + { + "hexValue": "64207369676e617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "35822:14:39", + "type": "", + "value": "d signatures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35795:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35795:42:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35795:42:39" + }, + { + "nodeType": "YulAssignment", + "src": "35846:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35858:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35869:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35854:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35854:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "35846:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_5a2d3f9bcb3c5bd0b1926b1856db5dd186810b6e73d5cb9f87ee953c4da7fee2__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "35622:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "35636:4:39", + "type": "" + } + ], + "src": "35471:408:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36058:238:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36075:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36086:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36068:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36068:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36068:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36109:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36120:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36105:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36105:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36125:2:39", + "type": "", + "value": "48" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36098:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36098:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36098:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36148:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36159:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36144:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36144:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "36164:34:39", + "type": "", + "value": "AccessControl: sender must be an" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36137:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36137:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36137:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36219:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36230:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36215:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36215:18:39" + }, + { + "hexValue": "2061646d696e20746f207265766f6b65", + "kind": "string", + "nodeType": "YulLiteral", + "src": "36235:18:39", + "type": "", + "value": " admin to revoke" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36208:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36208:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36208:46:39" + }, + { + "nodeType": "YulAssignment", + "src": "36263:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36275:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36286:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36271:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36271:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "36263:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "36035:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "36049:4:39", + "type": "" + } + ], + "src": "35884:412:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36475:174:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36492:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36503:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36485:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36485:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36485:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36526:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36537:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36522:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36522:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36542:2:39", + "type": "", + "value": "24" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36515:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36515:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36515:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36565:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36576:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36561:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36561:18:39" + }, + { + "hexValue": "504f4f4c3a3a796f7520617265206e6f7420747275737479", + "kind": "string", + "nodeType": "YulLiteral", + "src": "36581:26:39", + "type": "", + "value": "POOL::you are not trusty" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36554:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36554:54:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36554:54:39" + }, + { + "nodeType": "YulAssignment", + "src": "36617:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36629:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36640:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36625:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36625:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "36617:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_7b7d20f9ca6e9adc6378137dbeda8a962bb9bf07440b2b9db28bb53f4e464fce__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "36452:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "36466:4:39", + "type": "" + } + ], + "src": "36301:348:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36828:313:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36845:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36856:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36838:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36838:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36838:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36879:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36890:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36875:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36875:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36895:2:39", + "type": "", + "value": "83" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36868:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36868:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36868:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36918:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36929:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36914:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36914:18:39" + }, + { + "hexValue": "504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20436f6c6c61", + "kind": "string", + "nodeType": "YulLiteral", + "src": "36934:34:39", + "type": "", + "value": "POOL::redeemFractionalDEI: Colla" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36907:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36907:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36907:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36989:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37000:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36985:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36985:18:39" + }, + { + "hexValue": "746572616c20726174696f206e6565647320746f206265206265747765656e20", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37005:34:39", + "type": "", + "value": "teral ratio needs to be between " + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36978:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36978:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36978:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37060:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37071:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37056:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37056:19:39" + }, + { + "hexValue": "2e30303030303120616e64202e393939393939", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37077:21:39", + "type": "", + "value": ".000001 and .999999" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37049:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37049:50:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37049:50:39" + }, + { + "nodeType": "YulAssignment", + "src": "37108:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37120:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37131:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37116:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37116:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "37108:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_1eb003467dd04b32fe18359370bc0d0e41e237ed2bf1be23765de9081983dd0d__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "36805:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "36819:4:39", + "type": "" + } + ], + "src": "36654:487:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "37320:236:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37337:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37348:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37330:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37330:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37330:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37371:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37382:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37367:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37367:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37387:2:39", + "type": "", + "value": "46" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37360:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37360:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37360:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37410:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37421:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37406:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37406:18:39" + }, + { + "hexValue": "4445493a3a72656465656d4672616374696f6e616c4445493a207369676e6174", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37426:34:39", + "type": "", + "value": "DEI::redeemFractionalDEI: signat" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37399:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37399:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37399:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37481:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37492:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37477:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37477:18:39" + }, + { + "hexValue": "7572652069732065787069726564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37497:16:39", + "type": "", + "value": "ure is expired" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37470:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37470:44:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37470:44:39" + }, + { + "nodeType": "YulAssignment", + "src": "37523:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37535:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37546:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37531:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37531:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "37523:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_d441a1ecab801b1c575c77e3c185431fd7b0029d666fc7417a9f7556b3f83d6f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "37297:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "37311:4:39", + "type": "" + } + ], + "src": "37146:410:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "37735:235:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37752:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37763:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37745:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37745:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37745:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37786:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37797:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37782:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37782:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37802:2:39", + "type": "", + "value": "45" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37775:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37775:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37775:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37825:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37836:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37821:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37821:18:39" + }, + { + "hexValue": "504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20696e76616c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37841:34:39", + "type": "", + "value": "POOL::redeemFractionalDEI: inval" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37814:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37814:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37814:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37896:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37907:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37892:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37892:18:39" + }, + { + "hexValue": "6964207369676e617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37912:15:39", + "type": "", + "value": "id signatures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37885:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37885:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37885:43:39" + }, + { + "nodeType": "YulAssignment", + "src": "37937:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37949:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37960:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37945:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37945:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "37937:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3cf3652b2acfb73942e459b043ef1100fffabb4093e48d3162412f77ff7ce9c4__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "37712:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "37726:4:39", + "type": "" + } + ], + "src": "37561:409:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38112:137:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "38122:27:39", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "38142:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "38136:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "38136:13:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "38126:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "38184:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38192:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38180:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38180:17:39" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "38199:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "38204:6:39" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "38158:21:39" + }, + "nodeType": "YulFunctionCall", + "src": "38158:53:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38158:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "38220:23:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "38231:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "38236:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38227:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38227:16:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "38220:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "38088:3:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "38093:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "38104:3:39", + "type": "" + } + ], + "src": "37975:274:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38428:181:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38445:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38456:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38438:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38438:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38438:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38479:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38490:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38475:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38475:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38495:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38468:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38468:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38468:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38518:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38529:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38514:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38514:18:39" + }, + { + "hexValue": "5472616e7366657248656c7065723a205452414e534645525f4641494c4544", + "kind": "string", + "nodeType": "YulLiteral", + "src": "38534:33:39", + "type": "", + "value": "TransferHelper: TRANSFER_FAILED" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38507:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38507:61:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38507:61:39" + }, + { + "nodeType": "YulAssignment", + "src": "38577:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38589:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38600:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38585:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38585:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "38577:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "38405:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "38419:4:39", + "type": "" + } + ], + "src": "38254:355:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38771:241:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "38781:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38793:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38804:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38789:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38789:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "38781:4:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "38816:52:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38826:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "38820:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38884:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "38899:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "38907:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "38895:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38895:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38877:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38877:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38877:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38931:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38942:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38927:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38927:18:39" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "38951:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "38959:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "38947:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38947:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38920:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38920:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38920:43:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38983:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38994:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38979:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38979:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "38999:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38972:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38972:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38972:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "38724:9:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "38735:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "38743:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "38751:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "38762:4:39", + "type": "" + } + ], + "src": "38614:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39191:226:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39208:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39219:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39201:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39201:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39201:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39242:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39253:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39238:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39238:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39258:2:39", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39231:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39231:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39231:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39281:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39292:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39277:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39277:18:39" + }, + { + "hexValue": "5472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641", + "kind": "string", + "nodeType": "YulLiteral", + "src": "39297:34:39", + "type": "", + "value": "TransferHelper: TRANSFER_FROM_FA" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39270:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39270:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39270:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39352:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39363:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39348:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39348:18:39" + }, + { + "hexValue": "494c4544", + "kind": "string", + "nodeType": "YulLiteral", + "src": "39368:6:39", + "type": "", + "value": "ILED" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39341:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39341:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39341:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "39384:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39396:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39407:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39392:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39392:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "39384:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "39168:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "39182:4:39", + "type": "" + } + ], + "src": "39017:400:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39596:224:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39613:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39624:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39606:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39606:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39606:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39647:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39658:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39643:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39643:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39663:2:39", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39636:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39636:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39636:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39686:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39697:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39682:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39682:18:39" + }, + { + "hexValue": "456e756d657261626c655365743a20696e646578206f7574206f6620626f756e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "39702:34:39", + "type": "", + "value": "EnumerableSet: index out of boun" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39675:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39675:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39675:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39757:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39768:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39753:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39753:18:39" + }, + { + "hexValue": "6473", + "kind": "string", + "nodeType": "YulLiteral", + "src": "39773:4:39", + "type": "", + "value": "ds" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39746:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39746:32:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39746:32:39" + }, + { + "nodeType": "YulAssignment", + "src": "39787:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39799:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39810:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39795:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39795:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "39787:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "39573:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "39587:4:39", + "type": "" + } + ], + "src": "39422:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39857:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39874:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39877:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39867:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39867:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39867:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39971:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39974:4:39", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39964:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39964:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39964:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39995:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39998:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "39988:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39988:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39988:15:39" + } + ] + }, + "name": "panic_error_0x31", + "nodeType": "YulFunctionDefinition", + "src": "39825:184:39" + } + ] + }, + "contents": "{\n { }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_array_bytes_calldata_dyn_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value3_1, value4_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n value3 := value3_1\n value4 := value4_1\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function panic_error_0x41()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory_5709() -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, 0xc0)\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function array_allocation_size_array_uint256_dyn(length) -> size\n {\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n size := add(shl(5, length), 0x20)\n }\n function abi_decode_array_uint256_dyn(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let _2 := 0x20\n let dst := allocate_memory(array_allocation_size_array_uint256_dyn(_1))\n let dst_1 := dst\n mstore(dst, _1)\n dst := add(dst, _2)\n let srcEnd := add(add(offset, shl(5, _1)), _2)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, _2)\n for { } lt(src, srcEnd) { src := add(src, _2) }\n {\n mstore(dst, calldataload(src))\n dst := add(dst, _2)\n }\n array := dst_1\n }\n function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value0 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n }\n function abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n value4 := calldataload(add(headStart, 128))\n value5 := calldataload(add(headStart, 160))\n value6 := calldataload(add(headStart, 192))\n }\n function abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n value4 := calldataload(add(headStart, 128))\n let offset := calldataload(add(headStart, 160))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value5_1, value6_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n value5 := value5_1\n value6 := value6_1\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_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_decode_array_bytes_dyn(offset, end) -> array\n {\n let _1 := 0x1f\n if iszero(slt(add(offset, _1), end)) { revert(0, 0) }\n let _2 := calldataload(offset)\n let _3 := 0x20\n let dst := allocate_memory(array_allocation_size_array_uint256_dyn(_2))\n let dst_1 := dst\n mstore(dst, _2)\n dst := add(dst, _3)\n let srcEnd := add(add(offset, shl(5, _2)), _3)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, _3)\n for { } lt(src, srcEnd) { src := add(src, _3) }\n {\n let innerOffset := calldataload(src)\n let _4 := 0xffffffffffffffff\n if gt(innerOffset, _4)\n {\n let _5 := 0\n revert(_5, _5)\n }\n let _6 := add(offset, innerOffset)\n if iszero(slt(add(_6, 63), end))\n {\n let _7 := 0\n revert(_7, _7)\n }\n let _8 := calldataload(add(_6, _3))\n let _9 := 64\n if gt(_8, _4) { panic_error_0x41() }\n let array_1 := allocate_memory(add(and(add(_8, _1), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), _3))\n mstore(array_1, _8)\n if gt(add(add(_6, _8), _9), end)\n {\n let _10 := 0\n revert(_10, _10)\n }\n calldatacopy(add(array_1, _3), add(_6, _9), _8)\n mstore(add(add(array_1, _8), _3), 0)\n mstore(dst, array_1)\n dst := add(dst, _3)\n }\n array := dst_1\n }\n function abi_decode_tuple_t_struct$_RecollateralizeDEI_$1556_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if slt(sub(dataEnd, _2), 0xc0) { revert(0, 0) }\n let value := allocate_memory_5709()\n mstore(value, calldataload(_2))\n mstore(add(value, 32), calldataload(add(_2, 32)))\n let offset_1 := calldataload(add(_2, 64))\n if gt(offset_1, _1) { revert(0, 0) }\n mstore(add(value, 64), abi_decode_array_uint256_dyn(add(_2, offset_1), dataEnd))\n mstore(add(value, 96), calldataload(add(_2, 96)))\n mstore(add(value, 128), calldataload(add(_2, 128)))\n let offset_2 := calldataload(add(_2, 160))\n if gt(offset_2, _1) { revert(0, 0) }\n mstore(add(value, 160), abi_decode_array_bytes_dyn(add(_2, offset_2), dataEnd))\n value0 := value\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_memory_ptrt_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n value0 := calldataload(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n value1 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let offset_1 := calldataload(add(headStart, 128))\n if gt(offset_1, _1) { revert(0, 0) }\n let value4_1, value5_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, offset_1), dataEnd)\n value4 := value4_1\n value5 := value5_1\n }\n function abi_decode_tuple_t_addresst_uint256t_address(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := abi_decode_address(add(headStart, 64))\n }\n function abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value4_1, value5_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n value4 := value4_1\n value5 := value5_1\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function abi_encode_tuple_t_stringliteral_38c9fd1b67df6e999cac6aaf315cc13e0fa4fc296b57f92466d27a378c17f081__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 91)\n mstore(add(headStart, 64), \"POOL::collectRedemption: Must wa\")\n mstore(add(headStart, 96), \"it for redemption_delay blocks b\")\n mstore(add(headStart, 128), \"efore collecting redemption\")\n tail := add(headStart, 160)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function abi_encode_tuple_t_stringliteral_de458c40ee20c89c9807b7a8a5908e3319b480e8b007f55d3d683bc68bb7186e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 25)\n mstore(add(headStart, 64), \"POOL::Redeeming is paused\")\n tail := add(headStart, 96)\n }\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_c70433350355bf0543fc06a466fe44bcb01281d5a63b8bb87c74c17650f3e4c7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Collateral ratio must be == 1\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_0553f3220b1c65f13a1a0bcfbae12cc9d57080d375095d8011e479f9a164d51f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"POOL::mintAlgorithmicDEI: signat\")\n mstore(add(headStart, 96), \"ure is expired.\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed(pos, value3, value2, value1, value0) -> end\n {\n mstore(pos, and(shl(96, value0), 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000))\n mstore(add(pos, 20), value1)\n mstore(add(pos, 52), value2)\n mstore(add(pos, 84), value3)\n end := add(pos, 116)\n }\n function abi_encode_bytes_calldata(start, length, pos) -> end\n {\n mstore(pos, length)\n calldatacopy(add(pos, 0x20), start, length)\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n }\n function abi_encode_tuple_t_bytes32_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n let tail_1 := add(headStart, 64)\n mstore(headStart, value0)\n let _1 := 32\n mstore(add(headStart, _1), 64)\n let pos := tail_1\n mstore(tail_1, value2)\n pos := add(headStart, 96)\n let tail_2 := add(add(headStart, shl(5, value2)), 96)\n let srcPtr := value1\n let i := 0\n for { } lt(i, value2) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0))\n let rel_offset_of_tail := calldataload(srcPtr)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), value1), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n let value := add(rel_offset_of_tail, value1)\n let length := calldataload(value)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n if sgt(value1, sub(calldatasize(), length)) { revert(0, 0) }\n tail_2 := abi_encode_bytes_calldata(add(value, _1), length, tail_2)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n tail := tail_2\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_3b8d4b54db08ed890798fdc55ba1c410b1b90a23a79193c7486d04051b31717b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"POOL::redeem1t1DEI: invalid sign\")\n mstore(add(headStart, 96), \"atures\")\n tail := add(headStart, 128)\n }\n function checked_exp_helper(_base, exponent) -> power, base\n {\n let power_1 := 1\n power := power_1\n base := _base\n for { } gt(exponent, power_1) { }\n {\n if gt(base, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, base)) { panic_error_0x11() }\n if and(exponent, power_1) { power := mul(power, base) }\n base := mul(base, base)\n exponent := shr(power_1, exponent)\n }\n }\n function checked_exp_unsigned(base, exponent) -> power\n {\n if iszero(exponent)\n {\n power := 1\n leave\n }\n if iszero(base)\n {\n power := 0\n leave\n }\n switch base\n case 1 {\n power := 1\n leave\n }\n case 2 {\n if gt(exponent, 255) { panic_error_0x11() }\n power := shl(exponent, 1)\n leave\n }\n if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n {\n power := exp(base, exponent)\n leave\n }\n let power_1, base_1 := checked_exp_helper(base, exponent)\n if gt(power_1, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, base_1)) { panic_error_0x11() }\n power := mul(power_1, base_1)\n }\n function checked_exp_t_uint256_t_uint256(base, exponent) -> power\n {\n power := checked_exp_unsigned(base, exponent)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n function 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 checked_mul_t_uint256(x, y) -> product\n {\n if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n product := mul(x, y)\n }\n function abi_encode_tuple_t_stringliteral_f52391ebd610d5d9d518357ceeaf45367429ac1fd3150210dcaba2450d5bcce8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Not enough collateral in pool\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"AccessControl: sender must be an\")\n mstore(add(headStart, 96), \" admin to grant\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_98984f103b51115a1419edfc23f41285c32977e7b02cc32e067bba007d26b4f9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 23)\n mstore(add(headStart, 64), \"POOL::Minting is paused\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_2b6a8f4152754b6a991bf1b0a666b82b00923d2fd769bf1e3367643b70f91813__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Collateral ratio must be >= 1\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_cff49a4dc330adf1553dee705fac7862f639b33b74fda177589900b9506a9737__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"[Pool's Closed]: Ceiling reached\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_f836b804fb91fcbb3dafb5e724f5eeb776ededc2eaf47030c5f454694abcbafe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"POOL::mint1t1DEI: signature is e\")\n mstore(add(headStart, 96), \"xpired\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_3871818a433a796d8749bf69d3757469c36cba69a6da101f4f86b64a03c25fdf__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"POOL::mint1t1DEI: invalid signat\")\n mstore(add(headStart, 96), \"ures\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"AccessControl: can only renounce\")\n mstore(add(headStart, 96), \" roles for self\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, mload(srcPtr))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_encode_tuple_t_stringliteral_76b82cf0f5d67f7f31fa6377a21018dea36302e26d7842fad5ba832c330157dd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"POOL: Caller is not PARAMETER_SE\")\n mstore(add(headStart, 96), \"TTER_ROLE\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 224)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n mstore(add(headStart, 160), value5)\n mstore(add(headStart, 192), value6)\n }\n function abi_encode_tuple_t_stringliteral_3a4aaa4225031aefd603a0181e03bfba377ad02f3a40d8d4ff79e4b75af91117__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 56)\n mstore(add(headStart, 64), \"Collateral ratio needs to be bet\")\n mstore(add(headStart, 96), \"ween .000001 and .999999\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_415add743154eebc1c14f0dcbb6d42364bd9228c5bfab92187476352ba4cf3a4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 68)\n mstore(add(headStart, 64), \"Pool ceiling reached, no more DE\")\n mstore(add(headStart, 96), \"I can be minted with this collat\")\n mstore(add(headStart, 128), \"eral\")\n tail := add(headStart, 160)\n }\n function abi_encode_tuple_t_stringliteral_3517d2a2517b8811826efd915add7c546f6c6059a93aba596e992ef7ede2c237__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"POOL::mintFractionalDEI: signatu\")\n mstore(add(headStart, 96), \"re is expired.\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed(pos, value5, value4, value3, value2, value1, value0) -> end\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000\n mstore(pos, and(shl(96, value0), _1))\n mstore(add(pos, 20), value1)\n mstore(add(pos, 52), and(shl(96, value2), _1))\n mstore(add(pos, 72), value3)\n mstore(add(pos, 104), value4)\n mstore(add(pos, 136), value5)\n end := add(pos, 168)\n }\n function abi_encode_tuple_t_stringliteral_70791a0be90f5705149d45e0236213cb0328457b5d86e6288006e4f6774b09e7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"POOL::mintFractionalDEI: invalid\")\n mstore(add(headStart, 96), \" signatures\")\n tail := add(headStart, 128)\n }\n function abi_encode_struct_MintFD_Params(value, pos)\n {\n mstore(pos, mload(value))\n mstore(add(pos, 0x20), mload(add(value, 0x20)))\n mstore(add(pos, 0x40), mload(add(value, 0x40)))\n mstore(add(pos, 0x60), mload(add(value, 0x60)))\n }\n function abi_encode_tuple_t_struct$_MintFD_Params_$3600_memory_ptr__to_t_struct$_MintFD_Params_$3600_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 128)\n abi_encode_struct_MintFD_Params(value0, headStart)\n }\n function abi_decode_tuple_t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := mload(headStart)\n value1 := mload(add(headStart, 32))\n }\n function abi_encode_tuple_t_stringliteral_32c377f750f3acdff4f31738199007cf625ea4cb5a4b65f0253238ad0d6fe603__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"Not enough DEUS inputted\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_ffc61d1a84775e893520fbdfe0ea8909f9284081f97dd4e8ed1bc343abeb295e__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), \"amount<=daoShare\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_stringliteral_565f0845894e0f662254a5093763af0fee3605d54c84edbcf11c672de6a88543__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 51)\n mstore(add(headStart, 64), \"POOL::recollateralizeDEI: Recoll\")\n mstore(add(headStart, 96), \"ateralize is paused\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_43ec8f409eb317e256e176d402e36ec6af276af1f8f749e4d9fbe21bcd7bc664__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"POOL::recollateralizeDEI: signat\")\n mstore(add(headStart, 96), \"ure is expired.\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed(pos, value5, value4, value3, value2, value1, value0) -> end\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000\n mstore(pos, and(shl(96, value0), _1))\n let pos_1 := add(pos, 20)\n let length := mload(value1)\n pos_1 := pos_1\n let _2 := 0x20\n let srcPtr := add(value1, _2)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, mload(srcPtr))\n pos_1 := add(pos_1, _2)\n srcPtr := add(srcPtr, _2)\n }\n mstore(pos_1, and(shl(96, value2), _1))\n mstore(add(pos_1, 20), value3)\n mstore(add(pos_1, 52), value4)\n mstore(add(pos_1, 84), value5)\n end := add(pos_1, 116)\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 abi_encode_tuple_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n let tail_1 := add(headStart, 64)\n mstore(headStart, value0)\n let _1 := 32\n mstore(add(headStart, _1), 64)\n let pos := tail_1\n let length := mload(value1)\n mstore(tail_1, length)\n pos := add(headStart, 96)\n let tail_2 := add(add(headStart, shl(5, length)), 96)\n let srcPtr := add(value1, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0))\n let _2 := mload(srcPtr)\n let length_1 := mload(_2)\n mstore(tail_2, length_1)\n copy_memory_to_memory(add(_2, _1), add(tail_2, _1), length_1)\n tail_2 := add(add(tail_2, and(add(length_1, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), _1)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n tail := tail_2\n }\n function abi_encode_tuple_t_stringliteral_f8eb31fdc269657c54ee10149955fecbcb75254d3eeec631bdecc57de525010b__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), \"POOL::recollateralizeDEI: invali\")\n mstore(add(headStart, 96), \"d signatures\")\n tail := add(headStart, 128)\n }\n function panic_error_0x32()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 160)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n }\n function abi_encode_tuple_t_stringliteral_219e324e833041c644ccb1dd3dba73aaa878497ddb310916decd8247cfffb1bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 54)\n mstore(add(headStart, 64), \"POOL::redeemAlgorithmicDEI: Coll\")\n mstore(add(headStart, 96), \"ateral ratio must be 0\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_af86e93bd0220a55e8ca62f5f35862820e5999de1371ac209bb45c45b39ee5de__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 48)\n mstore(add(headStart, 64), \"DEI::redeemAlgorithmicDEI: signa\")\n mstore(add(headStart, 96), \"ture is expired.\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_bff4c2607c2670a7edf36f88b5d5987db2ccc6a59b36f486c4c57f193ba00833__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"POOL::redeemAlgorithmicDEI: inva\")\n mstore(add(headStart, 96), \"lid signatures\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_0f701899e5d254af158b94e181e8c864fa1fa8407b8e83a84b212f1856c034bb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"POOL::buyBackDEUS: Buyback is pa\")\n mstore(add(headStart, 96), \"used\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_74a9279f050c6419792bc3daa57da050d8e2f426f944681941d34e8909be7eac__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"DEI::buyBackDEUS: signature is e\")\n mstore(add(headStart, 96), \"xpired.\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_c668331e1a5c68ea41572b6fbf581e9b4ce7392915c1ff6a6872ae765618f9ee__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"POOL::buyBackDEUS: invalid signa\")\n mstore(add(headStart, 96), \"tures\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__to_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 128)\n abi_encode_struct_MintFD_Params(value0, headStart)\n }\n function abi_encode_tuple_t_stringliteral_f64a17d208f26e05f2312b5ee80f462bf5bab19979dfd330950359be93bd2d66__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 26)\n mstore(add(headStart, 64), \"Collateral ratio must be 0\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_5a2d3f9bcb3c5bd0b1926b1856db5dd186810b6e73d5cb9f87ee953c4da7fee2__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), \"POOL::mintAlgorithmicDEI: invali\")\n mstore(add(headStart, 96), \"d signatures\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 48)\n mstore(add(headStart, 64), \"AccessControl: sender must be an\")\n mstore(add(headStart, 96), \" admin to revoke\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_7b7d20f9ca6e9adc6378137dbeda8a962bb9bf07440b2b9db28bb53f4e464fce__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"POOL::you are not trusty\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_1eb003467dd04b32fe18359370bc0d0e41e237ed2bf1be23765de9081983dd0d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 83)\n mstore(add(headStart, 64), \"POOL::redeemFractionalDEI: Colla\")\n mstore(add(headStart, 96), \"teral ratio needs to be between \")\n mstore(add(headStart, 128), \".000001 and .999999\")\n tail := add(headStart, 160)\n }\n function abi_encode_tuple_t_stringliteral_d441a1ecab801b1c575c77e3c185431fd7b0029d666fc7417a9f7556b3f83d6f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"DEI::redeemFractionalDEI: signat\")\n mstore(add(headStart, 96), \"ure is expired\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_3cf3652b2acfb73942e459b043ef1100fffabb4093e48d3162412f77ff7ce9c4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"POOL::redeemFractionalDEI: inval\")\n mstore(add(headStart, 96), \"id signatures\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 31)\n mstore(add(headStart, 64), \"TransferHelper: TRANSFER_FAILED\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"TransferHelper: TRANSFER_FROM_FA\")\n mstore(add(headStart, 96), \"ILED\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"EnumerableSet: index out of boun\")\n mstore(add(headStart, 96), \"ds\")\n tail := add(headStart, 128)\n }\n function panic_error_0x31()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": { + "1600": [ + { + "length": 32, + "start": 3222 + }, + { + "length": 32, + "start": 5466 + }, + { + "length": 32, + "start": 8790 + }, + { + "length": 32, + "start": 10962 + }, + { + "length": 32, + "start": 11716 + }, + { + "length": 32, + "start": 13470 + }, + { + "length": 32, + "start": 14709 + }, + { + "length": 32, + "start": 18308 + } + ] + }, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106103205760003560e01c80637b0461e9116101a7578063b6258aaa116100ee578063cb73999f11610097578063e3d84d5e11610071578063e3d84d5e146106d4578063eb2d7461146106e7578063fede5c9c146106fa57600080fd5b8063cb73999f146106b0578063d547741f146106b9578063daa50485146106cc57600080fd5b8063c6301e5d116100c8578063c6301e5d14610681578063c74ec56a14610694578063ca15c8731461069d57600080fd5b8063b6258aaa14610652578063c3355b8d14610665578063c410ca1b1461066e57600080fd5b806391d1485411610150578063a217fddf1161012a578063a217fddf14610604578063abae2c4c1461060c578063b235d4681461062c57600080fd5b806391d14854146105cb578063928d2b31146105de578063978b73b5146105f157600080fd5b80637f877f85116101815780637f877f851461056257806388d19f1b1461058a5780639010d07c1461059357600080fd5b80637b0461e91461052c5780637d55094d146105355780637e4831d31461053d57600080fd5b806340e14b781161026b578063564b81ef116102145780636d2c5615116101ee5780636d2c5615146104bb5780636d82e314146104f25780637901330b1461051957600080fd5b8063564b81ef146104855780635de207cc1461048b5780636526a12a146104b257600080fd5b80634ebbe762116102455780634ebbe7621461045757806350c9ecd91461046a57806354f9769d1461047257600080fd5b806340e14b781461043357806342d15aec146104465780634c6349341461044e57600080fd5b80632f2ff15d116102cd5780633648b7dc116102a75780633648b7dc146103f757806336568abe146104005780633b92da471461041357600080fd5b80632f2ff15d146103aa57806332ad1ee4146103bd57806334ddb95d146103d057600080fd5b806315128425116102fe578063151284251461036b578063248a9ca314610374578063254cd2bd1461039757600080fd5b806308a7493d14610325578063101197c71461035857806312ace5a214610361575b600080fd5b610345610333366004615168565b600a6020526000908152604090205481565b6040519081526020015b60405180910390f35b61034560075481565b610369610703565b005b61034560115481565b610345610382366004615183565b60009081526020819052604090206002015490565b6103696103a53660046151e8565b6108bc565b6103696103b8366004615249565b610fb3565b6103456103cb3660046151e8565b611069565b6103457f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610345600c5481565b61036961040e366004615249565b61173f565b610345610421366004615168565b60096020526000908152604090205481565b6103456104413660046153ab565b6117ee565b610369611a0c565b61034560105481565b6103696104653660046153e8565b611ad3565b610369611c12565b610345610480366004615434565b611cd0565b46610345565b6103457fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f24050981565b610345600e5481565b6013546104e290760100000000000000000000000000000000000000000000900460ff1681565b604051901515815260200161034f565b6103457f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e53081565b610369610527366004615249565b61255b565b610345600b5481565b6103696126ef565b6013546104e29074010000000000000000000000000000000000000000900460ff1681565b6013546104e29077010000000000000000000000000000000000000000000000900460ff1681565b61034560125481565b6105a66105a13660046154a8565b6127aa565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161034f565b6104e26105d9366004615249565b6127cb565b6103696105ec3660046155cc565b6127e3565b6103696105ff3660046151e8565b612eef565b610345600081565b61034561061a366004615168565b600d6020526000908152604090205481565b6013546104e2907501000000000000000000000000000000000000000000900460ff1681565b610345610660366004615183565b613492565b61034560055481565b61036961067c366004615685565b613581565b61034561068f3660046151e8565b613a66565b610345600f5481565b6103456106ab366004615183565b61404e565b61034560065481565b6103696106c7366004615249565b614065565b61036961410d565b6103696106e236600461570c565b6141c9565b6103696106f5366004615748565b6142f2565b61034560085481565b601154336000908152600d60205260409020544391610721916157cf565b11156107da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605b60248201527f504f4f4c3a3a636f6c6c656374526564656d7074696f6e3a204d75737420776160448201527f697420666f7220726564656d7074696f6e5f64656c617920626c6f636b73206260648201527f65666f726520636f6c6c656374696e6720726564656d7074696f6e0000000000608482015260a4015b60405180910390fd5b3360009081526009602052604081205481908190819015610822573360009081526009602052604081208054919055600c5490925061081a9083906157e7565b600c55600193505b336000908152600a6020526040902054156108625750336000908152600a602052604081208054919055600b5461085a9082906157e7565b600b55600192505b831561088c5760045461088c9073ffffffffffffffffffffffffffffffffffffffff163384614ad7565b82156108b6576001546108b69073ffffffffffffffffffffffffffffffffffffffff163383614ad7565b50505050565b6013547501000000000000000000000000000000000000000000900460ff1615610942576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107d1565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa1580156109b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d891906157fe565b14610a3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203d3d203100000060448201526064016107d1565b43831015610acf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107d1565b60025460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90610bc290849087908790600401615860565b602060405180830381865afa158015610bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c039190615942565b610c8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a72656465656d3174314445493a20696e76616c6964207369676e60448201527f617475726573000000000000000000000000000000000000000000000000000060648201526084016107d1565b6000610cbc7f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b610cc69088615a97565b6013546040517f068d54aa000000000000000000000000000000000000000000000000000000008152600481018990526024810183905291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063068d54aa90604401602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6691906157fe565b9050620f4240600654620f4240610d7d91906157e7565b610d879083615ad2565b610d919190615a97565b600b546001546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152929350909173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610e07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2b91906157fe565b610e3591906157e7565b811115610e9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107d1565b336000908152600a6020526040902054610eb99082906157cf565b336000908152600a6020526040902055600b54610ed79082906157cf565b600b55336000908152600d60205260409020439055600654620f424090610efe908a615ad2565b610f089190615a97565b60126000828254610f1991906157cf565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae906044015b600060405180830381600087803b158015610f9157600080fd5b505af1158015610fa5573d6000803e3d6000fd5b505050505050505050505050565b600082815260208190526040902060020154610fcf90336127cb565b61105b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084016107d1565b6110658282614c47565b5050565b60135460009074010000000000000000000000000000000000000000900460ff16156110f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107d1565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015611163573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118791906157fe565b10156111ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203e3d203100000060448201526064016107d1565b600e54600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015289929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611264573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128891906157fe565b61129291906157e7565b61129c91906157cf565b1115611304576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5b506f6f6c277320436c6f7365645d3a204365696c696e67207265616368656460448201526064016107d1565b43841015611394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a6d696e743174314445493a207369676e6174757265206973206560448201527f787069726564000000000000000000000000000000000000000000000000000060648201526084016107d1565b60025460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac9061148790849088908890600401615860565b602060405180830381865afa1580156114a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c89190615942565b611553576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6d696e743174314445493a20696e76616c6964207369676e617460448201527f757265730000000000000000000000000000000000000000000000000000000060648201526084016107d1565b60006115807f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b61158a9089615ad2565b6013546040517f882ab63a000000000000000000000000000000000000000000000000000000008152600481018a90526024810183905291925073ffffffffffffffffffffffffffffffffffffffff169063882ab63a90604401602060405180830381865afa158015611601573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162591906157fe565b9250620f4240600554620f424061163c91906157e7565b6116469085615ad2565b6116509190615a97565b6001549093506116789073ffffffffffffffffffffffffffffffffffffffff1633308b614cad565b620f42406005548461168a9190615ad2565b6116949190615a97565b601260008282546116a591906157cf565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561171c57600080fd5b505af1158015611730573d6000803e3d6000fd5b50505050505095945050505050565b73ffffffffffffffffffffffffffffffffffffffff811633146117e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016107d1565b6110658282614e4b565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561185e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188291906157fe565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191791906157fe565b6003546040517f2480fcea00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690632480fcea90611973908890600401615b0f565b602060405180830381865afa158015611990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b491906157fe565b9050620f42408211156119c857620f424091505b6000620f42406119d88486615ad2565b6119e29190615a97565b905080821115611a00576119f681836157e7565b9695505050505050565b50600095945050505050565b611a367f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f336127cb565b611a3f57600080fd5b6013805460ff76010000000000000000000000000000000000000000000080830482161581027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f2fda313d9b5bb0b73bd003153f2fccbc0dca49791fdd1184dfad82b44f54bd2e93611ac99390049091161515815260200190565b60405180910390a1565b611afd7fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f240509336127cb565b611b89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f504f4f4c3a2043616c6c6572206973206e6f7420504152414d455445525f534560448201527f545445525f524f4c45000000000000000000000000000000000000000000000060648201526084016107d1565b600e8790556010869055601185905560058490556006839055600782905560088190556040805188815260208101889052908101869052606081018590526080810184905260a0810183905260c081018290527f17fe98b66d27bd793ea01bd8a23a54acab8eeb167d9eb016a0c7cd71c573920c9060e00160405180910390a150505050505050565b611c3c7f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf336127cb565b611c4557600080fd5b6013805460ff7701000000000000000000000000000000000000000000000080830482161581027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f4f40fd1c59f78d7a2220da638cd9400daba01e57c7965702f390bf13133cc31f93611ac99390049091161515815260200190565b60135460009074010000000000000000000000000000000000000000900460ff1615611d58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107d1565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015611dc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dec91906157fe565b9050620f424081108015611e005750600081115b611e8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f436f6c6c61746572616c20726174696f206e6565647320746f2062652062657460448201527f7765656e202e30303030303120616e64202e393939393939000000000000000060648201526084016107d1565b600e54600b546001546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528c929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2591906157fe565b611f2f91906157e7565b611f3991906157cf565b1115611fee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f506f6f6c206365696c696e6720726561636865642c206e6f206d6f7265204445908201527f492063616e206265206d696e7465642077697468207468697320636f6c6c617460648201527f6572616c00000000000000000000000000000000000000000000000000000000608482015260a4016107d1565b4385101561207e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a207369676e61747560448201527f726520697320657870697265642e00000000000000000000000000000000000060648201526084016107d1565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018d90529390941b909316605484015260688301899052608883018890524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906121579084908990899060cc01615860565b602060405180830381865afa158015612174573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121989190615942565b612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a20696e76616c696460448201527f207369676e61747572657300000000000000000000000000000000000000000060648201526084016107d1565b61224f6040518060800160405280600081526020016000815260200160008152602001600081525090565b600061227c7f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b612286908d615ad2565b604080516080810182528b8152602081018d9052808201929092526060820186905260135490517f537a30a70000000000000000000000000000000000000000000000000000000081529193506000925073ffffffffffffffffffffffffffffffffffffffff169063537a30a790612302908590600401615b53565b6040805180830381865afa15801561231e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123429190615b7e565b90955090508a8111156123b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e6f7420656e6f756768204445555320696e707574746564000000000000000060448201526064016107d1565b620f4240600554620f42406123c691906157e7565b6123d09087615ad2565b6123da9190615a97565b600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820184905291965073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561245257600080fd5b505af1158015612466573d6000803e3d6000fd5b5050600154612490925073ffffffffffffffffffffffffffffffffffffffff16905033308f614cad565b620f4240600554866124a29190615ad2565b6124ac9190615a97565b601260008282546124bd91906157cf565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810187905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561253457600080fd5b505af1158015612548573d6000803e3d6000fd5b5050505050505050979650505050505050565b6125857f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e530336127cb565b61258e57600080fd5b6012548211156125fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f616d6f756e743c3d64616f53686172650000000000000000000000000000000060448201526064016107d1565b6003546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018590529091169063b4f56b2690604401600060405180830381600087803b15801561266e57600080fd5b505af1158015612682573d6000803e3d6000fd5b50505050816012600082825461269891906157e7565b90915550506040805183815273ffffffffffffffffffffffffffffffffffffffff831660208201527f3a708f2f1c75b12457d207cf1e259ab9f87bbfccb29672903acf4661bd342e49910160405180910390a15050565b6127197fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b336127cb565b61272257600080fd5b6013805460ff7401000000000000000000000000000000000000000080830482161581027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f6bdfe227d5db299c59aa56d5f846f40dbd73b271aaa78e18ed74fc3e00b8aa6b93611ac99390049091161515815260200190565b60008281526020819052604081206127c29083614eb1565b90505b92915050565b60008281526020819052604081206127c29083614ec7565b601354760100000000000000000000000000000000000000000000900460ff1615612890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a205265636f6c6c60448201527f61746572616c697a65206973207061757365640000000000000000000000000060648201526084016107d1565b4381608001511015612924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107d1565b60025460408281015160045460608501516080860151935160009561296d9573ffffffffffffffffffffffffffffffffffffffff91821695949190911692914690602001615ba2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052805160209091012060035460a08501517f6793f0ac00000000000000000000000000000000000000000000000000000000845291935073ffffffffffffffffffffffffffffffffffffffff1691636793f0ac916129fe91859190600401615c4d565b602060405180830381865afa158015612a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a3f9190615942565b612acb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107d1565b6000612af87f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b8351612b049190615ad2565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9991906157fe565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2e91906157fe565b60035460408088015190517f2480fcea00000000000000000000000000000000000000000000000000000000815292935060009273ffffffffffffffffffffffffffffffffffffffff90921691632480fcea91612c8d91600401615b0f565b602060405180830381865afa158015612caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cce91906157fe565b60135460408801518051929350600092839273ffffffffffffffffffffffffffffffffffffffff169163fc01106191899190612d0c906001906157e7565b81518110612d1c57612d1c615d0b565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015260448101869052606481018890526084810187905260a4016040805180830381865afa158015612d94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db89190615b7e565b90925090506000612dea7f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b612df49084615a97565b905060008960600151600854601054620f4240612e1191906157cf565b612e1b91906157e7565b612e259085615ad2565b612e2f9190615a97565b600154909150612e579073ffffffffffffffffffffffffffffffffffffffff16333085614cad565b600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815233928101929092526024820183905273ffffffffffffffffffffffffffffffffffffffff169063b4f56b26906044015b600060405180830381600087803b158015612ecb57600080fd5b505af1158015612edf573d6000803e3d6000fd5b5050505050505050505050505050565b6013547501000000000000000000000000000000000000000000900460ff1615612f75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107d1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fe2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300691906157fe565b15613093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20436f6c6c60448201527f61746572616c20726174696f206d75737420626520300000000000000000000060648201526084016107d1565b43831015613123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4445493a3a72656465656d416c676f726974686d69634445493a207369676e6160448201527f7475726520697320657870697265642e0000000000000000000000000000000060648201526084016107d1565b60045460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac9061321690849087908790600401615860565b602060405180830381865afa158015613233573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132579190615942565b6132e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20696e766160448201527f6c6964207369676e61747572657300000000000000000000000000000000000060648201526084016107d1565b6006548690620f4240906132f790826157e7565b6133019083615ad2565b61330b9190615a97565b905060008661331d620f424084615ad2565b6133279190615a97565b336000908152600960205260409020549091506133459082906157cf565b33600090815260096020526040902055600c546133639082906157cf565b600c55336000908152600d60205260409020439055600654620f42409061338a908a615ad2565b6133949190615a97565b601260008282546133a591906157cf565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561341c57600080fd5b505af1158015613430573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820185905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401610f77565b6000620f4240826134c47f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015613535573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061355991906157fe565b61356391906157e7565b61356d9190615ad2565b6135779190615ad2565b6127c59190615a97565b60135477010000000000000000000000000000000000000000000000900460ff161561362e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6275794261636b444555533a204275796261636b20697320706160448201527f757365640000000000000000000000000000000000000000000000000000000060648201526084016107d1565b438310156136be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4445493a3a6275794261636b444555533a207369676e6174757265206973206560448201527f7870697265642e0000000000000000000000000000000000000000000000000060648201526084016107d1565b60025460045460009173ffffffffffffffffffffffffffffffffffffffff908116918891168787466040516020016136fb96959493929190615ba2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac9061378a90849087908790600401615860565b602060405180830381865afa1580156137a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137cb9190615942565b613857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f504f4f4c3a3a6275794261636b444555533a20696e76616c6964207369676e6160448201527f747572657300000000000000000000000000000000000000000000000000000060648201526084016107d1565b6000604051806080016040528061386d896117ee565b81526020018781526020018860018a5161388791906157e7565b8151811061389757613897615d0b565b602002602001015181526020018981525090506000620f4240600754620f42406138c191906157e7565b6013546040517f3c04af9f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633c04af9f90613917908790600401615b53565b602060405180830381865afa158015613934573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061395891906157fe565b6139629190615ad2565b61396c9190615a97565b9050600061399b7f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b6139a59083615a97565b600480546040517fa8a778ae0000000000000000000000000000000000000000000000000000000081523392810192909252602482018d905291925073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015613a1d57600080fd5b505af1158015613a31573d6000803e3d6000fd5b5050600154613a5a925073ffffffffffffffffffffffffffffffffffffffff1690503383614ad7565b50505050505050505050565b60135460009074010000000000000000000000000000000000000000900460ff1615613aee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107d1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b7f91906157fe565b15613be6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f436f6c6c61746572616c20726174696f206d757374206265203000000000000060448201526064016107d1565b43841015613c76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107d1565b60045460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90613d6990849088908890600401615860565b602060405180830381865afa158015613d86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613daa9190615942565b613e36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107d1565b6013546040517f14da4ee1000000000000000000000000000000000000000000000000000000008152600481018890526024810189905273ffffffffffffffffffffffffffffffffffffffff909116906314da4ee190604401602060405180830381865afa158015613eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ed091906157fe565b9150620f4240600554620f4240613ee791906157e7565b613ef19084615ad2565b613efb9190615a97565b9150620f424060055483613f0f9190615ad2565b613f199190615a97565b60126000828254613f2a91906157cf565b9091555050600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820189905273ffffffffffffffffffffffffffffffffffffffff169063a8a778ae90604401600060405180830381600087803b158015613fa257600080fd5b505af1158015613fb6573d6000803e3d6000fd5b50506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810186905273ffffffffffffffffffffffffffffffffffffffff909116925063b4f56b269150604401600060405180830381600087803b15801561402c57600080fd5b505af1158015614040573d6000803e3d6000fd5b505050505095945050505050565b60008181526020819052604081206127c590614f06565b60008281526020819052604090206002015461408190336127cb565b6117e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b650000000000000000000000000000000060648201526084016107d1565b6141377fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c3857336127cb565b61414057600080fd5b6013805460ff750100000000000000000000000000000000000000000080830482161581027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f5860c5063a65e23cea4e2e2925f1a841bb6d1bc9615bd425f8dd084980b0514193611ac99390049091161515815260200190565b6141f37f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336127cb565b614259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f504f4f4c3a3a796f7520617265206e6f7420747275737479000000000000000060448201526064016107d1565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af11580156142ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b69190615942565b6013547501000000000000000000000000000000000000000000900460ff1615614378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107d1565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa1580156143e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061440c91906157fe565b9050620f4240811080156144205750600081115b6144d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20436f6c6c6160448201527f746572616c20726174696f206e6565647320746f206265206265747765656e2060648201527f2e30303030303120616e64202e39393939393900000000000000000000000000608482015260a4016107d1565b43841015614562576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4445493a3a72656465656d4672616374696f6e616c4445493a207369676e617460448201527f757265206973206578706972656400000000000000000000000000000000000060648201526084016107d1565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018c90529390941b909316605484015260688301889052608883018790524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac9061463b9084908890889060cc01615860565b602060405180830381865afa158015614658573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061467c9190615942565b614708576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20696e76616c60448201527f6964207369676e6174757265730000000000000000000000000000000000000060648201526084016107d1565b60008060008990506000620f4240600654620f424061472791906157e7565b614731908e615ad2565b61473b9190615a97565b90506000620f424061474d8884615ad2565b6147579190615a97565b61476190836157e7565b90508a614771620f424083615ad2565b61477b9190615a97565b945060006147aa7f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b6147b49084615a97565b90506000620f42406147c68a84615ad2565b6147d09190615a97565b9050846147e0620f424083615ad2565b6147ea9190615a97565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015292985090965073ffffffffffffffffffffffffffffffffffffffff1694506370a082319350602401915061484d9050565b602060405180830381865afa15801561486a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061488e91906157fe565b61489891906157e7565b811115614901576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107d1565b336000908152600a602052604090205461491c9082906157cf565b336000908152600a6020526040902055600b5461493a9082906157cf565b600b55336000908152600960205260409020546149589083906157cf565b33600090815260096020526040902055600c546149769083906157cf565b600c55336000908152600d60205260409020439055600654620f42409061499d908c615ad2565b6149a79190615a97565b601260008282546149b891906157cf565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018c905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015614a2f57600080fd5b505af1158015614a43573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820186905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401612eb1565b60006127c2837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16614f10565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691614b6e9190615d3a565b6000604051808303816000865af19150503d8060008114614bab576040519150601f19603f3d011682016040523d82523d6000602084013e614bb0565b606091505b5091509150818015614bda575080511580614bda575080806020019051810190614bda9190615942565b614c40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016107d1565b5050505050565b6000828152602081905260409020614c5f9082614aa5565b1561106557604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691614d4c9190615d3a565b6000604051808303816000865af19150503d8060008114614d89576040519150601f19603f3d011682016040523d82523d6000602084013e614d8e565b606091505b5091509150818015614db8575080511580614db8575080806020019051810190614db89190615942565b614e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016107d1565b505050505050565b6000828152602081905260409020614e639082614f5f565b1561106557604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000614ebd8383614f91565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156127c2565b60006127c5825490565b6000818152600183016020526040812054614f57575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556127c5565b5060006127c5565b60006127c2837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1661504c565b81546000908210615024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f647300000000000000000000000000000000000000000000000000000000000060648201526084016107d1565b82600001828154811061503957615039615d0b565b9060005260206000200154905092915050565b600081815260018301602052604081205480156151355760006150706001836157e7565b8554909150600090615084906001906157e7565b9050600086600001828154811061509d5761509d615d0b565b90600052602060002001549050808760000184815481106150c0576150c0615d0b565b6000918252602090912001556150d78360016157cf565b600082815260018901602052604090205586548790806150f9576150f9615d56565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506127c5565b60009150506127c5565b803573ffffffffffffffffffffffffffffffffffffffff8116811461516357600080fd5b919050565b60006020828403121561517a57600080fd5b6127c28261513f565b60006020828403121561519557600080fd5b5035919050565b60008083601f8401126151ae57600080fd5b50813567ffffffffffffffff8111156151c657600080fd5b6020830191508360208260051b85010111156151e157600080fd5b9250929050565b60008060008060006080868803121561520057600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561522c57600080fd5b6152388882890161519c565b969995985093965092949392505050565b6000806040838503121561525c57600080fd5b8235915061526c6020840161513f565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff811182821017156152c7576152c7615275565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561531457615314615275565b604052919050565b600067ffffffffffffffff82111561533657615336615275565b5060051b60200190565b600082601f83011261535157600080fd5b813560206153666153618361531c565b6152cd565b82815260059290921b8401810191818101908684111561538557600080fd5b8286015b848110156153a05780358352918301918301615389565b509695505050505050565b6000602082840312156153bd57600080fd5b813567ffffffffffffffff8111156153d457600080fd5b6153e084828501615340565b949350505050565b600080600080600080600060e0888a03121561540357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080600080600080600060c0888a03121561544f57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a088013567ffffffffffffffff81111561548957600080fd5b6154958a828b0161519c565b989b979a50959850939692959293505050565b600080604083850312156154bb57600080fd5b50508035926020909101359150565b6000601f83818401126154dc57600080fd5b823560206154ec6153618361531c565b82815260059290921b8501810191818101908784111561550b57600080fd5b8287015b848110156155c057803567ffffffffffffffff808211156155305760008081fd5b818a0191508a603f8301126155455760008081fd5b8582013560408282111561555b5761555b615275565b61558a887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c850116016152cd565b92508183528c818386010111156155a15760008081fd5b818185018985013750600090820187015284525091830191830161550f565b50979650505050505050565b6000602082840312156155de57600080fd5b813567ffffffffffffffff808211156155f657600080fd5b9083019060c0828603121561560a57600080fd5b6156126152a4565b823581526020830135602082015260408301358281111561563257600080fd5b61563e87828601615340565b604083015250606083013560608201526080830135608082015260a08301358281111561566a57600080fd5b615676878286016154ca565b60a08301525095945050505050565b60008060008060008060a0878903121561569e57600080fd5b86359550602087013567ffffffffffffffff808211156156bd57600080fd5b6156c98a838b01615340565b9650604089013595506060890135945060808901359150808211156156ed57600080fd5b506156fa89828a0161519c565b979a9699509497509295939492505050565b60008060006060848603121561572157600080fd5b61572a8461513f565b92506020840135915061573f6040850161513f565b90509250925092565b60008060008060008060a0878903121561576157600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff81111561579457600080fd5b6156fa89828a0161519c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156157e2576157e26157a0565b500190565b6000828210156157f9576157f96157a0565b500390565b60006020828403121561581057600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b87811015615934577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18a36030181126158eb57600080fd5b8901803567ffffffffffffffff81111561590457600080fd5b8036038b131561591357600080fd5b6159208782888501615817565b96505050918301919083019060010161588a565b509298975050505050505050565b60006020828403121561595457600080fd5b8151801515811461596457600080fd5b9392505050565b600181815b808511156159c457817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156159aa576159aa6157a0565b808516156159b757918102915b93841c9390800290615970565b509250929050565b6000826159db575060016127c5565b816159e8575060006127c5565b81600181146159fe5760028114615a0857615a24565b60019150506127c5565b60ff841115615a1957615a196157a0565b50506001821b6127c5565b5060208310610133831016604e8410600b8410161715615a47575081810a6127c5565b615a51838361596b565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615a8357615a836157a0565b029392505050565b60006127c283836159cc565b600082615acd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615b0a57615b0a6157a0565b500290565b6020808252825182820181905260009190848201906040850190845b81811015615b4757835183529284019291840191600101615b2b565b50909695505050505050565b81518152602080830151908201526040808301519082015260608083015190820152608081016127c5565b60008060408385031215615b9157600080fd5b505080516020909101519092909150565b60007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808960601b1683526014830188516020808b0160005b83811015615bf757815185529382019390820190600101615bdb565b5050505060609790971b168652505060148401929092526034830152605482015260740192915050565b60005b83811015615c3c578181015183820152602001615c24565b838111156108b65750506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015615cfd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088870301845281518051808852615cc081888a01898501615c21565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01696909601850195509284019290840190600101615c7b565b509398975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008251615d4c818460208701615c21565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220c79b153746533a6df153629c30a0770abe2f4bca6a754b070e2bc583ce406e7764736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x320 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7B0461E9 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0xB6258AAA GT PUSH2 0xEE JUMPI DUP1 PUSH4 0xCB73999F GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xE3D84D5E GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE3D84D5E EQ PUSH2 0x6D4 JUMPI DUP1 PUSH4 0xEB2D7461 EQ PUSH2 0x6E7 JUMPI DUP1 PUSH4 0xFEDE5C9C EQ PUSH2 0x6FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCB73999F EQ PUSH2 0x6B0 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xDAA50485 EQ PUSH2 0x6CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC6301E5D GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0xC6301E5D EQ PUSH2 0x681 JUMPI DUP1 PUSH4 0xC74EC56A EQ PUSH2 0x694 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x69D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB6258AAA EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0xC3355B8D EQ PUSH2 0x665 JUMPI DUP1 PUSH4 0xC410CA1B EQ PUSH2 0x66E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 GT PUSH2 0x150 JUMPI DUP1 PUSH4 0xA217FDDF GT PUSH2 0x12A JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x604 JUMPI DUP1 PUSH4 0xABAE2C4C EQ PUSH2 0x60C JUMPI DUP1 PUSH4 0xB235D468 EQ PUSH2 0x62C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 EQ PUSH2 0x5CB JUMPI DUP1 PUSH4 0x928D2B31 EQ PUSH2 0x5DE JUMPI DUP1 PUSH4 0x978B73B5 EQ PUSH2 0x5F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7F877F85 GT PUSH2 0x181 JUMPI DUP1 PUSH4 0x7F877F85 EQ PUSH2 0x562 JUMPI DUP1 PUSH4 0x88D19F1B EQ PUSH2 0x58A JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x593 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7B0461E9 EQ PUSH2 0x52C JUMPI DUP1 PUSH4 0x7D55094D EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x7E4831D3 EQ PUSH2 0x53D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x40E14B78 GT PUSH2 0x26B JUMPI DUP1 PUSH4 0x564B81EF GT PUSH2 0x214 JUMPI DUP1 PUSH4 0x6D2C5615 GT PUSH2 0x1EE JUMPI DUP1 PUSH4 0x6D2C5615 EQ PUSH2 0x4BB JUMPI DUP1 PUSH4 0x6D82E314 EQ PUSH2 0x4F2 JUMPI DUP1 PUSH4 0x7901330B EQ PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x564B81EF EQ PUSH2 0x485 JUMPI DUP1 PUSH4 0x5DE207CC EQ PUSH2 0x48B JUMPI DUP1 PUSH4 0x6526A12A EQ PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4EBBE762 GT PUSH2 0x245 JUMPI DUP1 PUSH4 0x4EBBE762 EQ PUSH2 0x457 JUMPI DUP1 PUSH4 0x50C9ECD9 EQ PUSH2 0x46A JUMPI DUP1 PUSH4 0x54F9769D EQ PUSH2 0x472 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x40E14B78 EQ PUSH2 0x433 JUMPI DUP1 PUSH4 0x42D15AEC EQ PUSH2 0x446 JUMPI DUP1 PUSH4 0x4C634934 EQ PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D GT PUSH2 0x2CD JUMPI DUP1 PUSH4 0x3648B7DC GT PUSH2 0x2A7 JUMPI DUP1 PUSH4 0x3648B7DC EQ PUSH2 0x3F7 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x400 JUMPI DUP1 PUSH4 0x3B92DA47 EQ PUSH2 0x413 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x3AA JUMPI DUP1 PUSH4 0x32AD1EE4 EQ PUSH2 0x3BD JUMPI DUP1 PUSH4 0x34DDB95D EQ PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x15128425 GT PUSH2 0x2FE JUMPI DUP1 PUSH4 0x15128425 EQ PUSH2 0x36B JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x374 JUMPI DUP1 PUSH4 0x254CD2BD EQ PUSH2 0x397 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8A7493D EQ PUSH2 0x325 JUMPI DUP1 PUSH4 0x101197C7 EQ PUSH2 0x358 JUMPI DUP1 PUSH4 0x12ACE5A2 EQ PUSH2 0x361 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x345 PUSH2 0x333 CALLDATASIZE PUSH1 0x4 PUSH2 0x5168 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x345 PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x703 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x345 PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x345 PUSH2 0x382 CALLDATASIZE PUSH1 0x4 PUSH2 0x5183 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x3A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x51E8 JUMP JUMPDEST PUSH2 0x8BC JUMP JUMPDEST PUSH2 0x369 PUSH2 0x3B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x5249 JUMP JUMPDEST PUSH2 0xFB3 JUMP JUMPDEST PUSH2 0x345 PUSH2 0x3CB CALLDATASIZE PUSH1 0x4 PUSH2 0x51E8 JUMP JUMPDEST PUSH2 0x1069 JUMP JUMPDEST PUSH2 0x345 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP2 JUMP JUMPDEST PUSH2 0x345 PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x40E CALLDATASIZE PUSH1 0x4 PUSH2 0x5249 JUMP JUMPDEST PUSH2 0x173F JUMP JUMPDEST PUSH2 0x345 PUSH2 0x421 CALLDATASIZE PUSH1 0x4 PUSH2 0x5168 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x345 PUSH2 0x441 CALLDATASIZE PUSH1 0x4 PUSH2 0x53AB JUMP JUMPDEST PUSH2 0x17EE JUMP JUMPDEST PUSH2 0x369 PUSH2 0x1A0C JUMP JUMPDEST PUSH2 0x345 PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x465 CALLDATASIZE PUSH1 0x4 PUSH2 0x53E8 JUMP JUMPDEST PUSH2 0x1AD3 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x1C12 JUMP JUMPDEST PUSH2 0x345 PUSH2 0x480 CALLDATASIZE PUSH1 0x4 PUSH2 0x5434 JUMP JUMPDEST PUSH2 0x1CD0 JUMP JUMPDEST CHAINID PUSH2 0x345 JUMP JUMPDEST PUSH2 0x345 PUSH32 0xE08E6E8E2E796F02419355C6FA268D1461FE6F2F34114A881A2DB47C0F240509 DUP2 JUMP JUMPDEST PUSH2 0x345 PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4E2 SWAP1 PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34F JUMP JUMPDEST PUSH2 0x345 PUSH32 0xD4A2989857A24DE9C91E1DAFFE87D051D59F52B68729413D1EF656EC487E530 DUP2 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x527 CALLDATASIZE PUSH1 0x4 PUSH2 0x5249 JUMP JUMPDEST PUSH2 0x255B JUMP JUMPDEST PUSH2 0x345 PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x26EF JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4E2 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4E2 SWAP1 PUSH24 0x10000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x345 PUSH1 0x12 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x5A6 PUSH2 0x5A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x54A8 JUMP JUMPDEST PUSH2 0x27AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34F JUMP JUMPDEST PUSH2 0x4E2 PUSH2 0x5D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5249 JUMP JUMPDEST PUSH2 0x27CB JUMP JUMPDEST PUSH2 0x369 PUSH2 0x5EC CALLDATASIZE PUSH1 0x4 PUSH2 0x55CC JUMP JUMPDEST PUSH2 0x27E3 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x5FF CALLDATASIZE PUSH1 0x4 PUSH2 0x51E8 JUMP JUMPDEST PUSH2 0x2EEF JUMP JUMPDEST PUSH2 0x345 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x345 PUSH2 0x61A CALLDATASIZE PUSH1 0x4 PUSH2 0x5168 JUMP JUMPDEST PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4E2 SWAP1 PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x345 PUSH2 0x660 CALLDATASIZE PUSH1 0x4 PUSH2 0x5183 JUMP JUMPDEST PUSH2 0x3492 JUMP JUMPDEST PUSH2 0x345 PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x67C CALLDATASIZE PUSH1 0x4 PUSH2 0x5685 JUMP JUMPDEST PUSH2 0x3581 JUMP JUMPDEST PUSH2 0x345 PUSH2 0x68F CALLDATASIZE PUSH1 0x4 PUSH2 0x51E8 JUMP JUMPDEST PUSH2 0x3A66 JUMP JUMPDEST PUSH2 0x345 PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH2 0x345 PUSH2 0x6AB CALLDATASIZE PUSH1 0x4 PUSH2 0x5183 JUMP JUMPDEST PUSH2 0x404E JUMP JUMPDEST PUSH2 0x345 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x6C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x5249 JUMP JUMPDEST PUSH2 0x4065 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x410D JUMP JUMPDEST PUSH2 0x369 PUSH2 0x6E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x570C JUMP JUMPDEST PUSH2 0x41C9 JUMP JUMPDEST PUSH2 0x369 PUSH2 0x6F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x5748 JUMP JUMPDEST PUSH2 0x42F2 JUMP JUMPDEST PUSH2 0x345 PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x11 SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD NUMBER SWAP2 PUSH2 0x721 SWAP2 PUSH2 0x57CF JUMP JUMPDEST GT ISZERO PUSH2 0x7DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A636F6C6C656374526564656D7074696F6E3A204D757374207761 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x697420666F7220726564656D7074696F6E5F64656C617920626C6F636B732062 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x65666F726520636F6C6C656374696E6720726564656D7074696F6E0000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 DUP2 SWAP1 DUP2 SWAP1 ISZERO PUSH2 0x822 JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SSTORE PUSH1 0xC SLOAD SWAP1 SWAP3 POP PUSH2 0x81A SWAP1 DUP4 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH1 0xC SSTORE PUSH1 0x1 SWAP4 POP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x862 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SSTORE PUSH1 0xB SLOAD PUSH2 0x85A SWAP1 DUP3 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH1 0xB SSTORE PUSH1 0x1 SWAP3 POP JUMPDEST DUP4 ISZERO PUSH2 0x88C JUMPI PUSH1 0x4 SLOAD PUSH2 0x88C SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP5 PUSH2 0x4AD7 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x8B6 JUMPI PUSH1 0x1 SLOAD PUSH2 0x8B6 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP4 PUSH2 0x4AD7 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x942 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH3 0xF4240 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9B4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9D8 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST EQ PUSH2 0xA3F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D757374206265203D3D2031000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0xACF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0xBC2 SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5860 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBDF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC03 SWAP2 SWAP1 PUSH2 0x5942 JUMP JUMPDEST PUSH2 0xC8F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D3174314445493A20696E76616C6964207369676E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6174757265730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCBC PUSH32 0x0 PUSH1 0xA PUSH2 0x5A8B JUMP JUMPDEST PUSH2 0xCC6 SWAP1 DUP9 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x68D54AA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x68D54AA SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD42 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD66 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 PUSH1 0x6 SLOAD PUSH3 0xF4240 PUSH2 0xD7D SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH2 0xD87 SWAP1 DUP4 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0xD91 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE07 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE2B SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST PUSH2 0xE35 SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0xE9E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F75676820636F6C6C61746572616C20696E20706F6F6C000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xEB9 SWAP1 DUP3 SWAP1 PUSH2 0x57CF JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xB SLOAD PUSH2 0xED7 SWAP1 DUP3 SWAP1 PUSH2 0x57CF JUMP JUMPDEST PUSH1 0xB SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0xEFE SWAP1 DUP11 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0xF08 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xF19 SWAP2 SWAP1 PUSH2 0x57CF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP11 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFA5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xFCF SWAP1 CALLER PUSH2 0x27CB JUMP JUMPDEST PUSH2 0x105B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F206772616E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH2 0x1065 DUP3 DUP3 PUSH2 0x4C47 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x10F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH3 0xF4240 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1163 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1187 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST LT ISZERO PUSH2 0x11EF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D757374206265203E3D2031000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP10 SWAP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1264 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1288 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST PUSH2 0x1292 SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH2 0x129C SWAP2 SWAP1 PUSH2 0x57CF JUMP JUMPDEST GT ISZERO PUSH2 0x1304 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5B506F6F6C277320436C6F7365645D3A204365696C696E672072656163686564 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x1394 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E743174314445493A207369676E61747572652069732065 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7870697265640000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x1487 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5860 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14C8 SWAP2 SWAP1 PUSH2 0x5942 JUMP JUMPDEST PUSH2 0x1553 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E743174314445493A20696E76616C6964207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7572657300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1580 PUSH32 0x0 PUSH1 0xA PUSH2 0x5A8B JUMP JUMPDEST PUSH2 0x158A SWAP1 DUP10 PUSH2 0x5AD2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x882AB63A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP11 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x882AB63A SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1601 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1625 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST SWAP3 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x163C SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH2 0x1646 SWAP1 DUP6 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x1650 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP4 POP PUSH2 0x1678 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER ADDRESS DUP12 PUSH2 0x4CAD JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP5 PUSH2 0x168A SWAP2 SWAP1 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x1694 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x16A5 SWAP2 SWAP1 PUSH2 0x57CF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x171C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1730 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ PUSH2 0x17E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH2 0x1065 DUP3 DUP3 PUSH2 0x4E4B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x185E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1882 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1917 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2480FCEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x2480FCEA SWAP1 PUSH2 0x1973 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B0F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1990 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19B4 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP3 GT ISZERO PUSH2 0x19C8 JUMPI PUSH3 0xF4240 SWAP2 POP JUMPDEST PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x19D8 DUP5 DUP7 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x19E2 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1A00 JUMPI PUSH2 0x19F6 DUP2 DUP4 PUSH2 0x57E7 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1A36 PUSH32 0x8118EEB5231A5FE4008A55B62860F6A0DB4F6C3AC04F8141927A9B3FEDD86D2F CALLER PUSH2 0x27CB JUMP JUMPDEST PUSH2 0x1A3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x2FDA313D9B5BB0B73BD003153F2FCCBC0DCA49791FDD1184DFAD82B44F54BD2E SWAP4 PUSH2 0x1AC9 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x1AFD PUSH32 0xE08E6E8E2E796F02419355C6FA268D1461FE6F2F34114A881A2DB47C0F240509 CALLER PUSH2 0x27CB JUMP JUMPDEST PUSH2 0x1B89 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A2043616C6C6572206973206E6F7420504152414D455445525F5345 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x545445525F524F4C450000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0xE DUP8 SWAP1 SSTORE PUSH1 0x10 DUP7 SWAP1 SSTORE PUSH1 0x11 DUP6 SWAP1 SSTORE PUSH1 0x5 DUP5 SWAP1 SSTORE PUSH1 0x6 DUP4 SWAP1 SSTORE PUSH1 0x7 DUP3 SWAP1 SSTORE PUSH1 0x8 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x17FE98B66D27BD793EA01BD8A23A54ACAB8EEB167D9EB016A0C7CD71C573920C SWAP1 PUSH1 0xE0 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1C3C PUSH32 0x103DA79FF3755FF7A17A557D28B73D37CB4DE0B3C3CC02FA6C48DF0F35071FBF CALLER PUSH2 0x27CB JUMP JUMPDEST PUSH2 0x1C45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH24 0x10000000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x4F40FD1C59F78D7A2220DA638CD9400DABA01E57C7965702F390BF13133CC31F SWAP4 PUSH2 0x1AC9 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1D58 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DC8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1DEC SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP2 LT DUP1 ISZERO PUSH2 0x1E00 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x1E8C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206E6565647320746F20626520626574 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7765656E202E30303030303120616E64202E3939393939390000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP13 SWAP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F01 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F25 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST PUSH2 0x1F2F SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH2 0x1F39 SWAP2 SWAP1 PUSH2 0x57CF JUMP JUMPDEST GT ISZERO PUSH2 0x1FEE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x44 PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0x506F6F6C206365696C696E6720726561636865642C206E6F206D6F7265204445 SWAP1 DUP3 ADD MSTORE PUSH32 0x492063616E206265206D696E7465642077697468207468697320636F6C6C6174 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x6572616C00000000000000000000000000000000000000000000000000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x7D1 JUMP JUMPDEST NUMBER DUP6 LT ISZERO PUSH2 0x207E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E744672616374696F6E616C4445493A207369676E617475 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x726520697320657870697265642E000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x34 DUP4 ADD DUP14 SWAP1 MSTORE SWAP4 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x54 DUP5 ADD MSTORE PUSH1 0x68 DUP4 ADD DUP10 SWAP1 MSTORE PUSH1 0x88 DUP4 ADD DUP9 SWAP1 MSTORE CHAINID PUSH1 0xA8 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC8 DUP5 ADD SWAP2 DUP3 SWAP1 MSTORE DUP1 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 MSTORE SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x2157 SWAP1 DUP5 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0xCC ADD PUSH2 0x5860 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2174 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2198 SWAP2 SWAP1 PUSH2 0x5942 JUMP JUMPDEST PUSH2 0x2224 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E744672616374696F6E616C4445493A20696E76616C6964 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207369676E617475726573000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH2 0x224F PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x227C PUSH32 0x0 PUSH1 0xA PUSH2 0x5A8B JUMP JUMPDEST PUSH2 0x2286 SWAP1 DUP14 PUSH2 0x5AD2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE DUP12 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP14 SWAP1 MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x13 SLOAD SWAP1 MLOAD PUSH32 0x537A30A700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x537A30A7 SWAP1 PUSH2 0x2302 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B53 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x231E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2342 SWAP2 SWAP1 PUSH2 0x5B7E JUMP JUMPDEST SWAP1 SWAP6 POP SWAP1 POP DUP11 DUP2 GT ISZERO PUSH2 0x23B1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F756768204445555320696E7075747465640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x23C6 SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH2 0x23D0 SWAP1 DUP8 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x23DA SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE SWAP2 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2452 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2466 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH2 0x2490 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP CALLER ADDRESS DUP16 PUSH2 0x4CAD JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP7 PUSH2 0x24A2 SWAP2 SWAP1 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x24AC SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x24BD SWAP2 SWAP1 PUSH2 0x57CF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2534 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2548 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2585 PUSH32 0xD4A2989857A24DE9C91E1DAFFE87D051D59F52B68729413D1EF656EC487E530 CALLER PUSH2 0x27CB JUMP JUMPDEST PUSH2 0x258E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x12 SLOAD DUP3 GT ISZERO PUSH2 0x25FA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x616D6F756E743C3D64616F536861726500000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x266E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2682 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2698 SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x3A708F2F1C75B12457D207CF1E259AB9F87BBFCCB29672903ACF4661BD342E49 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x2719 PUSH32 0xC65532185ED70B2E999433E2E9FAC124E083ACB13EC183A4E05944DA0792337B CALLER PUSH2 0x27CB JUMP JUMPDEST PUSH2 0x2722 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH21 0x10000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x6BDFE227D5DB299C59AA56D5F846F40DBD73B271AAA78E18ED74FC3E00B8AA6B SWAP4 PUSH2 0x1AC9 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27C2 SWAP1 DUP4 PUSH2 0x4EB1 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27C2 SWAP1 DUP4 PUSH2 0x4EC7 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x2890 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A205265636F6C6C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x61746572616C697A652069732070617573656400000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST NUMBER DUP2 PUSH1 0x80 ADD MLOAD LT ISZERO PUSH2 0x2924 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP3 DUP2 ADD MLOAD PUSH1 0x4 SLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x80 DUP7 ADD MLOAD SWAP4 MLOAD PUSH1 0x0 SWAP6 PUSH2 0x296D SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP6 SWAP5 SWAP2 SWAP1 SWAP2 AND SWAP3 SWAP2 CHAINID SWAP1 PUSH1 0x20 ADD PUSH2 0x5BA2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH1 0xA0 DUP6 ADD MLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE SWAP2 SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x6793F0AC SWAP2 PUSH2 0x29FE SWAP2 DUP6 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x5C4D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A1B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A3F SWAP2 SWAP1 PUSH2 0x5942 JUMP JUMPDEST PUSH2 0x2ACB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A20696E76616C69 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x64207369676E6174757265730000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AF8 PUSH32 0x0 PUSH1 0xA PUSH2 0x5A8B JUMP JUMPDEST DUP4 MLOAD PUSH2 0x2B04 SWAP2 SWAP1 PUSH2 0x5AD2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B75 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2B99 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C2E SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 DUP9 ADD MLOAD SWAP1 MLOAD PUSH32 0x2480FCEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x2480FCEA SWAP2 PUSH2 0x2C8D SWAP2 PUSH1 0x4 ADD PUSH2 0x5B0F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2CAA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2CCE SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 DUP9 ADD MLOAD DUP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0xFC011061 SWAP2 DUP10 SWAP2 SWAP1 PUSH2 0x2D0C SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x2D1C JUMPI PUSH2 0x2D1C PUSH2 0x5D0B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x84 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D94 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2DB8 SWAP2 SWAP1 PUSH2 0x5B7E JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x2DEA PUSH32 0x0 PUSH1 0xA PUSH2 0x5A8B JUMP JUMPDEST PUSH2 0x2DF4 SWAP1 DUP5 PUSH2 0x5A97 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP10 PUSH1 0x60 ADD MLOAD PUSH1 0x8 SLOAD PUSH1 0x10 SLOAD PUSH3 0xF4240 PUSH2 0x2E11 SWAP2 SWAP1 PUSH2 0x57CF JUMP JUMPDEST PUSH2 0x2E1B SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH2 0x2E25 SWAP1 DUP6 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x2E2F SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH2 0x2E57 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER ADDRESS DUP6 PUSH2 0x4CAD JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2ECB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2EDF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x2F75 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2FE2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3006 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST ISZERO PUSH2 0x3093 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x36 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D416C676F726974686D69634445493A20436F6C6C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x61746572616C20726174696F206D757374206265203000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0x3123 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A72656465656D416C676F726974686D69634445493A207369676E61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7475726520697320657870697265642E00000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x3216 SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5860 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3233 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3257 SWAP2 SWAP1 PUSH2 0x5942 JUMP JUMPDEST PUSH2 0x32E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D416C676F726974686D69634445493A20696E7661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964207369676E617475726573000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP7 SWAP1 PUSH3 0xF4240 SWAP1 PUSH2 0x32F7 SWAP1 DUP3 PUSH2 0x57E7 JUMP JUMPDEST PUSH2 0x3301 SWAP1 DUP4 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x330B SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH2 0x331D PUSH3 0xF4240 DUP5 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x3327 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x3345 SWAP1 DUP3 SWAP1 PUSH2 0x57CF JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xC SLOAD PUSH2 0x3363 SWAP1 DUP3 SWAP1 PUSH2 0x57CF JUMP JUMPDEST PUSH1 0xC SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0x338A SWAP1 DUP11 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x3394 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x33A5 SWAP2 SWAP1 PUSH2 0x57CF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP11 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x341C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3430 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH2 0xF77 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xF4240 DUP3 PUSH2 0x34C4 PUSH32 0x0 PUSH1 0xA PUSH2 0x5A8B JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3535 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3559 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST PUSH2 0x3563 SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH2 0x356D SWAP2 SWAP1 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x3577 SWAP2 SWAP1 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x27C5 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH24 0x10000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x362E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6275794261636B444555533A204275796261636B206973207061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7573656400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0x36BE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A6275794261636B444555533A207369676E61747572652069732065 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7870697265642E00000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 DUP9 SWAP2 AND DUP8 DUP8 CHAINID PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x36FB SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5BA2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x378A SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5860 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x37A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37CB SWAP2 SWAP1 PUSH2 0x5942 JUMP JUMPDEST PUSH2 0x3857 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6275794261636B444555533A20696E76616C6964207369676E61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7475726573000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x386D DUP10 PUSH2 0x17EE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 DUP11 MLOAD PUSH2 0x3887 SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x3897 JUMPI PUSH2 0x3897 PUSH2 0x5D0B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH1 0x7 SLOAD PUSH3 0xF4240 PUSH2 0x38C1 SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x3C04AF9F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x3C04AF9F SWAP1 PUSH2 0x3917 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B53 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3934 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3958 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST PUSH2 0x3962 SWAP2 SWAP1 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x396C SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x399B PUSH32 0x0 PUSH1 0xA PUSH2 0x5A8B JUMP JUMPDEST PUSH2 0x39A5 SWAP1 DUP4 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP14 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A31 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH2 0x3A5A SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP CALLER DUP4 PUSH2 0x4AD7 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3AEE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B5B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3B7F SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST ISZERO PUSH2 0x3BE6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D7573742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x3C76 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x3D69 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5860 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3D86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3DAA SWAP2 SWAP1 PUSH2 0x5942 JUMP JUMPDEST PUSH2 0x3E36 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A20696E76616C69 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x64207369676E6174757265730000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x14DA4EE100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x14DA4EE1 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3EAC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3ED0 SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST SWAP2 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x3EE7 SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH2 0x3EF1 SWAP1 DUP5 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x3EFB SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST SWAP2 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP4 PUSH2 0x3F0F SWAP2 SWAP1 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x3F19 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3F2A SWAP2 SWAP1 PUSH2 0x57CF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3FA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3FB6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x402C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4040 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27C5 SWAP1 PUSH2 0x4F06 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x4081 SWAP1 CALLER PUSH2 0x27CB JUMP JUMPDEST PUSH2 0x17E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F207265766F6B6500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH2 0x4137 PUSH32 0xA84A5389AD41F9AAB0831B01E5384CAE76E7A7FD09131C206FF7927C201C3857 CALLER PUSH2 0x27CB JUMP JUMPDEST PUSH2 0x4140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH22 0x1000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x5860C5063A65E23CEA4E2E2925F1A841BB6D1BC9615BD425F8DD084980B05141 SWAP4 PUSH2 0x1AC9 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x41F3 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x27CB JUMP JUMPDEST PUSH2 0x4259 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A796F7520617265206E6F74207472757374790000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE DUP5 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x42CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8B6 SWAP2 SWAP1 PUSH2 0x5942 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x4378 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x43E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x440C SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP2 LT DUP1 ISZERO PUSH2 0x4420 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x44D2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x53 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D4672616374696F6E616C4445493A20436F6C6C61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x746572616C20726174696F206E6565647320746F206265206265747765656E20 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x2E30303030303120616E64202E39393939393900000000000000000000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x7D1 JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x4562 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A72656465656D4672616374696F6E616C4445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7572652069732065787069726564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x34 DUP4 ADD DUP13 SWAP1 MSTORE SWAP4 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x54 DUP5 ADD MSTORE PUSH1 0x68 DUP4 ADD DUP9 SWAP1 MSTORE PUSH1 0x88 DUP4 ADD DUP8 SWAP1 MSTORE CHAINID PUSH1 0xA8 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC8 DUP5 ADD SWAP2 DUP3 SWAP1 MSTORE DUP1 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 MSTORE SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x463B SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0xCC ADD PUSH2 0x5860 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4658 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x467C SWAP2 SWAP1 PUSH2 0x5942 JUMP JUMPDEST PUSH2 0x4708 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D4672616374696F6E616C4445493A20696E76616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6964207369676E61747572657300000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP10 SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH1 0x6 SLOAD PUSH3 0xF4240 PUSH2 0x4727 SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST PUSH2 0x4731 SWAP1 DUP15 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x473B SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x474D DUP9 DUP5 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x4757 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH2 0x4761 SWAP1 DUP4 PUSH2 0x57E7 JUMP JUMPDEST SWAP1 POP DUP11 PUSH2 0x4771 PUSH3 0xF4240 DUP4 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x477B SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST SWAP5 POP PUSH1 0x0 PUSH2 0x47AA PUSH32 0x0 PUSH1 0xA PUSH2 0x5A8B JUMP JUMPDEST PUSH2 0x47B4 SWAP1 DUP5 PUSH2 0x5A97 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x47C6 DUP11 DUP5 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x47D0 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x47E0 PUSH3 0xF4240 DUP4 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x47EA SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP3 SWAP9 POP SWAP1 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP5 POP PUSH4 0x70A08231 SWAP4 POP PUSH1 0x24 ADD SWAP2 POP PUSH2 0x484D SWAP1 POP JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x486A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x488E SWAP2 SWAP1 PUSH2 0x57FE JUMP JUMPDEST PUSH2 0x4898 SWAP2 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x4901 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F75676820636F6C6C61746572616C20696E20706F6F6C000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x491C SWAP1 DUP3 SWAP1 PUSH2 0x57CF JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xB SLOAD PUSH2 0x493A SWAP1 DUP3 SWAP1 PUSH2 0x57CF JUMP JUMPDEST PUSH1 0xB SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x4958 SWAP1 DUP4 SWAP1 PUSH2 0x57CF JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xC SLOAD PUSH2 0x4976 SWAP1 DUP4 SWAP1 PUSH2 0x57CF JUMP JUMPDEST PUSH1 0xC SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0x499D SWAP1 DUP13 PUSH2 0x5AD2 JUMP JUMPDEST PUSH2 0x49A7 SWAP2 SWAP1 PUSH2 0x5A97 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x49B8 SWAP2 SWAP1 PUSH2 0x57CF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP13 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4A2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4A43 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH2 0x2EB1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27C2 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x4F10 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 DUP8 AND SWAP2 PUSH2 0x4B6E SWAP2 SWAP1 PUSH2 0x5D3A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4BAB 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 0x4BB0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4BDA JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4BDA JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4BDA SWAP2 SWAP1 PUSH2 0x5942 JUMP JUMPDEST PUSH2 0x4C40 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F4641494C454400 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D1 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x4C5F SWAP1 DUP3 PUSH2 0x4AA5 JUMP JUMPDEST ISZERO PUSH2 0x1065 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 DUP9 AND SWAP2 PUSH2 0x4D4C SWAP2 SWAP1 PUSH2 0x5D3A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4D89 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 0x4D8E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4DB8 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4DB8 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4DB8 SWAP2 SWAP1 PUSH2 0x5942 JUMP JUMPDEST PUSH2 0x4E43 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F46524F4D5F4641 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x494C454400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x4E63 SWAP1 DUP3 PUSH2 0x4F5F JUMP JUMPDEST ISZERO PUSH2 0x1065 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EBD DUP4 DUP4 PUSH2 0x4F91 JUMP JUMPDEST PUSH1 0x60 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD ISZERO ISZERO PUSH2 0x27C2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27C5 DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x4F57 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 0x27C5 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x27C5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27C2 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x504C JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x5024 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E756D657261626C655365743A20696E646578206F7574206F6620626F756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6473000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D1 JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x5039 JUMPI PUSH2 0x5039 PUSH2 0x5D0B JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x5135 JUMPI PUSH1 0x0 PUSH2 0x5070 PUSH1 0x1 DUP4 PUSH2 0x57E7 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x5084 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x57E7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x509D JUMPI PUSH2 0x509D PUSH2 0x5D0B JUMP 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 0x50C0 JUMPI PUSH2 0x50C0 PUSH2 0x5D0B JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH2 0x50D7 DUP4 PUSH1 0x1 PUSH2 0x57CF JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x50F9 JUMPI PUSH2 0x50F9 PUSH2 0x5D56 JUMP 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 0x27C5 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x27C5 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x517A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27C2 DUP3 PUSH2 0x513F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x51AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x51C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x51E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x5200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x522C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5238 DUP9 DUP3 DUP10 ADD PUSH2 0x519C JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x525C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x526C PUSH1 0x20 DUP5 ADD PUSH2 0x513F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x52C7 JUMPI PUSH2 0x52C7 PUSH2 0x5275 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x5314 JUMPI PUSH2 0x5314 PUSH2 0x5275 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5336 JUMPI PUSH2 0x5336 PUSH2 0x5275 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5351 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x5366 PUSH2 0x5361 DUP4 PUSH2 0x531C JUMP JUMPDEST PUSH2 0x52CD JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP7 DUP5 GT ISZERO PUSH2 0x5385 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x53A0 JUMPI DUP1 CALLDATALOAD DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x5389 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x53D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x53E0 DUP5 DUP3 DUP6 ADD PUSH2 0x5340 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x5403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP6 CALLDATALOAD SWAP8 PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP8 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP7 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP7 POP PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP6 POP PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 ADD CALLDATALOAD SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x544F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5495 DUP11 DUP3 DUP12 ADD PUSH2 0x519C JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x54BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 DUP2 DUP5 ADD SLT PUSH2 0x54DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x20 PUSH2 0x54EC PUSH2 0x5361 DUP4 PUSH2 0x531C JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP6 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP8 DUP5 GT ISZERO PUSH2 0x550B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP8 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x55C0 JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x5530 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP11 ADD SWAP2 POP DUP11 PUSH1 0x3F DUP4 ADD SLT PUSH2 0x5545 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP6 DUP3 ADD CALLDATALOAD PUSH1 0x40 DUP3 DUP3 GT ISZERO PUSH2 0x555B JUMPI PUSH2 0x555B PUSH2 0x5275 JUMP JUMPDEST PUSH2 0x558A DUP9 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP13 DUP6 ADD AND ADD PUSH2 0x52CD JUMP JUMPDEST SWAP3 POP DUP2 DUP4 MSTORE DUP13 DUP2 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x55A1 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP2 DUP6 ADD DUP10 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 SWAP1 DUP3 ADD DUP8 ADD MSTORE DUP5 MSTORE POP SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x550F JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x55DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x55F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0xC0 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x560A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5612 PUSH2 0x52A4 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x5632 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x563E DUP8 DUP3 DUP7 ADD PUSH2 0x5340 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x566A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5676 DUP8 DUP3 DUP7 ADD PUSH2 0x54CA JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x569E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x56BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x56C9 DUP11 DUP4 DUP12 ADD PUSH2 0x5340 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x56ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x56FA DUP10 DUP3 DUP11 ADD PUSH2 0x519C JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5721 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x572A DUP5 PUSH2 0x513F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0x573F PUSH1 0x40 DUP6 ADD PUSH2 0x513F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x5761 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5794 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x56FA DUP10 DUP3 DUP11 ADD PUSH2 0x519C JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x57E2 JUMPI PUSH2 0x57E2 PUSH2 0x57A0 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x57F9 JUMPI PUSH2 0x57F9 PUSH2 0x57A0 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD DUP6 DUP4 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP6 ADD MSTORE DUP2 DUP6 DUP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP1 POP PUSH1 0x60 DUP7 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP7 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x5934 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP8 DUP7 SUB ADD DUP4 MSTORE DUP2 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP11 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x58EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 ADD DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5904 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP12 SGT ISZERO PUSH2 0x5913 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5920 DUP8 DUP3 DUP9 DUP6 ADD PUSH2 0x5817 JUMP JUMPDEST SWAP7 POP POP POP SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x588A JUMP JUMPDEST POP SWAP3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5954 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x5964 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH2 0x59C4 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x59AA JUMPI PUSH2 0x59AA PUSH2 0x57A0 JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH2 0x59B7 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH2 0x5970 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x59DB JUMPI POP PUSH1 0x1 PUSH2 0x27C5 JUMP JUMPDEST DUP2 PUSH2 0x59E8 JUMPI POP PUSH1 0x0 PUSH2 0x27C5 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x59FE JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x5A08 JUMPI PUSH2 0x5A24 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x27C5 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x5A19 JUMPI PUSH2 0x5A19 PUSH2 0x57A0 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x27C5 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x5A47 JUMPI POP DUP2 DUP2 EXP PUSH2 0x27C5 JUMP JUMPDEST PUSH2 0x5A51 DUP4 DUP4 PUSH2 0x596B JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x5A83 JUMPI PUSH2 0x5A83 PUSH2 0x57A0 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27C2 DUP4 DUP4 PUSH2 0x59CC JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5ACD JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x5B0A JUMPI PUSH2 0x5B0A PUSH2 0x57A0 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5B47 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x5B2B JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD PUSH2 0x27C5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5B91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 DUP1 DUP10 PUSH1 0x60 SHL AND DUP4 MSTORE PUSH1 0x14 DUP4 ADD DUP9 MLOAD PUSH1 0x20 DUP1 DUP12 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5BF7 JUMPI DUP2 MLOAD DUP6 MSTORE SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5BDB JUMP JUMPDEST POP POP POP POP PUSH1 0x60 SWAP8 SWAP1 SWAP8 SHL AND DUP7 MSTORE POP POP PUSH1 0x14 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x34 DUP4 ADD MSTORE PUSH1 0x54 DUP3 ADD MSTORE PUSH1 0x74 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C3C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5C24 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x8B6 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD DUP5 DUP4 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP6 ADD MSTORE DUP2 DUP6 MLOAD DUP1 DUP5 MSTORE PUSH1 0x60 DUP7 ADD SWAP2 POP PUSH1 0x60 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP4 POP DUP3 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5CFD JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP9 DUP8 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP9 MSTORE PUSH2 0x5CC0 DUP2 DUP9 DUP11 ADD DUP10 DUP6 ADD PUSH2 0x5C21 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP7 SWAP1 SWAP7 ADD DUP6 ADD SWAP6 POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5C7B JUMP JUMPDEST POP SWAP4 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x5D4C DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x5C21 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC7 SWAP12 ISZERO CALLDATACOPY CHAINID MSTORE8 GASPRICE PUSH14 0xF153629C30A0770ABE2F4BCA6A75 0x4B SMOD 0xE 0x2B 0xC5 DUP4 0xCE BLOCKHASH PUSH15 0x7764736F6C634300080A0033000000 ", + "sourceMap": "1679:23477:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2285:59;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;552:25:39;;;540:2;525:18;2285:59:7;;;;;;;;2169:26;;;;;;17611:1096;;;:::i;:::-;;3182:35;;;;;;4347:112:20;;;;;;:::i;:::-;4404:7;4430:12;;;;;;;;;;:22;;;;4347:112;11946:1460:7;;;;;;:::i;:::-;;:::i;4709:223:20:-;;;;;;:::i;:::-;;:::i;7290:1381:7:-;;;;;;:::i;:::-;;:::i;3647:62::-;;3685:24;3647:62;;2388:32;;;;;;5883:205:20;;;;;;:::i;:::-;;:::i;2229:53:7:-;;;;;;:::i;:::-;;;;;;;;;;;;;;6104:921;;;;;;:::i;:::-;;:::i;23515:207::-;;;:::i;3076:32::-;;;;;;23953:734;;;;;;:::i;:::-;;:::i;23725:159::-;;;:::i;9861:2036::-;;;;;;:::i;:::-;;:::i;7028:119::-;7118:9;7028:119;;3793:82;;3841:34;3793:82;;2844:31;;;;;;3981:41;;;;;;;;;;;;;;;5817:14:39;;5810:22;5792:41;;5780:2;5765:18;3981:41:7;5652:187:39;3712:78:7;;3758:32;3712:78;;22770:293;;;;;;:::i;:::-;;:::i;2347:38::-;;;;;;23203:147;;;:::i;3913:30::-;;;;;;;;;;;;4025:33;;;;;;;;;;;;3266:27;;;;;;4030:136:20;;;;;;:::i;:::-;;:::i;:::-;;;6532:42:39;6520:55;;;6502:74;;6490:2;6475:18;4030:136:20;6356:226:39;3015:137:20;;;;;;:::i;:::-;;:::i;19197:1871:7:-;;;;;;:::i;:::-;;:::i;15976:1311::-;;;;;;:::i;:::-;;:::i;1722:49:20:-;;1767:4;1722:49;;2423:47:7;;;;;;:::i;:::-;;;;;;;;;;;;;;3946:32;;;;;;;;;;;;5733:235;;;;;;:::i;:::-;;:::i;2108:26::-;;;;;;21264:1452;;;;;;:::i;:::-;;:::i;8699:1062::-;;;;;;:::i;:::-;;:::i;2934:30::-;;;;;;3320:125:20;;;;;;:::i;:::-;;:::i;2137:29:7:-;;;;;;5166:226:20;;;;;;:::i;:::-;;:::i;23353:159:7:-;;;:::i;23066:134::-;;;;;;:::i;:::-;;:::i;13536:2391::-;;;;;;:::i;:::-;;:::i;2198:27::-;;;;;;17611:1096;17693:16;;17679:10;17666:24;;;;:12;:24;;;;;;17714:12;;17666:43;;;:::i;:::-;17665:61;;17653:175;;;;;;;11933:2:39;17653:175:7;;;11915:21:39;11972:2;11952:18;;;11945:30;12011:34;11991:18;;;11984:62;12082:34;12062:18;;;12055:62;12154:29;12133:19;;;12126:58;12201:19;;17653:175:7;;;;;;;;;18015:10;17832:13;17996:30;;;:18;:30;;;;;;17832:13;;;;;;17996:34;17992:208;;18069:10;18050:30;;;;:18;:30;;;;;;;18085:34;;;18144:17;;18050:30;;-1:-1:-1;18144:30:7;;18050;;18144;:::i;:::-;18124:17;:50;18191:4;;-1:-1:-1;17992:208:7;18233:10;18247:1;18208:36;;;:24;:36;;;;;;:40;18204:255;;-1:-1:-1;18299:10:7;18274:36;;;;:24;:36;;;;;;;18315:40;;;18386:23;;:42;;18274:36;;18386:42;:::i;:::-;18360:23;:68;18450:4;;-1:-1:-1;18204:255:7;18467:8;18463:107;;;18518:21;;18482:83;;18518:21;;18542:10;18554;18482:27;:83::i;:::-;18577:14;18573:131;;;18639:16;;18598:101;;18639:16;;18662:10;18678:16;18598:27;:101::i;:::-;17649:1058;;;;17611:1096::o;11946:1460::-;4258:12;;;;;;;:21;4250:59;;;;;;;12563:2:39;4250:59:7;;;12545:21:39;12602:2;12582:18;;;12575:30;12641:27;12621:18;;;12614:55;12686:18;;4250:59:7;12361:349:39;4250:59:7;12119:20:::1;::::0;12104:62:::1;::::0;;;;;;;2668:3:::1;::::0;12119:20:::1;;::::0;12104:60:::1;::::0;:62:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;12119:20;12104:62:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:86;12092:138;;;::::0;::::1;::::0;;13106:2:39;12092:138:7::1;::::0;::::1;13088:21:39::0;13145:2;13125:18;;;13118:30;13184:31;13164:18;;;13157:59;13233:18;;12092:138:7::1;12904:353:39::0;12092:138:7::1;12258:12;12243:11;:27;;12235:87;;;::::0;::::1;::::0;;13464:2:39;12235:87:7::1;::::0;::::1;13446:21:39::0;13503:2;13483:18;;;13476:30;13542:34;13522:18;;;13515:62;13613:17;13593:18;;;13586:45;13648:19;;12235:87:7::1;13262:411:39::0;12235:87:7::1;12371:18;::::0;12326:15:::1;::::0;12371:18:::1;;12391:16:::0;12409:11;7118:9;12354:81:::1;::::0;13911:2:39;13907:15;;;;13924:66;13903:88;12354:81:7::1;::::0;::::1;13891:101:39::0;14008:12;;;14001:28;;;;14045:12;;;14038:28;14082:12;;;14075:28;14119:13;;12354:81:7::1;::::0;;;;;::::1;::::0;;;;;;;12344:92;;12354:81:::1;12344:92:::0;;::::1;::::0;12463:20:::1;::::0;12448:64;;;12344:92;;-1:-1:-1;12463:20:7::1;;::::0;12448:49:::1;::::0;:64:::1;::::0;12344:92;;12507:4;;;;12448:64:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12440:115;;;::::0;::::1;::::0;;16341:2:39;12440:115:7::1;::::0;::::1;16323:21:39::0;16380:2;16360:18;;;16353:30;16419:34;16399:18;;;16392:62;16490:8;16470:18;;;16463:36;16516:19;;12440:115:7::1;16139:402:39::0;12440:115:7::1;12607:28;12652:20;12656:16;12652:2;:20;:::i;:::-;12638:35;::::0;:10;:35:::1;:::i;:::-;12705:11;::::0;:78:::1;::::0;;;;::::1;::::0;::::1;18493:25:39::0;;;18534:18;;;18527:34;;;12607:66:7;;-1:-1:-1;12677:25:7::1;::::0;12705:11:::1;::::0;;::::1;::::0;:28:::1;::::0;18466:18:39;;12705:78:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12677:106;;12865:3;12845:14;;12838:3;12830:29;;;;:::i;:::-;12809:51;::::0;:17;:51:::1;:::i;:::-;12808:61;;;;:::i;:::-;12950:23;::::0;12906:16:::1;::::0;:41:::1;::::0;;;;12941:4:::1;12906:41;::::0;::::1;6502:74:39::0;12788:81:7;;-1:-1:-1;12950:23:7;;12906:16:::1;::::0;;::::1;::::0;:26:::1;::::0;6475:18:39;;12906:41:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;;;:::i;:::-;12885:17;:88;;12873:140;;;::::0;::::1;::::0;;19007:2:39;12873:140:7::1;::::0;::::1;18989:21:39::0;19046:2;19026:18;;;19019:30;19085:31;19065:18;;;19058:59;19134:18;;12873:140:7::1;18805:353:39::0;12873:140:7::1;13082:10;13057:36;::::0;;;:24:::1;:36;::::0;;;;;:56:::1;::::0;13096:17;;13057:56:::1;:::i;:::-;13043:10;13018:36;::::0;;;:24:::1;:36;::::0;;;;:95;13143:23:::1;::::0;:43:::1;::::0;13169:17;;13143:43:::1;:::i;:::-;13117:23;:69:::0;13203:10:::1;13190:24;::::0;;;:12:::1;:24;::::0;;;;13217:12:::1;13190:39:::0;;13259:14:::1;::::0;13276:3:::1;::::0;13246:27:::1;::::0;:10;:27:::1;:::i;:::-;:33;;;;:::i;:::-;13234:8;;:45;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;13342:20:7::1;::::0;13327:75:::1;::::0;;;;13379:10:::1;13327:75;::::0;::::1;19337:74:39::0;19427:18;;;19420:34;;;13342:20:7::1;::::0;;::::1;::::0;13327:51:::1;::::0;19310:18:39;;13327:75:7::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12088:1318;;;11946:1460:::0;;;;;:::o;4709:223:20:-;4800:6;:12;;;;;;;;;;:22;;;4792:45;;686:10:4;3015:137:20;:::i;4792:45::-;4784:105;;;;;;;19667:2:39;4784:105:20;;;19649:21:39;19706:2;19686:18;;;19679:30;19745:34;19725:18;;;19718:62;19816:17;19796:18;;;19789:45;19851:19;;4784:105:20;19465:411:39;4784:105:20;4900:25;4911:4;4917:7;4900:10;:25::i;:::-;4709:223;;:::o;7290:1381:7:-;4358:10;;7445:22;;4358:10;;;;;:19;4350:55;;;;;;;20083:2:39;4350:55:7;;;20065:21:39;20122:2;20102:18;;;20095:30;20161:25;20141:18;;;20134:53;20204:18;;4350:55:7;19881:347:39;4350:55:7;7502:20:::1;::::0;7487:62:::1;::::0;;;;;;;2668:3:::1;::::0;7502:20:::1;;::::0;7487:60:::1;::::0;:62:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;7502:20;7487:62:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:86;;7475:138;;;::::0;::::1;::::0;;20435:2:39;7475:138:7::1;::::0;::::1;20417:21:39::0;20474:2;20454:18;;;20447:30;20513:31;20493:18;;;20486:59;20562:18;;7475:138:7::1;20233:353:39::0;7475:138:7::1;7721:12;::::0;7673:23:::1;::::0;7629:16:::1;::::0;:41:::1;::::0;;;;7664:4:::1;7629:41;::::0;::::1;6502:74:39::0;7700:17:7;;7673:23;7629:16:::1;;::::0;:26:::1;::::0;6475:18:39;;7629:41:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;;;:::i;:::-;:88;;;;:::i;:::-;:104;;7617:159;;;::::0;::::1;::::0;;20793:2:39;7617:159:7::1;::::0;::::1;20775:21:39::0;;;20812:18;;;20805:30;20871:34;20851:18;;;20844:62;20923:18;;7617:159:7::1;20591:356:39::0;7617:159:7::1;7804:12;7789:11;:27;;7781:78;;;::::0;::::1;::::0;;21154:2:39;7781:78:7::1;::::0;::::1;21136:21:39::0;21193:2;21173:18;;;21166:30;21232:34;21212:18;;;21205:62;21303:8;21283:18;;;21276:36;21329:19;;7781:78:7::1;20952:402:39::0;7781:78:7::1;7908:18;::::0;7863:15:::1;::::0;7908:18:::1;;7928:16:::0;7946:11;7118:9;7891:81:::1;::::0;13911:2:39;13907:15;;;;13924:66;13903:88;7891:81:7::1;::::0;::::1;13891:101:39::0;14008:12;;;14001:28;;;;14045:12;;;14038:28;14082:12;;;14075:28;14119:13;;7891:81:7::1;::::0;;;;;::::1;::::0;;;;;;;7881:92;;7891:81:::1;7881:92:::0;;::::1;::::0;8000:20:::1;::::0;7985:64;;;7881:92;;-1:-1:-1;8000:20:7::1;;::::0;7985:49:::1;::::0;:64:::1;::::0;7881:92;;8044:4;;;;7985:64:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7977:113;;;::::0;::::1;::::0;;21561:2:39;7977:113:7::1;::::0;::::1;21543:21:39::0;21600:2;21580:18;;;21573:30;21639:34;21619:18;;;21612:62;21710:6;21690:18;;;21683:34;21734:19;;7977:113:7::1;21359:400:39::0;7977:113:7::1;8095:29;8148:20;8152:16;8148:2;:20;:::i;:::-;8127:42;::::0;:17;:42:::1;:::i;:::-;8190:11;::::0;:77:::1;::::0;;;;::::1;::::0;::::1;18493:25:39::0;;;18534:18;;;18527:34;;;8095:74:7;;-1:-1:-1;8190:11:7::1;;::::0;:26:::1;::::0;18466:18:39;;8190:77:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8173:94;;8379:3;8363:11;;8356:3;8348:26;;;;:::i;:::-;8330:45;::::0;:14;:45:::1;:::i;:::-;8329:53;;;;:::i;:::-;8461:16;::::0;8312:70;;-1:-1:-1;8417:120:7::1;::::0;8461:16:::1;;8483:10;8506:4;8516:17:::0;8417:31:::1;:120::i;:::-;8586:3;8572:11;;8554:14;:29;;;;:::i;:::-;:35;;;;:::i;:::-;8542:8;;:47;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;8608:20:7::1;::::0;8593:74:::1;::::0;;;;8640:10:::1;8593:74;::::0;::::1;19337::39::0;19427:18;;;19420:34;;;8608:20:7::1;::::0;;::::1;::::0;8593:46:::1;::::0;19310:18:39;;8593:74:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7470:1201;;7290:1381:::0;;;;;;;:::o;5883:205:20:-;5969:23;;;686:10:4;5969:23:20;5961:83;;;;;;;21966:2:39;5961:83:20;;;21948:21:39;22005:2;21985:18;;;21978:30;22044:34;22024:18;;;22017:62;22115:17;22095:18;;;22088:45;22150:19;;5961:83:20;21764:411:39;5961:83:20;6055:26;6067:4;6073:7;6055:11;:26::i;6104:921:7:-;6193:7;6206:20;6244;;;;;;;;;;;6229:48;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6206:73;;6283:31;6332:20;;;;;;;;;;;6317:60;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6428:20;;6413:76;;;;;6283:96;;-1:-1:-1;6383:27:7;;6428:20;;;;;6413:58;;:76;;6472:16;;6413:76;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6383:106;;2614:3;6498:23;:52;6494:113;;;2614:3;6555:52;;6494:113;6665:40;2614:3;6709:38;6724:23;6709:12;:38;:::i;:::-;6708:71;;;;:::i;:::-;6665:114;;6906:32;6884:19;:54;6880:141;;;6950:54;6972:32;6950:19;:54;:::i;:::-;6943:61;6104:921;-1:-1:-1;;;;;;6104:921:7:o;6880:141::-;-1:-1:-1;7020:1:7;;6104:921;-1:-1:-1;;;;;6104:921:7:o;23515:207::-;23569:43;3609:35;23601:10;23569:7;:43::i;:::-;23561:52;;;;;;23642:21;;;;;;;;;;23641:22;23617:46;;;;;;;;;;;;;;23673:45;;;;;;23696:21;;;;;5817:14:39;5810:22;5792:41;;5780:2;5765:18;;5652:187;23673:45:7;;;;;;;;23515:207::o;23953:734::-;24190:42;3841:34;24221:10;24190:7;:42::i;:::-;24182:96;;;;;;;23019:2:39;24182:96:7;;;23001:21:39;23058:2;23038:18;;;23031:30;23097:34;23077:18;;;23070:62;23168:11;23148:18;;;23141:39;23197:19;;24182:96:7;22817:405:39;24182:96:7;24282:12;:26;;;24312:10;:27;;;24343:16;:39;;;24386:11;:26;;;24416:14;:31;;;24451:11;:29;;;-1:-1:-1;24484:31:7;;;24525:158;;;23542:25:39;;;23598:2;23583:18;;23576:34;;;23626:18;;;23619:34;;;23684:2;23669:18;;23662:34;;;23727:3;23712:19;;23705:35;;;23771:3;23756:19;;23749:35;;;23815:3;23800:19;;23793:35;;;24525:158:7;;23529:3:39;23514:19;24525:158:7;;;;;;;23953:734;;;;;;;:::o;23725:159::-;23771:35;3529:27;23795:10;23771:7;:35::i;:::-;23763:44;;;;;;23828:13;;;;;;;;;;23827:14;23811:30;;;;;;;;;;;;;;23851:29;;;;;;23866:13;;;;;5817:14:39;5810:22;5792:41;;5780:2;5765:18;;5652:187;9861:2036:7;4358:10;;10081:19;;4358:10;;;;;:19;4350:55;;;;;;;20083:2:39;4350:55:7;;;20065:21:39;20122:2;20102:18;;;20095:30;20161:25;20141:18;;;20134:53;20204:18;;4350:55:7;19881:347:39;4350:55:7;10155:20:::1;::::0;10140:62:::1;::::0;;;;;;;10106:31:::1;::::0;10155:20:::1;;::::0;10140:60:::1;::::0;:62:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;10155:20;10140:62:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10106:96;;2668:3;10218:23;:46;:77;;;;;10294:1;10268:23;:27;10218:77;10206:156;;;::::0;::::1;::::0;;24041:2:39;10206:156:7::1;::::0;::::1;24023:21:39::0;24080:2;24060:18;;;24053:30;24119:34;24099:18;;;24092:62;24190:26;24170:18;;;24163:54;24234:19;;10206:156:7::1;23839:420:39::0;10206:156:7::1;10469:12;::::0;10422:23:::1;::::0;10378:16:::1;::::0;:41:::1;::::0;;;;10413:4:::1;10378:41;::::0;::::1;6502:74:39::0;10448:17:7;;10422:23;10378:16:::1;;::::0;:26:::1;::::0;6475:18:39;;10378:41:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;;;:::i;:::-;:87;;;;:::i;:::-;:103;;10366:194;;;::::0;::::1;::::0;;24466:2:39;10366:194:7::1;::::0;::::1;24448:21:39::0;24505:2;24485:18;;;24478:30;;;24544:34;24524:18;;;24517:62;24615:34;24595:18;;;24588:62;24687:6;24666:19;;;24659:35;24711:19;;10366:194:7::1;24264:472:39::0;10366:194:7::1;10588:12;10573:11;:27;;10565:86;;;::::0;::::1;::::0;;24943:2:39;10565:86:7::1;::::0;::::1;24925:21:39::0;24982:2;24962:18;;;24955:30;25021:34;25001:18;;;24994:62;25092:16;25072:18;;;25065:44;25126:19;;10565:86:7::1;24741:410:39::0;10565:86:7::1;10700:18;::::0;10738:21:::1;::::0;10683:124:::1;::::0;;25435:66:39;25530:2;25526:15;;;;;10683:124:7::1;::::0;;::::1;25510:37:39::0;;;;25563:12;;;25556:28;;;25618:15;;;;;;;25600:12;;;25593:46;25655:12;;;25648:28;;;25692:13;;;25685:29;;;7118:9:7;25730:13:39;;;;25723:29;;;;10683:124:7;;;;;;;;;;25768:13:39;;;10683:124:7;;;;10673:135;;;::::1;::::0;;;;10835:20:::1;::::0;10820:64;;;;10673:135;10700:18:::1;10835:20:::0;;::::1;::::0;10820:49:::1;::::0;:64:::1;::::0;10673:135;;10879:4;;;;10820:64;;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10812:120;;;::::0;::::1;::::0;;25994:2:39;10812:120:7::1;::::0;::::1;25976:21:39::0;26033:2;26013:18;;;26006:30;26072:34;26052:18;;;26045:62;26143:13;26123:18;;;26116:41;26174:19;;10812:120:7::1;25792:407:39::0;10812:120:7::1;10937:48;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10937:48:7::1;11049:29;11102:20;11106:16;11102:2;:20;:::i;:::-;11081:42;::::0;:17;:42:::1;:::i;:::-;11143:170;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;11380:11:::1;::::0;:47;;;;;11143:170;;-1:-1:-1;;;;11380:11:7::1;;::::0;:33:::1;::::0;:47:::1;::::0;11143:170;;11380:47:::1;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11351:76:::0;;-1:-1:-1;11351:76:7;-1:-1:-1;11439:26:7;;::::1;;11431:63;;;::::0;::::1;::::0;;27197:2:39;11431:63:7::1;::::0;::::1;27179:21:39::0;27236:2;27216:18;;;27209:30;27275:26;27255:18;;;27248:54;27319:18;;11431:63:7::1;26995:348:39::0;11431:63:7::1;11563:3;11546:11;;11539:3;11531:26;;;;:::i;:::-;11516:42;::::0;:11;:42:::1;:::i;:::-;11515:52;;;;:::i;:::-;11583:21;::::0;;11572:73:::1;::::0;;;;11621:10:::1;11572:73:::0;;::::1;19337:74:39::0;;;;19427:18;;;19420:34;;;11501:66:7;;-1:-1:-1;11583:21:7::1;::::0;;::::1;::::0;11572:48:::1;::::0;19310:18:39;;11572:73:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11693:16:7::1;::::0;11649:120:::1;::::0;-1:-1:-1;11693:16:7::1;;::::0;-1:-1:-1;11715:10:7::1;11738:4;11748:17:::0;11649:31:::1;:120::i;:::-;11815:3;11801:11;;11786;:26;;;;:::i;:::-;:32;;;;:::i;:::-;11774:8;;:44;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;11837:20:7::1;::::0;11822:71:::1;::::0;;;;11869:10:::1;11822:71;::::0;::::1;19337:74:39::0;19427:18;;;19420:34;;;11837:20:7::1;::::0;;::::1;::::0;11822:46:::1;::::0;19310:18:39;;11822:71:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10102:1795;;;;9861:2036:::0;;;;;;;;;:::o;22770:293::-;22844:40;3758:32;22873:10;22844:7;:40::i;:::-;22836:49;;;;;;22907:8;;22897:6;:18;;22889:47;;;;;;;27550:2:39;22889:47:7;;;27532:21:39;27589:2;27569:18;;;27562:30;27628:18;27608;;;27601:46;27664:18;;22889:47:7;27348:340:39;22889:47:7;22955:20;;22940:58;;;;;22955:20;19355:55:39;;;22940:58:7;;;19337:74:39;19427:18;;;19420:34;;;22955:20:7;;;;22940:46;;19310:18:39;;22940:58:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23014:6;23002:8;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;23030:29:7;;;27867:25:39;;;27940:42;27928:55;;27923:2;27908:18;;27901:83;23030:29:7;;27840:18:39;23030:29:7;;;;;;;22770:293;;:::o;23203:147::-;23249:32;3390:24;23270:10;23249:7;:32::i;:::-;23241:41;;;;;;23300:10;;;;;;;;;;23299:11;23286:24;;;;;;;;;;;;;;23320:26;;;;;;23335:10;;;;;5817:14:39;5810:22;5792:41;;5780:2;5765:18;;5652:187;4030:136:20;4103:7;4129:12;;;;;;;;;;:30;;4153:5;4129:23;:30::i;:::-;4122:37;;4030:136;;;;;:::o;3015:137::-;3084:4;3107:12;;;;;;;;;;:38;;3137:7;3107:29;:38::i;19197:1871:7:-;19280:21;;;;;;;:30;19272:94;;;;;;;28197:2:39;19272:94:7;;;28179:21:39;28236:2;28216:18;;;28209:30;28275:34;28255:18;;;28248:62;28346:21;28326:18;;;28319:49;28385:19;;19272:94:7;27995:415:39;19272:94:7;19401:12;19379:6;:18;;;:34;;19371:94;;;;;;;28617:2:39;19371:94:7;;;28599:21:39;28656:2;28636:18;;;28629:30;28695:34;28675:18;;;28668:62;28766:17;28746:18;;;28739:45;28801:19;;19371:94:7;28415:411:39;19371:94:7;19525:18;;19556:23;;;;;19591:21;;19625:25;;;;19663:18;;;;19497:219;;19469:15;;19497:219;;19525:18;;;;;19556:23;19591:21;;;;;19625:25;7118:9;;19497:219;;;:::i;:::-;;;;;;;;;;;;;;;19487:230;;19497:219;19487:230;;;;19744:20;;19788:11;;;;19729:71;;;19487:230;;-1:-1:-1;19744:20:7;;;19729:49;;:71;;19487:230;;19788:11;19729:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19721:128;;;;;;;31494:2:39;19721:128:7;;;31476:21:39;31533:2;31513:18;;;31506:30;31572:34;31552:18;;;31545:62;31643:14;31623:18;;;31616:42;31675:19;;19721:128:7;31292:408:39;19721:128:7;19854:29;19914:20;19918:16;19914:2;:20;:::i;:::-;19886:24;;:49;;;;:::i;:::-;19854:81;;19940:24;19982:20;;;;;;;;;;;19967:48;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19940:77;;20021:31;20070:20;;;;;;;;;;;20055:60;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20166:20;;20210:23;;;;;20151:83;;;;;20021:96;;-1:-1:-1;20121:27:7;;20166:20;;;;;20151:58;;:83;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20296:11;;20400:23;;;;20424:30;;20121:113;;-1:-1:-1;20240:24:7;;;;20296:11;;;:39;;20357:21;;20400:23;20424:34;;20296:11;;20424:34;:::i;:::-;20400:59;;;;;;;;:::i;:::-;;;;;;;;;;;20296:353;;;;;;;;;;;;;32153:25:39;;;;32194:18;;;32187:34;32237:18;;;32230:34;;;32280:18;;;32273:34;;;32323:19;;;32316:35;;;32125:19;;20296:353:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20239:410;;-1:-1:-1;20239:410:7;-1:-1:-1;20654:34:7;20711:20;20715:16;20711:2;:20;:::i;:::-;20691:41;;:16;:41;:::i;:::-;20654:78;;20737:22;20830:6;:25;;;20813:12;;20800:10;;20793:3;20785:25;;;;:::i;:::-;:40;;;;:::i;:::-;20763:63;;:18;:63;:::i;:::-;20762:93;;;;:::i;:::-;20904:16;;20737:118;;-1:-1:-1;20860:129:7;;20904:16;;20926:10;20949:4;20959:26;20860:31;:129::i;:::-;21004:21;;;20993:71;;;;;21037:10;20993:71;;;19337:74:39;;;;19427:18;;;19420:34;;;21004:21:7;;;20993:43;;19310:18:39;;20993:71:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19268:1800;;;;;;;;;19197:1871;:::o;15976:1311::-;4258:12;;;;;;;:21;4250:59;;;;;;;12563:2:39;4250:59:7;;;12545:21:39;12602:2;12582:18;;;12575:30;12641:27;12621:18;;;12614:55;12686:18;;4250:59:7;12361:349:39;4250:59:7;16161:20:::1;;;;;;;;;;;16146:60;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67:::0;16138:134:::1;;;::::0;::::1;::::0;;32564:2:39;16138:134:7::1;::::0;::::1;32546:21:39::0;32603:2;32583:18;;;32576:30;32642:34;32622:18;;;32615:62;32713:24;32693:18;;;32686:52;32755:19;;16138:134:7::1;32362:418:39::0;16138:134:7::1;16300:12;16285:11;:27;;16277:88;;;::::0;::::1;::::0;;32987:2:39;16277:88:7::1;::::0;::::1;32969:21:39::0;33026:2;33006:18;;;32999:30;33065:34;33045:18;;;33038:62;33136:18;33116;;;33109:46;33172:19;;16277:88:7::1;32785:412:39::0;16277:88:7::1;16414:21;::::0;16369:15:::1;::::0;16414:21:::1;;16437:18:::0;16457:11;7118:9;16397:86:::1;::::0;13911:2:39;13907:15;;;;13924:66;13903:88;16397:86:7::1;::::0;::::1;13891:101:39::0;14008:12;;;14001:28;;;;14045:12;;;14038:28;14082:12;;;14075:28;14119:13;;16397:86:7::1;::::0;;;;;::::1;::::0;;;;;;;16387:97;;16397:86:::1;16387:97:::0;;::::1;::::0;16511:20:::1;::::0;16496:64;;;16387:97;;-1:-1:-1;16511:20:7::1;;::::0;16496:49:::1;::::0;:64:::1;::::0;16387:97;;16555:4;;;;16496:64:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16488:123;;;::::0;::::1;::::0;;33404:2:39;16488:123:7::1;::::0;::::1;33386:21:39::0;33443:2;33423:18;;;33416:30;33482:34;33462:18;;;33455:62;33553:16;33533:18;;;33526:44;33587:19;;16488:123:7::1;33202:410:39::0;16488:123:7::1;16728:14;::::0;16648:10;;16747:3:::1;::::0;16713:29:::1;::::0;16747:3;16713:29:::1;:::i;:::-;16688:55;::::0;:21;:55:::1;:::i;:::-;16687:63;;;;:::i;:::-;16663:87:::0;-1:-1:-1;16768:19:7::1;16836:18:::0;16791:41:::1;2554:3;16663:87:::0;16791:41:::1;:::i;:::-;16790:64;;;;:::i;:::-;16911:10;16892:30;::::0;;;:18:::1;:30;::::0;;;;;16768:86;;-1:-1:-1;16892:44:7::1;::::0;16768:86;;16892:44:::1;:::i;:::-;16878:10;16859:30;::::0;;;:18:::1;:30;::::0;;;;:77;16960:17:::1;::::0;:31:::1;::::0;16980:11;;16960:31:::1;:::i;:::-;16940:17;:51:::0;17009:10:::1;16996:24;::::0;;;:12:::1;:24;::::0;;;;17023:12:::1;16996:39:::0;;17065:14:::1;::::0;17082:3:::1;::::0;17052:27:::1;::::0;:10;:27:::1;:::i;:::-;:33;;;;:::i;:::-;17040:8;;:45;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;17148:20:7::1;::::0;17133:75:::1;::::0;;;;17185:10:::1;17133:75;::::0;::::1;19337:74:39::0;19427:18;;;19420:34;;;17148:20:7::1;::::0;;::::1;::::0;17133:51:::1;::::0;19310:18:39;;17133:75:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;17223:21:7::1;::::0;;17212:71:::1;::::0;;;;17264:4:::1;17212:71:::0;;::::1;19337:74:39::0;;;;19427:18;;;19420:34;;;17223:21:7::1;;::::0;-1:-1:-1;17212:43:7::1;::::0;-1:-1:-1;19310:18:39;;17212:71:7::1;19163:297:39::0;5733:235:7;5809:7;2554:3;5927:16;5903:20;5907:16;5903:2;:20;:::i;:::-;5875:23;;5831:16;;:41;;;;;5866:4;5831:41;;;6502:74:39;5831:16:7;;;;;:26;;6475:18:39;;5831:41:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;;;:::i;:::-;5830:94;;;;:::i;:::-;:113;;;;:::i;:::-;5829:135;;;;:::i;21264:1452::-;21447:13;;;;;;;:22;21439:71;;;;;;;33819:2:39;21439:71:7;;;33801:21:39;33858:2;33838:18;;;33831:30;33897:34;33877:18;;;33870:62;33968:6;33948:18;;;33941:34;33992:19;;21439:71:7;33617:400:39;21439:71:7;21537:12;21522:11;:27;;21514:79;;;;;;;34224:2:39;21514:79:7;;;34206:21:39;34263:2;34243:18;;;34236:30;34302:34;34282:18;;;34275:62;34373:9;34353:18;;;34346:37;34400:19;;21514:79:7;34022:403:39;21514:79:7;21653:18;;21711:21;;21597:15;;21653:18;;;;;21683:16;;21711:21;21744:18;21774:11;7118:9;21625:185;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;21615:196;;21625:185;21615:196;;;;21838:20;;21823:64;;;21615:196;;-1:-1:-1;21838:20:7;;;21823:49;;:64;;21615:196;;21882:4;;;;21823:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21815:114;;;;;;;34632:2:39;21815:114:7;;;34614:21:39;34671:2;34651:18;;;34644:30;34710:34;34690:18;;;34683:62;34781:7;34761:18;;;34754:35;34806:19;;21815:114:7;34430:401:39;21815:114:7;21934:53;21990:267;;;;;;;;22038:41;22062:16;22038:23;:41::i;:::-;21990:267;;;;22094:18;21990:267;;;;22127:16;22170:1;22144:16;:23;:27;;;;:::i;:::-;22127:45;;;;;;;;:::i;:::-;;;;;;;21990:267;;;;22232:11;21990:267;;;21934:323;;22262:33;22376:3;22359:11;;22352:3;22344:26;;;;:::i;:::-;22299:11;;:41;;;;;:11;;;;;:27;;:41;;22327:12;;22299:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;;:::i;:::-;22298:82;;;;:::i;:::-;22262:118;-1:-1:-1;22384:28:7;22444:20;22448:16;22444:2;:20;:::i;:::-;22415:50;;:25;:50;:::i;:::-;22545:21;;;22534:73;;;;;22583:10;22534:73;;;19337:74:39;;;;19427:18;;;19420:34;;;22384:81:7;;-1:-1:-1;22545:21:7;;;;;22534:48;;19310:18:39;;22534:73:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22651:16:7;;22611:101;;-1:-1:-1;22651:16:7;;;-1:-1:-1;22673:10:7;22688:20;22611:27;:101::i;:::-;21435:1281;;;;21264:1452;;;;;;:::o;8699:1062::-;4358:10;;8867:22;;4358:10;;;;;:19;4350:55;;;;;;;20083:2:39;4350:55:7;;;20065:21:39;20122:2;20102:18;;;20095:30;20161:25;20141:18;;;20134:53;20204:18;;4350:55:7;19881:347:39;4350:55:7;8922:20:::1;;;;;;;;;;;8907:60;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67:::0;8895:116:::1;;;::::0;::::1;::::0;;35318:2:39;8895:116:7::1;::::0;::::1;35300:21:39::0;35357:2;35337:18;;;35330:30;35396:28;35376:18;;;35369:56;35442:18;;8895:116:7::1;35116:350:39::0;8895:116:7::1;9038:12;9023:11;:27;;9015:87;;;::::0;::::1;::::0;;13464:2:39;9015:87:7::1;::::0;::::1;13446:21:39::0;13503:2;13483:18;;;13476:30;13542:34;13522:18;;;13515:62;13613:17;13593:18;;;13586:45;13648:19;;9015:87:7::1;13262:411:39::0;9015:87:7::1;9151:21;::::0;9106:15:::1;::::0;9151:21:::1;;9174:18:::0;9194:11;7118:9;9134:86:::1;::::0;13911:2:39;13907:15;;;;13924:66;13903:88;9134:86:7::1;::::0;::::1;13891:101:39::0;14008:12;;;14001:28;;;;14045:12;;;14038:28;14082:12;;;14075:28;14119:13;;9134:86:7::1;::::0;;;;;::::1;::::0;;;;;;;9124:97;;9134:86:::1;9124:97:::0;;::::1;::::0;9248:20:::1;::::0;9233:64;;;9124:97;;-1:-1:-1;9248:20:7::1;;::::0;9233:49:::1;::::0;:64:::1;::::0;9124:97;;9292:4;;;;9233:64:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9225:121;;;::::0;::::1;::::0;;35673:2:39;9225:121:7::1;::::0;::::1;35655:21:39::0;35712:2;35692:18;;;35685:30;35751:34;35731:18;;;35724:62;35822:14;35802:18;;;35795:42;35854:19;;9225:121:7::1;35471:408:39::0;9225:121:7::1;9368:11;::::0;:99:::1;::::0;;;;::::1;::::0;::::1;18493:25:39::0;;;18534:18;;;18527:34;;;9368:11:7::1;::::0;;::::1;::::0;:34:::1;::::0;18466:18:39;;9368:99:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9351:116;;9542:3;9524:11;;9516:3;9508:28;;;;:::i;:::-;9490:47;::::0;:14;:47:::1;:::i;:::-;9489:57;;;;:::i;:::-;9472:74;;9594:3;9580:11;;9562:14;:29;;;;:::i;:::-;:35;;;;:::i;:::-;9550:8;;:47;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;9613:21:7::1;::::0;;9602:77:::1;::::0;;;;9651:10:::1;9602:77:::0;;::::1;19337:74:39::0;;;;19427:18;;;19420:34;;;9613:21:7::1;;::::0;9602:48:::1;::::0;19310:18:39;;9602:77:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;9698:20:7::1;::::0;9683:74:::1;::::0;;;;9730:10:::1;9683:74;::::0;::::1;19337::39::0;19427:18;;;19420:34;;;9698:20:7::1;::::0;;::::1;::::0;-1:-1:-1;9683:46:7::1;::::0;-1:-1:-1;19310:18:39;;9683:74:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8891:870;8699:1062:::0;;;;;;;:::o;3320:125:20:-;3383:7;3409:12;;;;;;;;;;:29;;:27;:29::i;5166:226::-;5258:6;:12;;;;;;;;;;:22;;;5250:45;;686:10:4;3015:137:20;:::i;5250:45::-;5242:106;;;;;;;36086:2:39;5242:106:20;;;36068:21:39;36125:2;36105:18;;;36098:30;36164:34;36144:18;;;36137:62;36235:18;36215;;;36208:46;36271:19;;5242:106:20;35884:412:39;23353:159:7;23401:34;3458:26;23424:10;23401:7;:34::i;:::-;23393:43;;;;;;23456:12;;;;;;;;;;23455:13;23440:28;;;;;;;;;;;;;;23478:30;;;;;;23495:12;;;;;5817:14:39;5810:22;5792:41;;5780:2;5765:18;;5652:187;23066:134:7;4140:32;3685:24;4161:10;4140:7;:32::i;:::-;4128:79;;;;;;;36503:2:39;4128:79:7;;;36485:21:39;36542:2;36522:18;;;36515:30;36581:26;36561:18;;;36554:54;36625:18;;4128:79:7;36301:348:39;4128:79:7;23162:34:::1;::::0;;;;:22:::1;19355:55:39::0;;;23162:34:7::1;::::0;::::1;19337:74:39::0;19427:18;;;19420:34;;;23162:22:7;::::1;::::0;::::1;::::0;19310:18:39;;23162:34:7::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13536:2391::-:0;4258:12;;;;;;;:21;4250:59;;;;;;;12563:2:39;4250:59:7;;;12545:21:39;12602:2;12582:18;;;12575:30;12641:27;12621:18;;;12614:55;12686:18;;4250:59:7;12361:349:39;4250:59:7;13775:20:::1;::::0;13760:62:::1;::::0;;;;;;;13726:31:::1;::::0;13775:20:::1;;::::0;13760:60:::1;::::0;:62:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;13775:20;13760:62:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13726:96;;2668:3;13838:23;:46;:77;;;;;13914:1;13888:23;:27;13838:77;13826:183;;;::::0;::::1;::::0;;36856:2:39;13826:183:7::1;::::0;::::1;36838:21:39::0;36895:2;36875:18;;;36868:30;36934:34;36914:18;;;36907:62;37005:34;36985:18;;;36978:62;37077:21;37056:19;;;37049:50;37116:19;;13826:183:7::1;36654:487:39::0;13826:183:7::1;14037:12;14022:11;:27;;14014:86;;;::::0;::::1;::::0;;37348:2:39;14014:86:7::1;::::0;::::1;37330:21:39::0;37387:2;37367:18;;;37360:30;37426:34;37406:18;;;37399:62;37497:16;37477:18;;;37470:44;37531:19;;14014:86:7::1;37146:410:39::0;14014:86:7::1;14149:18;::::0;14187:21:::1;::::0;14132:124:::1;::::0;;25435:66:39;25530:2;25526:15;;;;;14132:124:7::1;::::0;;::::1;25510:37:39::0;;;;25563:12;;;25556:28;;;25618:15;;;;;;;25600:12;;;25593:46;25655:12;;;25648:28;;;25692:13;;;25685:29;;;7118:9:7;25730:13:39;;;;25723:29;;;;14132:124:7;;;;;;;;;;25768:13:39;;;14132:124:7;;;;14122:135;;;::::1;::::0;;;;14284:20:::1;::::0;14269:64;;;;14122:135;14149:18:::1;14284:20:::0;;::::1;::::0;14269:49:::1;::::0;:64:::1;::::0;14122:135;;14328:4;;;;14269:64;;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14261:122;;;::::0;::::1;::::0;;37763:2:39;14261:122:7::1;::::0;::::1;37745:21:39::0;37802:2;37782:18;;;37775:30;37841:34;37821:18;;;37814:62;37912:15;37892:18;;;37885:43;37945:19;;14261:122:7::1;37561:409:39::0;14261:122:7::1;14442:19;14465:25:::0;14499:21:::1;14523:16;14499:40;;14545:27;2554:3;14605:14;;14598:3;14590:29;;;;:::i;:::-;14576:44;::::0;:10;:44:::1;:::i;:::-;14575:66;;;;:::i;:::-;14545:96:::0;-1:-1:-1;14647:29:7::1;2554:3;14703:45;14725:23:::0;14545:96;14703:45:::1;:::i;:::-;14702:67;;;;:::i;:::-;14679:91;::::0;:19;:91:::1;:::i;:::-;14647:123:::0;-1:-1:-1;14834:18:7;14789:41:::1;2554:3;14647:123:::0;14789:41:::1;:::i;:::-;:64;;;;:::i;:::-;14775:78:::0;-1:-1:-1;14907:28:7::1;14961:20;14965:16;14961:2;:20;:::i;:::-;14938:44;::::0;:19;:44:::1;:::i;:::-;14907:75:::0;-1:-1:-1;14987:31:7::1;2554:3;15022:46;15045:23:::0;14907:75;15022:46:::1;:::i;:::-;15021:66;;;;:::i;:::-;14987:100:::0;-1:-1:-1;15159:13:7;15113:41:::1;2554:3;14987:100:::0;15113:41:::1;:::i;:::-;15112:61;;;;:::i;:::-;15258:23;::::0;15214:16:::1;::::0;:41:::1;::::0;;;;15249:4:::1;15214:41;::::0;::::1;6502:74:39::0;15092:81:7;;-1:-1:-1;15258:23:7;;-1:-1:-1;15214:16:7::1;;::::0;-1:-1:-1;15214:26:7::1;::::0;-1:-1:-1;6475:18:39;;;-1:-1:-1;15214:41:7::1;::::0;-1:-1:-1;6356:226:39;15214:41:7::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;;;:::i;:::-;15193:17;:88;;15181:140;;;::::0;::::1;::::0;;19007:2:39;15181:140:7::1;::::0;::::1;18989:21:39::0;19046:2;19026:18;;;19019:30;19085:31;19065:18;;;19058:59;19134:18;;15181:140:7::1;18805:353:39::0;15181:140:7::1;15390:10;15365:36;::::0;;;:24:::1;:36;::::0;;;;;:56:::1;::::0;15404:17;;15365:56:::1;:::i;:::-;15351:10;15326:36;::::0;;;:24:::1;:36;::::0;;;;:95;15451:23:::1;::::0;:43:::1;::::0;15477:17;;15451:43:::1;:::i;:::-;15425:23;:69:::0;15551:10:::1;15532:30;::::0;;;:18:::1;:30;::::0;;;;;:44:::1;::::0;15565:11;;15532:44:::1;:::i;:::-;15518:10;15499:30;::::0;;;:18:::1;:30;::::0;;;;:77;15600:17:::1;::::0;:31:::1;::::0;15620:11;;15600:31:::1;:::i;:::-;15580:17;:51:::0;15649:10:::1;15636:24;::::0;;;:12:::1;:24;::::0;;;;15663:12:::1;15636:39:::0;;15705:14:::1;::::0;15722:3:::1;::::0;15692:27:::1;::::0;:10;:27:::1;:::i;:::-;:33;;;;:::i;:::-;15680:8;;:45;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;15788:20:7::1;::::0;15773:75:::1;::::0;;;;15825:10:::1;15773:75;::::0;::::1;19337:74:39::0;19427:18;;;19420:34;;;15788:20:7::1;::::0;;::::1;::::0;15773:51:::1;::::0;19310:18:39;;15773:75:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;15863:21:7::1;::::0;;15852:71:::1;::::0;;;;15904:4:::1;15852:71:::0;;::::1;19337:74:39::0;;;;19427:18;;;19420:34;;;15863:21:7::1;;::::0;-1:-1:-1;15852:43:7::1;::::0;-1:-1:-1;19310:18:39;;15852:71:7::1;19163:297:39::0;4866:141:38;4936:4;4959:41;4964:3;4976:23;4984:14;;;;4976:23;4959:4;:41::i;559:357:32:-;752:45;;;741:10;19355:55:39;;;752:45:32;;;19337:74:39;19427:18;;;;19420:34;;;752:45:32;;;;;;;;;;19310:18:39;;;;752:45:32;;;;;;;;;;;;;741:57;;-1:-1:-1;;;;741:10:32;;;;:57;;752:45;741:57;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;705:93;;;;816:7;:57;;;;-1:-1:-1;828:11:32;;:16;;:44;;;859:4;848:24;;;;;;;;;;;;:::i;:::-;808:101;;;;;;;38456:2:39;808:101:32;;;38438:21:39;38495:2;38475:18;;;38468:30;38534:33;38514:18;;;38507:61;38585:18;;808:101:32;38254:355:39;808:101:32;629:287;;559:357;;;:::o;7090:184:20:-;7163:6;:12;;;;;;;;;;:33;;7188:7;7163:24;:33::i;:::-;7159:109;;;7217:40;;686:10:4;;7217:40:20;;;;7229:4;;7217:40;;;;;7090:184;;:::o;922:398:32:-;1145:51;;;1134:10;38895:15:39;;;1145:51:32;;;38877:34:39;38947:15;;;38927:18;;;38920:43;38979:18;;;;38972:34;;;1145:51:32;;;;;;;;;;38789:18:39;;;;1145:51:32;;;;;;;;;;;;;1134:63;;-1:-1:-1;;;;1134:10:32;;;;:63;;1145:51;1134:63;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1098:99;;;;1215:7;:57;;;;-1:-1:-1;1227:11:32;;:16;;:44;;;1258:4;1247:24;;;;;;;;;;;;:::i;:::-;1207:106;;;;;;;39219:2:39;1207:106:32;;;39201:21:39;39258:2;39238:18;;;39231:30;39297:34;39277:18;;;39270:62;39368:6;39348:18;;;39341:34;39392:19;;1207:106:32;39017:400:39;1207:106:32;1010:310;;922:398;;;;:::o;7280:188:20:-;7354:6;:12;;;;;;;;;;:36;;7382:7;7354:27;:36::i;:::-;7350:112;;;7411:40;;686:10:4;;7411:40:20;;;;7423:4;;7411:40;;;;;7280:188;;:::o;6087:147:38:-;6161:7;6203:22;6207:3;6219:5;6203:3;:22::i;:::-;6187:40;;;6087:147;-1:-1:-1;;;6087:147:38:o;5403:156::-;5536:14;;;;5528:23;;5483:4;3874:19;;;:12;;;:19;;;;;;:24;;5506:46;3778:127;5640:115;5703:7;5729:19;5737:3;4068:18;;3986:107;1613:404;1676:4;3874:19;;;:12;;;:19;;;;;;1692:319;;-1:-1:-1;1734:23:38;;;;;;;;:11;:23;;;;;;;;;;;;;1914:18;;1892:19;;;:12;;;:19;;;;;;:40;;;;1946:11;;1692:319;-1:-1:-1;1995:5:38;1988:12;;5175:147;5248:4;5271:44;5279:3;5291:23;5299:14;;;;5291:23;5271:7;:44::i;4425:201::-;4519:18;;4492:7;;4519:26;-1:-1:-1;4511:73:38;;;;;;;39624:2:39;4511:73:38;;;39606:21:39;39663:2;39643:18;;;39636:30;39702:34;39682:18;;;39675:62;39773:4;39753:18;;;39746:32;39795:19;;4511:73:38;39422:398:39;4511:73:38;4601:3;:11;;4613:5;4601:18;;;;;;;;:::i;:::-;;;;;;;;;4594:25;;4425:201;;;;:::o;2185:1512::-;2251:4;2388:19;;;:12;;;:19;;;;;;2422:15;;2418:1273;;2779:21;2803:14;2816:1;2803:10;:14;:::i;:::-;2851:18;;2779:38;;-1:-1:-1;2831:17:38;;2851:22;;2872:1;;2851:22;:::i;:::-;2831:42;;3113:17;3133:3;:11;;3145:9;3133:22;;;;;;;;:::i;:::-;;;;;;;;;3113:42;;3276:9;3247:3;:11;;3259:13;3247:26;;;;;;;;:::i;:::-;;;;;;;;;;:38;3377:17;:13;3393:1;3377:17;:::i;:::-;3351:23;;;;:12;;;:23;;;;;:43;3500:17;;3351:3;;3500:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3592:3;:12;;:19;3605:5;3592:19;;;;;;;;;;;3585:26;;;3633:4;3626:11;;;;;;;;2418:1273;3675:5;3668:12;;;;;14:196:39;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:186::-;274:6;327:2;315:9;306:7;302:23;298:32;295:52;;;343:1;340;333:12;295:52;366:29;385:9;366:29;:::i;588:180::-;647:6;700:2;688:9;679:7;675:23;671:32;668:52;;;716:1;713;706:12;668:52;-1:-1:-1;739:23:39;;588:180;-1:-1:-1;588:180:39:o;955:374::-;1025:8;1035:6;1089:3;1082:4;1074:6;1070:17;1066:27;1056:55;;1107:1;1104;1097:12;1056:55;-1:-1:-1;1130:20:39;;1173:18;1162:30;;1159:50;;;1205:1;1202;1195:12;1159:50;1242:4;1234:6;1230:17;1218:29;;1302:3;1295:4;1285:6;1282:1;1278:14;1270:6;1266:27;1262:38;1259:47;1256:67;;;1319:1;1316;1309:12;1256:67;955:374;;;;;:::o;1334:660::-;1458:6;1466;1474;1482;1490;1543:3;1531:9;1522:7;1518:23;1514:33;1511:53;;;1560:1;1557;1550:12;1511:53;1596:9;1583:23;1573:33;;1653:2;1642:9;1638:18;1625:32;1615:42;;1704:2;1693:9;1689:18;1676:32;1666:42;;1759:2;1748:9;1744:18;1731:32;1786:18;1778:6;1775:30;1772:50;;;1818:1;1815;1808:12;1772:50;1857:77;1926:7;1917:6;1906:9;1902:22;1857:77;:::i;:::-;1334:660;;;;-1:-1:-1;1334:660:39;;-1:-1:-1;1953:8:39;;1831:103;1334:660;-1:-1:-1;;;1334:660:39:o;1999:254::-;2067:6;2075;2128:2;2116:9;2107:7;2103:23;2099:32;2096:52;;;2144:1;2141;2134:12;2096:52;2180:9;2167:23;2157:33;;2209:38;2243:2;2232:9;2228:18;2209:38;:::i;:::-;2199:48;;1999:254;;;;;:::o;2258:184::-;2310:77;2307:1;2300:88;2407:4;2404:1;2397:15;2431:4;2428:1;2421:15;2447:253;2519:2;2513:9;2561:4;2549:17;;2596:18;2581:34;;2617:22;;;2578:62;2575:88;;;2643:18;;:::i;:::-;2679:2;2672:22;2447:253;:::o;2705:334::-;2776:2;2770:9;2832:2;2822:13;;2837:66;2818:86;2806:99;;2935:18;2920:34;;2956:22;;;2917:62;2914:88;;;2982:18;;:::i;:::-;3018:2;3011:22;2705:334;;-1:-1:-1;2705:334:39:o;3044:183::-;3104:4;3137:18;3129:6;3126:30;3123:56;;;3159:18;;:::i;:::-;-1:-1:-1;3204:1:39;3200:14;3216:4;3196:25;;3044:183::o;3232:662::-;3286:5;3339:3;3332:4;3324:6;3320:17;3316:27;3306:55;;3357:1;3354;3347:12;3306:55;3393:6;3380:20;3419:4;3443:60;3459:43;3499:2;3459:43;:::i;:::-;3443:60;:::i;:::-;3537:15;;;3623:1;3619:10;;;;3607:23;;3603:32;;;3568:12;;;;3647:15;;;3644:35;;;3675:1;3672;3665:12;3644:35;3711:2;3703:6;3699:15;3723:142;3739:6;3734:3;3731:15;3723:142;;;3805:17;;3793:30;;3843:12;;;;3756;;3723:142;;;-1:-1:-1;3883:5:39;3232:662;-1:-1:-1;;;;;;3232:662:39:o;3899:348::-;3983:6;4036:2;4024:9;4015:7;4011:23;4007:32;4004:52;;;4052:1;4049;4042:12;4004:52;4092:9;4079:23;4125:18;4117:6;4114:30;4111:50;;;4157:1;4154;4147:12;4111:50;4180:61;4233:7;4224:6;4213:9;4209:22;4180:61;:::i;:::-;4170:71;3899:348;-1:-1:-1;;;;3899:348:39:o;4252:592::-;4365:6;4373;4381;4389;4397;4405;4413;4466:3;4454:9;4445:7;4441:23;4437:33;4434:53;;;4483:1;4480;4473:12;4434:53;-1:-1:-1;;4506:23:39;;;4576:2;4561:18;;4548:32;;-1:-1:-1;4627:2:39;4612:18;;4599:32;;4678:2;4663:18;;4650:32;;-1:-1:-1;4729:3:39;4714:19;;4701:33;;-1:-1:-1;4781:3:39;4766:19;;4753:33;;-1:-1:-1;4833:3:39;4818:19;4805:33;;-1:-1:-1;4252:592:39;-1:-1:-1;4252:592:39:o;4849:798::-;4991:6;4999;5007;5015;5023;5031;5039;5092:3;5080:9;5071:7;5067:23;5063:33;5060:53;;;5109:1;5106;5099:12;5060:53;5145:9;5132:23;5122:33;;5202:2;5191:9;5187:18;5174:32;5164:42;;5253:2;5242:9;5238:18;5225:32;5215:42;;5304:2;5293:9;5289:18;5276:32;5266:42;;5355:3;5344:9;5340:19;5327:33;5317:43;;5411:3;5400:9;5396:19;5383:33;5439:18;5431:6;5428:30;5425:50;;;5471:1;5468;5461:12;5425:50;5510:77;5579:7;5570:6;5559:9;5555:22;5510:77;:::i;:::-;4849:798;;;;-1:-1:-1;4849:798:39;;-1:-1:-1;4849:798:39;;;;5484:103;;-1:-1:-1;;;4849:798:39:o;6103:248::-;6171:6;6179;6232:2;6220:9;6211:7;6207:23;6203:32;6200:52;;;6248:1;6245;6238:12;6200:52;-1:-1:-1;;6271:23:39;;;6341:2;6326:18;;;6313:32;;-1:-1:-1;6103:248:39:o;6587:1598::-;6639:5;6669:4;6713:3;6708:2;6700:6;6696:15;6692:25;6682:53;;6731:1;6728;6721:12;6682:53;6767:6;6754:20;6793:4;6817:60;6833:43;6873:2;6833:43;:::i;6817:60::-;6911:15;;;6997:1;6993:10;;;;6981:23;;6977:32;;;6942:12;;;;7021:15;;;7018:35;;;7049:1;7046;7039:12;7018:35;7085:2;7077:6;7073:15;7097:1059;7113:6;7108:3;7105:15;7097:1059;;;7199:3;7186:17;7226:18;7276:2;7263:11;7260:19;7257:109;;;7320:1;7349:2;7345;7338:14;7257:109;7401:11;7393:6;7389:24;7379:34;;7453:3;7448:2;7444;7440:11;7436:21;7426:119;;7499:1;7528:2;7524;7517:14;7426:119;7589:2;7585;7581:11;7568:25;7616:2;7641;7637;7634:10;7631:36;;;7647:18;;:::i;:::-;7695:110;7801:2;7732:66;7727:2;7723;7719:11;7715:84;7711:93;7695:110;:::i;:::-;7680:125;;7834:2;7825:7;7818:19;7878:3;7873:2;7868;7864;7860:11;7856:20;7853:29;7850:122;;;7924:1;7954:3;7949;7942:16;7850:122;8029:2;8024;8020;8016:11;8011:2;8002:7;7998:16;7985:47;-1:-1:-1;8079:1:39;8056:16;;;8052:25;;8045:36;8094:20;;-1:-1:-1;8134:12:39;;;;7130;;7097:1059;;;-1:-1:-1;8174:5:39;6587:1598;-1:-1:-1;;;;;;;6587:1598:39:o;8190:1049::-;8285:6;8338:2;8326:9;8317:7;8313:23;8309:32;8306:52;;;8354:1;8351;8344:12;8306:52;8394:9;8381:23;8423:18;8464:2;8456:6;8453:14;8450:34;;;8480:1;8477;8470:12;8450:34;8503:22;;;;8559:4;8541:16;;;8537:27;8534:47;;;8577:1;8574;8567:12;8534:47;8603:22;;:::i;:::-;8661:2;8648:16;8641:5;8634:31;8718:2;8714;8710:11;8697:25;8692:2;8685:5;8681:14;8674:49;8769:2;8765;8761:11;8748:25;8798:2;8788:8;8785:16;8782:36;;;8814:1;8811;8804:12;8782:36;8850:56;8898:7;8887:8;8883:2;8879:17;8850:56;:::i;:::-;8845:2;8838:5;8834:14;8827:80;;8960:2;8956;8952:11;8939:25;8934:2;8927:5;8923:14;8916:49;9019:3;9015:2;9011:12;8998:26;8992:3;8985:5;8981:15;8974:51;9071:3;9067:2;9063:12;9050:26;9101:2;9091:8;9088:16;9085:36;;;9117:1;9114;9107:12;9085:36;9154:54;9200:7;9189:8;9185:2;9181:17;9154:54;:::i;:::-;9148:3;9137:15;;9130:79;-1:-1:-1;9141:5:39;8190:1049;-1:-1:-1;;;;;8190:1049:39:o;9429:908::-;9587:6;9595;9603;9611;9619;9627;9680:3;9668:9;9659:7;9655:23;9651:33;9648:53;;;9697:1;9694;9687:12;9648:53;9733:9;9720:23;9710:33;;9794:2;9783:9;9779:18;9766:32;9817:18;9858:2;9850:6;9847:14;9844:34;;;9874:1;9871;9864:12;9844:34;9897:61;9950:7;9941:6;9930:9;9926:22;9897:61;:::i;:::-;9887:71;;10005:2;9994:9;9990:18;9977:32;9967:42;;10056:2;10045:9;10041:18;10028:32;10018:42;;10113:3;10102:9;10098:19;10085:33;10069:49;;10143:2;10133:8;10130:16;10127:36;;;10159:1;10156;10149:12;10127:36;;10198:79;10269:7;10258:8;10247:9;10243:24;10198:79;:::i;:::-;9429:908;;;;-1:-1:-1;9429:908:39;;-1:-1:-1;9429:908:39;;10296:8;;9429:908;-1:-1:-1;;;9429:908:39:o;10342:328::-;10419:6;10427;10435;10488:2;10476:9;10467:7;10463:23;10459:32;10456:52;;;10504:1;10501;10494:12;10456:52;10527:29;10546:9;10527:29;:::i;:::-;10517:39;;10603:2;10592:9;10588:18;10575:32;10565:42;;10626:38;10660:2;10649:9;10645:18;10626:38;:::i;:::-;10616:48;;10342:328;;;;;:::o;10675:729::-;10808:6;10816;10824;10832;10840;10848;10901:3;10889:9;10880:7;10876:23;10872:33;10869:53;;;10918:1;10915;10908:12;10869:53;10954:9;10941:23;10931:33;;11011:2;11000:9;10996:18;10983:32;10973:42;;11062:2;11051:9;11047:18;11034:32;11024:42;;11113:2;11102:9;11098:18;11085:32;11075:42;;11168:3;11157:9;11153:19;11140:33;11196:18;11188:6;11185:30;11182:50;;;11228:1;11225;11218:12;11182:50;11267:77;11336:7;11327:6;11316:9;11312:22;11267:77;:::i;11409:184::-;11461:77;11458:1;11451:88;11558:4;11555:1;11548:15;11582:4;11579:1;11572:15;11598:128;11638:3;11669:1;11665:6;11662:1;11659:13;11656:39;;;11675:18;;:::i;:::-;-1:-1:-1;11711:9:39;;11598:128::o;12231:125::-;12271:4;12299:1;12296;12293:8;12290:34;;;12304:18;;:::i;:::-;-1:-1:-1;12341:9:39;;12231:125::o;12715:184::-;12785:6;12838:2;12826:9;12817:7;12813:23;12809:32;12806:52;;;12854:1;12851;12844:12;12806:52;-1:-1:-1;12877:16:39;;12715:184;-1:-1:-1;12715:184:39:o;14143:325::-;14231:6;14226:3;14219:19;14283:6;14276:5;14269:4;14264:3;14260:14;14247:43;;14335:1;14328:4;14319:6;14314:3;14310:16;14306:27;14299:38;14201:3;14457:4;14387:66;14382:2;14374:6;14370:15;14366:88;14361:3;14357:98;14353:109;14346:116;;14143:325;;;;:::o;14473:1379::-;14673:4;14721:2;14710:9;14706:18;14751:6;14740:9;14733:25;14777:2;14815;14810;14799:9;14795:18;14788:30;14838:6;14868;14860;14853:22;14906:2;14895:9;14891:18;14884:25;;14968:2;14958:6;14955:1;14951:14;14940:9;14936:30;14932:39;14918:53;;14994:6;15018:1;15028:795;15042:6;15039:1;15036:13;15028:795;;;15131:66;15119:9;15111:6;15107:22;15103:95;15098:3;15091:108;15251:6;15238:20;15338:66;15329:6;15313:14;15309:27;15305:100;15285:18;15281:125;15271:153;;15420:1;15417;15410:12;15271:153;15450:31;;15508:19;;15554:18;15543:30;;15540:50;;;15586:1;15583;15576:12;15540:50;15638:6;15622:14;15618:27;15610:6;15606:40;15603:60;;;15659:1;15656;15649:12;15603:60;15686:57;15736:6;15728;15723:2;15716:5;15712:14;15686:57;:::i;:::-;15676:67;-1:-1:-1;;;15801:12:39;;;;15766:15;;;;15064:1;15057:9;15028:795;;;-1:-1:-1;15840:6:39;;14473:1379;-1:-1:-1;;;;;;;;14473:1379:39:o;15857:277::-;15924:6;15977:2;15965:9;15956:7;15952:23;15948:32;15945:52;;;15993:1;15990;15983:12;15945:52;16025:9;16019:16;16078:5;16071:13;16064:21;16057:5;16054:32;16044:60;;16100:1;16097;16090:12;16044:60;16123:5;15857:277;-1:-1:-1;;;15857:277:39:o;16546:482::-;16635:1;16678:5;16635:1;16692:330;16713:7;16703:8;16700:21;16692:330;;;16832:4;16764:66;16760:77;16754:4;16751:87;16748:113;;;16841:18;;:::i;:::-;16891:7;16881:8;16877:22;16874:55;;;16911:16;;;;16874:55;16990:22;;;;16950:15;;;;16692:330;;;16696:3;16546:482;;;;;:::o;17033:866::-;17082:5;17112:8;17102:80;;-1:-1:-1;17153:1:39;17167:5;;17102:80;17201:4;17191:76;;-1:-1:-1;17238:1:39;17252:5;;17191:76;17283:4;17301:1;17296:59;;;;17369:1;17364:130;;;;17276:218;;17296:59;17326:1;17317:10;;17340:5;;;17364:130;17401:3;17391:8;17388:17;17385:43;;;17408:18;;:::i;:::-;-1:-1:-1;;17464:1:39;17450:16;;17479:5;;17276:218;;17578:2;17568:8;17565:16;17559:3;17553:4;17550:13;17546:36;17540:2;17530:8;17527:16;17522:2;17516:4;17513:12;17509:35;17506:77;17503:159;;;-1:-1:-1;17615:19:39;;;17647:5;;17503:159;17694:34;17719:8;17713:4;17694:34;:::i;:::-;17824:6;17756:66;17752:79;17743:7;17740:92;17737:118;;;17835:18;;:::i;:::-;17873:20;;17033:866;-1:-1:-1;;;17033:866:39:o;17904:131::-;17964:5;17993:36;18020:8;18014:4;17993:36;:::i;18040:274::-;18080:1;18106;18096:189;;18141:77;18138:1;18131:88;18242:4;18239:1;18232:15;18270:4;18267:1;18260:15;18096:189;-1:-1:-1;18299:9:39;;18040:274::o;18572:228::-;18612:7;18738:1;18670:66;18666:74;18663:1;18660:81;18655:1;18648:9;18641:17;18637:105;18634:131;;;18745:18;;:::i;:::-;-1:-1:-1;18785:9:39;;18572:228::o;22180:632::-;22351:2;22403:21;;;22473:13;;22376:18;;;22495:22;;;22322:4;;22351:2;22574:15;;;;22548:2;22533:18;;;22322:4;22617:169;22631:6;22628:1;22625:13;22617:169;;;22692:13;;22680:26;;22761:15;;;;22726:12;;;;22653:1;22646:9;22617:169;;;-1:-1:-1;22803:3:39;;22180:632;-1:-1:-1;;;;;;22180:632:39:o;26475:265::-;26283:12;;26271:25;;26345:4;26334:16;;;26328:23;26312:14;;;26305:47;26401:4;26390:16;;;26384:23;26368:14;;;26361:47;26457:4;26446:16;;;26440:23;26424:14;;;26417:47;26671:3;26656:19;;26684:50;26204:266;26745:245;26824:6;26832;26885:2;26873:9;26864:7;26860:23;26856:32;26853:52;;;26901:1;26898;26891:12;26853:52;-1:-1:-1;;26924:16:39;;26980:2;26965:18;;;26959:25;26924:16;;26959:25;;-1:-1:-1;26745:245:39:o;28831:1000::-;29132:3;29160:66;29268:2;29259:6;29255:2;29251:15;29247:24;29242:3;29235:37;29303:2;29298:3;29294:12;29335:6;29329:13;29384:4;29423:2;29415:6;29411:15;29444:1;29454:175;29468:6;29465:1;29462:13;29454:175;;;29531:13;;29517:28;;29567:14;;;;29604:15;;;;29490:1;29483:9;29454:175;;;-1:-1:-1;;;;29660:2:39;29656:15;;;;29652:24;29638:39;;-1:-1:-1;;29704:2:39;29693:14;;29686:30;;;;29743:2;29732:14;;29725:30;29782:2;29771:14;;29764:30;29821:3;29810:15;;28831:1000;-1:-1:-1;;28831:1000:39:o;29836:258::-;29908:1;29918:113;29932:6;29929:1;29926:13;29918:113;;;30008:11;;;30002:18;29989:11;;;29982:39;29954:2;29947:10;29918:113;;;30049:6;30046:1;30043:13;30040:48;;;-1:-1:-1;;30084:1:39;30066:16;;30059:27;29836:258::o;30099:1188::-;30287:4;30335:2;30324:9;30320:18;30365:6;30354:9;30347:25;30391:2;30429;30424;30413:9;30409:18;30402:30;30452:6;30487;30481:13;30518:6;30510;30503:22;30556:2;30545:9;30541:18;30534:25;;30618:2;30608:6;30605:1;30601:14;30590:9;30586:30;30582:39;30568:53;;30656:2;30648:6;30644:15;30677:1;30687:571;30701:6;30698:1;30695:13;30687:571;;;30790:66;30778:9;30770:6;30766:22;30762:95;30757:3;30750:108;30887:6;30881:13;30929:2;30923:9;30960:8;30952:6;30945:24;30982:61;31034:8;31029:2;31021:6;31017:15;31012:2;31008;31004:11;30982:61;:::i;:::-;31100:2;31086:17;31105:66;31082:90;31070:103;;;;31066:112;;;-1:-1:-1;31236:12:39;;;;31201:15;;;;30723:1;30716:9;30687:571;;;-1:-1:-1;31275:6:39;;30099:1188;-1:-1:-1;;;;;;;;30099:1188:39:o;31705:184::-;31757:77;31754:1;31747:88;31854:4;31851:1;31844:15;31878:4;31875:1;31868:15;37975:274;38104:3;38142:6;38136:13;38158:53;38204:6;38199:3;38192:4;38184:6;38180:17;38158:53;:::i;:::-;38227:16;;;;;37975:274;-1:-1:-1;;37975:274:39:o;39825:184::-;39877:77;39874:1;39867:88;39974:4;39971:1;39964:15;39998:4;39995:1;39988:15" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "4799000", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "DAO_SHARE_COLLECTOR()": "273", + "DEFAULT_ADMIN_ROLE()": "251", + "PARAMETER_SETTER_ROLE()": "274", + "TRUSTY_ROLE()": "297", + "availableExcessCollatDV(uint256[])": "infinite", + "bonus_rate()": "2397", + "buyBackDEUS(uint256,uint256[],uint256,uint256,bytes[])": "infinite", + "buyBackPaused()": "2389", + "buyback_fee()": "2376", + "collatDollarBalance(uint256)": "infinite", + "collectDaoShare(uint256,address)": "infinite", + "collectRedemption()": "infinite", + "daoShare()": "2374", + "emergencyWithdrawERC20(address,uint256,address)": "infinite", + "getChainID()": "248", + "getRoleAdmin(bytes32)": "2527", + "getRoleMember(bytes32,uint256)": "7024", + "getRoleMemberCount(bytes32)": "infinite", + "grantRole(bytes32,address)": "infinite", + "hasRole(bytes32,address)": "infinite", + "lastRedeemed(address)": "2589", + "mint1t1DEI(uint256,uint256,uint256,bytes[])": "infinite", + "mintAlgorithmicDEI(uint256,uint256,uint256,bytes[])": "infinite", + "mintFractionalDEI(uint256,uint256,uint256,uint256,uint256,bytes[])": "infinite", + "mintPaused()": "2434", + "minting_fee()": "2374", + "pausedPrice()": "2373", + "pool_ceiling()": "2396", + "recollat_fee()": "2394", + "recollateralizeDEI((uint256,uint256,uint256[],uint256,uint256,bytes[]))": "infinite", + "recollateralizePaused()": "2388", + "redeem1t1DEI(uint256,uint256,uint256,bytes[])": "infinite", + "redeemAlgorithmicDEI(uint256,uint256,uint256,bytes[])": "infinite", + "redeemCollateralBalances(address)": "2570", + "redeemDEUSBalances(address)": "2612", + "redeemFractionalDEI(uint256,uint256,uint256,uint256,bytes[])": "infinite", + "redeemPaused()": "2432", + "redemption_delay()": "2353", + "redemption_fee()": "2351", + "renounceRole(bytes32,address)": "infinite", + "revokeRole(bytes32,address)": "infinite", + "setPoolParameters(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": "infinite", + "toggleBuyBack()": "infinite", + "toggleMinting()": "infinite", + "toggleRecollateralize()": "infinite", + "toggleRedeeming()": "infinite", + "unclaimedPoolCollateral()": "2353", + "unclaimedPoolDEUS()": "2352" + } + }, + "methodIdentifiers": { + "DAO_SHARE_COLLECTOR()": "6d82e314", + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "PARAMETER_SETTER_ROLE()": "5de207cc", + "TRUSTY_ROLE()": "34ddb95d", + "availableExcessCollatDV(uint256[])": "40e14b78", + "bonus_rate()": "4c634934", + "buyBackDEUS(uint256,uint256[],uint256,uint256,bytes[])": "c410ca1b", + "buyBackPaused()": "7f877f85", + "buyback_fee()": "101197c7", + "collatDollarBalance(uint256)": "b6258aaa", + "collectDaoShare(uint256,address)": "7901330b", + "collectRedemption()": "12ace5a2", + "daoShare()": "88d19f1b", + "emergencyWithdrawERC20(address,uint256,address)": "e3d84d5e", + "getChainID()": "564b81ef", + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "lastRedeemed(address)": "abae2c4c", + "mint1t1DEI(uint256,uint256,uint256,bytes[])": "32ad1ee4", + "mintAlgorithmicDEI(uint256,uint256,uint256,bytes[])": "c6301e5d", + "mintFractionalDEI(uint256,uint256,uint256,uint256,uint256,bytes[])": "54f9769d", + "mintPaused()": "7e4831d3", + "minting_fee()": "c3355b8d", + "pausedPrice()": "c74ec56a", + "pool_ceiling()": "6526a12a", + "recollat_fee()": "fede5c9c", + "recollateralizeDEI((uint256,uint256,uint256[],uint256,uint256,bytes[]))": "928d2b31", + "recollateralizePaused()": "6d2c5615", + "redeem1t1DEI(uint256,uint256,uint256,bytes[])": "254cd2bd", + "redeemAlgorithmicDEI(uint256,uint256,uint256,bytes[])": "978b73b5", + "redeemCollateralBalances(address)": "08a7493d", + "redeemDEUSBalances(address)": "3b92da47", + "redeemFractionalDEI(uint256,uint256,uint256,uint256,bytes[])": "eb2d7461", + "redeemPaused()": "b235d468", + "redemption_delay()": "15128425", + "redemption_fee()": "cb73999f", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "setPoolParameters(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": "4ebbe762", + "toggleBuyBack()": "50c9ecd9", + "toggleMinting()": "7d55094d", + "toggleRecollateralize()": "42d15aec", + "toggleRedeeming()": "daa50485", + "unclaimedPoolCollateral()": "7b0461e9", + "unclaimedPoolDEUS()": "3648b7dc" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dei_contract_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_deus_contract_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_collateral_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_trusty_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_admin_address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pool_ceiling\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_library\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"toggled\",\"type\":\"bool\"}],\"name\":\"BuybackToggled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"toggled\",\"type\":\"bool\"}],\"name\":\"MintingToggled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_ceiling\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_bonus_rate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_redemption_delay\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_mint_fee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_redeem_fee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_buyback_fee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_recollat_fee\",\"type\":\"uint256\"}],\"name\":\"PoolParametersSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"toggled\",\"type\":\"bool\"}],\"name\":\"RecollateralizeToggled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"toggled\",\"type\":\"bool\"}],\"name\":\"RedeemingToggled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"daoShare\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"daoShareCollected\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DAO_SHARE_COLLECTOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PARAMETER_SETTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRUSTY_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"collat_usd_price\",\"type\":\"uint256[]\"}],\"name\":\"availableExcessCollatDV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bonus_rate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"DEUS_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"collateral_price\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"buyBackDEUS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"buyBackPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"buyback_fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"collat_usd_price\",\"type\":\"uint256\"}],\"name\":\"collatDollarBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"collectDaoShare\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectRedemption\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"daoShare\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"emergencyWithdrawERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"lastRedeemed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"collateral_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateral_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"mint1t1DEI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dei_amount_d18\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deus_amount_d18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"mintAlgorithmicDEI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dei_amount_d18\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"collateral_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deus_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateral_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"mintFractionalDEI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"mint_amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minting_fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pausedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pool_ceiling\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recollat_fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"collateral_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pool_collateral_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"collateral_price\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"internalType\":\"struct DEIPool.RecollateralizeDEI\",\"name\":\"inputs\",\"type\":\"tuple\"}],\"name\":\"recollateralizeDEI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recollateralizePaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"DEI_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateral_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"redeem1t1DEI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"DEI_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"redeemAlgorithmicDEI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"redeemCollateralBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"redeemDEUSBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"DEI_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateral_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"redeemFractionalDEI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeemPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redemption_delay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redemption_fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"new_ceiling\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_bonus_rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_redemption_delay\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_mint_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_redeem_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_buyback_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_recollat_fee\",\"type\":\"uint256\"}],\"name\":\"setPoolParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleBuyBack\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleMinting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleRecollateralize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleRedeeming\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unclaimedPoolCollateral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unclaimedPoolDEUS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/DEI/Pools/DEIPool.sol\":\"DEIPool\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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 payable(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}\",\"keccak256\":\"0x60d51a32063a4975dbf9433d38f5849173527da72f007c38053274e06698cb54\",\"license\":\"MIT\"},\"contracts/DEI/IDEI.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\n\\ninterface IDEIStablecoin {\\n function name() external view returns (string memory);\\n function symbol() external view returns (string memory);\\n function totalSupply() external view returns (uint256);\\n function global_collateral_ratio() external view returns (uint256);\\n function dei_pools(address _address) external view returns (bool);\\n function dei_pools_array() external view returns (address[] memory);\\n function verify_price(bytes32 sighash, bytes[] calldata sigs) external view returns (bool);\\n function dei_info(uint256[] memory collat_usd_price) external view returns (uint256, uint256, uint256);\\n function getChainID() external view returns (uint256);\\n function globalCollateralValue(uint256[] memory collat_usd_price) external view returns (uint256);\\n function refreshCollateralRatio(uint deus_price, uint dei_price, uint256 expire_block, bytes[] calldata sigs) external;\\n function useGrowthRatio(bool _use_growth_ratio) external;\\n function setGrowthRatioBands(uint256 _GR_top_band, uint256 _GR_bottom_band) external;\\n function setPriceBands(uint256 _top_band, uint256 _bottom_band) external;\\n function activateDIP(bool _activate) external;\\n function pool_burn_from(address b_address, uint256 b_amount) external;\\n function pool_mint(address m_address, uint256 m_amount) external;\\n function addPool(address pool_address) external;\\n function removePool(address pool_address) external;\\n function setNameAndSymbol(string memory _name, string memory _symbol) external;\\n function setOracle(address _oracle) external;\\n function setDEIStep(uint256 _new_step) external;\\n function setReserveTracker(address _reserve_tracker_address) external;\\n function setRefreshCooldown(uint256 _new_cooldown) external;\\n function setDEUSAddress(address _deus_address) external;\\n function toggleCollateralRatio() external;\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x0c16e210870801fd11bac76f0cddbe1f61b19f18eb75a648144da3cba5f5f035\",\"license\":\"GPL-2.0-or-later\"},\"contracts/DEI/Pools/DEIPool.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity ^0.8.0;\\npragma abicoder v2;\\n// =================================================================================================================\\n// _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| |\\n// _| _| _| _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| |\\n// _| _| _|_|_| _| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_|_|_| |\\n// _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| |\\n// _|_|_| _|_|_|_| _|_| _|_|_| _| _| _| _| _|_|_| _| _| _|_|_| _|_|_| |\\n// =================================================================================================================\\n// ============================= DEIPool =============================\\n// ====================================================================\\n// DEUS Finance: https://github.com/DeusFinance\\n\\n// Primary Author(s)\\n// Travis Moore: https://github.com/FortisFortuna\\n// Jason Huan: https://github.com/jasonhuan\\n// Sam Kazemian: https://github.com/samkazemian\\n// Vahid Gh: https://github.com/vahid-dev\\n// SAYaghoubnejad: https://github.com/SAYaghoubnejad\\n\\n// Reviewer(s) / Contributor(s)\\n// Sam Sun: https://github.com/samczsun\\n\\nimport \\\"../../Uniswap/TransferHelper.sol\\\";\\nimport \\\"../../DEUS/IDEUS.sol\\\";\\nimport \\\"../../DEI/IDEI.sol\\\";\\nimport \\\"../../ERC20/ERC20.sol\\\";\\nimport \\\"../../Governance/AccessControl.sol\\\";\\nimport \\\"./DEIPoolLibrary.sol\\\";\\n\\ncontract DEIPool is AccessControl {\\n\\n\\tstruct RecollateralizeDEI {\\n\\t\\tuint256 collateral_amount;\\n\\t\\tuint256 pool_collateral_price;\\n\\t\\tuint256[] collateral_price;\\n\\t\\tuint256 deus_current_price;\\n\\t\\tuint256 expireBlock;\\n\\t\\tbytes[] sigs;\\n\\t}\\n\\n\\t/* ========== STATE VARIABLES ========== */\\n\\n\\tERC20 private collateral_token;\\n\\taddress private collateral_address;\\n\\n\\taddress private dei_contract_address;\\n\\taddress private deus_contract_address;\\n\\n\\tuint256 public minting_fee;\\n\\tuint256 public redemption_fee;\\n\\tuint256 public buyback_fee;\\n\\tuint256 public recollat_fee;\\n\\n\\tmapping(address => uint256) public redeemDEUSBalances;\\n\\tmapping(address => uint256) public redeemCollateralBalances;\\n\\tuint256 public unclaimedPoolCollateral;\\n\\tuint256 public unclaimedPoolDEUS;\\n\\tmapping(address => uint256) public lastRedeemed;\\n\\n\\t// Constants for various precisions\\n\\tuint256 private constant PRICE_PRECISION = 1e6;\\n\\tuint256 private constant COLLATERAL_RATIO_PRECISION = 1e6;\\n\\tuint256 private constant COLLATERAL_RATIO_MAX = 1e6;\\n\\n\\t// Number of decimals needed to get to 18\\n\\tuint256 private immutable missing_decimals;\\n\\n\\t// Pool_ceiling is the total units of collateral that a pool contract can hold\\n\\tuint256 public pool_ceiling = 0;\\n\\n\\t// Stores price of the collateral, if price is paused\\n\\tuint256 public pausedPrice = 0;\\n\\n\\t// Bonus rate on DEUS minted during recollateralizeDEI(); 6 decimals of precision, set to 0.75% on genesis\\n\\tuint256 public bonus_rate = 7500;\\n\\n\\t// Number of blocks to wait before being able to collectRedemption()\\n\\tuint256 public redemption_delay = 2;\\n\\n\\t// Minting/Redeeming fees goes to daoWallet\\n\\tuint256 public daoShare = 0;\\n\\n\\tDEIPoolLibrary poolLibrary;\\n\\n\\t// AccessControl Roles\\n\\tbytes32 private constant MINT_PAUSER = keccak256(\\\"MINT_PAUSER\\\");\\n\\tbytes32 private constant REDEEM_PAUSER = keccak256(\\\"REDEEM_PAUSER\\\");\\n\\tbytes32 private constant BUYBACK_PAUSER = keccak256(\\\"BUYBACK_PAUSER\\\");\\n\\tbytes32 private constant RECOLLATERALIZE_PAUSER = keccak256(\\\"RECOLLATERALIZE_PAUSER\\\");\\n\\tbytes32 public constant TRUSTY_ROLE = keccak256(\\\"TRUSTY_ROLE\\\");\\n\\tbytes32 public constant DAO_SHARE_COLLECTOR = keccak256(\\\"DAO_SHARE_COLLECTOR\\\");\\n\\tbytes32 public constant PARAMETER_SETTER_ROLE = keccak256(\\\"PARAMETER_SETTER_ROLE\\\");\\n\\n\\t// AccessControl state variables\\n\\tbool public mintPaused = false;\\n\\tbool public redeemPaused = false;\\n\\tbool public recollateralizePaused = false;\\n\\tbool public buyBackPaused = false;\\n\\n\\t/* ========== MODIFIERS ========== */\\n\\n\\tmodifier onlyTrusty() {\\n\\t\\trequire(\\n\\t\\t\\thasRole(TRUSTY_ROLE, msg.sender),\\n\\t\\t\\t\\\"POOL::you are not trusty\\\"\\n\\t\\t);\\n\\t\\t_;\\n\\t}\\n\\n\\tmodifier notRedeemPaused() {\\n\\t\\trequire(redeemPaused == false, \\\"POOL::Redeeming is paused\\\");\\n\\t\\t_;\\n\\t}\\n\\n\\tmodifier notMintPaused() {\\n\\t\\trequire(mintPaused == false, \\\"POOL::Minting is paused\\\");\\n\\t\\t_;\\n\\t}\\n\\n\\t/* ========== CONSTRUCTOR ========== */\\n\\n\\tconstructor(\\n\\t\\taddress _dei_contract_address,\\n\\t\\taddress _deus_contract_address,\\n\\t\\taddress _collateral_address,\\n\\t\\taddress _trusty_address,\\n\\t\\taddress _admin_address,\\n\\t\\tuint256 _pool_ceiling,\\n\\t\\taddress _library\\n\\t) {\\n\\t\\trequire(\\n\\t\\t\\t(_dei_contract_address != address(0)) &&\\n\\t\\t\\t\\t(_deus_contract_address != address(0)) &&\\n\\t\\t\\t\\t(_collateral_address != address(0)) &&\\n\\t\\t\\t\\t(_trusty_address != address(0)) &&\\n\\t\\t\\t\\t(_admin_address != address(0)) &&\\n\\t\\t\\t\\t(_library != address(0)),\\n\\t\\t\\t\\\"POOL::Zero address detected\\\"\\n\\t\\t);\\n\\t\\tpoolLibrary = DEIPoolLibrary(_library);\\n\\t\\tdei_contract_address = _dei_contract_address;\\n\\t\\tdeus_contract_address = _deus_contract_address;\\n\\t\\tcollateral_address = _collateral_address;\\n\\t\\tcollateral_token = ERC20(_collateral_address);\\n\\t\\tpool_ceiling = _pool_ceiling;\\n\\t\\tmissing_decimals = uint256(18) - collateral_token.decimals();\\n\\n\\t\\t_setupRole(DEFAULT_ADMIN_ROLE, _admin_address);\\n\\t\\t_setupRole(MINT_PAUSER, _trusty_address);\\n\\t\\t_setupRole(REDEEM_PAUSER, _trusty_address);\\n\\t\\t_setupRole(RECOLLATERALIZE_PAUSER, _trusty_address);\\n\\t\\t_setupRole(BUYBACK_PAUSER, _trusty_address);\\n\\t\\t_setupRole(TRUSTY_ROLE, _trusty_address);\\n\\t\\t_setupRole(PARAMETER_SETTER_ROLE, _trusty_address);\\n\\t}\\n\\n\\t/* ========== VIEWS ========== */\\n\\n\\t// Returns dollar value of collateral held in this DEI pool\\n\\tfunction collatDollarBalance(uint256 collat_usd_price) public view returns (uint256) {\\n\\t\\treturn ((collateral_token.balanceOf(address(this)) - unclaimedPoolCollateral) * (10**missing_decimals) * collat_usd_price) / (PRICE_PRECISION);\\n\\t}\\n\\n\\t// Returns the value of excess collateral held in this DEI pool, compared to what is needed to maintain the global collateral ratio\\n\\tfunction availableExcessCollatDV(uint256[] memory collat_usd_price) public view returns (uint256) {\\n\\t\\tuint256 total_supply = IDEIStablecoin(dei_contract_address).totalSupply();\\n\\t\\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\\n\\t\\tuint256 global_collat_value = IDEIStablecoin(dei_contract_address).globalCollateralValue(collat_usd_price);\\n\\n\\t\\tif (global_collateral_ratio > COLLATERAL_RATIO_PRECISION)\\n\\t\\t\\tglobal_collateral_ratio = COLLATERAL_RATIO_PRECISION; // Handles an overcollateralized contract with CR > 1\\n\\t\\tuint256 required_collat_dollar_value_d18 = (total_supply * global_collateral_ratio) / (COLLATERAL_RATIO_PRECISION); // Calculates collateral needed to back each 1 DEI with $1 of collateral at current collat ratio\\n\\t\\tif (global_collat_value > required_collat_dollar_value_d18)\\n\\t\\t\\treturn global_collat_value - required_collat_dollar_value_d18;\\n\\t\\telse return 0;\\n\\t}\\n\\n\\tfunction getChainID() public view returns (uint256) {\\n\\t\\tuint256 id;\\n\\t\\tassembly {\\n\\t\\t\\tid := chainid()\\n\\t\\t}\\n\\t\\treturn id;\\n\\t}\\n\\n\\t/* ========== PUBLIC FUNCTIONS ========== */\\n\\n\\t// We separate out the 1t1, fractional and algorithmic minting functions for gas efficiency\\n\\tfunction mint1t1DEI(uint256 collateral_amount, uint256 collateral_price, uint256 expireBlock, bytes[] calldata sigs)\\n\\t\\texternal\\n\\t\\tnotMintPaused\\n\\t\\treturns (uint256 dei_amount_d18)\\n\\t{\\n\\n\\t\\trequire(\\n\\t\\t\\tIDEIStablecoin(dei_contract_address).global_collateral_ratio() >= COLLATERAL_RATIO_MAX,\\n\\t\\t\\t\\\"Collateral ratio must be >= 1\\\"\\n\\t\\t);\\n\\t\\trequire(\\n\\t\\t\\tcollateral_token.balanceOf(address(this)) - unclaimedPoolCollateral + collateral_amount <= pool_ceiling,\\n\\t\\t\\t\\\"[Pool's Closed]: Ceiling reached\\\"\\n\\t\\t);\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"POOL::mint1t1DEI: signature is expired\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::mint1t1DEI: invalid signatures\\\");\\n\\n\\t\\tuint256 collateral_amount_d18 = collateral_amount * (10**missing_decimals);\\n\\t\\tdei_amount_d18 = poolLibrary.calcMint1t1DEI(\\n\\t\\t\\tcollateral_price,\\n\\t\\t\\tcollateral_amount_d18\\n\\t\\t); //1 DEI for each $1 worth of collateral\\n\\n\\t\\tdei_amount_d18 = (dei_amount_d18 * (uint256(1e6) - minting_fee)) / 1e6; //remove precision at the end\\n\\n\\t\\tTransferHelper.safeTransferFrom(\\n\\t\\t\\taddress(collateral_token),\\n\\t\\t\\tmsg.sender,\\n\\t\\t\\taddress(this),\\n\\t\\t\\tcollateral_amount\\n\\t\\t);\\n\\n\\t\\tdaoShare += dei_amount_d18 * minting_fee / 1e6;\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_mint(msg.sender, dei_amount_d18);\\n\\t}\\n\\n\\t// 0% collateral-backed\\n\\tfunction mintAlgorithmicDEI(\\n\\t\\tuint256 deus_amount_d18,\\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external notMintPaused returns (uint256 dei_amount_d18) {\\n\\t\\trequire(\\n\\t\\t\\tIDEIStablecoin(dei_contract_address).global_collateral_ratio() == 0,\\n\\t\\t\\t\\\"Collateral ratio must be 0\\\"\\n\\t\\t);\\n\\t\\trequire(expireBlock >= block.number, \\\"POOL::mintAlgorithmicDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(deus_contract_address, deus_current_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::mintAlgorithmicDEI: invalid signatures\\\");\\n\\n\\t\\tdei_amount_d18 = poolLibrary.calcMintAlgorithmicDEI(\\n\\t\\t\\tdeus_current_price, // X DEUS / 1 USD\\n\\t\\t\\tdeus_amount_d18\\n\\t\\t);\\n\\n\\t\\tdei_amount_d18 = (dei_amount_d18 * (uint256(1e6) - (minting_fee))) / (1e6);\\n\\t\\tdaoShare += dei_amount_d18 * minting_fee / 1e6;\\n\\n\\t\\tIDEUSToken(deus_contract_address).pool_burn_from(msg.sender, deus_amount_d18);\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_mint(msg.sender, dei_amount_d18);\\n\\t}\\n\\n\\t// Will fail if fully collateralized or fully algorithmic\\n\\t// > 0% and < 100% collateral-backed\\n\\tfunction mintFractionalDEI(\\n\\t\\tuint256 collateral_amount,\\n\\t\\tuint256 deus_amount,\\n\\t\\tuint256 collateral_price,\\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external notMintPaused returns (uint256 mint_amount) {\\n\\t\\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\\n\\t\\trequire(\\n\\t\\t\\tglobal_collateral_ratio < COLLATERAL_RATIO_MAX && global_collateral_ratio > 0,\\n\\t\\t\\t\\\"Collateral ratio needs to be between .000001 and .999999\\\"\\n\\t\\t);\\n\\t\\trequire(\\n\\t\\t\\tcollateral_token.balanceOf(address(this)) - unclaimedPoolCollateral + collateral_amount <= pool_ceiling,\\n\\t\\t\\t\\\"Pool ceiling reached, no more DEI can be minted with this collateral\\\"\\n\\t\\t);\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"POOL::mintFractionalDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, deus_contract_address, deus_current_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::mintFractionalDEI: invalid signatures\\\");\\n\\n\\t\\tDEIPoolLibrary.MintFD_Params memory input_params;\\n\\n\\t\\t// Blocking is just for solving stack depth problem\\n\\t\\t{\\n\\t\\t\\tuint256 collateral_amount_d18 = collateral_amount * (10**missing_decimals);\\n\\t\\t\\tinput_params = DEIPoolLibrary.MintFD_Params(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_current_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_amount_d18,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tglobal_collateral_ratio\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\t\\t}\\t\\t\\t\\t\\t\\t\\n\\n\\t\\tuint256 deus_needed;\\n\\t\\t(mint_amount, deus_needed) = poolLibrary.calcMintFractionalDEI(input_params);\\n\\t\\trequire(deus_needed <= deus_amount, \\\"Not enough DEUS inputted\\\");\\n\\t\\t\\n\\t\\tmint_amount = (mint_amount * (uint256(1e6) - minting_fee)) / (1e6);\\n\\n\\t\\tIDEUSToken(deus_contract_address).pool_burn_from(msg.sender, deus_needed);\\n\\t\\tTransferHelper.safeTransferFrom(\\n\\t\\t\\taddress(collateral_token),\\n\\t\\t\\tmsg.sender,\\n\\t\\t\\taddress(this),\\n\\t\\t\\tcollateral_amount\\n\\t\\t);\\n\\n\\t\\tdaoShare += mint_amount * minting_fee / 1e6;\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_mint(msg.sender, mint_amount);\\n\\t}\\n\\n\\t// Redeem collateral. 100% collateral-backed\\n\\tfunction redeem1t1DEI(uint256 DEI_amount, uint256 collateral_price, uint256 expireBlock, bytes[] calldata sigs)\\n\\t\\texternal\\n\\t\\tnotRedeemPaused\\n\\t{\\n\\t\\trequire(\\n\\t\\t\\tIDEIStablecoin(dei_contract_address).global_collateral_ratio() == COLLATERAL_RATIO_MAX,\\n\\t\\t\\t\\\"Collateral ratio must be == 1\\\"\\n\\t\\t);\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"POOL::mintAlgorithmicDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::redeem1t1DEI: invalid signatures\\\");\\n\\n\\t\\t// Need to adjust for decimals of collateral\\n\\t\\tuint256 DEI_amount_precision = DEI_amount / (10**missing_decimals);\\n\\t\\tuint256 collateral_needed = poolLibrary.calcRedeem1t1DEI(\\n\\t\\t\\tcollateral_price,\\n\\t\\t\\tDEI_amount_precision\\n\\t\\t);\\n\\n\\t\\tcollateral_needed = (collateral_needed * (uint256(1e6) - redemption_fee)) / (1e6);\\n\\t\\trequire(\\n\\t\\t\\tcollateral_needed <= collateral_token.balanceOf(address(this)) - unclaimedPoolCollateral,\\n\\t\\t\\t\\\"Not enough collateral in pool\\\"\\n\\t\\t);\\n\\n\\t\\tredeemCollateralBalances[msg.sender] = redeemCollateralBalances[msg.sender] + collateral_needed;\\n\\t\\tunclaimedPoolCollateral = unclaimedPoolCollateral + collateral_needed;\\n\\t\\tlastRedeemed[msg.sender] = block.number;\\n\\n\\t\\tdaoShare += DEI_amount * redemption_fee / 1e6;\\n\\t\\t// Move all external functions to the end\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_burn_from(msg.sender, DEI_amount);\\n\\t}\\n\\n\\t// Will fail if fully collateralized or algorithmic\\n\\t// Redeem DEI for collateral and DEUS. > 0% and < 100% collateral-backed\\n\\tfunction redeemFractionalDEI(\\n\\t\\tuint256 DEI_amount,\\n\\t\\tuint256 collateral_price, \\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external notRedeemPaused {\\n\\t\\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\\n\\t\\trequire(\\n\\t\\t\\tglobal_collateral_ratio < COLLATERAL_RATIO_MAX && global_collateral_ratio > 0,\\n\\t\\t\\t\\\"POOL::redeemFractionalDEI: Collateral ratio needs to be between .000001 and .999999\\\"\\n\\t\\t);\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"DEI::redeemFractionalDEI: signature is expired\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, deus_contract_address, deus_current_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::redeemFractionalDEI: invalid signatures\\\");\\n\\n\\t\\t// Blocking is just for solving stack depth problem\\n\\t\\tuint256 deus_amount;\\n\\t\\tuint256 collateral_amount;\\n\\t\\t{\\n\\t\\t\\tuint256 col_price_usd = collateral_price;\\n\\n\\t\\t\\tuint256 DEI_amount_post_fee = (DEI_amount * (uint256(1e6) - redemption_fee)) / (PRICE_PRECISION);\\n\\n\\t\\t\\tuint256 deus_dollar_value_d18 = DEI_amount_post_fee - ((DEI_amount_post_fee * global_collateral_ratio) / (PRICE_PRECISION));\\n\\t\\t\\tdeus_amount = deus_dollar_value_d18 * (PRICE_PRECISION) / (deus_current_price);\\n\\n\\t\\t\\t// Need to adjust for decimals of collateral\\n\\t\\t\\tuint256 DEI_amount_precision = DEI_amount_post_fee / (10**missing_decimals);\\n\\t\\t\\tuint256 collateral_dollar_value = (DEI_amount_precision * global_collateral_ratio) / PRICE_PRECISION;\\n\\t\\t\\tcollateral_amount = (collateral_dollar_value * PRICE_PRECISION) / (col_price_usd);\\n\\t\\t}\\n\\t\\trequire(\\n\\t\\t\\tcollateral_amount <= collateral_token.balanceOf(address(this)) - unclaimedPoolCollateral,\\n\\t\\t\\t\\\"Not enough collateral in pool\\\"\\n\\t\\t);\\n\\n\\t\\tredeemCollateralBalances[msg.sender] = redeemCollateralBalances[msg.sender] + collateral_amount;\\n\\t\\tunclaimedPoolCollateral = unclaimedPoolCollateral + collateral_amount;\\n\\n\\t\\tredeemDEUSBalances[msg.sender] = redeemDEUSBalances[msg.sender] + deus_amount;\\n\\t\\tunclaimedPoolDEUS = unclaimedPoolDEUS + deus_amount;\\n\\n\\t\\tlastRedeemed[msg.sender] = block.number;\\n\\n\\t\\tdaoShare += DEI_amount * redemption_fee / 1e6;\\n\\t\\t// Move all external functions to the end\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_burn_from(msg.sender, DEI_amount);\\n\\t\\tIDEUSToken(deus_contract_address).pool_mint(address(this), deus_amount);\\n\\t}\\n\\n\\t// Redeem DEI for DEUS. 0% collateral-backed\\n\\tfunction redeemAlgorithmicDEI(\\n\\t\\tuint256 DEI_amount,\\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external notRedeemPaused {\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).global_collateral_ratio() == 0, \\\"POOL::redeemAlgorithmicDEI: Collateral ratio must be 0\\\");\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"DEI::redeemAlgorithmicDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(deus_contract_address, deus_current_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::redeemAlgorithmicDEI: invalid signatures\\\");\\n\\n\\t\\tuint256 deus_dollar_value_d18 = DEI_amount;\\n\\n\\t\\tdeus_dollar_value_d18 = (deus_dollar_value_d18 * (uint256(1e6) - redemption_fee)) / 1e6; //apply fees\\n\\n\\t\\tuint256 deus_amount = (deus_dollar_value_d18 * (PRICE_PRECISION)) / deus_current_price;\\n\\n\\t\\tredeemDEUSBalances[msg.sender] = redeemDEUSBalances[msg.sender] + deus_amount;\\n\\t\\tunclaimedPoolDEUS = unclaimedPoolDEUS + deus_amount;\\n\\n\\t\\tlastRedeemed[msg.sender] = block.number;\\n\\n\\t\\tdaoShare += DEI_amount * redemption_fee / 1e6;\\n\\t\\t// Move all external functions to the end\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_burn_from(msg.sender, DEI_amount);\\n\\t\\tIDEUSToken(deus_contract_address).pool_mint(address(this), deus_amount);\\n\\t}\\n\\n\\t// After a redemption happens, transfer the newly minted DEUS and owed collateral from this pool\\n\\t// contract to the user. Redemption is split into two functions to prevent flash loans from being able\\n\\t// to take out DEI/collateral from the system, use an AMM to trade the new price, and then mint back into the system.\\n\\tfunction collectRedemption() external {\\n\\t\\trequire(\\n\\t\\t\\t(lastRedeemed[msg.sender] + redemption_delay) <= block.number,\\n\\t\\t\\t\\\"POOL::collectRedemption: Must wait for redemption_delay blocks before collecting redemption\\\"\\n\\t\\t);\\n\\t\\tbool sendDEUS = false;\\n\\t\\tbool sendCollateral = false;\\n\\t\\tuint256 DEUSAmount = 0;\\n\\t\\tuint256 CollateralAmount = 0;\\n\\n\\t\\t// Use Checks-Effects-Interactions pattern\\n\\t\\tif (redeemDEUSBalances[msg.sender] > 0) {\\n\\t\\t\\tDEUSAmount = redeemDEUSBalances[msg.sender];\\n\\t\\t\\tredeemDEUSBalances[msg.sender] = 0;\\n\\t\\t\\tunclaimedPoolDEUS = unclaimedPoolDEUS - DEUSAmount;\\n\\n\\t\\t\\tsendDEUS = true;\\n\\t\\t}\\n\\n\\t\\tif (redeemCollateralBalances[msg.sender] > 0) {\\n\\t\\t\\tCollateralAmount = redeemCollateralBalances[msg.sender];\\n\\t\\t\\tredeemCollateralBalances[msg.sender] = 0;\\n\\t\\t\\tunclaimedPoolCollateral = unclaimedPoolCollateral - CollateralAmount;\\n\\t\\t\\tsendCollateral = true;\\n\\t\\t}\\n\\n\\t\\tif (sendDEUS) {\\n\\t\\t\\tTransferHelper.safeTransfer(address(deus_contract_address), msg.sender, DEUSAmount);\\n\\t\\t}\\n\\t\\tif (sendCollateral) {\\n\\t\\t\\tTransferHelper.safeTransfer(\\n\\t\\t\\t\\taddress(collateral_token),\\n\\t\\t\\t\\tmsg.sender,\\n\\t\\t\\t\\tCollateralAmount\\n\\t\\t\\t);\\n\\t\\t}\\n\\t}\\n\\n\\t// When the protocol is recollateralizing, we need to give a discount of DEUS to hit the new CR target\\n\\t// Thus, if the target collateral ratio is higher than the actual value of collateral, minters get DEUS for adding collateral\\n\\t// This function simply rewards anyone that sends collateral to a pool with the same amount of DEUS + the bonus rate\\n\\t// Anyone can call this function to recollateralize the protocol and take the extra DEUS value from the bonus rate as an arb opportunity\\n\\tfunction recollateralizeDEI(RecollateralizeDEI memory inputs) external {\\n\\t\\trequire(recollateralizePaused == false, \\\"POOL::recollateralizeDEI: Recollateralize is paused\\\");\\n\\n\\t\\trequire(inputs.expireBlock >= block.number, \\\"POOL::recollateralizeDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_address, \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinputs.collateral_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_contract_address, \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinputs.deus_current_price, \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinputs.expireBlock,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tgetChainID()\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, inputs.sigs), \\\"POOL::recollateralizeDEI: invalid signatures\\\");\\n\\n\\t\\tuint256 collateral_amount_d18 = inputs.collateral_amount * (10**missing_decimals);\\n\\n\\t\\tuint256 dei_total_supply = IDEIStablecoin(dei_contract_address).totalSupply();\\n\\t\\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\\n\\t\\tuint256 global_collat_value = IDEIStablecoin(dei_contract_address).globalCollateralValue(inputs.collateral_price);\\n\\n\\t\\t(uint256 collateral_units, uint256 amount_to_recollat) = poolLibrary.calcRecollateralizeDEIInner(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_amount_d18,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinputs.collateral_price[inputs.collateral_price.length - 1], // pool collateral price exist in last index\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tglobal_collat_value,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdei_total_supply,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tglobal_collateral_ratio\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\tuint256 collateral_units_precision = collateral_units / (10**missing_decimals);\\n\\n\\t\\tuint256 deus_paid_back = (amount_to_recollat * (uint256(1e6) + bonus_rate - recollat_fee)) / inputs.deus_current_price;\\n\\n\\t\\tTransferHelper.safeTransferFrom(\\n\\t\\t\\taddress(collateral_token),\\n\\t\\t\\tmsg.sender,\\n\\t\\t\\taddress(this),\\n\\t\\t\\tcollateral_units_precision\\n\\t\\t);\\n\\t\\tIDEUSToken(deus_contract_address).pool_mint(msg.sender, deus_paid_back);\\n\\t}\\n\\n\\t// Function can be called by an DEUS holder to have the protocol buy back DEUS with excess collateral value from a desired collateral pool\\n\\t// This can also happen if the collateral ratio > 1\\n\\tfunction buyBackDEUS(\\n\\t\\tuint256 DEUS_amount,\\n\\t\\tuint256[] memory collateral_price,\\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external {\\n\\t\\trequire(buyBackPaused == false, \\\"POOL::buyBackDEUS: Buyback is paused\\\");\\n\\t\\trequire(expireBlock >= block.number, \\\"DEI::buyBackDEUS: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_address,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_contract_address,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_current_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\texpireBlock,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tgetChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::buyBackDEUS: invalid signatures\\\");\\n\\n\\t\\tDEIPoolLibrary.BuybackDEUS_Params memory input_params = DEIPoolLibrary.BuybackDEUS_Params(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tavailableExcessCollatDV(collateral_price),\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_current_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_price[collateral_price.length - 1], // pool collateral price exist in last index\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tDEUS_amount\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\tuint256 collateral_equivalent_d18 = (poolLibrary.calcBuyBackDEUS(input_params) * (uint256(1e6) - buyback_fee)) / (1e6);\\n\\t\\tuint256 collateral_precision = collateral_equivalent_d18 / (10**missing_decimals);\\n\\n\\t\\t// Give the sender their desired collateral and burn the DEUS\\n\\t\\tIDEUSToken(deus_contract_address).pool_burn_from(msg.sender, DEUS_amount);\\n\\t\\tTransferHelper.safeTransfer(\\n\\t\\t\\taddress(collateral_token),\\n\\t\\t\\tmsg.sender,\\n\\t\\t\\tcollateral_precision\\n\\t\\t);\\n\\t}\\n\\n\\t/* ========== RESTRICTED FUNCTIONS ========== */\\n\\n\\tfunction collectDaoShare(uint256 amount, address to) external {\\n\\t\\trequire(hasRole(DAO_SHARE_COLLECTOR, msg.sender));\\n\\t\\trequire(amount <= daoShare, \\\"amount<=daoShare\\\");\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_mint(to, amount);\\n\\t\\tdaoShare -= amount;\\n\\n\\t\\temit daoShareCollected(amount, to);\\n\\t}\\n\\n\\tfunction emergencyWithdrawERC20(address token, uint amount, address to) external onlyTrusty {\\n\\t\\tIERC20(token).transfer(to, amount);\\n\\t}\\n\\n\\tfunction toggleMinting() external {\\n\\t\\trequire(hasRole(MINT_PAUSER, msg.sender));\\n\\t\\tmintPaused = !mintPaused;\\n\\n\\t\\temit MintingToggled(mintPaused);\\n\\t}\\n\\n\\tfunction toggleRedeeming() external {\\n\\t\\trequire(hasRole(REDEEM_PAUSER, msg.sender));\\n\\t\\tredeemPaused = !redeemPaused;\\n\\n\\t\\temit RedeemingToggled(redeemPaused);\\n\\t}\\n\\n\\tfunction toggleRecollateralize() external {\\n\\t\\trequire(hasRole(RECOLLATERALIZE_PAUSER, msg.sender));\\n\\t\\trecollateralizePaused = !recollateralizePaused;\\n\\n\\t\\temit RecollateralizeToggled(recollateralizePaused);\\n\\t}\\n\\n\\tfunction toggleBuyBack() external {\\n\\t\\trequire(hasRole(BUYBACK_PAUSER, msg.sender));\\n\\t\\tbuyBackPaused = !buyBackPaused;\\n\\n\\t\\temit BuybackToggled(buyBackPaused);\\n\\t}\\n\\n\\t// Combined into one function due to 24KiB contract memory limit\\n\\tfunction setPoolParameters(\\n\\t\\tuint256 new_ceiling,\\n\\t\\tuint256 new_bonus_rate,\\n\\t\\tuint256 new_redemption_delay,\\n\\t\\tuint256 new_mint_fee,\\n\\t\\tuint256 new_redeem_fee,\\n\\t\\tuint256 new_buyback_fee,\\n\\t\\tuint256 new_recollat_fee\\n\\t) external {\\n\\t\\trequire(hasRole(PARAMETER_SETTER_ROLE, msg.sender), \\\"POOL: Caller is not PARAMETER_SETTER_ROLE\\\");\\n\\t\\tpool_ceiling = new_ceiling;\\n\\t\\tbonus_rate = new_bonus_rate;\\n\\t\\tredemption_delay = new_redemption_delay;\\n\\t\\tminting_fee = new_mint_fee;\\n\\t\\tredemption_fee = new_redeem_fee;\\n\\t\\tbuyback_fee = new_buyback_fee;\\n\\t\\trecollat_fee = new_recollat_fee;\\n\\n\\t\\temit PoolParametersSet(\\n\\t\\t\\tnew_ceiling,\\n\\t\\t\\tnew_bonus_rate,\\n\\t\\t\\tnew_redemption_delay,\\n\\t\\t\\tnew_mint_fee,\\n\\t\\t\\tnew_redeem_fee,\\n\\t\\t\\tnew_buyback_fee,\\n\\t\\t\\tnew_recollat_fee\\n\\t\\t);\\n\\t}\\n\\n\\t/* ========== EVENTS ========== */\\n\\n\\tevent PoolParametersSet(\\n\\t\\tuint256 new_ceiling,\\n\\t\\tuint256 new_bonus_rate,\\n\\t\\tuint256 new_redemption_delay,\\n\\t\\tuint256 new_mint_fee,\\n\\t\\tuint256 new_redeem_fee,\\n\\t\\tuint256 new_buyback_fee,\\n\\t\\tuint256 new_recollat_fee\\n\\t);\\n\\tevent daoShareCollected(uint256 daoShare, address to);\\n\\tevent MintingToggled(bool toggled);\\n\\tevent RedeemingToggled(bool toggled);\\n\\tevent RecollateralizeToggled(bool toggled);\\n\\tevent BuybackToggled(bool toggled);\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0xc714b5aaa2c0b0b8129e279d395e924d1ea17699f830b64250af9127e6026d21\",\"license\":\"GPL-2.0-or-later\"},\"contracts/DEI/Pools/DEIPoolLibrary.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.8.0;\\n\\ncontract DEIPoolLibrary {\\n\\n // Constants for various precisions\\n uint256 private constant PRICE_PRECISION = 1e6;\\n\\n constructor() {}\\n\\n // ================ Structs ================\\n // Needed to lower stack size\\n struct MintFD_Params {\\n uint256 deus_price_usd; \\n uint256 col_price_usd;\\n uint256 collateral_amount;\\n uint256 col_ratio;\\n }\\n\\n struct BuybackDEUS_Params {\\n uint256 excess_collateral_dollar_value_d18;\\n uint256 deus_price_usd;\\n uint256 col_price_usd;\\n uint256 DEUS_amount;\\n }\\n\\n // ================ Functions ================\\n\\n function calcMint1t1DEI(uint256 col_price, uint256 collateral_amount_d18) public pure returns (uint256) {\\n return (collateral_amount_d18 * col_price) / (1e6);\\n }\\n\\n function calcMintAlgorithmicDEI(uint256 deus_price_usd, uint256 deus_amount_d18) public pure returns (uint256) {\\n return (deus_amount_d18 * deus_price_usd) / (1e6);\\n }\\n\\n function calcMintFractionalDEI(MintFD_Params memory params) public pure returns (uint256, uint256) {\\n // Since solidity truncates division, every division operation must be the last operation in the equation to ensure minimum error\\n // The contract must check the proper ratio was sent to mint DEI. We do this by seeing the minimum mintable DEI based on each amount \\n uint256 c_dollar_value_d18;\\n \\n // Scoping for stack concerns\\n { \\n // USD amounts of the collateral and the DEUS\\n c_dollar_value_d18 = (params.collateral_amount * params.col_price_usd) / (1e6);\\n\\n }\\n uint calculated_deus_dollar_value_d18 = ((c_dollar_value_d18 * (1e6)) / params.col_ratio) - c_dollar_value_d18;\\n\\n uint calculated_deus_needed = (calculated_deus_dollar_value_d18 * (1e6)) / params.deus_price_usd;\\n\\n return (\\n c_dollar_value_d18 + calculated_deus_dollar_value_d18,\\n calculated_deus_needed\\n );\\n }\\n\\n function calcRedeem1t1DEI(uint256 col_price_usd, uint256 DEI_amount) public pure returns (uint256) {\\n return (DEI_amount * (1e6)) / col_price_usd;\\n }\\n\\n function calcBuyBackDEUS(BuybackDEUS_Params memory params) public pure returns (uint256) {\\n // If the total collateral value is higher than the amount required at the current collateral ratio then buy back up to the possible DEUS with the desired collateral\\n require(params.excess_collateral_dollar_value_d18 > 0, \\\"No excess collateral to buy back!\\\");\\n\\n // Make sure not to take more than is available\\n uint256 deus_dollar_value_d18 = (params.DEUS_amount * (params.deus_price_usd)) / (1e6);\\n require(deus_dollar_value_d18 <= params.excess_collateral_dollar_value_d18, \\\"You are trying to buy back more than the excess!\\\");\\n\\n // Get the equivalent amount of collateral based on the market value of DEUS provided \\n uint256 collateral_equivalent_d18 = (deus_dollar_value_d18 * (1e6)) / params.col_price_usd;\\n //collateral_equivalent_d18 = collateral_equivalent_d18.sub((collateral_equivalent_d18.mul(params.buyback_fee)).div(1e6));\\n\\n return collateral_equivalent_d18;\\n\\n }\\n\\n\\n // Returns value of collateral that must increase to reach recollateralization target (if 0 means no recollateralization)\\n function recollateralizeAmount(uint256 total_supply, uint256 global_collateral_ratio, uint256 global_collat_value) public pure returns (uint256) {\\n uint256 target_collat_value = (total_supply * global_collateral_ratio) / (1e6); // We want 18 decimals of precision so divide by 1e6; total_supply is 1e18 and global_collateral_ratio is 1e6\\n // Subtract the current value of collateral from the target value needed, if higher than 0 then system needs to recollateralize\\n return target_collat_value - global_collat_value; // If recollateralization is not needed, throws a subtraction underflow\\n }\\n\\n function calcRecollateralizeDEIInner(\\n uint256 collateral_amount, \\n uint256 col_price,\\n uint256 global_collat_value,\\n uint256 dei_total_supply,\\n uint256 global_collateral_ratio\\n ) public pure returns (uint256, uint256) {\\n uint256 collat_value_attempted = (collateral_amount * col_price) / (1e6);\\n uint256 effective_collateral_ratio = (global_collat_value * (1e6)) / dei_total_supply; //returns it in 1e6\\n uint256 recollat_possible = (global_collateral_ratio * dei_total_supply - (dei_total_supply * effective_collateral_ratio)) / (1e6);\\n\\n uint256 amount_to_recollat;\\n if(collat_value_attempted <= recollat_possible){\\n amount_to_recollat = collat_value_attempted;\\n } else {\\n amount_to_recollat = recollat_possible;\\n }\\n\\n return ((amount_to_recollat * (1e6)) / col_price, amount_to_recollat);\\n\\n }\\n\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x6c2db8a8f39e018d8beb032c29cb86e4c99766669e511f328fa8faf0b173966a\",\"license\":\"GPL-2.0-or-later\"},\"contracts/DEUS/IDEUS.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\n\\ninterface IDEUSToken {\\n function name() external view returns (string memory);\\n function symbol() external view returns (string memory);\\n function pool_burn_from(address b_address, uint256 b_amount) external;\\n function pool_mint(address m_address, uint256 m_amount) external;\\n function mint(address to, uint256 amount) external;\\n function setDEIAddress(address dei_contract_address) external;\\n function setNameAndSymbol(string memory _name, string memory _symbol) external;\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x7be865a95630d427608efd14514c9875ed1a6d65e4b421eaf61c2d63f43b9eb7\",\"license\":\"GPL-2.0-or-later\"},\"contracts/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\n\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20Mintable}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * We have followed general OpenZeppelin guidelines: functions revert instead\\n * of returning `false` on failure. This behavior is nonetheless conventional\\n * and does not conflict with the expectations of ERC20 applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\n \\ncontract ERC20 is Context, IERC20 {\\n using SafeMath for uint256;\\n\\n mapping (address => uint256) private _balances;\\n\\n mapping (address => mapping (address => uint256)) private _allowances;\\n\\n uint256 private _totalSupply;\\n\\n string private _name;\\n string private _symbol;\\n uint8 private _decimals;\\n \\n /**\\n * @dev Sets the values for {name} and {symbol}, initializes {decimals} with\\n * a default value of 18.\\n *\\n * To select a different value for {decimals}, use {_setupDecimals}.\\n *\\n * All three of these values are immutable: they can only be set once during\\n * construction.\\n */\\n constructor (string memory __name, string memory __symbol) public {\\n _name = __name;\\n _symbol = __symbol;\\n _decimals = 18;\\n }\\n\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() public view returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev Returns the symbol of the token, usually a shorter version of the\\n * name.\\n */\\n function symbol() public view returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev Returns the number of decimals used to get its user representation.\\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\\n *\\n * Tokens usually opt for a value of 18, imitating the relationship between\\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\\n * called.\\n *\\n * NOTE: This information is only used for _display_ purposes: it in\\n * no way affects any of the arithmetic of the contract, including\\n * {IERC20-balanceOf} and {IERC20-transfer}.\\n */\\n function decimals() public view returns (uint8) {\\n return _decimals;\\n }\\n\\n /**\\n * @dev See {IERC20-totalSupply}.\\n */\\n function totalSupply() public view override returns (uint256) {\\n return _totalSupply;\\n }\\n\\n /**\\n * @dev See {IERC20-balanceOf}.\\n */\\n function balanceOf(address account) public view override returns (uint256) {\\n return _balances[account];\\n }\\n\\n /**\\n * @dev See {IERC20-transfer}.\\n *\\n * Requirements:\\n *\\n * - `recipient` cannot be the zero address.\\n * - the caller must have a balance of at least `amount`.\\n */\\n function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\\n _transfer(_msgSender(), recipient, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-allowance}.\\n */\\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n return _allowances[owner][spender];\\n }\\n\\n /**\\n * @dev See {IERC20-approve}.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.approve(address spender, uint256 amount)\\n */\\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n _approve(_msgSender(), spender, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-transferFrom}.\\n *\\n * Emits an {Approval} event indicating the updated allowance. This is not\\n * required by the EIP. See the note at the beginning of {ERC20};\\n *\\n * Requirements:\\n * - `sender` and `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n * - the caller must have allowance for `sender`'s tokens of at least\\n * `amount`.\\n */\\n function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {\\n _transfer(sender, recipient, amount);\\n _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \\\"ERC20: transfer amount exceeds allowance\\\"));\\n return true;\\n }\\n\\n /**\\n * @dev Atomically increases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\\n return true;\\n }\\n\\n /**\\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `spender` must have allowance for the caller of at least\\n * `subtractedValue`.\\n */\\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \\\"ERC20: decreased allowance below zero\\\"));\\n return true;\\n }\\n\\n /**\\n * @dev Moves tokens `amount` from `sender` to `recipient`.\\n *\\n * This is internal function is equivalent to {transfer}, and can be used to\\n * e.g. implement automatic token fees, slashing mechanisms, etc.\\n *\\n * Emits a {Transfer} event.\\n *\\n * Requirements:\\n *\\n * - `sender` cannot be the zero address.\\n * - `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n */\\n function _transfer(address sender, address recipient, uint256 amount) internal virtual {\\n require(sender != address(0), \\\"ERC20: transfer from the zero address\\\");\\n require(recipient != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(sender, recipient, amount);\\n\\n _balances[sender] = _balances[sender].sub(amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n _balances[recipient] = _balances[recipient].add(amount);\\n emit Transfer(sender, recipient, amount);\\n }\\n\\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n * the total supply.\\n *\\n * Emits a {Transfer} event with `from` set to the zero address.\\n *\\n * Requirements\\n *\\n * - `to` cannot be the zero address.\\n */\\n function _mint(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n _beforeTokenTransfer(address(0), account, amount);\\n\\n _totalSupply = _totalSupply.add(amount);\\n _balances[account] = _balances[account].add(amount);\\n emit Transfer(address(0), account, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from the caller.\\n *\\n * See {ERC20-_burn}.\\n */\\n function burn(uint256 amount) public virtual {\\n _burn(_msgSender(), amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, deducting from the caller's\\n * allowance.\\n *\\n * See {ERC20-_burn} and {ERC20-allowance}.\\n *\\n * Requirements:\\n *\\n * - the caller must have allowance for `accounts`'s tokens of at least\\n * `amount`.\\n */\\n function burnFrom(address account, uint256 amount) public virtual {\\n uint256 decreasedAllowance = allowance(account, _msgSender()).sub(amount, \\\"ERC20: burn amount exceeds allowance\\\");\\n\\n _approve(account, _msgSender(), decreasedAllowance);\\n _burn(account, amount);\\n }\\n\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, reducing the\\n * total supply.\\n *\\n * Emits a {Transfer} event with `to` set to the zero address.\\n *\\n * Requirements\\n *\\n * - `account` cannot be the zero address.\\n * - `account` must have at least `amount` tokens.\\n */\\n function _burn(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n _beforeTokenTransfer(account, address(0), amount);\\n\\n _balances[account] = _balances[account].sub(amount, \\\"ERC20: burn amount exceeds balance\\\");\\n _totalSupply = _totalSupply.sub(amount);\\n emit Transfer(account, address(0), amount);\\n }\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\\n *\\n * This is internal function is equivalent to `approve`, and can be used to\\n * e.g. set automatic allowances for certain subsystems, etc.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `owner` cannot be the zero address.\\n * - `spender` cannot be the zero address.\\n */\\n function _approve(address owner, address spender, uint256 amount) internal virtual {\\n require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n _allowances[owner][spender] = amount;\\n emit Approval(owner, spender, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`.`amount` is then deducted\\n * from the caller's allowance.\\n *\\n * See {_burn} and {_approve}.\\n */\\n function _burnFrom(address account, uint256 amount) internal virtual {\\n _burn(account, amount);\\n _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, \\\"ERC20: burn amount exceeds allowance\\\"));\\n }\\n\\n /**\\n * @dev Hook that is called before any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of `from`'s tokens\\n * will be to transferred to `to`.\\n * - when `from` is zero, `amount` tokens will be minted for `to`.\\n * - when `to` is zero, `amount` of `from`'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:using-hooks.adoc[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }\\n}\\n\",\"keccak256\":\"0x433b9ee195d0bd257219bc337ff8aac624282a826726b18fdb299de0e3d4149e\",\"license\":\"MIT\"},\"contracts/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {ERC20Detailed}.\\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\\n\",\"keccak256\":\"0x057bec1fafd7ca222117f41fcfb9c8dc1f61aa30e5a0222c981196e9113de7e6\",\"license\":\"MIT\"},\"contracts/Governance/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Utils/EnumerableSet.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\nimport \\\"../Common/Context.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it.\\n */\\nabstract contract AccessControl is Context {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n using Address for address;\\n\\n struct RoleData {\\n EnumerableSet.AddressSet members;\\n bytes32 adminRole;\\n }\\n\\n mapping (bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; //bytes32(uint256(0x4B437D01b575618140442A4975db38850e3f8f5f) << 96);\\n\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view returns (bool) {\\n return _roles[role].members.contains(account);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view returns (uint256) {\\n return _roles[role].members.length();\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view returns (address) {\\n return _roles[role].members.at(index);\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to grant\\\");\\n\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to revoke\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) public virtual {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);\\n _roles[role].adminRole = adminRole;\\n }\\n\\n function _grantRole(bytes32 role, address account) private {\\n if (_roles[role].members.add(account)) {\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n function _revokeRole(bytes32 role, address account) private {\\n if (_roles[role].members.remove(account)) {\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x749b2c0e515a59c6d03cf4908a252ebc5d2b482ca3fd7ec997d1143c302f4e89\",\"license\":\"MIT\"},\"contracts/Math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\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\\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 * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\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 * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\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 * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (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) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts 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 * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts 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 * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\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}\",\"keccak256\":\"0x43a20f7cf4c4319f81450d53779455e88a7ab80bdfc43925156ed4083b74a180\",\"license\":\"MIT\"},\"contracts/Uniswap/TransferHelper.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\n// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false\\nlibrary TransferHelper {\\n function safeApprove(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('approve(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');\\n }\\n\\n function safeTransfer(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transfer(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');\\n }\\n\\n function safeTransferFrom(address token, address from, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');\\n }\\n\\n function safeTransferETH(address to, uint value) internal {\\n (bool success,) = to.call{value:value}(new bytes(0));\\n require(success, 'TransferHelper: ETH_TRANSFER_FAILED');\\n }\\n}\",\"keccak256\":\"0x2eb33792741584e83e0794a7493335b5dce9a9b675dda9e647ce29d88a40a196\",\"license\":\"MIT\"},\"contracts/Utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11 <0.9.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}\",\"keccak256\":\"0xe392046e85c78eea7d4c1237af52a5fc06c097b7a480ea4f20159670b4a582a4\",\"license\":\"MIT\"},\"contracts/Utils/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\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.0.0, only sets of type `address` (`AddressSet`) and `uint256`\\n * (`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 // 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(bytes20(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(bytes20(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(bytes20(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(bytes20(_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\",\"keccak256\":\"0x685f4133ba76f930e3761c1d1414d7f6e55dd40d58b4b210cb392662a6cbd27d\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 6023, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "_roles", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_bytes32,t_struct(RoleData)6018_storage)" + }, + { + "astId": 1559, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "collateral_token", + "offset": 0, + "slot": "1", + "type": "t_contract(ERC20)4919" + }, + { + "astId": 1561, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "collateral_address", + "offset": 0, + "slot": "2", + "type": "t_address" + }, + { + "astId": 1563, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "dei_contract_address", + "offset": 0, + "slot": "3", + "type": "t_address" + }, + { + "astId": 1565, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "deus_contract_address", + "offset": 0, + "slot": "4", + "type": "t_address" + }, + { + "astId": 1567, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "minting_fee", + "offset": 0, + "slot": "5", + "type": "t_uint256" + }, + { + "astId": 1569, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "redemption_fee", + "offset": 0, + "slot": "6", + "type": "t_uint256" + }, + { + "astId": 1571, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "buyback_fee", + "offset": 0, + "slot": "7", + "type": "t_uint256" + }, + { + "astId": 1573, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "recollat_fee", + "offset": 0, + "slot": "8", + "type": "t_uint256" + }, + { + "astId": 1577, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "redeemDEUSBalances", + "offset": 0, + "slot": "9", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 1581, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "redeemCollateralBalances", + "offset": 0, + "slot": "10", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 1583, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "unclaimedPoolCollateral", + "offset": 0, + "slot": "11", + "type": "t_uint256" + }, + { + "astId": 1585, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "unclaimedPoolDEUS", + "offset": 0, + "slot": "12", + "type": "t_uint256" + }, + { + "astId": 1589, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "lastRedeemed", + "offset": 0, + "slot": "13", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 1603, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "pool_ceiling", + "offset": 0, + "slot": "14", + "type": "t_uint256" + }, + { + "astId": 1606, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "pausedPrice", + "offset": 0, + "slot": "15", + "type": "t_uint256" + }, + { + "astId": 1609, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "bonus_rate", + "offset": 0, + "slot": "16", + "type": "t_uint256" + }, + { + "astId": 1612, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "redemption_delay", + "offset": 0, + "slot": "17", + "type": "t_uint256" + }, + { + "astId": 1615, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "daoShare", + "offset": 0, + "slot": "18", + "type": "t_uint256" + }, + { + "astId": 1618, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "poolLibrary", + "offset": 0, + "slot": "19", + "type": "t_contract(DEIPoolLibrary)3879" + }, + { + "astId": 1656, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "mintPaused", + "offset": 20, + "slot": "19", + "type": "t_bool" + }, + { + "astId": 1659, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "redeemPaused", + "offset": 21, + "slot": "19", + "type": "t_bool" + }, + { + "astId": 1662, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "recollateralizePaused", + "offset": 22, + "slot": "19", + "type": "t_bool" + }, + { + "astId": 1665, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "buyBackPaused", + "offset": 23, + "slot": "19", + "type": "t_bool" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_bytes32)dyn_storage": { + "base": "t_bytes32", + "encoding": "dynamic_array", + "label": "bytes32[]", + "numberOfBytes": "32" + }, + "t_bool": { + "encoding": "inplace", + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "encoding": "inplace", + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(DEIPoolLibrary)3879": { + "encoding": "inplace", + "label": "contract DEIPoolLibrary", + "numberOfBytes": "20" + }, + "t_contract(ERC20)4919": { + "encoding": "inplace", + "label": "contract ERC20", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_uint256)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_mapping(t_bytes32,t_struct(RoleData)6018_storage)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => struct AccessControl.RoleData)", + "numberOfBytes": "32", + "value": "t_struct(RoleData)6018_storage" + }, + "t_mapping(t_bytes32,t_uint256)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_struct(AddressSet)11740_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.AddressSet", + "members": [ + { + "astId": 11739, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "_inner", + "offset": 0, + "slot": "0", + "type": "t_struct(Set)11554_storage" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleData)6018_storage": { + "encoding": "inplace", + "label": "struct AccessControl.RoleData", + "members": [ + { + "astId": 6015, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "members", + "offset": 0, + "slot": "0", + "type": "t_struct(AddressSet)11740_storage" + }, + { + "astId": 6017, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "adminRole", + "offset": 0, + "slot": "2", + "type": "t_bytes32" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Set)11554_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.Set", + "members": [ + { + "astId": 11549, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "_values", + "offset": 0, + "slot": "0", + "type": "t_array(t_bytes32)dyn_storage" + }, + { + "astId": 11553, + "contract": "contracts/DEI/Pools/DEIPool.sol:DEIPool", + "label": "_indexes", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ], + "numberOfBytes": "64" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/DEI/Pools/DEIPoolLibrary.sol": { + "DEIPoolLibrary": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "excess_collateral_dollar_value_d18", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_price_usd", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "col_price_usd", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "DEUS_amount", + "type": "uint256" + } + ], + "internalType": "struct DEIPoolLibrary.BuybackDEUS_Params", + "name": "params", + "type": "tuple" + } + ], + "name": "calcBuyBackDEUS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "col_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_amount_d18", + "type": "uint256" + } + ], + "name": "calcMint1t1DEI", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deus_price_usd", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_amount_d18", + "type": "uint256" + } + ], + "name": "calcMintAlgorithmicDEI", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "deus_price_usd", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "col_price_usd", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "col_ratio", + "type": "uint256" + } + ], + "internalType": "struct DEIPoolLibrary.MintFD_Params", + "name": "params", + "type": "tuple" + } + ], + "name": "calcMintFractionalDEI", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "col_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "global_collat_value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "dei_total_supply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "global_collateral_ratio", + "type": "uint256" + } + ], + "name": "calcRecollateralizeDEIInner", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "col_price_usd", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + } + ], + "name": "calcRedeem1t1DEI", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "total_supply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "global_collateral_ratio", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "global_collat_value", + "type": "uint256" + } + ], + "name": "recollateralizeAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": { + "@_3591": { + "entryPoint": null, + "id": 3591, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [], + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b5061065f806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80633c04af9f1161005b5780633c04af9f146100ce578063537a30a7146100e1578063882ab63a146100bb578063fc0110611461010957600080fd5b8063068d54aa146100825780630ff24ec1146100a857806314da4ee1146100bb575b600080fd5b610095610090366004610421565b61011c565b6040519081526020015b60405180910390f35b6100956100b6366004610443565b61013d565b6100956100c9366004610421565b61016d565b6100956100dc3660046104fc565b61017d565b6100f46100ef3660046104fc565b6102f2565b6040805192835260208301919091520161009f565b6100f4610117366004610518565b61037c565b60008261012c83620f4240610582565b61013691906105bf565b9392505050565b600080620f424061014e8587610582565b61015891906105bf565b905061016483826105fa565b95945050505050565b6000620f424061012c8484610582565b8051600090610213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4e6f2065786365737320636f6c6c61746572616c20746f20627579206261636b60448201527f210000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000620f42408360200151846060015161022d9190610582565b61023791906105bf565b83519091508111156102cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f596f752061726520747279696e6720746f20627579206261636b206d6f72652060448201527f7468616e20746865206578636573732100000000000000000000000000000000606482015260840161020a565b60408301516000906102e083620f4240610582565b6102ea91906105bf565b949350505050565b6000806000620f42408460200151856040015161030f9190610582565b61031991906105bf565b9050600081856060015183620f42406103329190610582565b61033c91906105bf565b61034691906105fa565b855190915060009061035b83620f4240610582565b61036591906105bf565b90506103718284610611565b969095509350505050565b60008080620f424061038e888a610582565b61039891906105bf565b90506000856103aa88620f4240610582565b6103b491906105bf565b90506000620f42406103c68389610582565b6103d08989610582565b6103da91906105fa565b6103e491906105bf565b905060008184116103f65750826103f9565b50805b8961040782620f4240610582565b61041191906105bf565b9b909a5098505050505050505050565b6000806040838503121561043457600080fd5b50508035926020909101359150565b60008060006060848603121561045857600080fd5b505081359360208301359350604090920135919050565b60006080828403121561048157600080fd5b6040516080810181811067ffffffffffffffff821117156104cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8060405250809150823581526020830135602082015260408301356040820152606083013560608201525092915050565b60006080828403121561050e57600080fd5b610136838361046f565b600080600080600060a0868803121561053057600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156105ba576105ba610553565b500290565b6000826105f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008282101561060c5761060c610553565b500390565b6000821982111561062457610624610553565b50019056fea264697066735822122023606f1c10b6ffc93e9277cc21bb91b620bba1d228b0d578dab52aca944990c664736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x65F DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3C04AF9F GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x3C04AF9F EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x537A30A7 EQ PUSH2 0xE1 JUMPI DUP1 PUSH4 0x882AB63A EQ PUSH2 0xBB JUMPI DUP1 PUSH4 0xFC011061 EQ PUSH2 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x68D54AA EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0xFF24EC1 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x14DA4EE1 EQ PUSH2 0xBB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0x421 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x95 PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x443 JUMP JUMPDEST PUSH2 0x13D JUMP JUMPDEST PUSH2 0x95 PUSH2 0xC9 CALLDATASIZE PUSH1 0x4 PUSH2 0x421 JUMP JUMPDEST PUSH2 0x16D JUMP JUMPDEST PUSH2 0x95 PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0x4FC JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST PUSH2 0xF4 PUSH2 0xEF CALLDATASIZE PUSH1 0x4 PUSH2 0x4FC JUMP JUMPDEST PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x9F JUMP JUMPDEST PUSH2 0xF4 PUSH2 0x117 CALLDATASIZE PUSH1 0x4 PUSH2 0x518 JUMP JUMPDEST PUSH2 0x37C JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x12C DUP4 PUSH3 0xF4240 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x136 SWAP2 SWAP1 PUSH2 0x5BF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xF4240 PUSH2 0x14E DUP6 DUP8 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x158 SWAP2 SWAP1 PUSH2 0x5BF JUMP JUMPDEST SWAP1 POP PUSH2 0x164 DUP4 DUP3 PUSH2 0x5FA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x12C DUP5 DUP5 PUSH2 0x582 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x213 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F2065786365737320636F6C6C61746572616C20746F20627579206261636B PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2100000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0xF4240 DUP4 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x60 ADD MLOAD PUSH2 0x22D SWAP2 SWAP1 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x237 SWAP2 SWAP1 PUSH2 0x5BF JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP DUP2 GT ISZERO PUSH2 0x2CB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x596F752061726520747279696E6720746F20627579206261636B206D6F726520 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7468616E20746865206578636573732100000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x20A JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x0 SWAP1 PUSH2 0x2E0 DUP4 PUSH3 0xF4240 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x2EA SWAP2 SWAP1 PUSH2 0x5BF JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH3 0xF4240 DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD PUSH2 0x30F SWAP2 SWAP1 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x319 SWAP2 SWAP1 PUSH2 0x5BF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP6 PUSH1 0x60 ADD MLOAD DUP4 PUSH3 0xF4240 PUSH2 0x332 SWAP2 SWAP1 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x33C SWAP2 SWAP1 PUSH2 0x5BF JUMP JUMPDEST PUSH2 0x346 SWAP2 SWAP1 PUSH2 0x5FA JUMP JUMPDEST DUP6 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x35B DUP4 PUSH3 0xF4240 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x365 SWAP2 SWAP1 PUSH2 0x5BF JUMP JUMPDEST SWAP1 POP PUSH2 0x371 DUP3 DUP5 PUSH2 0x611 JUMP JUMPDEST SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH3 0xF4240 PUSH2 0x38E DUP9 DUP11 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x398 SWAP2 SWAP1 PUSH2 0x5BF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP6 PUSH2 0x3AA DUP9 PUSH3 0xF4240 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x3B4 SWAP2 SWAP1 PUSH2 0x5BF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x3C6 DUP4 DUP10 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x3D0 DUP10 DUP10 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x3DA SWAP2 SWAP1 PUSH2 0x5FA JUMP JUMPDEST PUSH2 0x3E4 SWAP2 SWAP1 PUSH2 0x5BF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP5 GT PUSH2 0x3F6 JUMPI POP DUP3 PUSH2 0x3F9 JUMP JUMPDEST POP DUP1 JUMPDEST DUP10 PUSH2 0x407 DUP3 PUSH3 0xF4240 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x411 SWAP2 SWAP1 PUSH2 0x5BF JUMP JUMPDEST SWAP12 SWAP1 SWAP11 POP SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x458 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP2 CALLDATALOAD SWAP4 PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 SWAP1 SWAP3 ADD CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x4CB JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 PUSH1 0x40 MSTORE POP DUP1 SWAP2 POP DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x50E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x136 DUP4 DUP4 PUSH2 0x46F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP4 CALLDATALOAD SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x5BA JUMPI PUSH2 0x5BA PUSH2 0x553 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5F5 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x60C JUMPI PUSH2 0x60C PUSH2 0x553 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x624 JUMPI PUSH2 0x624 PUSH2 0x553 JUMP JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x23 PUSH1 0x6F SHR LT 0xB6 SELFDESTRUCT 0xC9 RETURNDATACOPY SWAP3 PUSH24 0xCC21BB91B620BBA1D228B0D578DAB52ACA944990C664736F PUSH13 0x634300080A0033000000000000 ", + "sourceMap": "106:4859:8:-:0;;;230:16;;;;;;;;;;106:4859;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@calcBuyBackDEUS_3772": { + "entryPoint": 381, + "id": 3772, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@calcMint1t1DEI_3627": { + "entryPoint": null, + "id": 3627, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@calcMintAlgorithmicDEI_3645": { + "entryPoint": 365, + "id": 3645, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@calcMintFractionalDEI_3703": { + "entryPoint": 754, + "id": 3703, + "parameterSlots": 1, + "returnSlots": 2 + }, + "@calcRecollateralizeDEIInner_3878": { + "entryPoint": 892, + "id": 3878, + "parameterSlots": 5, + "returnSlots": 2 + }, + "@calcRedeem1t1DEI_3721": { + "entryPoint": 284, + "id": 3721, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@recollateralizeAmount_3798": { + "entryPoint": 317, + "id": 3798, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_struct_BuybackDEUS_Params": { + "entryPoint": 1135, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_struct$_BuybackDEUS_Params_$3609_memory_ptr": { + "entryPoint": 1276, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_struct$_MintFD_Params_$3600_memory_ptr": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256t_uint256": { + "entryPoint": 1057, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_uint256t_uint256t_uint256": { + "entryPoint": 1091, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256": { + "entryPoint": 1304, + "id": null, + "parameterSlots": 2, + "returnSlots": 5 + }, + "abi_encode_tuple_t_stringliteral_20cee5f8efce895d1238c3d0c37f314fe6844bbbe5c581850efd4e66f70f37eb__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_62be30ad51f587419028108adbc87cc9e2c30cf8732921ae68682f0edb95ba89__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 1553, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_div_t_uint256": { + "entryPoint": 1471, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_mul_t_uint256": { + "entryPoint": 1410, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 1530, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 1363, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:4541:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "101:161:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "147:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "156:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "159:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "149:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "149:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "149:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "122:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "131:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "118:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "118:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "143:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "114:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "114:32:39" + }, + "nodeType": "YulIf", + "src": "111:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "172:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "195:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "182:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "182:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "172:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "214:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "241:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "252:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "237:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "237:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "224:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "224:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "214:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "59:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "70:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "82:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "90:6:39", + "type": "" + } + ], + "src": "14:248:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "368:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "378:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "390:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "401:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "386:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "386:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "378:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "420:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "431:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "413:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "413:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "413:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "337:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "348:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "359:4:39", + "type": "" + } + ], + "src": "267:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "553:212:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "599:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "608:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "611:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "601:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "601:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "601:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "574:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "583:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "570:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "570:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "595:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "566:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "566:32:39" + }, + "nodeType": "YulIf", + "src": "563:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "624:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "647:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "634:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "634:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "624:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "666:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "693:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "704:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "689:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "689:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "676:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "676:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "666:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "717:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "744:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "755:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "740:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "740:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "727:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "727:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "717:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "503:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "514:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "526:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "534:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "542:6:39", + "type": "" + } + ], + "src": "449:316:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "845:694:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "889:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "898:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "901:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "891:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "891:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "891:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "866:3:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "871:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "862:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "862:19:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "883:4:39", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "858:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "858:30:39" + }, + "nodeType": "YulIf", + "src": "855:50:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "914:23:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "934:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "928:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "928:9:39" + }, + "variables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "918:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "946:35:39", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "968:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "976:4:39", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "964:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "964:17:39" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "950:10:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1064:168:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1085:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1088:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1078:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1078:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1078:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1186:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1189:4:39", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1179:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1179:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1179:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1214:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1217:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1207:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1207:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1207:15:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "999:10:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1011:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "996:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "996:34:39" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1035:10:39" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1047:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1032:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1032:22:39" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "993:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "993:62:39" + }, + "nodeType": "YulIf", + "src": "990:242:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1248:2:39", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1252:10:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1241:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1241:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1241:22:39" + }, + { + "nodeType": "YulAssignment", + "src": "1272:15:39", + "value": { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1281:6:39" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1272:5:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1303:6:39" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1324:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1311:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1311:23:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1296:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1296:39:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1296:39:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1355:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1363:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1351:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1351:15:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1385:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1396:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1381:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1381:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1368:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1368:32:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1344:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1344:57:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1344:57:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1421:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1429:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1417:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1417:15:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1451:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1462:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1447:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1447:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1434:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1434:32:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1410:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1410:57:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1410:57:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1487:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1495:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1483:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1483:15:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1517:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1528:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1513:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1513:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1500:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1500:32:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1476:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1476:57:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1476:57:39" + } + ] + }, + "name": "abi_decode_struct_BuybackDEUS_Params", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "816:9:39", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "827:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "835:5:39", + "type": "" + } + ], + "src": "770:769:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1650:144:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1697:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1706:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1709:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1699:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1699:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1699:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1671:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1680:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1667:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1667:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1692:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1663:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1663:33:39" + }, + "nodeType": "YulIf", + "src": "1660:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "1722:66:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1769:9:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1780:7:39" + } + ], + "functionName": { + "name": "abi_decode_struct_BuybackDEUS_Params", + "nodeType": "YulIdentifier", + "src": "1732:36:39" + }, + "nodeType": "YulFunctionCall", + "src": "1732:56:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1722:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_struct$_BuybackDEUS_Params_$3609_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1616:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1627:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1639:6:39", + "type": "" + } + ], + "src": "1544:250:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1900:144:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1947:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1956:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1959:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1949:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1949:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1949:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1921:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1930:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1917:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1917:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1942:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1913:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1913:33:39" + }, + "nodeType": "YulIf", + "src": "1910:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "1972:66:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2019:9:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2030:7:39" + } + ], + "functionName": { + "name": "abi_decode_struct_BuybackDEUS_Params", + "nodeType": "YulIdentifier", + "src": "1982:36:39" + }, + "nodeType": "YulFunctionCall", + "src": "1982:56:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1972:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_struct$_MintFD_Params_$3600_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1866:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1877:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1889:6:39", + "type": "" + } + ], + "src": "1799:245:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2178:119:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2188:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2200:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2211:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2196:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2196:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2188:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2230:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2241:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2223:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2223:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2223:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2268:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2279:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2264:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2264:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2284:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2257:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2257:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2257:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2139:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2150:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2158:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2169:4:39", + "type": "" + } + ], + "src": "2049:248:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2440:316:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2487:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2496:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2499:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2489:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2489:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2489:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2461:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2470:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2457:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2457:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2482:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2453:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2453:33:39" + }, + "nodeType": "YulIf", + "src": "2450:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "2512:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2535:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2522:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2522:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2512:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2554:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2581:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2592:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2577:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2577:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2564:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2564:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2554:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2605:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2632:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2643:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2628:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2628:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2615:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2615:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "2605:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2656:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2683:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2694:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2679:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2679:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2666:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2666:32:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "2656:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2707:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2734:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2745:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2730:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2730:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2717:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2717:33:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "2707:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2374:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2385:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2397:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2405:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "2413:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "2421:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "2429:6:39", + "type": "" + } + ], + "src": "2302:454:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2793:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2810:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2813:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2803:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2803:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2803:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2907:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2910:4:39", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2900:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2900:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2900:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2931:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2934:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2924:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2924:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2924:15:39" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "2761:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3002:176:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3121:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "3123:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "3123:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3123:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3033:1:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3026:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3026:9:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3019:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3019:17:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "3041:1:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3048:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3116:1:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "3044:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3044:74:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3038:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3038:81:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "3015:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3015:105:39" + }, + "nodeType": "YulIf", + "src": "3012:131:39" + }, + { + "nodeType": "YulAssignment", + "src": "3152:20:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3167:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "3170:1:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "3163:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3163:9:39" + }, + "variableNames": [ + { + "name": "product", + "nodeType": "YulIdentifier", + "src": "3152:7:39" + } + ] + } + ] + }, + "name": "checked_mul_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "2981:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "2984:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nodeType": "YulTypedName", + "src": "2990:7:39", + "type": "" + } + ], + "src": "2950:228:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3229:228:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3260:168:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3281:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3284:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3274:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3274:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3274:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3382:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3385:4:39", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3375:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3375:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3375:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3410:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3413:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3403:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3403:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3403:15:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "3249:1:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3242:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3242:9:39" + }, + "nodeType": "YulIf", + "src": "3239:189:39" + }, + { + "nodeType": "YulAssignment", + "src": "3437:14:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3446:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "3449:1:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "3442:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3442:9:39" + }, + "variableNames": [ + { + "name": "r", + "nodeType": "YulIdentifier", + "src": "3437:1:39" + } + ] + } + ] + }, + "name": "checked_div_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "3214:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "3217:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "r", + "nodeType": "YulTypedName", + "src": "3223:1:39", + "type": "" + } + ], + "src": "3183:274:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3511:76:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3533:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "3535:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "3535:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3535:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3527:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "3530:1:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "3524:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3524:8:39" + }, + "nodeType": "YulIf", + "src": "3521:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "3564:17:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3576:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "3579:1:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3572:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3572:9:39" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "3564:4:39" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "3493:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "3496:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "3502:4:39", + "type": "" + } + ], + "src": "3462:125:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3766:223:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3783:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3794:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3776:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3776:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3776:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3817:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3828:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3813:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3813:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3833:2:39", + "type": "", + "value": "33" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3806:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3806:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3806:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3856:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3867:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3852:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3852:18:39" + }, + { + "hexValue": "4e6f2065786365737320636f6c6c61746572616c20746f20627579206261636b", + "kind": "string", + "nodeType": "YulLiteral", + "src": "3872:34:39", + "type": "", + "value": "No excess collateral to buy back" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3845:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3845:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3845:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3927:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3938:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3923:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3923:18:39" + }, + { + "hexValue": "21", + "kind": "string", + "nodeType": "YulLiteral", + "src": "3943:3:39", + "type": "", + "value": "!" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3916:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3916:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3916:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "3956:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3968:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3979:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3964:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3964:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3956:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_62be30ad51f587419028108adbc87cc9e2c30cf8732921ae68682f0edb95ba89__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3743:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3757:4:39", + "type": "" + } + ], + "src": "3592:397:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4168:238:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4185:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4196:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4178:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4178:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4178:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4219:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4230:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4215:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4215:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4235:2:39", + "type": "", + "value": "48" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4208:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4208:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4208:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4258:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4269:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4254:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4254:18:39" + }, + { + "hexValue": "596f752061726520747279696e6720746f20627579206261636b206d6f726520", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4274:34:39", + "type": "", + "value": "You are trying to buy back more " + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4247:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4247:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4247:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4329:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4340:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4325:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4325:18:39" + }, + { + "hexValue": "7468616e207468652065786365737321", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4345:18:39", + "type": "", + "value": "than the excess!" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4318:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4318:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4318:46:39" + }, + { + "nodeType": "YulAssignment", + "src": "4373:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4385:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4396:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4381:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4381:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4373:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_20cee5f8efce895d1238c3d0c37f314fe6844bbbe5c581850efd4e66f70f37eb__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4145:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4159:4:39", + "type": "" + } + ], + "src": "3994:412:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4459:80:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4486:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "4488:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "4488:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4488:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "4475:1:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "4482:1:39" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "4478:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4478:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4472:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "4472:13:39" + }, + "nodeType": "YulIf", + "src": "4469:39:39" + }, + { + "nodeType": "YulAssignment", + "src": "4517:16:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "4528:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "4531:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4524:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4524:9:39" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "4517:3:39" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "4442:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "4445:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "4451:3:39", + "type": "" + } + ], + "src": "4411:128:39" + } + ] + }, + "contents": "{\n { }\n function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_struct_BuybackDEUS_Params(headStart, end) -> value\n {\n if slt(sub(end, headStart), 0x80) { revert(0, 0) }\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, 0x80)\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr))\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n mstore(64, newFreePtr)\n value := memPtr\n mstore(memPtr, calldataload(headStart))\n mstore(add(memPtr, 32), calldataload(add(headStart, 32)))\n mstore(add(memPtr, 64), calldataload(add(headStart, 64)))\n mstore(add(memPtr, 96), calldataload(add(headStart, 96)))\n }\n function abi_decode_tuple_t_struct$_BuybackDEUS_Params_$3609_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := abi_decode_struct_BuybackDEUS_Params(headStart, dataEnd)\n }\n function abi_decode_tuple_t_struct$_MintFD_Params_$3600_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := abi_decode_struct_BuybackDEUS_Params(headStart, dataEnd)\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n value4 := calldataload(add(headStart, 128))\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n product := mul(x, y)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function abi_encode_tuple_t_stringliteral_62be30ad51f587419028108adbc87cc9e2c30cf8732921ae68682f0edb95ba89__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"No excess collateral to buy back\")\n mstore(add(headStart, 96), \"!\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_20cee5f8efce895d1238c3d0c37f314fe6844bbbe5c581850efd4e66f70f37eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 48)\n mstore(add(headStart, 64), \"You are trying to buy back more \")\n mstore(add(headStart, 96), \"than the excess!\")\n tail := add(headStart, 128)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506004361061007d5760003560e01c80633c04af9f1161005b5780633c04af9f146100ce578063537a30a7146100e1578063882ab63a146100bb578063fc0110611461010957600080fd5b8063068d54aa146100825780630ff24ec1146100a857806314da4ee1146100bb575b600080fd5b610095610090366004610421565b61011c565b6040519081526020015b60405180910390f35b6100956100b6366004610443565b61013d565b6100956100c9366004610421565b61016d565b6100956100dc3660046104fc565b61017d565b6100f46100ef3660046104fc565b6102f2565b6040805192835260208301919091520161009f565b6100f4610117366004610518565b61037c565b60008261012c83620f4240610582565b61013691906105bf565b9392505050565b600080620f424061014e8587610582565b61015891906105bf565b905061016483826105fa565b95945050505050565b6000620f424061012c8484610582565b8051600090610213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4e6f2065786365737320636f6c6c61746572616c20746f20627579206261636b60448201527f210000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000620f42408360200151846060015161022d9190610582565b61023791906105bf565b83519091508111156102cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f596f752061726520747279696e6720746f20627579206261636b206d6f72652060448201527f7468616e20746865206578636573732100000000000000000000000000000000606482015260840161020a565b60408301516000906102e083620f4240610582565b6102ea91906105bf565b949350505050565b6000806000620f42408460200151856040015161030f9190610582565b61031991906105bf565b9050600081856060015183620f42406103329190610582565b61033c91906105bf565b61034691906105fa565b855190915060009061035b83620f4240610582565b61036591906105bf565b90506103718284610611565b969095509350505050565b60008080620f424061038e888a610582565b61039891906105bf565b90506000856103aa88620f4240610582565b6103b491906105bf565b90506000620f42406103c68389610582565b6103d08989610582565b6103da91906105fa565b6103e491906105bf565b905060008184116103f65750826103f9565b50805b8961040782620f4240610582565b61041191906105bf565b9b909a5098505050505050505050565b6000806040838503121561043457600080fd5b50508035926020909101359150565b60008060006060848603121561045857600080fd5b505081359360208301359350604090920135919050565b60006080828403121561048157600080fd5b6040516080810181811067ffffffffffffffff821117156104cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8060405250809150823581526020830135602082015260408301356040820152606083013560608201525092915050565b60006080828403121561050e57600080fd5b610136838361046f565b600080600080600060a0868803121561053057600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156105ba576105ba610553565b500290565b6000826105f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008282101561060c5761060c610553565b500390565b6000821982111561062457610624610553565b50019056fea264697066735822122023606f1c10b6ffc93e9277cc21bb91b620bba1d228b0d578dab52aca944990c664736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3C04AF9F GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x3C04AF9F EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x537A30A7 EQ PUSH2 0xE1 JUMPI DUP1 PUSH4 0x882AB63A EQ PUSH2 0xBB JUMPI DUP1 PUSH4 0xFC011061 EQ PUSH2 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x68D54AA EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0xFF24EC1 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x14DA4EE1 EQ PUSH2 0xBB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0x421 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x95 PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x443 JUMP JUMPDEST PUSH2 0x13D JUMP JUMPDEST PUSH2 0x95 PUSH2 0xC9 CALLDATASIZE PUSH1 0x4 PUSH2 0x421 JUMP JUMPDEST PUSH2 0x16D JUMP JUMPDEST PUSH2 0x95 PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0x4FC JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST PUSH2 0xF4 PUSH2 0xEF CALLDATASIZE PUSH1 0x4 PUSH2 0x4FC JUMP JUMPDEST PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x9F JUMP JUMPDEST PUSH2 0xF4 PUSH2 0x117 CALLDATASIZE PUSH1 0x4 PUSH2 0x518 JUMP JUMPDEST PUSH2 0x37C JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x12C DUP4 PUSH3 0xF4240 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x136 SWAP2 SWAP1 PUSH2 0x5BF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xF4240 PUSH2 0x14E DUP6 DUP8 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x158 SWAP2 SWAP1 PUSH2 0x5BF JUMP JUMPDEST SWAP1 POP PUSH2 0x164 DUP4 DUP3 PUSH2 0x5FA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x12C DUP5 DUP5 PUSH2 0x582 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SWAP1 PUSH2 0x213 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F2065786365737320636F6C6C61746572616C20746F20627579206261636B PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2100000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0xF4240 DUP4 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x60 ADD MLOAD PUSH2 0x22D SWAP2 SWAP1 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x237 SWAP2 SWAP1 PUSH2 0x5BF JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP DUP2 GT ISZERO PUSH2 0x2CB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x596F752061726520747279696E6720746F20627579206261636B206D6F726520 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7468616E20746865206578636573732100000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x20A JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x0 SWAP1 PUSH2 0x2E0 DUP4 PUSH3 0xF4240 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x2EA SWAP2 SWAP1 PUSH2 0x5BF JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH3 0xF4240 DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD PUSH2 0x30F SWAP2 SWAP1 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x319 SWAP2 SWAP1 PUSH2 0x5BF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP6 PUSH1 0x60 ADD MLOAD DUP4 PUSH3 0xF4240 PUSH2 0x332 SWAP2 SWAP1 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x33C SWAP2 SWAP1 PUSH2 0x5BF JUMP JUMPDEST PUSH2 0x346 SWAP2 SWAP1 PUSH2 0x5FA JUMP JUMPDEST DUP6 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x35B DUP4 PUSH3 0xF4240 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x365 SWAP2 SWAP1 PUSH2 0x5BF JUMP JUMPDEST SWAP1 POP PUSH2 0x371 DUP3 DUP5 PUSH2 0x611 JUMP JUMPDEST SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH3 0xF4240 PUSH2 0x38E DUP9 DUP11 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x398 SWAP2 SWAP1 PUSH2 0x5BF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP6 PUSH2 0x3AA DUP9 PUSH3 0xF4240 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x3B4 SWAP2 SWAP1 PUSH2 0x5BF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x3C6 DUP4 DUP10 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x3D0 DUP10 DUP10 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x3DA SWAP2 SWAP1 PUSH2 0x5FA JUMP JUMPDEST PUSH2 0x3E4 SWAP2 SWAP1 PUSH2 0x5BF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP5 GT PUSH2 0x3F6 JUMPI POP DUP3 PUSH2 0x3F9 JUMP JUMPDEST POP DUP1 JUMPDEST DUP10 PUSH2 0x407 DUP3 PUSH3 0xF4240 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x411 SWAP2 SWAP1 PUSH2 0x5BF JUMP JUMPDEST SWAP12 SWAP1 SWAP11 POP SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x458 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP2 CALLDATALOAD SWAP4 PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 SWAP1 SWAP3 ADD CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x4CB JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 PUSH1 0x40 MSTORE POP DUP1 SWAP2 POP DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x50E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x136 DUP4 DUP4 PUSH2 0x46F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP4 CALLDATALOAD SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x5BA JUMPI PUSH2 0x5BA PUSH2 0x553 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5F5 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x60C JUMPI PUSH2 0x60C PUSH2 0x553 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x624 JUMPI PUSH2 0x624 PUSH2 0x553 JUMP JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x23 PUSH1 0x6F SHR LT 0xB6 SELFDESTRUCT 0xC9 RETURNDATACOPY SWAP3 PUSH24 0xCC21BB91B620BBA1D228B0D578DAB52ACA944990C664736F PUSH13 0x634300080A0033000000000000 ", + "sourceMap": "106:4859:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2098:159;;;;;;:::i;:::-;;:::i;:::-;;;413:25:39;;;401:2;386:18;2098:159:8;;;;;;;;3428:616;;;;;;:::i;:::-;;:::i;907:177::-;;;;;;:::i;:::-;;:::i;2263:1032::-;;;;;;:::i;:::-;;:::i;1090:1002::-;;;;;;:::i;:::-;;:::i;:::-;;;;2223:25:39;;;2279:2;2264:18;;2257:34;;;;2196:18;1090:1002:8;2049:248:39;4050:912:8;;;;;;:::i;:::-;;:::i;2098:159::-;2188:7;2237:13;2215:18;:10;2229:3;2215:18;:::i;:::-;2214:36;;;;:::i;:::-;2207:43;2098:159;-1:-1:-1;;;2098:159:8:o;3428:616::-;3564:7;;3657:3;3614:38;3629:23;3614:12;:38;:::i;:::-;3613:48;;;;:::i;:::-;3583:78;-1:-1:-1;3924:41:8;3946:19;3583:78;3924:41;:::i;:::-;3917:48;3428:616;-1:-1:-1;;;;;3428:616:8:o;907:177::-;1009:7;1073:3;1036:32;1054:14;1036:15;:32;:::i;2263:1032::-;2544:41;;2343:7;;2536:91;;;;;;;3794:2:39;2536:91:8;;;3776:21:39;3833:2;3813:18;;;3806:30;3872:34;3852:18;;;3845:62;3943:3;3923:18;;;3916:31;3964:19;;2536:91:8;;;;;;;;;2694:29;2776:3;2749:6;:21;;;2727:6;:18;;;:44;;;;:::i;:::-;2726:54;;;;:::i;:::-;2823:41;;2694:86;;-1:-1:-1;2798:66:8;;;2790:127;;;;;;;4196:2:39;2790:127:8;;;4178:21:39;4235:2;4215:18;;;4208:30;4274:34;4254:18;;;4247:62;4345:18;4325;;;4318:46;4381:19;;2790:127:8;3994:412:39;2790:127:8;3093:20;;;;3023:33;;3060:29;:21;3085:3;3060:29;:::i;:::-;3059:54;;;;:::i;:::-;3023:90;2263:1032;-1:-1:-1;;;;2263:1032:8:o;1090:1002::-;1171:7;1180;1479:26;1712:3;1687:6;:20;;;1660:6;:24;;;:47;;;;:::i;:::-;1659:57;;;;:::i;:::-;1638:78;;1737:37;1829:18;1809:6;:16;;;1779:18;1801:3;1779:26;;;;:::i;:::-;1778:47;;;;:::i;:::-;1777:70;;;;:::i;:::-;1933:21;;1737:110;;-1:-1:-1;1858:27:8;;1889:40;1737:110;1925:3;1889:40;:::i;:::-;1888:66;;;;:::i;:::-;1858:96;-1:-1:-1;1986:53:8;2007:32;1986:18;:53;:::i;:::-;1965:120;2053:22;;-1:-1:-1;1090:1002:8;-1:-1:-1;;;;1090:1002:8:o;4050:912::-;4289:7;;;4385:3;4351:29;4371:9;4351:17;:29;:::i;:::-;4350:39;;;;:::i;:::-;4317:72;-1:-1:-1;4399:34:8;4468:16;4437:27;:19;4460:3;4437:27;:::i;:::-;4436:48;;;;:::i;:::-;4399:85;-1:-1:-1;4514:25:8;4640:3;4589:45;4399:85;4589:16;:45;:::i;:::-;4543:42;4569:16;4543:23;:42;:::i;:::-;:92;;;;:::i;:::-;4542:102;;;;:::i;:::-;4514:130;;4655:26;4720:17;4694:22;:43;4691:184;;-1:-1:-1;4773:22:8;4691:184;;;-1:-1:-1;4847:17:8;4691:184;4924:9;4894:26;:18;4916:3;4894:26;:::i;:::-;4893:40;;;;:::i;:::-;4885:69;4935:18;;-1:-1:-1;4050:912:8;-1:-1:-1;;;;;;;;;4050:912:8:o;14:248:39:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:39;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:39:o;449:316::-;526:6;534;542;595:2;583:9;574:7;570:23;566:32;563:52;;;611:1;608;601:12;563:52;-1:-1:-1;;634:23:39;;;704:2;689:18;;676:32;;-1:-1:-1;755:2:39;740:18;;;727:32;;449:316;-1:-1:-1;449:316:39:o;770:769::-;835:5;883:4;871:9;866:3;862:19;858:30;855:50;;;901:1;898;891:12;855:50;934:2;928:9;976:4;968:6;964:17;1047:6;1035:10;1032:22;1011:18;999:10;996:34;993:62;990:242;;;1088:77;1085:1;1078:88;1189:4;1186:1;1179:15;1217:4;1214:1;1207:15;990:242;1252:10;1248:2;1241:22;;1281:6;1272:15;;1324:9;1311:23;1303:6;1296:39;1396:2;1385:9;1381:18;1368:32;1363:2;1355:6;1351:15;1344:57;1462:2;1451:9;1447:18;1434:32;1429:2;1421:6;1417:15;1410:57;1528:2;1517:9;1513:18;1500:32;1495:2;1487:6;1483:15;1476:57;;770:769;;;;:::o;1544:250::-;1639:6;1692:3;1680:9;1671:7;1667:23;1663:33;1660:53;;;1709:1;1706;1699:12;1660:53;1732:56;1780:7;1769:9;1732:56;:::i;2302:454::-;2397:6;2405;2413;2421;2429;2482:3;2470:9;2461:7;2457:23;2453:33;2450:53;;;2499:1;2496;2489:12;2450:53;-1:-1:-1;;2522:23:39;;;2592:2;2577:18;;2564:32;;-1:-1:-1;2643:2:39;2628:18;;2615:32;;2694:2;2679:18;;2666:32;;-1:-1:-1;2745:3:39;2730:19;2717:33;;-1:-1:-1;2302:454:39;-1:-1:-1;2302:454:39:o;2761:184::-;2813:77;2810:1;2803:88;2910:4;2907:1;2900:15;2934:4;2931:1;2924:15;2950:228;2990:7;3116:1;3048:66;3044:74;3041:1;3038:81;3033:1;3026:9;3019:17;3015:105;3012:131;;;3123:18;;:::i;:::-;-1:-1:-1;3163:9:39;;2950:228::o;3183:274::-;3223:1;3249;3239:189;;3284:77;3281:1;3274:88;3385:4;3382:1;3375:15;3413:4;3410:1;3403:15;3239:189;-1:-1:-1;3442:9:39;;3183:274::o;3462:125::-;3502:4;3530:1;3527;3524:8;3521:34;;;3535:18;;:::i;:::-;-1:-1:-1;3572:9:39;;3462:125::o;4411:128::-;4451:3;4482:1;4478:6;4475:1;4472:13;4469:39;;;4488:18;;:::i;:::-;-1:-1:-1;4524:9:39;;4411:128::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "326200", + "executionCost": "362", + "totalCost": "326562" + }, + "external": { + "calcBuyBackDEUS((uint256,uint256,uint256,uint256))": "infinite", + "calcMint1t1DEI(uint256,uint256)": "501", + "calcMintAlgorithmicDEI(uint256,uint256)": "502", + "calcMintFractionalDEI((uint256,uint256,uint256,uint256))": "infinite", + "calcRecollateralizeDEIInner(uint256,uint256,uint256,uint256,uint256)": "infinite", + "calcRedeem1t1DEI(uint256,uint256)": "458", + "recollateralizeAmount(uint256,uint256,uint256)": "582" + } + }, + "methodIdentifiers": { + "calcBuyBackDEUS((uint256,uint256,uint256,uint256))": "3c04af9f", + "calcMint1t1DEI(uint256,uint256)": "882ab63a", + "calcMintAlgorithmicDEI(uint256,uint256)": "14da4ee1", + "calcMintFractionalDEI((uint256,uint256,uint256,uint256))": "537a30a7", + "calcRecollateralizeDEIInner(uint256,uint256,uint256,uint256,uint256)": "fc011061", + "calcRedeem1t1DEI(uint256,uint256)": "068d54aa", + "recollateralizeAmount(uint256,uint256,uint256)": "0ff24ec1" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"excess_collateral_dollar_value_d18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deus_price_usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"col_price_usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"DEUS_amount\",\"type\":\"uint256\"}],\"internalType\":\"struct DEIPoolLibrary.BuybackDEUS_Params\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"calcBuyBackDEUS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"col_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateral_amount_d18\",\"type\":\"uint256\"}],\"name\":\"calcMint1t1DEI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deus_price_usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deus_amount_d18\",\"type\":\"uint256\"}],\"name\":\"calcMintAlgorithmicDEI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"deus_price_usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"col_price_usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateral_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"col_ratio\",\"type\":\"uint256\"}],\"internalType\":\"struct DEIPoolLibrary.MintFD_Params\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"calcMintFractionalDEI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"collateral_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"col_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"global_collat_value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dei_total_supply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"global_collateral_ratio\",\"type\":\"uint256\"}],\"name\":\"calcRecollateralizeDEIInner\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"col_price_usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"DEI_amount\",\"type\":\"uint256\"}],\"name\":\"calcRedeem1t1DEI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"total_supply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"global_collateral_ratio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"global_collat_value\",\"type\":\"uint256\"}],\"name\":\"recollateralizeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/DEI/Pools/DEIPoolLibrary.sol\":\"DEIPoolLibrary\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/DEI/Pools/DEIPoolLibrary.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.8.0;\\n\\ncontract DEIPoolLibrary {\\n\\n // Constants for various precisions\\n uint256 private constant PRICE_PRECISION = 1e6;\\n\\n constructor() {}\\n\\n // ================ Structs ================\\n // Needed to lower stack size\\n struct MintFD_Params {\\n uint256 deus_price_usd; \\n uint256 col_price_usd;\\n uint256 collateral_amount;\\n uint256 col_ratio;\\n }\\n\\n struct BuybackDEUS_Params {\\n uint256 excess_collateral_dollar_value_d18;\\n uint256 deus_price_usd;\\n uint256 col_price_usd;\\n uint256 DEUS_amount;\\n }\\n\\n // ================ Functions ================\\n\\n function calcMint1t1DEI(uint256 col_price, uint256 collateral_amount_d18) public pure returns (uint256) {\\n return (collateral_amount_d18 * col_price) / (1e6);\\n }\\n\\n function calcMintAlgorithmicDEI(uint256 deus_price_usd, uint256 deus_amount_d18) public pure returns (uint256) {\\n return (deus_amount_d18 * deus_price_usd) / (1e6);\\n }\\n\\n function calcMintFractionalDEI(MintFD_Params memory params) public pure returns (uint256, uint256) {\\n // Since solidity truncates division, every division operation must be the last operation in the equation to ensure minimum error\\n // The contract must check the proper ratio was sent to mint DEI. We do this by seeing the minimum mintable DEI based on each amount \\n uint256 c_dollar_value_d18;\\n \\n // Scoping for stack concerns\\n { \\n // USD amounts of the collateral and the DEUS\\n c_dollar_value_d18 = (params.collateral_amount * params.col_price_usd) / (1e6);\\n\\n }\\n uint calculated_deus_dollar_value_d18 = ((c_dollar_value_d18 * (1e6)) / params.col_ratio) - c_dollar_value_d18;\\n\\n uint calculated_deus_needed = (calculated_deus_dollar_value_d18 * (1e6)) / params.deus_price_usd;\\n\\n return (\\n c_dollar_value_d18 + calculated_deus_dollar_value_d18,\\n calculated_deus_needed\\n );\\n }\\n\\n function calcRedeem1t1DEI(uint256 col_price_usd, uint256 DEI_amount) public pure returns (uint256) {\\n return (DEI_amount * (1e6)) / col_price_usd;\\n }\\n\\n function calcBuyBackDEUS(BuybackDEUS_Params memory params) public pure returns (uint256) {\\n // If the total collateral value is higher than the amount required at the current collateral ratio then buy back up to the possible DEUS with the desired collateral\\n require(params.excess_collateral_dollar_value_d18 > 0, \\\"No excess collateral to buy back!\\\");\\n\\n // Make sure not to take more than is available\\n uint256 deus_dollar_value_d18 = (params.DEUS_amount * (params.deus_price_usd)) / (1e6);\\n require(deus_dollar_value_d18 <= params.excess_collateral_dollar_value_d18, \\\"You are trying to buy back more than the excess!\\\");\\n\\n // Get the equivalent amount of collateral based on the market value of DEUS provided \\n uint256 collateral_equivalent_d18 = (deus_dollar_value_d18 * (1e6)) / params.col_price_usd;\\n //collateral_equivalent_d18 = collateral_equivalent_d18.sub((collateral_equivalent_d18.mul(params.buyback_fee)).div(1e6));\\n\\n return collateral_equivalent_d18;\\n\\n }\\n\\n\\n // Returns value of collateral that must increase to reach recollateralization target (if 0 means no recollateralization)\\n function recollateralizeAmount(uint256 total_supply, uint256 global_collateral_ratio, uint256 global_collat_value) public pure returns (uint256) {\\n uint256 target_collat_value = (total_supply * global_collateral_ratio) / (1e6); // We want 18 decimals of precision so divide by 1e6; total_supply is 1e18 and global_collateral_ratio is 1e6\\n // Subtract the current value of collateral from the target value needed, if higher than 0 then system needs to recollateralize\\n return target_collat_value - global_collat_value; // If recollateralization is not needed, throws a subtraction underflow\\n }\\n\\n function calcRecollateralizeDEIInner(\\n uint256 collateral_amount, \\n uint256 col_price,\\n uint256 global_collat_value,\\n uint256 dei_total_supply,\\n uint256 global_collateral_ratio\\n ) public pure returns (uint256, uint256) {\\n uint256 collat_value_attempted = (collateral_amount * col_price) / (1e6);\\n uint256 effective_collateral_ratio = (global_collat_value * (1e6)) / dei_total_supply; //returns it in 1e6\\n uint256 recollat_possible = (global_collateral_ratio * dei_total_supply - (dei_total_supply * effective_collateral_ratio)) / (1e6);\\n\\n uint256 amount_to_recollat;\\n if(collat_value_attempted <= recollat_possible){\\n amount_to_recollat = collat_value_attempted;\\n } else {\\n amount_to_recollat = recollat_possible;\\n }\\n\\n return ((amount_to_recollat * (1e6)) / col_price, amount_to_recollat);\\n\\n }\\n\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x6c2db8a8f39e018d8beb032c29cb86e4c99766669e511f328fa8faf0b173966a\",\"license\":\"GPL-2.0-or-later\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/DEI/Pools/Pool_DAI.sol": { + "Pool_DAI": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_dei_contract_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_deus_contract_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_collateral_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_trusty_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_admin_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_pool_ceiling", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_library", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "BuybackToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "MintingToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "new_ceiling", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_bonus_rate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_redemption_delay", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_mint_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_redeem_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_buyback_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_recollat_fee", + "type": "uint256" + } + ], + "name": "PoolParametersSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "RecollateralizeToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "RedeemingToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "daoShare", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "daoShareCollected", + "type": "event" + }, + { + "inputs": [], + "name": "DAI_address", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DAO_SHARE_COLLECTOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PARAMETER_SETTER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TRUSTY_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "collat_usd_price", + "type": "uint256[]" + } + ], + "name": "availableExcessCollatDV", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bonus_rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEUS_amount", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "collateral_price", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "buyBackDEUS", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "buyBackPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "buyback_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collat_usd_price", + "type": "uint256" + } + ], + "name": "collatDollarBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "collectDaoShare", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "collectRedemption", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "daoShare", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "emergencyWithdrawERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getChainID", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "lastRedeemed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mint1t1DEI", + "outputs": [ + { + "internalType": "uint256", + "name": "dei_amount_d18", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deus_amount_d18", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mintAlgorithmicDEI", + "outputs": [ + { + "internalType": "uint256", + "name": "dei_amount_d18", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mintFractionalDEI", + "outputs": [ + { + "internalType": "uint256", + "name": "mint_amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "mintPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minting_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pausedPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pool_ceiling", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "recollat_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "pool_collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "collateral_price", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "internalType": "struct DEIPool.RecollateralizeDEI", + "name": "inputs", + "type": "tuple" + } + ], + "name": "recollateralizeDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "recollateralizePaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeem1t1DEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeemAlgorithmicDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "redeemCollateralBalances", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "redeemDEUSBalances", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeemFractionalDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "redeemPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "redemption_delay", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "redemption_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "new_ceiling", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_bonus_rate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_redemption_delay", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_mint_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_redeem_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_buyback_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_recollat_fee", + "type": "uint256" + } + ], + "name": "setPoolParameters", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleBuyBack", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleMinting", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleRecollateralize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleRedeeming", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unclaimedPoolCollateral", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unclaimedPoolDEUS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "getRoleAdmin(bytes32)": { + "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." + }, + "getRoleMember(bytes32,uint256)": { + "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information." + }, + "getRoleMemberCount(bytes32)": { + "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role." + }, + "grantRole(bytes32,address)": { + "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role." + }, + "hasRole(bytes32,address)": { + "details": "Returns `true` if `account` has been granted `role`." + }, + "renounceRole(bytes32,address)": { + "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`." + }, + "revokeRole(bytes32,address)": { + "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role." + } + }, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": { + "@_1843": { + "entryPoint": null, + "id": 1843, + "parameterSlots": 7, + "returnSlots": 0 + }, + "@_3933": { + "entryPoint": null, + "id": 3933, + "parameterSlots": 7, + "returnSlots": 0 + }, + "@_add_11596": { + "entryPoint": 1093, + "id": 11596, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_contains_11696": { + "entryPoint": null, + "id": 11696, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_6258": { + "entryPoint": 953, + "id": 6258, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_msgSender_444": { + "entryPoint": null, + "id": 444, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_setupRole_6209": { + "entryPoint": 937, + "id": 6209, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@add_11764": { + "entryPoint": 1056, + "id": 11764, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_address_fromMemory": { + "entryPoint": 1175, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256t_address_fromMemory": { + "entryPoint": 1204, + "id": null, + "parameterSlots": 2, + "returnSlots": 7 + }, + "abi_decode_tuple_t_uint8_fromMemory": { + "entryPoint": 1344, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_088ae2e6daf22183595f1e6a5f7779d3f2c298acab226e55240662c2e1b8abe6__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_2a5a9515df0747227c3d5efc42180f2060cd0f29e443cb46b69635b43998b954__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 1388, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:2107:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "74:117:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "84:22:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "99:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "93:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "93:13:39" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "84:5:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "169:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "178:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "181:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "171:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "171:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "171:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "128:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "139:5:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "154:3:39", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "159:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "150:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "150:11:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "163:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "146:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "146:19:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "135:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "135:31:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "125:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "125:42:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "118:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "118:50:39" + }, + "nodeType": "YulIf", + "src": "115:70:39" + } + ] + }, + "name": "abi_decode_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "53:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "64:5:39", + "type": "" + } + ], + "src": "14:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "379:515:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "426:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "435:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "438:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "428:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "428:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "428:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "400:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "409:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "396:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "396:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "421:3:39", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "392:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "392:33:39" + }, + "nodeType": "YulIf", + "src": "389:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "451:50:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "491:9:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "461:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "461:40:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "451:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "510:59:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "554:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "565:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "550:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "550:18:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "520:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "520:49:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "510:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "578:59:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "622:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "633:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "618:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "618:18:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "588:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "588:49:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "578:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "646:59:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "690:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "701:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "686:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "686:18:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "656:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "656:49:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "646:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "714:60:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "758:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "769:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "754:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "754:19:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "724:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "724:50:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "714:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "783:36:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "803:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "814:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "799:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "799:19:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "793:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "793:26:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "783:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "828:60:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "872:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "883:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "868:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "868:19:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "838:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "838:50:39" + }, + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "828:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "297:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "308:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "320:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "328:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "336:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "344:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "352:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "360:6:39", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "368:6:39", + "type": "" + } + ], + "src": "196:698:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1073:177:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1090:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1101:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1083:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1083:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1083:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1124:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1135:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1120:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1120:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1140:2:39", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1113:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1113:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1113:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1163:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1174:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1159:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1159:18:39" + }, + { + "hexValue": "504f4f4c3a3a5a65726f2061646472657373206465746563746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "1179:29:39", + "type": "", + "value": "POOL::Zero address detected" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1152:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1152:57:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1152:57:39" + }, + { + "nodeType": "YulAssignment", + "src": "1218:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1230:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1241:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1226:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1226:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1218:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_088ae2e6daf22183595f1e6a5f7779d3f2c298acab226e55240662c2e1b8abe6__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1050:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1064:4:39", + "type": "" + } + ], + "src": "899:351:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1334:194:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1380:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1389:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1392:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1382:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1382:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1382:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1355:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1364:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1351:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1351:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1376:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1347:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1347:32:39" + }, + "nodeType": "YulIf", + "src": "1344:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1405:29:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1424:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1418:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "1418:16:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1409:5:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1482:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1491:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1494:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1484:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1484:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1484:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1456:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1467:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1474:4:39", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1463:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1463:16:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1453:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1453:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1446:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1446:35:39" + }, + "nodeType": "YulIf", + "src": "1443:55:39" + }, + { + "nodeType": "YulAssignment", + "src": "1507:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1517:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1507:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint8_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1300:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1311:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1323:6:39", + "type": "" + } + ], + "src": "1255:273:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1582:173:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1612:111:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1633:1:39", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1640:3:39", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1645:10:39", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1636:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1636:20:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1626:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1626:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1626:31:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1677:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1680:4:39", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1670:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1670:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1670:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1705:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1708:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1698:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1698:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1698:15:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1598:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1601:1:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1595:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1595:8:39" + }, + "nodeType": "YulIf", + "src": "1592:131:39" + }, + { + "nodeType": "YulAssignment", + "src": "1732:17:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1744:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1747:1:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1740:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1740:9:39" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "1732:4:39" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "1564:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "1567:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "1573:4:39", + "type": "" + } + ], + "src": "1533:222:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1934:171:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1951:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1962:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1944:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1944:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1944:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1985:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1996:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1981:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1981:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2001:2:39", + "type": "", + "value": "21" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1974:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1974:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1974:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2024:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2035:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2020:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2020:18:39" + }, + { + "hexValue": "5a65726f2061646472657373206465746563746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "2040:23:39", + "type": "", + "value": "Zero address detected" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2013:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2013:51:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2013:51:39" + }, + { + "nodeType": "YulAssignment", + "src": "2073:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2085:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2096:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2081:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2081:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2073:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_2a5a9515df0747227c3d5efc42180f2060cd0f29e443cb46b69635b43998b954__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1911:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1925:4:39", + "type": "" + } + ], + "src": "1760:345:39" + } + ] + }, + "contents": "{\n { }\n function abi_decode_address_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256t_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n value0 := abi_decode_address_fromMemory(headStart)\n value1 := abi_decode_address_fromMemory(add(headStart, 32))\n value2 := abi_decode_address_fromMemory(add(headStart, 64))\n value3 := abi_decode_address_fromMemory(add(headStart, 96))\n value4 := abi_decode_address_fromMemory(add(headStart, 128))\n value5 := mload(add(headStart, 160))\n value6 := abi_decode_address_fromMemory(add(headStart, 192))\n }\n function abi_encode_tuple_t_stringliteral_088ae2e6daf22183595f1e6a5f7779d3f2c298acab226e55240662c2e1b8abe6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"POOL::Zero address detected\")\n tail := add(headStart, 96)\n }\n function abi_decode_tuple_t_uint8_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n value0 := value\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n diff := sub(x, y)\n }\n function abi_encode_tuple_t_stringliteral_2a5a9515df0747227c3d5efc42180f2060cd0f29e443cb46b69635b43998b954__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 21)\n mstore(add(headStart, 64), \"Zero address detected\")\n tail := add(headStart, 96)\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "60a06040526000600e819055600f819055611d4c60105560026011556012556013805463ffffffff60a01b191690553480156200003b57600080fd5b50604051620063c5380380620063c58339810160408190526200005e91620004b4565b868686868686866001600160a01b038716158015906200008657506001600160a01b03861615155b80156200009b57506001600160a01b03851615155b8015620000b057506001600160a01b03841615155b8015620000c557506001600160a01b03831615155b8015620000da57506001600160a01b03811615155b6200012c5760405162461bcd60e51b815260206004820152601b60248201527f504f4f4c3a3a5a65726f2061646472657373206465746563746564000000000060448201526064015b60405180910390fd5b601380546001600160a01b038084166001600160a01b031992831617909255600380548a8416908316179055600480548984169083161781556002805493891693831684179055600180549092168317909155600e8490556040805163313ce56760e01b8152905163313ce567928281019260209291908290030181865afa158015620001bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e3919062000540565b620001f39060ff1660126200056c565b60805262000203600084620003a9565b6200022f7fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b85620003a9565b6200025b7fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c385785620003a9565b620002877f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f85620003a9565b620002b37f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf85620003a9565b620002df7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c85620003a9565b6200030b7fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f24050985620003a9565b50505050506001600160a01b038716151591506200036e90505760405162461bcd60e51b815260206004820152601560248201527f5a65726f20616464726573732064657465637465640000000000000000000000604482015260640162000123565b6200037b600033620003a9565b5050601480546001600160a01b0319166001600160a01b039490941693909317909255506200059292505050565b620003b58282620003b9565b5050565b600082815260208181526040909120620003de91839062004ad062000420821b17901c565b15620003b55760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b60006200043c836001600160601b0319606085901b1662000445565b90505b92915050565b60008181526001830160205260408120546200048e575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200043f565b5060006200043f565b80516001600160a01b0381168114620004af57600080fd5b919050565b600080600080600080600060e0888a031215620004d057600080fd5b620004db8862000497565b9650620004eb6020890162000497565b9550620004fb6040890162000497565b94506200050b6060890162000497565b93506200051b6080890162000497565b925060a088015191506200053260c0890162000497565b905092959891949750929550565b6000602082840312156200055357600080fd5b815160ff811681146200056557600080fd5b9392505050565b6000828210156200058d57634e487b7160e01b600052601160045260246000fd5b500390565b608051615de6620005df60003960008181610cc1015281816115850152818161228101528181612afd01528181612def015281816134c9015281816139a001526147af0152615de66000f3fe608060405234801561001057600080fd5b506004361061032b5760003560e01c80637b0461e9116101b2578063b6258aaa116100f9578063cb73999f116100a2578063e3d84d5e1161007c578063e3d84d5e146106df578063eb2d7461146106f2578063fa4dfa3a14610705578063fede5c9c1461072557600080fd5b8063cb73999f146106bb578063d547741f146106c4578063daa50485146106d757600080fd5b8063c6301e5d116100d3578063c6301e5d1461068c578063c74ec56a1461069f578063ca15c873146106a857600080fd5b8063b6258aaa1461065d578063c3355b8d14610670578063c410ca1b1461067957600080fd5b806391d148541161015b578063a217fddf11610135578063a217fddf1461060f578063abae2c4c14610617578063b235d4681461063757600080fd5b806391d14854146105d6578063928d2b31146105e9578063978b73b5146105fc57600080fd5b80637f877f851161018c5780637f877f851461056d57806388d19f1b146105955780639010d07c1461059e57600080fd5b80637b0461e9146105375780637d55094d146105405780637e4831d31461054857600080fd5b806340e14b7811610276578063564b81ef1161021f5780636d2c5615116101f95780636d2c5615146104c65780636d82e314146104fd5780637901330b1461052457600080fd5b8063564b81ef146104905780635de207cc146104965780636526a12a146104bd57600080fd5b80634ebbe762116102505780634ebbe7621461046257806350c9ecd91461047557806354f9769d1461047d57600080fd5b806340e14b781461043e57806342d15aec146104515780634c6349341461045957600080fd5b80632f2ff15d116102d85780633648b7dc116102b25780633648b7dc1461040257806336568abe1461040b5780633b92da471461041e57600080fd5b80632f2ff15d146103b557806332ad1ee4146103c857806334ddb95d146103db57600080fd5b806315128425116103095780631512842514610376578063248a9ca31461037f578063254cd2bd146103a257600080fd5b806308a7493d14610330578063101197c71461036357806312ace5a21461036c575b600080fd5b61035061033e366004615193565b600a6020526000908152604090205481565b6040519081526020015b60405180910390f35b61035060075481565b61037461072e565b005b61035060115481565b61035061038d3660046151ae565b60009081526020819052604090206002015490565b6103746103b0366004615213565b6108e7565b6103746103c3366004615274565b610fde565b6103506103d6366004615213565b611094565b6103507f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610350600c5481565b610374610419366004615274565b61176a565b61035061042c366004615193565b60096020526000908152604090205481565b61035061044c3660046153d6565b611819565b610374611a37565b61035060105481565b610374610470366004615413565b611afe565b610374611c3d565b61035061048b36600461545f565b611cfb565b46610350565b6103507fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f24050981565b610350600e5481565b6013546104ed90760100000000000000000000000000000000000000000000900460ff1681565b604051901515815260200161035a565b6103507f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e53081565b610374610532366004615274565b612586565b610350600b5481565b61037461271a565b6013546104ed9074010000000000000000000000000000000000000000900460ff1681565b6013546104ed9077010000000000000000000000000000000000000000000000900460ff1681565b61035060125481565b6105b16105ac3660046154d3565b6127d5565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161035a565b6104ed6105e4366004615274565b6127f6565b6103746105f73660046155f7565b61280e565b61037461060a366004615213565b612f1a565b610350600081565b610350610625366004615193565b600d6020526000908152604090205481565b6013546104ed907501000000000000000000000000000000000000000000900460ff1681565b61035061066b3660046151ae565b6134bd565b61035060055481565b6103746106873660046156b0565b6135ac565b61035061069a366004615213565b613a91565b610350600f5481565b6103506106b63660046151ae565b614079565b61035060065481565b6103746106d2366004615274565b614090565b610374614138565b6103746106ed366004615737565b6141f4565b610374610700366004615773565b61431d565b6014546105b19073ffffffffffffffffffffffffffffffffffffffff1681565b61035060085481565b601154336000908152600d6020526040902054439161074c916157fa565b1115610805576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605b60248201527f504f4f4c3a3a636f6c6c656374526564656d7074696f6e3a204d75737420776160448201527f697420666f7220726564656d7074696f6e5f64656c617920626c6f636b73206260648201527f65666f726520636f6c6c656374696e6720726564656d7074696f6e0000000000608482015260a4015b60405180910390fd5b336000908152600960205260408120548190819081901561084d573360009081526009602052604081208054919055600c54909250610845908390615812565b600c55600193505b336000908152600a60205260409020541561088d5750336000908152600a602052604081208054919055600b54610885908290615812565b600b55600192505b83156108b7576004546108b79073ffffffffffffffffffffffffffffffffffffffff163384614b02565b82156108e1576001546108e19073ffffffffffffffffffffffffffffffffffffffff163383614b02565b50505050565b6013547501000000000000000000000000000000000000000000900460ff161561096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa1580156109df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a039190615829565b14610a6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203d3d203100000060448201526064016107fc565b43831015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90610bed9084908790879060040161588b565b602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e919061596d565b610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a72656465656d3174314445493a20696e76616c6964207369676e60448201527f617475726573000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000610ce77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b610cf19088615ac2565b6013546040517f068d54aa000000000000000000000000000000000000000000000000000000008152600481018990526024810183905291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063068d54aa90604401602060405180830381865afa158015610d6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d919190615829565b9050620f4240600654620f4240610da89190615812565b610db29083615afd565b610dbc9190615ac2565b600b546001546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152929350909173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e569190615829565b610e609190615812565b811115610ec9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a6020526040902054610ee49082906157fa565b336000908152600a6020526040902055600b54610f029082906157fa565b600b55336000908152600d60205260409020439055600654620f424090610f29908a615afd565b610f339190615ac2565b60126000828254610f4491906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae906044015b600060405180830381600087803b158015610fbc57600080fd5b505af1158015610fd0573d6000803e3d6000fd5b505050505050505050505050565b600082815260208190526040902060020154610ffa90336127f6565b611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084016107fc565b6110908282614c72565b5050565b60135460009074010000000000000000000000000000000000000000900460ff161561111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa15801561118e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b29190615829565b101561121a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203e3d203100000060448201526064016107fc565b600e54600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015289929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561128f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b39190615829565b6112bd9190615812565b6112c791906157fa565b111561132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5b506f6f6c277320436c6f7365645d3a204365696c696e67207265616368656460448201526064016107fc565b438410156113bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a6d696e743174314445493a207369676e6174757265206973206560448201527f787069726564000000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906114b29084908890889060040161588b565b602060405180830381865afa1580156114cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f3919061596d565b61157e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6d696e743174314445493a20696e76616c6964207369676e617460448201527f757265730000000000000000000000000000000000000000000000000000000060648201526084016107fc565b60006115ab7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6115b59089615afd565b6013546040517f882ab63a000000000000000000000000000000000000000000000000000000008152600481018a90526024810183905291925073ffffffffffffffffffffffffffffffffffffffff169063882ab63a90604401602060405180830381865afa15801561162c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116509190615829565b9250620f4240600554620f42406116679190615812565b6116719085615afd565b61167b9190615ac2565b6001549093506116a39073ffffffffffffffffffffffffffffffffffffffff1633308b614cd8565b620f4240600554846116b59190615afd565b6116bf9190615ac2565b601260008282546116d091906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561174757600080fd5b505af115801561175b573d6000803e3d6000fd5b50505050505095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016107fc565b6110908282614e76565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ad9190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561191e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119429190615829565b6003546040517f2480fcea00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690632480fcea9061199e908890600401615b3a565b602060405180830381865afa1580156119bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119df9190615829565b9050620f42408211156119f357620f424091505b6000620f4240611a038486615afd565b611a0d9190615ac2565b905080821115611a2b57611a218183615812565b9695505050505050565b50600095945050505050565b611a617f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f336127f6565b611a6a57600080fd5b6013805460ff76010000000000000000000000000000000000000000000080830482161581027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f2fda313d9b5bb0b73bd003153f2fccbc0dca49791fdd1184dfad82b44f54bd2e93611af49390049091161515815260200190565b60405180910390a1565b611b287fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f240509336127f6565b611bb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f504f4f4c3a2043616c6c6572206973206e6f7420504152414d455445525f534560448201527f545445525f524f4c45000000000000000000000000000000000000000000000060648201526084016107fc565b600e8790556010869055601185905560058490556006839055600782905560088190556040805188815260208101889052908101869052606081018590526080810184905260a0810183905260c081018290527f17fe98b66d27bd793ea01bd8a23a54acab8eeb167d9eb016a0c7cd71c573920c9060e00160405180910390a150505050505050565b611c677f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf336127f6565b611c7057600080fd5b6013805460ff7701000000000000000000000000000000000000000000000080830482161581027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f4f40fd1c59f78d7a2220da638cd9400daba01e57c7965702f390bf13133cc31f93611af49390049091161515815260200190565b60135460009074010000000000000000000000000000000000000000900460ff1615611d83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015611df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e179190615829565b9050620f424081108015611e2b5750600081115b611eb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f436f6c6c61746572616c20726174696f206e6565647320746f2062652062657460448201527f7765656e202e30303030303120616e64202e393939393939000000000000000060648201526084016107fc565b600e54600b546001546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528c929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f509190615829565b611f5a9190615812565b611f6491906157fa565b1115612019576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f506f6f6c206365696c696e6720726561636865642c206e6f206d6f7265204445908201527f492063616e206265206d696e7465642077697468207468697320636f6c6c617460648201527f6572616c00000000000000000000000000000000000000000000000000000000608482015260a4016107fc565b438510156120a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a207369676e61747560448201527f726520697320657870697265642e00000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018d90529390941b909316605484015260688301899052608883018890524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906121829084908990899060cc0161588b565b602060405180830381865afa15801561219f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c3919061596d565b61224f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a20696e76616c696460448201527f207369676e61747572657300000000000000000000000000000000000000000060648201526084016107fc565b61227a6040518060800160405280600081526020016000815260200160008152602001600081525090565b60006122a77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6122b1908d615afd565b604080516080810182528b8152602081018d9052808201929092526060820186905260135490517f537a30a70000000000000000000000000000000000000000000000000000000081529193506000925073ffffffffffffffffffffffffffffffffffffffff169063537a30a79061232d908590600401615b7e565b6040805180830381865afa158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190615ba9565b90955090508a8111156123dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e6f7420656e6f756768204445555320696e707574746564000000000000000060448201526064016107fc565b620f4240600554620f42406123f19190615812565b6123fb9087615afd565b6124059190615ac2565b600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820184905291965073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561247d57600080fd5b505af1158015612491573d6000803e3d6000fd5b50506001546124bb925073ffffffffffffffffffffffffffffffffffffffff16905033308f614cd8565b620f4240600554866124cd9190615afd565b6124d79190615ac2565b601260008282546124e891906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810187905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561255f57600080fd5b505af1158015612573573d6000803e3d6000fd5b5050505050505050979650505050505050565b6125b07f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e530336127f6565b6125b957600080fd5b601254821115612625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f616d6f756e743c3d64616f53686172650000000000000000000000000000000060448201526064016107fc565b6003546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018590529091169063b4f56b2690604401600060405180830381600087803b15801561269957600080fd5b505af11580156126ad573d6000803e3d6000fd5b5050505081601260008282546126c39190615812565b90915550506040805183815273ffffffffffffffffffffffffffffffffffffffff831660208201527f3a708f2f1c75b12457d207cf1e259ab9f87bbfccb29672903acf4661bd342e49910160405180910390a15050565b6127447fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b336127f6565b61274d57600080fd5b6013805460ff7401000000000000000000000000000000000000000080830482161581027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f6bdfe227d5db299c59aa56d5f846f40dbd73b271aaa78e18ed74fc3e00b8aa6b93611af49390049091161515815260200190565b60008281526020819052604081206127ed9083614edc565b90505b92915050565b60008281526020819052604081206127ed9083614ef2565b601354760100000000000000000000000000000000000000000000900460ff16156128bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a205265636f6c6c60448201527f61746572616c697a65206973207061757365640000000000000000000000000060648201526084016107fc565b438160800151101561294f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b6002546040828101516004546060850151608086015193516000956129989573ffffffffffffffffffffffffffffffffffffffff91821695949190911692914690602001615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052805160209091012060035460a08501517f6793f0ac00000000000000000000000000000000000000000000000000000000845291935073ffffffffffffffffffffffffffffffffffffffff1691636793f0ac91612a2991859190600401615c78565b602060405180830381865afa158015612a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6a919061596d565b612af6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6000612b237f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b8351612b2f9190615afd565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc49190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c599190615829565b60035460408088015190517f2480fcea00000000000000000000000000000000000000000000000000000000815292935060009273ffffffffffffffffffffffffffffffffffffffff90921691632480fcea91612cb891600401615b3a565b602060405180830381865afa158015612cd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf99190615829565b60135460408801518051929350600092839273ffffffffffffffffffffffffffffffffffffffff169163fc01106191899190612d3790600190615812565b81518110612d4757612d47615d36565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015260448101869052606481018890526084810187905260a4016040805180830381865afa158015612dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de39190615ba9565b90925090506000612e157f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b612e1f9084615ac2565b905060008960600151600854601054620f4240612e3c91906157fa565b612e469190615812565b612e509085615afd565b612e5a9190615ac2565b600154909150612e829073ffffffffffffffffffffffffffffffffffffffff16333085614cd8565b600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815233928101929092526024820183905273ffffffffffffffffffffffffffffffffffffffff169063b4f56b26906044015b600060405180830381600087803b158015612ef657600080fd5b505af1158015612f0a573d6000803e3d6000fd5b5050505050505050505050505050565b6013547501000000000000000000000000000000000000000000900460ff1615612fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561300d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130319190615829565b156130be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20436f6c6c60448201527f61746572616c20726174696f206d75737420626520300000000000000000000060648201526084016107fc565b4383101561314e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4445493a3a72656465656d416c676f726974686d69634445493a207369676e6160448201527f7475726520697320657870697265642e0000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906132419084908790879060040161588b565b602060405180830381865afa15801561325e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613282919061596d565b61330e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20696e766160448201527f6c6964207369676e61747572657300000000000000000000000000000000000060648201526084016107fc565b6006548690620f4240906133229082615812565b61332c9083615afd565b6133369190615ac2565b9050600086613348620f424084615afd565b6133529190615ac2565b336000908152600960205260409020549091506133709082906157fa565b33600090815260096020526040902055600c5461338e9082906157fa565b600c55336000908152600d60205260409020439055600654620f4240906133b5908a615afd565b6133bf9190615ac2565b601260008282546133d091906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561344757600080fd5b505af115801561345b573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820185905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401610fa2565b6000620f4240826134ef7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015613560573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135849190615829565b61358e9190615812565b6135989190615afd565b6135a29190615afd565b6127f09190615ac2565b60135477010000000000000000000000000000000000000000000000900460ff1615613659576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6275794261636b444555533a204275796261636b20697320706160448201527f757365640000000000000000000000000000000000000000000000000000000060648201526084016107fc565b438310156136e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4445493a3a6275794261636b444555533a207369676e6174757265206973206560448201527f7870697265642e0000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460045460009173ffffffffffffffffffffffffffffffffffffffff9081169188911687874660405160200161372696959493929190615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906137b59084908790879060040161588b565b602060405180830381865afa1580156137d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f6919061596d565b613882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f504f4f4c3a3a6275794261636b444555533a20696e76616c6964207369676e6160448201527f747572657300000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000604051806080016040528061389889611819565b81526020018781526020018860018a516138b29190615812565b815181106138c2576138c2615d36565b602002602001015181526020018981525090506000620f4240600754620f42406138ec9190615812565b6013546040517f3c04af9f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633c04af9f90613942908790600401615b7e565b602060405180830381865afa15801561395f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139839190615829565b61398d9190615afd565b6139979190615ac2565b905060006139c67f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6139d09083615ac2565b600480546040517fa8a778ae0000000000000000000000000000000000000000000000000000000081523392810192909252602482018d905291925073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015613a4857600080fd5b505af1158015613a5c573d6000803e3d6000fd5b5050600154613a85925073ffffffffffffffffffffffffffffffffffffffff1690503383614b02565b50505050505050505050565b60135460009074010000000000000000000000000000000000000000900460ff1615613b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613baa9190615829565b15613c11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f436f6c6c61746572616c20726174696f206d757374206265203000000000000060448201526064016107fc565b43841015613ca1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90613d949084908890889060040161588b565b602060405180830381865afa158015613db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dd5919061596d565b613e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6013546040517f14da4ee1000000000000000000000000000000000000000000000000000000008152600481018890526024810189905273ffffffffffffffffffffffffffffffffffffffff909116906314da4ee190604401602060405180830381865afa158015613ed7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613efb9190615829565b9150620f4240600554620f4240613f129190615812565b613f1c9084615afd565b613f269190615ac2565b9150620f424060055483613f3a9190615afd565b613f449190615ac2565b60126000828254613f5591906157fa565b9091555050600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820189905273ffffffffffffffffffffffffffffffffffffffff169063a8a778ae90604401600060405180830381600087803b158015613fcd57600080fd5b505af1158015613fe1573d6000803e3d6000fd5b50506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810186905273ffffffffffffffffffffffffffffffffffffffff909116925063b4f56b269150604401600060405180830381600087803b15801561405757600080fd5b505af115801561406b573d6000803e3d6000fd5b505050505095945050505050565b60008181526020819052604081206127f090614f31565b6000828152602081905260409020600201546140ac90336127f6565b61180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b650000000000000000000000000000000060648201526084016107fc565b6141627fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c3857336127f6565b61416b57600080fd5b6013805460ff750100000000000000000000000000000000000000000080830482161581027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f5860c5063a65e23cea4e2e2925f1a841bb6d1bc9615bd425f8dd084980b0514193611af49390049091161515815260200190565b61421e7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336127f6565b614284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f504f4f4c3a3a796f7520617265206e6f7420747275737479000000000000000060448201526064016107fc565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af11580156142f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e1919061596d565b6013547501000000000000000000000000000000000000000000900460ff16156143a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015614413573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144379190615829565b9050620f42408110801561444b5750600081115b6144fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20436f6c6c6160448201527f746572616c20726174696f206e6565647320746f206265206265747765656e2060648201527f2e30303030303120616e64202e39393939393900000000000000000000000000608482015260a4016107fc565b4384101561458d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4445493a3a72656465656d4672616374696f6e616c4445493a207369676e617460448201527f757265206973206578706972656400000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018c90529390941b909316605484015260688301889052608883018790524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906146669084908890889060cc0161588b565b602060405180830381865afa158015614683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146a7919061596d565b614733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20696e76616c60448201527f6964207369676e6174757265730000000000000000000000000000000000000060648201526084016107fc565b60008060008990506000620f4240600654620f42406147529190615812565b61475c908e615afd565b6147669190615ac2565b90506000620f42406147788884615afd565b6147829190615ac2565b61478c9083615812565b90508a61479c620f424083615afd565b6147a69190615ac2565b945060006147d57f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6147df9084615ac2565b90506000620f42406147f18a84615afd565b6147fb9190615ac2565b90508461480b620f424083615afd565b6148159190615ac2565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015292985090965073ffffffffffffffffffffffffffffffffffffffff1694506370a08231935060240191506148789050565b602060405180830381865afa158015614895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148b99190615829565b6148c39190615812565b81111561492c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a60205260409020546149479082906157fa565b336000908152600a6020526040902055600b546149659082906157fa565b600b55336000908152600960205260409020546149839083906157fa565b33600090815260096020526040902055600c546149a19083906157fa565b600c55336000908152600d60205260409020439055600654620f4240906149c8908c615afd565b6149d29190615ac2565b601260008282546149e391906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018c905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015614a5a57600080fd5b505af1158015614a6e573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820186905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401612edc565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16614f3b565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691614b999190615d65565b6000604051808303816000865af19150503d8060008114614bd6576040519150601f19603f3d011682016040523d82523d6000602084013e614bdb565b606091505b5091509150818015614c05575080511580614c05575080806020019051810190614c05919061596d565b614c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016107fc565b5050505050565b6000828152602081905260409020614c8a9082614ad0565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691614d779190615d65565b6000604051808303816000865af19150503d8060008114614db4576040519150601f19603f3d011682016040523d82523d6000602084013e614db9565b606091505b5091509150818015614de3575080511580614de3575080806020019051810190614de3919061596d565b614e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016107fc565b505050505050565b6000828152602081905260409020614e8e9082614f8a565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000614ee88383614fbc565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156127ed565b60006127f0825490565b6000818152600183016020526040812054614f82575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556127f0565b5060006127f0565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16615077565b8154600090821061504f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f647300000000000000000000000000000000000000000000000000000000000060648201526084016107fc565b82600001828154811061506457615064615d36565b9060005260206000200154905092915050565b6000818152600183016020526040812054801561516057600061509b600183615812565b85549091506000906150af90600190615812565b905060008660000182815481106150c8576150c8615d36565b90600052602060002001549050808760000184815481106150eb576150eb615d36565b6000918252602090912001556151028360016157fa565b6000828152600189016020526040902055865487908061512457615124615d81565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506127f0565b60009150506127f0565b803573ffffffffffffffffffffffffffffffffffffffff8116811461518e57600080fd5b919050565b6000602082840312156151a557600080fd5b6127ed8261516a565b6000602082840312156151c057600080fd5b5035919050565b60008083601f8401126151d957600080fd5b50813567ffffffffffffffff8111156151f157600080fd5b6020830191508360208260051b850101111561520c57600080fd5b9250929050565b60008060008060006080868803121561522b57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561525757600080fd5b615263888289016151c7565b969995985093965092949392505050565b6000806040838503121561528757600080fd5b823591506152976020840161516a565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff811182821017156152f2576152f26152a0565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561533f5761533f6152a0565b604052919050565b600067ffffffffffffffff821115615361576153616152a0565b5060051b60200190565b600082601f83011261537c57600080fd5b8135602061539161538c83615347565b6152f8565b82815260059290921b840181019181810190868411156153b057600080fd5b8286015b848110156153cb57803583529183019183016153b4565b509695505050505050565b6000602082840312156153e857600080fd5b813567ffffffffffffffff8111156153ff57600080fd5b61540b8482850161536b565b949350505050565b600080600080600080600060e0888a03121561542e57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080600080600080600060c0888a03121561547a57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a088013567ffffffffffffffff8111156154b457600080fd5b6154c08a828b016151c7565b989b979a50959850939692959293505050565b600080604083850312156154e657600080fd5b50508035926020909101359150565b6000601f838184011261550757600080fd5b8235602061551761538c83615347565b82815260059290921b8501810191818101908784111561553657600080fd5b8287015b848110156155eb57803567ffffffffffffffff8082111561555b5760008081fd5b818a0191508a603f8301126155705760008081fd5b85820135604082821115615586576155866152a0565b6155b5887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c850116016152f8565b92508183528c818386010111156155cc5760008081fd5b818185018985013750600090820187015284525091830191830161553a565b50979650505050505050565b60006020828403121561560957600080fd5b813567ffffffffffffffff8082111561562157600080fd5b9083019060c0828603121561563557600080fd5b61563d6152cf565b823581526020830135602082015260408301358281111561565d57600080fd5b6156698782860161536b565b604083015250606083013560608201526080830135608082015260a08301358281111561569557600080fd5b6156a1878286016154f5565b60a08301525095945050505050565b60008060008060008060a087890312156156c957600080fd5b86359550602087013567ffffffffffffffff808211156156e857600080fd5b6156f48a838b0161536b565b96506040890135955060608901359450608089013591508082111561571857600080fd5b5061572589828a016151c7565b979a9699509497509295939492505050565b60008060006060848603121561574c57600080fd5b6157558461516a565b92506020840135915061576a6040850161516a565b90509250925092565b60008060008060008060a0878903121561578c57600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff8111156157bf57600080fd5b61572589828a016151c7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561580d5761580d6157cb565b500190565b600082821015615824576158246157cb565b500390565b60006020828403121561583b57600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b8781101561595f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18a360301811261591657600080fd5b8901803567ffffffffffffffff81111561592f57600080fd5b8036038b131561593e57600080fd5b61594b8782888501615842565b9650505091830191908301906001016158b5565b509298975050505050505050565b60006020828403121561597f57600080fd5b8151801515811461598f57600080fd5b9392505050565b600181815b808511156159ef57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156159d5576159d56157cb565b808516156159e257918102915b93841c939080029061599b565b509250929050565b600082615a06575060016127f0565b81615a13575060006127f0565b8160018114615a295760028114615a3357615a4f565b60019150506127f0565b60ff841115615a4457615a446157cb565b50506001821b6127f0565b5060208310610133831016604e8410600b8410161715615a72575081810a6127f0565b615a7c8383615996565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615aae57615aae6157cb565b029392505050565b60006127ed83836159f7565b600082615af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615b3557615b356157cb565b500290565b6020808252825182820181905260009190848201906040850190845b81811015615b7257835183529284019291840191600101615b56565b50909695505050505050565b81518152602080830151908201526040808301519082015260608083015190820152608081016127f0565b60008060408385031215615bbc57600080fd5b505080516020909101519092909150565b60007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808960601b1683526014830188516020808b0160005b83811015615c2257815185529382019390820190600101615c06565b5050505060609790971b168652505060148401929092526034830152605482015260740192915050565b60005b83811015615c67578181015183820152602001615c4f565b838111156108e15750506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015615d28577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088870301845281518051808852615ceb81888a01898501615c4c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01696909601850195509284019290840190600101615ca6565b509398975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008251615d77818460208701615c4c565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212202c9b857d563f37079c55cac8650b11b2ed95e9e47dc81d7ea1fc60ca817bdec064736f6c634300080a0033", + "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0xE DUP2 SWAP1 SSTORE PUSH1 0xF DUP2 SWAP1 SSTORE PUSH2 0x1D4C PUSH1 0x10 SSTORE PUSH1 0x2 PUSH1 0x11 SSTORE PUSH1 0x12 SSTORE PUSH1 0x13 DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x63C5 CODESIZE SUB DUP1 PUSH3 0x63C5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x5E SWAP2 PUSH3 0x4B4 JUMP JUMPDEST DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND ISZERO DUP1 ISZERO SWAP1 PUSH3 0x86 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH3 0x9B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH3 0xB0 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH3 0xC5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH3 0xDA JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO ISZERO JUMPDEST PUSH3 0x12C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A5A65726F20616464726573732064657465637465640000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x3 DUP1 SLOAD DUP11 DUP5 AND SWAP1 DUP4 AND OR SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP10 DUP5 AND SWAP1 DUP4 AND OR DUP2 SSTORE PUSH1 0x2 DUP1 SLOAD SWAP4 DUP10 AND SWAP4 DUP4 AND DUP5 OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP3 AND DUP4 OR SWAP1 SWAP2 SSTORE PUSH1 0xE DUP5 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x313CE567 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH4 0x313CE567 SWAP3 DUP3 DUP2 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x1BD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1E3 SWAP2 SWAP1 PUSH3 0x540 JUMP JUMPDEST PUSH3 0x1F3 SWAP1 PUSH1 0xFF AND PUSH1 0x12 PUSH3 0x56C JUMP JUMPDEST PUSH1 0x80 MSTORE PUSH3 0x203 PUSH1 0x0 DUP5 PUSH3 0x3A9 JUMP JUMPDEST PUSH3 0x22F PUSH32 0xC65532185ED70B2E999433E2E9FAC124E083ACB13EC183A4E05944DA0792337B DUP6 PUSH3 0x3A9 JUMP JUMPDEST PUSH3 0x25B PUSH32 0xA84A5389AD41F9AAB0831B01E5384CAE76E7A7FD09131C206FF7927C201C3857 DUP6 PUSH3 0x3A9 JUMP JUMPDEST PUSH3 0x287 PUSH32 0x8118EEB5231A5FE4008A55B62860F6A0DB4F6C3AC04F8141927A9B3FEDD86D2F DUP6 PUSH3 0x3A9 JUMP JUMPDEST PUSH3 0x2B3 PUSH32 0x103DA79FF3755FF7A17A557D28B73D37CB4DE0B3C3CC02FA6C48DF0F35071FBF DUP6 PUSH3 0x3A9 JUMP JUMPDEST PUSH3 0x2DF PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP6 PUSH3 0x3A9 JUMP JUMPDEST PUSH3 0x30B PUSH32 0xE08E6E8E2E796F02419355C6FA268D1461FE6F2F34114A881A2DB47C0F240509 DUP6 PUSH3 0x3A9 JUMP JUMPDEST POP POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND ISZERO ISZERO SWAP2 POP PUSH3 0x36E SWAP1 POP JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5A65726F20616464726573732064657465637465640000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x123 JUMP JUMPDEST PUSH3 0x37B PUSH1 0x0 CALLER PUSH3 0x3A9 JUMP JUMPDEST POP POP PUSH1 0x14 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE POP PUSH3 0x592 SWAP3 POP POP POP JUMP JUMPDEST PUSH3 0x3B5 DUP3 DUP3 PUSH3 0x3B9 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH3 0x3DE SWAP2 DUP4 SWAP1 PUSH3 0x4AD0 PUSH3 0x420 DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST ISZERO PUSH3 0x3B5 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x43C DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH3 0x445 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH3 0x48E 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 PUSH3 0x43F JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0x43F JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x4DB DUP9 PUSH3 0x497 JUMP JUMPDEST SWAP7 POP PUSH3 0x4EB PUSH1 0x20 DUP10 ADD PUSH3 0x497 JUMP JUMPDEST SWAP6 POP PUSH3 0x4FB PUSH1 0x40 DUP10 ADD PUSH3 0x497 JUMP JUMPDEST SWAP5 POP PUSH3 0x50B PUSH1 0x60 DUP10 ADD PUSH3 0x497 JUMP JUMPDEST SWAP4 POP PUSH3 0x51B PUSH1 0x80 DUP10 ADD PUSH3 0x497 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD MLOAD SWAP2 POP PUSH3 0x532 PUSH1 0xC0 DUP10 ADD PUSH3 0x497 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x553 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH3 0x565 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH3 0x58D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x5DE6 PUSH3 0x5DF PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0xCC1 ADD MSTORE DUP2 DUP2 PUSH2 0x1585 ADD MSTORE DUP2 DUP2 PUSH2 0x2281 ADD MSTORE DUP2 DUP2 PUSH2 0x2AFD ADD MSTORE DUP2 DUP2 PUSH2 0x2DEF ADD MSTORE DUP2 DUP2 PUSH2 0x34C9 ADD MSTORE DUP2 DUP2 PUSH2 0x39A0 ADD MSTORE PUSH2 0x47AF ADD MSTORE PUSH2 0x5DE6 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 0x32B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7B0461E9 GT PUSH2 0x1B2 JUMPI DUP1 PUSH4 0xB6258AAA GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xCB73999F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xE3D84D5E GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xE3D84D5E EQ PUSH2 0x6DF JUMPI DUP1 PUSH4 0xEB2D7461 EQ PUSH2 0x6F2 JUMPI DUP1 PUSH4 0xFA4DFA3A EQ PUSH2 0x705 JUMPI DUP1 PUSH4 0xFEDE5C9C EQ PUSH2 0x725 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCB73999F EQ PUSH2 0x6BB JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x6C4 JUMPI DUP1 PUSH4 0xDAA50485 EQ PUSH2 0x6D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC6301E5D GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xC6301E5D EQ PUSH2 0x68C JUMPI DUP1 PUSH4 0xC74EC56A EQ PUSH2 0x69F JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x6A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB6258AAA EQ PUSH2 0x65D JUMPI DUP1 PUSH4 0xC3355B8D EQ PUSH2 0x670 JUMPI DUP1 PUSH4 0xC410CA1B EQ PUSH2 0x679 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 GT PUSH2 0x15B JUMPI DUP1 PUSH4 0xA217FDDF GT PUSH2 0x135 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x60F JUMPI DUP1 PUSH4 0xABAE2C4C EQ PUSH2 0x617 JUMPI DUP1 PUSH4 0xB235D468 EQ PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 EQ PUSH2 0x5D6 JUMPI DUP1 PUSH4 0x928D2B31 EQ PUSH2 0x5E9 JUMPI DUP1 PUSH4 0x978B73B5 EQ PUSH2 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7F877F85 GT PUSH2 0x18C JUMPI DUP1 PUSH4 0x7F877F85 EQ PUSH2 0x56D JUMPI DUP1 PUSH4 0x88D19F1B EQ PUSH2 0x595 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7B0461E9 EQ PUSH2 0x537 JUMPI DUP1 PUSH4 0x7D55094D EQ PUSH2 0x540 JUMPI DUP1 PUSH4 0x7E4831D3 EQ PUSH2 0x548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x40E14B78 GT PUSH2 0x276 JUMPI DUP1 PUSH4 0x564B81EF GT PUSH2 0x21F JUMPI DUP1 PUSH4 0x6D2C5615 GT PUSH2 0x1F9 JUMPI DUP1 PUSH4 0x6D2C5615 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x6D82E314 EQ PUSH2 0x4FD JUMPI DUP1 PUSH4 0x7901330B EQ PUSH2 0x524 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x564B81EF EQ PUSH2 0x490 JUMPI DUP1 PUSH4 0x5DE207CC EQ PUSH2 0x496 JUMPI DUP1 PUSH4 0x6526A12A EQ PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4EBBE762 GT PUSH2 0x250 JUMPI DUP1 PUSH4 0x4EBBE762 EQ PUSH2 0x462 JUMPI DUP1 PUSH4 0x50C9ECD9 EQ PUSH2 0x475 JUMPI DUP1 PUSH4 0x54F9769D EQ PUSH2 0x47D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x40E14B78 EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0x42D15AEC EQ PUSH2 0x451 JUMPI DUP1 PUSH4 0x4C634934 EQ PUSH2 0x459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D GT PUSH2 0x2D8 JUMPI DUP1 PUSH4 0x3648B7DC GT PUSH2 0x2B2 JUMPI DUP1 PUSH4 0x3648B7DC EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x40B JUMPI DUP1 PUSH4 0x3B92DA47 EQ PUSH2 0x41E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x3B5 JUMPI DUP1 PUSH4 0x32AD1EE4 EQ PUSH2 0x3C8 JUMPI DUP1 PUSH4 0x34DDB95D EQ PUSH2 0x3DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x15128425 GT PUSH2 0x309 JUMPI DUP1 PUSH4 0x15128425 EQ PUSH2 0x376 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x37F JUMPI DUP1 PUSH4 0x254CD2BD EQ PUSH2 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8A7493D EQ PUSH2 0x330 JUMPI DUP1 PUSH4 0x101197C7 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0x12ACE5A2 EQ PUSH2 0x36C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x350 PUSH2 0x33E CALLDATASIZE PUSH1 0x4 PUSH2 0x5193 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x350 PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x72E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x350 PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x38D CALLDATASIZE PUSH1 0x4 PUSH2 0x51AE JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x3B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x3C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0xFDE JUMP JUMPDEST PUSH2 0x350 PUSH2 0x3D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x1094 JUMP JUMPDEST PUSH2 0x350 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x419 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x176A JUMP JUMPDEST PUSH2 0x350 PUSH2 0x42C CALLDATASIZE PUSH1 0x4 PUSH2 0x5193 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x44C CALLDATASIZE PUSH1 0x4 PUSH2 0x53D6 JUMP JUMPDEST PUSH2 0x1819 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x1A37 JUMP JUMPDEST PUSH2 0x350 PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x470 CALLDATASIZE PUSH1 0x4 PUSH2 0x5413 JUMP JUMPDEST PUSH2 0x1AFE JUMP JUMPDEST PUSH2 0x374 PUSH2 0x1C3D JUMP JUMPDEST PUSH2 0x350 PUSH2 0x48B CALLDATASIZE PUSH1 0x4 PUSH2 0x545F JUMP JUMPDEST PUSH2 0x1CFB JUMP JUMPDEST CHAINID PUSH2 0x350 JUMP JUMPDEST PUSH2 0x350 PUSH32 0xE08E6E8E2E796F02419355C6FA268D1461FE6F2F34114A881A2DB47C0F240509 DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x35A JUMP JUMPDEST PUSH2 0x350 PUSH32 0xD4A2989857A24DE9C91E1DAFFE87D051D59F52B68729413D1EF656EC487E530 DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x532 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x2586 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x271A JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH24 0x10000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH1 0x12 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x5B1 PUSH2 0x5AC CALLDATASIZE PUSH1 0x4 PUSH2 0x54D3 JUMP JUMPDEST PUSH2 0x27D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x35A JUMP JUMPDEST PUSH2 0x4ED PUSH2 0x5E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x5F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x55F7 JUMP JUMPDEST PUSH2 0x280E JUMP JUMPDEST PUSH2 0x374 PUSH2 0x60A CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x2F1A JUMP JUMPDEST PUSH2 0x350 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x625 CALLDATASIZE PUSH1 0x4 PUSH2 0x5193 JUMP JUMPDEST PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x66B CALLDATASIZE PUSH1 0x4 PUSH2 0x51AE JUMP JUMPDEST PUSH2 0x34BD JUMP JUMPDEST PUSH2 0x350 PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x687 CALLDATASIZE PUSH1 0x4 PUSH2 0x56B0 JUMP JUMPDEST PUSH2 0x35AC JUMP JUMPDEST PUSH2 0x350 PUSH2 0x69A CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x3A91 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x6B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x51AE JUMP JUMPDEST PUSH2 0x4079 JUMP JUMPDEST PUSH2 0x350 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x6D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x4090 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x4138 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x6ED CALLDATASIZE PUSH1 0x4 PUSH2 0x5737 JUMP JUMPDEST PUSH2 0x41F4 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x700 CALLDATASIZE PUSH1 0x4 PUSH2 0x5773 JUMP JUMPDEST PUSH2 0x431D JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH2 0x5B1 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x11 SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD NUMBER SWAP2 PUSH2 0x74C SWAP2 PUSH2 0x57FA JUMP JUMPDEST GT ISZERO PUSH2 0x805 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A636F6C6C656374526564656D7074696F6E3A204D757374207761 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x697420666F7220726564656D7074696F6E5F64656C617920626C6F636B732062 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x65666F726520636F6C6C656374696E6720726564656D7074696F6E0000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 DUP2 SWAP1 DUP2 SWAP1 ISZERO PUSH2 0x84D JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SSTORE PUSH1 0xC SLOAD SWAP1 SWAP3 POP PUSH2 0x845 SWAP1 DUP4 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH1 0xC SSTORE PUSH1 0x1 SWAP4 POP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x88D JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SSTORE PUSH1 0xB SLOAD PUSH2 0x885 SWAP1 DUP3 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH1 0xB SSTORE PUSH1 0x1 SWAP3 POP JUMPDEST DUP4 ISZERO PUSH2 0x8B7 JUMPI PUSH1 0x4 SLOAD PUSH2 0x8B7 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP5 PUSH2 0x4B02 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x8E1 JUMPI PUSH1 0x1 SLOAD PUSH2 0x8E1 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP4 PUSH2 0x4B02 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x96D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH3 0xF4240 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA03 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST EQ PUSH2 0xA6A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D757374206265203D3D2031000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0xAFA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0xBED SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC2E SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0xCBA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D3174314445493A20696E76616C6964207369676E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6174757265730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCE7 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0xCF1 SWAP1 DUP9 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x68D54AA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x68D54AA SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD6D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD91 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 PUSH1 0x6 SLOAD PUSH3 0xF4240 PUSH2 0xDA8 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0xDB2 SWAP1 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0xDBC SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE32 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE56 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0xE60 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0xEC9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F75676820636F6C6C61746572616C20696E20706F6F6C000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xEE4 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xB SLOAD PUSH2 0xF02 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xB SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0xF29 SWAP1 DUP11 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0xF33 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xF44 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP11 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFD0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xFFA SWAP1 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1086 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F206772616E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x1090 DUP3 DUP3 PUSH2 0x4C72 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x111C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH3 0xF4240 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x118E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11B2 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST LT ISZERO PUSH2 0x121A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D757374206265203E3D2031000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP10 SWAP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x128F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12B3 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x12BD SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x12C7 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST GT ISZERO PUSH2 0x132F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5B506F6F6C277320436C6F7365645D3A204365696C696E672072656163686564 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x13BF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E743174314445493A207369676E61747572652069732065 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7870697265640000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x14B2 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14CF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14F3 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x157E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E743174314445493A20696E76616C6964207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7572657300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15AB PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x15B5 SWAP1 DUP10 PUSH2 0x5AFD JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x882AB63A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP11 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x882AB63A SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x162C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1650 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP3 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x1667 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x1671 SWAP1 DUP6 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x167B SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP4 POP PUSH2 0x16A3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER ADDRESS DUP12 PUSH2 0x4CD8 JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP5 PUSH2 0x16B5 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x16BF SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x16D0 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1747 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x175B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ PUSH2 0x180F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x1090 DUP3 DUP3 PUSH2 0x4E76 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1889 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18AD SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x191E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1942 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2480FCEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x2480FCEA SWAP1 PUSH2 0x199E SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B3A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19DF SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP3 GT ISZERO PUSH2 0x19F3 JUMPI PUSH3 0xF4240 SWAP2 POP JUMPDEST PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x1A03 DUP5 DUP7 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x1A0D SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1A2B JUMPI PUSH2 0x1A21 DUP2 DUP4 PUSH2 0x5812 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1A61 PUSH32 0x8118EEB5231A5FE4008A55B62860F6A0DB4F6C3AC04F8141927A9B3FEDD86D2F CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1A6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x2FDA313D9B5BB0B73BD003153F2FCCBC0DCA49791FDD1184DFAD82B44F54BD2E SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x1B28 PUSH32 0xE08E6E8E2E796F02419355C6FA268D1461FE6F2F34114A881A2DB47C0F240509 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1BB4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A2043616C6C6572206973206E6F7420504152414D455445525F5345 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x545445525F524F4C450000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0xE DUP8 SWAP1 SSTORE PUSH1 0x10 DUP7 SWAP1 SSTORE PUSH1 0x11 DUP6 SWAP1 SSTORE PUSH1 0x5 DUP5 SWAP1 SSTORE PUSH1 0x6 DUP4 SWAP1 SSTORE PUSH1 0x7 DUP3 SWAP1 SSTORE PUSH1 0x8 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x17FE98B66D27BD793EA01BD8A23A54ACAB8EEB167D9EB016A0C7CD71C573920C SWAP1 PUSH1 0xE0 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1C67 PUSH32 0x103DA79FF3755FF7A17A557D28B73D37CB4DE0B3C3CC02FA6C48DF0F35071FBF CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1C70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH24 0x10000000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x4F40FD1C59F78D7A2220DA638CD9400DABA01E57C7965702F390BF13133CC31F SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1D83 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DF3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E17 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP2 LT DUP1 ISZERO PUSH2 0x1E2B JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x1EB7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206E6565647320746F20626520626574 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7765656E202E30303030303120616E64202E3939393939390000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP13 SWAP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F50 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x1F5A SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x1F64 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST GT ISZERO PUSH2 0x2019 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x44 PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0x506F6F6C206365696C696E6720726561636865642C206E6F206D6F7265204445 SWAP1 DUP3 ADD MSTORE PUSH32 0x492063616E206265206D696E7465642077697468207468697320636F6C6C6174 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x6572616C00000000000000000000000000000000000000000000000000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP6 LT ISZERO PUSH2 0x20A9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E744672616374696F6E616C4445493A207369676E617475 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x726520697320657870697265642E000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x34 DUP4 ADD DUP14 SWAP1 MSTORE SWAP4 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x54 DUP5 ADD MSTORE PUSH1 0x68 DUP4 ADD DUP10 SWAP1 MSTORE PUSH1 0x88 DUP4 ADD DUP9 SWAP1 MSTORE CHAINID PUSH1 0xA8 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC8 DUP5 ADD SWAP2 DUP3 SWAP1 MSTORE DUP1 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 MSTORE SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x2182 SWAP1 DUP5 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0xCC ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x219F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x21C3 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x224F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E744672616374696F6E616C4445493A20696E76616C6964 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207369676E617475726573000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x227A PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22A7 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x22B1 SWAP1 DUP14 PUSH2 0x5AFD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE DUP12 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP14 SWAP1 MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x13 SLOAD SWAP1 MLOAD PUSH32 0x537A30A700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x537A30A7 SWAP1 PUSH2 0x232D SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2349 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x236D SWAP2 SWAP1 PUSH2 0x5BA9 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP1 POP DUP11 DUP2 GT ISZERO PUSH2 0x23DC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F756768204445555320696E7075747465640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x23F1 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x23FB SWAP1 DUP8 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x2405 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE SWAP2 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x247D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2491 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH2 0x24BB SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP CALLER ADDRESS DUP16 PUSH2 0x4CD8 JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP7 PUSH2 0x24CD SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x24D7 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x24E8 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x255F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2573 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x25B0 PUSH32 0xD4A2989857A24DE9C91E1DAFFE87D051D59F52B68729413D1EF656EC487E530 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x25B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x12 SLOAD DUP3 GT ISZERO PUSH2 0x2625 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x616D6F756E743C3D64616F536861726500000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x26C3 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x3A708F2F1C75B12457D207CF1E259AB9F87BBFCCB29672903ACF4661BD342E49 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x2744 PUSH32 0xC65532185ED70B2E999433E2E9FAC124E083ACB13EC183A4E05944DA0792337B CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x274D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH21 0x10000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x6BDFE227D5DB299C59AA56D5F846F40DBD73B271AAA78E18ED74FC3E00B8AA6B SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27ED SWAP1 DUP4 PUSH2 0x4EDC JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27ED SWAP1 DUP4 PUSH2 0x4EF2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x28BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A205265636F6C6C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x61746572616C697A652069732070617573656400000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP2 PUSH1 0x80 ADD MLOAD LT ISZERO PUSH2 0x294F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP3 DUP2 ADD MLOAD PUSH1 0x4 SLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x80 DUP7 ADD MLOAD SWAP4 MLOAD PUSH1 0x0 SWAP6 PUSH2 0x2998 SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP6 SWAP5 SWAP2 SWAP1 SWAP2 AND SWAP3 SWAP2 CHAINID SWAP1 PUSH1 0x20 ADD PUSH2 0x5BCD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH1 0xA0 DUP6 ADD MLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE SWAP2 SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x6793F0AC SWAP2 PUSH2 0x2A29 SWAP2 DUP6 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x5C78 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A46 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A6A SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x2AF6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A20696E76616C69 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x64207369676E6174757265730000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B23 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST DUP4 MLOAD PUSH2 0x2B2F SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BC4 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C35 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C59 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 DUP9 ADD MLOAD SWAP1 MLOAD PUSH32 0x2480FCEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x2480FCEA SWAP2 PUSH2 0x2CB8 SWAP2 PUSH1 0x4 ADD PUSH2 0x5B3A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2CD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2CF9 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 DUP9 ADD MLOAD DUP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0xFC011061 SWAP2 DUP10 SWAP2 SWAP1 PUSH2 0x2D37 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x2D47 JUMPI PUSH2 0x2D47 PUSH2 0x5D36 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x84 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DBF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2DE3 SWAP2 SWAP1 PUSH2 0x5BA9 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x2E15 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x2E1F SWAP1 DUP5 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP10 PUSH1 0x60 ADD MLOAD PUSH1 0x8 SLOAD PUSH1 0x10 SLOAD PUSH3 0xF4240 PUSH2 0x2E3C SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH2 0x2E46 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x2E50 SWAP1 DUP6 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x2E5A SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH2 0x2E82 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER ADDRESS DUP6 PUSH2 0x4CD8 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2EF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x2FA0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x300D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3031 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST ISZERO PUSH2 0x30BE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x36 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D416C676F726974686D69634445493A20436F6C6C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x61746572616C20726174696F206D757374206265203000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0x314E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A72656465656D416C676F726974686D69634445493A207369676E61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7475726520697320657870697265642E00000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x3241 SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x325E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3282 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x330E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D416C676F726974686D69634445493A20696E7661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964207369676E617475726573000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x6 SLOAD DUP7 SWAP1 PUSH3 0xF4240 SWAP1 PUSH2 0x3322 SWAP1 DUP3 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x332C SWAP1 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3336 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH2 0x3348 PUSH3 0xF4240 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3352 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x3370 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xC SLOAD PUSH2 0x338E SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xC SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0x33B5 SWAP1 DUP11 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x33BF SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x33D0 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP11 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3447 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x345B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH2 0xFA2 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xF4240 DUP3 PUSH2 0x34EF PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3560 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3584 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x358E SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x3598 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x35A2 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x27F0 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH24 0x10000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3659 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6275794261636B444555533A204275796261636B206973207061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7573656400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0x36E9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A6275794261636B444555533A207369676E61747572652069732065 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7870697265642E00000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 DUP9 SWAP2 AND DUP8 DUP8 CHAINID PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3726 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5BCD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x37B5 SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x37D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37F6 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x3882 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6275794261636B444555533A20696E76616C6964207369676E61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7475726573000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x3898 DUP10 PUSH2 0x1819 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 DUP11 MLOAD PUSH2 0x38B2 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x38C2 JUMPI PUSH2 0x38C2 PUSH2 0x5D36 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH1 0x7 SLOAD PUSH3 0xF4240 PUSH2 0x38EC SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x3C04AF9F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x3C04AF9F SWAP1 PUSH2 0x3942 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B7E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x395F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3983 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x398D SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3997 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x39C6 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x39D0 SWAP1 DUP4 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP14 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH2 0x3A85 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP CALLER DUP4 PUSH2 0x4B02 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3B19 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3BAA SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST ISZERO PUSH2 0x3C11 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D7573742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x3CA1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x3D94 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3DB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3DD5 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x3E61 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A20696E76616C69 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x64207369676E6174757265730000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x14DA4EE100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x14DA4EE1 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3ED7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3EFB SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP2 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x3F12 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x3F1C SWAP1 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3F26 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP2 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP4 PUSH2 0x3F3A SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3F44 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3F55 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3FCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3FE1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4057 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x406B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27F0 SWAP1 PUSH2 0x4F31 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x40AC SWAP1 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x180F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F207265766F6B6500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x4162 PUSH32 0xA84A5389AD41F9AAB0831B01E5384CAE76E7A7FD09131C206FF7927C201C3857 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x416B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH22 0x1000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x5860C5063A65E23CEA4E2E2925F1A841BB6D1BC9615BD425F8DD084980B05141 SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x421E PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x4284 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A796F7520617265206E6F74207472757374790000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE DUP5 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x42F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8E1 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x43A3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4413 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4437 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP2 LT DUP1 ISZERO PUSH2 0x444B JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x44FD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x53 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D4672616374696F6E616C4445493A20436F6C6C61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x746572616C20726174696F206E6565647320746F206265206265747765656E20 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x2E30303030303120616E64202E39393939393900000000000000000000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x458D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A72656465656D4672616374696F6E616C4445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7572652069732065787069726564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x34 DUP4 ADD DUP13 SWAP1 MSTORE SWAP4 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x54 DUP5 ADD MSTORE PUSH1 0x68 DUP4 ADD DUP9 SWAP1 MSTORE PUSH1 0x88 DUP4 ADD DUP8 SWAP1 MSTORE CHAINID PUSH1 0xA8 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC8 DUP5 ADD SWAP2 DUP3 SWAP1 MSTORE DUP1 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 MSTORE SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x4666 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0xCC ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4683 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x46A7 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x4733 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D4672616374696F6E616C4445493A20696E76616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6964207369676E61747572657300000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP10 SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH1 0x6 SLOAD PUSH3 0xF4240 PUSH2 0x4752 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x475C SWAP1 DUP15 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x4766 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x4778 DUP9 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x4782 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH2 0x478C SWAP1 DUP4 PUSH2 0x5812 JUMP JUMPDEST SWAP1 POP DUP11 PUSH2 0x479C PUSH3 0xF4240 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x47A6 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP5 POP PUSH1 0x0 PUSH2 0x47D5 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x47DF SWAP1 DUP5 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x47F1 DUP11 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x47FB SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x480B PUSH3 0xF4240 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x4815 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP3 SWAP9 POP SWAP1 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP5 POP PUSH4 0x70A08231 SWAP4 POP PUSH1 0x24 ADD SWAP2 POP PUSH2 0x4878 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4895 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x48B9 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x48C3 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x492C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F75676820636F6C6C61746572616C20696E20706F6F6C000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x4947 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xB SLOAD PUSH2 0x4965 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xB SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x4983 SWAP1 DUP4 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xC SLOAD PUSH2 0x49A1 SWAP1 DUP4 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xC SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0x49C8 SWAP1 DUP13 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x49D2 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x49E3 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP13 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4A5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4A6E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH2 0x2EDC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27ED DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x4F3B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 DUP8 AND SWAP2 PUSH2 0x4B99 SWAP2 SWAP1 PUSH2 0x5D65 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4BD6 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 0x4BDB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4C05 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4C05 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4C05 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x4C6B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F4641494C454400 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x4C8A SWAP1 DUP3 PUSH2 0x4AD0 JUMP JUMPDEST ISZERO PUSH2 0x1090 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 DUP9 AND SWAP2 PUSH2 0x4D77 SWAP2 SWAP1 PUSH2 0x5D65 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4DB4 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 0x4DB9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4DE3 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4DE3 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4DE3 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x4E6E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F46524F4D5F4641 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x494C454400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x4E8E SWAP1 DUP3 PUSH2 0x4F8A JUMP JUMPDEST ISZERO PUSH2 0x1090 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EE8 DUP4 DUP4 PUSH2 0x4FBC JUMP JUMPDEST PUSH1 0x60 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD ISZERO ISZERO PUSH2 0x27ED JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27F0 DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x4F82 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 0x27F0 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x27F0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27ED DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x5077 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x504F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E756D657261626C655365743A20696E646578206F7574206F6620626F756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6473000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x5064 JUMPI PUSH2 0x5064 PUSH2 0x5D36 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x5160 JUMPI PUSH1 0x0 PUSH2 0x509B PUSH1 0x1 DUP4 PUSH2 0x5812 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x50AF SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x5812 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x50C8 JUMPI PUSH2 0x50C8 PUSH2 0x5D36 JUMP 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 0x50EB JUMPI PUSH2 0x50EB PUSH2 0x5D36 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH2 0x5102 DUP4 PUSH1 0x1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x5124 JUMPI PUSH2 0x5124 PUSH2 0x5D81 JUMP 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 0x27F0 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x27F0 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x518E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x51A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27ED DUP3 PUSH2 0x516A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x51C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x51D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x51F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x520C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x522B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5257 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5263 DUP9 DUP3 DUP10 ADD PUSH2 0x51C7 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x5297 PUSH1 0x20 DUP5 ADD PUSH2 0x516A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x52F2 JUMPI PUSH2 0x52F2 PUSH2 0x52A0 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x533F JUMPI PUSH2 0x533F PUSH2 0x52A0 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5361 JUMPI PUSH2 0x5361 PUSH2 0x52A0 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x537C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x5391 PUSH2 0x538C DUP4 PUSH2 0x5347 JUMP JUMPDEST PUSH2 0x52F8 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP7 DUP5 GT ISZERO PUSH2 0x53B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x53CB JUMPI DUP1 CALLDATALOAD DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x53B4 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x53FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x540B DUP5 DUP3 DUP6 ADD PUSH2 0x536B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x542E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP6 CALLDATALOAD SWAP8 PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP8 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP7 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP7 POP PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP6 POP PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 ADD CALLDATALOAD SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x547A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x54B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x54C0 DUP11 DUP3 DUP12 ADD PUSH2 0x51C7 JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x54E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 DUP2 DUP5 ADD SLT PUSH2 0x5507 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x20 PUSH2 0x5517 PUSH2 0x538C DUP4 PUSH2 0x5347 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP6 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP8 DUP5 GT ISZERO PUSH2 0x5536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP8 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x55EB JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x555B JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP11 ADD SWAP2 POP DUP11 PUSH1 0x3F DUP4 ADD SLT PUSH2 0x5570 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP6 DUP3 ADD CALLDATALOAD PUSH1 0x40 DUP3 DUP3 GT ISZERO PUSH2 0x5586 JUMPI PUSH2 0x5586 PUSH2 0x52A0 JUMP JUMPDEST PUSH2 0x55B5 DUP9 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP13 DUP6 ADD AND ADD PUSH2 0x52F8 JUMP JUMPDEST SWAP3 POP DUP2 DUP4 MSTORE DUP13 DUP2 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x55CC JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP2 DUP6 ADD DUP10 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 SWAP1 DUP3 ADD DUP8 ADD MSTORE DUP5 MSTORE POP SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x553A JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x5621 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0xC0 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x5635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x563D PUSH2 0x52CF JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x565D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5669 DUP8 DUP3 DUP7 ADD PUSH2 0x536B JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x5695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x56A1 DUP8 DUP3 DUP7 ADD PUSH2 0x54F5 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x56C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x56E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x56F4 DUP11 DUP4 DUP12 ADD PUSH2 0x536B JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x5718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5725 DUP10 DUP3 DUP11 ADD PUSH2 0x51C7 JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x574C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5755 DUP5 PUSH2 0x516A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0x576A PUSH1 0x40 DUP6 ADD PUSH2 0x516A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x578C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x57BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5725 DUP10 DUP3 DUP11 ADD PUSH2 0x51C7 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x580D JUMPI PUSH2 0x580D PUSH2 0x57CB JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x5824 JUMPI PUSH2 0x5824 PUSH2 0x57CB JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x583B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD DUP6 DUP4 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP6 ADD MSTORE DUP2 DUP6 DUP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP1 POP PUSH1 0x60 DUP7 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP7 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x595F JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP8 DUP7 SUB ADD DUP4 MSTORE DUP2 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP11 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x5916 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 ADD DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x592F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP12 SGT ISZERO PUSH2 0x593E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x594B DUP8 DUP3 DUP9 DUP6 ADD PUSH2 0x5842 JUMP JUMPDEST SWAP7 POP POP POP SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x58B5 JUMP JUMPDEST POP SWAP3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x597F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x598F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH2 0x59EF JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x59D5 JUMPI PUSH2 0x59D5 PUSH2 0x57CB JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH2 0x59E2 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH2 0x599B JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5A06 JUMPI POP PUSH1 0x1 PUSH2 0x27F0 JUMP JUMPDEST DUP2 PUSH2 0x5A13 JUMPI POP PUSH1 0x0 PUSH2 0x27F0 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x5A29 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x5A33 JUMPI PUSH2 0x5A4F JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x27F0 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x5A44 JUMPI PUSH2 0x5A44 PUSH2 0x57CB JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x27F0 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x5A72 JUMPI POP DUP2 DUP2 EXP PUSH2 0x27F0 JUMP JUMPDEST PUSH2 0x5A7C DUP4 DUP4 PUSH2 0x5996 JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x5AAE JUMPI PUSH2 0x5AAE PUSH2 0x57CB JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27ED DUP4 DUP4 PUSH2 0x59F7 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5AF8 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x5B35 JUMPI PUSH2 0x5B35 PUSH2 0x57CB JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5B72 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x5B56 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD PUSH2 0x27F0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5BBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 DUP1 DUP10 PUSH1 0x60 SHL AND DUP4 MSTORE PUSH1 0x14 DUP4 ADD DUP9 MLOAD PUSH1 0x20 DUP1 DUP12 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C22 JUMPI DUP2 MLOAD DUP6 MSTORE SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5C06 JUMP JUMPDEST POP POP POP POP PUSH1 0x60 SWAP8 SWAP1 SWAP8 SHL AND DUP7 MSTORE POP POP PUSH1 0x14 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x34 DUP4 ADD MSTORE PUSH1 0x54 DUP3 ADD MSTORE PUSH1 0x74 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C67 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5C4F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x8E1 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD DUP5 DUP4 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP6 ADD MSTORE DUP2 DUP6 MLOAD DUP1 DUP5 MSTORE PUSH1 0x60 DUP7 ADD SWAP2 POP PUSH1 0x60 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP4 POP DUP3 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5D28 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP9 DUP8 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP9 MSTORE PUSH2 0x5CEB DUP2 DUP9 DUP11 ADD DUP10 DUP6 ADD PUSH2 0x5C4C JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP7 SWAP1 SWAP7 ADD DUP6 ADD SWAP6 POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5CA6 JUMP JUMPDEST POP SWAP4 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x5D77 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x5C4C JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2C SWAP12 DUP6 PUSH30 0x563F37079C55CAC8650B11B2ED95E9E47DC81D7EA1FC60CA817BDEC06473 PUSH16 0x6C634300080A00330000000000000000 ", + "sourceMap": "132:657:9:-:0;;;2874:1:7;2844:31;;;;2934:30;;;;3104:4;3076:32;;3216:1;3182:35;;3266:27;;3913:30;;;-1:-1:-1;;;;4025:33:7;;;199:588:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;468:21;491:22;515:19;536:15;553:14;569:13;584:8;-1:-1:-1;;;;;4687:35:7;;;;;;4686:83;;-1:-1:-1;;;;;;4732:36:7;;;;4686:83;:126;;;;-1:-1:-1;;;;;;4778:33:7;;;;4686:126;:165;;;;-1:-1:-1;;;;;;4821:29:7;;;;4686:165;:203;;;;-1:-1:-1;;;;;;4860:28:7;;;;4686:203;:235;;;;-1:-1:-1;;;;;;4898:22:7;;;;4686:235;4674:285;;;;-1:-1:-1;;;4674:285:7;;1101:2:39;4674:285:7;;;1083:21:39;1140:2;1120:18;;;1113:30;1179:29;1159:18;;;1152:57;1226:18;;4674:285:7;;;;;;;;;4963:11;:38;;-1:-1:-1;;;;;4963:38:7;;;-1:-1:-1;;;;;;4963:38:7;;;;;;;5005:20;:44;;;;;;;;;;;5053:21;:46;;;;;;;;;;;5103:18;:40;;;;;;;;;;;;4963:38;5147:45;;;;;;;;;;5196:12;:28;;;5261:27;;;-1:-1:-1;;;5261:27:7;;;;:25;;:27;;;;;;;;;;;;;5103:40;5261:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5247:41;;;;5255:2;5247:41;:::i;:::-;5228:60;;5293:46;1767:4:20;5324:14:7;5293:10;:46::i;:::-;5343:40;3390:24;5367:15;5343:10;:40::i;:::-;5387:42;3458:26;5413:15;5387:10;:42::i;:::-;5433:51;3609:35;5468:15;5433:10;:51::i;:::-;5488:43;3529:27;5515:15;5488:10;:43::i;:::-;5535:40;3685:24;5559:15;5535:10;:40::i;:::-;5579:50;3841:34;5613:15;5579:10;:50::i;:::-;-1:-1:-1;;;;;;;;;;623:33:9;::::1;::::0;::::1;::::0;-1:-1:-1;615:67:9::1;::::0;-1:-1:-1;615:67:9::1;;::::0;-1:-1:-1;;;615:67:9;;1962:2:39;615:67:9::1;::::0;::::1;1944:21:39::0;2001:2;1981:18;;;1974:30;2040:23;2020:18;;;2013:51;2081:18;;615:67:9::1;1760:345:39::0;615:67:9::1;693:44;1767:4:20;686:10:4::0;693::9::1;:44::i;:::-;-1:-1:-1::0;;747:11:9::1;:33:::0;;-1:-1:-1;;;;;;747:33:9::1;-1:-1:-1::0;;;;;747:33:9;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;132:657:9;;-1:-1:-1;;;132:657:9;6653:110:20;6731:25;6742:4;6748:7;6731:10;:25::i;:::-;6653:110;;:::o;7090:184::-;7163:6;:12;;;;;;;;;;;:33;;7188:7;;7163:24;;;;;:33;;:::i;:::-;7159:109;;;7217:40;;686:10:4;;-1:-1:-1;;;;;7217:40:20;;;7229:4;;7217:40;;;;;7090:184;;:::o;4866:141:38:-;4936:4;4959:41;4964:3;-1:-1:-1;;;;;;4984:14:38;;;;4976:23;4959:4;:41::i;:::-;4952:48;;4866:141;;;;;:::o;1613:404::-;1676:4;3874:19;;;:12;;;:19;;;;;;1692:319;;-1:-1:-1;1734:23:38;;;;;;;;:11;:23;;;;;;;;;;;;;1914:18;;1892:19;;;:12;;;:19;;;;;;:40;;;;1946:11;;1692:319;-1:-1:-1;1995:5:38;1988:12;;14:177:39;93:13;;-1:-1:-1;;;;;135:31:39;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:698::-;320:6;328;336;344;352;360;368;421:3;409:9;400:7;396:23;392:33;389:53;;;438:1;435;428:12;389:53;461:40;491:9;461:40;:::i;:::-;451:50;;520:49;565:2;554:9;550:18;520:49;:::i;:::-;510:59;;588:49;633:2;622:9;618:18;588:49;:::i;:::-;578:59;;656:49;701:2;690:9;686:18;656:49;:::i;:::-;646:59;;724:50;769:3;758:9;754:19;724:50;:::i;:::-;714:60;;814:3;803:9;799:19;793:26;783:36;;838:50;883:3;872:9;868:19;838:50;:::i;:::-;828:60;;196:698;;;;;;;;;;:::o;1255:273::-;1323:6;1376:2;1364:9;1355:7;1351:23;1347:32;1344:52;;;1392:1;1389;1382:12;1344:52;1424:9;1418:16;1474:4;1467:5;1463:16;1456:5;1453:27;1443:55;;1494:1;1491;1484:12;1443:55;1517:5;1255:273;-1:-1:-1;;;1255:273:39:o;1533:222::-;1573:4;1601:1;1598;1595:8;1592:131;;;1645:10;1640:3;1636:20;1633:1;1626:31;1680:4;1677:1;1670:15;1708:4;1705:1;1698:15;1592:131;-1:-1:-1;1740:9:39;;1533:222::o;1760:345::-;132:657:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@DAI_address_3886": { + "entryPoint": null, + "id": 3886, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DAO_SHARE_COLLECTOR_1648": { + "entryPoint": null, + "id": 1648, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DEFAULT_ADMIN_ROLE_6026": { + "entryPoint": null, + "id": 6026, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@PARAMETER_SETTER_ROLE_1653": { + "entryPoint": null, + "id": 1653, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@TRUSTY_ROLE_1643": { + "entryPoint": null, + "id": 1643, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_add_11596": { + "entryPoint": 20283, + "id": 11596, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_at_11736": { + "entryPoint": 20412, + "id": 11736, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_contains_11696": { + "entryPoint": null, + "id": 11696, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_6258": { + "entryPoint": 19570, + "id": 6258, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_length_11710": { + "entryPoint": null, + "id": 11710, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_msgSender_444": { + "entryPoint": null, + "id": 444, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_remove_11677": { + "entryPoint": 20599, + "id": 11677, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_revokeRole_6282": { + "entryPoint": 20086, + "id": 6282, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@add_11764": { + "entryPoint": 19152, + "id": 11764, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@at_11851": { + "entryPoint": 20188, + "id": 11851, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@availableExcessCollatDV_1935": { + "entryPoint": 6169, + "id": 1935, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@bonus_rate_1609": { + "entryPoint": null, + "id": 1609, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@buyBackDEUS_3334": { + "entryPoint": 13740, + "id": 3334, + "parameterSlots": 6, + "returnSlots": 0 + }, + "@buyBackPaused_1665": { + "entryPoint": null, + "id": 1665, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@buyback_fee_1571": { + "entryPoint": null, + "id": 1571, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@collatDollarBalance_1873": { + "entryPoint": 13501, + "id": 1873, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@collectDaoShare_3374": { + "entryPoint": 9606, + "id": 3374, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@collectRedemption_3047": { + "entryPoint": 1838, + "id": 3047, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@contains_11812": { + "entryPoint": 20210, + "id": 11812, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@daoShare_1615": { + "entryPoint": null, + "id": 1615, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@emergencyWithdrawERC20_3394": { + "entryPoint": 16884, + "id": 3394, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@getChainID_1947": { + "entryPoint": null, + "id": 1947, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getRoleAdmin_6121": { + "entryPoint": null, + "id": 6121, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMemberCount_6088": { + "entryPoint": 16505, + "id": 6088, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMember_6107": { + "entryPoint": 10197, + "id": 6107, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@grantRole_6147": { + "entryPoint": 4062, + "id": 6147, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@hasRole_6072": { + "entryPoint": 10230, + "id": 6072, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@lastRedeemed_1589": { + "entryPoint": null, + "id": 1589, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@length_11827": { + "entryPoint": 20273, + "id": 11827, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@mint1t1DEI_2089": { + "entryPoint": 4244, + "id": 2089, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@mintAlgorithmicDEI_2200": { + "entryPoint": 14993, + "id": 2200, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@mintFractionalDEI_2394": { + "entryPoint": 7419, + "id": 2394, + "parameterSlots": 7, + "returnSlots": 1 + }, + "@mintPaused_1656": { + "entryPoint": null, + "id": 1656, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@minting_fee_1567": { + "entryPoint": null, + "id": 1567, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@pausedPrice_1606": { + "entryPoint": null, + "id": 1606, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@pool_ceiling_1603": { + "entryPoint": null, + "id": 1603, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@recollat_fee_1573": { + "entryPoint": null, + "id": 1573, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@recollateralizeDEI_3208": { + "entryPoint": 10254, + "id": 3208, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@recollateralizePaused_1662": { + "entryPoint": null, + "id": 1662, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@redeem1t1DEI_2543": { + "entryPoint": 2279, + "id": 2543, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@redeemAlgorithmicDEI_2919": { + "entryPoint": 12058, + "id": 2919, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@redeemCollateralBalances_1581": { + "entryPoint": null, + "id": 1581, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@redeemDEUSBalances_1577": { + "entryPoint": null, + "id": 1577, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@redeemFractionalDEI_2778": { + "entryPoint": 17181, + "id": 2778, + "parameterSlots": 6, + "returnSlots": 0 + }, + "@redeemPaused_1659": { + "entryPoint": null, + "id": 1659, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@redemption_delay_1612": { + "entryPoint": null, + "id": 1612, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@redemption_fee_1569": { + "entryPoint": null, + "id": 1569, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@remove_11788": { + "entryPoint": 20362, + "id": 11788, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@renounceRole_6195": { + "entryPoint": 5994, + "id": 6195, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@revokeRole_6173": { + "entryPoint": 16528, + "id": 6173, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@safeTransferFrom_8741": { + "entryPoint": 19672, + "id": 8741, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@safeTransfer_8695": { + "entryPoint": 19202, + "id": 8695, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@setPoolParameters_3543": { + "entryPoint": 6910, + "id": 3543, + "parameterSlots": 7, + "returnSlots": 0 + }, + "@toggleBuyBack_3478": { + "entryPoint": 7229, + "id": 3478, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@toggleMinting_3415": { + "entryPoint": 10010, + "id": 3415, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@toggleRecollateralize_3457": { + "entryPoint": 6711, + "id": 3457, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@toggleRedeeming_3436": { + "entryPoint": 16696, + "id": 3436, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@unclaimedPoolCollateral_1583": { + "entryPoint": null, + "id": 1583, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@unclaimedPoolDEUS_1585": { + "entryPoint": null, + "id": 1585, + "parameterSlots": 0, + "returnSlots": 0 + }, + "abi_decode_address": { + "entryPoint": 20842, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_array_bytes_calldata_dyn_calldata": { + "entryPoint": 20935, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_array_bytes_dyn": { + "entryPoint": 21749, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_array_uint256_dyn": { + "entryPoint": 21355, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 20883, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_uint256t_address": { + "entryPoint": 22327, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr": { + "entryPoint": 21462, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bool_fromMemory": { + "entryPoint": 22893, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32": { + "entryPoint": 20910, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32t_address": { + "entryPoint": 21108, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes32t_uint256": { + "entryPoint": 21715, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_struct$_RecollateralizeDEI_$1556_memory_ptr": { + "entryPoint": 22007, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256_fromMemory": { + "entryPoint": 22569, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256t_address": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_memory_ptrt_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": { + "entryPoint": 22192, + "id": null, + "parameterSlots": 2, + "returnSlots": 6 + }, + "abi_decode_tuple_t_uint256t_uint256_fromMemory": { + "entryPoint": 23465, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": { + "entryPoint": 21011, + "id": null, + "parameterSlots": 2, + "returnSlots": 5 + }, + "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": { + "entryPoint": 22387, + "id": null, + "parameterSlots": 2, + "returnSlots": 6 + }, + "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": { + "entryPoint": 21599, + "id": null, + "parameterSlots": 2, + "returnSlots": 7 + }, + "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256": { + "entryPoint": 21523, + "id": null, + "parameterSlots": 2, + "returnSlots": 7 + }, + "abi_encode_bytes_calldata": { + "entryPoint": 22594, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_struct_MintFD_Params": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_packed_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 23501, + "id": null, + "parameterSlots": 7, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 7, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 23909, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 23354, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 22667, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 23672, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_0553f3220b1c65f13a1a0bcfbae12cc9d57080d375095d8011e479f9a164d51f__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_0f701899e5d254af158b94e181e8c864fa1fa8407b8e83a84b212f1856c034bb__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_1eb003467dd04b32fe18359370bc0d0e41e237ed2bf1be23765de9081983dd0d__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_219e324e833041c644ccb1dd3dba73aaa878497ddb310916decd8247cfffb1bd__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_2b6a8f4152754b6a991bf1b0a666b82b00923d2fd769bf1e3367643b70f91813__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_32c377f750f3acdff4f31738199007cf625ea4cb5a4b65f0253238ad0d6fe603__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3517d2a2517b8811826efd915add7c546f6c6059a93aba596e992ef7ede2c237__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3871818a433a796d8749bf69d3757469c36cba69a6da101f4f86b64a03c25fdf__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_38c9fd1b67df6e999cac6aaf315cc13e0fa4fc296b57f92466d27a378c17f081__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3a4aaa4225031aefd603a0181e03bfba377ad02f3a40d8d4ff79e4b75af91117__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3b8d4b54db08ed890798fdc55ba1c410b1b90a23a79193c7486d04051b31717b__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3cf3652b2acfb73942e459b043ef1100fffabb4093e48d3162412f77ff7ce9c4__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_415add743154eebc1c14f0dcbb6d42364bd9228c5bfab92187476352ba4cf3a4__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_43ec8f409eb317e256e176d402e36ec6af276af1f8f749e4d9fbe21bcd7bc664__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_565f0845894e0f662254a5093763af0fee3605d54c84edbcf11c672de6a88543__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_5a2d3f9bcb3c5bd0b1926b1856db5dd186810b6e73d5cb9f87ee953c4da7fee2__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_70791a0be90f5705149d45e0236213cb0328457b5d86e6288006e4f6774b09e7__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_74a9279f050c6419792bc3daa57da050d8e2f426f944681941d34e8909be7eac__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_76b82cf0f5d67f7f31fa6377a21018dea36302e26d7842fad5ba832c330157dd__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_7b7d20f9ca6e9adc6378137dbeda8a962bb9bf07440b2b9db28bb53f4e464fce__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_98984f103b51115a1419edfc23f41285c32977e7b02cc32e067bba007d26b4f9__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_af86e93bd0220a55e8ca62f5f35862820e5999de1371ac209bb45c45b39ee5de__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_bff4c2607c2670a7edf36f88b5d5987db2ccc6a59b36f486c4c57f193ba00833__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_c668331e1a5c68ea41572b6fbf581e9b4ce7392915c1ff6a6872ae765618f9ee__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_c70433350355bf0543fc06a466fe44bcb01281d5a63b8bb87c74c17650f3e4c7__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_cff49a4dc330adf1553dee705fac7862f639b33b74fda177589900b9506a9737__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_d441a1ecab801b1c575c77e3c185431fd7b0029d666fc7417a9f7556b3f83d6f__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_de458c40ee20c89c9807b7a8a5908e3319b480e8b007f55d3d683bc68bb7186e__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_f52391ebd610d5d9d518357ceeaf45367429ac1fd3150210dcaba2450d5bcce8__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_f64a17d208f26e05f2312b5ee80f462bf5bab19979dfd330950359be93bd2d66__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_f836b804fb91fcbb3dafb5e724f5eeb776ededc2eaf47030c5f454694abcbafe__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_f8eb31fdc269657c54ee10149955fecbcb75254d3eeec631bdecc57de525010b__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_ffc61d1a84775e893520fbdfe0ea8909f9284081f97dd4e8ed1bc343abeb295e__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__to_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_struct$_MintFD_Params_$3600_memory_ptr__to_t_struct$_MintFD_Params_$3600_memory_ptr__fromStack_reversed": { + "entryPoint": 23422, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 8, + "returnSlots": 1 + }, + "allocate_memory": { + "entryPoint": 21240, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "allocate_memory_5709": { + "entryPoint": 21199, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "array_allocation_size_array_uint256_dyn": { + "entryPoint": 21319, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 22522, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_div_t_uint256": { + "entryPoint": 23234, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_exp_helper": { + "entryPoint": 22934, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "checked_exp_t_uint256_t_uint256": { + "entryPoint": 23222, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_exp_unsigned": { + "entryPoint": 23031, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_mul_t_uint256": { + "entryPoint": 23293, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 22546, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "copy_memory_to_memory": { + "entryPoint": 23628, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "panic_error_0x11": { + "entryPoint": 22475, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x31": { + "entryPoint": 23937, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 23862, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 21152, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:40011:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "63:147:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "73:29:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "95:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "82:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "82:20:39" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "73:5:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "188:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "200:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "190:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "190:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "190:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "124:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "135:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "142:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "131:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "131:54:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "121:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "121:65:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "114:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "114:73:39" + }, + "nodeType": "YulIf", + "src": "111:93:39" + } + ] + }, + "name": "abi_decode_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "42:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "53:5:39", + "type": "" + } + ], + "src": "14:196:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "285:116:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "331:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "340:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "343:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "333:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "333:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "333:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "306:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "315:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "302:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "302:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "327:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "298:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "298:32:39" + }, + "nodeType": "YulIf", + "src": "295:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "356:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "385:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "366:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "366:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "356:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "251:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "262:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "274:6:39", + "type": "" + } + ], + "src": "215:186:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "507:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "517:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "529:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "540:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "525:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "525:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "517:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "559:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "570:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "552:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "552:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "552:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "476:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "487:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "498:4:39", + "type": "" + } + ], + "src": "406:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "658:110:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "704:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "713:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "716:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "706:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "706:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "706:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "679:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "688:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "675:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "675:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "700:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "671:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "671:32:39" + }, + "nodeType": "YulIf", + "src": "668:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "729:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "752:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "739:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "739:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "729:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "624:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "635:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "647:6:39", + "type": "" + } + ], + "src": "588:180:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "874:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "884:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "896:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "907:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "892:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "892:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "884:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "926:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "937:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "919:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "919:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "919:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "843:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "854:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "865:4:39", + "type": "" + } + ], + "src": "773:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1046:283:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1095:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1104:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1107:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1097:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1097:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1097:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1074:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1082:4:39", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1070:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1070:17:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "1089:3:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1066:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1066:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1059:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1059:35:39" + }, + "nodeType": "YulIf", + "src": "1056:55:39" + }, + { + "nodeType": "YulAssignment", + "src": "1120:30:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1143:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1130:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1130:20:39" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1120:6:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1193:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1202:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1205:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1195:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1195:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1195:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1165:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1173:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1162:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1162:30:39" + }, + "nodeType": "YulIf", + "src": "1159:50:39" + }, + { + "nodeType": "YulAssignment", + "src": "1218:29:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1234:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1242:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1230:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1230:17:39" + }, + "variableNames": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "1218:8:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1307:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1316:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1319:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1309:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1309:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1309:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1270:6:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1282:1:39", + "type": "", + "value": "5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1285:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1278:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1278:14:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1266:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1266:27:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1295:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1262:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1262:38:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "1302:3:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1259:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1259:47:39" + }, + "nodeType": "YulIf", + "src": "1256:67:39" + } + ] + }, + "name": "abi_decode_array_bytes_calldata_dyn_calldata", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1009:6:39", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "1017:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "arrayPos", + "nodeType": "YulTypedName", + "src": "1025:8:39", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1035:6:39", + "type": "" + } + ], + "src": "955:374:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1501:493:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1548:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1557:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1560:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1550:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1550:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1550:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1522:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1531:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1518:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1518:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1543:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1514:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1514:33:39" + }, + "nodeType": "YulIf", + "src": "1511:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "1573:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1596:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1583:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1583:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1573:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1615:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1642:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1653:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1638:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1638:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1625:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1625:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1615:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1666:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1693:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1704:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1689:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1689:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1676:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1676:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "1666:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1717:46:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1748:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1759:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1744:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1744:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1731:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1731:32:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1721:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1806:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1815:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1818:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1808:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1808:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1808:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1778:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1786:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1775:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1775:30:39" + }, + "nodeType": "YulIf", + "src": "1772:50:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1831:103:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1906:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1917:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1902:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1902:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1926:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_bytes_calldata_dyn_calldata", + "nodeType": "YulIdentifier", + "src": "1857:44:39" + }, + "nodeType": "YulFunctionCall", + "src": "1857:77:39" + }, + "variables": [ + { + "name": "value3_1", + "nodeType": "YulTypedName", + "src": "1835:8:39", + "type": "" + }, + { + "name": "value4_1", + "nodeType": "YulTypedName", + "src": "1845:8:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1943:18:39", + "value": { + "name": "value3_1", + "nodeType": "YulIdentifier", + "src": "1953:8:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "1943:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1970:18:39", + "value": { + "name": "value4_1", + "nodeType": "YulIdentifier", + "src": "1980:8:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "1970:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1435:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1446:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1458:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1466:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "1474:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "1482:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "1490:6:39", + "type": "" + } + ], + "src": "1334:660:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2086:167:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2132:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2141:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2144:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2134:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2134:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2134:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2107:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2116:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2103:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2103:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2128:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2099:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2099:32:39" + }, + "nodeType": "YulIf", + "src": "2096:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "2157:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2180:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2167:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2167:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2157:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2199:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2232:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2243:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2228:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2228:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "2209:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "2209:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2199:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2044:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2055:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2067:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2075:6:39", + "type": "" + } + ], + "src": "1999:254:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2290:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2307:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2310:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2300:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2300:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2300:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2404:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2407:4:39", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2397:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2397:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2397:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2428:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2431:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2421:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2421:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2421:15:39" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "2258:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2493:207:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2503:19:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2519:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2513:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "2513:9:39" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2503:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2531:35:39", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2553:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2561:4:39", + "type": "", + "value": "0xc0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2549:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2549:17:39" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "2535:10:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2641:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "2643:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "2643:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2643:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "2584:10:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2596:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2581:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2581:34:39" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "2620:10:39" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2632:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2617:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2617:22:39" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "2578:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2578:62:39" + }, + "nodeType": "YulIf", + "src": "2575:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2679:2:39", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "2683:10:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2672:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2672:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2672:22:39" + } + ] + }, + "name": "allocate_memory_5709", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "2482:6:39", + "type": "" + } + ], + "src": "2447:253:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2750:289:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2760:19:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2776:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2770:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "2770:9:39" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2760:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2788:117:39", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2810:6:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "2826:4:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2832:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2822:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2822:13:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2837:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2818:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2818:86:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2806:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2806:99:39" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "2792:10:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2980:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "2982:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "2982:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2982:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "2923:10:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2935:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2920:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2920:34:39" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "2959:10:39" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2971:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2956:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2956:22:39" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "2917:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2917:62:39" + }, + "nodeType": "YulIf", + "src": "2914:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3018:2:39", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "3022:10:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3011:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3011:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3011:22:39" + } + ] + }, + "name": "allocate_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "2730:4:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "2739:6:39", + "type": "" + } + ], + "src": "2705:334:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3113:114:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3157:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "3159:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "3159:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3159:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3129:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3137:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3126:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3126:30:39" + }, + "nodeType": "YulIf", + "src": "3123:56:39" + }, + { + "nodeType": "YulAssignment", + "src": "3188:33:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3204:1:39", + "type": "", + "value": "5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3207:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3200:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3200:14:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3216:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3196:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3196:25:39" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "3188:4:39" + } + ] + } + ] + }, + "name": "array_allocation_size_array_uint256_dyn", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "3093:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "3104:4:39", + "type": "" + } + ], + "src": "3044:183:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3296:598:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3345:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3354:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3357:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3347:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3347:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3347:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3324:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3332:4:39", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3320:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3320:17:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3339:3:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3316:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3316:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3309:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3309:35:39" + }, + "nodeType": "YulIf", + "src": "3306:55:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3370:30:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3393:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3380:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "3380:20:39" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "3374:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3409:14:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3419:4:39", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "3413:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3432:71:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3499:2:39" + } + ], + "functionName": { + "name": "array_allocation_size_array_uint256_dyn", + "nodeType": "YulIdentifier", + "src": "3459:39:39" + }, + "nodeType": "YulFunctionCall", + "src": "3459:43:39" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "3443:15:39" + }, + "nodeType": "YulFunctionCall", + "src": "3443:60:39" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "3436:3:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3512:16:39", + "value": { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3525:3:39" + }, + "variables": [ + { + "name": "dst_1", + "nodeType": "YulTypedName", + "src": "3516:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3544:3:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3549:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3537:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3537:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3537:15:39" + }, + { + "nodeType": "YulAssignment", + "src": "3561:19:39", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3572:3:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3577:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3568:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3568:12:39" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3561:3:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3589:46:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3611:6:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3623:1:39", + "type": "", + "value": "5" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3626:2:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3619:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3619:10:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3607:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3607:23:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3632:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3603:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3603:32:39" + }, + "variables": [ + { + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "3593:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3663:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3672:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3675:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3665:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3665:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3665:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "3650:6:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3658:3:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3647:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3647:15:39" + }, + "nodeType": "YulIf", + "src": "3644:35:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3688:26:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3703:6:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3711:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3699:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3699:15:39" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "3692:3:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3779:86:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3800:3:39" + }, + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3818:3:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3805:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "3805:17:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3793:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3793:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3793:30:39" + }, + { + "nodeType": "YulAssignment", + "src": "3836:19:39", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3847:3:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3852:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3843:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3843:12:39" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3836:3:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3734:3:39" + }, + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "3739:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "3731:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3731:15:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "3747:23:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3749:19:39", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3760:3:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3765:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3756:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3756:12:39" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3749:3:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "3727:3:39", + "statements": [] + }, + "src": "3723:142:39" + }, + { + "nodeType": "YulAssignment", + "src": "3874:14:39", + "value": { + "name": "dst_1", + "nodeType": "YulIdentifier", + "src": "3883:5:39" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "3874:5:39" + } + ] + } + ] + }, + "name": "abi_decode_array_uint256_dyn", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3270:6:39", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3278:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "3286:5:39", + "type": "" + } + ], + "src": "3232:662:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3994:253:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4040:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4049:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4052:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4042:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4042:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4042:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4015:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4024:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4011:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4011:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4036:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4007:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4007:32:39" + }, + "nodeType": "YulIf", + "src": "4004:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4065:37:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4092:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4079:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4079:23:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4069:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4145:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4154:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4157:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4147:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4147:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4147:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4117:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4125:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4114:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "4114:30:39" + }, + "nodeType": "YulIf", + "src": "4111:50:39" + }, + { + "nodeType": "YulAssignment", + "src": "4170:71:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4213:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4224:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4209:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4209:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4233:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_uint256_dyn", + "nodeType": "YulIdentifier", + "src": "4180:28:39" + }, + "nodeType": "YulFunctionCall", + "src": "4180:61:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4170:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3960:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3971:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3983:6:39", + "type": "" + } + ], + "src": "3899:348:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4424:420:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4471:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4480:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4483:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4473:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4473:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4473:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4445:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4454:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4441:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4441:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4466:3:39", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4437:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4437:33:39" + }, + "nodeType": "YulIf", + "src": "4434:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "4496:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4519:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4506:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4506:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4496:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4538:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4565:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4576:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4561:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4561:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4548:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4548:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "4538:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4589:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4616:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4627:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4612:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4612:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4599:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4599:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "4589:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4640:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4667:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4678:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4663:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4663:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4650:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4650:32:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "4640:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4691:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4718:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4729:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4714:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4714:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4701:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4701:33:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "4691:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4743:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4770:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4781:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4766:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4766:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4753:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4753:33:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "4743:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4795:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4822:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4833:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4818:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4818:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4805:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4805:33:39" + }, + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "4795:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4342:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "4353:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4365:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "4373:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "4381:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "4389:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "4397:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "4405:6:39", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "4413:6:39", + "type": "" + } + ], + "src": "4252:592:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5050:597:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5097:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5106:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5109:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5099:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5099:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5099:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5071:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5080:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5067:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5067:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5092:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5063:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5063:33:39" + }, + "nodeType": "YulIf", + "src": "5060:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "5122:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5145:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5132:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5132:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5122:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5164:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5191:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5202:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5187:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5187:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5174:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5174:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "5164:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5215:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5242:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5253:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5238:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5238:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5225:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5225:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "5215:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5266:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5293:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5304:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5289:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5289:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5276:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5276:32:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "5266:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5317:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5344:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5355:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5340:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5340:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5327:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5327:33:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "5317:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5369:47:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5400:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5411:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5396:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5396:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5383:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5383:33:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5373:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5459:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5468:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5471:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5461:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5461:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5461:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5431:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5439:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "5428:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "5428:30:39" + }, + "nodeType": "YulIf", + "src": "5425:50:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5484:103:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5559:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5570:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5555:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5555:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5579:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_bytes_calldata_dyn_calldata", + "nodeType": "YulIdentifier", + "src": "5510:44:39" + }, + "nodeType": "YulFunctionCall", + "src": "5510:77:39" + }, + "variables": [ + { + "name": "value5_1", + "nodeType": "YulTypedName", + "src": "5488:8:39", + "type": "" + }, + { + "name": "value6_1", + "nodeType": "YulTypedName", + "src": "5498:8:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5596:18:39", + "value": { + "name": "value5_1", + "nodeType": "YulIdentifier", + "src": "5606:8:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "5596:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5623:18:39", + "value": { + "name": "value6_1", + "nodeType": "YulIdentifier", + "src": "5633:8:39" + }, + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "5623:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4968:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "4979:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4991:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "4999:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "5007:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "5015:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "5023:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "5031:6:39", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "5039:6:39", + "type": "" + } + ], + "src": "4849:798:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5747:92:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5757:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5769:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5780:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5765:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5765:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5757:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5799:9:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5824:6:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5817:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5817:14:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5810:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5810:22:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5792:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5792:41:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5792:41:39" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5716:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5727:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5738:4:39", + "type": "" + } + ], + "src": "5652:187:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5931:167:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5977:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5986:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5989:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5979:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5979:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5979:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5952:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5961:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5948:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5948:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5973:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5944:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5944:32:39" + }, + "nodeType": "YulIf", + "src": "5941:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "6002:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6025:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6012:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "6012:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6002:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6044:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6077:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6088:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6073:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6073:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "6054:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "6054:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "6044:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5889:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "5900:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5912:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "5920:6:39", + "type": "" + } + ], + "src": "5844:254:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6190:161:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6236:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6245:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6248:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6238:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6238:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6238:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6211:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6220:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6207:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6207:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6232:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "6203:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6203:32:39" + }, + "nodeType": "YulIf", + "src": "6200:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "6261:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6284:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6271:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "6271:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6261:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6303:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6330:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6341:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6326:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6326:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6313:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "6313:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "6303:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6148:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "6159:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6171:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "6179:6:39", + "type": "" + } + ], + "src": "6103:248:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6457:125:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6467:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6479:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6490:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6475:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6475:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6467:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6509:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6524:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6532:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6520:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6520:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6502:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6502:74:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6502:74:39" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6426:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6437:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6448:4:39", + "type": "" + } + ], + "src": "6356:226:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6649:1536:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6659:14:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6669:4:39", + "type": "", + "value": "0x1f" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "6663:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6719:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6728:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6731:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6721:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6721:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6721:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6700:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "6708:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6696:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6696:15:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "6713:3:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "6692:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6692:25:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "6685:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6685:33:39" + }, + "nodeType": "YulIf", + "src": "6682:53:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6744:30:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6767:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6754:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "6754:20:39" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "6748:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6783:14:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6793:4:39", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_3", + "nodeType": "YulTypedName", + "src": "6787:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6806:71:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "6873:2:39" + } + ], + "functionName": { + "name": "array_allocation_size_array_uint256_dyn", + "nodeType": "YulIdentifier", + "src": "6833:39:39" + }, + "nodeType": "YulFunctionCall", + "src": "6833:43:39" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "6817:15:39" + }, + "nodeType": "YulFunctionCall", + "src": "6817:60:39" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "6810:3:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6886:16:39", + "value": { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6899:3:39" + }, + "variables": [ + { + "name": "dst_1", + "nodeType": "YulTypedName", + "src": "6890:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6918:3:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "6923:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6911:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6911:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6911:15:39" + }, + { + "nodeType": "YulAssignment", + "src": "6935:19:39", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6946:3:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "6951:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6942:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6942:12:39" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6935:3:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6963:46:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6985:6:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6997:1:39", + "type": "", + "value": "5" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "7000:2:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "6993:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6993:10:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6981:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6981:23:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "7006:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6977:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6977:32:39" + }, + "variables": [ + { + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "6967:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7037:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7046:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7049:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7039:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7039:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7039:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "7024:6:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7032:3:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7021:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "7021:15:39" + }, + "nodeType": "YulIf", + "src": "7018:35:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7062:26:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7077:6:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "7085:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7073:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7073:15:39" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "7066:3:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7153:1003:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7167:36:39", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "7199:3:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7186:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "7186:17:39" + }, + "variables": [ + { + "name": "innerOffset", + "nodeType": "YulTypedName", + "src": "7171:11:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7216:28:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7226:18:39", + "type": "", + "value": "0xffffffffffffffff" + }, + "variables": [ + { + "name": "_4", + "nodeType": "YulTypedName", + "src": "7220:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7292:74:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7310:11:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7320:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_5", + "nodeType": "YulTypedName", + "src": "7314:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "_5", + "nodeType": "YulIdentifier", + "src": "7345:2:39" + }, + { + "name": "_5", + "nodeType": "YulIdentifier", + "src": "7349:2:39" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7338:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7338:14:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7338:14:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "innerOffset", + "nodeType": "YulIdentifier", + "src": "7263:11:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "7276:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7260:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "7260:19:39" + }, + "nodeType": "YulIf", + "src": "7257:109:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7379:34:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7393:6:39" + }, + { + "name": "innerOffset", + "nodeType": "YulIdentifier", + "src": "7401:11:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7389:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7389:24:39" + }, + "variables": [ + { + "name": "_6", + "nodeType": "YulTypedName", + "src": "7383:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7471:74:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7489:11:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7499:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_7", + "nodeType": "YulTypedName", + "src": "7493:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "_7", + "nodeType": "YulIdentifier", + "src": "7524:2:39" + }, + { + "name": "_7", + "nodeType": "YulIdentifier", + "src": "7528:2:39" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7517:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7517:14:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7517:14:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_6", + "nodeType": "YulIdentifier", + "src": "7444:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7448:2:39", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7440:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7440:11:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7453:3:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "7436:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7436:21:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "7429:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7429:29:39" + }, + "nodeType": "YulIf", + "src": "7426:119:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7558:35:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_6", + "nodeType": "YulIdentifier", + "src": "7585:2:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "7589:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7581:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7581:11:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7568:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "7568:25:39" + }, + "variables": [ + { + "name": "_8", + "nodeType": "YulTypedName", + "src": "7562:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7606:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7616:2:39", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "_9", + "nodeType": "YulTypedName", + "src": "7610:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7645:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "7647:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "7647:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7647:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "7637:2:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "7641:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7634:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "7634:10:39" + }, + "nodeType": "YulIf", + "src": "7631:36:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7680:125:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "7723:2:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "7727:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7719:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7719:11:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7732:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "7715:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7715:84:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "7801:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7711:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7711:93:39" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "7695:15:39" + }, + "nodeType": "YulFunctionCall", + "src": "7695:110:39" + }, + "variables": [ + { + "name": "array_1", + "nodeType": "YulTypedName", + "src": "7684:7:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "7825:7:39" + }, + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "7834:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7818:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7818:19:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7818:19:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7895:77:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7913:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7924:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_10", + "nodeType": "YulTypedName", + "src": "7917:3:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "_10", + "nodeType": "YulIdentifier", + "src": "7949:3:39" + }, + { + "name": "_10", + "nodeType": "YulIdentifier", + "src": "7954:3:39" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7942:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7942:16:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7942:16:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_6", + "nodeType": "YulIdentifier", + "src": "7864:2:39" + }, + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "7868:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7860:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7860:11:39" + }, + { + "name": "_9", + "nodeType": "YulIdentifier", + "src": "7873:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7856:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7856:20:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7878:3:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7853:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "7853:29:39" + }, + "nodeType": "YulIf", + "src": "7850:122:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "8002:7:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "8011:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7998:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7998:16:39" + }, + { + "arguments": [ + { + "name": "_6", + "nodeType": "YulIdentifier", + "src": "8020:2:39" + }, + { + "name": "_9", + "nodeType": "YulIdentifier", + "src": "8024:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8016:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8016:11:39" + }, + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "8029:2:39" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "7985:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "7985:47:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7985:47:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "8060:7:39" + }, + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "8069:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8056:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8056:16:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "8074:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8052:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8052:25:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8079:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8045:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8045:36:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8045:36:39" + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "8101:3:39" + }, + { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "8106:7:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8094:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8094:20:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8094:20:39" + }, + { + "nodeType": "YulAssignment", + "src": "8127:19:39", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "8138:3:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "8143:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8134:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8134:12:39" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "8127:3:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "7108:3:39" + }, + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "7113:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "7105:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "7105:15:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "7121:23:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7123:19:39", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "7134:3:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "7139:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7130:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7130:12:39" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "7123:3:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "7101:3:39", + "statements": [] + }, + "src": "7097:1059:39" + }, + { + "nodeType": "YulAssignment", + "src": "8165:14:39", + "value": { + "name": "dst_1", + "nodeType": "YulIdentifier", + "src": "8174:5:39" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "8165:5:39" + } + ] + } + ] + }, + "name": "abi_decode_array_bytes_dyn", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "6623:6:39", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "6631:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "6639:5:39", + "type": "" + } + ], + "src": "6587:1598:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8296:943:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "8342:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8351:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8354:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8344:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8344:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8344:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8317:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8326:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8313:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8313:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8338:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "8309:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8309:32:39" + }, + "nodeType": "YulIf", + "src": "8306:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8367:37:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8394:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8381:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8381:23:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8371:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8413:28:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8423:18:39", + "type": "", + "value": "0xffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "8417:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8468:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8477:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8480:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8470:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8470:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8470:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8456:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "8464:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8453:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "8453:14:39" + }, + "nodeType": "YulIf", + "src": "8450:34:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8493:32:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8507:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8518:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8503:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8503:22:39" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "8497:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8565:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8574:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8577:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8567:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8567:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8567:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8545:7:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8554:2:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8541:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8541:16:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8559:4:39", + "type": "", + "value": "0xc0" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "8537:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8537:27:39" + }, + "nodeType": "YulIf", + "src": "8534:47:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8590:35:39", + "value": { + "arguments": [], + "functionName": { + "name": "allocate_memory_5709", + "nodeType": "YulIdentifier", + "src": "8603:20:39" + }, + "nodeType": "YulFunctionCall", + "src": "8603:22:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8594:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8641:5:39" + }, + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8661:2:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8648:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8648:16:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8634:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8634:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8634:31:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8685:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8692:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8681:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8681:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8714:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8718:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8710:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8710:11:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8697:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8697:25:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8674:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8674:49:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8674:49:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8732:41:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8765:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8769:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8761:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8761:11:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8748:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8748:25:39" + }, + "variables": [ + { + "name": "offset_1", + "nodeType": "YulTypedName", + "src": "8736:8:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8802:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8811:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8814:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8804:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8804:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8804:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "8788:8:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "8798:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8785:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "8785:16:39" + }, + "nodeType": "YulIf", + "src": "8782:36:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8838:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8845:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8834:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8834:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8883:2:39" + }, + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "8887:8:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8879:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8879:17:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8898:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_uint256_dyn", + "nodeType": "YulIdentifier", + "src": "8850:28:39" + }, + "nodeType": "YulFunctionCall", + "src": "8850:56:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8827:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8827:80:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8827:80:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8927:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8934:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8923:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8923:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8956:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8960:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8952:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8952:11:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8939:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8939:25:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8916:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8916:49:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8916:49:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8985:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8992:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8981:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8981:15:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "9015:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9019:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9011:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9011:12:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8998:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8998:26:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8974:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8974:51:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8974:51:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "9034:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "9067:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9071:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9063:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9063:12:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9050:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9050:26:39" + }, + "variables": [ + { + "name": "offset_2", + "nodeType": "YulTypedName", + "src": "9038:8:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9105:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9114:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9117:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9107:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9107:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9107:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_2", + "nodeType": "YulIdentifier", + "src": "9091:8:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "9101:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "9088:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "9088:16:39" + }, + "nodeType": "YulIf", + "src": "9085:36:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9141:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9148:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9137:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9137:15:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "9185:2:39" + }, + { + "name": "offset_2", + "nodeType": "YulIdentifier", + "src": "9189:8:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9181:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9181:17:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9200:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_bytes_dyn", + "nodeType": "YulIdentifier", + "src": "9154:26:39" + }, + "nodeType": "YulFunctionCall", + "src": "9154:54:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9130:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9130:79:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9130:79:39" + }, + { + "nodeType": "YulAssignment", + "src": "9218:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9228:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9218:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_struct$_RecollateralizeDEI_$1556_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8262:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "8273:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "8285:6:39", + "type": "" + } + ], + "src": "8190:1049:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9314:110:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9360:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9369:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9372:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9362:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9362:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9362:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9335:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9344:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9331:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9331:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9356:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "9327:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9327:32:39" + }, + "nodeType": "YulIf", + "src": "9324:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "9385:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9408:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9395:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9395:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9385:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9280:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "9291:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9303:6:39", + "type": "" + } + ], + "src": "9244:180:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9638:699:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9685:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9694:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9697:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9687:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9687:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9687:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9659:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9668:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9655:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9655:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9680:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "9651:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9651:33:39" + }, + "nodeType": "YulIf", + "src": "9648:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "9710:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9733:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9720:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9720:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9710:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "9752:46:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9783:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9794:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9779:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9779:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9766:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9766:32:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9756:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "9807:28:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9817:18:39", + "type": "", + "value": "0xffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "9811:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9862:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9871:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9874:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9864:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9864:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9864:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9850:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "9858:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "9847:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "9847:14:39" + }, + "nodeType": "YulIf", + "src": "9844:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "9887:71:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9930:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9941:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9926:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9926:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9950:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_uint256_dyn", + "nodeType": "YulIdentifier", + "src": "9897:28:39" + }, + "nodeType": "YulFunctionCall", + "src": "9897:61:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "9887:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9967:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9994:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10005:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9990:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9990:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9977:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9977:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "9967:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10018:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10045:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10056:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10041:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10041:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10028:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "10028:32:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "10018:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "10069:49:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10102:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10113:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10098:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10098:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10085:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "10085:33:39" + }, + "variables": [ + { + "name": "offset_1", + "nodeType": "YulTypedName", + "src": "10073:8:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10147:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10156:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10159:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10149:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10149:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10149:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "10133:8:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "10143:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "10130:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "10130:16:39" + }, + "nodeType": "YulIf", + "src": "10127:36:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "10172:105:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10247:9:39" + }, + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "10258:8:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10243:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10243:24:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10269:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_bytes_calldata_dyn_calldata", + "nodeType": "YulIdentifier", + "src": "10198:44:39" + }, + "nodeType": "YulFunctionCall", + "src": "10198:79:39" + }, + "variables": [ + { + "name": "value4_1", + "nodeType": "YulTypedName", + "src": "10176:8:39", + "type": "" + }, + { + "name": "value5_1", + "nodeType": "YulTypedName", + "src": "10186:8:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10286:18:39", + "value": { + "name": "value4_1", + "nodeType": "YulIdentifier", + "src": "10296:8:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "10286:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10313:18:39", + "value": { + "name": "value5_1", + "nodeType": "YulIdentifier", + "src": "10323:8:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "10313:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_memory_ptrt_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9564:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "9575:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9587:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "9595:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "9603:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "9611:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "9619:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "9627:6:39", + "type": "" + } + ], + "src": "9429:908:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10446:224:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "10492:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10501:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10504:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10494:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10494:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10494:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10467:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10476:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10463:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10463:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10488:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "10459:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10459:32:39" + }, + "nodeType": "YulIf", + "src": "10456:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "10517:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10546:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "10527:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "10527:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "10517:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10565:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10592:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10603:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10588:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10588:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10575:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "10575:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "10565:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10616:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10649:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10660:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10645:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10645:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "10626:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "10626:38:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "10616:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10396:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "10407:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "10419:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "10427:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "10435:6:39", + "type": "" + } + ], + "src": "10342:328:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10859:545:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "10906:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10915:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10918:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10908:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10908:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10908:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10880:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10889:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10876:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10876:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10901:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "10872:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10872:33:39" + }, + "nodeType": "YulIf", + "src": "10869:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "10931:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10954:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10941:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "10941:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "10931:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10973:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11000:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11011:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10996:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10996:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10983:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "10983:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "10973:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11024:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11051:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11062:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11047:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11047:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "11034:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "11034:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "11024:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11075:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11102:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11113:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11098:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11098:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "11085:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "11085:32:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "11075:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "11126:47:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11157:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11168:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11153:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11153:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "11140:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "11140:33:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "11130:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11216:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11225:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11228:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "11218:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11218:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11218:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11188:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11196:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "11185:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "11185:30:39" + }, + "nodeType": "YulIf", + "src": "11182:50:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "11241:103:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11316:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11327:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11312:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11312:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11336:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_bytes_calldata_dyn_calldata", + "nodeType": "YulIdentifier", + "src": "11267:44:39" + }, + "nodeType": "YulFunctionCall", + "src": "11267:77:39" + }, + "variables": [ + { + "name": "value4_1", + "nodeType": "YulTypedName", + "src": "11245:8:39", + "type": "" + }, + { + "name": "value5_1", + "nodeType": "YulTypedName", + "src": "11255:8:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11353:18:39", + "value": { + "name": "value4_1", + "nodeType": "YulIdentifier", + "src": "11363:8:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "11353:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11380:18:39", + "value": { + "name": "value5_1", + "nodeType": "YulIdentifier", + "src": "11390:8:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "11380:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10785:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "10796:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "10808:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "10816:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "10824:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "10832:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "10840:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "10848:6:39", + "type": "" + } + ], + "src": "10675:729:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11441:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11458:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11461:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11451:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11451:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11451:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11555:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11558:4:39", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11548:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11548:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11548:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11579:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11582:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "11572:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11572:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11572:15:39" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "11409:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11646:80:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "11673:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "11675:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "11675:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11675:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11662:1:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11669:1:39" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "11665:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11665:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "11659:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "11659:13:39" + }, + "nodeType": "YulIf", + "src": "11656:39:39" + }, + { + "nodeType": "YulAssignment", + "src": "11704:16:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11715:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11718:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11711:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11711:9:39" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "11704:3:39" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "11629:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "11632:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "11638:3:39", + "type": "" + } + ], + "src": "11598:128:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11905:321:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11922:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11933:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11915:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11915:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11915:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11956:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11967:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11952:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11952:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11972:2:39", + "type": "", + "value": "91" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11945:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11945:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11945:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11995:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12006:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11991:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11991:18:39" + }, + { + "hexValue": "504f4f4c3a3a636f6c6c656374526564656d7074696f6e3a204d757374207761", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12011:34:39", + "type": "", + "value": "POOL::collectRedemption: Must wa" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11984:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11984:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11984:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12066:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12077:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12062:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12062:18:39" + }, + { + "hexValue": "697420666f7220726564656d7074696f6e5f64656c617920626c6f636b732062", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12082:34:39", + "type": "", + "value": "it for redemption_delay blocks b" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12055:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12055:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12055:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12137:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12148:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12133:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12133:19:39" + }, + { + "hexValue": "65666f726520636f6c6c656374696e6720726564656d7074696f6e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12154:29:39", + "type": "", + "value": "efore collecting redemption" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12126:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12126:58:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12126:58:39" + }, + { + "nodeType": "YulAssignment", + "src": "12193:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12205:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12216:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12201:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12201:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12193:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_38c9fd1b67df6e999cac6aaf315cc13e0fa4fc296b57f92466d27a378c17f081__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "11882:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "11896:4:39", + "type": "" + } + ], + "src": "11731:495:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12280:76:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "12302:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "12304:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "12304:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12304:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "12296:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "12299:1:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "12293:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "12293:8:39" + }, + "nodeType": "YulIf", + "src": "12290:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "12333:17:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "12345:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "12348:1:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "12341:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12341:9:39" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "12333:4:39" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "12262:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "12265:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "12271:4:39", + "type": "" + } + ], + "src": "12231:125:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12535:175:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12552:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12563:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12545:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12545:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12545:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12586:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12597:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12582:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12582:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12602:2:39", + "type": "", + "value": "25" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12575:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12575:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12575:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12625:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12636:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12621:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12621:18:39" + }, + { + "hexValue": "504f4f4c3a3a52656465656d696e6720697320706175736564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12641:27:39", + "type": "", + "value": "POOL::Redeeming is paused" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12614:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12614:55:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12614:55:39" + }, + { + "nodeType": "YulAssignment", + "src": "12678:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12690:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12701:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12686:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12686:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12678:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_de458c40ee20c89c9807b7a8a5908e3319b480e8b007f55d3d683bc68bb7186e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12512:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "12526:4:39", + "type": "" + } + ], + "src": "12361:349:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12796:103:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "12842:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12851:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12854:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "12844:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12844:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12844:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "12817:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12826:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "12813:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12813:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12838:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "12809:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12809:32:39" + }, + "nodeType": "YulIf", + "src": "12806:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "12867:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12883:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "12877:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "12877:16:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "12867:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12762:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "12773:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "12785:6:39", + "type": "" + } + ], + "src": "12715:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13078:179:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13095:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13106:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13088:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13088:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13088:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13129:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13140:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13125:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13125:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13145:2:39", + "type": "", + "value": "29" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13118:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13118:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13118:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13168:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13179:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13164:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13164:18:39" + }, + { + "hexValue": "436f6c6c61746572616c20726174696f206d757374206265203d3d2031", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13184:31:39", + "type": "", + "value": "Collateral ratio must be == 1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13157:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13157:59:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13157:59:39" + }, + { + "nodeType": "YulAssignment", + "src": "13225:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13237:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13248:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13233:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13233:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13225:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_c70433350355bf0543fc06a466fe44bcb01281d5a63b8bb87c74c17650f3e4c7__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13055:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13069:4:39", + "type": "" + } + ], + "src": "12904:353:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13436:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13453:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13464:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13446:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13446:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13446:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13487:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13498:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13483:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13483:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13503:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13476:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13476:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13476:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13526:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13537:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13522:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13522:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e6174", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13542:34:39", + "type": "", + "value": "POOL::mintAlgorithmicDEI: signat" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13515:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13515:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13515:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13597:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13608:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13593:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13593:18:39" + }, + { + "hexValue": "75726520697320657870697265642e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13613:17:39", + "type": "", + "value": "ure is expired." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13586:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13586:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13586:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "13640:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13652:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13663:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13648:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13648:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13640:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0553f3220b1c65f13a1a0bcfbae12cc9d57080d375095d8011e479f9a164d51f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13413:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13427:4:39", + "type": "" + } + ], + "src": "13262:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13881:257:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13898:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13911:2:39", + "type": "", + "value": "96" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13915:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "13907:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13907:15:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13924:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "13903:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13903:88:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13891:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13891:101:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13891:101:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14012:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14017:2:39", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14008:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14008:12:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "14022:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14001:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14001:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14001:28:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14049:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14054:2:39", + "type": "", + "value": "52" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14045:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14045:12:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "14059:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14038:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14038:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14038:28:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14086:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14091:2:39", + "type": "", + "value": "84" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14082:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14082:12:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "14096:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14075:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14075:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14075:28:39" + }, + { + "nodeType": "YulAssignment", + "src": "14112:20:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14123:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14128:3:39", + "type": "", + "value": "116" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14119:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14119:13:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "14112:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "13833:3:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "13838:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "13846:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "13854:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13862:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "13873:3:39", + "type": "" + } + ], + "src": "13678:460:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14209:259:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14226:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14231:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14219:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14219:19:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14219:19:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14264:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14269:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14260:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14260:14:39" + }, + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "14276:5:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14283:6:39" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "14247:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "14247:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14247:43:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14314:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14319:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14310:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14310:16:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14328:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14306:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14306:27:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14335:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14299:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14299:38:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14299:38:39" + }, + { + "nodeType": "YulAssignment", + "src": "14346:116:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14361:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14374:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14382:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14370:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14370:15:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14387:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "14366:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14366:88:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14357:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14357:98:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14457:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14353:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14353:109:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "14346:3:39" + } + ] + } + ] + }, + "name": "abi_encode_bytes_calldata", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "start", + "nodeType": "YulTypedName", + "src": "14178:5:39", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "14185:6:39", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "14193:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "14201:3:39", + "type": "" + } + ], + "src": "14143:325:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14682:1170:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14692:32:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14710:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14721:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14706:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14706:18:39" + }, + "variables": [ + { + "name": "tail_1", + "nodeType": "YulTypedName", + "src": "14696:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14740:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "14751:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14733:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14733:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14733:25:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "14767:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14777:2:39", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "14771:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14799:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "14810:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14795:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14795:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14815:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14788:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14788:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14788:30:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "14827:17:39", + "value": { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "14838:6:39" + }, + "variables": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "14831:3:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "14860:6:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "14868:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14853:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14853:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14853:22:39" + }, + { + "nodeType": "YulAssignment", + "src": "14884:25:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14895:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14906:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14891:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14891:18:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14884:3:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "14918:53:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14940:9:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14955:1:39", + "type": "", + "value": "5" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "14958:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "14951:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14951:14:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14936:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14936:30:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14968:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14932:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14932:39:39" + }, + "variables": [ + { + "name": "tail_2", + "nodeType": "YulTypedName", + "src": "14922:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "14980:20:39", + "value": { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "14994:6:39" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "14984:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15009:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15018:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "15013:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15077:746:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15098:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "15111:6:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15119:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15107:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15107:22:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15131:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15103:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15103:95:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15091:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15091:108:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15091:108:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15212:46:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "15251:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "15238:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "15238:20:39" + }, + "variables": [ + { + "name": "rel_offset_of_tail", + "nodeType": "YulTypedName", + "src": "15216:18:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15408:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15417:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15420:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "15410:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15410:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15410:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "rel_offset_of_tail", + "nodeType": "YulIdentifier", + "src": "15285:18:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier", + "src": "15313:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "15313:14:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "15329:6:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15309:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15309:27:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15338:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15305:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15305:100:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "15281:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15281:125:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "15274:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15274:133:39" + }, + "nodeType": "YulIf", + "src": "15271:153:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15437:44:39", + "value": { + "arguments": [ + { + "name": "rel_offset_of_tail", + "nodeType": "YulIdentifier", + "src": "15454:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "15474:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15450:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15450:31:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "15441:5:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15494:33:39", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15521:5:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "15508:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "15508:19:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "15498:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15574:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15583:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15586:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "15576:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15576:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15576:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "15546:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15554:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "15543:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "15543:30:39" + }, + "nodeType": "YulIf", + "src": "15540:50:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15647:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15656:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15659:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "15649:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15649:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15649:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "15610:6:39" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier", + "src": "15622:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "15622:14:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "15638:6:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15618:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15618:27:39" + } + ], + "functionName": { + "name": "sgt", + "nodeType": "YulIdentifier", + "src": "15606:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15606:40:39" + }, + "nodeType": "YulIf", + "src": "15603:60:39" + }, + { + "nodeType": "YulAssignment", + "src": "15676:67:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15716:5:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "15723:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15712:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15712:14:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "15728:6:39" + }, + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "15736:6:39" + } + ], + "functionName": { + "name": "abi_encode_bytes_calldata", + "nodeType": "YulIdentifier", + "src": "15686:25:39" + }, + "nodeType": "YulFunctionCall", + "src": "15686:57:39" + }, + "variableNames": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "15676:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "15756:25:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "15770:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "15778:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15766:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15766:15:39" + }, + "variableNames": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "15756:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "15794:19:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15805:3:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "15810:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15801:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15801:12:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15794:3:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "15039:1:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "15042:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "15036:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "15036:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "15050:18:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15052:14:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "15061:1:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15064:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15057:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15057:9:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "15052:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "15032:3:39", + "statements": [] + }, + "src": "15028:795:39" + }, + { + "nodeType": "YulAssignment", + "src": "15832:14:39", + "value": { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "15840:6:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15832:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "14635:9:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "14646:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "14654:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "14662:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "14673:4:39", + "type": "" + } + ], + "src": "14473:1379:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15935:199:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "15981:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15990:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15993:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "15983:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15983:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15983:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "15956:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15965:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15952:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15952:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15977:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "15948:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15948:32:39" + }, + "nodeType": "YulIf", + "src": "15945:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "16006:29:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16025:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "16019:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "16019:16:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16010:5:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16088:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16097:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16100:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "16090:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16090:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16090:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16057:5:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16078:5:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "16071:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16071:13:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "16064:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16064:21:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "16054:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "16054:32:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "16047:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16047:40:39" + }, + "nodeType": "YulIf", + "src": "16044:60:39" + }, + { + "nodeType": "YulAssignment", + "src": "16113:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16123:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "16113:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bool_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15901:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "15912:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "15924:6:39", + "type": "" + } + ], + "src": "15857:277:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16313:228:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16330:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16341:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16323:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16323:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16323:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16364:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16375:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16360:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16360:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16380:2:39", + "type": "", + "value": "38" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16353:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16353:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16353:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16403:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16414:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16399:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16399:18:39" + }, + { + "hexValue": "504f4f4c3a3a72656465656d3174314445493a20696e76616c6964207369676e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "16419:34:39", + "type": "", + "value": "POOL::redeem1t1DEI: invalid sign" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16392:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16392:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16392:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16474:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16485:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16470:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16470:18:39" + }, + { + "hexValue": "617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "16490:8:39", + "type": "", + "value": "atures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16463:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16463:36:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16463:36:39" + }, + { + "nodeType": "YulAssignment", + "src": "16508:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16520:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16531:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16516:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16516:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "16508:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3b8d4b54db08ed890798fdc55ba1c410b1b90a23a79193c7486d04051b31717b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "16290:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "16304:4:39", + "type": "" + } + ], + "src": "16139:402:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16610:418:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16620:16:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16635:1:39", + "type": "", + "value": "1" + }, + "variables": [ + { + "name": "power_1", + "nodeType": "YulTypedName", + "src": "16624:7:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16645:16:39", + "value": { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "16654:7:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "16645:5:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16670:13:39", + "value": { + "name": "_base", + "nodeType": "YulIdentifier", + "src": "16678:5:39" + }, + "variableNames": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16670:4:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16734:288:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "16839:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "16841:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "16841:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16841:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16754:4:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16764:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16832:4:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "16760:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16760:77:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "16751:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "16751:87:39" + }, + "nodeType": "YulIf", + "src": "16748:113:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16900:29:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16902:25:39", + "value": { + "arguments": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "16915:5:39" + }, + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16922:4:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "16911:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16911:16:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "16902:5:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "16881:8:39" + }, + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "16891:7:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "16877:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16877:22:39" + }, + "nodeType": "YulIf", + "src": "16874:55:39" + }, + { + "nodeType": "YulAssignment", + "src": "16942:23:39", + "value": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16954:4:39" + }, + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16960:4:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "16950:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16950:15:39" + }, + "variableNames": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16942:4:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16978:34:39", + "value": { + "arguments": [ + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "16994:7:39" + }, + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17003:8:39" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "16990:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16990:22:39" + }, + "variableNames": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "16978:8:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "16703:8:39" + }, + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "16713:7:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "16700:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "16700:21:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "16722:3:39", + "statements": [] + }, + "pre": { + "nodeType": "YulBlock", + "src": "16696:3:39", + "statements": [] + }, + "src": "16692:330:39" + } + ] + }, + "name": "checked_exp_helper", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "_base", + "nodeType": "YulTypedName", + "src": "16574:5:39", + "type": "" + }, + { + "name": "exponent", + "nodeType": "YulTypedName", + "src": "16581:8:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "power", + "nodeType": "YulTypedName", + "src": "16594:5:39", + "type": "" + }, + { + "name": "base", + "nodeType": "YulTypedName", + "src": "16601:4:39", + "type": "" + } + ], + "src": "16546:482:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17092:807:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "17130:52:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17144:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17153:1:39", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17144:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "17167:5:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17112:8:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "17105:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17105:16:39" + }, + "nodeType": "YulIf", + "src": "17102:80:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17215:52:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17229:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17238:1:39", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17229:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "17252:5:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17201:4:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "17194:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17194:12:39" + }, + "nodeType": "YulIf", + "src": "17191:76:39" + }, + { + "cases": [ + { + "body": { + "nodeType": "YulBlock", + "src": "17303:52:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17317:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17326:1:39", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17317:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "17340:5:39" + } + ] + }, + "nodeType": "YulCase", + "src": "17296:59:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17301:1:39", + "type": "", + "value": "1" + } + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17371:123:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "17406:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "17408:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "17408:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17408:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17391:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17401:3:39", + "type": "", + "value": "255" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "17388:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17388:17:39" + }, + "nodeType": "YulIf", + "src": "17385:43:39" + }, + { + "nodeType": "YulAssignment", + "src": "17441:25:39", + "value": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17454:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17464:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "17450:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17450:16:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17441:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "17479:5:39" + } + ] + }, + "nodeType": "YulCase", + "src": "17364:130:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17369:1:39", + "type": "", + "value": "2" + } + } + ], + "expression": { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17283:4:39" + }, + "nodeType": "YulSwitch", + "src": "17276:218:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17592:70:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17606:28:39", + "value": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17619:4:39" + }, + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17625:8:39" + } + ], + "functionName": { + "name": "exp", + "nodeType": "YulIdentifier", + "src": "17615:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17615:19:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17606:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "17647:5:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17516:4:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17522:2:39", + "type": "", + "value": "11" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "17513:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17513:12:39" + }, + { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17530:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17540:2:39", + "type": "", + "value": "78" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "17527:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17527:16:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "17509:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17509:35:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17553:4:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17559:3:39", + "type": "", + "value": "307" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "17550:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17550:13:39" + }, + { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17568:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17578:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "17565:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17565:16:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "17546:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17546:36:39" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "17506:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17506:77:39" + }, + "nodeType": "YulIf", + "src": "17503:159:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "17671:57:39", + "value": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17713:4:39" + }, + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17719:8:39" + } + ], + "functionName": { + "name": "checked_exp_helper", + "nodeType": "YulIdentifier", + "src": "17694:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "17694:34:39" + }, + "variables": [ + { + "name": "power_1", + "nodeType": "YulTypedName", + "src": "17675:7:39", + "type": "" + }, + { + "name": "base_1", + "nodeType": "YulTypedName", + "src": "17684:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17833:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "17835:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "17835:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17835:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "17743:7:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17756:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "base_1", + "nodeType": "YulIdentifier", + "src": "17824:6:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "17752:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17752:79:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "17740:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17740:92:39" + }, + "nodeType": "YulIf", + "src": "17737:118:39" + }, + { + "nodeType": "YulAssignment", + "src": "17864:29:39", + "value": { + "arguments": [ + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "17877:7:39" + }, + { + "name": "base_1", + "nodeType": "YulIdentifier", + "src": "17886:6:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "17873:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17873:20:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17864:5:39" + } + ] + } + ] + }, + "name": "checked_exp_unsigned", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "base", + "nodeType": "YulTypedName", + "src": "17063:4:39", + "type": "" + }, + { + "name": "exponent", + "nodeType": "YulTypedName", + "src": "17069:8:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "power", + "nodeType": "YulTypedName", + "src": "17082:5:39", + "type": "" + } + ], + "src": "17033:866:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17974:61:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17984:45:39", + "value": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "18014:4:39" + }, + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "18020:8:39" + } + ], + "functionName": { + "name": "checked_exp_unsigned", + "nodeType": "YulIdentifier", + "src": "17993:20:39" + }, + "nodeType": "YulFunctionCall", + "src": "17993:36:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17984:5:39" + } + ] + } + ] + }, + "name": "checked_exp_t_uint256_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "base", + "nodeType": "YulTypedName", + "src": "17945:4:39", + "type": "" + }, + { + "name": "exponent", + "nodeType": "YulTypedName", + "src": "17951:8:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "power", + "nodeType": "YulTypedName", + "src": "17964:5:39", + "type": "" + } + ], + "src": "17904:131:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18086:228:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "18117:168:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18138:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18141:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18131:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18131:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18131:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18239:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18242:4:39", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18232:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18232:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18232:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18267:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18270:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "18260:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18260:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18260:15:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "18106:1:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "18099:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18099:9:39" + }, + "nodeType": "YulIf", + "src": "18096:189:39" + }, + { + "nodeType": "YulAssignment", + "src": "18294:14:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "18303:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "18306:1:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "18299:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18299:9:39" + }, + "variableNames": [ + { + "name": "r", + "nodeType": "YulIdentifier", + "src": "18294:1:39" + } + ] + } + ] + }, + "name": "checked_div_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "18071:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "18074:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "r", + "nodeType": "YulTypedName", + "src": "18080:1:39", + "type": "" + } + ], + "src": "18040:274:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18448:119:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "18458:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18470:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18481:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18466:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18466:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "18458:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18500:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "18511:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18493:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18493:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18493:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18538:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18549:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18534:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18534:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "18554:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18527:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18527:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18527:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18409:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "18420:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "18428:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "18439:4:39", + "type": "" + } + ], + "src": "18319:248:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18624:176:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "18743:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "18745:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "18745:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18745:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "18655:1:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "18648:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18648:9:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "18641:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18641:17:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "18663:1:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18670:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "18738:1:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "18666:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18666:74:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "18660:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "18660:81:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "18637:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18637:105:39" + }, + "nodeType": "YulIf", + "src": "18634:131:39" + }, + { + "nodeType": "YulAssignment", + "src": "18774:20:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "18789:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "18792:1:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "18785:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18785:9:39" + }, + "variableNames": [ + { + "name": "product", + "nodeType": "YulIdentifier", + "src": "18774:7:39" + } + ] + } + ] + }, + "name": "checked_mul_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "18603:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "18606:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nodeType": "YulTypedName", + "src": "18612:7:39", + "type": "" + } + ], + "src": "18572:228:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18979:179:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18996:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19007:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18989:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18989:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18989:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19030:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19041:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19026:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19026:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19046:2:39", + "type": "", + "value": "29" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19019:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19019:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19019:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19069:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19080:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19065:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19065:18:39" + }, + { + "hexValue": "4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "19085:31:39", + "type": "", + "value": "Not enough collateral in pool" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19058:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19058:59:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19058:59:39" + }, + { + "nodeType": "YulAssignment", + "src": "19126:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19138:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19149:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19134:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19134:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19126:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_f52391ebd610d5d9d518357ceeaf45367429ac1fd3150210dcaba2450d5bcce8__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18956:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "18970:4:39", + "type": "" + } + ], + "src": "18805:353:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19292:168:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19302:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19314:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19325:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19310:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19310:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19302:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19344:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "19359:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19367:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "19355:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19355:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19337:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19337:74:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19337:74:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19431:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19442:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19427:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19427:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "19447:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19420:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19420:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19420:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "19253:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "19264:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "19272:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "19283:4:39", + "type": "" + } + ], + "src": "19163:297:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19639:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19656:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19667:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19649:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19649:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19649:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19690:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19701:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19686:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19686:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19706:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19679:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19679:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19679:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19729:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19740:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19725:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19725:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "19745:34:39", + "type": "", + "value": "AccessControl: sender must be an" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19718:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19718:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19718:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19800:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19811:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19796:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19796:18:39" + }, + { + "hexValue": "2061646d696e20746f206772616e74", + "kind": "string", + "nodeType": "YulLiteral", + "src": "19816:17:39", + "type": "", + "value": " admin to grant" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19789:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19789:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19789:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "19843:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19855:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19866:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19851:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19851:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19843:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "19616:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "19630:4:39", + "type": "" + } + ], + "src": "19465:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20055:173:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20072:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20083:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20065:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20065:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20065:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20106:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20117:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20102:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20102:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20122:2:39", + "type": "", + "value": "23" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20095:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20095:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20095:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20145:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20156:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20141:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20141:18:39" + }, + { + "hexValue": "504f4f4c3a3a4d696e74696e6720697320706175736564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "20161:25:39", + "type": "", + "value": "POOL::Minting is paused" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20134:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20134:53:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20134:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "20196:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20208:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20219:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20204:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20204:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20196:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_98984f103b51115a1419edfc23f41285c32977e7b02cc32e067bba007d26b4f9__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "20032:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20046:4:39", + "type": "" + } + ], + "src": "19881:347:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20407:179:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20424:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20435:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20417:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20417:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20417:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20458:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20469:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20454:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20454:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20474:2:39", + "type": "", + "value": "29" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20447:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20447:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20447:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20497:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20508:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20493:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20493:18:39" + }, + { + "hexValue": "436f6c6c61746572616c20726174696f206d757374206265203e3d2031", + "kind": "string", + "nodeType": "YulLiteral", + "src": "20513:31:39", + "type": "", + "value": "Collateral ratio must be >= 1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20486:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20486:59:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20486:59:39" + }, + { + "nodeType": "YulAssignment", + "src": "20554:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20566:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20577:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20562:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20562:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20554:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_2b6a8f4152754b6a991bf1b0a666b82b00923d2fd769bf1e3367643b70f91813__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "20384:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20398:4:39", + "type": "" + } + ], + "src": "20233:353:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20765:182:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20782:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20793:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20775:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20775:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20775:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20816:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20827:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20812:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20812:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20832:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20805:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20805:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20805:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20855:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20866:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20851:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20851:18:39" + }, + { + "hexValue": "5b506f6f6c277320436c6f7365645d3a204365696c696e672072656163686564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "20871:34:39", + "type": "", + "value": "[Pool's Closed]: Ceiling reached" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20844:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20844:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20844:62:39" + }, + { + "nodeType": "YulAssignment", + "src": "20915:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20927:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20938:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20923:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20923:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20915:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_cff49a4dc330adf1553dee705fac7862f639b33b74fda177589900b9506a9737__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "20742:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20756:4:39", + "type": "" + } + ], + "src": "20591:356:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21126:228:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21143:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21154:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21136:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21136:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21136:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21177:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21188:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21173:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21173:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21193:2:39", + "type": "", + "value": "38" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21166:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21166:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21166:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21216:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21227:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21212:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21212:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e743174314445493a207369676e61747572652069732065", + "kind": "string", + "nodeType": "YulLiteral", + "src": "21232:34:39", + "type": "", + "value": "POOL::mint1t1DEI: signature is e" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21205:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21205:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21205:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21287:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21298:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21283:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21283:18:39" + }, + { + "hexValue": "787069726564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "21303:8:39", + "type": "", + "value": "xpired" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21276:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21276:36:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21276:36:39" + }, + { + "nodeType": "YulAssignment", + "src": "21321:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21333:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21344:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21329:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21329:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21321:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_f836b804fb91fcbb3dafb5e724f5eeb776ededc2eaf47030c5f454694abcbafe__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "21103:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "21117:4:39", + "type": "" + } + ], + "src": "20952:402:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21533:226:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21550:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21561:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21543:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21543:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21543:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21584:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21595:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21580:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21580:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21600:2:39", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21573:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21573:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21573:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21623:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21634:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21619:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21619:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e743174314445493a20696e76616c6964207369676e6174", + "kind": "string", + "nodeType": "YulLiteral", + "src": "21639:34:39", + "type": "", + "value": "POOL::mint1t1DEI: invalid signat" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21612:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21612:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21612:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21694:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21705:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21690:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21690:18:39" + }, + { + "hexValue": "75726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "21710:6:39", + "type": "", + "value": "ures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21683:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21683:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21683:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "21726:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21738:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21749:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21734:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21734:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21726:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3871818a433a796d8749bf69d3757469c36cba69a6da101f4f86b64a03c25fdf__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "21510:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "21524:4:39", + "type": "" + } + ], + "src": "21359:400:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21938:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21955:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21966:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21948:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21948:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21948:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21989:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22000:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21985:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21985:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22005:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21978:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21978:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21978:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22028:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22039:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22024:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22024:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e6365", + "kind": "string", + "nodeType": "YulLiteral", + "src": "22044:34:39", + "type": "", + "value": "AccessControl: can only renounce" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22017:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22017:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22017:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22099:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22110:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22095:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22095:18:39" + }, + { + "hexValue": "20726f6c657320666f722073656c66", + "kind": "string", + "nodeType": "YulLiteral", + "src": "22115:17:39", + "type": "", + "value": " roles for self" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22088:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22088:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22088:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "22142:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22154:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22165:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22150:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22150:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22142:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "21915:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "21929:4:39", + "type": "" + } + ], + "src": "21764:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22331:481:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "22341:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22351:2:39", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "22345:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22362:32:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22380:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "22391:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22376:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22376:18:39" + }, + "variables": [ + { + "name": "tail_1", + "nodeType": "YulTypedName", + "src": "22366:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22410:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "22421:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22403:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22403:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22403:21:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22433:17:39", + "value": { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "22444:6:39" + }, + "variables": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "22437:3:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22459:27:39", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "22479:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "22473:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "22473:13:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "22463:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "22502:6:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "22510:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22495:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22495:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22495:22:39" + }, + { + "nodeType": "YulAssignment", + "src": "22526:25:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22537:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22548:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22533:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22533:18:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22526:3:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22560:29:39", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "22578:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "22586:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22574:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22574:15:39" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "22564:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22598:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22607:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "22602:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22666:120:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22687:3:39" + }, + { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "22698:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "22692:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "22692:13:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22680:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22680:26:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22680:26:39" + }, + { + "nodeType": "YulAssignment", + "src": "22719:19:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22730:3:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "22735:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22726:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22726:12:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22719:3:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "22751:25:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "22765:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "22773:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22761:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22761:15:39" + }, + "variableNames": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "22751:6:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "22628:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "22631:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "22625:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "22625:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "22639:18:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "22641:14:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "22650:1:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22653:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22646:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22646:9:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "22641:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "22621:3:39", + "statements": [] + }, + "src": "22617:169:39" + }, + { + "nodeType": "YulAssignment", + "src": "22795:11:39", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22803:3:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22795:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "22300:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "22311:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "22322:4:39", + "type": "" + } + ], + "src": "22180:632:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22991:231:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23008:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23019:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23001:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23001:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23001:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23042:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23053:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23038:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23038:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23058:2:39", + "type": "", + "value": "41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23031:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23031:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23031:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23081:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23092:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23077:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23077:18:39" + }, + { + "hexValue": "504f4f4c3a2043616c6c6572206973206e6f7420504152414d455445525f5345", + "kind": "string", + "nodeType": "YulLiteral", + "src": "23097:34:39", + "type": "", + "value": "POOL: Caller is not PARAMETER_SE" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23070:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23070:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23070:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23152:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23163:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23148:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23148:18:39" + }, + { + "hexValue": "545445525f524f4c45", + "kind": "string", + "nodeType": "YulLiteral", + "src": "23168:11:39", + "type": "", + "value": "TTER_ROLE" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23141:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23141:39:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23141:39:39" + }, + { + "nodeType": "YulAssignment", + "src": "23189:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23201:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23212:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23197:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23197:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23189:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_76b82cf0f5d67f7f31fa6377a21018dea36302e26d7842fad5ba832c330157dd__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "22968:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "22982:4:39", + "type": "" + } + ], + "src": "22817:405:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23496:338:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "23506:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23518:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23529:3:39", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23514:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23514:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23506:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23549:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "23560:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23542:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23542:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23542:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23587:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23598:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23583:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23583:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "23603:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23576:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23576:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23576:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23630:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23641:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23626:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23626:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "23646:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23619:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23619:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23619:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23673:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23684:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23669:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23669:18:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "23689:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23662:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23662:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23662:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23716:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23727:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23712:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23712:19:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "23733:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23705:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23705:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23705:35:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23760:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23771:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23756:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23756:19:39" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "23777:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23749:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23749:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23749:35:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23804:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23815:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23800:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23800:19:39" + }, + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "23821:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23793:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23793:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23793:35:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "23417:9:39", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "23428:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "23436:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "23444:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "23452:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "23460:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "23468:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "23476:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "23487:4:39", + "type": "" + } + ], + "src": "23227:607:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24013:246:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24030:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24041:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24023:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24023:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24023:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24064:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24075:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24060:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24060:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24080:2:39", + "type": "", + "value": "56" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24053:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24053:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24053:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24103:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24114:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24099:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24099:18:39" + }, + { + "hexValue": "436f6c6c61746572616c20726174696f206e6565647320746f20626520626574", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24119:34:39", + "type": "", + "value": "Collateral ratio needs to be bet" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24092:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24092:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24092:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24174:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24185:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24170:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24170:18:39" + }, + { + "hexValue": "7765656e202e30303030303120616e64202e393939393939", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24190:26:39", + "type": "", + "value": "ween .000001 and .999999" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24163:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24163:54:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24163:54:39" + }, + { + "nodeType": "YulAssignment", + "src": "24226:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24238:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24249:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24234:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24234:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24226:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3a4aaa4225031aefd603a0181e03bfba377ad02f3a40d8d4ff79e4b75af91117__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "23990:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "24004:4:39", + "type": "" + } + ], + "src": "23839:420:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24438:298:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24455:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24466:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24448:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24448:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24448:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24489:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24500:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24485:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24485:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24505:2:39", + "type": "", + "value": "68" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24478:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24478:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24478:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24528:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24539:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24524:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24524:18:39" + }, + { + "hexValue": "506f6f6c206365696c696e6720726561636865642c206e6f206d6f7265204445", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24544:34:39", + "type": "", + "value": "Pool ceiling reached, no more DE" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24517:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24517:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24517:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24599:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24610:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24595:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24595:18:39" + }, + { + "hexValue": "492063616e206265206d696e7465642077697468207468697320636f6c6c6174", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24615:34:39", + "type": "", + "value": "I can be minted with this collat" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24588:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24588:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24588:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24670:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24681:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24666:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24666:19:39" + }, + { + "hexValue": "6572616c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24687:6:39", + "type": "", + "value": "eral" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24659:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24659:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24659:35:39" + }, + { + "nodeType": "YulAssignment", + "src": "24703:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24715:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24726:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24711:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24711:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24703:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_415add743154eebc1c14f0dcbb6d42364bd9228c5bfab92187476352ba4cf3a4__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "24415:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "24429:4:39", + "type": "" + } + ], + "src": "24264:472:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24915:236:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24932:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24943:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24925:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24925:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24925:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24966:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24977:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24962:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24962:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24982:2:39", + "type": "", + "value": "46" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24955:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24955:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24955:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25005:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25016:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25001:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25001:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e744672616374696f6e616c4445493a207369676e617475", + "kind": "string", + "nodeType": "YulLiteral", + "src": "25021:34:39", + "type": "", + "value": "POOL::mintFractionalDEI: signatu" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24994:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24994:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24994:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25076:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25087:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25072:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25072:18:39" + }, + { + "hexValue": "726520697320657870697265642e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "25092:16:39", + "type": "", + "value": "re is expired." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25065:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25065:44:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25065:44:39" + }, + { + "nodeType": "YulAssignment", + "src": "25118:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25130:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25141:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25126:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25126:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "25118:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3517d2a2517b8811826efd915add7c546f6c6059a93aba596e992ef7ede2c237__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "24892:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "24906:4:39", + "type": "" + } + ], + "src": "24741:410:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25415:372:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "25425:76:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25435:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "25429:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25517:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25530:2:39", + "type": "", + "value": "96" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "25534:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "25526:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25526:15:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "25543:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "25522:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25522:24:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25510:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25510:37:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25510:37:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25567:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25572:2:39", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25563:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25563:12:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "25577:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25556:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25556:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25556:28:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25604:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25609:2:39", + "type": "", + "value": "52" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25600:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25600:12:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25622:2:39", + "type": "", + "value": "96" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "25626:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "25618:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25618:15:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "25635:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "25614:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25614:24:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25593:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25593:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25593:46:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25659:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25664:2:39", + "type": "", + "value": "72" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25655:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25655:12:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "25669:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25648:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25648:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25648:28:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25696:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25701:3:39", + "type": "", + "value": "104" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25692:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25692:13:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "25707:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25685:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25685:29:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25685:29:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25734:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25739:3:39", + "type": "", + "value": "136" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25730:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25730:13:39" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "25745:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25723:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25723:29:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25723:29:39" + }, + { + "nodeType": "YulAssignment", + "src": "25761:20:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25772:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25777:3:39", + "type": "", + "value": "168" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25768:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25768:13:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "25761:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "25351:3:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "25356:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "25364:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "25372:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "25380:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "25388:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "25396:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "25407:3:39", + "type": "" + } + ], + "src": "25156:631:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25966:233:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25983:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25994:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25976:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25976:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25976:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26017:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26028:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26013:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26013:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26033:2:39", + "type": "", + "value": "43" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26006:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26006:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26006:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26056:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26067:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26052:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26052:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e744672616374696f6e616c4445493a20696e76616c6964", + "kind": "string", + "nodeType": "YulLiteral", + "src": "26072:34:39", + "type": "", + "value": "POOL::mintFractionalDEI: invalid" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26045:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26045:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26045:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26127:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26138:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26123:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26123:18:39" + }, + { + "hexValue": "207369676e617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "26143:13:39", + "type": "", + "value": " signatures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26116:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26116:41:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26116:41:39" + }, + { + "nodeType": "YulAssignment", + "src": "26166:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26178:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26189:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26174:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26174:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26166:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_70791a0be90f5705149d45e0236213cb0328457b5d86e6288006e4f6774b09e7__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "25943:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "25957:4:39", + "type": "" + } + ], + "src": "25792:407:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26261:209:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26278:3:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "26289:5:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26283:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26283:12:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26271:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26271:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26271:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26316:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26321:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26312:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26312:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "26338:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26345:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26334:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26334:16:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26328:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26328:23:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26305:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26305:47:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26305:47:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26372:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26377:4:39", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26368:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26368:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "26394:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26401:4:39", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26390:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26390:16:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26384:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26384:23:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26361:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26361:47:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26361:47:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26428:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26433:4:39", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26424:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26424:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "26450:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26457:4:39", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26446:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26446:16:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26440:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26440:23:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26417:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26417:47:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26417:47:39" + } + ] + }, + "name": "abi_encode_struct_MintFD_Params", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "26245:5:39", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "26252:3:39", + "type": "" + } + ], + "src": "26204:266:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26638:102:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "26648:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26660:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26671:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26656:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26656:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26648:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "26716:6:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26724:9:39" + } + ], + "functionName": { + "name": "abi_encode_struct_MintFD_Params", + "nodeType": "YulIdentifier", + "src": "26684:31:39" + }, + "nodeType": "YulFunctionCall", + "src": "26684:50:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26684:50:39" + } + ] + }, + "name": "abi_encode_tuple_t_struct$_MintFD_Params_$3600_memory_ptr__to_t_struct$_MintFD_Params_$3600_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "26607:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "26618:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "26629:4:39", + "type": "" + } + ], + "src": "26475:265:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26843:147:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "26889:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26898:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26901:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "26891:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26891:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26891:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "26864:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26873:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "26860:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26860:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26885:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "26856:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26856:32:39" + }, + "nodeType": "YulIf", + "src": "26853:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "26914:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26930:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26924:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26924:16:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "26914:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "26949:35:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26969:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26980:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26965:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26965:18:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26959:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26959:25:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "26949:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "26801:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "26812:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "26824:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "26832:6:39", + "type": "" + } + ], + "src": "26745:245:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27169:174:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27186:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27197:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27179:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27179:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27179:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27220:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27231:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27216:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27216:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27236:2:39", + "type": "", + "value": "24" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27209:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27209:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27209:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27259:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27270:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27255:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27255:18:39" + }, + { + "hexValue": "4e6f7420656e6f756768204445555320696e707574746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "27275:26:39", + "type": "", + "value": "Not enough DEUS inputted" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27248:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27248:54:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27248:54:39" + }, + { + "nodeType": "YulAssignment", + "src": "27311:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27323:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27334:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27319:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27319:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27311:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_32c377f750f3acdff4f31738199007cf625ea4cb5a4b65f0253238ad0d6fe603__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "27146:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "27160:4:39", + "type": "" + } + ], + "src": "26995:348:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27522:166:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27539:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27550:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27532:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27532:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27532:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27573:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27584:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27569:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27569:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27589:2:39", + "type": "", + "value": "16" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27562:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27562:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27562:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27612:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27623:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27608:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27608:18:39" + }, + { + "hexValue": "616d6f756e743c3d64616f5368617265", + "kind": "string", + "nodeType": "YulLiteral", + "src": "27628:18:39", + "type": "", + "value": "amount<=daoShare" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27601:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27601:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27601:46:39" + }, + { + "nodeType": "YulAssignment", + "src": "27656:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27668:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27679:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27664:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27664:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27656:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_ffc61d1a84775e893520fbdfe0ea8909f9284081f97dd4e8ed1bc343abeb295e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "27499:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "27513:4:39", + "type": "" + } + ], + "src": "27348:340:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27822:168:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "27832:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27844:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27855:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27840:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27840:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27832:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27874:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "27885:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27867:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27867:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27867:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27912:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27923:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27908:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27908:18:39" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "27932:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27940:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "27928:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27928:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27901:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27901:83:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27901:83:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "27783:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "27794:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "27802:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "27813:4:39", + "type": "" + } + ], + "src": "27693:297:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28169:241:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28186:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28197:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28179:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28179:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28179:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28220:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28231:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28216:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28216:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28236:2:39", + "type": "", + "value": "51" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28209:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28209:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28209:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28259:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28270:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28255:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28255:18:39" + }, + { + "hexValue": "504f4f4c3a3a7265636f6c6c61746572616c697a654445493a205265636f6c6c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "28275:34:39", + "type": "", + "value": "POOL::recollateralizeDEI: Recoll" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28248:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28248:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28248:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28330:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28341:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28326:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28326:18:39" + }, + { + "hexValue": "61746572616c697a6520697320706175736564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "28346:21:39", + "type": "", + "value": "ateralize is paused" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28319:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28319:49:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28319:49:39" + }, + { + "nodeType": "YulAssignment", + "src": "28377:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28389:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28400:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28385:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28385:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "28377:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_565f0845894e0f662254a5093763af0fee3605d54c84edbcf11c672de6a88543__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "28146:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "28160:4:39", + "type": "" + } + ], + "src": "27995:415:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28589:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28606:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28617:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28599:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28599:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28599:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28640:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28651:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28636:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28636:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28656:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28629:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28629:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28629:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28679:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28690:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28675:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28675:18:39" + }, + { + "hexValue": "504f4f4c3a3a7265636f6c6c61746572616c697a654445493a207369676e6174", + "kind": "string", + "nodeType": "YulLiteral", + "src": "28695:34:39", + "type": "", + "value": "POOL::recollateralizeDEI: signat" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28668:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28668:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28668:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28750:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28761:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28746:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28746:18:39" + }, + { + "hexValue": "75726520697320657870697265642e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "28766:17:39", + "type": "", + "value": "ure is expired." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28739:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28739:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28739:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "28793:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28805:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28816:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28801:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28801:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "28793:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_43ec8f409eb317e256e176d402e36ec6af276af1f8f749e4d9fbe21bcd7bc664__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "28566:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "28580:4:39", + "type": "" + } + ], + "src": "28415:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29140:691:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "29150:76:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29160:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "29154:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "29242:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29255:2:39", + "type": "", + "value": "96" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "29259:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "29251:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29251:15:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "29268:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "29247:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29247:24:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29235:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29235:37:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29235:37:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "29281:25:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "29298:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29303:2:39", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29294:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29294:12:39" + }, + "variables": [ + { + "name": "pos_1", + "nodeType": "YulTypedName", + "src": "29285:5:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "29315:27:39", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "29335:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "29329:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "29329:13:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "29319:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "29351:14:39", + "value": { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29360:5:39" + }, + "variableNames": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29351:5:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "29374:14:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29384:4:39", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "29378:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "29397:29:39", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "29415:6:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "29423:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29411:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29411:15:39" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "29401:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "29435:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29444:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "29439:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29503:126:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29524:5:39" + }, + { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "29537:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "29531:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "29531:13:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29517:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29517:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29517:28:39" + }, + { + "nodeType": "YulAssignment", + "src": "29558:23:39", + "value": { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29571:5:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "29578:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29567:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29567:14:39" + }, + "variableNames": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29558:5:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "29594:25:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "29608:6:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "29616:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29604:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29604:15:39" + }, + "variableNames": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "29594:6:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29465:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "29468:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "29462:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "29462:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "29476:18:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "29478:14:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29487:1:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29490:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29483:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29483:9:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29478:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "29458:3:39", + "statements": [] + }, + "src": "29454:175:39" + }, + { + "expression": { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29645:5:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29660:2:39", + "type": "", + "value": "96" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "29664:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "29656:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29656:15:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "29673:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "29652:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29652:24:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29638:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29638:39:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29638:39:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29697:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29704:2:39", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29693:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29693:14:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "29709:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29686:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29686:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29686:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29736:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29743:2:39", + "type": "", + "value": "52" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29732:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29732:14:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "29748:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29725:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29725:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29725:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29775:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29782:2:39", + "type": "", + "value": "84" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29771:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29771:14:39" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "29787:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29764:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29764:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29764:30:39" + }, + { + "nodeType": "YulAssignment", + "src": "29803:22:39", + "value": { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29814:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29821:3:39", + "type": "", + "value": "116" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29810:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29810:15:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "29803:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "29076:3:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "29081:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "29089:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "29097:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "29105:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "29113:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "29121:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "29132:3:39", + "type": "" + } + ], + "src": "28831:1000:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29889:205:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "29899:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29908:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "29903:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29968:63:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "29993:3:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29998:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29989:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29989:11:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "30012:3:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "30017:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30008:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30008:11:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "30002:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "30002:18:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29982:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29982:39:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29982:39:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29929:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "29932:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "29926:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "29926:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "29940:19:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "29942:15:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29951:1:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29954:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29947:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29947:10:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29942:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "29922:3:39", + "statements": [] + }, + "src": "29918:113:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30057:31:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "30070:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30075:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30066:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30066:16:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30084:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30059:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30059:27:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30059:27:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "30046:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30049:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "30043:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "30043:13:39" + }, + "nodeType": "YulIf", + "src": "30040:48:39" + } + ] + }, + "name": "copy_memory_to_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "29867:3:39", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "29872:3:39", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "29877:6:39", + "type": "" + } + ], + "src": "29836:258:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30296:991:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "30306:32:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30324:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30335:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30320:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30320:18:39" + }, + "variables": [ + { + "name": "tail_1", + "nodeType": "YulTypedName", + "src": "30310:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30354:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "30365:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30347:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30347:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30347:25:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30381:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30391:2:39", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "30385:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30413:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "30424:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30409:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30409:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30429:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30402:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30402:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30402:30:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30441:17:39", + "value": { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "30452:6:39" + }, + "variables": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "30445:3:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30467:27:39", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "30487:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "30481:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "30481:13:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "30471:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "30510:6:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30518:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30503:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30503:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30503:22:39" + }, + { + "nodeType": "YulAssignment", + "src": "30534:25:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30545:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30556:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30541:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30541:18:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "30534:3:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30568:53:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30590:9:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30605:1:39", + "type": "", + "value": "5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30608:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "30601:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30601:14:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30586:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30586:30:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30618:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30582:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30582:39:39" + }, + "variables": [ + { + "name": "tail_2", + "nodeType": "YulTypedName", + "src": "30572:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30630:29:39", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "30648:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "30656:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30644:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30644:15:39" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "30634:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30668:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30677:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "30672:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30736:522:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "30757:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "30770:6:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30778:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "30766:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30766:22:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30790:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30762:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30762:95:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30750:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30750:108:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30750:108:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30871:23:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "30887:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "30881:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "30881:13:39" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "30875:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30907:25:39", + "value": { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "30929:2:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "30923:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "30923:9:39" + }, + "variables": [ + { + "name": "length_1", + "nodeType": "YulTypedName", + "src": "30911:8:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "30952:6:39" + }, + { + "name": "length_1", + "nodeType": "YulIdentifier", + "src": "30960:8:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30945:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30945:24:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30945:24:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "31008:2:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "31012:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31004:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31004:11:39" + }, + { + "arguments": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "31021:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "31029:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31017:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31017:15:39" + }, + { + "name": "length_1", + "nodeType": "YulIdentifier", + "src": "31034:8:39" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "30982:21:39" + }, + "nodeType": "YulFunctionCall", + "src": "30982:61:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30982:61:39" + }, + { + "nodeType": "YulAssignment", + "src": "31056:122:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "31074:6:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length_1", + "nodeType": "YulIdentifier", + "src": "31090:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31100:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31086:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31086:17:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31105:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "31082:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31082:90:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31070:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31070:103:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "31175:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31066:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31066:112:39" + }, + "variableNames": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "31056:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "31191:25:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "31205:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "31213:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31201:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31201:15:39" + }, + "variableNames": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "31191:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "31229:19:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "31240:3:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "31245:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31236:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31236:12:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "31229:3:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "30698:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30701:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "30695:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "30695:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "30709:18:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "30711:14:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "30720:1:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30723:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30716:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30716:9:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "30711:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "30691:3:39", + "statements": [] + }, + "src": "30687:571:39" + }, + { + "nodeType": "YulAssignment", + "src": "31267:14:39", + "value": { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "31275:6:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "31267:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "30257:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "30268:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "30276:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "30287:4:39", + "type": "" + } + ], + "src": "30099:1188:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "31466:234:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31483:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31494:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31476:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31476:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31476:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31517:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31528:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31513:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31513:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31533:2:39", + "type": "", + "value": "44" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31506:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31506:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31506:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31556:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31567:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31552:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31552:18:39" + }, + { + "hexValue": "504f4f4c3a3a7265636f6c6c61746572616c697a654445493a20696e76616c69", + "kind": "string", + "nodeType": "YulLiteral", + "src": "31572:34:39", + "type": "", + "value": "POOL::recollateralizeDEI: invali" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31545:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31545:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31545:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31627:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31638:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31623:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31623:18:39" + }, + { + "hexValue": "64207369676e617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "31643:14:39", + "type": "", + "value": "d signatures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31616:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31616:42:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31616:42:39" + }, + { + "nodeType": "YulAssignment", + "src": "31667:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31679:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31690:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31675:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31675:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "31667:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_f8eb31fdc269657c54ee10149955fecbcb75254d3eeec631bdecc57de525010b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "31443:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "31457:4:39", + "type": "" + } + ], + "src": "31292:408:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "31737:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31754:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31757:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31747:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31747:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31747:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31851:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31854:4:39", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31844:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31844:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31844:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31875:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31878:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "31868:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31868:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31868:15:39" + } + ] + }, + "name": "panic_error_0x32", + "nodeType": "YulFunctionDefinition", + "src": "31705:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32107:250:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "32117:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32129:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32140:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32125:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32125:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "32117:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32160:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "32171:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32153:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32153:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32153:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32198:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32209:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32194:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32194:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "32214:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32187:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32187:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32187:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32241:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32252:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32237:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32237:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "32257:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32230:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32230:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32230:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32284:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32295:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32280:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32280:18:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "32300:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32273:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32273:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32273:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32327:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32338:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32323:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32323:19:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "32344:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32316:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32316:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32316:35:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "32044:9:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "32055:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "32063:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "32071:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "32079:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "32087:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "32098:4:39", + "type": "" + } + ], + "src": "31894:463:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32536:244:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32553:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32564:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32546:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32546:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32546:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32587:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32598:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32583:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32583:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32603:2:39", + "type": "", + "value": "54" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32576:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32576:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32576:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32626:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32637:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32622:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32622:18:39" + }, + { + "hexValue": "504f4f4c3a3a72656465656d416c676f726974686d69634445493a20436f6c6c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "32642:34:39", + "type": "", + "value": "POOL::redeemAlgorithmicDEI: Coll" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32615:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32615:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32615:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32697:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32708:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32693:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32693:18:39" + }, + { + "hexValue": "61746572616c20726174696f206d7573742062652030", + "kind": "string", + "nodeType": "YulLiteral", + "src": "32713:24:39", + "type": "", + "value": "ateral ratio must be 0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32686:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32686:52:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32686:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "32747:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32759:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32770:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32755:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32755:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "32747:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_219e324e833041c644ccb1dd3dba73aaa878497ddb310916decd8247cfffb1bd__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "32513:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "32527:4:39", + "type": "" + } + ], + "src": "32362:418:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32959:238:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32976:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32987:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32969:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32969:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32969:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33010:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33021:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33006:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33006:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33026:2:39", + "type": "", + "value": "48" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32999:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32999:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32999:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33049:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33060:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33045:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33045:18:39" + }, + { + "hexValue": "4445493a3a72656465656d416c676f726974686d69634445493a207369676e61", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33065:34:39", + "type": "", + "value": "DEI::redeemAlgorithmicDEI: signa" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33038:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33038:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33038:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33120:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33131:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33116:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33116:18:39" + }, + { + "hexValue": "7475726520697320657870697265642e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33136:18:39", + "type": "", + "value": "ture is expired." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33109:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33109:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33109:46:39" + }, + { + "nodeType": "YulAssignment", + "src": "33164:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33176:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33187:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33172:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33172:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "33164:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_af86e93bd0220a55e8ca62f5f35862820e5999de1371ac209bb45c45b39ee5de__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "32936:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "32950:4:39", + "type": "" + } + ], + "src": "32785:412:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33376:236:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33393:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33404:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33386:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33386:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33386:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33427:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33438:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33423:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33423:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33443:2:39", + "type": "", + "value": "46" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33416:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33416:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33416:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33466:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33477:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33462:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33462:18:39" + }, + { + "hexValue": "504f4f4c3a3a72656465656d416c676f726974686d69634445493a20696e7661", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33482:34:39", + "type": "", + "value": "POOL::redeemAlgorithmicDEI: inva" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33455:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33455:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33455:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33537:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33548:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33533:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33533:18:39" + }, + { + "hexValue": "6c6964207369676e617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33553:16:39", + "type": "", + "value": "lid signatures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33526:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33526:44:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33526:44:39" + }, + { + "nodeType": "YulAssignment", + "src": "33579:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33591:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33602:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33587:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33587:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "33579:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_bff4c2607c2670a7edf36f88b5d5987db2ccc6a59b36f486c4c57f193ba00833__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "33353:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "33367:4:39", + "type": "" + } + ], + "src": "33202:410:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33791:226:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33808:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33819:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33801:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33801:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33801:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33842:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33853:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33838:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33838:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33858:2:39", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33831:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33831:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33831:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33881:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33892:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33877:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33877:18:39" + }, + { + "hexValue": "504f4f4c3a3a6275794261636b444555533a204275796261636b206973207061", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33897:34:39", + "type": "", + "value": "POOL::buyBackDEUS: Buyback is pa" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33870:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33870:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33870:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33952:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33963:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33948:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33948:18:39" + }, + { + "hexValue": "75736564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33968:6:39", + "type": "", + "value": "used" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33941:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33941:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33941:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "33984:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33996:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34007:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33992:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33992:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "33984:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0f701899e5d254af158b94e181e8c864fa1fa8407b8e83a84b212f1856c034bb__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "33768:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "33782:4:39", + "type": "" + } + ], + "src": "33617:400:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34196:229:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34213:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34224:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34206:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34206:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34206:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34247:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34258:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34243:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34243:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34263:2:39", + "type": "", + "value": "39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34236:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34236:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34236:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34286:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34297:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34282:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34282:18:39" + }, + { + "hexValue": "4445493a3a6275794261636b444555533a207369676e61747572652069732065", + "kind": "string", + "nodeType": "YulLiteral", + "src": "34302:34:39", + "type": "", + "value": "DEI::buyBackDEUS: signature is e" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34275:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34275:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34275:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34357:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34368:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34353:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34353:18:39" + }, + { + "hexValue": "7870697265642e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "34373:9:39", + "type": "", + "value": "xpired." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34346:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34346:37:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34346:37:39" + }, + { + "nodeType": "YulAssignment", + "src": "34392:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34404:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34415:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34400:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34400:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "34392:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_74a9279f050c6419792bc3daa57da050d8e2f426f944681941d34e8909be7eac__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "34173:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "34187:4:39", + "type": "" + } + ], + "src": "34022:403:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34604:227:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34621:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34632:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34614:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34614:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34614:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34655:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34666:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34651:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34651:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34671:2:39", + "type": "", + "value": "37" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34644:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34644:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34644:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34694:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34705:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34690:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34690:18:39" + }, + { + "hexValue": "504f4f4c3a3a6275794261636b444555533a20696e76616c6964207369676e61", + "kind": "string", + "nodeType": "YulLiteral", + "src": "34710:34:39", + "type": "", + "value": "POOL::buyBackDEUS: invalid signa" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34683:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34683:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34683:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34765:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34776:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34761:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34761:18:39" + }, + { + "hexValue": "7475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "34781:7:39", + "type": "", + "value": "tures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34754:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34754:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34754:35:39" + }, + { + "nodeType": "YulAssignment", + "src": "34798:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34810:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34821:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34806:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34806:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "34798:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_c668331e1a5c68ea41572b6fbf581e9b4ce7392915c1ff6a6872ae765618f9ee__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "34581:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "34595:4:39", + "type": "" + } + ], + "src": "34430:401:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35009:102:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "35019:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35031:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35042:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35027:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35027:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "35019:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "35087:6:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35095:9:39" + } + ], + "functionName": { + "name": "abi_encode_struct_MintFD_Params", + "nodeType": "YulIdentifier", + "src": "35055:31:39" + }, + "nodeType": "YulFunctionCall", + "src": "35055:50:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35055:50:39" + } + ] + }, + "name": "abi_encode_tuple_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__to_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "34978:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "34989:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "35000:4:39", + "type": "" + } + ], + "src": "34836:275:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35290:176:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35307:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35318:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35300:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35300:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35300:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35341:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35352:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35337:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35337:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35357:2:39", + "type": "", + "value": "26" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35330:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35330:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35330:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35380:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35391:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35376:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35376:18:39" + }, + { + "hexValue": "436f6c6c61746572616c20726174696f206d7573742062652030", + "kind": "string", + "nodeType": "YulLiteral", + "src": "35396:28:39", + "type": "", + "value": "Collateral ratio must be 0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35369:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35369:56:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35369:56:39" + }, + { + "nodeType": "YulAssignment", + "src": "35434:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35446:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35457:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35442:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35442:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "35434:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_f64a17d208f26e05f2312b5ee80f462bf5bab19979dfd330950359be93bd2d66__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "35267:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "35281:4:39", + "type": "" + } + ], + "src": "35116:350:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35645:234:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35662:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35673:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35655:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35655:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35655:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35696:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35707:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35692:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35692:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35712:2:39", + "type": "", + "value": "44" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35685:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35685:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35685:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35735:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35746:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35731:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35731:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e74416c676f726974686d69634445493a20696e76616c69", + "kind": "string", + "nodeType": "YulLiteral", + "src": "35751:34:39", + "type": "", + "value": "POOL::mintAlgorithmicDEI: invali" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35724:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35724:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35724:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35806:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35817:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35802:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35802:18:39" + }, + { + "hexValue": "64207369676e617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "35822:14:39", + "type": "", + "value": "d signatures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35795:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35795:42:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35795:42:39" + }, + { + "nodeType": "YulAssignment", + "src": "35846:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35858:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35869:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35854:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35854:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "35846:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_5a2d3f9bcb3c5bd0b1926b1856db5dd186810b6e73d5cb9f87ee953c4da7fee2__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "35622:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "35636:4:39", + "type": "" + } + ], + "src": "35471:408:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36058:238:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36075:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36086:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36068:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36068:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36068:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36109:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36120:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36105:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36105:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36125:2:39", + "type": "", + "value": "48" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36098:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36098:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36098:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36148:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36159:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36144:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36144:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "36164:34:39", + "type": "", + "value": "AccessControl: sender must be an" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36137:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36137:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36137:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36219:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36230:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36215:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36215:18:39" + }, + { + "hexValue": "2061646d696e20746f207265766f6b65", + "kind": "string", + "nodeType": "YulLiteral", + "src": "36235:18:39", + "type": "", + "value": " admin to revoke" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36208:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36208:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36208:46:39" + }, + { + "nodeType": "YulAssignment", + "src": "36263:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36275:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36286:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36271:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36271:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "36263:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "36035:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "36049:4:39", + "type": "" + } + ], + "src": "35884:412:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36475:174:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36492:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36503:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36485:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36485:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36485:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36526:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36537:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36522:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36522:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36542:2:39", + "type": "", + "value": "24" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36515:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36515:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36515:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36565:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36576:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36561:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36561:18:39" + }, + { + "hexValue": "504f4f4c3a3a796f7520617265206e6f7420747275737479", + "kind": "string", + "nodeType": "YulLiteral", + "src": "36581:26:39", + "type": "", + "value": "POOL::you are not trusty" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36554:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36554:54:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36554:54:39" + }, + { + "nodeType": "YulAssignment", + "src": "36617:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36629:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36640:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36625:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36625:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "36617:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_7b7d20f9ca6e9adc6378137dbeda8a962bb9bf07440b2b9db28bb53f4e464fce__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "36452:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "36466:4:39", + "type": "" + } + ], + "src": "36301:348:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36828:313:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36845:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36856:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36838:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36838:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36838:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36879:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36890:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36875:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36875:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36895:2:39", + "type": "", + "value": "83" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36868:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36868:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36868:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36918:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36929:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36914:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36914:18:39" + }, + { + "hexValue": "504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20436f6c6c61", + "kind": "string", + "nodeType": "YulLiteral", + "src": "36934:34:39", + "type": "", + "value": "POOL::redeemFractionalDEI: Colla" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36907:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36907:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36907:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36989:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37000:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36985:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36985:18:39" + }, + { + "hexValue": "746572616c20726174696f206e6565647320746f206265206265747765656e20", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37005:34:39", + "type": "", + "value": "teral ratio needs to be between " + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36978:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36978:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36978:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37060:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37071:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37056:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37056:19:39" + }, + { + "hexValue": "2e30303030303120616e64202e393939393939", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37077:21:39", + "type": "", + "value": ".000001 and .999999" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37049:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37049:50:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37049:50:39" + }, + { + "nodeType": "YulAssignment", + "src": "37108:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37120:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37131:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37116:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37116:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "37108:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_1eb003467dd04b32fe18359370bc0d0e41e237ed2bf1be23765de9081983dd0d__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "36805:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "36819:4:39", + "type": "" + } + ], + "src": "36654:487:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "37320:236:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37337:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37348:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37330:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37330:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37330:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37371:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37382:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37367:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37367:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37387:2:39", + "type": "", + "value": "46" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37360:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37360:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37360:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37410:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37421:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37406:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37406:18:39" + }, + { + "hexValue": "4445493a3a72656465656d4672616374696f6e616c4445493a207369676e6174", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37426:34:39", + "type": "", + "value": "DEI::redeemFractionalDEI: signat" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37399:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37399:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37399:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37481:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37492:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37477:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37477:18:39" + }, + { + "hexValue": "7572652069732065787069726564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37497:16:39", + "type": "", + "value": "ure is expired" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37470:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37470:44:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37470:44:39" + }, + { + "nodeType": "YulAssignment", + "src": "37523:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37535:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37546:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37531:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37531:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "37523:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_d441a1ecab801b1c575c77e3c185431fd7b0029d666fc7417a9f7556b3f83d6f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "37297:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "37311:4:39", + "type": "" + } + ], + "src": "37146:410:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "37735:235:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37752:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37763:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37745:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37745:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37745:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37786:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37797:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37782:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37782:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37802:2:39", + "type": "", + "value": "45" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37775:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37775:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37775:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37825:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37836:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37821:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37821:18:39" + }, + { + "hexValue": "504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20696e76616c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37841:34:39", + "type": "", + "value": "POOL::redeemFractionalDEI: inval" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37814:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37814:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37814:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37896:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37907:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37892:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37892:18:39" + }, + { + "hexValue": "6964207369676e617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37912:15:39", + "type": "", + "value": "id signatures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37885:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37885:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37885:43:39" + }, + { + "nodeType": "YulAssignment", + "src": "37937:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37949:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37960:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37945:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37945:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "37937:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3cf3652b2acfb73942e459b043ef1100fffabb4093e48d3162412f77ff7ce9c4__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "37712:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "37726:4:39", + "type": "" + } + ], + "src": "37561:409:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38112:137:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "38122:27:39", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "38142:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "38136:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "38136:13:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "38126:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "38184:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38192:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38180:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38180:17:39" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "38199:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "38204:6:39" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "38158:21:39" + }, + "nodeType": "YulFunctionCall", + "src": "38158:53:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38158:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "38220:23:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "38231:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "38236:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38227:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38227:16:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "38220:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "38088:3:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "38093:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "38104:3:39", + "type": "" + } + ], + "src": "37975:274:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38428:181:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38445:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38456:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38438:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38438:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38438:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38479:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38490:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38475:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38475:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38495:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38468:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38468:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38468:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38518:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38529:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38514:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38514:18:39" + }, + { + "hexValue": "5472616e7366657248656c7065723a205452414e534645525f4641494c4544", + "kind": "string", + "nodeType": "YulLiteral", + "src": "38534:33:39", + "type": "", + "value": "TransferHelper: TRANSFER_FAILED" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38507:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38507:61:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38507:61:39" + }, + { + "nodeType": "YulAssignment", + "src": "38577:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38589:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38600:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38585:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38585:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "38577:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "38405:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "38419:4:39", + "type": "" + } + ], + "src": "38254:355:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38771:241:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "38781:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38793:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38804:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38789:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38789:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "38781:4:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "38816:52:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38826:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "38820:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38884:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "38899:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "38907:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "38895:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38895:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38877:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38877:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38877:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38931:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38942:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38927:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38927:18:39" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "38951:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "38959:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "38947:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38947:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38920:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38920:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38920:43:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38983:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38994:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38979:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38979:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "38999:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38972:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38972:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38972:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "38724:9:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "38735:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "38743:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "38751:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "38762:4:39", + "type": "" + } + ], + "src": "38614:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39191:226:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39208:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39219:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39201:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39201:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39201:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39242:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39253:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39238:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39238:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39258:2:39", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39231:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39231:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39231:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39281:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39292:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39277:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39277:18:39" + }, + { + "hexValue": "5472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641", + "kind": "string", + "nodeType": "YulLiteral", + "src": "39297:34:39", + "type": "", + "value": "TransferHelper: TRANSFER_FROM_FA" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39270:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39270:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39270:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39352:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39363:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39348:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39348:18:39" + }, + { + "hexValue": "494c4544", + "kind": "string", + "nodeType": "YulLiteral", + "src": "39368:6:39", + "type": "", + "value": "ILED" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39341:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39341:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39341:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "39384:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39396:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39407:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39392:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39392:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "39384:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "39168:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "39182:4:39", + "type": "" + } + ], + "src": "39017:400:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39596:224:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39613:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39624:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39606:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39606:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39606:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39647:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39658:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39643:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39643:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39663:2:39", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39636:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39636:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39636:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39686:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39697:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39682:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39682:18:39" + }, + { + "hexValue": "456e756d657261626c655365743a20696e646578206f7574206f6620626f756e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "39702:34:39", + "type": "", + "value": "EnumerableSet: index out of boun" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39675:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39675:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39675:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39757:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39768:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39753:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39753:18:39" + }, + { + "hexValue": "6473", + "kind": "string", + "nodeType": "YulLiteral", + "src": "39773:4:39", + "type": "", + "value": "ds" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39746:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39746:32:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39746:32:39" + }, + { + "nodeType": "YulAssignment", + "src": "39787:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39799:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39810:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39795:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39795:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "39787:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "39573:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "39587:4:39", + "type": "" + } + ], + "src": "39422:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39857:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39874:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39877:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39867:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39867:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39867:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39971:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39974:4:39", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39964:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39964:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39964:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39995:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39998:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "39988:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39988:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39988:15:39" + } + ] + }, + "name": "panic_error_0x31", + "nodeType": "YulFunctionDefinition", + "src": "39825:184:39" + } + ] + }, + "contents": "{\n { }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_array_bytes_calldata_dyn_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value3_1, value4_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n value3 := value3_1\n value4 := value4_1\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function panic_error_0x41()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory_5709() -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, 0xc0)\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function array_allocation_size_array_uint256_dyn(length) -> size\n {\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n size := add(shl(5, length), 0x20)\n }\n function abi_decode_array_uint256_dyn(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let _2 := 0x20\n let dst := allocate_memory(array_allocation_size_array_uint256_dyn(_1))\n let dst_1 := dst\n mstore(dst, _1)\n dst := add(dst, _2)\n let srcEnd := add(add(offset, shl(5, _1)), _2)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, _2)\n for { } lt(src, srcEnd) { src := add(src, _2) }\n {\n mstore(dst, calldataload(src))\n dst := add(dst, _2)\n }\n array := dst_1\n }\n function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value0 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n }\n function abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n value4 := calldataload(add(headStart, 128))\n value5 := calldataload(add(headStart, 160))\n value6 := calldataload(add(headStart, 192))\n }\n function abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n value4 := calldataload(add(headStart, 128))\n let offset := calldataload(add(headStart, 160))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value5_1, value6_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n value5 := value5_1\n value6 := value6_1\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_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_decode_array_bytes_dyn(offset, end) -> array\n {\n let _1 := 0x1f\n if iszero(slt(add(offset, _1), end)) { revert(0, 0) }\n let _2 := calldataload(offset)\n let _3 := 0x20\n let dst := allocate_memory(array_allocation_size_array_uint256_dyn(_2))\n let dst_1 := dst\n mstore(dst, _2)\n dst := add(dst, _3)\n let srcEnd := add(add(offset, shl(5, _2)), _3)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, _3)\n for { } lt(src, srcEnd) { src := add(src, _3) }\n {\n let innerOffset := calldataload(src)\n let _4 := 0xffffffffffffffff\n if gt(innerOffset, _4)\n {\n let _5 := 0\n revert(_5, _5)\n }\n let _6 := add(offset, innerOffset)\n if iszero(slt(add(_6, 63), end))\n {\n let _7 := 0\n revert(_7, _7)\n }\n let _8 := calldataload(add(_6, _3))\n let _9 := 64\n if gt(_8, _4) { panic_error_0x41() }\n let array_1 := allocate_memory(add(and(add(_8, _1), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), _3))\n mstore(array_1, _8)\n if gt(add(add(_6, _8), _9), end)\n {\n let _10 := 0\n revert(_10, _10)\n }\n calldatacopy(add(array_1, _3), add(_6, _9), _8)\n mstore(add(add(array_1, _8), _3), 0)\n mstore(dst, array_1)\n dst := add(dst, _3)\n }\n array := dst_1\n }\n function abi_decode_tuple_t_struct$_RecollateralizeDEI_$1556_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if slt(sub(dataEnd, _2), 0xc0) { revert(0, 0) }\n let value := allocate_memory_5709()\n mstore(value, calldataload(_2))\n mstore(add(value, 32), calldataload(add(_2, 32)))\n let offset_1 := calldataload(add(_2, 64))\n if gt(offset_1, _1) { revert(0, 0) }\n mstore(add(value, 64), abi_decode_array_uint256_dyn(add(_2, offset_1), dataEnd))\n mstore(add(value, 96), calldataload(add(_2, 96)))\n mstore(add(value, 128), calldataload(add(_2, 128)))\n let offset_2 := calldataload(add(_2, 160))\n if gt(offset_2, _1) { revert(0, 0) }\n mstore(add(value, 160), abi_decode_array_bytes_dyn(add(_2, offset_2), dataEnd))\n value0 := value\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_memory_ptrt_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n value0 := calldataload(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n value1 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let offset_1 := calldataload(add(headStart, 128))\n if gt(offset_1, _1) { revert(0, 0) }\n let value4_1, value5_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, offset_1), dataEnd)\n value4 := value4_1\n value5 := value5_1\n }\n function abi_decode_tuple_t_addresst_uint256t_address(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := abi_decode_address(add(headStart, 64))\n }\n function abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value4_1, value5_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n value4 := value4_1\n value5 := value5_1\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function abi_encode_tuple_t_stringliteral_38c9fd1b67df6e999cac6aaf315cc13e0fa4fc296b57f92466d27a378c17f081__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 91)\n mstore(add(headStart, 64), \"POOL::collectRedemption: Must wa\")\n mstore(add(headStart, 96), \"it for redemption_delay blocks b\")\n mstore(add(headStart, 128), \"efore collecting redemption\")\n tail := add(headStart, 160)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function abi_encode_tuple_t_stringliteral_de458c40ee20c89c9807b7a8a5908e3319b480e8b007f55d3d683bc68bb7186e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 25)\n mstore(add(headStart, 64), \"POOL::Redeeming is paused\")\n tail := add(headStart, 96)\n }\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_c70433350355bf0543fc06a466fe44bcb01281d5a63b8bb87c74c17650f3e4c7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Collateral ratio must be == 1\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_0553f3220b1c65f13a1a0bcfbae12cc9d57080d375095d8011e479f9a164d51f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"POOL::mintAlgorithmicDEI: signat\")\n mstore(add(headStart, 96), \"ure is expired.\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed(pos, value3, value2, value1, value0) -> end\n {\n mstore(pos, and(shl(96, value0), 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000))\n mstore(add(pos, 20), value1)\n mstore(add(pos, 52), value2)\n mstore(add(pos, 84), value3)\n end := add(pos, 116)\n }\n function abi_encode_bytes_calldata(start, length, pos) -> end\n {\n mstore(pos, length)\n calldatacopy(add(pos, 0x20), start, length)\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n }\n function abi_encode_tuple_t_bytes32_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n let tail_1 := add(headStart, 64)\n mstore(headStart, value0)\n let _1 := 32\n mstore(add(headStart, _1), 64)\n let pos := tail_1\n mstore(tail_1, value2)\n pos := add(headStart, 96)\n let tail_2 := add(add(headStart, shl(5, value2)), 96)\n let srcPtr := value1\n let i := 0\n for { } lt(i, value2) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0))\n let rel_offset_of_tail := calldataload(srcPtr)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), value1), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n let value := add(rel_offset_of_tail, value1)\n let length := calldataload(value)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n if sgt(value1, sub(calldatasize(), length)) { revert(0, 0) }\n tail_2 := abi_encode_bytes_calldata(add(value, _1), length, tail_2)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n tail := tail_2\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_3b8d4b54db08ed890798fdc55ba1c410b1b90a23a79193c7486d04051b31717b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"POOL::redeem1t1DEI: invalid sign\")\n mstore(add(headStart, 96), \"atures\")\n tail := add(headStart, 128)\n }\n function checked_exp_helper(_base, exponent) -> power, base\n {\n let power_1 := 1\n power := power_1\n base := _base\n for { } gt(exponent, power_1) { }\n {\n if gt(base, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, base)) { panic_error_0x11() }\n if and(exponent, power_1) { power := mul(power, base) }\n base := mul(base, base)\n exponent := shr(power_1, exponent)\n }\n }\n function checked_exp_unsigned(base, exponent) -> power\n {\n if iszero(exponent)\n {\n power := 1\n leave\n }\n if iszero(base)\n {\n power := 0\n leave\n }\n switch base\n case 1 {\n power := 1\n leave\n }\n case 2 {\n if gt(exponent, 255) { panic_error_0x11() }\n power := shl(exponent, 1)\n leave\n }\n if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n {\n power := exp(base, exponent)\n leave\n }\n let power_1, base_1 := checked_exp_helper(base, exponent)\n if gt(power_1, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, base_1)) { panic_error_0x11() }\n power := mul(power_1, base_1)\n }\n function checked_exp_t_uint256_t_uint256(base, exponent) -> power\n {\n power := checked_exp_unsigned(base, exponent)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n function 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 checked_mul_t_uint256(x, y) -> product\n {\n if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n product := mul(x, y)\n }\n function abi_encode_tuple_t_stringliteral_f52391ebd610d5d9d518357ceeaf45367429ac1fd3150210dcaba2450d5bcce8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Not enough collateral in pool\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"AccessControl: sender must be an\")\n mstore(add(headStart, 96), \" admin to grant\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_98984f103b51115a1419edfc23f41285c32977e7b02cc32e067bba007d26b4f9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 23)\n mstore(add(headStart, 64), \"POOL::Minting is paused\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_2b6a8f4152754b6a991bf1b0a666b82b00923d2fd769bf1e3367643b70f91813__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Collateral ratio must be >= 1\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_cff49a4dc330adf1553dee705fac7862f639b33b74fda177589900b9506a9737__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"[Pool's Closed]: Ceiling reached\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_f836b804fb91fcbb3dafb5e724f5eeb776ededc2eaf47030c5f454694abcbafe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"POOL::mint1t1DEI: signature is e\")\n mstore(add(headStart, 96), \"xpired\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_3871818a433a796d8749bf69d3757469c36cba69a6da101f4f86b64a03c25fdf__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"POOL::mint1t1DEI: invalid signat\")\n mstore(add(headStart, 96), \"ures\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"AccessControl: can only renounce\")\n mstore(add(headStart, 96), \" roles for self\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, mload(srcPtr))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_encode_tuple_t_stringliteral_76b82cf0f5d67f7f31fa6377a21018dea36302e26d7842fad5ba832c330157dd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"POOL: Caller is not PARAMETER_SE\")\n mstore(add(headStart, 96), \"TTER_ROLE\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 224)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n mstore(add(headStart, 160), value5)\n mstore(add(headStart, 192), value6)\n }\n function abi_encode_tuple_t_stringliteral_3a4aaa4225031aefd603a0181e03bfba377ad02f3a40d8d4ff79e4b75af91117__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 56)\n mstore(add(headStart, 64), \"Collateral ratio needs to be bet\")\n mstore(add(headStart, 96), \"ween .000001 and .999999\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_415add743154eebc1c14f0dcbb6d42364bd9228c5bfab92187476352ba4cf3a4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 68)\n mstore(add(headStart, 64), \"Pool ceiling reached, no more DE\")\n mstore(add(headStart, 96), \"I can be minted with this collat\")\n mstore(add(headStart, 128), \"eral\")\n tail := add(headStart, 160)\n }\n function abi_encode_tuple_t_stringliteral_3517d2a2517b8811826efd915add7c546f6c6059a93aba596e992ef7ede2c237__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"POOL::mintFractionalDEI: signatu\")\n mstore(add(headStart, 96), \"re is expired.\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed(pos, value5, value4, value3, value2, value1, value0) -> end\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000\n mstore(pos, and(shl(96, value0), _1))\n mstore(add(pos, 20), value1)\n mstore(add(pos, 52), and(shl(96, value2), _1))\n mstore(add(pos, 72), value3)\n mstore(add(pos, 104), value4)\n mstore(add(pos, 136), value5)\n end := add(pos, 168)\n }\n function abi_encode_tuple_t_stringliteral_70791a0be90f5705149d45e0236213cb0328457b5d86e6288006e4f6774b09e7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"POOL::mintFractionalDEI: invalid\")\n mstore(add(headStart, 96), \" signatures\")\n tail := add(headStart, 128)\n }\n function abi_encode_struct_MintFD_Params(value, pos)\n {\n mstore(pos, mload(value))\n mstore(add(pos, 0x20), mload(add(value, 0x20)))\n mstore(add(pos, 0x40), mload(add(value, 0x40)))\n mstore(add(pos, 0x60), mload(add(value, 0x60)))\n }\n function abi_encode_tuple_t_struct$_MintFD_Params_$3600_memory_ptr__to_t_struct$_MintFD_Params_$3600_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 128)\n abi_encode_struct_MintFD_Params(value0, headStart)\n }\n function abi_decode_tuple_t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := mload(headStart)\n value1 := mload(add(headStart, 32))\n }\n function abi_encode_tuple_t_stringliteral_32c377f750f3acdff4f31738199007cf625ea4cb5a4b65f0253238ad0d6fe603__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"Not enough DEUS inputted\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_ffc61d1a84775e893520fbdfe0ea8909f9284081f97dd4e8ed1bc343abeb295e__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), \"amount<=daoShare\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_stringliteral_565f0845894e0f662254a5093763af0fee3605d54c84edbcf11c672de6a88543__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 51)\n mstore(add(headStart, 64), \"POOL::recollateralizeDEI: Recoll\")\n mstore(add(headStart, 96), \"ateralize is paused\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_43ec8f409eb317e256e176d402e36ec6af276af1f8f749e4d9fbe21bcd7bc664__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"POOL::recollateralizeDEI: signat\")\n mstore(add(headStart, 96), \"ure is expired.\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed(pos, value5, value4, value3, value2, value1, value0) -> end\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000\n mstore(pos, and(shl(96, value0), _1))\n let pos_1 := add(pos, 20)\n let length := mload(value1)\n pos_1 := pos_1\n let _2 := 0x20\n let srcPtr := add(value1, _2)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, mload(srcPtr))\n pos_1 := add(pos_1, _2)\n srcPtr := add(srcPtr, _2)\n }\n mstore(pos_1, and(shl(96, value2), _1))\n mstore(add(pos_1, 20), value3)\n mstore(add(pos_1, 52), value4)\n mstore(add(pos_1, 84), value5)\n end := add(pos_1, 116)\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 abi_encode_tuple_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n let tail_1 := add(headStart, 64)\n mstore(headStart, value0)\n let _1 := 32\n mstore(add(headStart, _1), 64)\n let pos := tail_1\n let length := mload(value1)\n mstore(tail_1, length)\n pos := add(headStart, 96)\n let tail_2 := add(add(headStart, shl(5, length)), 96)\n let srcPtr := add(value1, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0))\n let _2 := mload(srcPtr)\n let length_1 := mload(_2)\n mstore(tail_2, length_1)\n copy_memory_to_memory(add(_2, _1), add(tail_2, _1), length_1)\n tail_2 := add(add(tail_2, and(add(length_1, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), _1)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n tail := tail_2\n }\n function abi_encode_tuple_t_stringliteral_f8eb31fdc269657c54ee10149955fecbcb75254d3eeec631bdecc57de525010b__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), \"POOL::recollateralizeDEI: invali\")\n mstore(add(headStart, 96), \"d signatures\")\n tail := add(headStart, 128)\n }\n function panic_error_0x32()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 160)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n }\n function abi_encode_tuple_t_stringliteral_219e324e833041c644ccb1dd3dba73aaa878497ddb310916decd8247cfffb1bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 54)\n mstore(add(headStart, 64), \"POOL::redeemAlgorithmicDEI: Coll\")\n mstore(add(headStart, 96), \"ateral ratio must be 0\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_af86e93bd0220a55e8ca62f5f35862820e5999de1371ac209bb45c45b39ee5de__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 48)\n mstore(add(headStart, 64), \"DEI::redeemAlgorithmicDEI: signa\")\n mstore(add(headStart, 96), \"ture is expired.\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_bff4c2607c2670a7edf36f88b5d5987db2ccc6a59b36f486c4c57f193ba00833__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"POOL::redeemAlgorithmicDEI: inva\")\n mstore(add(headStart, 96), \"lid signatures\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_0f701899e5d254af158b94e181e8c864fa1fa8407b8e83a84b212f1856c034bb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"POOL::buyBackDEUS: Buyback is pa\")\n mstore(add(headStart, 96), \"used\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_74a9279f050c6419792bc3daa57da050d8e2f426f944681941d34e8909be7eac__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"DEI::buyBackDEUS: signature is e\")\n mstore(add(headStart, 96), \"xpired.\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_c668331e1a5c68ea41572b6fbf581e9b4ce7392915c1ff6a6872ae765618f9ee__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"POOL::buyBackDEUS: invalid signa\")\n mstore(add(headStart, 96), \"tures\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__to_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 128)\n abi_encode_struct_MintFD_Params(value0, headStart)\n }\n function abi_encode_tuple_t_stringliteral_f64a17d208f26e05f2312b5ee80f462bf5bab19979dfd330950359be93bd2d66__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 26)\n mstore(add(headStart, 64), \"Collateral ratio must be 0\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_5a2d3f9bcb3c5bd0b1926b1856db5dd186810b6e73d5cb9f87ee953c4da7fee2__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), \"POOL::mintAlgorithmicDEI: invali\")\n mstore(add(headStart, 96), \"d signatures\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 48)\n mstore(add(headStart, 64), \"AccessControl: sender must be an\")\n mstore(add(headStart, 96), \" admin to revoke\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_7b7d20f9ca6e9adc6378137dbeda8a962bb9bf07440b2b9db28bb53f4e464fce__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"POOL::you are not trusty\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_1eb003467dd04b32fe18359370bc0d0e41e237ed2bf1be23765de9081983dd0d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 83)\n mstore(add(headStart, 64), \"POOL::redeemFractionalDEI: Colla\")\n mstore(add(headStart, 96), \"teral ratio needs to be between \")\n mstore(add(headStart, 128), \".000001 and .999999\")\n tail := add(headStart, 160)\n }\n function abi_encode_tuple_t_stringliteral_d441a1ecab801b1c575c77e3c185431fd7b0029d666fc7417a9f7556b3f83d6f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"DEI::redeemFractionalDEI: signat\")\n mstore(add(headStart, 96), \"ure is expired\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_3cf3652b2acfb73942e459b043ef1100fffabb4093e48d3162412f77ff7ce9c4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"POOL::redeemFractionalDEI: inval\")\n mstore(add(headStart, 96), \"id signatures\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 31)\n mstore(add(headStart, 64), \"TransferHelper: TRANSFER_FAILED\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"TransferHelper: TRANSFER_FROM_FA\")\n mstore(add(headStart, 96), \"ILED\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"EnumerableSet: index out of boun\")\n mstore(add(headStart, 96), \"ds\")\n tail := add(headStart, 128)\n }\n function panic_error_0x31()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": { + "1600": [ + { + "length": 32, + "start": 3265 + }, + { + "length": 32, + "start": 5509 + }, + { + "length": 32, + "start": 8833 + }, + { + "length": 32, + "start": 11005 + }, + { + "length": 32, + "start": 11759 + }, + { + "length": 32, + "start": 13513 + }, + { + "length": 32, + "start": 14752 + }, + { + "length": 32, + "start": 18351 + } + ] + }, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506004361061032b5760003560e01c80637b0461e9116101b2578063b6258aaa116100f9578063cb73999f116100a2578063e3d84d5e1161007c578063e3d84d5e146106df578063eb2d7461146106f2578063fa4dfa3a14610705578063fede5c9c1461072557600080fd5b8063cb73999f146106bb578063d547741f146106c4578063daa50485146106d757600080fd5b8063c6301e5d116100d3578063c6301e5d1461068c578063c74ec56a1461069f578063ca15c873146106a857600080fd5b8063b6258aaa1461065d578063c3355b8d14610670578063c410ca1b1461067957600080fd5b806391d148541161015b578063a217fddf11610135578063a217fddf1461060f578063abae2c4c14610617578063b235d4681461063757600080fd5b806391d14854146105d6578063928d2b31146105e9578063978b73b5146105fc57600080fd5b80637f877f851161018c5780637f877f851461056d57806388d19f1b146105955780639010d07c1461059e57600080fd5b80637b0461e9146105375780637d55094d146105405780637e4831d31461054857600080fd5b806340e14b7811610276578063564b81ef1161021f5780636d2c5615116101f95780636d2c5615146104c65780636d82e314146104fd5780637901330b1461052457600080fd5b8063564b81ef146104905780635de207cc146104965780636526a12a146104bd57600080fd5b80634ebbe762116102505780634ebbe7621461046257806350c9ecd91461047557806354f9769d1461047d57600080fd5b806340e14b781461043e57806342d15aec146104515780634c6349341461045957600080fd5b80632f2ff15d116102d85780633648b7dc116102b25780633648b7dc1461040257806336568abe1461040b5780633b92da471461041e57600080fd5b80632f2ff15d146103b557806332ad1ee4146103c857806334ddb95d146103db57600080fd5b806315128425116103095780631512842514610376578063248a9ca31461037f578063254cd2bd146103a257600080fd5b806308a7493d14610330578063101197c71461036357806312ace5a21461036c575b600080fd5b61035061033e366004615193565b600a6020526000908152604090205481565b6040519081526020015b60405180910390f35b61035060075481565b61037461072e565b005b61035060115481565b61035061038d3660046151ae565b60009081526020819052604090206002015490565b6103746103b0366004615213565b6108e7565b6103746103c3366004615274565b610fde565b6103506103d6366004615213565b611094565b6103507f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610350600c5481565b610374610419366004615274565b61176a565b61035061042c366004615193565b60096020526000908152604090205481565b61035061044c3660046153d6565b611819565b610374611a37565b61035060105481565b610374610470366004615413565b611afe565b610374611c3d565b61035061048b36600461545f565b611cfb565b46610350565b6103507fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f24050981565b610350600e5481565b6013546104ed90760100000000000000000000000000000000000000000000900460ff1681565b604051901515815260200161035a565b6103507f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e53081565b610374610532366004615274565b612586565b610350600b5481565b61037461271a565b6013546104ed9074010000000000000000000000000000000000000000900460ff1681565b6013546104ed9077010000000000000000000000000000000000000000000000900460ff1681565b61035060125481565b6105b16105ac3660046154d3565b6127d5565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161035a565b6104ed6105e4366004615274565b6127f6565b6103746105f73660046155f7565b61280e565b61037461060a366004615213565b612f1a565b610350600081565b610350610625366004615193565b600d6020526000908152604090205481565b6013546104ed907501000000000000000000000000000000000000000000900460ff1681565b61035061066b3660046151ae565b6134bd565b61035060055481565b6103746106873660046156b0565b6135ac565b61035061069a366004615213565b613a91565b610350600f5481565b6103506106b63660046151ae565b614079565b61035060065481565b6103746106d2366004615274565b614090565b610374614138565b6103746106ed366004615737565b6141f4565b610374610700366004615773565b61431d565b6014546105b19073ffffffffffffffffffffffffffffffffffffffff1681565b61035060085481565b601154336000908152600d6020526040902054439161074c916157fa565b1115610805576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605b60248201527f504f4f4c3a3a636f6c6c656374526564656d7074696f6e3a204d75737420776160448201527f697420666f7220726564656d7074696f6e5f64656c617920626c6f636b73206260648201527f65666f726520636f6c6c656374696e6720726564656d7074696f6e0000000000608482015260a4015b60405180910390fd5b336000908152600960205260408120548190819081901561084d573360009081526009602052604081208054919055600c54909250610845908390615812565b600c55600193505b336000908152600a60205260409020541561088d5750336000908152600a602052604081208054919055600b54610885908290615812565b600b55600192505b83156108b7576004546108b79073ffffffffffffffffffffffffffffffffffffffff163384614b02565b82156108e1576001546108e19073ffffffffffffffffffffffffffffffffffffffff163383614b02565b50505050565b6013547501000000000000000000000000000000000000000000900460ff161561096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa1580156109df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a039190615829565b14610a6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203d3d203100000060448201526064016107fc565b43831015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90610bed9084908790879060040161588b565b602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e919061596d565b610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a72656465656d3174314445493a20696e76616c6964207369676e60448201527f617475726573000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000610ce77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b610cf19088615ac2565b6013546040517f068d54aa000000000000000000000000000000000000000000000000000000008152600481018990526024810183905291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063068d54aa90604401602060405180830381865afa158015610d6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d919190615829565b9050620f4240600654620f4240610da89190615812565b610db29083615afd565b610dbc9190615ac2565b600b546001546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152929350909173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e569190615829565b610e609190615812565b811115610ec9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a6020526040902054610ee49082906157fa565b336000908152600a6020526040902055600b54610f029082906157fa565b600b55336000908152600d60205260409020439055600654620f424090610f29908a615afd565b610f339190615ac2565b60126000828254610f4491906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae906044015b600060405180830381600087803b158015610fbc57600080fd5b505af1158015610fd0573d6000803e3d6000fd5b505050505050505050505050565b600082815260208190526040902060020154610ffa90336127f6565b611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084016107fc565b6110908282614c72565b5050565b60135460009074010000000000000000000000000000000000000000900460ff161561111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa15801561118e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b29190615829565b101561121a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203e3d203100000060448201526064016107fc565b600e54600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015289929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561128f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b39190615829565b6112bd9190615812565b6112c791906157fa565b111561132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5b506f6f6c277320436c6f7365645d3a204365696c696e67207265616368656460448201526064016107fc565b438410156113bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a6d696e743174314445493a207369676e6174757265206973206560448201527f787069726564000000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906114b29084908890889060040161588b565b602060405180830381865afa1580156114cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f3919061596d565b61157e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6d696e743174314445493a20696e76616c6964207369676e617460448201527f757265730000000000000000000000000000000000000000000000000000000060648201526084016107fc565b60006115ab7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6115b59089615afd565b6013546040517f882ab63a000000000000000000000000000000000000000000000000000000008152600481018a90526024810183905291925073ffffffffffffffffffffffffffffffffffffffff169063882ab63a90604401602060405180830381865afa15801561162c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116509190615829565b9250620f4240600554620f42406116679190615812565b6116719085615afd565b61167b9190615ac2565b6001549093506116a39073ffffffffffffffffffffffffffffffffffffffff1633308b614cd8565b620f4240600554846116b59190615afd565b6116bf9190615ac2565b601260008282546116d091906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561174757600080fd5b505af115801561175b573d6000803e3d6000fd5b50505050505095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016107fc565b6110908282614e76565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ad9190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561191e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119429190615829565b6003546040517f2480fcea00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690632480fcea9061199e908890600401615b3a565b602060405180830381865afa1580156119bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119df9190615829565b9050620f42408211156119f357620f424091505b6000620f4240611a038486615afd565b611a0d9190615ac2565b905080821115611a2b57611a218183615812565b9695505050505050565b50600095945050505050565b611a617f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f336127f6565b611a6a57600080fd5b6013805460ff76010000000000000000000000000000000000000000000080830482161581027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f2fda313d9b5bb0b73bd003153f2fccbc0dca49791fdd1184dfad82b44f54bd2e93611af49390049091161515815260200190565b60405180910390a1565b611b287fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f240509336127f6565b611bb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f504f4f4c3a2043616c6c6572206973206e6f7420504152414d455445525f534560448201527f545445525f524f4c45000000000000000000000000000000000000000000000060648201526084016107fc565b600e8790556010869055601185905560058490556006839055600782905560088190556040805188815260208101889052908101869052606081018590526080810184905260a0810183905260c081018290527f17fe98b66d27bd793ea01bd8a23a54acab8eeb167d9eb016a0c7cd71c573920c9060e00160405180910390a150505050505050565b611c677f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf336127f6565b611c7057600080fd5b6013805460ff7701000000000000000000000000000000000000000000000080830482161581027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f4f40fd1c59f78d7a2220da638cd9400daba01e57c7965702f390bf13133cc31f93611af49390049091161515815260200190565b60135460009074010000000000000000000000000000000000000000900460ff1615611d83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015611df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e179190615829565b9050620f424081108015611e2b5750600081115b611eb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f436f6c6c61746572616c20726174696f206e6565647320746f2062652062657460448201527f7765656e202e30303030303120616e64202e393939393939000000000000000060648201526084016107fc565b600e54600b546001546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528c929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f509190615829565b611f5a9190615812565b611f6491906157fa565b1115612019576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f506f6f6c206365696c696e6720726561636865642c206e6f206d6f7265204445908201527f492063616e206265206d696e7465642077697468207468697320636f6c6c617460648201527f6572616c00000000000000000000000000000000000000000000000000000000608482015260a4016107fc565b438510156120a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a207369676e61747560448201527f726520697320657870697265642e00000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018d90529390941b909316605484015260688301899052608883018890524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906121829084908990899060cc0161588b565b602060405180830381865afa15801561219f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c3919061596d565b61224f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a20696e76616c696460448201527f207369676e61747572657300000000000000000000000000000000000000000060648201526084016107fc565b61227a6040518060800160405280600081526020016000815260200160008152602001600081525090565b60006122a77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6122b1908d615afd565b604080516080810182528b8152602081018d9052808201929092526060820186905260135490517f537a30a70000000000000000000000000000000000000000000000000000000081529193506000925073ffffffffffffffffffffffffffffffffffffffff169063537a30a79061232d908590600401615b7e565b6040805180830381865afa158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190615ba9565b90955090508a8111156123dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e6f7420656e6f756768204445555320696e707574746564000000000000000060448201526064016107fc565b620f4240600554620f42406123f19190615812565b6123fb9087615afd565b6124059190615ac2565b600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820184905291965073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561247d57600080fd5b505af1158015612491573d6000803e3d6000fd5b50506001546124bb925073ffffffffffffffffffffffffffffffffffffffff16905033308f614cd8565b620f4240600554866124cd9190615afd565b6124d79190615ac2565b601260008282546124e891906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810187905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561255f57600080fd5b505af1158015612573573d6000803e3d6000fd5b5050505050505050979650505050505050565b6125b07f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e530336127f6565b6125b957600080fd5b601254821115612625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f616d6f756e743c3d64616f53686172650000000000000000000000000000000060448201526064016107fc565b6003546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018590529091169063b4f56b2690604401600060405180830381600087803b15801561269957600080fd5b505af11580156126ad573d6000803e3d6000fd5b5050505081601260008282546126c39190615812565b90915550506040805183815273ffffffffffffffffffffffffffffffffffffffff831660208201527f3a708f2f1c75b12457d207cf1e259ab9f87bbfccb29672903acf4661bd342e49910160405180910390a15050565b6127447fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b336127f6565b61274d57600080fd5b6013805460ff7401000000000000000000000000000000000000000080830482161581027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f6bdfe227d5db299c59aa56d5f846f40dbd73b271aaa78e18ed74fc3e00b8aa6b93611af49390049091161515815260200190565b60008281526020819052604081206127ed9083614edc565b90505b92915050565b60008281526020819052604081206127ed9083614ef2565b601354760100000000000000000000000000000000000000000000900460ff16156128bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a205265636f6c6c60448201527f61746572616c697a65206973207061757365640000000000000000000000000060648201526084016107fc565b438160800151101561294f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b6002546040828101516004546060850151608086015193516000956129989573ffffffffffffffffffffffffffffffffffffffff91821695949190911692914690602001615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052805160209091012060035460a08501517f6793f0ac00000000000000000000000000000000000000000000000000000000845291935073ffffffffffffffffffffffffffffffffffffffff1691636793f0ac91612a2991859190600401615c78565b602060405180830381865afa158015612a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6a919061596d565b612af6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6000612b237f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b8351612b2f9190615afd565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc49190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c599190615829565b60035460408088015190517f2480fcea00000000000000000000000000000000000000000000000000000000815292935060009273ffffffffffffffffffffffffffffffffffffffff90921691632480fcea91612cb891600401615b3a565b602060405180830381865afa158015612cd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf99190615829565b60135460408801518051929350600092839273ffffffffffffffffffffffffffffffffffffffff169163fc01106191899190612d3790600190615812565b81518110612d4757612d47615d36565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015260448101869052606481018890526084810187905260a4016040805180830381865afa158015612dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de39190615ba9565b90925090506000612e157f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b612e1f9084615ac2565b905060008960600151600854601054620f4240612e3c91906157fa565b612e469190615812565b612e509085615afd565b612e5a9190615ac2565b600154909150612e829073ffffffffffffffffffffffffffffffffffffffff16333085614cd8565b600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815233928101929092526024820183905273ffffffffffffffffffffffffffffffffffffffff169063b4f56b26906044015b600060405180830381600087803b158015612ef657600080fd5b505af1158015612f0a573d6000803e3d6000fd5b5050505050505050505050505050565b6013547501000000000000000000000000000000000000000000900460ff1615612fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561300d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130319190615829565b156130be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20436f6c6c60448201527f61746572616c20726174696f206d75737420626520300000000000000000000060648201526084016107fc565b4383101561314e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4445493a3a72656465656d416c676f726974686d69634445493a207369676e6160448201527f7475726520697320657870697265642e0000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906132419084908790879060040161588b565b602060405180830381865afa15801561325e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613282919061596d565b61330e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20696e766160448201527f6c6964207369676e61747572657300000000000000000000000000000000000060648201526084016107fc565b6006548690620f4240906133229082615812565b61332c9083615afd565b6133369190615ac2565b9050600086613348620f424084615afd565b6133529190615ac2565b336000908152600960205260409020549091506133709082906157fa565b33600090815260096020526040902055600c5461338e9082906157fa565b600c55336000908152600d60205260409020439055600654620f4240906133b5908a615afd565b6133bf9190615ac2565b601260008282546133d091906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561344757600080fd5b505af115801561345b573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820185905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401610fa2565b6000620f4240826134ef7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015613560573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135849190615829565b61358e9190615812565b6135989190615afd565b6135a29190615afd565b6127f09190615ac2565b60135477010000000000000000000000000000000000000000000000900460ff1615613659576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6275794261636b444555533a204275796261636b20697320706160448201527f757365640000000000000000000000000000000000000000000000000000000060648201526084016107fc565b438310156136e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4445493a3a6275794261636b444555533a207369676e6174757265206973206560448201527f7870697265642e0000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460045460009173ffffffffffffffffffffffffffffffffffffffff9081169188911687874660405160200161372696959493929190615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906137b59084908790879060040161588b565b602060405180830381865afa1580156137d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f6919061596d565b613882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f504f4f4c3a3a6275794261636b444555533a20696e76616c6964207369676e6160448201527f747572657300000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000604051806080016040528061389889611819565b81526020018781526020018860018a516138b29190615812565b815181106138c2576138c2615d36565b602002602001015181526020018981525090506000620f4240600754620f42406138ec9190615812565b6013546040517f3c04af9f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633c04af9f90613942908790600401615b7e565b602060405180830381865afa15801561395f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139839190615829565b61398d9190615afd565b6139979190615ac2565b905060006139c67f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6139d09083615ac2565b600480546040517fa8a778ae0000000000000000000000000000000000000000000000000000000081523392810192909252602482018d905291925073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015613a4857600080fd5b505af1158015613a5c573d6000803e3d6000fd5b5050600154613a85925073ffffffffffffffffffffffffffffffffffffffff1690503383614b02565b50505050505050505050565b60135460009074010000000000000000000000000000000000000000900460ff1615613b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613baa9190615829565b15613c11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f436f6c6c61746572616c20726174696f206d757374206265203000000000000060448201526064016107fc565b43841015613ca1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90613d949084908890889060040161588b565b602060405180830381865afa158015613db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dd5919061596d565b613e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6013546040517f14da4ee1000000000000000000000000000000000000000000000000000000008152600481018890526024810189905273ffffffffffffffffffffffffffffffffffffffff909116906314da4ee190604401602060405180830381865afa158015613ed7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613efb9190615829565b9150620f4240600554620f4240613f129190615812565b613f1c9084615afd565b613f269190615ac2565b9150620f424060055483613f3a9190615afd565b613f449190615ac2565b60126000828254613f5591906157fa565b9091555050600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820189905273ffffffffffffffffffffffffffffffffffffffff169063a8a778ae90604401600060405180830381600087803b158015613fcd57600080fd5b505af1158015613fe1573d6000803e3d6000fd5b50506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810186905273ffffffffffffffffffffffffffffffffffffffff909116925063b4f56b269150604401600060405180830381600087803b15801561405757600080fd5b505af115801561406b573d6000803e3d6000fd5b505050505095945050505050565b60008181526020819052604081206127f090614f31565b6000828152602081905260409020600201546140ac90336127f6565b61180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b650000000000000000000000000000000060648201526084016107fc565b6141627fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c3857336127f6565b61416b57600080fd5b6013805460ff750100000000000000000000000000000000000000000080830482161581027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f5860c5063a65e23cea4e2e2925f1a841bb6d1bc9615bd425f8dd084980b0514193611af49390049091161515815260200190565b61421e7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336127f6565b614284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f504f4f4c3a3a796f7520617265206e6f7420747275737479000000000000000060448201526064016107fc565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af11580156142f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e1919061596d565b6013547501000000000000000000000000000000000000000000900460ff16156143a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015614413573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144379190615829565b9050620f42408110801561444b5750600081115b6144fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20436f6c6c6160448201527f746572616c20726174696f206e6565647320746f206265206265747765656e2060648201527f2e30303030303120616e64202e39393939393900000000000000000000000000608482015260a4016107fc565b4384101561458d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4445493a3a72656465656d4672616374696f6e616c4445493a207369676e617460448201527f757265206973206578706972656400000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018c90529390941b909316605484015260688301889052608883018790524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906146669084908890889060cc0161588b565b602060405180830381865afa158015614683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146a7919061596d565b614733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20696e76616c60448201527f6964207369676e6174757265730000000000000000000000000000000000000060648201526084016107fc565b60008060008990506000620f4240600654620f42406147529190615812565b61475c908e615afd565b6147669190615ac2565b90506000620f42406147788884615afd565b6147829190615ac2565b61478c9083615812565b90508a61479c620f424083615afd565b6147a69190615ac2565b945060006147d57f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6147df9084615ac2565b90506000620f42406147f18a84615afd565b6147fb9190615ac2565b90508461480b620f424083615afd565b6148159190615ac2565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015292985090965073ffffffffffffffffffffffffffffffffffffffff1694506370a08231935060240191506148789050565b602060405180830381865afa158015614895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148b99190615829565b6148c39190615812565b81111561492c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a60205260409020546149479082906157fa565b336000908152600a6020526040902055600b546149659082906157fa565b600b55336000908152600960205260409020546149839083906157fa565b33600090815260096020526040902055600c546149a19083906157fa565b600c55336000908152600d60205260409020439055600654620f4240906149c8908c615afd565b6149d29190615ac2565b601260008282546149e391906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018c905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015614a5a57600080fd5b505af1158015614a6e573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820186905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401612edc565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16614f3b565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691614b999190615d65565b6000604051808303816000865af19150503d8060008114614bd6576040519150601f19603f3d011682016040523d82523d6000602084013e614bdb565b606091505b5091509150818015614c05575080511580614c05575080806020019051810190614c05919061596d565b614c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016107fc565b5050505050565b6000828152602081905260409020614c8a9082614ad0565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691614d779190615d65565b6000604051808303816000865af19150503d8060008114614db4576040519150601f19603f3d011682016040523d82523d6000602084013e614db9565b606091505b5091509150818015614de3575080511580614de3575080806020019051810190614de3919061596d565b614e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016107fc565b505050505050565b6000828152602081905260409020614e8e9082614f8a565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000614ee88383614fbc565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156127ed565b60006127f0825490565b6000818152600183016020526040812054614f82575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556127f0565b5060006127f0565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16615077565b8154600090821061504f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f647300000000000000000000000000000000000000000000000000000000000060648201526084016107fc565b82600001828154811061506457615064615d36565b9060005260206000200154905092915050565b6000818152600183016020526040812054801561516057600061509b600183615812565b85549091506000906150af90600190615812565b905060008660000182815481106150c8576150c8615d36565b90600052602060002001549050808760000184815481106150eb576150eb615d36565b6000918252602090912001556151028360016157fa565b6000828152600189016020526040902055865487908061512457615124615d81565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506127f0565b60009150506127f0565b803573ffffffffffffffffffffffffffffffffffffffff8116811461518e57600080fd5b919050565b6000602082840312156151a557600080fd5b6127ed8261516a565b6000602082840312156151c057600080fd5b5035919050565b60008083601f8401126151d957600080fd5b50813567ffffffffffffffff8111156151f157600080fd5b6020830191508360208260051b850101111561520c57600080fd5b9250929050565b60008060008060006080868803121561522b57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561525757600080fd5b615263888289016151c7565b969995985093965092949392505050565b6000806040838503121561528757600080fd5b823591506152976020840161516a565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff811182821017156152f2576152f26152a0565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561533f5761533f6152a0565b604052919050565b600067ffffffffffffffff821115615361576153616152a0565b5060051b60200190565b600082601f83011261537c57600080fd5b8135602061539161538c83615347565b6152f8565b82815260059290921b840181019181810190868411156153b057600080fd5b8286015b848110156153cb57803583529183019183016153b4565b509695505050505050565b6000602082840312156153e857600080fd5b813567ffffffffffffffff8111156153ff57600080fd5b61540b8482850161536b565b949350505050565b600080600080600080600060e0888a03121561542e57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080600080600080600060c0888a03121561547a57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a088013567ffffffffffffffff8111156154b457600080fd5b6154c08a828b016151c7565b989b979a50959850939692959293505050565b600080604083850312156154e657600080fd5b50508035926020909101359150565b6000601f838184011261550757600080fd5b8235602061551761538c83615347565b82815260059290921b8501810191818101908784111561553657600080fd5b8287015b848110156155eb57803567ffffffffffffffff8082111561555b5760008081fd5b818a0191508a603f8301126155705760008081fd5b85820135604082821115615586576155866152a0565b6155b5887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c850116016152f8565b92508183528c818386010111156155cc5760008081fd5b818185018985013750600090820187015284525091830191830161553a565b50979650505050505050565b60006020828403121561560957600080fd5b813567ffffffffffffffff8082111561562157600080fd5b9083019060c0828603121561563557600080fd5b61563d6152cf565b823581526020830135602082015260408301358281111561565d57600080fd5b6156698782860161536b565b604083015250606083013560608201526080830135608082015260a08301358281111561569557600080fd5b6156a1878286016154f5565b60a08301525095945050505050565b60008060008060008060a087890312156156c957600080fd5b86359550602087013567ffffffffffffffff808211156156e857600080fd5b6156f48a838b0161536b565b96506040890135955060608901359450608089013591508082111561571857600080fd5b5061572589828a016151c7565b979a9699509497509295939492505050565b60008060006060848603121561574c57600080fd5b6157558461516a565b92506020840135915061576a6040850161516a565b90509250925092565b60008060008060008060a0878903121561578c57600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff8111156157bf57600080fd5b61572589828a016151c7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561580d5761580d6157cb565b500190565b600082821015615824576158246157cb565b500390565b60006020828403121561583b57600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b8781101561595f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18a360301811261591657600080fd5b8901803567ffffffffffffffff81111561592f57600080fd5b8036038b131561593e57600080fd5b61594b8782888501615842565b9650505091830191908301906001016158b5565b509298975050505050505050565b60006020828403121561597f57600080fd5b8151801515811461598f57600080fd5b9392505050565b600181815b808511156159ef57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156159d5576159d56157cb565b808516156159e257918102915b93841c939080029061599b565b509250929050565b600082615a06575060016127f0565b81615a13575060006127f0565b8160018114615a295760028114615a3357615a4f565b60019150506127f0565b60ff841115615a4457615a446157cb565b50506001821b6127f0565b5060208310610133831016604e8410600b8410161715615a72575081810a6127f0565b615a7c8383615996565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615aae57615aae6157cb565b029392505050565b60006127ed83836159f7565b600082615af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615b3557615b356157cb565b500290565b6020808252825182820181905260009190848201906040850190845b81811015615b7257835183529284019291840191600101615b56565b50909695505050505050565b81518152602080830151908201526040808301519082015260608083015190820152608081016127f0565b60008060408385031215615bbc57600080fd5b505080516020909101519092909150565b60007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808960601b1683526014830188516020808b0160005b83811015615c2257815185529382019390820190600101615c06565b5050505060609790971b168652505060148401929092526034830152605482015260740192915050565b60005b83811015615c67578181015183820152602001615c4f565b838111156108e15750506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015615d28577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088870301845281518051808852615ceb81888a01898501615c4c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01696909601850195509284019290840190600101615ca6565b509398975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008251615d77818460208701615c4c565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212202c9b857d563f37079c55cac8650b11b2ed95e9e47dc81d7ea1fc60ca817bdec064736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x32B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7B0461E9 GT PUSH2 0x1B2 JUMPI DUP1 PUSH4 0xB6258AAA GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xCB73999F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xE3D84D5E GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xE3D84D5E EQ PUSH2 0x6DF JUMPI DUP1 PUSH4 0xEB2D7461 EQ PUSH2 0x6F2 JUMPI DUP1 PUSH4 0xFA4DFA3A EQ PUSH2 0x705 JUMPI DUP1 PUSH4 0xFEDE5C9C EQ PUSH2 0x725 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCB73999F EQ PUSH2 0x6BB JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x6C4 JUMPI DUP1 PUSH4 0xDAA50485 EQ PUSH2 0x6D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC6301E5D GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xC6301E5D EQ PUSH2 0x68C JUMPI DUP1 PUSH4 0xC74EC56A EQ PUSH2 0x69F JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x6A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB6258AAA EQ PUSH2 0x65D JUMPI DUP1 PUSH4 0xC3355B8D EQ PUSH2 0x670 JUMPI DUP1 PUSH4 0xC410CA1B EQ PUSH2 0x679 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 GT PUSH2 0x15B JUMPI DUP1 PUSH4 0xA217FDDF GT PUSH2 0x135 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x60F JUMPI DUP1 PUSH4 0xABAE2C4C EQ PUSH2 0x617 JUMPI DUP1 PUSH4 0xB235D468 EQ PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 EQ PUSH2 0x5D6 JUMPI DUP1 PUSH4 0x928D2B31 EQ PUSH2 0x5E9 JUMPI DUP1 PUSH4 0x978B73B5 EQ PUSH2 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7F877F85 GT PUSH2 0x18C JUMPI DUP1 PUSH4 0x7F877F85 EQ PUSH2 0x56D JUMPI DUP1 PUSH4 0x88D19F1B EQ PUSH2 0x595 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7B0461E9 EQ PUSH2 0x537 JUMPI DUP1 PUSH4 0x7D55094D EQ PUSH2 0x540 JUMPI DUP1 PUSH4 0x7E4831D3 EQ PUSH2 0x548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x40E14B78 GT PUSH2 0x276 JUMPI DUP1 PUSH4 0x564B81EF GT PUSH2 0x21F JUMPI DUP1 PUSH4 0x6D2C5615 GT PUSH2 0x1F9 JUMPI DUP1 PUSH4 0x6D2C5615 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x6D82E314 EQ PUSH2 0x4FD JUMPI DUP1 PUSH4 0x7901330B EQ PUSH2 0x524 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x564B81EF EQ PUSH2 0x490 JUMPI DUP1 PUSH4 0x5DE207CC EQ PUSH2 0x496 JUMPI DUP1 PUSH4 0x6526A12A EQ PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4EBBE762 GT PUSH2 0x250 JUMPI DUP1 PUSH4 0x4EBBE762 EQ PUSH2 0x462 JUMPI DUP1 PUSH4 0x50C9ECD9 EQ PUSH2 0x475 JUMPI DUP1 PUSH4 0x54F9769D EQ PUSH2 0x47D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x40E14B78 EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0x42D15AEC EQ PUSH2 0x451 JUMPI DUP1 PUSH4 0x4C634934 EQ PUSH2 0x459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D GT PUSH2 0x2D8 JUMPI DUP1 PUSH4 0x3648B7DC GT PUSH2 0x2B2 JUMPI DUP1 PUSH4 0x3648B7DC EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x40B JUMPI DUP1 PUSH4 0x3B92DA47 EQ PUSH2 0x41E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x3B5 JUMPI DUP1 PUSH4 0x32AD1EE4 EQ PUSH2 0x3C8 JUMPI DUP1 PUSH4 0x34DDB95D EQ PUSH2 0x3DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x15128425 GT PUSH2 0x309 JUMPI DUP1 PUSH4 0x15128425 EQ PUSH2 0x376 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x37F JUMPI DUP1 PUSH4 0x254CD2BD EQ PUSH2 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8A7493D EQ PUSH2 0x330 JUMPI DUP1 PUSH4 0x101197C7 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0x12ACE5A2 EQ PUSH2 0x36C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x350 PUSH2 0x33E CALLDATASIZE PUSH1 0x4 PUSH2 0x5193 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x350 PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x72E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x350 PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x38D CALLDATASIZE PUSH1 0x4 PUSH2 0x51AE JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x3B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x3C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0xFDE JUMP JUMPDEST PUSH2 0x350 PUSH2 0x3D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x1094 JUMP JUMPDEST PUSH2 0x350 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x419 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x176A JUMP JUMPDEST PUSH2 0x350 PUSH2 0x42C CALLDATASIZE PUSH1 0x4 PUSH2 0x5193 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x44C CALLDATASIZE PUSH1 0x4 PUSH2 0x53D6 JUMP JUMPDEST PUSH2 0x1819 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x1A37 JUMP JUMPDEST PUSH2 0x350 PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x470 CALLDATASIZE PUSH1 0x4 PUSH2 0x5413 JUMP JUMPDEST PUSH2 0x1AFE JUMP JUMPDEST PUSH2 0x374 PUSH2 0x1C3D JUMP JUMPDEST PUSH2 0x350 PUSH2 0x48B CALLDATASIZE PUSH1 0x4 PUSH2 0x545F JUMP JUMPDEST PUSH2 0x1CFB JUMP JUMPDEST CHAINID PUSH2 0x350 JUMP JUMPDEST PUSH2 0x350 PUSH32 0xE08E6E8E2E796F02419355C6FA268D1461FE6F2F34114A881A2DB47C0F240509 DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x35A JUMP JUMPDEST PUSH2 0x350 PUSH32 0xD4A2989857A24DE9C91E1DAFFE87D051D59F52B68729413D1EF656EC487E530 DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x532 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x2586 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x271A JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH24 0x10000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH1 0x12 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x5B1 PUSH2 0x5AC CALLDATASIZE PUSH1 0x4 PUSH2 0x54D3 JUMP JUMPDEST PUSH2 0x27D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x35A JUMP JUMPDEST PUSH2 0x4ED PUSH2 0x5E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x5F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x55F7 JUMP JUMPDEST PUSH2 0x280E JUMP JUMPDEST PUSH2 0x374 PUSH2 0x60A CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x2F1A JUMP JUMPDEST PUSH2 0x350 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x625 CALLDATASIZE PUSH1 0x4 PUSH2 0x5193 JUMP JUMPDEST PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x66B CALLDATASIZE PUSH1 0x4 PUSH2 0x51AE JUMP JUMPDEST PUSH2 0x34BD JUMP JUMPDEST PUSH2 0x350 PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x687 CALLDATASIZE PUSH1 0x4 PUSH2 0x56B0 JUMP JUMPDEST PUSH2 0x35AC JUMP JUMPDEST PUSH2 0x350 PUSH2 0x69A CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x3A91 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x6B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x51AE JUMP JUMPDEST PUSH2 0x4079 JUMP JUMPDEST PUSH2 0x350 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x6D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x4090 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x4138 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x6ED CALLDATASIZE PUSH1 0x4 PUSH2 0x5737 JUMP JUMPDEST PUSH2 0x41F4 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x700 CALLDATASIZE PUSH1 0x4 PUSH2 0x5773 JUMP JUMPDEST PUSH2 0x431D JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH2 0x5B1 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x11 SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD NUMBER SWAP2 PUSH2 0x74C SWAP2 PUSH2 0x57FA JUMP JUMPDEST GT ISZERO PUSH2 0x805 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A636F6C6C656374526564656D7074696F6E3A204D757374207761 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x697420666F7220726564656D7074696F6E5F64656C617920626C6F636B732062 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x65666F726520636F6C6C656374696E6720726564656D7074696F6E0000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 DUP2 SWAP1 DUP2 SWAP1 ISZERO PUSH2 0x84D JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SSTORE PUSH1 0xC SLOAD SWAP1 SWAP3 POP PUSH2 0x845 SWAP1 DUP4 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH1 0xC SSTORE PUSH1 0x1 SWAP4 POP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x88D JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SSTORE PUSH1 0xB SLOAD PUSH2 0x885 SWAP1 DUP3 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH1 0xB SSTORE PUSH1 0x1 SWAP3 POP JUMPDEST DUP4 ISZERO PUSH2 0x8B7 JUMPI PUSH1 0x4 SLOAD PUSH2 0x8B7 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP5 PUSH2 0x4B02 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x8E1 JUMPI PUSH1 0x1 SLOAD PUSH2 0x8E1 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP4 PUSH2 0x4B02 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x96D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH3 0xF4240 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA03 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST EQ PUSH2 0xA6A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D757374206265203D3D2031000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0xAFA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0xBED SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC2E SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0xCBA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D3174314445493A20696E76616C6964207369676E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6174757265730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCE7 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0xCF1 SWAP1 DUP9 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x68D54AA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x68D54AA SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD6D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD91 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 PUSH1 0x6 SLOAD PUSH3 0xF4240 PUSH2 0xDA8 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0xDB2 SWAP1 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0xDBC SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE32 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE56 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0xE60 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0xEC9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F75676820636F6C6C61746572616C20696E20706F6F6C000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xEE4 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xB SLOAD PUSH2 0xF02 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xB SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0xF29 SWAP1 DUP11 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0xF33 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xF44 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP11 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFD0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xFFA SWAP1 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1086 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F206772616E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x1090 DUP3 DUP3 PUSH2 0x4C72 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x111C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH3 0xF4240 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x118E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11B2 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST LT ISZERO PUSH2 0x121A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D757374206265203E3D2031000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP10 SWAP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x128F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12B3 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x12BD SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x12C7 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST GT ISZERO PUSH2 0x132F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5B506F6F6C277320436C6F7365645D3A204365696C696E672072656163686564 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x13BF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E743174314445493A207369676E61747572652069732065 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7870697265640000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x14B2 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14CF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14F3 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x157E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E743174314445493A20696E76616C6964207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7572657300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15AB PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x15B5 SWAP1 DUP10 PUSH2 0x5AFD JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x882AB63A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP11 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x882AB63A SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x162C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1650 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP3 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x1667 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x1671 SWAP1 DUP6 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x167B SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP4 POP PUSH2 0x16A3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER ADDRESS DUP12 PUSH2 0x4CD8 JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP5 PUSH2 0x16B5 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x16BF SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x16D0 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1747 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x175B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ PUSH2 0x180F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x1090 DUP3 DUP3 PUSH2 0x4E76 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1889 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18AD SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x191E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1942 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2480FCEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x2480FCEA SWAP1 PUSH2 0x199E SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B3A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19DF SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP3 GT ISZERO PUSH2 0x19F3 JUMPI PUSH3 0xF4240 SWAP2 POP JUMPDEST PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x1A03 DUP5 DUP7 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x1A0D SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1A2B JUMPI PUSH2 0x1A21 DUP2 DUP4 PUSH2 0x5812 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1A61 PUSH32 0x8118EEB5231A5FE4008A55B62860F6A0DB4F6C3AC04F8141927A9B3FEDD86D2F CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1A6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x2FDA313D9B5BB0B73BD003153F2FCCBC0DCA49791FDD1184DFAD82B44F54BD2E SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x1B28 PUSH32 0xE08E6E8E2E796F02419355C6FA268D1461FE6F2F34114A881A2DB47C0F240509 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1BB4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A2043616C6C6572206973206E6F7420504152414D455445525F5345 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x545445525F524F4C450000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0xE DUP8 SWAP1 SSTORE PUSH1 0x10 DUP7 SWAP1 SSTORE PUSH1 0x11 DUP6 SWAP1 SSTORE PUSH1 0x5 DUP5 SWAP1 SSTORE PUSH1 0x6 DUP4 SWAP1 SSTORE PUSH1 0x7 DUP3 SWAP1 SSTORE PUSH1 0x8 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x17FE98B66D27BD793EA01BD8A23A54ACAB8EEB167D9EB016A0C7CD71C573920C SWAP1 PUSH1 0xE0 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1C67 PUSH32 0x103DA79FF3755FF7A17A557D28B73D37CB4DE0B3C3CC02FA6C48DF0F35071FBF CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1C70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH24 0x10000000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x4F40FD1C59F78D7A2220DA638CD9400DABA01E57C7965702F390BF13133CC31F SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1D83 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DF3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E17 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP2 LT DUP1 ISZERO PUSH2 0x1E2B JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x1EB7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206E6565647320746F20626520626574 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7765656E202E30303030303120616E64202E3939393939390000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP13 SWAP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F50 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x1F5A SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x1F64 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST GT ISZERO PUSH2 0x2019 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x44 PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0x506F6F6C206365696C696E6720726561636865642C206E6F206D6F7265204445 SWAP1 DUP3 ADD MSTORE PUSH32 0x492063616E206265206D696E7465642077697468207468697320636F6C6C6174 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x6572616C00000000000000000000000000000000000000000000000000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP6 LT ISZERO PUSH2 0x20A9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E744672616374696F6E616C4445493A207369676E617475 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x726520697320657870697265642E000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x34 DUP4 ADD DUP14 SWAP1 MSTORE SWAP4 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x54 DUP5 ADD MSTORE PUSH1 0x68 DUP4 ADD DUP10 SWAP1 MSTORE PUSH1 0x88 DUP4 ADD DUP9 SWAP1 MSTORE CHAINID PUSH1 0xA8 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC8 DUP5 ADD SWAP2 DUP3 SWAP1 MSTORE DUP1 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 MSTORE SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x2182 SWAP1 DUP5 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0xCC ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x219F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x21C3 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x224F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E744672616374696F6E616C4445493A20696E76616C6964 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207369676E617475726573000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x227A PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22A7 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x22B1 SWAP1 DUP14 PUSH2 0x5AFD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE DUP12 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP14 SWAP1 MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x13 SLOAD SWAP1 MLOAD PUSH32 0x537A30A700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x537A30A7 SWAP1 PUSH2 0x232D SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2349 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x236D SWAP2 SWAP1 PUSH2 0x5BA9 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP1 POP DUP11 DUP2 GT ISZERO PUSH2 0x23DC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F756768204445555320696E7075747465640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x23F1 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x23FB SWAP1 DUP8 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x2405 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE SWAP2 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x247D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2491 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH2 0x24BB SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP CALLER ADDRESS DUP16 PUSH2 0x4CD8 JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP7 PUSH2 0x24CD SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x24D7 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x24E8 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x255F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2573 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x25B0 PUSH32 0xD4A2989857A24DE9C91E1DAFFE87D051D59F52B68729413D1EF656EC487E530 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x25B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x12 SLOAD DUP3 GT ISZERO PUSH2 0x2625 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x616D6F756E743C3D64616F536861726500000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x26C3 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x3A708F2F1C75B12457D207CF1E259AB9F87BBFCCB29672903ACF4661BD342E49 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x2744 PUSH32 0xC65532185ED70B2E999433E2E9FAC124E083ACB13EC183A4E05944DA0792337B CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x274D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH21 0x10000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x6BDFE227D5DB299C59AA56D5F846F40DBD73B271AAA78E18ED74FC3E00B8AA6B SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27ED SWAP1 DUP4 PUSH2 0x4EDC JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27ED SWAP1 DUP4 PUSH2 0x4EF2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x28BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A205265636F6C6C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x61746572616C697A652069732070617573656400000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP2 PUSH1 0x80 ADD MLOAD LT ISZERO PUSH2 0x294F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP3 DUP2 ADD MLOAD PUSH1 0x4 SLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x80 DUP7 ADD MLOAD SWAP4 MLOAD PUSH1 0x0 SWAP6 PUSH2 0x2998 SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP6 SWAP5 SWAP2 SWAP1 SWAP2 AND SWAP3 SWAP2 CHAINID SWAP1 PUSH1 0x20 ADD PUSH2 0x5BCD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH1 0xA0 DUP6 ADD MLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE SWAP2 SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x6793F0AC SWAP2 PUSH2 0x2A29 SWAP2 DUP6 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x5C78 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A46 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A6A SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x2AF6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A20696E76616C69 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x64207369676E6174757265730000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B23 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST DUP4 MLOAD PUSH2 0x2B2F SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BC4 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C35 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C59 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 DUP9 ADD MLOAD SWAP1 MLOAD PUSH32 0x2480FCEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x2480FCEA SWAP2 PUSH2 0x2CB8 SWAP2 PUSH1 0x4 ADD PUSH2 0x5B3A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2CD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2CF9 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 DUP9 ADD MLOAD DUP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0xFC011061 SWAP2 DUP10 SWAP2 SWAP1 PUSH2 0x2D37 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x2D47 JUMPI PUSH2 0x2D47 PUSH2 0x5D36 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x84 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DBF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2DE3 SWAP2 SWAP1 PUSH2 0x5BA9 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x2E15 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x2E1F SWAP1 DUP5 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP10 PUSH1 0x60 ADD MLOAD PUSH1 0x8 SLOAD PUSH1 0x10 SLOAD PUSH3 0xF4240 PUSH2 0x2E3C SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH2 0x2E46 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x2E50 SWAP1 DUP6 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x2E5A SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH2 0x2E82 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER ADDRESS DUP6 PUSH2 0x4CD8 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2EF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x2FA0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x300D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3031 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST ISZERO PUSH2 0x30BE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x36 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D416C676F726974686D69634445493A20436F6C6C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x61746572616C20726174696F206D757374206265203000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0x314E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A72656465656D416C676F726974686D69634445493A207369676E61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7475726520697320657870697265642E00000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x3241 SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x325E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3282 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x330E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D416C676F726974686D69634445493A20696E7661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964207369676E617475726573000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x6 SLOAD DUP7 SWAP1 PUSH3 0xF4240 SWAP1 PUSH2 0x3322 SWAP1 DUP3 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x332C SWAP1 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3336 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH2 0x3348 PUSH3 0xF4240 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3352 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x3370 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xC SLOAD PUSH2 0x338E SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xC SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0x33B5 SWAP1 DUP11 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x33BF SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x33D0 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP11 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3447 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x345B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH2 0xFA2 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xF4240 DUP3 PUSH2 0x34EF PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3560 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3584 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x358E SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x3598 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x35A2 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x27F0 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH24 0x10000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3659 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6275794261636B444555533A204275796261636B206973207061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7573656400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0x36E9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A6275794261636B444555533A207369676E61747572652069732065 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7870697265642E00000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 DUP9 SWAP2 AND DUP8 DUP8 CHAINID PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3726 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5BCD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x37B5 SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x37D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37F6 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x3882 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6275794261636B444555533A20696E76616C6964207369676E61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7475726573000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x3898 DUP10 PUSH2 0x1819 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 DUP11 MLOAD PUSH2 0x38B2 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x38C2 JUMPI PUSH2 0x38C2 PUSH2 0x5D36 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH1 0x7 SLOAD PUSH3 0xF4240 PUSH2 0x38EC SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x3C04AF9F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x3C04AF9F SWAP1 PUSH2 0x3942 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B7E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x395F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3983 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x398D SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3997 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x39C6 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x39D0 SWAP1 DUP4 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP14 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH2 0x3A85 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP CALLER DUP4 PUSH2 0x4B02 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3B19 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3BAA SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST ISZERO PUSH2 0x3C11 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D7573742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x3CA1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x3D94 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3DB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3DD5 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x3E61 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A20696E76616C69 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x64207369676E6174757265730000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x14DA4EE100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x14DA4EE1 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3ED7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3EFB SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP2 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x3F12 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x3F1C SWAP1 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3F26 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP2 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP4 PUSH2 0x3F3A SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3F44 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3F55 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3FCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3FE1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4057 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x406B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27F0 SWAP1 PUSH2 0x4F31 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x40AC SWAP1 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x180F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F207265766F6B6500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x4162 PUSH32 0xA84A5389AD41F9AAB0831B01E5384CAE76E7A7FD09131C206FF7927C201C3857 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x416B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH22 0x1000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x5860C5063A65E23CEA4E2E2925F1A841BB6D1BC9615BD425F8DD084980B05141 SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x421E PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x4284 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A796F7520617265206E6F74207472757374790000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE DUP5 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x42F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8E1 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x43A3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4413 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4437 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP2 LT DUP1 ISZERO PUSH2 0x444B JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x44FD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x53 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D4672616374696F6E616C4445493A20436F6C6C61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x746572616C20726174696F206E6565647320746F206265206265747765656E20 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x2E30303030303120616E64202E39393939393900000000000000000000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x458D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A72656465656D4672616374696F6E616C4445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7572652069732065787069726564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x34 DUP4 ADD DUP13 SWAP1 MSTORE SWAP4 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x54 DUP5 ADD MSTORE PUSH1 0x68 DUP4 ADD DUP9 SWAP1 MSTORE PUSH1 0x88 DUP4 ADD DUP8 SWAP1 MSTORE CHAINID PUSH1 0xA8 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC8 DUP5 ADD SWAP2 DUP3 SWAP1 MSTORE DUP1 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 MSTORE SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x4666 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0xCC ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4683 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x46A7 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x4733 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D4672616374696F6E616C4445493A20696E76616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6964207369676E61747572657300000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP10 SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH1 0x6 SLOAD PUSH3 0xF4240 PUSH2 0x4752 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x475C SWAP1 DUP15 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x4766 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x4778 DUP9 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x4782 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH2 0x478C SWAP1 DUP4 PUSH2 0x5812 JUMP JUMPDEST SWAP1 POP DUP11 PUSH2 0x479C PUSH3 0xF4240 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x47A6 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP5 POP PUSH1 0x0 PUSH2 0x47D5 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x47DF SWAP1 DUP5 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x47F1 DUP11 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x47FB SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x480B PUSH3 0xF4240 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x4815 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP3 SWAP9 POP SWAP1 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP5 POP PUSH4 0x70A08231 SWAP4 POP PUSH1 0x24 ADD SWAP2 POP PUSH2 0x4878 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4895 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x48B9 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x48C3 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x492C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F75676820636F6C6C61746572616C20696E20706F6F6C000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x4947 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xB SLOAD PUSH2 0x4965 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xB SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x4983 SWAP1 DUP4 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xC SLOAD PUSH2 0x49A1 SWAP1 DUP4 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xC SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0x49C8 SWAP1 DUP13 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x49D2 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x49E3 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP13 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4A5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4A6E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH2 0x2EDC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27ED DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x4F3B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 DUP8 AND SWAP2 PUSH2 0x4B99 SWAP2 SWAP1 PUSH2 0x5D65 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4BD6 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 0x4BDB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4C05 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4C05 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4C05 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x4C6B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F4641494C454400 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x4C8A SWAP1 DUP3 PUSH2 0x4AD0 JUMP JUMPDEST ISZERO PUSH2 0x1090 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 DUP9 AND SWAP2 PUSH2 0x4D77 SWAP2 SWAP1 PUSH2 0x5D65 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4DB4 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 0x4DB9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4DE3 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4DE3 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4DE3 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x4E6E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F46524F4D5F4641 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x494C454400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x4E8E SWAP1 DUP3 PUSH2 0x4F8A JUMP JUMPDEST ISZERO PUSH2 0x1090 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EE8 DUP4 DUP4 PUSH2 0x4FBC JUMP JUMPDEST PUSH1 0x60 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD ISZERO ISZERO PUSH2 0x27ED JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27F0 DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x4F82 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 0x27F0 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x27F0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27ED DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x5077 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x504F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E756D657261626C655365743A20696E646578206F7574206F6620626F756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6473000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x5064 JUMPI PUSH2 0x5064 PUSH2 0x5D36 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x5160 JUMPI PUSH1 0x0 PUSH2 0x509B PUSH1 0x1 DUP4 PUSH2 0x5812 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x50AF SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x5812 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x50C8 JUMPI PUSH2 0x50C8 PUSH2 0x5D36 JUMP 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 0x50EB JUMPI PUSH2 0x50EB PUSH2 0x5D36 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH2 0x5102 DUP4 PUSH1 0x1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x5124 JUMPI PUSH2 0x5124 PUSH2 0x5D81 JUMP 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 0x27F0 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x27F0 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x518E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x51A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27ED DUP3 PUSH2 0x516A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x51C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x51D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x51F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x520C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x522B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5257 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5263 DUP9 DUP3 DUP10 ADD PUSH2 0x51C7 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x5297 PUSH1 0x20 DUP5 ADD PUSH2 0x516A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x52F2 JUMPI PUSH2 0x52F2 PUSH2 0x52A0 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x533F JUMPI PUSH2 0x533F PUSH2 0x52A0 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5361 JUMPI PUSH2 0x5361 PUSH2 0x52A0 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x537C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x5391 PUSH2 0x538C DUP4 PUSH2 0x5347 JUMP JUMPDEST PUSH2 0x52F8 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP7 DUP5 GT ISZERO PUSH2 0x53B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x53CB JUMPI DUP1 CALLDATALOAD DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x53B4 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x53FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x540B DUP5 DUP3 DUP6 ADD PUSH2 0x536B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x542E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP6 CALLDATALOAD SWAP8 PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP8 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP7 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP7 POP PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP6 POP PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 ADD CALLDATALOAD SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x547A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x54B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x54C0 DUP11 DUP3 DUP12 ADD PUSH2 0x51C7 JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x54E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 DUP2 DUP5 ADD SLT PUSH2 0x5507 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x20 PUSH2 0x5517 PUSH2 0x538C DUP4 PUSH2 0x5347 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP6 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP8 DUP5 GT ISZERO PUSH2 0x5536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP8 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x55EB JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x555B JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP11 ADD SWAP2 POP DUP11 PUSH1 0x3F DUP4 ADD SLT PUSH2 0x5570 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP6 DUP3 ADD CALLDATALOAD PUSH1 0x40 DUP3 DUP3 GT ISZERO PUSH2 0x5586 JUMPI PUSH2 0x5586 PUSH2 0x52A0 JUMP JUMPDEST PUSH2 0x55B5 DUP9 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP13 DUP6 ADD AND ADD PUSH2 0x52F8 JUMP JUMPDEST SWAP3 POP DUP2 DUP4 MSTORE DUP13 DUP2 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x55CC JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP2 DUP6 ADD DUP10 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 SWAP1 DUP3 ADD DUP8 ADD MSTORE DUP5 MSTORE POP SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x553A JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x5621 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0xC0 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x5635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x563D PUSH2 0x52CF JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x565D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5669 DUP8 DUP3 DUP7 ADD PUSH2 0x536B JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x5695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x56A1 DUP8 DUP3 DUP7 ADD PUSH2 0x54F5 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x56C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x56E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x56F4 DUP11 DUP4 DUP12 ADD PUSH2 0x536B JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x5718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5725 DUP10 DUP3 DUP11 ADD PUSH2 0x51C7 JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x574C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5755 DUP5 PUSH2 0x516A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0x576A PUSH1 0x40 DUP6 ADD PUSH2 0x516A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x578C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x57BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5725 DUP10 DUP3 DUP11 ADD PUSH2 0x51C7 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x580D JUMPI PUSH2 0x580D PUSH2 0x57CB JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x5824 JUMPI PUSH2 0x5824 PUSH2 0x57CB JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x583B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD DUP6 DUP4 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP6 ADD MSTORE DUP2 DUP6 DUP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP1 POP PUSH1 0x60 DUP7 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP7 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x595F JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP8 DUP7 SUB ADD DUP4 MSTORE DUP2 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP11 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x5916 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 ADD DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x592F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP12 SGT ISZERO PUSH2 0x593E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x594B DUP8 DUP3 DUP9 DUP6 ADD PUSH2 0x5842 JUMP JUMPDEST SWAP7 POP POP POP SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x58B5 JUMP JUMPDEST POP SWAP3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x597F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x598F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH2 0x59EF JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x59D5 JUMPI PUSH2 0x59D5 PUSH2 0x57CB JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH2 0x59E2 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH2 0x599B JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5A06 JUMPI POP PUSH1 0x1 PUSH2 0x27F0 JUMP JUMPDEST DUP2 PUSH2 0x5A13 JUMPI POP PUSH1 0x0 PUSH2 0x27F0 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x5A29 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x5A33 JUMPI PUSH2 0x5A4F JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x27F0 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x5A44 JUMPI PUSH2 0x5A44 PUSH2 0x57CB JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x27F0 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x5A72 JUMPI POP DUP2 DUP2 EXP PUSH2 0x27F0 JUMP JUMPDEST PUSH2 0x5A7C DUP4 DUP4 PUSH2 0x5996 JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x5AAE JUMPI PUSH2 0x5AAE PUSH2 0x57CB JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27ED DUP4 DUP4 PUSH2 0x59F7 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5AF8 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x5B35 JUMPI PUSH2 0x5B35 PUSH2 0x57CB JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5B72 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x5B56 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD PUSH2 0x27F0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5BBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 DUP1 DUP10 PUSH1 0x60 SHL AND DUP4 MSTORE PUSH1 0x14 DUP4 ADD DUP9 MLOAD PUSH1 0x20 DUP1 DUP12 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C22 JUMPI DUP2 MLOAD DUP6 MSTORE SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5C06 JUMP JUMPDEST POP POP POP POP PUSH1 0x60 SWAP8 SWAP1 SWAP8 SHL AND DUP7 MSTORE POP POP PUSH1 0x14 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x34 DUP4 ADD MSTORE PUSH1 0x54 DUP3 ADD MSTORE PUSH1 0x74 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C67 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5C4F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x8E1 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD DUP5 DUP4 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP6 ADD MSTORE DUP2 DUP6 MLOAD DUP1 DUP5 MSTORE PUSH1 0x60 DUP7 ADD SWAP2 POP PUSH1 0x60 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP4 POP DUP3 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5D28 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP9 DUP8 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP9 MSTORE PUSH2 0x5CEB DUP2 DUP9 DUP11 ADD DUP10 DUP6 ADD PUSH2 0x5C4C JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP7 SWAP1 SWAP7 ADD DUP6 ADD SWAP6 POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5CA6 JUMP JUMPDEST POP SWAP4 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x5D77 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x5C4C JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2C SWAP12 DUP6 PUSH30 0x563F37079C55CAC8650B11B2ED95E9E47DC81D7EA1FC60CA817BDEC06473 PUSH16 0x6C634300080A00330000000000000000 ", + "sourceMap": "132:657:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2285:59:7;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;552:25:39;;;540:2;525:18;2285:59:7;;;;;;;;2169:26;;;;;;17611:1096;;;:::i;:::-;;3182:35;;;;;;4347:112:20;;;;;;:::i;:::-;4404:7;4430:12;;;;;;;;;;:22;;;;4347:112;11946:1460:7;;;;;;:::i;:::-;;:::i;4709:223:20:-;;;;;;:::i;:::-;;:::i;7290:1381:7:-;;;;;;:::i;:::-;;:::i;3647:62::-;;3685:24;3647:62;;2388:32;;;;;;5883:205:20;;;;;;:::i;:::-;;:::i;2229:53:7:-;;;;;;:::i;:::-;;;;;;;;;;;;;;6104:921;;;;;;:::i;:::-;;:::i;23515:207::-;;;:::i;3076:32::-;;;;;;23953:734;;;;;;:::i;:::-;;:::i;23725:159::-;;;:::i;9861:2036::-;;;;;;:::i;:::-;;:::i;7028:119::-;7118:9;7028:119;;3793:82;;3841:34;3793:82;;2844:31;;;;;;3981:41;;;;;;;;;;;;;;;5817:14:39;;5810:22;5792:41;;5780:2;5765:18;3981:41:7;5652:187:39;3712:78:7;;3758:32;3712:78;;22770:293;;;;;;:::i;:::-;;:::i;2347:38::-;;;;;;23203:147;;;:::i;3913:30::-;;;;;;;;;;;;4025:33;;;;;;;;;;;;3266:27;;;;;;4030:136:20;;;;;;:::i;:::-;;:::i;:::-;;;6532:42:39;6520:55;;;6502:74;;6490:2;6475:18;4030:136:20;6356:226:39;3015:137:20;;;;;;:::i;:::-;;:::i;19197:1871:7:-;;;;;;:::i;:::-;;:::i;15976:1311::-;;;;;;:::i;:::-;;:::i;1722:49:20:-;;1767:4;1722:49;;2423:47:7;;;;;;:::i;:::-;;;;;;;;;;;;;;3946:32;;;;;;;;;;;;5733:235;;;;;;:::i;:::-;;:::i;2108:26::-;;;;;;21264:1452;;;;;;:::i;:::-;;:::i;8699:1062::-;;;;;;:::i;:::-;;:::i;2934:30::-;;;;;;3320:125:20;;;;;;:::i;:::-;;:::i;2137:29:7:-;;;;;;5166:226:20;;;;;;:::i;:::-;;:::i;23353:159:7:-;;;:::i;23066:134::-;;;;;;:::i;:::-;;:::i;13536:2391::-;;;;;;:::i;:::-;;:::i;167:26:9:-;;;;;;;;;2198:27:7;;;;;;17611:1096;17693:16;;17679:10;17666:24;;;;:12;:24;;;;;;17714:12;;17666:43;;;:::i;:::-;17665:61;;17653:175;;;;;;;11933:2:39;17653:175:7;;;11915:21:39;11972:2;11952:18;;;11945:30;12011:34;11991:18;;;11984:62;12082:34;12062:18;;;12055:62;12154:29;12133:19;;;12126:58;12201:19;;17653:175:7;;;;;;;;;18015:10;17832:13;17996:30;;;:18;:30;;;;;;17832:13;;;;;;17996:34;17992:208;;18069:10;18050:30;;;;:18;:30;;;;;;;18085:34;;;18144:17;;18050:30;;-1:-1:-1;18144:30:7;;18050;;18144;:::i;:::-;18124:17;:50;18191:4;;-1:-1:-1;17992:208:7;18233:10;18247:1;18208:36;;;:24;:36;;;;;;:40;18204:255;;-1:-1:-1;18299:10:7;18274:36;;;;:24;:36;;;;;;;18315:40;;;18386:23;;:42;;18274:36;;18386:42;:::i;:::-;18360:23;:68;18450:4;;-1:-1:-1;18204:255:7;18467:8;18463:107;;;18518:21;;18482:83;;18518:21;;18542:10;18554;18482:27;:83::i;:::-;18577:14;18573:131;;;18639:16;;18598:101;;18639:16;;18662:10;18678:16;18598:27;:101::i;:::-;17649:1058;;;;17611:1096::o;11946:1460::-;4258:12;;;;;;;:21;4250:59;;;;;;;12563:2:39;4250:59:7;;;12545:21:39;12602:2;12582:18;;;12575:30;12641:27;12621:18;;;12614:55;12686:18;;4250:59:7;12361:349:39;4250:59:7;12119:20:::1;::::0;12104:62:::1;::::0;;;;;;;2668:3:::1;::::0;12119:20:::1;;::::0;12104:60:::1;::::0;:62:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;12119:20;12104:62:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:86;12092:138;;;::::0;::::1;::::0;;13106:2:39;12092:138:7::1;::::0;::::1;13088:21:39::0;13145:2;13125:18;;;13118:30;13184:31;13164:18;;;13157:59;13233:18;;12092:138:7::1;12904:353:39::0;12092:138:7::1;12258:12;12243:11;:27;;12235:87;;;::::0;::::1;::::0;;13464:2:39;12235:87:7::1;::::0;::::1;13446:21:39::0;13503:2;13483:18;;;13476:30;13542:34;13522:18;;;13515:62;13613:17;13593:18;;;13586:45;13648:19;;12235:87:7::1;13262:411:39::0;12235:87:7::1;12371:18;::::0;12326:15:::1;::::0;12371:18:::1;;12391:16:::0;12409:11;7118:9;12354:81:::1;::::0;13911:2:39;13907:15;;;;13924:66;13903:88;12354:81:7::1;::::0;::::1;13891:101:39::0;14008:12;;;14001:28;;;;14045:12;;;14038:28;14082:12;;;14075:28;14119:13;;12354:81:7::1;::::0;;;;;::::1;::::0;;;;;;;12344:92;;12354:81:::1;12344:92:::0;;::::1;::::0;12463:20:::1;::::0;12448:64;;;12344:92;;-1:-1:-1;12463:20:7::1;;::::0;12448:49:::1;::::0;:64:::1;::::0;12344:92;;12507:4;;;;12448:64:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12440:115;;;::::0;::::1;::::0;;16341:2:39;12440:115:7::1;::::0;::::1;16323:21:39::0;16380:2;16360:18;;;16353:30;16419:34;16399:18;;;16392:62;16490:8;16470:18;;;16463:36;16516:19;;12440:115:7::1;16139:402:39::0;12440:115:7::1;12607:28;12652:20;12656:16;12652:2;:20;:::i;:::-;12638:35;::::0;:10;:35:::1;:::i;:::-;12705:11;::::0;:78:::1;::::0;;;;::::1;::::0;::::1;18493:25:39::0;;;18534:18;;;18527:34;;;12607:66:7;;-1:-1:-1;12677:25:7::1;::::0;12705:11:::1;::::0;;::::1;::::0;:28:::1;::::0;18466:18:39;;12705:78:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12677:106;;12865:3;12845:14;;12838:3;12830:29;;;;:::i;:::-;12809:51;::::0;:17;:51:::1;:::i;:::-;12808:61;;;;:::i;:::-;12950:23;::::0;12906:16:::1;::::0;:41:::1;::::0;;;;12941:4:::1;12906:41;::::0;::::1;6502:74:39::0;12788:81:7;;-1:-1:-1;12950:23:7;;12906:16:::1;::::0;;::::1;::::0;:26:::1;::::0;6475:18:39;;12906:41:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;;;:::i;:::-;12885:17;:88;;12873:140;;;::::0;::::1;::::0;;19007:2:39;12873:140:7::1;::::0;::::1;18989:21:39::0;19046:2;19026:18;;;19019:30;19085:31;19065:18;;;19058:59;19134:18;;12873:140:7::1;18805:353:39::0;12873:140:7::1;13082:10;13057:36;::::0;;;:24:::1;:36;::::0;;;;;:56:::1;::::0;13096:17;;13057:56:::1;:::i;:::-;13043:10;13018:36;::::0;;;:24:::1;:36;::::0;;;;:95;13143:23:::1;::::0;:43:::1;::::0;13169:17;;13143:43:::1;:::i;:::-;13117:23;:69:::0;13203:10:::1;13190:24;::::0;;;:12:::1;:24;::::0;;;;13217:12:::1;13190:39:::0;;13259:14:::1;::::0;13276:3:::1;::::0;13246:27:::1;::::0;:10;:27:::1;:::i;:::-;:33;;;;:::i;:::-;13234:8;;:45;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;13342:20:7::1;::::0;13327:75:::1;::::0;;;;13379:10:::1;13327:75;::::0;::::1;19337:74:39::0;19427:18;;;19420:34;;;13342:20:7::1;::::0;;::::1;::::0;13327:51:::1;::::0;19310:18:39;;13327:75:7::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12088:1318;;;11946:1460:::0;;;;;:::o;4709:223:20:-;4800:6;:12;;;;;;;;;;:22;;;4792:45;;686:10:4;3015:137:20;:::i;4792:45::-;4784:105;;;;;;;19667:2:39;4784:105:20;;;19649:21:39;19706:2;19686:18;;;19679:30;19745:34;19725:18;;;19718:62;19816:17;19796:18;;;19789:45;19851:19;;4784:105:20;19465:411:39;4784:105:20;4900:25;4911:4;4917:7;4900:10;:25::i;:::-;4709:223;;:::o;7290:1381:7:-;4358:10;;7445:22;;4358:10;;;;;:19;4350:55;;;;;;;20083:2:39;4350:55:7;;;20065:21:39;20122:2;20102:18;;;20095:30;20161:25;20141:18;;;20134:53;20204:18;;4350:55:7;19881:347:39;4350:55:7;7502:20:::1;::::0;7487:62:::1;::::0;;;;;;;2668:3:::1;::::0;7502:20:::1;;::::0;7487:60:::1;::::0;:62:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;7502:20;7487:62:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:86;;7475:138;;;::::0;::::1;::::0;;20435:2:39;7475:138:7::1;::::0;::::1;20417:21:39::0;20474:2;20454:18;;;20447:30;20513:31;20493:18;;;20486:59;20562:18;;7475:138:7::1;20233:353:39::0;7475:138:7::1;7721:12;::::0;7673:23:::1;::::0;7629:16:::1;::::0;:41:::1;::::0;;;;7664:4:::1;7629:41;::::0;::::1;6502:74:39::0;7700:17:7;;7673:23;7629:16:::1;;::::0;:26:::1;::::0;6475:18:39;;7629:41:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;;;:::i;:::-;:88;;;;:::i;:::-;:104;;7617:159;;;::::0;::::1;::::0;;20793:2:39;7617:159:7::1;::::0;::::1;20775:21:39::0;;;20812:18;;;20805:30;20871:34;20851:18;;;20844:62;20923:18;;7617:159:7::1;20591:356:39::0;7617:159:7::1;7804:12;7789:11;:27;;7781:78;;;::::0;::::1;::::0;;21154:2:39;7781:78:7::1;::::0;::::1;21136:21:39::0;21193:2;21173:18;;;21166:30;21232:34;21212:18;;;21205:62;21303:8;21283:18;;;21276:36;21329:19;;7781:78:7::1;20952:402:39::0;7781:78:7::1;7908:18;::::0;7863:15:::1;::::0;7908:18:::1;;7928:16:::0;7946:11;7118:9;7891:81:::1;::::0;13911:2:39;13907:15;;;;13924:66;13903:88;7891:81:7::1;::::0;::::1;13891:101:39::0;14008:12;;;14001:28;;;;14045:12;;;14038:28;14082:12;;;14075:28;14119:13;;7891:81:7::1;::::0;;;;;::::1;::::0;;;;;;;7881:92;;7891:81:::1;7881:92:::0;;::::1;::::0;8000:20:::1;::::0;7985:64;;;7881:92;;-1:-1:-1;8000:20:7::1;;::::0;7985:49:::1;::::0;:64:::1;::::0;7881:92;;8044:4;;;;7985:64:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7977:113;;;::::0;::::1;::::0;;21561:2:39;7977:113:7::1;::::0;::::1;21543:21:39::0;21600:2;21580:18;;;21573:30;21639:34;21619:18;;;21612:62;21710:6;21690:18;;;21683:34;21734:19;;7977:113:7::1;21359:400:39::0;7977:113:7::1;8095:29;8148:20;8152:16;8148:2;:20;:::i;:::-;8127:42;::::0;:17;:42:::1;:::i;:::-;8190:11;::::0;:77:::1;::::0;;;;::::1;::::0;::::1;18493:25:39::0;;;18534:18;;;18527:34;;;8095:74:7;;-1:-1:-1;8190:11:7::1;;::::0;:26:::1;::::0;18466:18:39;;8190:77:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8173:94;;8379:3;8363:11;;8356:3;8348:26;;;;:::i;:::-;8330:45;::::0;:14;:45:::1;:::i;:::-;8329:53;;;;:::i;:::-;8461:16;::::0;8312:70;;-1:-1:-1;8417:120:7::1;::::0;8461:16:::1;;8483:10;8506:4;8516:17:::0;8417:31:::1;:120::i;:::-;8586:3;8572:11;;8554:14;:29;;;;:::i;:::-;:35;;;;:::i;:::-;8542:8;;:47;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;8608:20:7::1;::::0;8593:74:::1;::::0;;;;8640:10:::1;8593:74;::::0;::::1;19337::39::0;19427:18;;;19420:34;;;8608:20:7::1;::::0;;::::1;::::0;8593:46:::1;::::0;19310:18:39;;8593:74:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7470:1201;;7290:1381:::0;;;;;;;:::o;5883:205:20:-;5969:23;;;686:10:4;5969:23:20;5961:83;;;;;;;21966:2:39;5961:83:20;;;21948:21:39;22005:2;21985:18;;;21978:30;22044:34;22024:18;;;22017:62;22115:17;22095:18;;;22088:45;22150:19;;5961:83:20;21764:411:39;5961:83:20;6055:26;6067:4;6073:7;6055:11;:26::i;6104:921:7:-;6193:7;6206:20;6244;;;;;;;;;;;6229:48;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6206:73;;6283:31;6332:20;;;;;;;;;;;6317:60;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6428:20;;6413:76;;;;;6283:96;;-1:-1:-1;6383:27:7;;6428:20;;;;;6413:58;;:76;;6472:16;;6413:76;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6383:106;;2614:3;6498:23;:52;6494:113;;;2614:3;6555:52;;6494:113;6665:40;2614:3;6709:38;6724:23;6709:12;:38;:::i;:::-;6708:71;;;;:::i;:::-;6665:114;;6906:32;6884:19;:54;6880:141;;;6950:54;6972:32;6950:19;:54;:::i;:::-;6943:61;6104:921;-1:-1:-1;;;;;;6104:921:7:o;6880:141::-;-1:-1:-1;7020:1:7;;6104:921;-1:-1:-1;;;;;6104:921:7:o;23515:207::-;23569:43;3609:35;23601:10;23569:7;:43::i;:::-;23561:52;;;;;;23642:21;;;;;;;;;;23641:22;23617:46;;;;;;;;;;;;;;23673:45;;;;;;23696:21;;;;;5817:14:39;5810:22;5792:41;;5780:2;5765:18;;5652:187;23673:45:7;;;;;;;;23515:207::o;23953:734::-;24190:42;3841:34;24221:10;24190:7;:42::i;:::-;24182:96;;;;;;;23019:2:39;24182:96:7;;;23001:21:39;23058:2;23038:18;;;23031:30;23097:34;23077:18;;;23070:62;23168:11;23148:18;;;23141:39;23197:19;;24182:96:7;22817:405:39;24182:96:7;24282:12;:26;;;24312:10;:27;;;24343:16;:39;;;24386:11;:26;;;24416:14;:31;;;24451:11;:29;;;-1:-1:-1;24484:31:7;;;24525:158;;;23542:25:39;;;23598:2;23583:18;;23576:34;;;23626:18;;;23619:34;;;23684:2;23669:18;;23662:34;;;23727:3;23712:19;;23705:35;;;23771:3;23756:19;;23749:35;;;23815:3;23800:19;;23793:35;;;24525:158:7;;23529:3:39;23514:19;24525:158:7;;;;;;;23953:734;;;;;;;:::o;23725:159::-;23771:35;3529:27;23795:10;23771:7;:35::i;:::-;23763:44;;;;;;23828:13;;;;;;;;;;23827:14;23811:30;;;;;;;;;;;;;;23851:29;;;;;;23866:13;;;;;5817:14:39;5810:22;5792:41;;5780:2;5765:18;;5652:187;9861:2036:7;4358:10;;10081:19;;4358:10;;;;;:19;4350:55;;;;;;;20083:2:39;4350:55:7;;;20065:21:39;20122:2;20102:18;;;20095:30;20161:25;20141:18;;;20134:53;20204:18;;4350:55:7;19881:347:39;4350:55:7;10155:20:::1;::::0;10140:62:::1;::::0;;;;;;;10106:31:::1;::::0;10155:20:::1;;::::0;10140:60:::1;::::0;:62:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;10155:20;10140:62:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10106:96;;2668:3;10218:23;:46;:77;;;;;10294:1;10268:23;:27;10218:77;10206:156;;;::::0;::::1;::::0;;24041:2:39;10206:156:7::1;::::0;::::1;24023:21:39::0;24080:2;24060:18;;;24053:30;24119:34;24099:18;;;24092:62;24190:26;24170:18;;;24163:54;24234:19;;10206:156:7::1;23839:420:39::0;10206:156:7::1;10469:12;::::0;10422:23:::1;::::0;10378:16:::1;::::0;:41:::1;::::0;;;;10413:4:::1;10378:41;::::0;::::1;6502:74:39::0;10448:17:7;;10422:23;10378:16:::1;;::::0;:26:::1;::::0;6475:18:39;;10378:41:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;;;:::i;:::-;:87;;;;:::i;:::-;:103;;10366:194;;;::::0;::::1;::::0;;24466:2:39;10366:194:7::1;::::0;::::1;24448:21:39::0;24505:2;24485:18;;;24478:30;;;24544:34;24524:18;;;24517:62;24615:34;24595:18;;;24588:62;24687:6;24666:19;;;24659:35;24711:19;;10366:194:7::1;24264:472:39::0;10366:194:7::1;10588:12;10573:11;:27;;10565:86;;;::::0;::::1;::::0;;24943:2:39;10565:86:7::1;::::0;::::1;24925:21:39::0;24982:2;24962:18;;;24955:30;25021:34;25001:18;;;24994:62;25092:16;25072:18;;;25065:44;25126:19;;10565:86:7::1;24741:410:39::0;10565:86:7::1;10700:18;::::0;10738:21:::1;::::0;10683:124:::1;::::0;;25435:66:39;25530:2;25526:15;;;;;10683:124:7::1;::::0;;::::1;25510:37:39::0;;;;25563:12;;;25556:28;;;25618:15;;;;;;;25600:12;;;25593:46;25655:12;;;25648:28;;;25692:13;;;25685:29;;;7118:9:7;25730:13:39;;;;25723:29;;;;10683:124:7;;;;;;;;;;25768:13:39;;;10683:124:7;;;;10673:135;;;::::1;::::0;;;;10835:20:::1;::::0;10820:64;;;;10673:135;10700:18:::1;10835:20:::0;;::::1;::::0;10820:49:::1;::::0;:64:::1;::::0;10673:135;;10879:4;;;;10820:64;;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10812:120;;;::::0;::::1;::::0;;25994:2:39;10812:120:7::1;::::0;::::1;25976:21:39::0;26033:2;26013:18;;;26006:30;26072:34;26052:18;;;26045:62;26143:13;26123:18;;;26116:41;26174:19;;10812:120:7::1;25792:407:39::0;10812:120:7::1;10937:48;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10937:48:7::1;11049:29;11102:20;11106:16;11102:2;:20;:::i;:::-;11081:42;::::0;:17;:42:::1;:::i;:::-;11143:170;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;11380:11:::1;::::0;:47;;;;;11143:170;;-1:-1:-1;;;;11380:11:7::1;;::::0;:33:::1;::::0;:47:::1;::::0;11143:170;;11380:47:::1;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11351:76:::0;;-1:-1:-1;11351:76:7;-1:-1:-1;11439:26:7;;::::1;;11431:63;;;::::0;::::1;::::0;;27197:2:39;11431:63:7::1;::::0;::::1;27179:21:39::0;27236:2;27216:18;;;27209:30;27275:26;27255:18;;;27248:54;27319:18;;11431:63:7::1;26995:348:39::0;11431:63:7::1;11563:3;11546:11;;11539:3;11531:26;;;;:::i;:::-;11516:42;::::0;:11;:42:::1;:::i;:::-;11515:52;;;;:::i;:::-;11583:21;::::0;;11572:73:::1;::::0;;;;11621:10:::1;11572:73:::0;;::::1;19337:74:39::0;;;;19427:18;;;19420:34;;;11501:66:7;;-1:-1:-1;11583:21:7::1;::::0;;::::1;::::0;11572:48:::1;::::0;19310:18:39;;11572:73:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11693:16:7::1;::::0;11649:120:::1;::::0;-1:-1:-1;11693:16:7::1;;::::0;-1:-1:-1;11715:10:7::1;11738:4;11748:17:::0;11649:31:::1;:120::i;:::-;11815:3;11801:11;;11786;:26;;;;:::i;:::-;:32;;;;:::i;:::-;11774:8;;:44;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;11837:20:7::1;::::0;11822:71:::1;::::0;;;;11869:10:::1;11822:71;::::0;::::1;19337:74:39::0;19427:18;;;19420:34;;;11837:20:7::1;::::0;;::::1;::::0;11822:46:::1;::::0;19310:18:39;;11822:71:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10102:1795;;;;9861:2036:::0;;;;;;;;;:::o;22770:293::-;22844:40;3758:32;22873:10;22844:7;:40::i;:::-;22836:49;;;;;;22907:8;;22897:6;:18;;22889:47;;;;;;;27550:2:39;22889:47:7;;;27532:21:39;27589:2;27569:18;;;27562:30;27628:18;27608;;;27601:46;27664:18;;22889:47:7;27348:340:39;22889:47:7;22955:20;;22940:58;;;;;22955:20;19355:55:39;;;22940:58:7;;;19337:74:39;19427:18;;;19420:34;;;22955:20:7;;;;22940:46;;19310:18:39;;22940:58:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23014:6;23002:8;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;23030:29:7;;;27867:25:39;;;27940:42;27928:55;;27923:2;27908:18;;27901:83;23030:29:7;;27840:18:39;23030:29:7;;;;;;;22770:293;;:::o;23203:147::-;23249:32;3390:24;23270:10;23249:7;:32::i;:::-;23241:41;;;;;;23300:10;;;;;;;;;;23299:11;23286:24;;;;;;;;;;;;;;23320:26;;;;;;23335:10;;;;;5817:14:39;5810:22;5792:41;;5780:2;5765:18;;5652:187;4030:136:20;4103:7;4129:12;;;;;;;;;;:30;;4153:5;4129:23;:30::i;:::-;4122:37;;4030:136;;;;;:::o;3015:137::-;3084:4;3107:12;;;;;;;;;;:38;;3137:7;3107:29;:38::i;19197:1871:7:-;19280:21;;;;;;;:30;19272:94;;;;;;;28197:2:39;19272:94:7;;;28179:21:39;28236:2;28216:18;;;28209:30;28275:34;28255:18;;;28248:62;28346:21;28326:18;;;28319:49;28385:19;;19272:94:7;27995:415:39;19272:94:7;19401:12;19379:6;:18;;;:34;;19371:94;;;;;;;28617:2:39;19371:94:7;;;28599:21:39;28656:2;28636:18;;;28629:30;28695:34;28675:18;;;28668:62;28766:17;28746:18;;;28739:45;28801:19;;19371:94:7;28415:411:39;19371:94:7;19525:18;;19556:23;;;;;19591:21;;19625:25;;;;19663:18;;;;19497:219;;19469:15;;19497:219;;19525:18;;;;;19556:23;19591:21;;;;;19625:25;7118:9;;19497:219;;;:::i;:::-;;;;;;;;;;;;;;;19487:230;;19497:219;19487:230;;;;19744:20;;19788:11;;;;19729:71;;;19487:230;;-1:-1:-1;19744:20:7;;;19729:49;;:71;;19487:230;;19788:11;19729:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19721:128;;;;;;;31494:2:39;19721:128:7;;;31476:21:39;31533:2;31513:18;;;31506:30;31572:34;31552:18;;;31545:62;31643:14;31623:18;;;31616:42;31675:19;;19721:128:7;31292:408:39;19721:128:7;19854:29;19914:20;19918:16;19914:2;:20;:::i;:::-;19886:24;;:49;;;;:::i;:::-;19854:81;;19940:24;19982:20;;;;;;;;;;;19967:48;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19940:77;;20021:31;20070:20;;;;;;;;;;;20055:60;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20166:20;;20210:23;;;;;20151:83;;;;;20021:96;;-1:-1:-1;20121:27:7;;20166:20;;;;;20151:58;;:83;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20296:11;;20400:23;;;;20424:30;;20121:113;;-1:-1:-1;20240:24:7;;;;20296:11;;;:39;;20357:21;;20400:23;20424:34;;20296:11;;20424:34;:::i;:::-;20400:59;;;;;;;;:::i;:::-;;;;;;;;;;;20296:353;;;;;;;;;;;;;32153:25:39;;;;32194:18;;;32187:34;32237:18;;;32230:34;;;32280:18;;;32273:34;;;32323:19;;;32316:35;;;32125:19;;20296:353:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20239:410;;-1:-1:-1;20239:410:7;-1:-1:-1;20654:34:7;20711:20;20715:16;20711:2;:20;:::i;:::-;20691:41;;:16;:41;:::i;:::-;20654:78;;20737:22;20830:6;:25;;;20813:12;;20800:10;;20793:3;20785:25;;;;:::i;:::-;:40;;;;:::i;:::-;20763:63;;:18;:63;:::i;:::-;20762:93;;;;:::i;:::-;20904:16;;20737:118;;-1:-1:-1;20860:129:7;;20904:16;;20926:10;20949:4;20959:26;20860:31;:129::i;:::-;21004:21;;;20993:71;;;;;21037:10;20993:71;;;19337:74:39;;;;19427:18;;;19420:34;;;21004:21:7;;;20993:43;;19310:18:39;;20993:71:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19268:1800;;;;;;;;;19197:1871;:::o;15976:1311::-;4258:12;;;;;;;:21;4250:59;;;;;;;12563:2:39;4250:59:7;;;12545:21:39;12602:2;12582:18;;;12575:30;12641:27;12621:18;;;12614:55;12686:18;;4250:59:7;12361:349:39;4250:59:7;16161:20:::1;;;;;;;;;;;16146:60;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67:::0;16138:134:::1;;;::::0;::::1;::::0;;32564:2:39;16138:134:7::1;::::0;::::1;32546:21:39::0;32603:2;32583:18;;;32576:30;32642:34;32622:18;;;32615:62;32713:24;32693:18;;;32686:52;32755:19;;16138:134:7::1;32362:418:39::0;16138:134:7::1;16300:12;16285:11;:27;;16277:88;;;::::0;::::1;::::0;;32987:2:39;16277:88:7::1;::::0;::::1;32969:21:39::0;33026:2;33006:18;;;32999:30;33065:34;33045:18;;;33038:62;33136:18;33116;;;33109:46;33172:19;;16277:88:7::1;32785:412:39::0;16277:88:7::1;16414:21;::::0;16369:15:::1;::::0;16414:21:::1;;16437:18:::0;16457:11;7118:9;16397:86:::1;::::0;13911:2:39;13907:15;;;;13924:66;13903:88;16397:86:7::1;::::0;::::1;13891:101:39::0;14008:12;;;14001:28;;;;14045:12;;;14038:28;14082:12;;;14075:28;14119:13;;16397:86:7::1;::::0;;;;;::::1;::::0;;;;;;;16387:97;;16397:86:::1;16387:97:::0;;::::1;::::0;16511:20:::1;::::0;16496:64;;;16387:97;;-1:-1:-1;16511:20:7::1;;::::0;16496:49:::1;::::0;:64:::1;::::0;16387:97;;16555:4;;;;16496:64:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16488:123;;;::::0;::::1;::::0;;33404:2:39;16488:123:7::1;::::0;::::1;33386:21:39::0;33443:2;33423:18;;;33416:30;33482:34;33462:18;;;33455:62;33553:16;33533:18;;;33526:44;33587:19;;16488:123:7::1;33202:410:39::0;16488:123:7::1;16728:14;::::0;16648:10;;16747:3:::1;::::0;16713:29:::1;::::0;16747:3;16713:29:::1;:::i;:::-;16688:55;::::0;:21;:55:::1;:::i;:::-;16687:63;;;;:::i;:::-;16663:87:::0;-1:-1:-1;16768:19:7::1;16836:18:::0;16791:41:::1;2554:3;16663:87:::0;16791:41:::1;:::i;:::-;16790:64;;;;:::i;:::-;16911:10;16892:30;::::0;;;:18:::1;:30;::::0;;;;;16768:86;;-1:-1:-1;16892:44:7::1;::::0;16768:86;;16892:44:::1;:::i;:::-;16878:10;16859:30;::::0;;;:18:::1;:30;::::0;;;;:77;16960:17:::1;::::0;:31:::1;::::0;16980:11;;16960:31:::1;:::i;:::-;16940:17;:51:::0;17009:10:::1;16996:24;::::0;;;:12:::1;:24;::::0;;;;17023:12:::1;16996:39:::0;;17065:14:::1;::::0;17082:3:::1;::::0;17052:27:::1;::::0;:10;:27:::1;:::i;:::-;:33;;;;:::i;:::-;17040:8;;:45;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;17148:20:7::1;::::0;17133:75:::1;::::0;;;;17185:10:::1;17133:75;::::0;::::1;19337:74:39::0;19427:18;;;19420:34;;;17148:20:7::1;::::0;;::::1;::::0;17133:51:::1;::::0;19310:18:39;;17133:75:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;17223:21:7::1;::::0;;17212:71:::1;::::0;;;;17264:4:::1;17212:71:::0;;::::1;19337:74:39::0;;;;19427:18;;;19420:34;;;17223:21:7::1;;::::0;-1:-1:-1;17212:43:7::1;::::0;-1:-1:-1;19310:18:39;;17212:71:7::1;19163:297:39::0;5733:235:7;5809:7;2554:3;5927:16;5903:20;5907:16;5903:2;:20;:::i;:::-;5875:23;;5831:16;;:41;;;;;5866:4;5831:41;;;6502:74:39;5831:16:7;;;;;:26;;6475:18:39;;5831:41:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;;;:::i;:::-;5830:94;;;;:::i;:::-;:113;;;;:::i;:::-;5829:135;;;;:::i;21264:1452::-;21447:13;;;;;;;:22;21439:71;;;;;;;33819:2:39;21439:71:7;;;33801:21:39;33858:2;33838:18;;;33831:30;33897:34;33877:18;;;33870:62;33968:6;33948:18;;;33941:34;33992:19;;21439:71:7;33617:400:39;21439:71:7;21537:12;21522:11;:27;;21514:79;;;;;;;34224:2:39;21514:79:7;;;34206:21:39;34263:2;34243:18;;;34236:30;34302:34;34282:18;;;34275:62;34373:9;34353:18;;;34346:37;34400:19;;21514:79:7;34022:403:39;21514:79:7;21653:18;;21711:21;;21597:15;;21653:18;;;;;21683:16;;21711:21;21744:18;21774:11;7118:9;21625:185;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;21615:196;;21625:185;21615:196;;;;21838:20;;21823:64;;;21615:196;;-1:-1:-1;21838:20:7;;;21823:49;;:64;;21615:196;;21882:4;;;;21823:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21815:114;;;;;;;34632:2:39;21815:114:7;;;34614:21:39;34671:2;34651:18;;;34644:30;34710:34;34690:18;;;34683:62;34781:7;34761:18;;;34754:35;34806:19;;21815:114:7;34430:401:39;21815:114:7;21934:53;21990:267;;;;;;;;22038:41;22062:16;22038:23;:41::i;:::-;21990:267;;;;22094:18;21990:267;;;;22127:16;22170:1;22144:16;:23;:27;;;;:::i;:::-;22127:45;;;;;;;;:::i;:::-;;;;;;;21990:267;;;;22232:11;21990:267;;;21934:323;;22262:33;22376:3;22359:11;;22352:3;22344:26;;;;:::i;:::-;22299:11;;:41;;;;;:11;;;;;:27;;:41;;22327:12;;22299:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;;:::i;:::-;22298:82;;;;:::i;:::-;22262:118;-1:-1:-1;22384:28:7;22444:20;22448:16;22444:2;:20;:::i;:::-;22415:50;;:25;:50;:::i;:::-;22545:21;;;22534:73;;;;;22583:10;22534:73;;;19337:74:39;;;;19427:18;;;19420:34;;;22384:81:7;;-1:-1:-1;22545:21:7;;;;;22534:48;;19310:18:39;;22534:73:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22651:16:7;;22611:101;;-1:-1:-1;22651:16:7;;;-1:-1:-1;22673:10:7;22688:20;22611:27;:101::i;:::-;21435:1281;;;;21264:1452;;;;;;:::o;8699:1062::-;4358:10;;8867:22;;4358:10;;;;;:19;4350:55;;;;;;;20083:2:39;4350:55:7;;;20065:21:39;20122:2;20102:18;;;20095:30;20161:25;20141:18;;;20134:53;20204:18;;4350:55:7;19881:347:39;4350:55:7;8922:20:::1;;;;;;;;;;;8907:60;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67:::0;8895:116:::1;;;::::0;::::1;::::0;;35318:2:39;8895:116:7::1;::::0;::::1;35300:21:39::0;35357:2;35337:18;;;35330:30;35396:28;35376:18;;;35369:56;35442:18;;8895:116:7::1;35116:350:39::0;8895:116:7::1;9038:12;9023:11;:27;;9015:87;;;::::0;::::1;::::0;;13464:2:39;9015:87:7::1;::::0;::::1;13446:21:39::0;13503:2;13483:18;;;13476:30;13542:34;13522:18;;;13515:62;13613:17;13593:18;;;13586:45;13648:19;;9015:87:7::1;13262:411:39::0;9015:87:7::1;9151:21;::::0;9106:15:::1;::::0;9151:21:::1;;9174:18:::0;9194:11;7118:9;9134:86:::1;::::0;13911:2:39;13907:15;;;;13924:66;13903:88;9134:86:7::1;::::0;::::1;13891:101:39::0;14008:12;;;14001:28;;;;14045:12;;;14038:28;14082:12;;;14075:28;14119:13;;9134:86:7::1;::::0;;;;;::::1;::::0;;;;;;;9124:97;;9134:86:::1;9124:97:::0;;::::1;::::0;9248:20:::1;::::0;9233:64;;;9124:97;;-1:-1:-1;9248:20:7::1;;::::0;9233:49:::1;::::0;:64:::1;::::0;9124:97;;9292:4;;;;9233:64:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9225:121;;;::::0;::::1;::::0;;35673:2:39;9225:121:7::1;::::0;::::1;35655:21:39::0;35712:2;35692:18;;;35685:30;35751:34;35731:18;;;35724:62;35822:14;35802:18;;;35795:42;35854:19;;9225:121:7::1;35471:408:39::0;9225:121:7::1;9368:11;::::0;:99:::1;::::0;;;;::::1;::::0;::::1;18493:25:39::0;;;18534:18;;;18527:34;;;9368:11:7::1;::::0;;::::1;::::0;:34:::1;::::0;18466:18:39;;9368:99:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9351:116;;9542:3;9524:11;;9516:3;9508:28;;;;:::i;:::-;9490:47;::::0;:14;:47:::1;:::i;:::-;9489:57;;;;:::i;:::-;9472:74;;9594:3;9580:11;;9562:14;:29;;;;:::i;:::-;:35;;;;:::i;:::-;9550:8;;:47;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;9613:21:7::1;::::0;;9602:77:::1;::::0;;;;9651:10:::1;9602:77:::0;;::::1;19337:74:39::0;;;;19427:18;;;19420:34;;;9613:21:7::1;;::::0;9602:48:::1;::::0;19310:18:39;;9602:77:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;9698:20:7::1;::::0;9683:74:::1;::::0;;;;9730:10:::1;9683:74;::::0;::::1;19337::39::0;19427:18;;;19420:34;;;9698:20:7::1;::::0;;::::1;::::0;-1:-1:-1;9683:46:7::1;::::0;-1:-1:-1;19310:18:39;;9683:74:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8891:870;8699:1062:::0;;;;;;;:::o;3320:125:20:-;3383:7;3409:12;;;;;;;;;;:29;;:27;:29::i;5166:226::-;5258:6;:12;;;;;;;;;;:22;;;5250:45;;686:10:4;3015:137:20;:::i;5250:45::-;5242:106;;;;;;;36086:2:39;5242:106:20;;;36068:21:39;36125:2;36105:18;;;36098:30;36164:34;36144:18;;;36137:62;36235:18;36215;;;36208:46;36271:19;;5242:106:20;35884:412:39;23353:159:7;23401:34;3458:26;23424:10;23401:7;:34::i;:::-;23393:43;;;;;;23456:12;;;;;;;;;;23455:13;23440:28;;;;;;;;;;;;;;23478:30;;;;;;23495:12;;;;;5817:14:39;5810:22;5792:41;;5780:2;5765:18;;5652:187;23066:134:7;4140:32;3685:24;4161:10;4140:7;:32::i;:::-;4128:79;;;;;;;36503:2:39;4128:79:7;;;36485:21:39;36542:2;36522:18;;;36515:30;36581:26;36561:18;;;36554:54;36625:18;;4128:79:7;36301:348:39;4128:79:7;23162:34:::1;::::0;;;;:22:::1;19355:55:39::0;;;23162:34:7::1;::::0;::::1;19337:74:39::0;19427:18;;;19420:34;;;23162:22:7;::::1;::::0;::::1;::::0;19310:18:39;;23162:34:7::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13536:2391::-:0;4258:12;;;;;;;:21;4250:59;;;;;;;12563:2:39;4250:59:7;;;12545:21:39;12602:2;12582:18;;;12575:30;12641:27;12621:18;;;12614:55;12686:18;;4250:59:7;12361:349:39;4250:59:7;13775:20:::1;::::0;13760:62:::1;::::0;;;;;;;13726:31:::1;::::0;13775:20:::1;;::::0;13760:60:::1;::::0;:62:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;13775:20;13760:62:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13726:96;;2668:3;13838:23;:46;:77;;;;;13914:1;13888:23;:27;13838:77;13826:183;;;::::0;::::1;::::0;;36856:2:39;13826:183:7::1;::::0;::::1;36838:21:39::0;36895:2;36875:18;;;36868:30;36934:34;36914:18;;;36907:62;37005:34;36985:18;;;36978:62;37077:21;37056:19;;;37049:50;37116:19;;13826:183:7::1;36654:487:39::0;13826:183:7::1;14037:12;14022:11;:27;;14014:86;;;::::0;::::1;::::0;;37348:2:39;14014:86:7::1;::::0;::::1;37330:21:39::0;37387:2;37367:18;;;37360:30;37426:34;37406:18;;;37399:62;37497:16;37477:18;;;37470:44;37531:19;;14014:86:7::1;37146:410:39::0;14014:86:7::1;14149:18;::::0;14187:21:::1;::::0;14132:124:::1;::::0;;25435:66:39;25530:2;25526:15;;;;;14132:124:7::1;::::0;;::::1;25510:37:39::0;;;;25563:12;;;25556:28;;;25618:15;;;;;;;25600:12;;;25593:46;25655:12;;;25648:28;;;25692:13;;;25685:29;;;7118:9:7;25730:13:39;;;;25723:29;;;;14132:124:7;;;;;;;;;;25768:13:39;;;14132:124:7;;;;14122:135;;;::::1;::::0;;;;14284:20:::1;::::0;14269:64;;;;14122:135;14149:18:::1;14284:20:::0;;::::1;::::0;14269:49:::1;::::0;:64:::1;::::0;14122:135;;14328:4;;;;14269:64;;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14261:122;;;::::0;::::1;::::0;;37763:2:39;14261:122:7::1;::::0;::::1;37745:21:39::0;37802:2;37782:18;;;37775:30;37841:34;37821:18;;;37814:62;37912:15;37892:18;;;37885:43;37945:19;;14261:122:7::1;37561:409:39::0;14261:122:7::1;14442:19;14465:25:::0;14499:21:::1;14523:16;14499:40;;14545:27;2554:3;14605:14;;14598:3;14590:29;;;;:::i;:::-;14576:44;::::0;:10;:44:::1;:::i;:::-;14575:66;;;;:::i;:::-;14545:96:::0;-1:-1:-1;14647:29:7::1;2554:3;14703:45;14725:23:::0;14545:96;14703:45:::1;:::i;:::-;14702:67;;;;:::i;:::-;14679:91;::::0;:19;:91:::1;:::i;:::-;14647:123:::0;-1:-1:-1;14834:18:7;14789:41:::1;2554:3;14647:123:::0;14789:41:::1;:::i;:::-;:64;;;;:::i;:::-;14775:78:::0;-1:-1:-1;14907:28:7::1;14961:20;14965:16;14961:2;:20;:::i;:::-;14938:44;::::0;:19;:44:::1;:::i;:::-;14907:75:::0;-1:-1:-1;14987:31:7::1;2554:3;15022:46;15045:23:::0;14907:75;15022:46:::1;:::i;:::-;15021:66;;;;:::i;:::-;14987:100:::0;-1:-1:-1;15159:13:7;15113:41:::1;2554:3;14987:100:::0;15113:41:::1;:::i;:::-;15112:61;;;;:::i;:::-;15258:23;::::0;15214:16:::1;::::0;:41:::1;::::0;;;;15249:4:::1;15214:41;::::0;::::1;6502:74:39::0;15092:81:7;;-1:-1:-1;15258:23:7;;-1:-1:-1;15214:16:7::1;;::::0;-1:-1:-1;15214:26:7::1;::::0;-1:-1:-1;6475:18:39;;;-1:-1:-1;15214:41:7::1;::::0;-1:-1:-1;6356:226:39;15214:41:7::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;;;:::i;:::-;15193:17;:88;;15181:140;;;::::0;::::1;::::0;;19007:2:39;15181:140:7::1;::::0;::::1;18989:21:39::0;19046:2;19026:18;;;19019:30;19085:31;19065:18;;;19058:59;19134:18;;15181:140:7::1;18805:353:39::0;15181:140:7::1;15390:10;15365:36;::::0;;;:24:::1;:36;::::0;;;;;:56:::1;::::0;15404:17;;15365:56:::1;:::i;:::-;15351:10;15326:36;::::0;;;:24:::1;:36;::::0;;;;:95;15451:23:::1;::::0;:43:::1;::::0;15477:17;;15451:43:::1;:::i;:::-;15425:23;:69:::0;15551:10:::1;15532:30;::::0;;;:18:::1;:30;::::0;;;;;:44:::1;::::0;15565:11;;15532:44:::1;:::i;:::-;15518:10;15499:30;::::0;;;:18:::1;:30;::::0;;;;:77;15600:17:::1;::::0;:31:::1;::::0;15620:11;;15600:31:::1;:::i;:::-;15580:17;:51:::0;15649:10:::1;15636:24;::::0;;;:12:::1;:24;::::0;;;;15663:12:::1;15636:39:::0;;15705:14:::1;::::0;15722:3:::1;::::0;15692:27:::1;::::0;:10;:27:::1;:::i;:::-;:33;;;;:::i;:::-;15680:8;;:45;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;15788:20:7::1;::::0;15773:75:::1;::::0;;;;15825:10:::1;15773:75;::::0;::::1;19337:74:39::0;19427:18;;;19420:34;;;15788:20:7::1;::::0;;::::1;::::0;15773:51:::1;::::0;19310:18:39;;15773:75:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;15863:21:7::1;::::0;;15852:71:::1;::::0;;;;15904:4:::1;15852:71:::0;;::::1;19337:74:39::0;;;;19427:18;;;19420:34;;;15863:21:7::1;;::::0;-1:-1:-1;15852:43:7::1;::::0;-1:-1:-1;19310:18:39;;15852:71:7::1;19163:297:39::0;4866:141:38;4936:4;4959:41;4964:3;4976:23;4984:14;;;;4976:23;4959:4;:41::i;559:357:32:-;752:45;;;741:10;19355:55:39;;;752:45:32;;;19337:74:39;19427:18;;;;19420:34;;;752:45:32;;;;;;;;;;19310:18:39;;;;752:45:32;;;;;;;;;;;;;741:57;;-1:-1:-1;;;;741:10:32;;;;:57;;752:45;741:57;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;705:93;;;;816:7;:57;;;;-1:-1:-1;828:11:32;;:16;;:44;;;859:4;848:24;;;;;;;;;;;;:::i;:::-;808:101;;;;;;;38456:2:39;808:101:32;;;38438:21:39;38495:2;38475:18;;;38468:30;38534:33;38514:18;;;38507:61;38585:18;;808:101:32;38254:355:39;808:101:32;629:287;;559:357;;;:::o;7090:184:20:-;7163:6;:12;;;;;;;;;;:33;;7188:7;7163:24;:33::i;:::-;7159:109;;;7217:40;;686:10:4;;7217:40:20;;;;7229:4;;7217:40;;;;;7090:184;;:::o;922:398:32:-;1145:51;;;1134:10;38895:15:39;;;1145:51:32;;;38877:34:39;38947:15;;;38927:18;;;38920:43;38979:18;;;;38972:34;;;1145:51:32;;;;;;;;;;38789:18:39;;;;1145:51:32;;;;;;;;;;;;;1134:63;;-1:-1:-1;;;;1134:10:32;;;;:63;;1145:51;1134:63;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1098:99;;;;1215:7;:57;;;;-1:-1:-1;1227:11:32;;:16;;:44;;;1258:4;1247:24;;;;;;;;;;;;:::i;:::-;1207:106;;;;;;;39219:2:39;1207:106:32;;;39201:21:39;39258:2;39238:18;;;39231:30;39297:34;39277:18;;;39270:62;39368:6;39348:18;;;39341:34;39392:19;;1207:106:32;39017:400:39;1207:106:32;1010:310;;922:398;;;;:::o;7280:188:20:-;7354:6;:12;;;;;;;;;;:36;;7382:7;7354:27;:36::i;:::-;7350:112;;;7411:40;;686:10:4;;7411:40:20;;;;7423:4;;7411:40;;;;;7280:188;;:::o;6087:147:38:-;6161:7;6203:22;6207:3;6219:5;6203:3;:22::i;:::-;6187:40;;;6087:147;-1:-1:-1;;;6087:147:38:o;5403:156::-;5536:14;;;;5528:23;;5483:4;3874:19;;;:12;;;:19;;;;;;:24;;5506:46;3778:127;5640:115;5703:7;5729:19;5737:3;4068:18;;3986:107;1613:404;1676:4;3874:19;;;:12;;;:19;;;;;;1692:319;;-1:-1:-1;1734:23:38;;;;;;;;:11;:23;;;;;;;;;;;;;1914:18;;1892:19;;;:12;;;:19;;;;;;:40;;;;1946:11;;1692:319;-1:-1:-1;1995:5:38;1988:12;;5175:147;5248:4;5271:44;5279:3;5291:23;5299:14;;;;5291:23;5271:7;:44::i;4425:201::-;4519:18;;4492:7;;4519:26;-1:-1:-1;4511:73:38;;;;;;;39624:2:39;4511:73:38;;;39606:21:39;39663:2;39643:18;;;39636:30;39702:34;39682:18;;;39675:62;39773:4;39753:18;;;39746:32;39795:19;;4511:73:38;39422:398:39;4511:73:38;4601:3;:11;;4613:5;4601:18;;;;;;;;:::i;:::-;;;;;;;;;4594:25;;4425:201;;;;:::o;2185:1512::-;2251:4;2388:19;;;:12;;;:19;;;;;;2422:15;;2418:1273;;2779:21;2803:14;2816:1;2803:10;:14;:::i;:::-;2851:18;;2779:38;;-1:-1:-1;2831:17:38;;2851:22;;2872:1;;2851:22;:::i;:::-;2831:42;;3113:17;3133:3;:11;;3145:9;3133:22;;;;;;;;:::i;:::-;;;;;;;;;3113:42;;3276:9;3247:3;:11;;3259:13;3247:26;;;;;;;;:::i;:::-;;;;;;;;;;:38;3377:17;:13;3393:1;3377:17;:::i;:::-;3351:23;;;;:12;;;:23;;;;;:43;3500:17;;3351:3;;3500:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3592:3;:12;;:19;3605:5;3592:19;;;;;;;;;;;3585:26;;;3633:4;3626:11;;;;;;;;2418:1273;3675:5;3668:12;;;;;14:196:39;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:186::-;274:6;327:2;315:9;306:7;302:23;298:32;295:52;;;343:1;340;333:12;295:52;366:29;385:9;366:29;:::i;588:180::-;647:6;700:2;688:9;679:7;675:23;671:32;668:52;;;716:1;713;706:12;668:52;-1:-1:-1;739:23:39;;588:180;-1:-1:-1;588:180:39:o;955:374::-;1025:8;1035:6;1089:3;1082:4;1074:6;1070:17;1066:27;1056:55;;1107:1;1104;1097:12;1056:55;-1:-1:-1;1130:20:39;;1173:18;1162:30;;1159:50;;;1205:1;1202;1195:12;1159:50;1242:4;1234:6;1230:17;1218:29;;1302:3;1295:4;1285:6;1282:1;1278:14;1270:6;1266:27;1262:38;1259:47;1256:67;;;1319:1;1316;1309:12;1256:67;955:374;;;;;:::o;1334:660::-;1458:6;1466;1474;1482;1490;1543:3;1531:9;1522:7;1518:23;1514:33;1511:53;;;1560:1;1557;1550:12;1511:53;1596:9;1583:23;1573:33;;1653:2;1642:9;1638:18;1625:32;1615:42;;1704:2;1693:9;1689:18;1676:32;1666:42;;1759:2;1748:9;1744:18;1731:32;1786:18;1778:6;1775:30;1772:50;;;1818:1;1815;1808:12;1772:50;1857:77;1926:7;1917:6;1906:9;1902:22;1857:77;:::i;:::-;1334:660;;;;-1:-1:-1;1334:660:39;;-1:-1:-1;1953:8:39;;1831:103;1334:660;-1:-1:-1;;;1334:660:39:o;1999:254::-;2067:6;2075;2128:2;2116:9;2107:7;2103:23;2099:32;2096:52;;;2144:1;2141;2134:12;2096:52;2180:9;2167:23;2157:33;;2209:38;2243:2;2232:9;2228:18;2209:38;:::i;:::-;2199:48;;1999:254;;;;;:::o;2258:184::-;2310:77;2307:1;2300:88;2407:4;2404:1;2397:15;2431:4;2428:1;2421:15;2447:253;2519:2;2513:9;2561:4;2549:17;;2596:18;2581:34;;2617:22;;;2578:62;2575:88;;;2643:18;;:::i;:::-;2679:2;2672:22;2447:253;:::o;2705:334::-;2776:2;2770:9;2832:2;2822:13;;2837:66;2818:86;2806:99;;2935:18;2920:34;;2956:22;;;2917:62;2914:88;;;2982:18;;:::i;:::-;3018:2;3011:22;2705:334;;-1:-1:-1;2705:334:39:o;3044:183::-;3104:4;3137:18;3129:6;3126:30;3123:56;;;3159:18;;:::i;:::-;-1:-1:-1;3204:1:39;3200:14;3216:4;3196:25;;3044:183::o;3232:662::-;3286:5;3339:3;3332:4;3324:6;3320:17;3316:27;3306:55;;3357:1;3354;3347:12;3306:55;3393:6;3380:20;3419:4;3443:60;3459:43;3499:2;3459:43;:::i;:::-;3443:60;:::i;:::-;3537:15;;;3623:1;3619:10;;;;3607:23;;3603:32;;;3568:12;;;;3647:15;;;3644:35;;;3675:1;3672;3665:12;3644:35;3711:2;3703:6;3699:15;3723:142;3739:6;3734:3;3731:15;3723:142;;;3805:17;;3793:30;;3843:12;;;;3756;;3723:142;;;-1:-1:-1;3883:5:39;3232:662;-1:-1:-1;;;;;;3232:662:39:o;3899:348::-;3983:6;4036:2;4024:9;4015:7;4011:23;4007:32;4004:52;;;4052:1;4049;4042:12;4004:52;4092:9;4079:23;4125:18;4117:6;4114:30;4111:50;;;4157:1;4154;4147:12;4111:50;4180:61;4233:7;4224:6;4213:9;4209:22;4180:61;:::i;:::-;4170:71;3899:348;-1:-1:-1;;;;3899:348:39:o;4252:592::-;4365:6;4373;4381;4389;4397;4405;4413;4466:3;4454:9;4445:7;4441:23;4437:33;4434:53;;;4483:1;4480;4473:12;4434:53;-1:-1:-1;;4506:23:39;;;4576:2;4561:18;;4548:32;;-1:-1:-1;4627:2:39;4612:18;;4599:32;;4678:2;4663:18;;4650:32;;-1:-1:-1;4729:3:39;4714:19;;4701:33;;-1:-1:-1;4781:3:39;4766:19;;4753:33;;-1:-1:-1;4833:3:39;4818:19;4805:33;;-1:-1:-1;4252:592:39;-1:-1:-1;4252:592:39:o;4849:798::-;4991:6;4999;5007;5015;5023;5031;5039;5092:3;5080:9;5071:7;5067:23;5063:33;5060:53;;;5109:1;5106;5099:12;5060:53;5145:9;5132:23;5122:33;;5202:2;5191:9;5187:18;5174:32;5164:42;;5253:2;5242:9;5238:18;5225:32;5215:42;;5304:2;5293:9;5289:18;5276:32;5266:42;;5355:3;5344:9;5340:19;5327:33;5317:43;;5411:3;5400:9;5396:19;5383:33;5439:18;5431:6;5428:30;5425:50;;;5471:1;5468;5461:12;5425:50;5510:77;5579:7;5570:6;5559:9;5555:22;5510:77;:::i;:::-;4849:798;;;;-1:-1:-1;4849:798:39;;-1:-1:-1;4849:798:39;;;;5484:103;;-1:-1:-1;;;4849:798:39:o;6103:248::-;6171:6;6179;6232:2;6220:9;6211:7;6207:23;6203:32;6200:52;;;6248:1;6245;6238:12;6200:52;-1:-1:-1;;6271:23:39;;;6341:2;6326:18;;;6313:32;;-1:-1:-1;6103:248:39:o;6587:1598::-;6639:5;6669:4;6713:3;6708:2;6700:6;6696:15;6692:25;6682:53;;6731:1;6728;6721:12;6682:53;6767:6;6754:20;6793:4;6817:60;6833:43;6873:2;6833:43;:::i;6817:60::-;6911:15;;;6997:1;6993:10;;;;6981:23;;6977:32;;;6942:12;;;;7021:15;;;7018:35;;;7049:1;7046;7039:12;7018:35;7085:2;7077:6;7073:15;7097:1059;7113:6;7108:3;7105:15;7097:1059;;;7199:3;7186:17;7226:18;7276:2;7263:11;7260:19;7257:109;;;7320:1;7349:2;7345;7338:14;7257:109;7401:11;7393:6;7389:24;7379:34;;7453:3;7448:2;7444;7440:11;7436:21;7426:119;;7499:1;7528:2;7524;7517:14;7426:119;7589:2;7585;7581:11;7568:25;7616:2;7641;7637;7634:10;7631:36;;;7647:18;;:::i;:::-;7695:110;7801:2;7732:66;7727:2;7723;7719:11;7715:84;7711:93;7695:110;:::i;:::-;7680:125;;7834:2;7825:7;7818:19;7878:3;7873:2;7868;7864;7860:11;7856:20;7853:29;7850:122;;;7924:1;7954:3;7949;7942:16;7850:122;8029:2;8024;8020;8016:11;8011:2;8002:7;7998:16;7985:47;-1:-1:-1;8079:1:39;8056:16;;;8052:25;;8045:36;8094:20;;-1:-1:-1;8134:12:39;;;;7130;;7097:1059;;;-1:-1:-1;8174:5:39;6587:1598;-1:-1:-1;;;;;;;6587:1598:39:o;8190:1049::-;8285:6;8338:2;8326:9;8317:7;8313:23;8309:32;8306:52;;;8354:1;8351;8344:12;8306:52;8394:9;8381:23;8423:18;8464:2;8456:6;8453:14;8450:34;;;8480:1;8477;8470:12;8450:34;8503:22;;;;8559:4;8541:16;;;8537:27;8534:47;;;8577:1;8574;8567:12;8534:47;8603:22;;:::i;:::-;8661:2;8648:16;8641:5;8634:31;8718:2;8714;8710:11;8697:25;8692:2;8685:5;8681:14;8674:49;8769:2;8765;8761:11;8748:25;8798:2;8788:8;8785:16;8782:36;;;8814:1;8811;8804:12;8782:36;8850:56;8898:7;8887:8;8883:2;8879:17;8850:56;:::i;:::-;8845:2;8838:5;8834:14;8827:80;;8960:2;8956;8952:11;8939:25;8934:2;8927:5;8923:14;8916:49;9019:3;9015:2;9011:12;8998:26;8992:3;8985:5;8981:15;8974:51;9071:3;9067:2;9063:12;9050:26;9101:2;9091:8;9088:16;9085:36;;;9117:1;9114;9107:12;9085:36;9154:54;9200:7;9189:8;9185:2;9181:17;9154:54;:::i;:::-;9148:3;9137:15;;9130:79;-1:-1:-1;9141:5:39;8190:1049;-1:-1:-1;;;;;8190:1049:39:o;9429:908::-;9587:6;9595;9603;9611;9619;9627;9680:3;9668:9;9659:7;9655:23;9651:33;9648:53;;;9697:1;9694;9687:12;9648:53;9733:9;9720:23;9710:33;;9794:2;9783:9;9779:18;9766:32;9817:18;9858:2;9850:6;9847:14;9844:34;;;9874:1;9871;9864:12;9844:34;9897:61;9950:7;9941:6;9930:9;9926:22;9897:61;:::i;:::-;9887:71;;10005:2;9994:9;9990:18;9977:32;9967:42;;10056:2;10045:9;10041:18;10028:32;10018:42;;10113:3;10102:9;10098:19;10085:33;10069:49;;10143:2;10133:8;10130:16;10127:36;;;10159:1;10156;10149:12;10127:36;;10198:79;10269:7;10258:8;10247:9;10243:24;10198:79;:::i;:::-;9429:908;;;;-1:-1:-1;9429:908:39;;-1:-1:-1;9429:908:39;;10296:8;;9429:908;-1:-1:-1;;;9429:908:39:o;10342:328::-;10419:6;10427;10435;10488:2;10476:9;10467:7;10463:23;10459:32;10456:52;;;10504:1;10501;10494:12;10456:52;10527:29;10546:9;10527:29;:::i;:::-;10517:39;;10603:2;10592:9;10588:18;10575:32;10565:42;;10626:38;10660:2;10649:9;10645:18;10626:38;:::i;:::-;10616:48;;10342:328;;;;;:::o;10675:729::-;10808:6;10816;10824;10832;10840;10848;10901:3;10889:9;10880:7;10876:23;10872:33;10869:53;;;10918:1;10915;10908:12;10869:53;10954:9;10941:23;10931:33;;11011:2;11000:9;10996:18;10983:32;10973:42;;11062:2;11051:9;11047:18;11034:32;11024:42;;11113:2;11102:9;11098:18;11085:32;11075:42;;11168:3;11157:9;11153:19;11140:33;11196:18;11188:6;11185:30;11182:50;;;11228:1;11225;11218:12;11182:50;11267:77;11336:7;11327:6;11316:9;11312:22;11267:77;:::i;11409:184::-;11461:77;11458:1;11451:88;11558:4;11555:1;11548:15;11582:4;11579:1;11572:15;11598:128;11638:3;11669:1;11665:6;11662:1;11659:13;11656:39;;;11675:18;;:::i;:::-;-1:-1:-1;11711:9:39;;11598:128::o;12231:125::-;12271:4;12299:1;12296;12293:8;12290:34;;;12304:18;;:::i;:::-;-1:-1:-1;12341:9:39;;12231:125::o;12715:184::-;12785:6;12838:2;12826:9;12817:7;12813:23;12809:32;12806:52;;;12854:1;12851;12844:12;12806:52;-1:-1:-1;12877:16:39;;12715:184;-1:-1:-1;12715:184:39:o;14143:325::-;14231:6;14226:3;14219:19;14283:6;14276:5;14269:4;14264:3;14260:14;14247:43;;14335:1;14328:4;14319:6;14314:3;14310:16;14306:27;14299:38;14201:3;14457:4;14387:66;14382:2;14374:6;14370:15;14366:88;14361:3;14357:98;14353:109;14346:116;;14143:325;;;;:::o;14473:1379::-;14673:4;14721:2;14710:9;14706:18;14751:6;14740:9;14733:25;14777:2;14815;14810;14799:9;14795:18;14788:30;14838:6;14868;14860;14853:22;14906:2;14895:9;14891:18;14884:25;;14968:2;14958:6;14955:1;14951:14;14940:9;14936:30;14932:39;14918:53;;14994:6;15018:1;15028:795;15042:6;15039:1;15036:13;15028:795;;;15131:66;15119:9;15111:6;15107:22;15103:95;15098:3;15091:108;15251:6;15238:20;15338:66;15329:6;15313:14;15309:27;15305:100;15285:18;15281:125;15271:153;;15420:1;15417;15410:12;15271:153;15450:31;;15508:19;;15554:18;15543:30;;15540:50;;;15586:1;15583;15576:12;15540:50;15638:6;15622:14;15618:27;15610:6;15606:40;15603:60;;;15659:1;15656;15649:12;15603:60;15686:57;15736:6;15728;15723:2;15716:5;15712:14;15686:57;:::i;:::-;15676:67;-1:-1:-1;;;15801:12:39;;;;15766:15;;;;15064:1;15057:9;15028:795;;;-1:-1:-1;15840:6:39;;14473:1379;-1:-1:-1;;;;;;;;14473:1379:39:o;15857:277::-;15924:6;15977:2;15965:9;15956:7;15952:23;15948:32;15945:52;;;15993:1;15990;15983:12;15945:52;16025:9;16019:16;16078:5;16071:13;16064:21;16057:5;16054:32;16044:60;;16100:1;16097;16090:12;16044:60;16123:5;15857:277;-1:-1:-1;;;15857:277:39:o;16546:482::-;16635:1;16678:5;16635:1;16692:330;16713:7;16703:8;16700:21;16692:330;;;16832:4;16764:66;16760:77;16754:4;16751:87;16748:113;;;16841:18;;:::i;:::-;16891:7;16881:8;16877:22;16874:55;;;16911:16;;;;16874:55;16990:22;;;;16950:15;;;;16692:330;;;16696:3;16546:482;;;;;:::o;17033:866::-;17082:5;17112:8;17102:80;;-1:-1:-1;17153:1:39;17167:5;;17102:80;17201:4;17191:76;;-1:-1:-1;17238:1:39;17252:5;;17191:76;17283:4;17301:1;17296:59;;;;17369:1;17364:130;;;;17276:218;;17296:59;17326:1;17317:10;;17340:5;;;17364:130;17401:3;17391:8;17388:17;17385:43;;;17408:18;;:::i;:::-;-1:-1:-1;;17464:1:39;17450:16;;17479:5;;17276:218;;17578:2;17568:8;17565:16;17559:3;17553:4;17550:13;17546:36;17540:2;17530:8;17527:16;17522:2;17516:4;17513:12;17509:35;17506:77;17503:159;;;-1:-1:-1;17615:19:39;;;17647:5;;17503:159;17694:34;17719:8;17713:4;17694:34;:::i;:::-;17824:6;17756:66;17752:79;17743:7;17740:92;17737:118;;;17835:18;;:::i;:::-;17873:20;;17033:866;-1:-1:-1;;;17033:866:39:o;17904:131::-;17964:5;17993:36;18020:8;18014:4;17993:36;:::i;18040:274::-;18080:1;18106;18096:189;;18141:77;18138:1;18131:88;18242:4;18239:1;18232:15;18270:4;18267:1;18260:15;18096:189;-1:-1:-1;18299:9:39;;18040:274::o;18572:228::-;18612:7;18738:1;18670:66;18666:74;18663:1;18660:81;18655:1;18648:9;18641:17;18637:105;18634:131;;;18745:18;;:::i;:::-;-1:-1:-1;18785:9:39;;18572:228::o;22180:632::-;22351:2;22403:21;;;22473:13;;22376:18;;;22495:22;;;22322:4;;22351:2;22574:15;;;;22548:2;22533:18;;;22322:4;22617:169;22631:6;22628:1;22625:13;22617:169;;;22692:13;;22680:26;;22761:15;;;;22726:12;;;;22653:1;22646:9;22617:169;;;-1:-1:-1;22803:3:39;;22180:632;-1:-1:-1;;;;;;22180:632:39:o;26475:265::-;26283:12;;26271:25;;26345:4;26334:16;;;26328:23;26312:14;;;26305:47;26401:4;26390:16;;;26384:23;26368:14;;;26361:47;26457:4;26446:16;;;26440:23;26424:14;;;26417:47;26671:3;26656:19;;26684:50;26204:266;26745:245;26824:6;26832;26885:2;26873:9;26864:7;26860:23;26856:32;26853:52;;;26901:1;26898;26891:12;26853:52;-1:-1:-1;;26924:16:39;;26980:2;26965:18;;;26959:25;26924:16;;26959:25;;-1:-1:-1;26745:245:39:o;28831:1000::-;29132:3;29160:66;29268:2;29259:6;29255:2;29251:15;29247:24;29242:3;29235:37;29303:2;29298:3;29294:12;29335:6;29329:13;29384:4;29423:2;29415:6;29411:15;29444:1;29454:175;29468:6;29465:1;29462:13;29454:175;;;29531:13;;29517:28;;29567:14;;;;29604:15;;;;29490:1;29483:9;29454:175;;;-1:-1:-1;;;;29660:2:39;29656:15;;;;29652:24;29638:39;;-1:-1:-1;;29704:2:39;29693:14;;29686:30;;;;29743:2;29732:14;;29725:30;29782:2;29771:14;;29764:30;29821:3;29810:15;;28831:1000;-1:-1:-1;;28831:1000:39:o;29836:258::-;29908:1;29918:113;29932:6;29929:1;29926:13;29918:113;;;30008:11;;;30002:18;29989:11;;;29982:39;29954:2;29947:10;29918:113;;;30049:6;30046:1;30043:13;30040:48;;;-1:-1:-1;;30084:1:39;30066:16;;30059:27;29836:258::o;30099:1188::-;30287:4;30335:2;30324:9;30320:18;30365:6;30354:9;30347:25;30391:2;30429;30424;30413:9;30409:18;30402:30;30452:6;30487;30481:13;30518:6;30510;30503:22;30556:2;30545:9;30541:18;30534:25;;30618:2;30608:6;30605:1;30601:14;30590:9;30586:30;30582:39;30568:53;;30656:2;30648:6;30644:15;30677:1;30687:571;30701:6;30698:1;30695:13;30687:571;;;30790:66;30778:9;30770:6;30766:22;30762:95;30757:3;30750:108;30887:6;30881:13;30929:2;30923:9;30960:8;30952:6;30945:24;30982:61;31034:8;31029:2;31021:6;31017:15;31012:2;31008;31004:11;30982:61;:::i;:::-;31100:2;31086:17;31105:66;31082:90;31070:103;;;;31066:112;;;-1:-1:-1;31236:12:39;;;;31201:15;;;;30723:1;30716:9;30687:571;;;-1:-1:-1;31275:6:39;;30099:1188;-1:-1:-1;;;;;;;;30099:1188:39:o;31705:184::-;31757:77;31754:1;31747:88;31854:4;31851:1;31844:15;31878:4;31875:1;31868:15;37975:274;38104:3;38142:6;38136:13;38158:53;38204:6;38199:3;38192:4;38184:6;38180:17;38158:53;:::i;:::-;38227:16;;;;;37975:274;-1:-1:-1;;37975:274:39:o;39825:184::-;39877:77;39874:1;39867:88;39974:4;39971:1;39964:15;39998:4;39995:1;39988:15" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "4807600", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "DAI_address()": "2423", + "DAO_SHARE_COLLECTOR()": "273", + "DEFAULT_ADMIN_ROLE()": "251", + "PARAMETER_SETTER_ROLE()": "274", + "TRUSTY_ROLE()": "297", + "availableExcessCollatDV(uint256[])": "infinite", + "bonus_rate()": "2397", + "buyBackDEUS(uint256,uint256[],uint256,uint256,bytes[])": "infinite", + "buyBackPaused()": "2389", + "buyback_fee()": "2376", + "collatDollarBalance(uint256)": "infinite", + "collectDaoShare(uint256,address)": "infinite", + "collectRedemption()": "infinite", + "daoShare()": "2374", + "emergencyWithdrawERC20(address,uint256,address)": "infinite", + "getChainID()": "248", + "getRoleAdmin(bytes32)": "2527", + "getRoleMember(bytes32,uint256)": "7024", + "getRoleMemberCount(bytes32)": "infinite", + "grantRole(bytes32,address)": "infinite", + "hasRole(bytes32,address)": "infinite", + "lastRedeemed(address)": "2589", + "mint1t1DEI(uint256,uint256,uint256,bytes[])": "infinite", + "mintAlgorithmicDEI(uint256,uint256,uint256,bytes[])": "infinite", + "mintFractionalDEI(uint256,uint256,uint256,uint256,uint256,bytes[])": "infinite", + "mintPaused()": "2434", + "minting_fee()": "2374", + "pausedPrice()": "2373", + "pool_ceiling()": "2396", + "recollat_fee()": "2416", + "recollateralizeDEI((uint256,uint256,uint256[],uint256,uint256,bytes[]))": "infinite", + "recollateralizePaused()": "2388", + "redeem1t1DEI(uint256,uint256,uint256,bytes[])": "infinite", + "redeemAlgorithmicDEI(uint256,uint256,uint256,bytes[])": "infinite", + "redeemCollateralBalances(address)": "2570", + "redeemDEUSBalances(address)": "2612", + "redeemFractionalDEI(uint256,uint256,uint256,uint256,bytes[])": "infinite", + "redeemPaused()": "2432", + "redemption_delay()": "2353", + "redemption_fee()": "2351", + "renounceRole(bytes32,address)": "infinite", + "revokeRole(bytes32,address)": "infinite", + "setPoolParameters(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": "infinite", + "toggleBuyBack()": "infinite", + "toggleMinting()": "infinite", + "toggleRecollateralize()": "infinite", + "toggleRedeeming()": "infinite", + "unclaimedPoolCollateral()": "2353", + "unclaimedPoolDEUS()": "2352" + } + }, + "methodIdentifiers": { + "DAI_address()": "fa4dfa3a", + "DAO_SHARE_COLLECTOR()": "6d82e314", + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "PARAMETER_SETTER_ROLE()": "5de207cc", + "TRUSTY_ROLE()": "34ddb95d", + "availableExcessCollatDV(uint256[])": "40e14b78", + "bonus_rate()": "4c634934", + "buyBackDEUS(uint256,uint256[],uint256,uint256,bytes[])": "c410ca1b", + "buyBackPaused()": "7f877f85", + "buyback_fee()": "101197c7", + "collatDollarBalance(uint256)": "b6258aaa", + "collectDaoShare(uint256,address)": "7901330b", + "collectRedemption()": "12ace5a2", + "daoShare()": "88d19f1b", + "emergencyWithdrawERC20(address,uint256,address)": "e3d84d5e", + "getChainID()": "564b81ef", + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "lastRedeemed(address)": "abae2c4c", + "mint1t1DEI(uint256,uint256,uint256,bytes[])": "32ad1ee4", + "mintAlgorithmicDEI(uint256,uint256,uint256,bytes[])": "c6301e5d", + "mintFractionalDEI(uint256,uint256,uint256,uint256,uint256,bytes[])": "54f9769d", + "mintPaused()": "7e4831d3", + "minting_fee()": "c3355b8d", + "pausedPrice()": "c74ec56a", + "pool_ceiling()": "6526a12a", + "recollat_fee()": "fede5c9c", + "recollateralizeDEI((uint256,uint256,uint256[],uint256,uint256,bytes[]))": "928d2b31", + "recollateralizePaused()": "6d2c5615", + "redeem1t1DEI(uint256,uint256,uint256,bytes[])": "254cd2bd", + "redeemAlgorithmicDEI(uint256,uint256,uint256,bytes[])": "978b73b5", + "redeemCollateralBalances(address)": "08a7493d", + "redeemDEUSBalances(address)": "3b92da47", + "redeemFractionalDEI(uint256,uint256,uint256,uint256,bytes[])": "eb2d7461", + "redeemPaused()": "b235d468", + "redemption_delay()": "15128425", + "redemption_fee()": "cb73999f", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "setPoolParameters(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": "4ebbe762", + "toggleBuyBack()": "50c9ecd9", + "toggleMinting()": "7d55094d", + "toggleRecollateralize()": "42d15aec", + "toggleRedeeming()": "daa50485", + "unclaimedPoolCollateral()": "7b0461e9", + "unclaimedPoolDEUS()": "3648b7dc" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dei_contract_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_deus_contract_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_collateral_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_trusty_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_admin_address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pool_ceiling\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_library\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"toggled\",\"type\":\"bool\"}],\"name\":\"BuybackToggled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"toggled\",\"type\":\"bool\"}],\"name\":\"MintingToggled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_ceiling\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_bonus_rate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_redemption_delay\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_mint_fee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_redeem_fee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_buyback_fee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_recollat_fee\",\"type\":\"uint256\"}],\"name\":\"PoolParametersSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"toggled\",\"type\":\"bool\"}],\"name\":\"RecollateralizeToggled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"toggled\",\"type\":\"bool\"}],\"name\":\"RedeemingToggled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"daoShare\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"daoShareCollected\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DAI_address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DAO_SHARE_COLLECTOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PARAMETER_SETTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRUSTY_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"collat_usd_price\",\"type\":\"uint256[]\"}],\"name\":\"availableExcessCollatDV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bonus_rate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"DEUS_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"collateral_price\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"buyBackDEUS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"buyBackPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"buyback_fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"collat_usd_price\",\"type\":\"uint256\"}],\"name\":\"collatDollarBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"collectDaoShare\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectRedemption\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"daoShare\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"emergencyWithdrawERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"lastRedeemed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"collateral_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateral_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"mint1t1DEI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dei_amount_d18\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deus_amount_d18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"mintAlgorithmicDEI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dei_amount_d18\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"collateral_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deus_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateral_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"mintFractionalDEI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"mint_amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minting_fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pausedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pool_ceiling\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recollat_fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"collateral_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pool_collateral_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"collateral_price\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"internalType\":\"struct DEIPool.RecollateralizeDEI\",\"name\":\"inputs\",\"type\":\"tuple\"}],\"name\":\"recollateralizeDEI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recollateralizePaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"DEI_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateral_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"redeem1t1DEI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"DEI_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"redeemAlgorithmicDEI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"redeemCollateralBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"redeemDEUSBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"DEI_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateral_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"redeemFractionalDEI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeemPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redemption_delay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redemption_fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"new_ceiling\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_bonus_rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_redemption_delay\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_mint_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_redeem_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_buyback_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_recollat_fee\",\"type\":\"uint256\"}],\"name\":\"setPoolParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleBuyBack\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleMinting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleRecollateralize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleRedeeming\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unclaimedPoolCollateral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unclaimedPoolDEUS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/DEI/Pools/Pool_DAI.sol\":\"Pool_DAI\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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 payable(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}\",\"keccak256\":\"0x60d51a32063a4975dbf9433d38f5849173527da72f007c38053274e06698cb54\",\"license\":\"MIT\"},\"contracts/DEI/IDEI.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\n\\ninterface IDEIStablecoin {\\n function name() external view returns (string memory);\\n function symbol() external view returns (string memory);\\n function totalSupply() external view returns (uint256);\\n function global_collateral_ratio() external view returns (uint256);\\n function dei_pools(address _address) external view returns (bool);\\n function dei_pools_array() external view returns (address[] memory);\\n function verify_price(bytes32 sighash, bytes[] calldata sigs) external view returns (bool);\\n function dei_info(uint256[] memory collat_usd_price) external view returns (uint256, uint256, uint256);\\n function getChainID() external view returns (uint256);\\n function globalCollateralValue(uint256[] memory collat_usd_price) external view returns (uint256);\\n function refreshCollateralRatio(uint deus_price, uint dei_price, uint256 expire_block, bytes[] calldata sigs) external;\\n function useGrowthRatio(bool _use_growth_ratio) external;\\n function setGrowthRatioBands(uint256 _GR_top_band, uint256 _GR_bottom_band) external;\\n function setPriceBands(uint256 _top_band, uint256 _bottom_band) external;\\n function activateDIP(bool _activate) external;\\n function pool_burn_from(address b_address, uint256 b_amount) external;\\n function pool_mint(address m_address, uint256 m_amount) external;\\n function addPool(address pool_address) external;\\n function removePool(address pool_address) external;\\n function setNameAndSymbol(string memory _name, string memory _symbol) external;\\n function setOracle(address _oracle) external;\\n function setDEIStep(uint256 _new_step) external;\\n function setReserveTracker(address _reserve_tracker_address) external;\\n function setRefreshCooldown(uint256 _new_cooldown) external;\\n function setDEUSAddress(address _deus_address) external;\\n function toggleCollateralRatio() external;\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x0c16e210870801fd11bac76f0cddbe1f61b19f18eb75a648144da3cba5f5f035\",\"license\":\"GPL-2.0-or-later\"},\"contracts/DEI/Pools/DEIPool.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity ^0.8.0;\\npragma abicoder v2;\\n// =================================================================================================================\\n// _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| |\\n// _| _| _| _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| |\\n// _| _| _|_|_| _| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_|_|_| |\\n// _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| |\\n// _|_|_| _|_|_|_| _|_| _|_|_| _| _| _| _| _|_|_| _| _| _|_|_| _|_|_| |\\n// =================================================================================================================\\n// ============================= DEIPool =============================\\n// ====================================================================\\n// DEUS Finance: https://github.com/DeusFinance\\n\\n// Primary Author(s)\\n// Travis Moore: https://github.com/FortisFortuna\\n// Jason Huan: https://github.com/jasonhuan\\n// Sam Kazemian: https://github.com/samkazemian\\n// Vahid Gh: https://github.com/vahid-dev\\n// SAYaghoubnejad: https://github.com/SAYaghoubnejad\\n\\n// Reviewer(s) / Contributor(s)\\n// Sam Sun: https://github.com/samczsun\\n\\nimport \\\"../../Uniswap/TransferHelper.sol\\\";\\nimport \\\"../../DEUS/IDEUS.sol\\\";\\nimport \\\"../../DEI/IDEI.sol\\\";\\nimport \\\"../../ERC20/ERC20.sol\\\";\\nimport \\\"../../Governance/AccessControl.sol\\\";\\nimport \\\"./DEIPoolLibrary.sol\\\";\\n\\ncontract DEIPool is AccessControl {\\n\\n\\tstruct RecollateralizeDEI {\\n\\t\\tuint256 collateral_amount;\\n\\t\\tuint256 pool_collateral_price;\\n\\t\\tuint256[] collateral_price;\\n\\t\\tuint256 deus_current_price;\\n\\t\\tuint256 expireBlock;\\n\\t\\tbytes[] sigs;\\n\\t}\\n\\n\\t/* ========== STATE VARIABLES ========== */\\n\\n\\tERC20 private collateral_token;\\n\\taddress private collateral_address;\\n\\n\\taddress private dei_contract_address;\\n\\taddress private deus_contract_address;\\n\\n\\tuint256 public minting_fee;\\n\\tuint256 public redemption_fee;\\n\\tuint256 public buyback_fee;\\n\\tuint256 public recollat_fee;\\n\\n\\tmapping(address => uint256) public redeemDEUSBalances;\\n\\tmapping(address => uint256) public redeemCollateralBalances;\\n\\tuint256 public unclaimedPoolCollateral;\\n\\tuint256 public unclaimedPoolDEUS;\\n\\tmapping(address => uint256) public lastRedeemed;\\n\\n\\t// Constants for various precisions\\n\\tuint256 private constant PRICE_PRECISION = 1e6;\\n\\tuint256 private constant COLLATERAL_RATIO_PRECISION = 1e6;\\n\\tuint256 private constant COLLATERAL_RATIO_MAX = 1e6;\\n\\n\\t// Number of decimals needed to get to 18\\n\\tuint256 private immutable missing_decimals;\\n\\n\\t// Pool_ceiling is the total units of collateral that a pool contract can hold\\n\\tuint256 public pool_ceiling = 0;\\n\\n\\t// Stores price of the collateral, if price is paused\\n\\tuint256 public pausedPrice = 0;\\n\\n\\t// Bonus rate on DEUS minted during recollateralizeDEI(); 6 decimals of precision, set to 0.75% on genesis\\n\\tuint256 public bonus_rate = 7500;\\n\\n\\t// Number of blocks to wait before being able to collectRedemption()\\n\\tuint256 public redemption_delay = 2;\\n\\n\\t// Minting/Redeeming fees goes to daoWallet\\n\\tuint256 public daoShare = 0;\\n\\n\\tDEIPoolLibrary poolLibrary;\\n\\n\\t// AccessControl Roles\\n\\tbytes32 private constant MINT_PAUSER = keccak256(\\\"MINT_PAUSER\\\");\\n\\tbytes32 private constant REDEEM_PAUSER = keccak256(\\\"REDEEM_PAUSER\\\");\\n\\tbytes32 private constant BUYBACK_PAUSER = keccak256(\\\"BUYBACK_PAUSER\\\");\\n\\tbytes32 private constant RECOLLATERALIZE_PAUSER = keccak256(\\\"RECOLLATERALIZE_PAUSER\\\");\\n\\tbytes32 public constant TRUSTY_ROLE = keccak256(\\\"TRUSTY_ROLE\\\");\\n\\tbytes32 public constant DAO_SHARE_COLLECTOR = keccak256(\\\"DAO_SHARE_COLLECTOR\\\");\\n\\tbytes32 public constant PARAMETER_SETTER_ROLE = keccak256(\\\"PARAMETER_SETTER_ROLE\\\");\\n\\n\\t// AccessControl state variables\\n\\tbool public mintPaused = false;\\n\\tbool public redeemPaused = false;\\n\\tbool public recollateralizePaused = false;\\n\\tbool public buyBackPaused = false;\\n\\n\\t/* ========== MODIFIERS ========== */\\n\\n\\tmodifier onlyTrusty() {\\n\\t\\trequire(\\n\\t\\t\\thasRole(TRUSTY_ROLE, msg.sender),\\n\\t\\t\\t\\\"POOL::you are not trusty\\\"\\n\\t\\t);\\n\\t\\t_;\\n\\t}\\n\\n\\tmodifier notRedeemPaused() {\\n\\t\\trequire(redeemPaused == false, \\\"POOL::Redeeming is paused\\\");\\n\\t\\t_;\\n\\t}\\n\\n\\tmodifier notMintPaused() {\\n\\t\\trequire(mintPaused == false, \\\"POOL::Minting is paused\\\");\\n\\t\\t_;\\n\\t}\\n\\n\\t/* ========== CONSTRUCTOR ========== */\\n\\n\\tconstructor(\\n\\t\\taddress _dei_contract_address,\\n\\t\\taddress _deus_contract_address,\\n\\t\\taddress _collateral_address,\\n\\t\\taddress _trusty_address,\\n\\t\\taddress _admin_address,\\n\\t\\tuint256 _pool_ceiling,\\n\\t\\taddress _library\\n\\t) {\\n\\t\\trequire(\\n\\t\\t\\t(_dei_contract_address != address(0)) &&\\n\\t\\t\\t\\t(_deus_contract_address != address(0)) &&\\n\\t\\t\\t\\t(_collateral_address != address(0)) &&\\n\\t\\t\\t\\t(_trusty_address != address(0)) &&\\n\\t\\t\\t\\t(_admin_address != address(0)) &&\\n\\t\\t\\t\\t(_library != address(0)),\\n\\t\\t\\t\\\"POOL::Zero address detected\\\"\\n\\t\\t);\\n\\t\\tpoolLibrary = DEIPoolLibrary(_library);\\n\\t\\tdei_contract_address = _dei_contract_address;\\n\\t\\tdeus_contract_address = _deus_contract_address;\\n\\t\\tcollateral_address = _collateral_address;\\n\\t\\tcollateral_token = ERC20(_collateral_address);\\n\\t\\tpool_ceiling = _pool_ceiling;\\n\\t\\tmissing_decimals = uint256(18) - collateral_token.decimals();\\n\\n\\t\\t_setupRole(DEFAULT_ADMIN_ROLE, _admin_address);\\n\\t\\t_setupRole(MINT_PAUSER, _trusty_address);\\n\\t\\t_setupRole(REDEEM_PAUSER, _trusty_address);\\n\\t\\t_setupRole(RECOLLATERALIZE_PAUSER, _trusty_address);\\n\\t\\t_setupRole(BUYBACK_PAUSER, _trusty_address);\\n\\t\\t_setupRole(TRUSTY_ROLE, _trusty_address);\\n\\t\\t_setupRole(PARAMETER_SETTER_ROLE, _trusty_address);\\n\\t}\\n\\n\\t/* ========== VIEWS ========== */\\n\\n\\t// Returns dollar value of collateral held in this DEI pool\\n\\tfunction collatDollarBalance(uint256 collat_usd_price) public view returns (uint256) {\\n\\t\\treturn ((collateral_token.balanceOf(address(this)) - unclaimedPoolCollateral) * (10**missing_decimals) * collat_usd_price) / (PRICE_PRECISION);\\n\\t}\\n\\n\\t// Returns the value of excess collateral held in this DEI pool, compared to what is needed to maintain the global collateral ratio\\n\\tfunction availableExcessCollatDV(uint256[] memory collat_usd_price) public view returns (uint256) {\\n\\t\\tuint256 total_supply = IDEIStablecoin(dei_contract_address).totalSupply();\\n\\t\\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\\n\\t\\tuint256 global_collat_value = IDEIStablecoin(dei_contract_address).globalCollateralValue(collat_usd_price);\\n\\n\\t\\tif (global_collateral_ratio > COLLATERAL_RATIO_PRECISION)\\n\\t\\t\\tglobal_collateral_ratio = COLLATERAL_RATIO_PRECISION; // Handles an overcollateralized contract with CR > 1\\n\\t\\tuint256 required_collat_dollar_value_d18 = (total_supply * global_collateral_ratio) / (COLLATERAL_RATIO_PRECISION); // Calculates collateral needed to back each 1 DEI with $1 of collateral at current collat ratio\\n\\t\\tif (global_collat_value > required_collat_dollar_value_d18)\\n\\t\\t\\treturn global_collat_value - required_collat_dollar_value_d18;\\n\\t\\telse return 0;\\n\\t}\\n\\n\\tfunction getChainID() public view returns (uint256) {\\n\\t\\tuint256 id;\\n\\t\\tassembly {\\n\\t\\t\\tid := chainid()\\n\\t\\t}\\n\\t\\treturn id;\\n\\t}\\n\\n\\t/* ========== PUBLIC FUNCTIONS ========== */\\n\\n\\t// We separate out the 1t1, fractional and algorithmic minting functions for gas efficiency\\n\\tfunction mint1t1DEI(uint256 collateral_amount, uint256 collateral_price, uint256 expireBlock, bytes[] calldata sigs)\\n\\t\\texternal\\n\\t\\tnotMintPaused\\n\\t\\treturns (uint256 dei_amount_d18)\\n\\t{\\n\\n\\t\\trequire(\\n\\t\\t\\tIDEIStablecoin(dei_contract_address).global_collateral_ratio() >= COLLATERAL_RATIO_MAX,\\n\\t\\t\\t\\\"Collateral ratio must be >= 1\\\"\\n\\t\\t);\\n\\t\\trequire(\\n\\t\\t\\tcollateral_token.balanceOf(address(this)) - unclaimedPoolCollateral + collateral_amount <= pool_ceiling,\\n\\t\\t\\t\\\"[Pool's Closed]: Ceiling reached\\\"\\n\\t\\t);\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"POOL::mint1t1DEI: signature is expired\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::mint1t1DEI: invalid signatures\\\");\\n\\n\\t\\tuint256 collateral_amount_d18 = collateral_amount * (10**missing_decimals);\\n\\t\\tdei_amount_d18 = poolLibrary.calcMint1t1DEI(\\n\\t\\t\\tcollateral_price,\\n\\t\\t\\tcollateral_amount_d18\\n\\t\\t); //1 DEI for each $1 worth of collateral\\n\\n\\t\\tdei_amount_d18 = (dei_amount_d18 * (uint256(1e6) - minting_fee)) / 1e6; //remove precision at the end\\n\\n\\t\\tTransferHelper.safeTransferFrom(\\n\\t\\t\\taddress(collateral_token),\\n\\t\\t\\tmsg.sender,\\n\\t\\t\\taddress(this),\\n\\t\\t\\tcollateral_amount\\n\\t\\t);\\n\\n\\t\\tdaoShare += dei_amount_d18 * minting_fee / 1e6;\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_mint(msg.sender, dei_amount_d18);\\n\\t}\\n\\n\\t// 0% collateral-backed\\n\\tfunction mintAlgorithmicDEI(\\n\\t\\tuint256 deus_amount_d18,\\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external notMintPaused returns (uint256 dei_amount_d18) {\\n\\t\\trequire(\\n\\t\\t\\tIDEIStablecoin(dei_contract_address).global_collateral_ratio() == 0,\\n\\t\\t\\t\\\"Collateral ratio must be 0\\\"\\n\\t\\t);\\n\\t\\trequire(expireBlock >= block.number, \\\"POOL::mintAlgorithmicDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(deus_contract_address, deus_current_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::mintAlgorithmicDEI: invalid signatures\\\");\\n\\n\\t\\tdei_amount_d18 = poolLibrary.calcMintAlgorithmicDEI(\\n\\t\\t\\tdeus_current_price, // X DEUS / 1 USD\\n\\t\\t\\tdeus_amount_d18\\n\\t\\t);\\n\\n\\t\\tdei_amount_d18 = (dei_amount_d18 * (uint256(1e6) - (minting_fee))) / (1e6);\\n\\t\\tdaoShare += dei_amount_d18 * minting_fee / 1e6;\\n\\n\\t\\tIDEUSToken(deus_contract_address).pool_burn_from(msg.sender, deus_amount_d18);\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_mint(msg.sender, dei_amount_d18);\\n\\t}\\n\\n\\t// Will fail if fully collateralized or fully algorithmic\\n\\t// > 0% and < 100% collateral-backed\\n\\tfunction mintFractionalDEI(\\n\\t\\tuint256 collateral_amount,\\n\\t\\tuint256 deus_amount,\\n\\t\\tuint256 collateral_price,\\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external notMintPaused returns (uint256 mint_amount) {\\n\\t\\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\\n\\t\\trequire(\\n\\t\\t\\tglobal_collateral_ratio < COLLATERAL_RATIO_MAX && global_collateral_ratio > 0,\\n\\t\\t\\t\\\"Collateral ratio needs to be between .000001 and .999999\\\"\\n\\t\\t);\\n\\t\\trequire(\\n\\t\\t\\tcollateral_token.balanceOf(address(this)) - unclaimedPoolCollateral + collateral_amount <= pool_ceiling,\\n\\t\\t\\t\\\"Pool ceiling reached, no more DEI can be minted with this collateral\\\"\\n\\t\\t);\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"POOL::mintFractionalDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, deus_contract_address, deus_current_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::mintFractionalDEI: invalid signatures\\\");\\n\\n\\t\\tDEIPoolLibrary.MintFD_Params memory input_params;\\n\\n\\t\\t// Blocking is just for solving stack depth problem\\n\\t\\t{\\n\\t\\t\\tuint256 collateral_amount_d18 = collateral_amount * (10**missing_decimals);\\n\\t\\t\\tinput_params = DEIPoolLibrary.MintFD_Params(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_current_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_amount_d18,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tglobal_collateral_ratio\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\t\\t}\\t\\t\\t\\t\\t\\t\\n\\n\\t\\tuint256 deus_needed;\\n\\t\\t(mint_amount, deus_needed) = poolLibrary.calcMintFractionalDEI(input_params);\\n\\t\\trequire(deus_needed <= deus_amount, \\\"Not enough DEUS inputted\\\");\\n\\t\\t\\n\\t\\tmint_amount = (mint_amount * (uint256(1e6) - minting_fee)) / (1e6);\\n\\n\\t\\tIDEUSToken(deus_contract_address).pool_burn_from(msg.sender, deus_needed);\\n\\t\\tTransferHelper.safeTransferFrom(\\n\\t\\t\\taddress(collateral_token),\\n\\t\\t\\tmsg.sender,\\n\\t\\t\\taddress(this),\\n\\t\\t\\tcollateral_amount\\n\\t\\t);\\n\\n\\t\\tdaoShare += mint_amount * minting_fee / 1e6;\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_mint(msg.sender, mint_amount);\\n\\t}\\n\\n\\t// Redeem collateral. 100% collateral-backed\\n\\tfunction redeem1t1DEI(uint256 DEI_amount, uint256 collateral_price, uint256 expireBlock, bytes[] calldata sigs)\\n\\t\\texternal\\n\\t\\tnotRedeemPaused\\n\\t{\\n\\t\\trequire(\\n\\t\\t\\tIDEIStablecoin(dei_contract_address).global_collateral_ratio() == COLLATERAL_RATIO_MAX,\\n\\t\\t\\t\\\"Collateral ratio must be == 1\\\"\\n\\t\\t);\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"POOL::mintAlgorithmicDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::redeem1t1DEI: invalid signatures\\\");\\n\\n\\t\\t// Need to adjust for decimals of collateral\\n\\t\\tuint256 DEI_amount_precision = DEI_amount / (10**missing_decimals);\\n\\t\\tuint256 collateral_needed = poolLibrary.calcRedeem1t1DEI(\\n\\t\\t\\tcollateral_price,\\n\\t\\t\\tDEI_amount_precision\\n\\t\\t);\\n\\n\\t\\tcollateral_needed = (collateral_needed * (uint256(1e6) - redemption_fee)) / (1e6);\\n\\t\\trequire(\\n\\t\\t\\tcollateral_needed <= collateral_token.balanceOf(address(this)) - unclaimedPoolCollateral,\\n\\t\\t\\t\\\"Not enough collateral in pool\\\"\\n\\t\\t);\\n\\n\\t\\tredeemCollateralBalances[msg.sender] = redeemCollateralBalances[msg.sender] + collateral_needed;\\n\\t\\tunclaimedPoolCollateral = unclaimedPoolCollateral + collateral_needed;\\n\\t\\tlastRedeemed[msg.sender] = block.number;\\n\\n\\t\\tdaoShare += DEI_amount * redemption_fee / 1e6;\\n\\t\\t// Move all external functions to the end\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_burn_from(msg.sender, DEI_amount);\\n\\t}\\n\\n\\t// Will fail if fully collateralized or algorithmic\\n\\t// Redeem DEI for collateral and DEUS. > 0% and < 100% collateral-backed\\n\\tfunction redeemFractionalDEI(\\n\\t\\tuint256 DEI_amount,\\n\\t\\tuint256 collateral_price, \\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external notRedeemPaused {\\n\\t\\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\\n\\t\\trequire(\\n\\t\\t\\tglobal_collateral_ratio < COLLATERAL_RATIO_MAX && global_collateral_ratio > 0,\\n\\t\\t\\t\\\"POOL::redeemFractionalDEI: Collateral ratio needs to be between .000001 and .999999\\\"\\n\\t\\t);\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"DEI::redeemFractionalDEI: signature is expired\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, deus_contract_address, deus_current_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::redeemFractionalDEI: invalid signatures\\\");\\n\\n\\t\\t// Blocking is just for solving stack depth problem\\n\\t\\tuint256 deus_amount;\\n\\t\\tuint256 collateral_amount;\\n\\t\\t{\\n\\t\\t\\tuint256 col_price_usd = collateral_price;\\n\\n\\t\\t\\tuint256 DEI_amount_post_fee = (DEI_amount * (uint256(1e6) - redemption_fee)) / (PRICE_PRECISION);\\n\\n\\t\\t\\tuint256 deus_dollar_value_d18 = DEI_amount_post_fee - ((DEI_amount_post_fee * global_collateral_ratio) / (PRICE_PRECISION));\\n\\t\\t\\tdeus_amount = deus_dollar_value_d18 * (PRICE_PRECISION) / (deus_current_price);\\n\\n\\t\\t\\t// Need to adjust for decimals of collateral\\n\\t\\t\\tuint256 DEI_amount_precision = DEI_amount_post_fee / (10**missing_decimals);\\n\\t\\t\\tuint256 collateral_dollar_value = (DEI_amount_precision * global_collateral_ratio) / PRICE_PRECISION;\\n\\t\\t\\tcollateral_amount = (collateral_dollar_value * PRICE_PRECISION) / (col_price_usd);\\n\\t\\t}\\n\\t\\trequire(\\n\\t\\t\\tcollateral_amount <= collateral_token.balanceOf(address(this)) - unclaimedPoolCollateral,\\n\\t\\t\\t\\\"Not enough collateral in pool\\\"\\n\\t\\t);\\n\\n\\t\\tredeemCollateralBalances[msg.sender] = redeemCollateralBalances[msg.sender] + collateral_amount;\\n\\t\\tunclaimedPoolCollateral = unclaimedPoolCollateral + collateral_amount;\\n\\n\\t\\tredeemDEUSBalances[msg.sender] = redeemDEUSBalances[msg.sender] + deus_amount;\\n\\t\\tunclaimedPoolDEUS = unclaimedPoolDEUS + deus_amount;\\n\\n\\t\\tlastRedeemed[msg.sender] = block.number;\\n\\n\\t\\tdaoShare += DEI_amount * redemption_fee / 1e6;\\n\\t\\t// Move all external functions to the end\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_burn_from(msg.sender, DEI_amount);\\n\\t\\tIDEUSToken(deus_contract_address).pool_mint(address(this), deus_amount);\\n\\t}\\n\\n\\t// Redeem DEI for DEUS. 0% collateral-backed\\n\\tfunction redeemAlgorithmicDEI(\\n\\t\\tuint256 DEI_amount,\\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external notRedeemPaused {\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).global_collateral_ratio() == 0, \\\"POOL::redeemAlgorithmicDEI: Collateral ratio must be 0\\\");\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"DEI::redeemAlgorithmicDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(deus_contract_address, deus_current_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::redeemAlgorithmicDEI: invalid signatures\\\");\\n\\n\\t\\tuint256 deus_dollar_value_d18 = DEI_amount;\\n\\n\\t\\tdeus_dollar_value_d18 = (deus_dollar_value_d18 * (uint256(1e6) - redemption_fee)) / 1e6; //apply fees\\n\\n\\t\\tuint256 deus_amount = (deus_dollar_value_d18 * (PRICE_PRECISION)) / deus_current_price;\\n\\n\\t\\tredeemDEUSBalances[msg.sender] = redeemDEUSBalances[msg.sender] + deus_amount;\\n\\t\\tunclaimedPoolDEUS = unclaimedPoolDEUS + deus_amount;\\n\\n\\t\\tlastRedeemed[msg.sender] = block.number;\\n\\n\\t\\tdaoShare += DEI_amount * redemption_fee / 1e6;\\n\\t\\t// Move all external functions to the end\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_burn_from(msg.sender, DEI_amount);\\n\\t\\tIDEUSToken(deus_contract_address).pool_mint(address(this), deus_amount);\\n\\t}\\n\\n\\t// After a redemption happens, transfer the newly minted DEUS and owed collateral from this pool\\n\\t// contract to the user. Redemption is split into two functions to prevent flash loans from being able\\n\\t// to take out DEI/collateral from the system, use an AMM to trade the new price, and then mint back into the system.\\n\\tfunction collectRedemption() external {\\n\\t\\trequire(\\n\\t\\t\\t(lastRedeemed[msg.sender] + redemption_delay) <= block.number,\\n\\t\\t\\t\\\"POOL::collectRedemption: Must wait for redemption_delay blocks before collecting redemption\\\"\\n\\t\\t);\\n\\t\\tbool sendDEUS = false;\\n\\t\\tbool sendCollateral = false;\\n\\t\\tuint256 DEUSAmount = 0;\\n\\t\\tuint256 CollateralAmount = 0;\\n\\n\\t\\t// Use Checks-Effects-Interactions pattern\\n\\t\\tif (redeemDEUSBalances[msg.sender] > 0) {\\n\\t\\t\\tDEUSAmount = redeemDEUSBalances[msg.sender];\\n\\t\\t\\tredeemDEUSBalances[msg.sender] = 0;\\n\\t\\t\\tunclaimedPoolDEUS = unclaimedPoolDEUS - DEUSAmount;\\n\\n\\t\\t\\tsendDEUS = true;\\n\\t\\t}\\n\\n\\t\\tif (redeemCollateralBalances[msg.sender] > 0) {\\n\\t\\t\\tCollateralAmount = redeemCollateralBalances[msg.sender];\\n\\t\\t\\tredeemCollateralBalances[msg.sender] = 0;\\n\\t\\t\\tunclaimedPoolCollateral = unclaimedPoolCollateral - CollateralAmount;\\n\\t\\t\\tsendCollateral = true;\\n\\t\\t}\\n\\n\\t\\tif (sendDEUS) {\\n\\t\\t\\tTransferHelper.safeTransfer(address(deus_contract_address), msg.sender, DEUSAmount);\\n\\t\\t}\\n\\t\\tif (sendCollateral) {\\n\\t\\t\\tTransferHelper.safeTransfer(\\n\\t\\t\\t\\taddress(collateral_token),\\n\\t\\t\\t\\tmsg.sender,\\n\\t\\t\\t\\tCollateralAmount\\n\\t\\t\\t);\\n\\t\\t}\\n\\t}\\n\\n\\t// When the protocol is recollateralizing, we need to give a discount of DEUS to hit the new CR target\\n\\t// Thus, if the target collateral ratio is higher than the actual value of collateral, minters get DEUS for adding collateral\\n\\t// This function simply rewards anyone that sends collateral to a pool with the same amount of DEUS + the bonus rate\\n\\t// Anyone can call this function to recollateralize the protocol and take the extra DEUS value from the bonus rate as an arb opportunity\\n\\tfunction recollateralizeDEI(RecollateralizeDEI memory inputs) external {\\n\\t\\trequire(recollateralizePaused == false, \\\"POOL::recollateralizeDEI: Recollateralize is paused\\\");\\n\\n\\t\\trequire(inputs.expireBlock >= block.number, \\\"POOL::recollateralizeDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_address, \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinputs.collateral_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_contract_address, \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinputs.deus_current_price, \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinputs.expireBlock,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tgetChainID()\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, inputs.sigs), \\\"POOL::recollateralizeDEI: invalid signatures\\\");\\n\\n\\t\\tuint256 collateral_amount_d18 = inputs.collateral_amount * (10**missing_decimals);\\n\\n\\t\\tuint256 dei_total_supply = IDEIStablecoin(dei_contract_address).totalSupply();\\n\\t\\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\\n\\t\\tuint256 global_collat_value = IDEIStablecoin(dei_contract_address).globalCollateralValue(inputs.collateral_price);\\n\\n\\t\\t(uint256 collateral_units, uint256 amount_to_recollat) = poolLibrary.calcRecollateralizeDEIInner(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_amount_d18,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinputs.collateral_price[inputs.collateral_price.length - 1], // pool collateral price exist in last index\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tglobal_collat_value,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdei_total_supply,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tglobal_collateral_ratio\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\tuint256 collateral_units_precision = collateral_units / (10**missing_decimals);\\n\\n\\t\\tuint256 deus_paid_back = (amount_to_recollat * (uint256(1e6) + bonus_rate - recollat_fee)) / inputs.deus_current_price;\\n\\n\\t\\tTransferHelper.safeTransferFrom(\\n\\t\\t\\taddress(collateral_token),\\n\\t\\t\\tmsg.sender,\\n\\t\\t\\taddress(this),\\n\\t\\t\\tcollateral_units_precision\\n\\t\\t);\\n\\t\\tIDEUSToken(deus_contract_address).pool_mint(msg.sender, deus_paid_back);\\n\\t}\\n\\n\\t// Function can be called by an DEUS holder to have the protocol buy back DEUS with excess collateral value from a desired collateral pool\\n\\t// This can also happen if the collateral ratio > 1\\n\\tfunction buyBackDEUS(\\n\\t\\tuint256 DEUS_amount,\\n\\t\\tuint256[] memory collateral_price,\\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external {\\n\\t\\trequire(buyBackPaused == false, \\\"POOL::buyBackDEUS: Buyback is paused\\\");\\n\\t\\trequire(expireBlock >= block.number, \\\"DEI::buyBackDEUS: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_address,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_contract_address,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_current_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\texpireBlock,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tgetChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::buyBackDEUS: invalid signatures\\\");\\n\\n\\t\\tDEIPoolLibrary.BuybackDEUS_Params memory input_params = DEIPoolLibrary.BuybackDEUS_Params(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tavailableExcessCollatDV(collateral_price),\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_current_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_price[collateral_price.length - 1], // pool collateral price exist in last index\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tDEUS_amount\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\tuint256 collateral_equivalent_d18 = (poolLibrary.calcBuyBackDEUS(input_params) * (uint256(1e6) - buyback_fee)) / (1e6);\\n\\t\\tuint256 collateral_precision = collateral_equivalent_d18 / (10**missing_decimals);\\n\\n\\t\\t// Give the sender their desired collateral and burn the DEUS\\n\\t\\tIDEUSToken(deus_contract_address).pool_burn_from(msg.sender, DEUS_amount);\\n\\t\\tTransferHelper.safeTransfer(\\n\\t\\t\\taddress(collateral_token),\\n\\t\\t\\tmsg.sender,\\n\\t\\t\\tcollateral_precision\\n\\t\\t);\\n\\t}\\n\\n\\t/* ========== RESTRICTED FUNCTIONS ========== */\\n\\n\\tfunction collectDaoShare(uint256 amount, address to) external {\\n\\t\\trequire(hasRole(DAO_SHARE_COLLECTOR, msg.sender));\\n\\t\\trequire(amount <= daoShare, \\\"amount<=daoShare\\\");\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_mint(to, amount);\\n\\t\\tdaoShare -= amount;\\n\\n\\t\\temit daoShareCollected(amount, to);\\n\\t}\\n\\n\\tfunction emergencyWithdrawERC20(address token, uint amount, address to) external onlyTrusty {\\n\\t\\tIERC20(token).transfer(to, amount);\\n\\t}\\n\\n\\tfunction toggleMinting() external {\\n\\t\\trequire(hasRole(MINT_PAUSER, msg.sender));\\n\\t\\tmintPaused = !mintPaused;\\n\\n\\t\\temit MintingToggled(mintPaused);\\n\\t}\\n\\n\\tfunction toggleRedeeming() external {\\n\\t\\trequire(hasRole(REDEEM_PAUSER, msg.sender));\\n\\t\\tredeemPaused = !redeemPaused;\\n\\n\\t\\temit RedeemingToggled(redeemPaused);\\n\\t}\\n\\n\\tfunction toggleRecollateralize() external {\\n\\t\\trequire(hasRole(RECOLLATERALIZE_PAUSER, msg.sender));\\n\\t\\trecollateralizePaused = !recollateralizePaused;\\n\\n\\t\\temit RecollateralizeToggled(recollateralizePaused);\\n\\t}\\n\\n\\tfunction toggleBuyBack() external {\\n\\t\\trequire(hasRole(BUYBACK_PAUSER, msg.sender));\\n\\t\\tbuyBackPaused = !buyBackPaused;\\n\\n\\t\\temit BuybackToggled(buyBackPaused);\\n\\t}\\n\\n\\t// Combined into one function due to 24KiB contract memory limit\\n\\tfunction setPoolParameters(\\n\\t\\tuint256 new_ceiling,\\n\\t\\tuint256 new_bonus_rate,\\n\\t\\tuint256 new_redemption_delay,\\n\\t\\tuint256 new_mint_fee,\\n\\t\\tuint256 new_redeem_fee,\\n\\t\\tuint256 new_buyback_fee,\\n\\t\\tuint256 new_recollat_fee\\n\\t) external {\\n\\t\\trequire(hasRole(PARAMETER_SETTER_ROLE, msg.sender), \\\"POOL: Caller is not PARAMETER_SETTER_ROLE\\\");\\n\\t\\tpool_ceiling = new_ceiling;\\n\\t\\tbonus_rate = new_bonus_rate;\\n\\t\\tredemption_delay = new_redemption_delay;\\n\\t\\tminting_fee = new_mint_fee;\\n\\t\\tredemption_fee = new_redeem_fee;\\n\\t\\tbuyback_fee = new_buyback_fee;\\n\\t\\trecollat_fee = new_recollat_fee;\\n\\n\\t\\temit PoolParametersSet(\\n\\t\\t\\tnew_ceiling,\\n\\t\\t\\tnew_bonus_rate,\\n\\t\\t\\tnew_redemption_delay,\\n\\t\\t\\tnew_mint_fee,\\n\\t\\t\\tnew_redeem_fee,\\n\\t\\t\\tnew_buyback_fee,\\n\\t\\t\\tnew_recollat_fee\\n\\t\\t);\\n\\t}\\n\\n\\t/* ========== EVENTS ========== */\\n\\n\\tevent PoolParametersSet(\\n\\t\\tuint256 new_ceiling,\\n\\t\\tuint256 new_bonus_rate,\\n\\t\\tuint256 new_redemption_delay,\\n\\t\\tuint256 new_mint_fee,\\n\\t\\tuint256 new_redeem_fee,\\n\\t\\tuint256 new_buyback_fee,\\n\\t\\tuint256 new_recollat_fee\\n\\t);\\n\\tevent daoShareCollected(uint256 daoShare, address to);\\n\\tevent MintingToggled(bool toggled);\\n\\tevent RedeemingToggled(bool toggled);\\n\\tevent RecollateralizeToggled(bool toggled);\\n\\tevent BuybackToggled(bool toggled);\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0xc714b5aaa2c0b0b8129e279d395e924d1ea17699f830b64250af9127e6026d21\",\"license\":\"GPL-2.0-or-later\"},\"contracts/DEI/Pools/DEIPoolLibrary.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.8.0;\\n\\ncontract DEIPoolLibrary {\\n\\n // Constants for various precisions\\n uint256 private constant PRICE_PRECISION = 1e6;\\n\\n constructor() {}\\n\\n // ================ Structs ================\\n // Needed to lower stack size\\n struct MintFD_Params {\\n uint256 deus_price_usd; \\n uint256 col_price_usd;\\n uint256 collateral_amount;\\n uint256 col_ratio;\\n }\\n\\n struct BuybackDEUS_Params {\\n uint256 excess_collateral_dollar_value_d18;\\n uint256 deus_price_usd;\\n uint256 col_price_usd;\\n uint256 DEUS_amount;\\n }\\n\\n // ================ Functions ================\\n\\n function calcMint1t1DEI(uint256 col_price, uint256 collateral_amount_d18) public pure returns (uint256) {\\n return (collateral_amount_d18 * col_price) / (1e6);\\n }\\n\\n function calcMintAlgorithmicDEI(uint256 deus_price_usd, uint256 deus_amount_d18) public pure returns (uint256) {\\n return (deus_amount_d18 * deus_price_usd) / (1e6);\\n }\\n\\n function calcMintFractionalDEI(MintFD_Params memory params) public pure returns (uint256, uint256) {\\n // Since solidity truncates division, every division operation must be the last operation in the equation to ensure minimum error\\n // The contract must check the proper ratio was sent to mint DEI. We do this by seeing the minimum mintable DEI based on each amount \\n uint256 c_dollar_value_d18;\\n \\n // Scoping for stack concerns\\n { \\n // USD amounts of the collateral and the DEUS\\n c_dollar_value_d18 = (params.collateral_amount * params.col_price_usd) / (1e6);\\n\\n }\\n uint calculated_deus_dollar_value_d18 = ((c_dollar_value_d18 * (1e6)) / params.col_ratio) - c_dollar_value_d18;\\n\\n uint calculated_deus_needed = (calculated_deus_dollar_value_d18 * (1e6)) / params.deus_price_usd;\\n\\n return (\\n c_dollar_value_d18 + calculated_deus_dollar_value_d18,\\n calculated_deus_needed\\n );\\n }\\n\\n function calcRedeem1t1DEI(uint256 col_price_usd, uint256 DEI_amount) public pure returns (uint256) {\\n return (DEI_amount * (1e6)) / col_price_usd;\\n }\\n\\n function calcBuyBackDEUS(BuybackDEUS_Params memory params) public pure returns (uint256) {\\n // If the total collateral value is higher than the amount required at the current collateral ratio then buy back up to the possible DEUS with the desired collateral\\n require(params.excess_collateral_dollar_value_d18 > 0, \\\"No excess collateral to buy back!\\\");\\n\\n // Make sure not to take more than is available\\n uint256 deus_dollar_value_d18 = (params.DEUS_amount * (params.deus_price_usd)) / (1e6);\\n require(deus_dollar_value_d18 <= params.excess_collateral_dollar_value_d18, \\\"You are trying to buy back more than the excess!\\\");\\n\\n // Get the equivalent amount of collateral based on the market value of DEUS provided \\n uint256 collateral_equivalent_d18 = (deus_dollar_value_d18 * (1e6)) / params.col_price_usd;\\n //collateral_equivalent_d18 = collateral_equivalent_d18.sub((collateral_equivalent_d18.mul(params.buyback_fee)).div(1e6));\\n\\n return collateral_equivalent_d18;\\n\\n }\\n\\n\\n // Returns value of collateral that must increase to reach recollateralization target (if 0 means no recollateralization)\\n function recollateralizeAmount(uint256 total_supply, uint256 global_collateral_ratio, uint256 global_collat_value) public pure returns (uint256) {\\n uint256 target_collat_value = (total_supply * global_collateral_ratio) / (1e6); // We want 18 decimals of precision so divide by 1e6; total_supply is 1e18 and global_collateral_ratio is 1e6\\n // Subtract the current value of collateral from the target value needed, if higher than 0 then system needs to recollateralize\\n return target_collat_value - global_collat_value; // If recollateralization is not needed, throws a subtraction underflow\\n }\\n\\n function calcRecollateralizeDEIInner(\\n uint256 collateral_amount, \\n uint256 col_price,\\n uint256 global_collat_value,\\n uint256 dei_total_supply,\\n uint256 global_collateral_ratio\\n ) public pure returns (uint256, uint256) {\\n uint256 collat_value_attempted = (collateral_amount * col_price) / (1e6);\\n uint256 effective_collateral_ratio = (global_collat_value * (1e6)) / dei_total_supply; //returns it in 1e6\\n uint256 recollat_possible = (global_collateral_ratio * dei_total_supply - (dei_total_supply * effective_collateral_ratio)) / (1e6);\\n\\n uint256 amount_to_recollat;\\n if(collat_value_attempted <= recollat_possible){\\n amount_to_recollat = collat_value_attempted;\\n } else {\\n amount_to_recollat = recollat_possible;\\n }\\n\\n return ((amount_to_recollat * (1e6)) / col_price, amount_to_recollat);\\n\\n }\\n\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x6c2db8a8f39e018d8beb032c29cb86e4c99766669e511f328fa8faf0b173966a\",\"license\":\"GPL-2.0-or-later\"},\"contracts/DEI/Pools/Pool_DAI.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.6.11;\\n\\nimport \\\"./DEIPool.sol\\\";\\n\\ncontract Pool_DAI is DEIPool {\\n address public DAI_address;\\n constructor(\\n address _dei_contract_address,\\n address _deus_contract_address,\\n address _collateral_address,\\n address _trusty_address,\\n address _admin_address,\\n uint256 _pool_ceiling,\\n address _library\\n ) \\n DEIPool(_dei_contract_address, _deus_contract_address, _collateral_address, _trusty_address, _admin_address, _pool_ceiling, _library)\\n public {\\n require(_collateral_address != address(0), \\\"Zero address detected\\\");\\n\\n _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());\\n DAI_address = _collateral_address;\\n }\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x7d2a47151dab097221f67a89a2f6044906113c7ae08dbaecb670d77a14fd68ec\",\"license\":\"GPL-2.0-or-later\"},\"contracts/DEUS/IDEUS.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\n\\ninterface IDEUSToken {\\n function name() external view returns (string memory);\\n function symbol() external view returns (string memory);\\n function pool_burn_from(address b_address, uint256 b_amount) external;\\n function pool_mint(address m_address, uint256 m_amount) external;\\n function mint(address to, uint256 amount) external;\\n function setDEIAddress(address dei_contract_address) external;\\n function setNameAndSymbol(string memory _name, string memory _symbol) external;\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x7be865a95630d427608efd14514c9875ed1a6d65e4b421eaf61c2d63f43b9eb7\",\"license\":\"GPL-2.0-or-later\"},\"contracts/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\n\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20Mintable}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * We have followed general OpenZeppelin guidelines: functions revert instead\\n * of returning `false` on failure. This behavior is nonetheless conventional\\n * and does not conflict with the expectations of ERC20 applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\n \\ncontract ERC20 is Context, IERC20 {\\n using SafeMath for uint256;\\n\\n mapping (address => uint256) private _balances;\\n\\n mapping (address => mapping (address => uint256)) private _allowances;\\n\\n uint256 private _totalSupply;\\n\\n string private _name;\\n string private _symbol;\\n uint8 private _decimals;\\n \\n /**\\n * @dev Sets the values for {name} and {symbol}, initializes {decimals} with\\n * a default value of 18.\\n *\\n * To select a different value for {decimals}, use {_setupDecimals}.\\n *\\n * All three of these values are immutable: they can only be set once during\\n * construction.\\n */\\n constructor (string memory __name, string memory __symbol) public {\\n _name = __name;\\n _symbol = __symbol;\\n _decimals = 18;\\n }\\n\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() public view returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev Returns the symbol of the token, usually a shorter version of the\\n * name.\\n */\\n function symbol() public view returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev Returns the number of decimals used to get its user representation.\\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\\n *\\n * Tokens usually opt for a value of 18, imitating the relationship between\\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\\n * called.\\n *\\n * NOTE: This information is only used for _display_ purposes: it in\\n * no way affects any of the arithmetic of the contract, including\\n * {IERC20-balanceOf} and {IERC20-transfer}.\\n */\\n function decimals() public view returns (uint8) {\\n return _decimals;\\n }\\n\\n /**\\n * @dev See {IERC20-totalSupply}.\\n */\\n function totalSupply() public view override returns (uint256) {\\n return _totalSupply;\\n }\\n\\n /**\\n * @dev See {IERC20-balanceOf}.\\n */\\n function balanceOf(address account) public view override returns (uint256) {\\n return _balances[account];\\n }\\n\\n /**\\n * @dev See {IERC20-transfer}.\\n *\\n * Requirements:\\n *\\n * - `recipient` cannot be the zero address.\\n * - the caller must have a balance of at least `amount`.\\n */\\n function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\\n _transfer(_msgSender(), recipient, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-allowance}.\\n */\\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n return _allowances[owner][spender];\\n }\\n\\n /**\\n * @dev See {IERC20-approve}.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.approve(address spender, uint256 amount)\\n */\\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n _approve(_msgSender(), spender, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-transferFrom}.\\n *\\n * Emits an {Approval} event indicating the updated allowance. This is not\\n * required by the EIP. See the note at the beginning of {ERC20};\\n *\\n * Requirements:\\n * - `sender` and `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n * - the caller must have allowance for `sender`'s tokens of at least\\n * `amount`.\\n */\\n function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {\\n _transfer(sender, recipient, amount);\\n _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \\\"ERC20: transfer amount exceeds allowance\\\"));\\n return true;\\n }\\n\\n /**\\n * @dev Atomically increases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\\n return true;\\n }\\n\\n /**\\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `spender` must have allowance for the caller of at least\\n * `subtractedValue`.\\n */\\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \\\"ERC20: decreased allowance below zero\\\"));\\n return true;\\n }\\n\\n /**\\n * @dev Moves tokens `amount` from `sender` to `recipient`.\\n *\\n * This is internal function is equivalent to {transfer}, and can be used to\\n * e.g. implement automatic token fees, slashing mechanisms, etc.\\n *\\n * Emits a {Transfer} event.\\n *\\n * Requirements:\\n *\\n * - `sender` cannot be the zero address.\\n * - `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n */\\n function _transfer(address sender, address recipient, uint256 amount) internal virtual {\\n require(sender != address(0), \\\"ERC20: transfer from the zero address\\\");\\n require(recipient != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(sender, recipient, amount);\\n\\n _balances[sender] = _balances[sender].sub(amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n _balances[recipient] = _balances[recipient].add(amount);\\n emit Transfer(sender, recipient, amount);\\n }\\n\\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n * the total supply.\\n *\\n * Emits a {Transfer} event with `from` set to the zero address.\\n *\\n * Requirements\\n *\\n * - `to` cannot be the zero address.\\n */\\n function _mint(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n _beforeTokenTransfer(address(0), account, amount);\\n\\n _totalSupply = _totalSupply.add(amount);\\n _balances[account] = _balances[account].add(amount);\\n emit Transfer(address(0), account, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from the caller.\\n *\\n * See {ERC20-_burn}.\\n */\\n function burn(uint256 amount) public virtual {\\n _burn(_msgSender(), amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, deducting from the caller's\\n * allowance.\\n *\\n * See {ERC20-_burn} and {ERC20-allowance}.\\n *\\n * Requirements:\\n *\\n * - the caller must have allowance for `accounts`'s tokens of at least\\n * `amount`.\\n */\\n function burnFrom(address account, uint256 amount) public virtual {\\n uint256 decreasedAllowance = allowance(account, _msgSender()).sub(amount, \\\"ERC20: burn amount exceeds allowance\\\");\\n\\n _approve(account, _msgSender(), decreasedAllowance);\\n _burn(account, amount);\\n }\\n\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, reducing the\\n * total supply.\\n *\\n * Emits a {Transfer} event with `to` set to the zero address.\\n *\\n * Requirements\\n *\\n * - `account` cannot be the zero address.\\n * - `account` must have at least `amount` tokens.\\n */\\n function _burn(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n _beforeTokenTransfer(account, address(0), amount);\\n\\n _balances[account] = _balances[account].sub(amount, \\\"ERC20: burn amount exceeds balance\\\");\\n _totalSupply = _totalSupply.sub(amount);\\n emit Transfer(account, address(0), amount);\\n }\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\\n *\\n * This is internal function is equivalent to `approve`, and can be used to\\n * e.g. set automatic allowances for certain subsystems, etc.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `owner` cannot be the zero address.\\n * - `spender` cannot be the zero address.\\n */\\n function _approve(address owner, address spender, uint256 amount) internal virtual {\\n require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n _allowances[owner][spender] = amount;\\n emit Approval(owner, spender, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`.`amount` is then deducted\\n * from the caller's allowance.\\n *\\n * See {_burn} and {_approve}.\\n */\\n function _burnFrom(address account, uint256 amount) internal virtual {\\n _burn(account, amount);\\n _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, \\\"ERC20: burn amount exceeds allowance\\\"));\\n }\\n\\n /**\\n * @dev Hook that is called before any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of `from`'s tokens\\n * will be to transferred to `to`.\\n * - when `from` is zero, `amount` tokens will be minted for `to`.\\n * - when `to` is zero, `amount` of `from`'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:using-hooks.adoc[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }\\n}\\n\",\"keccak256\":\"0x433b9ee195d0bd257219bc337ff8aac624282a826726b18fdb299de0e3d4149e\",\"license\":\"MIT\"},\"contracts/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {ERC20Detailed}.\\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\\n\",\"keccak256\":\"0x057bec1fafd7ca222117f41fcfb9c8dc1f61aa30e5a0222c981196e9113de7e6\",\"license\":\"MIT\"},\"contracts/Governance/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Utils/EnumerableSet.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\nimport \\\"../Common/Context.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it.\\n */\\nabstract contract AccessControl is Context {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n using Address for address;\\n\\n struct RoleData {\\n EnumerableSet.AddressSet members;\\n bytes32 adminRole;\\n }\\n\\n mapping (bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; //bytes32(uint256(0x4B437D01b575618140442A4975db38850e3f8f5f) << 96);\\n\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view returns (bool) {\\n return _roles[role].members.contains(account);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view returns (uint256) {\\n return _roles[role].members.length();\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view returns (address) {\\n return _roles[role].members.at(index);\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to grant\\\");\\n\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to revoke\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) public virtual {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);\\n _roles[role].adminRole = adminRole;\\n }\\n\\n function _grantRole(bytes32 role, address account) private {\\n if (_roles[role].members.add(account)) {\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n function _revokeRole(bytes32 role, address account) private {\\n if (_roles[role].members.remove(account)) {\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x749b2c0e515a59c6d03cf4908a252ebc5d2b482ca3fd7ec997d1143c302f4e89\",\"license\":\"MIT\"},\"contracts/Math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\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\\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 * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\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 * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\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 * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (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) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts 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 * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts 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 * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\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}\",\"keccak256\":\"0x43a20f7cf4c4319f81450d53779455e88a7ab80bdfc43925156ed4083b74a180\",\"license\":\"MIT\"},\"contracts/Uniswap/TransferHelper.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\n// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false\\nlibrary TransferHelper {\\n function safeApprove(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('approve(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');\\n }\\n\\n function safeTransfer(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transfer(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');\\n }\\n\\n function safeTransferFrom(address token, address from, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');\\n }\\n\\n function safeTransferETH(address to, uint value) internal {\\n (bool success,) = to.call{value:value}(new bytes(0));\\n require(success, 'TransferHelper: ETH_TRANSFER_FAILED');\\n }\\n}\",\"keccak256\":\"0x2eb33792741584e83e0794a7493335b5dce9a9b675dda9e647ce29d88a40a196\",\"license\":\"MIT\"},\"contracts/Utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11 <0.9.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}\",\"keccak256\":\"0xe392046e85c78eea7d4c1237af52a5fc06c097b7a480ea4f20159670b4a582a4\",\"license\":\"MIT\"},\"contracts/Utils/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\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.0.0, only sets of type `address` (`AddressSet`) and `uint256`\\n * (`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 // 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(bytes20(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(bytes20(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(bytes20(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(bytes20(_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\",\"keccak256\":\"0x685f4133ba76f930e3761c1d1414d7f6e55dd40d58b4b210cb392662a6cbd27d\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 6023, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "_roles", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_bytes32,t_struct(RoleData)6018_storage)" + }, + { + "astId": 1559, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "collateral_token", + "offset": 0, + "slot": "1", + "type": "t_contract(ERC20)4919" + }, + { + "astId": 1561, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "collateral_address", + "offset": 0, + "slot": "2", + "type": "t_address" + }, + { + "astId": 1563, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "dei_contract_address", + "offset": 0, + "slot": "3", + "type": "t_address" + }, + { + "astId": 1565, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "deus_contract_address", + "offset": 0, + "slot": "4", + "type": "t_address" + }, + { + "astId": 1567, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "minting_fee", + "offset": 0, + "slot": "5", + "type": "t_uint256" + }, + { + "astId": 1569, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "redemption_fee", + "offset": 0, + "slot": "6", + "type": "t_uint256" + }, + { + "astId": 1571, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "buyback_fee", + "offset": 0, + "slot": "7", + "type": "t_uint256" + }, + { + "astId": 1573, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "recollat_fee", + "offset": 0, + "slot": "8", + "type": "t_uint256" + }, + { + "astId": 1577, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "redeemDEUSBalances", + "offset": 0, + "slot": "9", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 1581, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "redeemCollateralBalances", + "offset": 0, + "slot": "10", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 1583, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "unclaimedPoolCollateral", + "offset": 0, + "slot": "11", + "type": "t_uint256" + }, + { + "astId": 1585, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "unclaimedPoolDEUS", + "offset": 0, + "slot": "12", + "type": "t_uint256" + }, + { + "astId": 1589, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "lastRedeemed", + "offset": 0, + "slot": "13", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 1603, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "pool_ceiling", + "offset": 0, + "slot": "14", + "type": "t_uint256" + }, + { + "astId": 1606, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "pausedPrice", + "offset": 0, + "slot": "15", + "type": "t_uint256" + }, + { + "astId": 1609, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "bonus_rate", + "offset": 0, + "slot": "16", + "type": "t_uint256" + }, + { + "astId": 1612, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "redemption_delay", + "offset": 0, + "slot": "17", + "type": "t_uint256" + }, + { + "astId": 1615, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "daoShare", + "offset": 0, + "slot": "18", + "type": "t_uint256" + }, + { + "astId": 1618, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "poolLibrary", + "offset": 0, + "slot": "19", + "type": "t_contract(DEIPoolLibrary)3879" + }, + { + "astId": 1656, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "mintPaused", + "offset": 20, + "slot": "19", + "type": "t_bool" + }, + { + "astId": 1659, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "redeemPaused", + "offset": 21, + "slot": "19", + "type": "t_bool" + }, + { + "astId": 1662, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "recollateralizePaused", + "offset": 22, + "slot": "19", + "type": "t_bool" + }, + { + "astId": 1665, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "buyBackPaused", + "offset": 23, + "slot": "19", + "type": "t_bool" + }, + { + "astId": 3886, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "DAI_address", + "offset": 0, + "slot": "20", + "type": "t_address" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_bytes32)dyn_storage": { + "base": "t_bytes32", + "encoding": "dynamic_array", + "label": "bytes32[]", + "numberOfBytes": "32" + }, + "t_bool": { + "encoding": "inplace", + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "encoding": "inplace", + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(DEIPoolLibrary)3879": { + "encoding": "inplace", + "label": "contract DEIPoolLibrary", + "numberOfBytes": "20" + }, + "t_contract(ERC20)4919": { + "encoding": "inplace", + "label": "contract ERC20", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_uint256)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_mapping(t_bytes32,t_struct(RoleData)6018_storage)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => struct AccessControl.RoleData)", + "numberOfBytes": "32", + "value": "t_struct(RoleData)6018_storage" + }, + "t_mapping(t_bytes32,t_uint256)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_struct(AddressSet)11740_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.AddressSet", + "members": [ + { + "astId": 11739, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "_inner", + "offset": 0, + "slot": "0", + "type": "t_struct(Set)11554_storage" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleData)6018_storage": { + "encoding": "inplace", + "label": "struct AccessControl.RoleData", + "members": [ + { + "astId": 6015, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "members", + "offset": 0, + "slot": "0", + "type": "t_struct(AddressSet)11740_storage" + }, + { + "astId": 6017, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "adminRole", + "offset": 0, + "slot": "2", + "type": "t_bytes32" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Set)11554_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.Set", + "members": [ + { + "astId": 11549, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "_values", + "offset": 0, + "slot": "0", + "type": "t_array(t_bytes32)dyn_storage" + }, + { + "astId": 11553, + "contract": "contracts/DEI/Pools/Pool_DAI.sol:Pool_DAI", + "label": "_indexes", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ], + "numberOfBytes": "64" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/DEI/Pools/Pool_HUSD.sol": { + "Pool_HUSD": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_dei_contract_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_deus_contract_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_collateral_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_trusty_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_admin_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_pool_ceiling", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_library", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "BuybackToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "MintingToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "new_ceiling", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_bonus_rate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_redemption_delay", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_mint_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_redeem_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_buyback_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_recollat_fee", + "type": "uint256" + } + ], + "name": "PoolParametersSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "RecollateralizeToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "RedeemingToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "daoShare", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "daoShareCollected", + "type": "event" + }, + { + "inputs": [], + "name": "DAO_SHARE_COLLECTOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "HUSD_address", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PARAMETER_SETTER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TRUSTY_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "collat_usd_price", + "type": "uint256[]" + } + ], + "name": "availableExcessCollatDV", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bonus_rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEUS_amount", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "collateral_price", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "buyBackDEUS", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "buyBackPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "buyback_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collat_usd_price", + "type": "uint256" + } + ], + "name": "collatDollarBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "collectDaoShare", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "collectRedemption", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "daoShare", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "emergencyWithdrawERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getChainID", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "lastRedeemed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mint1t1DEI", + "outputs": [ + { + "internalType": "uint256", + "name": "dei_amount_d18", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deus_amount_d18", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mintAlgorithmicDEI", + "outputs": [ + { + "internalType": "uint256", + "name": "dei_amount_d18", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mintFractionalDEI", + "outputs": [ + { + "internalType": "uint256", + "name": "mint_amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "mintPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minting_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pausedPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pool_ceiling", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "recollat_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "pool_collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "collateral_price", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "internalType": "struct DEIPool.RecollateralizeDEI", + "name": "inputs", + "type": "tuple" + } + ], + "name": "recollateralizeDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "recollateralizePaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeem1t1DEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeemAlgorithmicDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "redeemCollateralBalances", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "redeemDEUSBalances", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeemFractionalDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "redeemPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "redemption_delay", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "redemption_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "new_ceiling", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_bonus_rate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_redemption_delay", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_mint_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_redeem_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_buyback_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_recollat_fee", + "type": "uint256" + } + ], + "name": "setPoolParameters", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleBuyBack", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleMinting", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleRecollateralize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleRedeeming", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unclaimedPoolCollateral", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unclaimedPoolDEUS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "getRoleAdmin(bytes32)": { + "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." + }, + "getRoleMember(bytes32,uint256)": { + "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information." + }, + "getRoleMemberCount(bytes32)": { + "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role." + }, + "grantRole(bytes32,address)": { + "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role." + }, + "hasRole(bytes32,address)": { + "details": "Returns `true` if `account` has been granted `role`." + }, + "renounceRole(bytes32,address)": { + "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`." + }, + "revokeRole(bytes32,address)": { + "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role." + } + }, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": { + "@_1843": { + "entryPoint": null, + "id": 1843, + "parameterSlots": 7, + "returnSlots": 0 + }, + "@_3988": { + "entryPoint": null, + "id": 3988, + "parameterSlots": 7, + "returnSlots": 0 + }, + "@_add_11596": { + "entryPoint": 1093, + "id": 11596, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_contains_11696": { + "entryPoint": null, + "id": 11696, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_6258": { + "entryPoint": 953, + "id": 6258, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_msgSender_444": { + "entryPoint": null, + "id": 444, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_setupRole_6209": { + "entryPoint": 937, + "id": 6209, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@add_11764": { + "entryPoint": 1056, + "id": 11764, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_address_fromMemory": { + "entryPoint": 1175, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256t_address_fromMemory": { + "entryPoint": 1204, + "id": null, + "parameterSlots": 2, + "returnSlots": 7 + }, + "abi_decode_tuple_t_uint8_fromMemory": { + "entryPoint": 1344, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_088ae2e6daf22183595f1e6a5f7779d3f2c298acab226e55240662c2e1b8abe6__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_2a5a9515df0747227c3d5efc42180f2060cd0f29e443cb46b69635b43998b954__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 1388, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:2107:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "74:117:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "84:22:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "99:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "93:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "93:13:39" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "84:5:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "169:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "178:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "181:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "171:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "171:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "171:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "128:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "139:5:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "154:3:39", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "159:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "150:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "150:11:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "163:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "146:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "146:19:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "135:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "135:31:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "125:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "125:42:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "118:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "118:50:39" + }, + "nodeType": "YulIf", + "src": "115:70:39" + } + ] + }, + "name": "abi_decode_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "53:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "64:5:39", + "type": "" + } + ], + "src": "14:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "379:515:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "426:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "435:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "438:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "428:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "428:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "428:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "400:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "409:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "396:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "396:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "421:3:39", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "392:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "392:33:39" + }, + "nodeType": "YulIf", + "src": "389:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "451:50:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "491:9:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "461:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "461:40:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "451:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "510:59:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "554:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "565:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "550:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "550:18:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "520:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "520:49:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "510:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "578:59:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "622:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "633:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "618:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "618:18:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "588:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "588:49:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "578:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "646:59:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "690:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "701:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "686:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "686:18:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "656:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "656:49:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "646:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "714:60:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "758:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "769:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "754:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "754:19:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "724:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "724:50:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "714:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "783:36:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "803:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "814:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "799:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "799:19:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "793:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "793:26:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "783:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "828:60:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "872:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "883:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "868:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "868:19:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "838:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "838:50:39" + }, + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "828:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "297:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "308:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "320:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "328:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "336:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "344:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "352:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "360:6:39", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "368:6:39", + "type": "" + } + ], + "src": "196:698:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1073:177:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1090:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1101:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1083:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1083:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1083:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1124:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1135:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1120:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1120:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1140:2:39", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1113:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1113:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1113:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1163:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1174:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1159:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1159:18:39" + }, + { + "hexValue": "504f4f4c3a3a5a65726f2061646472657373206465746563746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "1179:29:39", + "type": "", + "value": "POOL::Zero address detected" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1152:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1152:57:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1152:57:39" + }, + { + "nodeType": "YulAssignment", + "src": "1218:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1230:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1241:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1226:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1226:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1218:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_088ae2e6daf22183595f1e6a5f7779d3f2c298acab226e55240662c2e1b8abe6__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1050:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1064:4:39", + "type": "" + } + ], + "src": "899:351:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1334:194:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1380:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1389:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1392:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1382:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1382:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1382:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1355:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1364:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1351:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1351:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1376:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1347:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1347:32:39" + }, + "nodeType": "YulIf", + "src": "1344:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1405:29:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1424:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1418:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "1418:16:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1409:5:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1482:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1491:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1494:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1484:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1484:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1484:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1456:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1467:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1474:4:39", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1463:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1463:16:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1453:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1453:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1446:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1446:35:39" + }, + "nodeType": "YulIf", + "src": "1443:55:39" + }, + { + "nodeType": "YulAssignment", + "src": "1507:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1517:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1507:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint8_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1300:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1311:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1323:6:39", + "type": "" + } + ], + "src": "1255:273:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1582:173:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1612:111:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1633:1:39", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1640:3:39", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1645:10:39", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1636:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1636:20:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1626:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1626:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1626:31:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1677:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1680:4:39", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1670:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1670:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1670:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1705:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1708:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1698:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1698:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1698:15:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1598:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1601:1:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1595:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1595:8:39" + }, + "nodeType": "YulIf", + "src": "1592:131:39" + }, + { + "nodeType": "YulAssignment", + "src": "1732:17:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1744:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1747:1:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1740:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1740:9:39" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "1732:4:39" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "1564:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "1567:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "1573:4:39", + "type": "" + } + ], + "src": "1533:222:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1934:171:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1951:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1962:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1944:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1944:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1944:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1985:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1996:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1981:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1981:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2001:2:39", + "type": "", + "value": "21" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1974:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1974:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1974:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2024:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2035:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2020:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2020:18:39" + }, + { + "hexValue": "5a65726f2061646472657373206465746563746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "2040:23:39", + "type": "", + "value": "Zero address detected" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2013:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2013:51:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2013:51:39" + }, + { + "nodeType": "YulAssignment", + "src": "2073:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2085:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2096:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2081:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2081:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2073:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_2a5a9515df0747227c3d5efc42180f2060cd0f29e443cb46b69635b43998b954__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1911:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1925:4:39", + "type": "" + } + ], + "src": "1760:345:39" + } + ] + }, + "contents": "{\n { }\n function abi_decode_address_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256t_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n value0 := abi_decode_address_fromMemory(headStart)\n value1 := abi_decode_address_fromMemory(add(headStart, 32))\n value2 := abi_decode_address_fromMemory(add(headStart, 64))\n value3 := abi_decode_address_fromMemory(add(headStart, 96))\n value4 := abi_decode_address_fromMemory(add(headStart, 128))\n value5 := mload(add(headStart, 160))\n value6 := abi_decode_address_fromMemory(add(headStart, 192))\n }\n function abi_encode_tuple_t_stringliteral_088ae2e6daf22183595f1e6a5f7779d3f2c298acab226e55240662c2e1b8abe6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"POOL::Zero address detected\")\n tail := add(headStart, 96)\n }\n function abi_decode_tuple_t_uint8_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n value0 := value\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n diff := sub(x, y)\n }\n function abi_encode_tuple_t_stringliteral_2a5a9515df0747227c3d5efc42180f2060cd0f29e443cb46b69635b43998b954__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 21)\n mstore(add(headStart, 64), \"Zero address detected\")\n tail := add(headStart, 96)\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "60a06040526000600e819055600f819055611d4c60105560026011556012556013805463ffffffff60a01b191690553480156200003b57600080fd5b50604051620063c5380380620063c58339810160408190526200005e91620004b4565b868686868686866001600160a01b038716158015906200008657506001600160a01b03861615155b80156200009b57506001600160a01b03851615155b8015620000b057506001600160a01b03841615155b8015620000c557506001600160a01b03831615155b8015620000da57506001600160a01b03811615155b6200012c5760405162461bcd60e51b815260206004820152601b60248201527f504f4f4c3a3a5a65726f2061646472657373206465746563746564000000000060448201526064015b60405180910390fd5b601380546001600160a01b038084166001600160a01b031992831617909255600380548a8416908316179055600480548984169083161781556002805493891693831684179055600180549092168317909155600e8490556040805163313ce56760e01b8152905163313ce567928281019260209291908290030181865afa158015620001bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e3919062000540565b620001f39060ff1660126200056c565b60805262000203600084620003a9565b6200022f7fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b85620003a9565b6200025b7fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c385785620003a9565b620002877f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f85620003a9565b620002b37f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf85620003a9565b620002df7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c85620003a9565b6200030b7fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f24050985620003a9565b50505050506001600160a01b038716151591506200036e90505760405162461bcd60e51b815260206004820152601560248201527f5a65726f20616464726573732064657465637465640000000000000000000000604482015260640162000123565b6200037b600033620003a9565b5050601480546001600160a01b0319166001600160a01b039490941693909317909255506200059292505050565b620003b58282620003b9565b5050565b600082815260208181526040909120620003de91839062004ad062000420821b17901c565b15620003b55760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b60006200043c836001600160601b0319606085901b1662000445565b90505b92915050565b60008181526001830160205260408120546200048e575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200043f565b5060006200043f565b80516001600160a01b0381168114620004af57600080fd5b919050565b600080600080600080600060e0888a031215620004d057600080fd5b620004db8862000497565b9650620004eb6020890162000497565b9550620004fb6040890162000497565b94506200050b6060890162000497565b93506200051b6080890162000497565b925060a088015191506200053260c0890162000497565b905092959891949750929550565b6000602082840312156200055357600080fd5b815160ff811681146200056557600080fd5b9392505050565b6000828210156200058d57634e487b7160e01b600052601160045260246000fd5b500390565b608051615de6620005df60003960008181610cc1015281816115850152818161228101528181612afd01528181612def015281816134c9015281816139a001526147af0152615de66000f3fe608060405234801561001057600080fd5b506004361061032b5760003560e01c80637901330b116101b2578063b235d468116100f9578063ca15c873116100a2578063daa504851161007c578063daa50485146106f7578063e3d84d5e146106ff578063eb2d746114610712578063fede5c9c1461072557600080fd5b8063ca15c873146106c8578063cb73999f146106db578063d547741f146106e457600080fd5b8063c410ca1b116100d3578063c410ca1b14610699578063c6301e5d146106ac578063c74ec56a146106bf57600080fd5b8063b235d46814610657578063b6258aaa1461067d578063c3355b8d1461069057600080fd5b80639010d07c1161015b578063978b73b511610135578063978b73b51461061c578063a217fddf1461062f578063abae2c4c1461063757600080fd5b80639010d07c146105e357806391d14854146105f6578063928d2b311461060957600080fd5b80637e4831d31161018c5780637e4831d31461058d5780637f877f85146105b257806388d19f1b146105da57600080fd5b80637901330b146105695780637b0461e91461057c5780637d55094d1461058557600080fd5b806340e14b7811610276578063564b81ef1161021f5780636d2c5615116101f95780636d2c5615146104c65780636d82e314146104fd57806374347c441461052457600080fd5b8063564b81ef146104905780635de207cc146104965780636526a12a146104bd57600080fd5b80634ebbe762116102505780634ebbe7621461046257806350c9ecd91461047557806354f9769d1461047d57600080fd5b806340e14b781461043e57806342d15aec146104515780634c6349341461045957600080fd5b80632f2ff15d116102d85780633648b7dc116102b25780633648b7dc1461040257806336568abe1461040b5780633b92da471461041e57600080fd5b80632f2ff15d146103b557806332ad1ee4146103c857806334ddb95d146103db57600080fd5b806315128425116103095780631512842514610376578063248a9ca31461037f578063254cd2bd146103a257600080fd5b806308a7493d14610330578063101197c71461036357806312ace5a21461036c575b600080fd5b61035061033e366004615193565b600a6020526000908152604090205481565b6040519081526020015b60405180910390f35b61035060075481565b61037461072e565b005b61035060115481565b61035061038d3660046151ae565b60009081526020819052604090206002015490565b6103746103b0366004615213565b6108e7565b6103746103c3366004615274565b610fde565b6103506103d6366004615213565b611094565b6103507f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610350600c5481565b610374610419366004615274565b61176a565b61035061042c366004615193565b60096020526000908152604090205481565b61035061044c3660046153d6565b611819565b610374611a37565b61035060105481565b610374610470366004615413565b611afe565b610374611c3d565b61035061048b36600461545f565b611cfb565b46610350565b6103507fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f24050981565b610350600e5481565b6013546104ed90760100000000000000000000000000000000000000000000900460ff1681565b604051901515815260200161035a565b6103507f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e53081565b6014546105449073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161035a565b610374610577366004615274565b612586565b610350600b5481565b61037461271a565b6013546104ed9074010000000000000000000000000000000000000000900460ff1681565b6013546104ed9077010000000000000000000000000000000000000000000000900460ff1681565b61035060125481565b6105446105f13660046154d3565b6127d5565b6104ed610604366004615274565b6127f6565b6103746106173660046155f7565b61280e565b61037461062a366004615213565b612f1a565b610350600081565b610350610645366004615193565b600d6020526000908152604090205481565b6013546104ed907501000000000000000000000000000000000000000000900460ff1681565b61035061068b3660046151ae565b6134bd565b61035060055481565b6103746106a73660046156b0565b6135ac565b6103506106ba366004615213565b613a91565b610350600f5481565b6103506106d63660046151ae565b614079565b61035060065481565b6103746106f2366004615274565b614090565b610374614138565b61037461070d366004615737565b6141f4565b610374610720366004615773565b61431d565b61035060085481565b601154336000908152600d6020526040902054439161074c916157fa565b1115610805576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605b60248201527f504f4f4c3a3a636f6c6c656374526564656d7074696f6e3a204d75737420776160448201527f697420666f7220726564656d7074696f6e5f64656c617920626c6f636b73206260648201527f65666f726520636f6c6c656374696e6720726564656d7074696f6e0000000000608482015260a4015b60405180910390fd5b336000908152600960205260408120548190819081901561084d573360009081526009602052604081208054919055600c54909250610845908390615812565b600c55600193505b336000908152600a60205260409020541561088d5750336000908152600a602052604081208054919055600b54610885908290615812565b600b55600192505b83156108b7576004546108b79073ffffffffffffffffffffffffffffffffffffffff163384614b02565b82156108e1576001546108e19073ffffffffffffffffffffffffffffffffffffffff163383614b02565b50505050565b6013547501000000000000000000000000000000000000000000900460ff161561096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa1580156109df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a039190615829565b14610a6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203d3d203100000060448201526064016107fc565b43831015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90610bed9084908790879060040161588b565b602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e919061596d565b610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a72656465656d3174314445493a20696e76616c6964207369676e60448201527f617475726573000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000610ce77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b610cf19088615ac2565b6013546040517f068d54aa000000000000000000000000000000000000000000000000000000008152600481018990526024810183905291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063068d54aa90604401602060405180830381865afa158015610d6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d919190615829565b9050620f4240600654620f4240610da89190615812565b610db29083615afd565b610dbc9190615ac2565b600b546001546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152929350909173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e569190615829565b610e609190615812565b811115610ec9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a6020526040902054610ee49082906157fa565b336000908152600a6020526040902055600b54610f029082906157fa565b600b55336000908152600d60205260409020439055600654620f424090610f29908a615afd565b610f339190615ac2565b60126000828254610f4491906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae906044015b600060405180830381600087803b158015610fbc57600080fd5b505af1158015610fd0573d6000803e3d6000fd5b505050505050505050505050565b600082815260208190526040902060020154610ffa90336127f6565b611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084016107fc565b6110908282614c72565b5050565b60135460009074010000000000000000000000000000000000000000900460ff161561111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa15801561118e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b29190615829565b101561121a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203e3d203100000060448201526064016107fc565b600e54600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015289929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561128f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b39190615829565b6112bd9190615812565b6112c791906157fa565b111561132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5b506f6f6c277320436c6f7365645d3a204365696c696e67207265616368656460448201526064016107fc565b438410156113bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a6d696e743174314445493a207369676e6174757265206973206560448201527f787069726564000000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906114b29084908890889060040161588b565b602060405180830381865afa1580156114cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f3919061596d565b61157e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6d696e743174314445493a20696e76616c6964207369676e617460448201527f757265730000000000000000000000000000000000000000000000000000000060648201526084016107fc565b60006115ab7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6115b59089615afd565b6013546040517f882ab63a000000000000000000000000000000000000000000000000000000008152600481018a90526024810183905291925073ffffffffffffffffffffffffffffffffffffffff169063882ab63a90604401602060405180830381865afa15801561162c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116509190615829565b9250620f4240600554620f42406116679190615812565b6116719085615afd565b61167b9190615ac2565b6001549093506116a39073ffffffffffffffffffffffffffffffffffffffff1633308b614cd8565b620f4240600554846116b59190615afd565b6116bf9190615ac2565b601260008282546116d091906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561174757600080fd5b505af115801561175b573d6000803e3d6000fd5b50505050505095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016107fc565b6110908282614e76565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ad9190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561191e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119429190615829565b6003546040517f2480fcea00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690632480fcea9061199e908890600401615b3a565b602060405180830381865afa1580156119bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119df9190615829565b9050620f42408211156119f357620f424091505b6000620f4240611a038486615afd565b611a0d9190615ac2565b905080821115611a2b57611a218183615812565b9695505050505050565b50600095945050505050565b611a617f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f336127f6565b611a6a57600080fd5b6013805460ff76010000000000000000000000000000000000000000000080830482161581027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f2fda313d9b5bb0b73bd003153f2fccbc0dca49791fdd1184dfad82b44f54bd2e93611af49390049091161515815260200190565b60405180910390a1565b611b287fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f240509336127f6565b611bb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f504f4f4c3a2043616c6c6572206973206e6f7420504152414d455445525f534560448201527f545445525f524f4c45000000000000000000000000000000000000000000000060648201526084016107fc565b600e8790556010869055601185905560058490556006839055600782905560088190556040805188815260208101889052908101869052606081018590526080810184905260a0810183905260c081018290527f17fe98b66d27bd793ea01bd8a23a54acab8eeb167d9eb016a0c7cd71c573920c9060e00160405180910390a150505050505050565b611c677f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf336127f6565b611c7057600080fd5b6013805460ff7701000000000000000000000000000000000000000000000080830482161581027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f4f40fd1c59f78d7a2220da638cd9400daba01e57c7965702f390bf13133cc31f93611af49390049091161515815260200190565b60135460009074010000000000000000000000000000000000000000900460ff1615611d83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015611df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e179190615829565b9050620f424081108015611e2b5750600081115b611eb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f436f6c6c61746572616c20726174696f206e6565647320746f2062652062657460448201527f7765656e202e30303030303120616e64202e393939393939000000000000000060648201526084016107fc565b600e54600b546001546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528c929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f509190615829565b611f5a9190615812565b611f6491906157fa565b1115612019576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f506f6f6c206365696c696e6720726561636865642c206e6f206d6f7265204445908201527f492063616e206265206d696e7465642077697468207468697320636f6c6c617460648201527f6572616c00000000000000000000000000000000000000000000000000000000608482015260a4016107fc565b438510156120a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a207369676e61747560448201527f726520697320657870697265642e00000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018d90529390941b909316605484015260688301899052608883018890524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906121829084908990899060cc0161588b565b602060405180830381865afa15801561219f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c3919061596d565b61224f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a20696e76616c696460448201527f207369676e61747572657300000000000000000000000000000000000000000060648201526084016107fc565b61227a6040518060800160405280600081526020016000815260200160008152602001600081525090565b60006122a77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6122b1908d615afd565b604080516080810182528b8152602081018d9052808201929092526060820186905260135490517f537a30a70000000000000000000000000000000000000000000000000000000081529193506000925073ffffffffffffffffffffffffffffffffffffffff169063537a30a79061232d908590600401615b7e565b6040805180830381865afa158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190615ba9565b90955090508a8111156123dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e6f7420656e6f756768204445555320696e707574746564000000000000000060448201526064016107fc565b620f4240600554620f42406123f19190615812565b6123fb9087615afd565b6124059190615ac2565b600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820184905291965073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561247d57600080fd5b505af1158015612491573d6000803e3d6000fd5b50506001546124bb925073ffffffffffffffffffffffffffffffffffffffff16905033308f614cd8565b620f4240600554866124cd9190615afd565b6124d79190615ac2565b601260008282546124e891906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810187905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561255f57600080fd5b505af1158015612573573d6000803e3d6000fd5b5050505050505050979650505050505050565b6125b07f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e530336127f6565b6125b957600080fd5b601254821115612625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f616d6f756e743c3d64616f53686172650000000000000000000000000000000060448201526064016107fc565b6003546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018590529091169063b4f56b2690604401600060405180830381600087803b15801561269957600080fd5b505af11580156126ad573d6000803e3d6000fd5b5050505081601260008282546126c39190615812565b90915550506040805183815273ffffffffffffffffffffffffffffffffffffffff831660208201527f3a708f2f1c75b12457d207cf1e259ab9f87bbfccb29672903acf4661bd342e49910160405180910390a15050565b6127447fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b336127f6565b61274d57600080fd5b6013805460ff7401000000000000000000000000000000000000000080830482161581027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f6bdfe227d5db299c59aa56d5f846f40dbd73b271aaa78e18ed74fc3e00b8aa6b93611af49390049091161515815260200190565b60008281526020819052604081206127ed9083614edc565b90505b92915050565b60008281526020819052604081206127ed9083614ef2565b601354760100000000000000000000000000000000000000000000900460ff16156128bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a205265636f6c6c60448201527f61746572616c697a65206973207061757365640000000000000000000000000060648201526084016107fc565b438160800151101561294f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b6002546040828101516004546060850151608086015193516000956129989573ffffffffffffffffffffffffffffffffffffffff91821695949190911692914690602001615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052805160209091012060035460a08501517f6793f0ac00000000000000000000000000000000000000000000000000000000845291935073ffffffffffffffffffffffffffffffffffffffff1691636793f0ac91612a2991859190600401615c78565b602060405180830381865afa158015612a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6a919061596d565b612af6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6000612b237f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b8351612b2f9190615afd565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc49190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c599190615829565b60035460408088015190517f2480fcea00000000000000000000000000000000000000000000000000000000815292935060009273ffffffffffffffffffffffffffffffffffffffff90921691632480fcea91612cb891600401615b3a565b602060405180830381865afa158015612cd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf99190615829565b60135460408801518051929350600092839273ffffffffffffffffffffffffffffffffffffffff169163fc01106191899190612d3790600190615812565b81518110612d4757612d47615d36565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015260448101869052606481018890526084810187905260a4016040805180830381865afa158015612dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de39190615ba9565b90925090506000612e157f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b612e1f9084615ac2565b905060008960600151600854601054620f4240612e3c91906157fa565b612e469190615812565b612e509085615afd565b612e5a9190615ac2565b600154909150612e829073ffffffffffffffffffffffffffffffffffffffff16333085614cd8565b600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815233928101929092526024820183905273ffffffffffffffffffffffffffffffffffffffff169063b4f56b26906044015b600060405180830381600087803b158015612ef657600080fd5b505af1158015612f0a573d6000803e3d6000fd5b5050505050505050505050505050565b6013547501000000000000000000000000000000000000000000900460ff1615612fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561300d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130319190615829565b156130be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20436f6c6c60448201527f61746572616c20726174696f206d75737420626520300000000000000000000060648201526084016107fc565b4383101561314e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4445493a3a72656465656d416c676f726974686d69634445493a207369676e6160448201527f7475726520697320657870697265642e0000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906132419084908790879060040161588b565b602060405180830381865afa15801561325e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613282919061596d565b61330e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20696e766160448201527f6c6964207369676e61747572657300000000000000000000000000000000000060648201526084016107fc565b6006548690620f4240906133229082615812565b61332c9083615afd565b6133369190615ac2565b9050600086613348620f424084615afd565b6133529190615ac2565b336000908152600960205260409020549091506133709082906157fa565b33600090815260096020526040902055600c5461338e9082906157fa565b600c55336000908152600d60205260409020439055600654620f4240906133b5908a615afd565b6133bf9190615ac2565b601260008282546133d091906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561344757600080fd5b505af115801561345b573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820185905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401610fa2565b6000620f4240826134ef7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015613560573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135849190615829565b61358e9190615812565b6135989190615afd565b6135a29190615afd565b6127f09190615ac2565b60135477010000000000000000000000000000000000000000000000900460ff1615613659576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6275794261636b444555533a204275796261636b20697320706160448201527f757365640000000000000000000000000000000000000000000000000000000060648201526084016107fc565b438310156136e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4445493a3a6275794261636b444555533a207369676e6174757265206973206560448201527f7870697265642e0000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460045460009173ffffffffffffffffffffffffffffffffffffffff9081169188911687874660405160200161372696959493929190615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906137b59084908790879060040161588b565b602060405180830381865afa1580156137d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f6919061596d565b613882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f504f4f4c3a3a6275794261636b444555533a20696e76616c6964207369676e6160448201527f747572657300000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000604051806080016040528061389889611819565b81526020018781526020018860018a516138b29190615812565b815181106138c2576138c2615d36565b602002602001015181526020018981525090506000620f4240600754620f42406138ec9190615812565b6013546040517f3c04af9f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633c04af9f90613942908790600401615b7e565b602060405180830381865afa15801561395f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139839190615829565b61398d9190615afd565b6139979190615ac2565b905060006139c67f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6139d09083615ac2565b600480546040517fa8a778ae0000000000000000000000000000000000000000000000000000000081523392810192909252602482018d905291925073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015613a4857600080fd5b505af1158015613a5c573d6000803e3d6000fd5b5050600154613a85925073ffffffffffffffffffffffffffffffffffffffff1690503383614b02565b50505050505050505050565b60135460009074010000000000000000000000000000000000000000900460ff1615613b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613baa9190615829565b15613c11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f436f6c6c61746572616c20726174696f206d757374206265203000000000000060448201526064016107fc565b43841015613ca1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90613d949084908890889060040161588b565b602060405180830381865afa158015613db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dd5919061596d565b613e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6013546040517f14da4ee1000000000000000000000000000000000000000000000000000000008152600481018890526024810189905273ffffffffffffffffffffffffffffffffffffffff909116906314da4ee190604401602060405180830381865afa158015613ed7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613efb9190615829565b9150620f4240600554620f4240613f129190615812565b613f1c9084615afd565b613f269190615ac2565b9150620f424060055483613f3a9190615afd565b613f449190615ac2565b60126000828254613f5591906157fa565b9091555050600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820189905273ffffffffffffffffffffffffffffffffffffffff169063a8a778ae90604401600060405180830381600087803b158015613fcd57600080fd5b505af1158015613fe1573d6000803e3d6000fd5b50506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810186905273ffffffffffffffffffffffffffffffffffffffff909116925063b4f56b269150604401600060405180830381600087803b15801561405757600080fd5b505af115801561406b573d6000803e3d6000fd5b505050505095945050505050565b60008181526020819052604081206127f090614f31565b6000828152602081905260409020600201546140ac90336127f6565b61180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b650000000000000000000000000000000060648201526084016107fc565b6141627fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c3857336127f6565b61416b57600080fd5b6013805460ff750100000000000000000000000000000000000000000080830482161581027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f5860c5063a65e23cea4e2e2925f1a841bb6d1bc9615bd425f8dd084980b0514193611af49390049091161515815260200190565b61421e7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336127f6565b614284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f504f4f4c3a3a796f7520617265206e6f7420747275737479000000000000000060448201526064016107fc565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af11580156142f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e1919061596d565b6013547501000000000000000000000000000000000000000000900460ff16156143a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015614413573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144379190615829565b9050620f42408110801561444b5750600081115b6144fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20436f6c6c6160448201527f746572616c20726174696f206e6565647320746f206265206265747765656e2060648201527f2e30303030303120616e64202e39393939393900000000000000000000000000608482015260a4016107fc565b4384101561458d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4445493a3a72656465656d4672616374696f6e616c4445493a207369676e617460448201527f757265206973206578706972656400000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018c90529390941b909316605484015260688301889052608883018790524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906146669084908890889060cc0161588b565b602060405180830381865afa158015614683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146a7919061596d565b614733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20696e76616c60448201527f6964207369676e6174757265730000000000000000000000000000000000000060648201526084016107fc565b60008060008990506000620f4240600654620f42406147529190615812565b61475c908e615afd565b6147669190615ac2565b90506000620f42406147788884615afd565b6147829190615ac2565b61478c9083615812565b90508a61479c620f424083615afd565b6147a69190615ac2565b945060006147d57f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6147df9084615ac2565b90506000620f42406147f18a84615afd565b6147fb9190615ac2565b90508461480b620f424083615afd565b6148159190615ac2565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015292985090965073ffffffffffffffffffffffffffffffffffffffff1694506370a08231935060240191506148789050565b602060405180830381865afa158015614895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148b99190615829565b6148c39190615812565b81111561492c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a60205260409020546149479082906157fa565b336000908152600a6020526040902055600b546149659082906157fa565b600b55336000908152600960205260409020546149839083906157fa565b33600090815260096020526040902055600c546149a19083906157fa565b600c55336000908152600d60205260409020439055600654620f4240906149c8908c615afd565b6149d29190615ac2565b601260008282546149e391906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018c905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015614a5a57600080fd5b505af1158015614a6e573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820186905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401612edc565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16614f3b565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691614b999190615d65565b6000604051808303816000865af19150503d8060008114614bd6576040519150601f19603f3d011682016040523d82523d6000602084013e614bdb565b606091505b5091509150818015614c05575080511580614c05575080806020019051810190614c05919061596d565b614c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016107fc565b5050505050565b6000828152602081905260409020614c8a9082614ad0565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691614d779190615d65565b6000604051808303816000865af19150503d8060008114614db4576040519150601f19603f3d011682016040523d82523d6000602084013e614db9565b606091505b5091509150818015614de3575080511580614de3575080806020019051810190614de3919061596d565b614e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016107fc565b505050505050565b6000828152602081905260409020614e8e9082614f8a565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000614ee88383614fbc565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156127ed565b60006127f0825490565b6000818152600183016020526040812054614f82575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556127f0565b5060006127f0565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16615077565b8154600090821061504f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f647300000000000000000000000000000000000000000000000000000000000060648201526084016107fc565b82600001828154811061506457615064615d36565b9060005260206000200154905092915050565b6000818152600183016020526040812054801561516057600061509b600183615812565b85549091506000906150af90600190615812565b905060008660000182815481106150c8576150c8615d36565b90600052602060002001549050808760000184815481106150eb576150eb615d36565b6000918252602090912001556151028360016157fa565b6000828152600189016020526040902055865487908061512457615124615d81565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506127f0565b60009150506127f0565b803573ffffffffffffffffffffffffffffffffffffffff8116811461518e57600080fd5b919050565b6000602082840312156151a557600080fd5b6127ed8261516a565b6000602082840312156151c057600080fd5b5035919050565b60008083601f8401126151d957600080fd5b50813567ffffffffffffffff8111156151f157600080fd5b6020830191508360208260051b850101111561520c57600080fd5b9250929050565b60008060008060006080868803121561522b57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561525757600080fd5b615263888289016151c7565b969995985093965092949392505050565b6000806040838503121561528757600080fd5b823591506152976020840161516a565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff811182821017156152f2576152f26152a0565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561533f5761533f6152a0565b604052919050565b600067ffffffffffffffff821115615361576153616152a0565b5060051b60200190565b600082601f83011261537c57600080fd5b8135602061539161538c83615347565b6152f8565b82815260059290921b840181019181810190868411156153b057600080fd5b8286015b848110156153cb57803583529183019183016153b4565b509695505050505050565b6000602082840312156153e857600080fd5b813567ffffffffffffffff8111156153ff57600080fd5b61540b8482850161536b565b949350505050565b600080600080600080600060e0888a03121561542e57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080600080600080600060c0888a03121561547a57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a088013567ffffffffffffffff8111156154b457600080fd5b6154c08a828b016151c7565b989b979a50959850939692959293505050565b600080604083850312156154e657600080fd5b50508035926020909101359150565b6000601f838184011261550757600080fd5b8235602061551761538c83615347565b82815260059290921b8501810191818101908784111561553657600080fd5b8287015b848110156155eb57803567ffffffffffffffff8082111561555b5760008081fd5b818a0191508a603f8301126155705760008081fd5b85820135604082821115615586576155866152a0565b6155b5887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c850116016152f8565b92508183528c818386010111156155cc5760008081fd5b818185018985013750600090820187015284525091830191830161553a565b50979650505050505050565b60006020828403121561560957600080fd5b813567ffffffffffffffff8082111561562157600080fd5b9083019060c0828603121561563557600080fd5b61563d6152cf565b823581526020830135602082015260408301358281111561565d57600080fd5b6156698782860161536b565b604083015250606083013560608201526080830135608082015260a08301358281111561569557600080fd5b6156a1878286016154f5565b60a08301525095945050505050565b60008060008060008060a087890312156156c957600080fd5b86359550602087013567ffffffffffffffff808211156156e857600080fd5b6156f48a838b0161536b565b96506040890135955060608901359450608089013591508082111561571857600080fd5b5061572589828a016151c7565b979a9699509497509295939492505050565b60008060006060848603121561574c57600080fd5b6157558461516a565b92506020840135915061576a6040850161516a565b90509250925092565b60008060008060008060a0878903121561578c57600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff8111156157bf57600080fd5b61572589828a016151c7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561580d5761580d6157cb565b500190565b600082821015615824576158246157cb565b500390565b60006020828403121561583b57600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b8781101561595f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18a360301811261591657600080fd5b8901803567ffffffffffffffff81111561592f57600080fd5b8036038b131561593e57600080fd5b61594b8782888501615842565b9650505091830191908301906001016158b5565b509298975050505050505050565b60006020828403121561597f57600080fd5b8151801515811461598f57600080fd5b9392505050565b600181815b808511156159ef57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156159d5576159d56157cb565b808516156159e257918102915b93841c939080029061599b565b509250929050565b600082615a06575060016127f0565b81615a13575060006127f0565b8160018114615a295760028114615a3357615a4f565b60019150506127f0565b60ff841115615a4457615a446157cb565b50506001821b6127f0565b5060208310610133831016604e8410600b8410161715615a72575081810a6127f0565b615a7c8383615996565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615aae57615aae6157cb565b029392505050565b60006127ed83836159f7565b600082615af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615b3557615b356157cb565b500290565b6020808252825182820181905260009190848201906040850190845b81811015615b7257835183529284019291840191600101615b56565b50909695505050505050565b81518152602080830151908201526040808301519082015260608083015190820152608081016127f0565b60008060408385031215615bbc57600080fd5b505080516020909101519092909150565b60007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808960601b1683526014830188516020808b0160005b83811015615c2257815185529382019390820190600101615c06565b5050505060609790971b168652505060148401929092526034830152605482015260740192915050565b60005b83811015615c67578181015183820152602001615c4f565b838111156108e15750506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015615d28577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088870301845281518051808852615ceb81888a01898501615c4c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01696909601850195509284019290840190600101615ca6565b509398975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008251615d77818460208701615c4c565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212208bd28fcfbed5a24578c595e017ee34784a20bfadc993a68f08b4cf792d075a2c64736f6c634300080a0033", + "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0xE DUP2 SWAP1 SSTORE PUSH1 0xF DUP2 SWAP1 SSTORE PUSH2 0x1D4C PUSH1 0x10 SSTORE PUSH1 0x2 PUSH1 0x11 SSTORE PUSH1 0x12 SSTORE PUSH1 0x13 DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x63C5 CODESIZE SUB DUP1 PUSH3 0x63C5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x5E SWAP2 PUSH3 0x4B4 JUMP JUMPDEST DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND ISZERO DUP1 ISZERO SWAP1 PUSH3 0x86 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH3 0x9B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH3 0xB0 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH3 0xC5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH3 0xDA JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO ISZERO JUMPDEST PUSH3 0x12C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A5A65726F20616464726573732064657465637465640000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x3 DUP1 SLOAD DUP11 DUP5 AND SWAP1 DUP4 AND OR SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP10 DUP5 AND SWAP1 DUP4 AND OR DUP2 SSTORE PUSH1 0x2 DUP1 SLOAD SWAP4 DUP10 AND SWAP4 DUP4 AND DUP5 OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP3 AND DUP4 OR SWAP1 SWAP2 SSTORE PUSH1 0xE DUP5 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x313CE567 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH4 0x313CE567 SWAP3 DUP3 DUP2 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x1BD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1E3 SWAP2 SWAP1 PUSH3 0x540 JUMP JUMPDEST PUSH3 0x1F3 SWAP1 PUSH1 0xFF AND PUSH1 0x12 PUSH3 0x56C JUMP JUMPDEST PUSH1 0x80 MSTORE PUSH3 0x203 PUSH1 0x0 DUP5 PUSH3 0x3A9 JUMP JUMPDEST PUSH3 0x22F PUSH32 0xC65532185ED70B2E999433E2E9FAC124E083ACB13EC183A4E05944DA0792337B DUP6 PUSH3 0x3A9 JUMP JUMPDEST PUSH3 0x25B PUSH32 0xA84A5389AD41F9AAB0831B01E5384CAE76E7A7FD09131C206FF7927C201C3857 DUP6 PUSH3 0x3A9 JUMP JUMPDEST PUSH3 0x287 PUSH32 0x8118EEB5231A5FE4008A55B62860F6A0DB4F6C3AC04F8141927A9B3FEDD86D2F DUP6 PUSH3 0x3A9 JUMP JUMPDEST PUSH3 0x2B3 PUSH32 0x103DA79FF3755FF7A17A557D28B73D37CB4DE0B3C3CC02FA6C48DF0F35071FBF DUP6 PUSH3 0x3A9 JUMP JUMPDEST PUSH3 0x2DF PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP6 PUSH3 0x3A9 JUMP JUMPDEST PUSH3 0x30B PUSH32 0xE08E6E8E2E796F02419355C6FA268D1461FE6F2F34114A881A2DB47C0F240509 DUP6 PUSH3 0x3A9 JUMP JUMPDEST POP POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND ISZERO ISZERO SWAP2 POP PUSH3 0x36E SWAP1 POP JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5A65726F20616464726573732064657465637465640000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x123 JUMP JUMPDEST PUSH3 0x37B PUSH1 0x0 CALLER PUSH3 0x3A9 JUMP JUMPDEST POP POP PUSH1 0x14 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE POP PUSH3 0x592 SWAP3 POP POP POP JUMP JUMPDEST PUSH3 0x3B5 DUP3 DUP3 PUSH3 0x3B9 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH3 0x3DE SWAP2 DUP4 SWAP1 PUSH3 0x4AD0 PUSH3 0x420 DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST ISZERO PUSH3 0x3B5 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x43C DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH3 0x445 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH3 0x48E 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 PUSH3 0x43F JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0x43F JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x4DB DUP9 PUSH3 0x497 JUMP JUMPDEST SWAP7 POP PUSH3 0x4EB PUSH1 0x20 DUP10 ADD PUSH3 0x497 JUMP JUMPDEST SWAP6 POP PUSH3 0x4FB PUSH1 0x40 DUP10 ADD PUSH3 0x497 JUMP JUMPDEST SWAP5 POP PUSH3 0x50B PUSH1 0x60 DUP10 ADD PUSH3 0x497 JUMP JUMPDEST SWAP4 POP PUSH3 0x51B PUSH1 0x80 DUP10 ADD PUSH3 0x497 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD MLOAD SWAP2 POP PUSH3 0x532 PUSH1 0xC0 DUP10 ADD PUSH3 0x497 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x553 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH3 0x565 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH3 0x58D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x5DE6 PUSH3 0x5DF PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0xCC1 ADD MSTORE DUP2 DUP2 PUSH2 0x1585 ADD MSTORE DUP2 DUP2 PUSH2 0x2281 ADD MSTORE DUP2 DUP2 PUSH2 0x2AFD ADD MSTORE DUP2 DUP2 PUSH2 0x2DEF ADD MSTORE DUP2 DUP2 PUSH2 0x34C9 ADD MSTORE DUP2 DUP2 PUSH2 0x39A0 ADD MSTORE PUSH2 0x47AF ADD MSTORE PUSH2 0x5DE6 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 0x32B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7901330B GT PUSH2 0x1B2 JUMPI DUP1 PUSH4 0xB235D468 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xCA15C873 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xDAA50485 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xDAA50485 EQ PUSH2 0x6F7 JUMPI DUP1 PUSH4 0xE3D84D5E EQ PUSH2 0x6FF JUMPI DUP1 PUSH4 0xEB2D7461 EQ PUSH2 0x712 JUMPI DUP1 PUSH4 0xFEDE5C9C EQ PUSH2 0x725 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x6C8 JUMPI DUP1 PUSH4 0xCB73999F EQ PUSH2 0x6DB JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x6E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC410CA1B GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xC410CA1B EQ PUSH2 0x699 JUMPI DUP1 PUSH4 0xC6301E5D EQ PUSH2 0x6AC JUMPI DUP1 PUSH4 0xC74EC56A EQ PUSH2 0x6BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB235D468 EQ PUSH2 0x657 JUMPI DUP1 PUSH4 0xB6258AAA EQ PUSH2 0x67D JUMPI DUP1 PUSH4 0xC3355B8D EQ PUSH2 0x690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9010D07C GT PUSH2 0x15B JUMPI DUP1 PUSH4 0x978B73B5 GT PUSH2 0x135 JUMPI DUP1 PUSH4 0x978B73B5 EQ PUSH2 0x61C JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x62F JUMPI DUP1 PUSH4 0xABAE2C4C EQ PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9010D07C EQ PUSH2 0x5E3 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x5F6 JUMPI DUP1 PUSH4 0x928D2B31 EQ PUSH2 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7E4831D3 GT PUSH2 0x18C JUMPI DUP1 PUSH4 0x7E4831D3 EQ PUSH2 0x58D JUMPI DUP1 PUSH4 0x7F877F85 EQ PUSH2 0x5B2 JUMPI DUP1 PUSH4 0x88D19F1B EQ PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7901330B EQ PUSH2 0x569 JUMPI DUP1 PUSH4 0x7B0461E9 EQ PUSH2 0x57C JUMPI DUP1 PUSH4 0x7D55094D EQ PUSH2 0x585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x40E14B78 GT PUSH2 0x276 JUMPI DUP1 PUSH4 0x564B81EF GT PUSH2 0x21F JUMPI DUP1 PUSH4 0x6D2C5615 GT PUSH2 0x1F9 JUMPI DUP1 PUSH4 0x6D2C5615 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x6D82E314 EQ PUSH2 0x4FD JUMPI DUP1 PUSH4 0x74347C44 EQ PUSH2 0x524 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x564B81EF EQ PUSH2 0x490 JUMPI DUP1 PUSH4 0x5DE207CC EQ PUSH2 0x496 JUMPI DUP1 PUSH4 0x6526A12A EQ PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4EBBE762 GT PUSH2 0x250 JUMPI DUP1 PUSH4 0x4EBBE762 EQ PUSH2 0x462 JUMPI DUP1 PUSH4 0x50C9ECD9 EQ PUSH2 0x475 JUMPI DUP1 PUSH4 0x54F9769D EQ PUSH2 0x47D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x40E14B78 EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0x42D15AEC EQ PUSH2 0x451 JUMPI DUP1 PUSH4 0x4C634934 EQ PUSH2 0x459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D GT PUSH2 0x2D8 JUMPI DUP1 PUSH4 0x3648B7DC GT PUSH2 0x2B2 JUMPI DUP1 PUSH4 0x3648B7DC EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x40B JUMPI DUP1 PUSH4 0x3B92DA47 EQ PUSH2 0x41E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x3B5 JUMPI DUP1 PUSH4 0x32AD1EE4 EQ PUSH2 0x3C8 JUMPI DUP1 PUSH4 0x34DDB95D EQ PUSH2 0x3DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x15128425 GT PUSH2 0x309 JUMPI DUP1 PUSH4 0x15128425 EQ PUSH2 0x376 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x37F JUMPI DUP1 PUSH4 0x254CD2BD EQ PUSH2 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8A7493D EQ PUSH2 0x330 JUMPI DUP1 PUSH4 0x101197C7 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0x12ACE5A2 EQ PUSH2 0x36C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x350 PUSH2 0x33E CALLDATASIZE PUSH1 0x4 PUSH2 0x5193 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x350 PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x72E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x350 PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x38D CALLDATASIZE PUSH1 0x4 PUSH2 0x51AE JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x3B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x3C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0xFDE JUMP JUMPDEST PUSH2 0x350 PUSH2 0x3D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x1094 JUMP JUMPDEST PUSH2 0x350 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x419 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x176A JUMP JUMPDEST PUSH2 0x350 PUSH2 0x42C CALLDATASIZE PUSH1 0x4 PUSH2 0x5193 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x44C CALLDATASIZE PUSH1 0x4 PUSH2 0x53D6 JUMP JUMPDEST PUSH2 0x1819 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x1A37 JUMP JUMPDEST PUSH2 0x350 PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x470 CALLDATASIZE PUSH1 0x4 PUSH2 0x5413 JUMP JUMPDEST PUSH2 0x1AFE JUMP JUMPDEST PUSH2 0x374 PUSH2 0x1C3D JUMP JUMPDEST PUSH2 0x350 PUSH2 0x48B CALLDATASIZE PUSH1 0x4 PUSH2 0x545F JUMP JUMPDEST PUSH2 0x1CFB JUMP JUMPDEST CHAINID PUSH2 0x350 JUMP JUMPDEST PUSH2 0x350 PUSH32 0xE08E6E8E2E796F02419355C6FA268D1461FE6F2F34114A881A2DB47C0F240509 DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x35A JUMP JUMPDEST PUSH2 0x350 PUSH32 0xD4A2989857A24DE9C91E1DAFFE87D051D59F52B68729413D1EF656EC487E530 DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH2 0x544 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x35A JUMP JUMPDEST PUSH2 0x374 PUSH2 0x577 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x2586 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x271A JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH24 0x10000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH1 0x12 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x544 PUSH2 0x5F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x54D3 JUMP JUMPDEST PUSH2 0x27D5 JUMP JUMPDEST PUSH2 0x4ED PUSH2 0x604 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x617 CALLDATASIZE PUSH1 0x4 PUSH2 0x55F7 JUMP JUMPDEST PUSH2 0x280E JUMP JUMPDEST PUSH2 0x374 PUSH2 0x62A CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x2F1A JUMP JUMPDEST PUSH2 0x350 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x645 CALLDATASIZE PUSH1 0x4 PUSH2 0x5193 JUMP JUMPDEST PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x68B CALLDATASIZE PUSH1 0x4 PUSH2 0x51AE JUMP JUMPDEST PUSH2 0x34BD JUMP JUMPDEST PUSH2 0x350 PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x6A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x56B0 JUMP JUMPDEST PUSH2 0x35AC JUMP JUMPDEST PUSH2 0x350 PUSH2 0x6BA CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x3A91 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x6D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x51AE JUMP JUMPDEST PUSH2 0x4079 JUMP JUMPDEST PUSH2 0x350 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x6F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x4090 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x4138 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x70D CALLDATASIZE PUSH1 0x4 PUSH2 0x5737 JUMP JUMPDEST PUSH2 0x41F4 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x720 CALLDATASIZE PUSH1 0x4 PUSH2 0x5773 JUMP JUMPDEST PUSH2 0x431D JUMP JUMPDEST PUSH2 0x350 PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x11 SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD NUMBER SWAP2 PUSH2 0x74C SWAP2 PUSH2 0x57FA JUMP JUMPDEST GT ISZERO PUSH2 0x805 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A636F6C6C656374526564656D7074696F6E3A204D757374207761 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x697420666F7220726564656D7074696F6E5F64656C617920626C6F636B732062 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x65666F726520636F6C6C656374696E6720726564656D7074696F6E0000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 DUP2 SWAP1 DUP2 SWAP1 ISZERO PUSH2 0x84D JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SSTORE PUSH1 0xC SLOAD SWAP1 SWAP3 POP PUSH2 0x845 SWAP1 DUP4 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH1 0xC SSTORE PUSH1 0x1 SWAP4 POP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x88D JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SSTORE PUSH1 0xB SLOAD PUSH2 0x885 SWAP1 DUP3 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH1 0xB SSTORE PUSH1 0x1 SWAP3 POP JUMPDEST DUP4 ISZERO PUSH2 0x8B7 JUMPI PUSH1 0x4 SLOAD PUSH2 0x8B7 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP5 PUSH2 0x4B02 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x8E1 JUMPI PUSH1 0x1 SLOAD PUSH2 0x8E1 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP4 PUSH2 0x4B02 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x96D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH3 0xF4240 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA03 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST EQ PUSH2 0xA6A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D757374206265203D3D2031000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0xAFA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0xBED SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC2E SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0xCBA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D3174314445493A20696E76616C6964207369676E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6174757265730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCE7 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0xCF1 SWAP1 DUP9 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x68D54AA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x68D54AA SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD6D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD91 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 PUSH1 0x6 SLOAD PUSH3 0xF4240 PUSH2 0xDA8 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0xDB2 SWAP1 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0xDBC SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE32 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE56 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0xE60 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0xEC9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F75676820636F6C6C61746572616C20696E20706F6F6C000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xEE4 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xB SLOAD PUSH2 0xF02 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xB SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0xF29 SWAP1 DUP11 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0xF33 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xF44 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP11 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFD0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xFFA SWAP1 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1086 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F206772616E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x1090 DUP3 DUP3 PUSH2 0x4C72 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x111C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH3 0xF4240 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x118E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11B2 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST LT ISZERO PUSH2 0x121A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D757374206265203E3D2031000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP10 SWAP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x128F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12B3 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x12BD SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x12C7 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST GT ISZERO PUSH2 0x132F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5B506F6F6C277320436C6F7365645D3A204365696C696E672072656163686564 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x13BF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E743174314445493A207369676E61747572652069732065 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7870697265640000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x14B2 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14CF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14F3 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x157E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E743174314445493A20696E76616C6964207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7572657300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15AB PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x15B5 SWAP1 DUP10 PUSH2 0x5AFD JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x882AB63A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP11 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x882AB63A SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x162C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1650 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP3 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x1667 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x1671 SWAP1 DUP6 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x167B SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP4 POP PUSH2 0x16A3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER ADDRESS DUP12 PUSH2 0x4CD8 JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP5 PUSH2 0x16B5 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x16BF SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x16D0 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1747 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x175B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ PUSH2 0x180F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x1090 DUP3 DUP3 PUSH2 0x4E76 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1889 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18AD SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x191E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1942 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2480FCEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x2480FCEA SWAP1 PUSH2 0x199E SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B3A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19DF SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP3 GT ISZERO PUSH2 0x19F3 JUMPI PUSH3 0xF4240 SWAP2 POP JUMPDEST PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x1A03 DUP5 DUP7 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x1A0D SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1A2B JUMPI PUSH2 0x1A21 DUP2 DUP4 PUSH2 0x5812 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1A61 PUSH32 0x8118EEB5231A5FE4008A55B62860F6A0DB4F6C3AC04F8141927A9B3FEDD86D2F CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1A6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x2FDA313D9B5BB0B73BD003153F2FCCBC0DCA49791FDD1184DFAD82B44F54BD2E SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x1B28 PUSH32 0xE08E6E8E2E796F02419355C6FA268D1461FE6F2F34114A881A2DB47C0F240509 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1BB4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A2043616C6C6572206973206E6F7420504152414D455445525F5345 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x545445525F524F4C450000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0xE DUP8 SWAP1 SSTORE PUSH1 0x10 DUP7 SWAP1 SSTORE PUSH1 0x11 DUP6 SWAP1 SSTORE PUSH1 0x5 DUP5 SWAP1 SSTORE PUSH1 0x6 DUP4 SWAP1 SSTORE PUSH1 0x7 DUP3 SWAP1 SSTORE PUSH1 0x8 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x17FE98B66D27BD793EA01BD8A23A54ACAB8EEB167D9EB016A0C7CD71C573920C SWAP1 PUSH1 0xE0 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1C67 PUSH32 0x103DA79FF3755FF7A17A557D28B73D37CB4DE0B3C3CC02FA6C48DF0F35071FBF CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1C70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH24 0x10000000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x4F40FD1C59F78D7A2220DA638CD9400DABA01E57C7965702F390BF13133CC31F SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1D83 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DF3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E17 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP2 LT DUP1 ISZERO PUSH2 0x1E2B JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x1EB7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206E6565647320746F20626520626574 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7765656E202E30303030303120616E64202E3939393939390000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP13 SWAP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F50 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x1F5A SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x1F64 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST GT ISZERO PUSH2 0x2019 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x44 PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0x506F6F6C206365696C696E6720726561636865642C206E6F206D6F7265204445 SWAP1 DUP3 ADD MSTORE PUSH32 0x492063616E206265206D696E7465642077697468207468697320636F6C6C6174 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x6572616C00000000000000000000000000000000000000000000000000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP6 LT ISZERO PUSH2 0x20A9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E744672616374696F6E616C4445493A207369676E617475 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x726520697320657870697265642E000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x34 DUP4 ADD DUP14 SWAP1 MSTORE SWAP4 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x54 DUP5 ADD MSTORE PUSH1 0x68 DUP4 ADD DUP10 SWAP1 MSTORE PUSH1 0x88 DUP4 ADD DUP9 SWAP1 MSTORE CHAINID PUSH1 0xA8 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC8 DUP5 ADD SWAP2 DUP3 SWAP1 MSTORE DUP1 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 MSTORE SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x2182 SWAP1 DUP5 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0xCC ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x219F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x21C3 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x224F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E744672616374696F6E616C4445493A20696E76616C6964 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207369676E617475726573000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x227A PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22A7 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x22B1 SWAP1 DUP14 PUSH2 0x5AFD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE DUP12 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP14 SWAP1 MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x13 SLOAD SWAP1 MLOAD PUSH32 0x537A30A700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x537A30A7 SWAP1 PUSH2 0x232D SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2349 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x236D SWAP2 SWAP1 PUSH2 0x5BA9 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP1 POP DUP11 DUP2 GT ISZERO PUSH2 0x23DC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F756768204445555320696E7075747465640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x23F1 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x23FB SWAP1 DUP8 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x2405 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE SWAP2 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x247D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2491 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH2 0x24BB SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP CALLER ADDRESS DUP16 PUSH2 0x4CD8 JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP7 PUSH2 0x24CD SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x24D7 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x24E8 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x255F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2573 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x25B0 PUSH32 0xD4A2989857A24DE9C91E1DAFFE87D051D59F52B68729413D1EF656EC487E530 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x25B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x12 SLOAD DUP3 GT ISZERO PUSH2 0x2625 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x616D6F756E743C3D64616F536861726500000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x26C3 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x3A708F2F1C75B12457D207CF1E259AB9F87BBFCCB29672903ACF4661BD342E49 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x2744 PUSH32 0xC65532185ED70B2E999433E2E9FAC124E083ACB13EC183A4E05944DA0792337B CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x274D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH21 0x10000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x6BDFE227D5DB299C59AA56D5F846F40DBD73B271AAA78E18ED74FC3E00B8AA6B SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27ED SWAP1 DUP4 PUSH2 0x4EDC JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27ED SWAP1 DUP4 PUSH2 0x4EF2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x28BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A205265636F6C6C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x61746572616C697A652069732070617573656400000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP2 PUSH1 0x80 ADD MLOAD LT ISZERO PUSH2 0x294F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP3 DUP2 ADD MLOAD PUSH1 0x4 SLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x80 DUP7 ADD MLOAD SWAP4 MLOAD PUSH1 0x0 SWAP6 PUSH2 0x2998 SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP6 SWAP5 SWAP2 SWAP1 SWAP2 AND SWAP3 SWAP2 CHAINID SWAP1 PUSH1 0x20 ADD PUSH2 0x5BCD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH1 0xA0 DUP6 ADD MLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE SWAP2 SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x6793F0AC SWAP2 PUSH2 0x2A29 SWAP2 DUP6 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x5C78 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A46 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A6A SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x2AF6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A20696E76616C69 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x64207369676E6174757265730000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B23 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST DUP4 MLOAD PUSH2 0x2B2F SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BC4 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C35 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C59 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 DUP9 ADD MLOAD SWAP1 MLOAD PUSH32 0x2480FCEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x2480FCEA SWAP2 PUSH2 0x2CB8 SWAP2 PUSH1 0x4 ADD PUSH2 0x5B3A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2CD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2CF9 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 DUP9 ADD MLOAD DUP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0xFC011061 SWAP2 DUP10 SWAP2 SWAP1 PUSH2 0x2D37 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x2D47 JUMPI PUSH2 0x2D47 PUSH2 0x5D36 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x84 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DBF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2DE3 SWAP2 SWAP1 PUSH2 0x5BA9 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x2E15 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x2E1F SWAP1 DUP5 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP10 PUSH1 0x60 ADD MLOAD PUSH1 0x8 SLOAD PUSH1 0x10 SLOAD PUSH3 0xF4240 PUSH2 0x2E3C SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH2 0x2E46 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x2E50 SWAP1 DUP6 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x2E5A SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH2 0x2E82 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER ADDRESS DUP6 PUSH2 0x4CD8 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2EF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x2FA0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x300D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3031 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST ISZERO PUSH2 0x30BE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x36 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D416C676F726974686D69634445493A20436F6C6C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x61746572616C20726174696F206D757374206265203000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0x314E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A72656465656D416C676F726974686D69634445493A207369676E61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7475726520697320657870697265642E00000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x3241 SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x325E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3282 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x330E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D416C676F726974686D69634445493A20696E7661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964207369676E617475726573000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x6 SLOAD DUP7 SWAP1 PUSH3 0xF4240 SWAP1 PUSH2 0x3322 SWAP1 DUP3 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x332C SWAP1 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3336 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH2 0x3348 PUSH3 0xF4240 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3352 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x3370 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xC SLOAD PUSH2 0x338E SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xC SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0x33B5 SWAP1 DUP11 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x33BF SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x33D0 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP11 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3447 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x345B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH2 0xFA2 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xF4240 DUP3 PUSH2 0x34EF PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3560 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3584 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x358E SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x3598 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x35A2 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x27F0 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH24 0x10000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3659 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6275794261636B444555533A204275796261636B206973207061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7573656400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0x36E9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A6275794261636B444555533A207369676E61747572652069732065 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7870697265642E00000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 DUP9 SWAP2 AND DUP8 DUP8 CHAINID PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3726 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5BCD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x37B5 SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x37D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37F6 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x3882 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6275794261636B444555533A20696E76616C6964207369676E61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7475726573000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x3898 DUP10 PUSH2 0x1819 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 DUP11 MLOAD PUSH2 0x38B2 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x38C2 JUMPI PUSH2 0x38C2 PUSH2 0x5D36 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH1 0x7 SLOAD PUSH3 0xF4240 PUSH2 0x38EC SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x3C04AF9F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x3C04AF9F SWAP1 PUSH2 0x3942 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B7E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x395F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3983 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x398D SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3997 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x39C6 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x39D0 SWAP1 DUP4 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP14 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH2 0x3A85 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP CALLER DUP4 PUSH2 0x4B02 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3B19 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3BAA SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST ISZERO PUSH2 0x3C11 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D7573742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x3CA1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x3D94 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3DB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3DD5 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x3E61 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A20696E76616C69 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x64207369676E6174757265730000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x14DA4EE100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x14DA4EE1 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3ED7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3EFB SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP2 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x3F12 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x3F1C SWAP1 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3F26 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP2 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP4 PUSH2 0x3F3A SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3F44 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3F55 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3FCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3FE1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4057 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x406B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27F0 SWAP1 PUSH2 0x4F31 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x40AC SWAP1 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x180F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F207265766F6B6500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x4162 PUSH32 0xA84A5389AD41F9AAB0831B01E5384CAE76E7A7FD09131C206FF7927C201C3857 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x416B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH22 0x1000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x5860C5063A65E23CEA4E2E2925F1A841BB6D1BC9615BD425F8DD084980B05141 SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x421E PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x4284 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A796F7520617265206E6F74207472757374790000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE DUP5 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x42F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8E1 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x43A3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4413 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4437 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP2 LT DUP1 ISZERO PUSH2 0x444B JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x44FD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x53 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D4672616374696F6E616C4445493A20436F6C6C61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x746572616C20726174696F206E6565647320746F206265206265747765656E20 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x2E30303030303120616E64202E39393939393900000000000000000000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x458D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A72656465656D4672616374696F6E616C4445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7572652069732065787069726564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x34 DUP4 ADD DUP13 SWAP1 MSTORE SWAP4 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x54 DUP5 ADD MSTORE PUSH1 0x68 DUP4 ADD DUP9 SWAP1 MSTORE PUSH1 0x88 DUP4 ADD DUP8 SWAP1 MSTORE CHAINID PUSH1 0xA8 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC8 DUP5 ADD SWAP2 DUP3 SWAP1 MSTORE DUP1 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 MSTORE SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x4666 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0xCC ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4683 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x46A7 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x4733 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D4672616374696F6E616C4445493A20696E76616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6964207369676E61747572657300000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP10 SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH1 0x6 SLOAD PUSH3 0xF4240 PUSH2 0x4752 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x475C SWAP1 DUP15 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x4766 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x4778 DUP9 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x4782 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH2 0x478C SWAP1 DUP4 PUSH2 0x5812 JUMP JUMPDEST SWAP1 POP DUP11 PUSH2 0x479C PUSH3 0xF4240 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x47A6 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP5 POP PUSH1 0x0 PUSH2 0x47D5 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x47DF SWAP1 DUP5 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x47F1 DUP11 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x47FB SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x480B PUSH3 0xF4240 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x4815 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP3 SWAP9 POP SWAP1 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP5 POP PUSH4 0x70A08231 SWAP4 POP PUSH1 0x24 ADD SWAP2 POP PUSH2 0x4878 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4895 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x48B9 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x48C3 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x492C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F75676820636F6C6C61746572616C20696E20706F6F6C000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x4947 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xB SLOAD PUSH2 0x4965 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xB SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x4983 SWAP1 DUP4 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xC SLOAD PUSH2 0x49A1 SWAP1 DUP4 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xC SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0x49C8 SWAP1 DUP13 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x49D2 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x49E3 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP13 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4A5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4A6E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH2 0x2EDC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27ED DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x4F3B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 DUP8 AND SWAP2 PUSH2 0x4B99 SWAP2 SWAP1 PUSH2 0x5D65 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4BD6 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 0x4BDB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4C05 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4C05 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4C05 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x4C6B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F4641494C454400 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x4C8A SWAP1 DUP3 PUSH2 0x4AD0 JUMP JUMPDEST ISZERO PUSH2 0x1090 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 DUP9 AND SWAP2 PUSH2 0x4D77 SWAP2 SWAP1 PUSH2 0x5D65 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4DB4 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 0x4DB9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4DE3 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4DE3 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4DE3 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x4E6E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F46524F4D5F4641 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x494C454400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x4E8E SWAP1 DUP3 PUSH2 0x4F8A JUMP JUMPDEST ISZERO PUSH2 0x1090 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EE8 DUP4 DUP4 PUSH2 0x4FBC JUMP JUMPDEST PUSH1 0x60 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD ISZERO ISZERO PUSH2 0x27ED JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27F0 DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x4F82 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 0x27F0 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x27F0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27ED DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x5077 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x504F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E756D657261626C655365743A20696E646578206F7574206F6620626F756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6473000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x5064 JUMPI PUSH2 0x5064 PUSH2 0x5D36 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x5160 JUMPI PUSH1 0x0 PUSH2 0x509B PUSH1 0x1 DUP4 PUSH2 0x5812 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x50AF SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x5812 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x50C8 JUMPI PUSH2 0x50C8 PUSH2 0x5D36 JUMP 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 0x50EB JUMPI PUSH2 0x50EB PUSH2 0x5D36 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH2 0x5102 DUP4 PUSH1 0x1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x5124 JUMPI PUSH2 0x5124 PUSH2 0x5D81 JUMP 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 0x27F0 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x27F0 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x518E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x51A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27ED DUP3 PUSH2 0x516A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x51C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x51D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x51F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x520C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x522B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5257 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5263 DUP9 DUP3 DUP10 ADD PUSH2 0x51C7 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x5297 PUSH1 0x20 DUP5 ADD PUSH2 0x516A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x52F2 JUMPI PUSH2 0x52F2 PUSH2 0x52A0 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x533F JUMPI PUSH2 0x533F PUSH2 0x52A0 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5361 JUMPI PUSH2 0x5361 PUSH2 0x52A0 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x537C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x5391 PUSH2 0x538C DUP4 PUSH2 0x5347 JUMP JUMPDEST PUSH2 0x52F8 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP7 DUP5 GT ISZERO PUSH2 0x53B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x53CB JUMPI DUP1 CALLDATALOAD DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x53B4 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x53FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x540B DUP5 DUP3 DUP6 ADD PUSH2 0x536B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x542E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP6 CALLDATALOAD SWAP8 PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP8 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP7 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP7 POP PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP6 POP PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 ADD CALLDATALOAD SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x547A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x54B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x54C0 DUP11 DUP3 DUP12 ADD PUSH2 0x51C7 JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x54E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 DUP2 DUP5 ADD SLT PUSH2 0x5507 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x20 PUSH2 0x5517 PUSH2 0x538C DUP4 PUSH2 0x5347 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP6 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP8 DUP5 GT ISZERO PUSH2 0x5536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP8 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x55EB JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x555B JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP11 ADD SWAP2 POP DUP11 PUSH1 0x3F DUP4 ADD SLT PUSH2 0x5570 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP6 DUP3 ADD CALLDATALOAD PUSH1 0x40 DUP3 DUP3 GT ISZERO PUSH2 0x5586 JUMPI PUSH2 0x5586 PUSH2 0x52A0 JUMP JUMPDEST PUSH2 0x55B5 DUP9 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP13 DUP6 ADD AND ADD PUSH2 0x52F8 JUMP JUMPDEST SWAP3 POP DUP2 DUP4 MSTORE DUP13 DUP2 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x55CC JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP2 DUP6 ADD DUP10 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 SWAP1 DUP3 ADD DUP8 ADD MSTORE DUP5 MSTORE POP SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x553A JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x5621 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0xC0 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x5635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x563D PUSH2 0x52CF JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x565D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5669 DUP8 DUP3 DUP7 ADD PUSH2 0x536B JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x5695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x56A1 DUP8 DUP3 DUP7 ADD PUSH2 0x54F5 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x56C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x56E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x56F4 DUP11 DUP4 DUP12 ADD PUSH2 0x536B JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x5718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5725 DUP10 DUP3 DUP11 ADD PUSH2 0x51C7 JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x574C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5755 DUP5 PUSH2 0x516A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0x576A PUSH1 0x40 DUP6 ADD PUSH2 0x516A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x578C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x57BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5725 DUP10 DUP3 DUP11 ADD PUSH2 0x51C7 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x580D JUMPI PUSH2 0x580D PUSH2 0x57CB JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x5824 JUMPI PUSH2 0x5824 PUSH2 0x57CB JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x583B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD DUP6 DUP4 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP6 ADD MSTORE DUP2 DUP6 DUP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP1 POP PUSH1 0x60 DUP7 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP7 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x595F JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP8 DUP7 SUB ADD DUP4 MSTORE DUP2 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP11 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x5916 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 ADD DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x592F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP12 SGT ISZERO PUSH2 0x593E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x594B DUP8 DUP3 DUP9 DUP6 ADD PUSH2 0x5842 JUMP JUMPDEST SWAP7 POP POP POP SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x58B5 JUMP JUMPDEST POP SWAP3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x597F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x598F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH2 0x59EF JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x59D5 JUMPI PUSH2 0x59D5 PUSH2 0x57CB JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH2 0x59E2 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH2 0x599B JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5A06 JUMPI POP PUSH1 0x1 PUSH2 0x27F0 JUMP JUMPDEST DUP2 PUSH2 0x5A13 JUMPI POP PUSH1 0x0 PUSH2 0x27F0 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x5A29 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x5A33 JUMPI PUSH2 0x5A4F JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x27F0 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x5A44 JUMPI PUSH2 0x5A44 PUSH2 0x57CB JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x27F0 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x5A72 JUMPI POP DUP2 DUP2 EXP PUSH2 0x27F0 JUMP JUMPDEST PUSH2 0x5A7C DUP4 DUP4 PUSH2 0x5996 JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x5AAE JUMPI PUSH2 0x5AAE PUSH2 0x57CB JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27ED DUP4 DUP4 PUSH2 0x59F7 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5AF8 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x5B35 JUMPI PUSH2 0x5B35 PUSH2 0x57CB JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5B72 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x5B56 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD PUSH2 0x27F0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5BBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 DUP1 DUP10 PUSH1 0x60 SHL AND DUP4 MSTORE PUSH1 0x14 DUP4 ADD DUP9 MLOAD PUSH1 0x20 DUP1 DUP12 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C22 JUMPI DUP2 MLOAD DUP6 MSTORE SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5C06 JUMP JUMPDEST POP POP POP POP PUSH1 0x60 SWAP8 SWAP1 SWAP8 SHL AND DUP7 MSTORE POP POP PUSH1 0x14 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x34 DUP4 ADD MSTORE PUSH1 0x54 DUP3 ADD MSTORE PUSH1 0x74 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C67 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5C4F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x8E1 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD DUP5 DUP4 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP6 ADD MSTORE DUP2 DUP6 MLOAD DUP1 DUP5 MSTORE PUSH1 0x60 DUP7 ADD SWAP2 POP PUSH1 0x60 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP4 POP DUP3 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5D28 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP9 DUP8 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP9 MSTORE PUSH2 0x5CEB DUP2 DUP9 DUP11 ADD DUP10 DUP6 ADD PUSH2 0x5C4C JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP7 SWAP1 SWAP7 ADD DUP6 ADD SWAP6 POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5CA6 JUMP JUMPDEST POP SWAP4 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x5D77 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x5C4C JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP12 0xD2 DUP16 0xCF 0xBE 0xD5 LOG2 GASLIMIT PUSH25 0xC595E017EE34784A20BFADC993A68F08B4CF792D075A2C6473 PUSH16 0x6C634300080A00330000000000000000 ", + "sourceMap": "132:660:10:-:0;;;2874:1:7;2844:31;;;;2934:30;;;;3104:4;3076:32;;3216:1;3182:35;;3266:27;;3913:30;;;-1:-1:-1;;;;4025:33:7;;;201:589:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;470:21;493:22;517:19;538:15;555:14;571:13;586:8;-1:-1:-1;;;;;4687:35:7;;;;;;4686:83;;-1:-1:-1;;;;;;4732:36:7;;;;4686:83;:126;;;;-1:-1:-1;;;;;;4778:33:7;;;;4686:126;:165;;;;-1:-1:-1;;;;;;4821:29:7;;;;4686:165;:203;;;;-1:-1:-1;;;;;;4860:28:7;;;;4686:203;:235;;;;-1:-1:-1;;;;;;4898:22:7;;;;4686:235;4674:285;;;;-1:-1:-1;;;4674:285:7;;1101:2:39;4674:285:7;;;1083:21:39;1140:2;1120:18;;;1113:30;1179:29;1159:18;;;1152:57;1226:18;;4674:285:7;;;;;;;;;4963:11;:38;;-1:-1:-1;;;;;4963:38:7;;;-1:-1:-1;;;;;;4963:38:7;;;;;;;5005:20;:44;;;;;;;;;;;5053:21;:46;;;;;;;;;;;5103:18;:40;;;;;;;;;;;;4963:38;5147:45;;;;;;;;;;5196:12;:28;;;5261:27;;;-1:-1:-1;;;5261:27:7;;;;:25;;:27;;;;;;;;;;;;;5103:40;5261:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5247:41;;;;5255:2;5247:41;:::i;:::-;5228:60;;5293:46;1767:4:20;5324:14:7;5293:10;:46::i;:::-;5343:40;3390:24;5367:15;5343:10;:40::i;:::-;5387:42;3458:26;5413:15;5387:10;:42::i;:::-;5433:51;3609:35;5468:15;5433:10;:51::i;:::-;5488:43;3529:27;5515:15;5488:10;:43::i;:::-;5535:40;3685:24;5559:15;5535:10;:40::i;:::-;5579:50;3841:34;5613:15;5579:10;:50::i;:::-;-1:-1:-1;;;;;;;;;;625:33:10;::::1;::::0;::::1;::::0;-1:-1:-1;617:67:10::1;::::0;-1:-1:-1;617:67:10::1;;::::0;-1:-1:-1;;;617:67:10;;1962:2:39;617:67:10::1;::::0;::::1;1944:21:39::0;2001:2;1981:18;;;1974:30;2040:23;2020:18;;;2013:51;2081:18;;617:67:10::1;1760:345:39::0;617:67:10::1;695:44;1767:4:20;686:10:4::0;695::10::1;:44::i;:::-;-1:-1:-1::0;;749:12:10::1;:34:::0;;-1:-1:-1;;;;;;749:34:10::1;-1:-1:-1::0;;;;;749:34:10;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;132:660:10;;-1:-1:-1;;;132:660:10;6653:110:20;6731:25;6742:4;6748:7;6731:10;:25::i;:::-;6653:110;;:::o;7090:184::-;7163:6;:12;;;;;;;;;;;:33;;7188:7;;7163:24;;;;;:33;;:::i;:::-;7159:109;;;7217:40;;686:10:4;;-1:-1:-1;;;;;7217:40:20;;;7229:4;;7217:40;;;;;7090:184;;:::o;4866:141:38:-;4936:4;4959:41;4964:3;-1:-1:-1;;;;;;4984:14:38;;;;4976:23;4959:4;:41::i;:::-;4952:48;;4866:141;;;;;:::o;1613:404::-;1676:4;3874:19;;;:12;;;:19;;;;;;1692:319;;-1:-1:-1;1734:23:38;;;;;;;;:11;:23;;;;;;;;;;;;;1914:18;;1892:19;;;:12;;;:19;;;;;;:40;;;;1946:11;;1692:319;-1:-1:-1;1995:5:38;1988:12;;14:177:39;93:13;;-1:-1:-1;;;;;135:31:39;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:698::-;320:6;328;336;344;352;360;368;421:3;409:9;400:7;396:23;392:33;389:53;;;438:1;435;428:12;389:53;461:40;491:9;461:40;:::i;:::-;451:50;;520:49;565:2;554:9;550:18;520:49;:::i;:::-;510:59;;588:49;633:2;622:9;618:18;588:49;:::i;:::-;578:59;;656:49;701:2;690:9;686:18;656:49;:::i;:::-;646:59;;724:50;769:3;758:9;754:19;724:50;:::i;:::-;714:60;;814:3;803:9;799:19;793:26;783:36;;838:50;883:3;872:9;868:19;838:50;:::i;:::-;828:60;;196:698;;;;;;;;;;:::o;1255:273::-;1323:6;1376:2;1364:9;1355:7;1351:23;1347:32;1344:52;;;1392:1;1389;1382:12;1344:52;1424:9;1418:16;1474:4;1467:5;1463:16;1456:5;1453:27;1443:55;;1494:1;1491;1484:12;1443:55;1517:5;1255:273;-1:-1:-1;;;1255:273:39:o;1533:222::-;1573:4;1601:1;1598;1595:8;1592:131;;;1645:10;1640:3;1636:20;1633:1;1626:31;1680:4;1677:1;1670:15;1708:4;1705:1;1698:15;1592:131;-1:-1:-1;1740:9:39;;1533:222::o;1760:345::-;132:660:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@DAO_SHARE_COLLECTOR_1648": { + "entryPoint": null, + "id": 1648, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DEFAULT_ADMIN_ROLE_6026": { + "entryPoint": null, + "id": 6026, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@HUSD_address_3941": { + "entryPoint": null, + "id": 3941, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@PARAMETER_SETTER_ROLE_1653": { + "entryPoint": null, + "id": 1653, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@TRUSTY_ROLE_1643": { + "entryPoint": null, + "id": 1643, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_add_11596": { + "entryPoint": 20283, + "id": 11596, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_at_11736": { + "entryPoint": 20412, + "id": 11736, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_contains_11696": { + "entryPoint": null, + "id": 11696, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_6258": { + "entryPoint": 19570, + "id": 6258, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_length_11710": { + "entryPoint": null, + "id": 11710, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_msgSender_444": { + "entryPoint": null, + "id": 444, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_remove_11677": { + "entryPoint": 20599, + "id": 11677, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_revokeRole_6282": { + "entryPoint": 20086, + "id": 6282, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@add_11764": { + "entryPoint": 19152, + "id": 11764, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@at_11851": { + "entryPoint": 20188, + "id": 11851, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@availableExcessCollatDV_1935": { + "entryPoint": 6169, + "id": 1935, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@bonus_rate_1609": { + "entryPoint": null, + "id": 1609, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@buyBackDEUS_3334": { + "entryPoint": 13740, + "id": 3334, + "parameterSlots": 6, + "returnSlots": 0 + }, + "@buyBackPaused_1665": { + "entryPoint": null, + "id": 1665, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@buyback_fee_1571": { + "entryPoint": null, + "id": 1571, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@collatDollarBalance_1873": { + "entryPoint": 13501, + "id": 1873, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@collectDaoShare_3374": { + "entryPoint": 9606, + "id": 3374, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@collectRedemption_3047": { + "entryPoint": 1838, + "id": 3047, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@contains_11812": { + "entryPoint": 20210, + "id": 11812, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@daoShare_1615": { + "entryPoint": null, + "id": 1615, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@emergencyWithdrawERC20_3394": { + "entryPoint": 16884, + "id": 3394, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@getChainID_1947": { + "entryPoint": null, + "id": 1947, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getRoleAdmin_6121": { + "entryPoint": null, + "id": 6121, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMemberCount_6088": { + "entryPoint": 16505, + "id": 6088, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMember_6107": { + "entryPoint": 10197, + "id": 6107, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@grantRole_6147": { + "entryPoint": 4062, + "id": 6147, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@hasRole_6072": { + "entryPoint": 10230, + "id": 6072, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@lastRedeemed_1589": { + "entryPoint": null, + "id": 1589, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@length_11827": { + "entryPoint": 20273, + "id": 11827, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@mint1t1DEI_2089": { + "entryPoint": 4244, + "id": 2089, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@mintAlgorithmicDEI_2200": { + "entryPoint": 14993, + "id": 2200, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@mintFractionalDEI_2394": { + "entryPoint": 7419, + "id": 2394, + "parameterSlots": 7, + "returnSlots": 1 + }, + "@mintPaused_1656": { + "entryPoint": null, + "id": 1656, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@minting_fee_1567": { + "entryPoint": null, + "id": 1567, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@pausedPrice_1606": { + "entryPoint": null, + "id": 1606, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@pool_ceiling_1603": { + "entryPoint": null, + "id": 1603, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@recollat_fee_1573": { + "entryPoint": null, + "id": 1573, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@recollateralizeDEI_3208": { + "entryPoint": 10254, + "id": 3208, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@recollateralizePaused_1662": { + "entryPoint": null, + "id": 1662, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@redeem1t1DEI_2543": { + "entryPoint": 2279, + "id": 2543, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@redeemAlgorithmicDEI_2919": { + "entryPoint": 12058, + "id": 2919, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@redeemCollateralBalances_1581": { + "entryPoint": null, + "id": 1581, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@redeemDEUSBalances_1577": { + "entryPoint": null, + "id": 1577, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@redeemFractionalDEI_2778": { + "entryPoint": 17181, + "id": 2778, + "parameterSlots": 6, + "returnSlots": 0 + }, + "@redeemPaused_1659": { + "entryPoint": null, + "id": 1659, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@redemption_delay_1612": { + "entryPoint": null, + "id": 1612, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@redemption_fee_1569": { + "entryPoint": null, + "id": 1569, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@remove_11788": { + "entryPoint": 20362, + "id": 11788, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@renounceRole_6195": { + "entryPoint": 5994, + "id": 6195, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@revokeRole_6173": { + "entryPoint": 16528, + "id": 6173, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@safeTransferFrom_8741": { + "entryPoint": 19672, + "id": 8741, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@safeTransfer_8695": { + "entryPoint": 19202, + "id": 8695, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@setPoolParameters_3543": { + "entryPoint": 6910, + "id": 3543, + "parameterSlots": 7, + "returnSlots": 0 + }, + "@toggleBuyBack_3478": { + "entryPoint": 7229, + "id": 3478, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@toggleMinting_3415": { + "entryPoint": 10010, + "id": 3415, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@toggleRecollateralize_3457": { + "entryPoint": 6711, + "id": 3457, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@toggleRedeeming_3436": { + "entryPoint": 16696, + "id": 3436, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@unclaimedPoolCollateral_1583": { + "entryPoint": null, + "id": 1583, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@unclaimedPoolDEUS_1585": { + "entryPoint": null, + "id": 1585, + "parameterSlots": 0, + "returnSlots": 0 + }, + "abi_decode_address": { + "entryPoint": 20842, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_array_bytes_calldata_dyn_calldata": { + "entryPoint": 20935, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_array_bytes_dyn": { + "entryPoint": 21749, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_array_uint256_dyn": { + "entryPoint": 21355, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 20883, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_uint256t_address": { + "entryPoint": 22327, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr": { + "entryPoint": 21462, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bool_fromMemory": { + "entryPoint": 22893, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32": { + "entryPoint": 20910, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32t_address": { + "entryPoint": 21108, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes32t_uint256": { + "entryPoint": 21715, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_struct$_RecollateralizeDEI_$1556_memory_ptr": { + "entryPoint": 22007, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256_fromMemory": { + "entryPoint": 22569, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256t_address": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_memory_ptrt_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": { + "entryPoint": 22192, + "id": null, + "parameterSlots": 2, + "returnSlots": 6 + }, + "abi_decode_tuple_t_uint256t_uint256_fromMemory": { + "entryPoint": 23465, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": { + "entryPoint": 21011, + "id": null, + "parameterSlots": 2, + "returnSlots": 5 + }, + "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": { + "entryPoint": 22387, + "id": null, + "parameterSlots": 2, + "returnSlots": 6 + }, + "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": { + "entryPoint": 21599, + "id": null, + "parameterSlots": 2, + "returnSlots": 7 + }, + "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256": { + "entryPoint": 21523, + "id": null, + "parameterSlots": 2, + "returnSlots": 7 + }, + "abi_encode_bytes_calldata": { + "entryPoint": 22594, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_struct_MintFD_Params": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_packed_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 23501, + "id": null, + "parameterSlots": 7, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 7, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 23909, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 23354, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 22667, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 23672, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_0553f3220b1c65f13a1a0bcfbae12cc9d57080d375095d8011e479f9a164d51f__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_0f701899e5d254af158b94e181e8c864fa1fa8407b8e83a84b212f1856c034bb__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_1eb003467dd04b32fe18359370bc0d0e41e237ed2bf1be23765de9081983dd0d__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_219e324e833041c644ccb1dd3dba73aaa878497ddb310916decd8247cfffb1bd__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_2b6a8f4152754b6a991bf1b0a666b82b00923d2fd769bf1e3367643b70f91813__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_32c377f750f3acdff4f31738199007cf625ea4cb5a4b65f0253238ad0d6fe603__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3517d2a2517b8811826efd915add7c546f6c6059a93aba596e992ef7ede2c237__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3871818a433a796d8749bf69d3757469c36cba69a6da101f4f86b64a03c25fdf__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_38c9fd1b67df6e999cac6aaf315cc13e0fa4fc296b57f92466d27a378c17f081__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3a4aaa4225031aefd603a0181e03bfba377ad02f3a40d8d4ff79e4b75af91117__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3b8d4b54db08ed890798fdc55ba1c410b1b90a23a79193c7486d04051b31717b__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3cf3652b2acfb73942e459b043ef1100fffabb4093e48d3162412f77ff7ce9c4__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_415add743154eebc1c14f0dcbb6d42364bd9228c5bfab92187476352ba4cf3a4__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_43ec8f409eb317e256e176d402e36ec6af276af1f8f749e4d9fbe21bcd7bc664__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_565f0845894e0f662254a5093763af0fee3605d54c84edbcf11c672de6a88543__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_5a2d3f9bcb3c5bd0b1926b1856db5dd186810b6e73d5cb9f87ee953c4da7fee2__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_70791a0be90f5705149d45e0236213cb0328457b5d86e6288006e4f6774b09e7__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_74a9279f050c6419792bc3daa57da050d8e2f426f944681941d34e8909be7eac__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_76b82cf0f5d67f7f31fa6377a21018dea36302e26d7842fad5ba832c330157dd__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_7b7d20f9ca6e9adc6378137dbeda8a962bb9bf07440b2b9db28bb53f4e464fce__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_98984f103b51115a1419edfc23f41285c32977e7b02cc32e067bba007d26b4f9__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_af86e93bd0220a55e8ca62f5f35862820e5999de1371ac209bb45c45b39ee5de__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_bff4c2607c2670a7edf36f88b5d5987db2ccc6a59b36f486c4c57f193ba00833__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_c668331e1a5c68ea41572b6fbf581e9b4ce7392915c1ff6a6872ae765618f9ee__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_c70433350355bf0543fc06a466fe44bcb01281d5a63b8bb87c74c17650f3e4c7__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_cff49a4dc330adf1553dee705fac7862f639b33b74fda177589900b9506a9737__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_d441a1ecab801b1c575c77e3c185431fd7b0029d666fc7417a9f7556b3f83d6f__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_de458c40ee20c89c9807b7a8a5908e3319b480e8b007f55d3d683bc68bb7186e__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_f52391ebd610d5d9d518357ceeaf45367429ac1fd3150210dcaba2450d5bcce8__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_f64a17d208f26e05f2312b5ee80f462bf5bab19979dfd330950359be93bd2d66__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_f836b804fb91fcbb3dafb5e724f5eeb776ededc2eaf47030c5f454694abcbafe__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_f8eb31fdc269657c54ee10149955fecbcb75254d3eeec631bdecc57de525010b__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_ffc61d1a84775e893520fbdfe0ea8909f9284081f97dd4e8ed1bc343abeb295e__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__to_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_struct$_MintFD_Params_$3600_memory_ptr__to_t_struct$_MintFD_Params_$3600_memory_ptr__fromStack_reversed": { + "entryPoint": 23422, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 8, + "returnSlots": 1 + }, + "allocate_memory": { + "entryPoint": 21240, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "allocate_memory_5709": { + "entryPoint": 21199, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "array_allocation_size_array_uint256_dyn": { + "entryPoint": 21319, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 22522, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_div_t_uint256": { + "entryPoint": 23234, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_exp_helper": { + "entryPoint": 22934, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "checked_exp_t_uint256_t_uint256": { + "entryPoint": 23222, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_exp_unsigned": { + "entryPoint": 23031, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_mul_t_uint256": { + "entryPoint": 23293, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 22546, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "copy_memory_to_memory": { + "entryPoint": 23628, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "panic_error_0x11": { + "entryPoint": 22475, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x31": { + "entryPoint": 23937, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 23862, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 21152, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:40011:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "63:147:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "73:29:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "95:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "82:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "82:20:39" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "73:5:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "188:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "200:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "190:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "190:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "190:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "124:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "135:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "142:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "131:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "131:54:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "121:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "121:65:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "114:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "114:73:39" + }, + "nodeType": "YulIf", + "src": "111:93:39" + } + ] + }, + "name": "abi_decode_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "42:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "53:5:39", + "type": "" + } + ], + "src": "14:196:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "285:116:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "331:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "340:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "343:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "333:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "333:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "333:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "306:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "315:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "302:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "302:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "327:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "298:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "298:32:39" + }, + "nodeType": "YulIf", + "src": "295:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "356:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "385:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "366:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "366:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "356:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "251:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "262:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "274:6:39", + "type": "" + } + ], + "src": "215:186:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "507:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "517:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "529:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "540:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "525:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "525:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "517:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "559:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "570:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "552:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "552:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "552:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "476:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "487:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "498:4:39", + "type": "" + } + ], + "src": "406:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "658:110:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "704:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "713:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "716:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "706:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "706:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "706:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "679:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "688:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "675:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "675:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "700:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "671:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "671:32:39" + }, + "nodeType": "YulIf", + "src": "668:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "729:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "752:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "739:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "739:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "729:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "624:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "635:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "647:6:39", + "type": "" + } + ], + "src": "588:180:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "874:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "884:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "896:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "907:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "892:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "892:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "884:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "926:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "937:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "919:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "919:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "919:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "843:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "854:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "865:4:39", + "type": "" + } + ], + "src": "773:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1046:283:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1095:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1104:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1107:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1097:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1097:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1097:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1074:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1082:4:39", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1070:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1070:17:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "1089:3:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1066:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1066:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1059:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1059:35:39" + }, + "nodeType": "YulIf", + "src": "1056:55:39" + }, + { + "nodeType": "YulAssignment", + "src": "1120:30:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1143:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1130:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1130:20:39" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1120:6:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1193:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1202:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1205:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1195:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1195:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1195:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1165:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1173:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1162:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1162:30:39" + }, + "nodeType": "YulIf", + "src": "1159:50:39" + }, + { + "nodeType": "YulAssignment", + "src": "1218:29:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1234:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1242:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1230:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1230:17:39" + }, + "variableNames": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "1218:8:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1307:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1316:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1319:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1309:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1309:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1309:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1270:6:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1282:1:39", + "type": "", + "value": "5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1285:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1278:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1278:14:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1266:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1266:27:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1295:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1262:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1262:38:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "1302:3:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1259:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1259:47:39" + }, + "nodeType": "YulIf", + "src": "1256:67:39" + } + ] + }, + "name": "abi_decode_array_bytes_calldata_dyn_calldata", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1009:6:39", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "1017:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "arrayPos", + "nodeType": "YulTypedName", + "src": "1025:8:39", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1035:6:39", + "type": "" + } + ], + "src": "955:374:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1501:493:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1548:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1557:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1560:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1550:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1550:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1550:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1522:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1531:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1518:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1518:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1543:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1514:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1514:33:39" + }, + "nodeType": "YulIf", + "src": "1511:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "1573:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1596:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1583:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1583:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1573:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1615:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1642:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1653:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1638:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1638:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1625:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1625:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1615:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1666:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1693:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1704:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1689:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1689:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1676:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1676:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "1666:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1717:46:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1748:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1759:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1744:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1744:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1731:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1731:32:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1721:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1806:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1815:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1818:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1808:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1808:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1808:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1778:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1786:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1775:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1775:30:39" + }, + "nodeType": "YulIf", + "src": "1772:50:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1831:103:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1906:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1917:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1902:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1902:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1926:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_bytes_calldata_dyn_calldata", + "nodeType": "YulIdentifier", + "src": "1857:44:39" + }, + "nodeType": "YulFunctionCall", + "src": "1857:77:39" + }, + "variables": [ + { + "name": "value3_1", + "nodeType": "YulTypedName", + "src": "1835:8:39", + "type": "" + }, + { + "name": "value4_1", + "nodeType": "YulTypedName", + "src": "1845:8:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1943:18:39", + "value": { + "name": "value3_1", + "nodeType": "YulIdentifier", + "src": "1953:8:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "1943:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1970:18:39", + "value": { + "name": "value4_1", + "nodeType": "YulIdentifier", + "src": "1980:8:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "1970:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1435:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1446:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1458:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1466:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "1474:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "1482:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "1490:6:39", + "type": "" + } + ], + "src": "1334:660:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2086:167:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2132:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2141:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2144:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2134:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2134:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2134:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2107:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2116:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2103:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2103:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2128:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2099:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2099:32:39" + }, + "nodeType": "YulIf", + "src": "2096:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "2157:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2180:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2167:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2167:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2157:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2199:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2232:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2243:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2228:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2228:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "2209:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "2209:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2199:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2044:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2055:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2067:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2075:6:39", + "type": "" + } + ], + "src": "1999:254:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2290:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2307:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2310:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2300:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2300:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2300:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2404:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2407:4:39", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2397:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2397:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2397:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2428:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2431:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2421:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2421:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2421:15:39" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "2258:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2493:207:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2503:19:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2519:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2513:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "2513:9:39" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2503:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2531:35:39", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2553:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2561:4:39", + "type": "", + "value": "0xc0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2549:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2549:17:39" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "2535:10:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2641:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "2643:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "2643:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2643:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "2584:10:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2596:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2581:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2581:34:39" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "2620:10:39" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2632:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2617:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2617:22:39" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "2578:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2578:62:39" + }, + "nodeType": "YulIf", + "src": "2575:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2679:2:39", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "2683:10:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2672:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2672:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2672:22:39" + } + ] + }, + "name": "allocate_memory_5709", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "2482:6:39", + "type": "" + } + ], + "src": "2447:253:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2750:289:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2760:19:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2776:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2770:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "2770:9:39" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2760:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2788:117:39", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2810:6:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "2826:4:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2832:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2822:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2822:13:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2837:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2818:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2818:86:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2806:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2806:99:39" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "2792:10:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2980:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "2982:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "2982:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2982:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "2923:10:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2935:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2920:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2920:34:39" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "2959:10:39" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2971:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2956:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2956:22:39" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "2917:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2917:62:39" + }, + "nodeType": "YulIf", + "src": "2914:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3018:2:39", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "3022:10:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3011:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3011:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3011:22:39" + } + ] + }, + "name": "allocate_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "2730:4:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "2739:6:39", + "type": "" + } + ], + "src": "2705:334:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3113:114:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3157:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "3159:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "3159:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3159:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3129:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3137:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3126:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3126:30:39" + }, + "nodeType": "YulIf", + "src": "3123:56:39" + }, + { + "nodeType": "YulAssignment", + "src": "3188:33:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3204:1:39", + "type": "", + "value": "5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3207:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3200:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3200:14:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3216:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3196:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3196:25:39" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "3188:4:39" + } + ] + } + ] + }, + "name": "array_allocation_size_array_uint256_dyn", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "3093:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "3104:4:39", + "type": "" + } + ], + "src": "3044:183:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3296:598:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3345:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3354:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3357:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3347:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3347:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3347:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3324:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3332:4:39", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3320:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3320:17:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3339:3:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3316:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3316:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3309:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3309:35:39" + }, + "nodeType": "YulIf", + "src": "3306:55:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3370:30:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3393:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3380:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "3380:20:39" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "3374:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3409:14:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3419:4:39", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "3413:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3432:71:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3499:2:39" + } + ], + "functionName": { + "name": "array_allocation_size_array_uint256_dyn", + "nodeType": "YulIdentifier", + "src": "3459:39:39" + }, + "nodeType": "YulFunctionCall", + "src": "3459:43:39" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "3443:15:39" + }, + "nodeType": "YulFunctionCall", + "src": "3443:60:39" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "3436:3:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3512:16:39", + "value": { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3525:3:39" + }, + "variables": [ + { + "name": "dst_1", + "nodeType": "YulTypedName", + "src": "3516:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3544:3:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3549:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3537:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3537:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3537:15:39" + }, + { + "nodeType": "YulAssignment", + "src": "3561:19:39", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3572:3:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3577:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3568:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3568:12:39" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3561:3:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3589:46:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3611:6:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3623:1:39", + "type": "", + "value": "5" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3626:2:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3619:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3619:10:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3607:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3607:23:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3632:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3603:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3603:32:39" + }, + "variables": [ + { + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "3593:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3663:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3672:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3675:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3665:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3665:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3665:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "3650:6:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3658:3:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3647:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3647:15:39" + }, + "nodeType": "YulIf", + "src": "3644:35:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3688:26:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3703:6:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3711:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3699:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3699:15:39" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "3692:3:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3779:86:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3800:3:39" + }, + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3818:3:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3805:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "3805:17:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3793:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3793:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3793:30:39" + }, + { + "nodeType": "YulAssignment", + "src": "3836:19:39", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3847:3:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3852:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3843:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3843:12:39" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3836:3:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3734:3:39" + }, + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "3739:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "3731:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3731:15:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "3747:23:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3749:19:39", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3760:3:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3765:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3756:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3756:12:39" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3749:3:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "3727:3:39", + "statements": [] + }, + "src": "3723:142:39" + }, + { + "nodeType": "YulAssignment", + "src": "3874:14:39", + "value": { + "name": "dst_1", + "nodeType": "YulIdentifier", + "src": "3883:5:39" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "3874:5:39" + } + ] + } + ] + }, + "name": "abi_decode_array_uint256_dyn", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3270:6:39", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3278:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "3286:5:39", + "type": "" + } + ], + "src": "3232:662:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3994:253:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4040:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4049:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4052:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4042:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4042:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4042:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4015:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4024:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4011:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4011:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4036:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4007:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4007:32:39" + }, + "nodeType": "YulIf", + "src": "4004:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4065:37:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4092:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4079:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4079:23:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4069:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4145:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4154:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4157:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4147:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4147:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4147:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4117:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4125:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4114:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "4114:30:39" + }, + "nodeType": "YulIf", + "src": "4111:50:39" + }, + { + "nodeType": "YulAssignment", + "src": "4170:71:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4213:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4224:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4209:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4209:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4233:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_uint256_dyn", + "nodeType": "YulIdentifier", + "src": "4180:28:39" + }, + "nodeType": "YulFunctionCall", + "src": "4180:61:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4170:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3960:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3971:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3983:6:39", + "type": "" + } + ], + "src": "3899:348:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4424:420:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4471:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4480:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4483:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4473:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4473:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4473:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4445:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4454:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4441:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4441:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4466:3:39", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4437:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4437:33:39" + }, + "nodeType": "YulIf", + "src": "4434:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "4496:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4519:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4506:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4506:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4496:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4538:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4565:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4576:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4561:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4561:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4548:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4548:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "4538:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4589:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4616:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4627:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4612:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4612:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4599:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4599:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "4589:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4640:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4667:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4678:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4663:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4663:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4650:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4650:32:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "4640:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4691:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4718:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4729:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4714:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4714:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4701:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4701:33:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "4691:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4743:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4770:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4781:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4766:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4766:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4753:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4753:33:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "4743:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4795:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4822:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4833:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4818:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4818:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4805:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4805:33:39" + }, + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "4795:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4342:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "4353:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4365:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "4373:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "4381:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "4389:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "4397:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "4405:6:39", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "4413:6:39", + "type": "" + } + ], + "src": "4252:592:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5050:597:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5097:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5106:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5109:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5099:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5099:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5099:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5071:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5080:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5067:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5067:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5092:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5063:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5063:33:39" + }, + "nodeType": "YulIf", + "src": "5060:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "5122:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5145:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5132:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5132:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5122:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5164:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5191:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5202:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5187:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5187:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5174:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5174:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "5164:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5215:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5242:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5253:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5238:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5238:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5225:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5225:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "5215:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5266:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5293:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5304:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5289:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5289:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5276:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5276:32:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "5266:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5317:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5344:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5355:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5340:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5340:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5327:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5327:33:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "5317:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5369:47:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5400:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5411:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5396:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5396:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5383:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5383:33:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5373:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5459:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5468:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5471:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5461:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5461:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5461:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5431:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5439:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "5428:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "5428:30:39" + }, + "nodeType": "YulIf", + "src": "5425:50:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5484:103:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5559:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5570:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5555:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5555:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5579:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_bytes_calldata_dyn_calldata", + "nodeType": "YulIdentifier", + "src": "5510:44:39" + }, + "nodeType": "YulFunctionCall", + "src": "5510:77:39" + }, + "variables": [ + { + "name": "value5_1", + "nodeType": "YulTypedName", + "src": "5488:8:39", + "type": "" + }, + { + "name": "value6_1", + "nodeType": "YulTypedName", + "src": "5498:8:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5596:18:39", + "value": { + "name": "value5_1", + "nodeType": "YulIdentifier", + "src": "5606:8:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "5596:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5623:18:39", + "value": { + "name": "value6_1", + "nodeType": "YulIdentifier", + "src": "5633:8:39" + }, + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "5623:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4968:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "4979:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4991:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "4999:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "5007:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "5015:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "5023:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "5031:6:39", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "5039:6:39", + "type": "" + } + ], + "src": "4849:798:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5747:92:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5757:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5769:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5780:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5765:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5765:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5757:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5799:9:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5824:6:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5817:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5817:14:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5810:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5810:22:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5792:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5792:41:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5792:41:39" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5716:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5727:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5738:4:39", + "type": "" + } + ], + "src": "5652:187:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5945:125:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5955:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5967:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5978:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5963:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5963:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5955:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5997:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6012:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6020:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6008:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6008:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5990:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5990:74:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5990:74:39" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5914:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5925:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5936:4:39", + "type": "" + } + ], + "src": "5844:226:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6162:167:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6208:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6217:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6220:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6210:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6210:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6210:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6183:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6192:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6179:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6179:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6204:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "6175:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6175:32:39" + }, + "nodeType": "YulIf", + "src": "6172:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "6233:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6256:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6243:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "6243:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6233:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6275:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6308:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6319:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6304:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6304:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "6285:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "6285:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "6275:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6120:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "6131:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6143:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "6151:6:39", + "type": "" + } + ], + "src": "6075:254:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6421:161:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6467:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6476:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6479:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6469:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6469:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6469:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6442:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6451:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6438:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6438:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6463:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "6434:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6434:32:39" + }, + "nodeType": "YulIf", + "src": "6431:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "6492:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6515:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6502:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "6502:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6492:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6534:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6561:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6572:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6557:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6557:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6544:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "6544:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "6534:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6379:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "6390:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6402:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "6410:6:39", + "type": "" + } + ], + "src": "6334:248:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6649:1536:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6659:14:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6669:4:39", + "type": "", + "value": "0x1f" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "6663:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6719:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6728:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6731:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6721:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6721:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6721:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6700:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "6708:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6696:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6696:15:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "6713:3:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "6692:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6692:25:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "6685:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6685:33:39" + }, + "nodeType": "YulIf", + "src": "6682:53:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6744:30:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6767:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6754:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "6754:20:39" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "6748:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6783:14:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6793:4:39", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_3", + "nodeType": "YulTypedName", + "src": "6787:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6806:71:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "6873:2:39" + } + ], + "functionName": { + "name": "array_allocation_size_array_uint256_dyn", + "nodeType": "YulIdentifier", + "src": "6833:39:39" + }, + "nodeType": "YulFunctionCall", + "src": "6833:43:39" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "6817:15:39" + }, + "nodeType": "YulFunctionCall", + "src": "6817:60:39" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "6810:3:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6886:16:39", + "value": { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6899:3:39" + }, + "variables": [ + { + "name": "dst_1", + "nodeType": "YulTypedName", + "src": "6890:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6918:3:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "6923:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6911:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6911:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6911:15:39" + }, + { + "nodeType": "YulAssignment", + "src": "6935:19:39", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6946:3:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "6951:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6942:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6942:12:39" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6935:3:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6963:46:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6985:6:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6997:1:39", + "type": "", + "value": "5" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "7000:2:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "6993:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6993:10:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6981:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6981:23:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "7006:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6977:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6977:32:39" + }, + "variables": [ + { + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "6967:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7037:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7046:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7049:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7039:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7039:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7039:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "7024:6:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7032:3:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7021:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "7021:15:39" + }, + "nodeType": "YulIf", + "src": "7018:35:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7062:26:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7077:6:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "7085:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7073:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7073:15:39" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "7066:3:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7153:1003:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7167:36:39", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "7199:3:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7186:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "7186:17:39" + }, + "variables": [ + { + "name": "innerOffset", + "nodeType": "YulTypedName", + "src": "7171:11:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7216:28:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7226:18:39", + "type": "", + "value": "0xffffffffffffffff" + }, + "variables": [ + { + "name": "_4", + "nodeType": "YulTypedName", + "src": "7220:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7292:74:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7310:11:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7320:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_5", + "nodeType": "YulTypedName", + "src": "7314:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "_5", + "nodeType": "YulIdentifier", + "src": "7345:2:39" + }, + { + "name": "_5", + "nodeType": "YulIdentifier", + "src": "7349:2:39" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7338:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7338:14:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7338:14:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "innerOffset", + "nodeType": "YulIdentifier", + "src": "7263:11:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "7276:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7260:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "7260:19:39" + }, + "nodeType": "YulIf", + "src": "7257:109:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7379:34:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7393:6:39" + }, + { + "name": "innerOffset", + "nodeType": "YulIdentifier", + "src": "7401:11:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7389:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7389:24:39" + }, + "variables": [ + { + "name": "_6", + "nodeType": "YulTypedName", + "src": "7383:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7471:74:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7489:11:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7499:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_7", + "nodeType": "YulTypedName", + "src": "7493:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "_7", + "nodeType": "YulIdentifier", + "src": "7524:2:39" + }, + { + "name": "_7", + "nodeType": "YulIdentifier", + "src": "7528:2:39" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7517:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7517:14:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7517:14:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_6", + "nodeType": "YulIdentifier", + "src": "7444:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7448:2:39", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7440:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7440:11:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7453:3:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "7436:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7436:21:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "7429:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7429:29:39" + }, + "nodeType": "YulIf", + "src": "7426:119:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7558:35:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_6", + "nodeType": "YulIdentifier", + "src": "7585:2:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "7589:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7581:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7581:11:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7568:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "7568:25:39" + }, + "variables": [ + { + "name": "_8", + "nodeType": "YulTypedName", + "src": "7562:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7606:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7616:2:39", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "_9", + "nodeType": "YulTypedName", + "src": "7610:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7645:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "7647:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "7647:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7647:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "7637:2:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "7641:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7634:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "7634:10:39" + }, + "nodeType": "YulIf", + "src": "7631:36:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7680:125:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "7723:2:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "7727:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7719:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7719:11:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7732:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "7715:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7715:84:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "7801:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7711:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7711:93:39" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "7695:15:39" + }, + "nodeType": "YulFunctionCall", + "src": "7695:110:39" + }, + "variables": [ + { + "name": "array_1", + "nodeType": "YulTypedName", + "src": "7684:7:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "7825:7:39" + }, + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "7834:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7818:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7818:19:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7818:19:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7895:77:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7913:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7924:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_10", + "nodeType": "YulTypedName", + "src": "7917:3:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "_10", + "nodeType": "YulIdentifier", + "src": "7949:3:39" + }, + { + "name": "_10", + "nodeType": "YulIdentifier", + "src": "7954:3:39" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7942:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7942:16:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7942:16:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_6", + "nodeType": "YulIdentifier", + "src": "7864:2:39" + }, + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "7868:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7860:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7860:11:39" + }, + { + "name": "_9", + "nodeType": "YulIdentifier", + "src": "7873:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7856:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7856:20:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7878:3:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7853:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "7853:29:39" + }, + "nodeType": "YulIf", + "src": "7850:122:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "8002:7:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "8011:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7998:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7998:16:39" + }, + { + "arguments": [ + { + "name": "_6", + "nodeType": "YulIdentifier", + "src": "8020:2:39" + }, + { + "name": "_9", + "nodeType": "YulIdentifier", + "src": "8024:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8016:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8016:11:39" + }, + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "8029:2:39" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "7985:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "7985:47:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7985:47:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "8060:7:39" + }, + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "8069:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8056:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8056:16:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "8074:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8052:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8052:25:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8079:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8045:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8045:36:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8045:36:39" + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "8101:3:39" + }, + { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "8106:7:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8094:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8094:20:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8094:20:39" + }, + { + "nodeType": "YulAssignment", + "src": "8127:19:39", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "8138:3:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "8143:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8134:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8134:12:39" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "8127:3:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "7108:3:39" + }, + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "7113:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "7105:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "7105:15:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "7121:23:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7123:19:39", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "7134:3:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "7139:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7130:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7130:12:39" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "7123:3:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "7101:3:39", + "statements": [] + }, + "src": "7097:1059:39" + }, + { + "nodeType": "YulAssignment", + "src": "8165:14:39", + "value": { + "name": "dst_1", + "nodeType": "YulIdentifier", + "src": "8174:5:39" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "8165:5:39" + } + ] + } + ] + }, + "name": "abi_decode_array_bytes_dyn", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "6623:6:39", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "6631:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "6639:5:39", + "type": "" + } + ], + "src": "6587:1598:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8296:943:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "8342:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8351:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8354:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8344:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8344:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8344:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8317:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8326:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8313:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8313:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8338:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "8309:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8309:32:39" + }, + "nodeType": "YulIf", + "src": "8306:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8367:37:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8394:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8381:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8381:23:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8371:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8413:28:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8423:18:39", + "type": "", + "value": "0xffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "8417:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8468:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8477:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8480:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8470:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8470:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8470:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8456:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "8464:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8453:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "8453:14:39" + }, + "nodeType": "YulIf", + "src": "8450:34:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8493:32:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8507:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8518:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8503:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8503:22:39" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "8497:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8565:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8574:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8577:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8567:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8567:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8567:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8545:7:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8554:2:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8541:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8541:16:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8559:4:39", + "type": "", + "value": "0xc0" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "8537:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8537:27:39" + }, + "nodeType": "YulIf", + "src": "8534:47:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8590:35:39", + "value": { + "arguments": [], + "functionName": { + "name": "allocate_memory_5709", + "nodeType": "YulIdentifier", + "src": "8603:20:39" + }, + "nodeType": "YulFunctionCall", + "src": "8603:22:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8594:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8641:5:39" + }, + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8661:2:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8648:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8648:16:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8634:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8634:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8634:31:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8685:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8692:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8681:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8681:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8714:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8718:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8710:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8710:11:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8697:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8697:25:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8674:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8674:49:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8674:49:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8732:41:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8765:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8769:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8761:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8761:11:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8748:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8748:25:39" + }, + "variables": [ + { + "name": "offset_1", + "nodeType": "YulTypedName", + "src": "8736:8:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8802:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8811:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8814:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8804:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8804:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8804:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "8788:8:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "8798:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8785:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "8785:16:39" + }, + "nodeType": "YulIf", + "src": "8782:36:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8838:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8845:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8834:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8834:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8883:2:39" + }, + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "8887:8:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8879:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8879:17:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8898:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_uint256_dyn", + "nodeType": "YulIdentifier", + "src": "8850:28:39" + }, + "nodeType": "YulFunctionCall", + "src": "8850:56:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8827:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8827:80:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8827:80:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8927:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8934:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8923:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8923:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8956:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8960:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8952:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8952:11:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8939:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8939:25:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8916:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8916:49:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8916:49:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8985:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8992:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8981:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8981:15:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "9015:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9019:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9011:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9011:12:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8998:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8998:26:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8974:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8974:51:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8974:51:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "9034:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "9067:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9071:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9063:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9063:12:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9050:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9050:26:39" + }, + "variables": [ + { + "name": "offset_2", + "nodeType": "YulTypedName", + "src": "9038:8:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9105:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9114:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9117:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9107:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9107:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9107:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_2", + "nodeType": "YulIdentifier", + "src": "9091:8:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "9101:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "9088:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "9088:16:39" + }, + "nodeType": "YulIf", + "src": "9085:36:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9141:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9148:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9137:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9137:15:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "9185:2:39" + }, + { + "name": "offset_2", + "nodeType": "YulIdentifier", + "src": "9189:8:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9181:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9181:17:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9200:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_bytes_dyn", + "nodeType": "YulIdentifier", + "src": "9154:26:39" + }, + "nodeType": "YulFunctionCall", + "src": "9154:54:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9130:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9130:79:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9130:79:39" + }, + { + "nodeType": "YulAssignment", + "src": "9218:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9228:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9218:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_struct$_RecollateralizeDEI_$1556_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8262:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "8273:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "8285:6:39", + "type": "" + } + ], + "src": "8190:1049:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9314:110:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9360:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9369:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9372:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9362:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9362:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9362:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9335:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9344:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9331:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9331:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9356:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "9327:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9327:32:39" + }, + "nodeType": "YulIf", + "src": "9324:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "9385:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9408:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9395:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9395:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9385:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9280:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "9291:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9303:6:39", + "type": "" + } + ], + "src": "9244:180:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9638:699:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9685:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9694:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9697:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9687:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9687:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9687:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9659:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9668:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9655:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9655:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9680:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "9651:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9651:33:39" + }, + "nodeType": "YulIf", + "src": "9648:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "9710:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9733:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9720:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9720:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9710:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "9752:46:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9783:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9794:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9779:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9779:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9766:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9766:32:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9756:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "9807:28:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9817:18:39", + "type": "", + "value": "0xffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "9811:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9862:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9871:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9874:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9864:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9864:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9864:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9850:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "9858:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "9847:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "9847:14:39" + }, + "nodeType": "YulIf", + "src": "9844:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "9887:71:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9930:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9941:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9926:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9926:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9950:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_uint256_dyn", + "nodeType": "YulIdentifier", + "src": "9897:28:39" + }, + "nodeType": "YulFunctionCall", + "src": "9897:61:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "9887:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9967:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9994:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10005:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9990:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9990:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9977:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9977:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "9967:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10018:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10045:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10056:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10041:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10041:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10028:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "10028:32:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "10018:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "10069:49:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10102:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10113:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10098:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10098:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10085:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "10085:33:39" + }, + "variables": [ + { + "name": "offset_1", + "nodeType": "YulTypedName", + "src": "10073:8:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10147:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10156:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10159:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10149:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10149:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10149:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "10133:8:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "10143:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "10130:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "10130:16:39" + }, + "nodeType": "YulIf", + "src": "10127:36:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "10172:105:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10247:9:39" + }, + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "10258:8:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10243:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10243:24:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10269:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_bytes_calldata_dyn_calldata", + "nodeType": "YulIdentifier", + "src": "10198:44:39" + }, + "nodeType": "YulFunctionCall", + "src": "10198:79:39" + }, + "variables": [ + { + "name": "value4_1", + "nodeType": "YulTypedName", + "src": "10176:8:39", + "type": "" + }, + { + "name": "value5_1", + "nodeType": "YulTypedName", + "src": "10186:8:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10286:18:39", + "value": { + "name": "value4_1", + "nodeType": "YulIdentifier", + "src": "10296:8:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "10286:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10313:18:39", + "value": { + "name": "value5_1", + "nodeType": "YulIdentifier", + "src": "10323:8:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "10313:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_memory_ptrt_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9564:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "9575:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9587:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "9595:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "9603:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "9611:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "9619:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "9627:6:39", + "type": "" + } + ], + "src": "9429:908:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10446:224:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "10492:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10501:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10504:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10494:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10494:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10494:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10467:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10476:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10463:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10463:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10488:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "10459:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10459:32:39" + }, + "nodeType": "YulIf", + "src": "10456:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "10517:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10546:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "10527:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "10527:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "10517:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10565:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10592:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10603:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10588:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10588:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10575:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "10575:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "10565:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10616:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10649:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10660:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10645:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10645:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "10626:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "10626:38:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "10616:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10396:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "10407:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "10419:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "10427:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "10435:6:39", + "type": "" + } + ], + "src": "10342:328:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10859:545:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "10906:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10915:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10918:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10908:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10908:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10908:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10880:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10889:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10876:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10876:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10901:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "10872:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10872:33:39" + }, + "nodeType": "YulIf", + "src": "10869:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "10931:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10954:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10941:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "10941:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "10931:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10973:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11000:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11011:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10996:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10996:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10983:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "10983:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "10973:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11024:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11051:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11062:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11047:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11047:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "11034:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "11034:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "11024:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11075:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11102:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11113:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11098:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11098:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "11085:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "11085:32:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "11075:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "11126:47:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11157:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11168:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11153:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11153:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "11140:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "11140:33:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "11130:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11216:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11225:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11228:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "11218:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11218:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11218:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11188:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11196:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "11185:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "11185:30:39" + }, + "nodeType": "YulIf", + "src": "11182:50:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "11241:103:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11316:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11327:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11312:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11312:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11336:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_bytes_calldata_dyn_calldata", + "nodeType": "YulIdentifier", + "src": "11267:44:39" + }, + "nodeType": "YulFunctionCall", + "src": "11267:77:39" + }, + "variables": [ + { + "name": "value4_1", + "nodeType": "YulTypedName", + "src": "11245:8:39", + "type": "" + }, + { + "name": "value5_1", + "nodeType": "YulTypedName", + "src": "11255:8:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11353:18:39", + "value": { + "name": "value4_1", + "nodeType": "YulIdentifier", + "src": "11363:8:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "11353:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11380:18:39", + "value": { + "name": "value5_1", + "nodeType": "YulIdentifier", + "src": "11390:8:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "11380:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10785:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "10796:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "10808:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "10816:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "10824:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "10832:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "10840:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "10848:6:39", + "type": "" + } + ], + "src": "10675:729:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11441:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11458:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11461:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11451:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11451:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11451:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11555:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11558:4:39", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11548:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11548:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11548:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11579:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11582:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "11572:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11572:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11572:15:39" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "11409:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11646:80:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "11673:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "11675:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "11675:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11675:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11662:1:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11669:1:39" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "11665:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11665:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "11659:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "11659:13:39" + }, + "nodeType": "YulIf", + "src": "11656:39:39" + }, + { + "nodeType": "YulAssignment", + "src": "11704:16:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11715:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11718:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11711:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11711:9:39" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "11704:3:39" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "11629:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "11632:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "11638:3:39", + "type": "" + } + ], + "src": "11598:128:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11905:321:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11922:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11933:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11915:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11915:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11915:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11956:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11967:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11952:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11952:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11972:2:39", + "type": "", + "value": "91" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11945:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11945:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11945:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11995:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12006:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11991:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11991:18:39" + }, + { + "hexValue": "504f4f4c3a3a636f6c6c656374526564656d7074696f6e3a204d757374207761", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12011:34:39", + "type": "", + "value": "POOL::collectRedemption: Must wa" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11984:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11984:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11984:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12066:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12077:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12062:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12062:18:39" + }, + { + "hexValue": "697420666f7220726564656d7074696f6e5f64656c617920626c6f636b732062", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12082:34:39", + "type": "", + "value": "it for redemption_delay blocks b" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12055:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12055:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12055:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12137:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12148:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12133:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12133:19:39" + }, + { + "hexValue": "65666f726520636f6c6c656374696e6720726564656d7074696f6e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12154:29:39", + "type": "", + "value": "efore collecting redemption" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12126:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12126:58:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12126:58:39" + }, + { + "nodeType": "YulAssignment", + "src": "12193:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12205:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12216:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12201:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12201:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12193:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_38c9fd1b67df6e999cac6aaf315cc13e0fa4fc296b57f92466d27a378c17f081__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "11882:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "11896:4:39", + "type": "" + } + ], + "src": "11731:495:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12280:76:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "12302:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "12304:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "12304:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12304:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "12296:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "12299:1:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "12293:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "12293:8:39" + }, + "nodeType": "YulIf", + "src": "12290:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "12333:17:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "12345:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "12348:1:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "12341:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12341:9:39" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "12333:4:39" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "12262:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "12265:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "12271:4:39", + "type": "" + } + ], + "src": "12231:125:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12535:175:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12552:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12563:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12545:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12545:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12545:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12586:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12597:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12582:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12582:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12602:2:39", + "type": "", + "value": "25" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12575:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12575:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12575:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12625:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12636:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12621:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12621:18:39" + }, + { + "hexValue": "504f4f4c3a3a52656465656d696e6720697320706175736564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12641:27:39", + "type": "", + "value": "POOL::Redeeming is paused" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12614:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12614:55:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12614:55:39" + }, + { + "nodeType": "YulAssignment", + "src": "12678:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12690:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12701:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12686:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12686:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12678:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_de458c40ee20c89c9807b7a8a5908e3319b480e8b007f55d3d683bc68bb7186e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12512:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "12526:4:39", + "type": "" + } + ], + "src": "12361:349:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12796:103:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "12842:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12851:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12854:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "12844:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12844:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12844:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "12817:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12826:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "12813:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12813:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12838:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "12809:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12809:32:39" + }, + "nodeType": "YulIf", + "src": "12806:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "12867:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12883:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "12877:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "12877:16:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "12867:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12762:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "12773:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "12785:6:39", + "type": "" + } + ], + "src": "12715:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13078:179:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13095:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13106:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13088:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13088:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13088:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13129:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13140:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13125:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13125:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13145:2:39", + "type": "", + "value": "29" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13118:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13118:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13118:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13168:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13179:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13164:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13164:18:39" + }, + { + "hexValue": "436f6c6c61746572616c20726174696f206d757374206265203d3d2031", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13184:31:39", + "type": "", + "value": "Collateral ratio must be == 1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13157:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13157:59:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13157:59:39" + }, + { + "nodeType": "YulAssignment", + "src": "13225:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13237:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13248:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13233:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13233:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13225:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_c70433350355bf0543fc06a466fe44bcb01281d5a63b8bb87c74c17650f3e4c7__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13055:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13069:4:39", + "type": "" + } + ], + "src": "12904:353:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13436:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13453:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13464:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13446:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13446:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13446:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13487:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13498:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13483:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13483:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13503:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13476:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13476:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13476:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13526:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13537:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13522:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13522:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e6174", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13542:34:39", + "type": "", + "value": "POOL::mintAlgorithmicDEI: signat" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13515:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13515:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13515:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13597:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13608:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13593:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13593:18:39" + }, + { + "hexValue": "75726520697320657870697265642e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13613:17:39", + "type": "", + "value": "ure is expired." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13586:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13586:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13586:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "13640:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13652:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13663:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13648:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13648:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13640:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0553f3220b1c65f13a1a0bcfbae12cc9d57080d375095d8011e479f9a164d51f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13413:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13427:4:39", + "type": "" + } + ], + "src": "13262:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13881:257:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13898:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13911:2:39", + "type": "", + "value": "96" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13915:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "13907:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13907:15:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13924:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "13903:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13903:88:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13891:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13891:101:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13891:101:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14012:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14017:2:39", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14008:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14008:12:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "14022:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14001:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14001:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14001:28:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14049:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14054:2:39", + "type": "", + "value": "52" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14045:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14045:12:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "14059:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14038:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14038:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14038:28:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14086:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14091:2:39", + "type": "", + "value": "84" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14082:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14082:12:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "14096:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14075:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14075:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14075:28:39" + }, + { + "nodeType": "YulAssignment", + "src": "14112:20:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14123:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14128:3:39", + "type": "", + "value": "116" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14119:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14119:13:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "14112:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "13833:3:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "13838:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "13846:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "13854:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13862:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "13873:3:39", + "type": "" + } + ], + "src": "13678:460:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14209:259:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14226:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14231:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14219:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14219:19:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14219:19:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14264:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14269:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14260:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14260:14:39" + }, + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "14276:5:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14283:6:39" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "14247:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "14247:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14247:43:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14314:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14319:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14310:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14310:16:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14328:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14306:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14306:27:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14335:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14299:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14299:38:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14299:38:39" + }, + { + "nodeType": "YulAssignment", + "src": "14346:116:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14361:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14374:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14382:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14370:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14370:15:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14387:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "14366:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14366:88:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14357:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14357:98:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14457:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14353:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14353:109:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "14346:3:39" + } + ] + } + ] + }, + "name": "abi_encode_bytes_calldata", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "start", + "nodeType": "YulTypedName", + "src": "14178:5:39", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "14185:6:39", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "14193:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "14201:3:39", + "type": "" + } + ], + "src": "14143:325:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14682:1170:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14692:32:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14710:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14721:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14706:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14706:18:39" + }, + "variables": [ + { + "name": "tail_1", + "nodeType": "YulTypedName", + "src": "14696:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14740:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "14751:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14733:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14733:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14733:25:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "14767:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14777:2:39", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "14771:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14799:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "14810:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14795:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14795:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14815:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14788:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14788:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14788:30:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "14827:17:39", + "value": { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "14838:6:39" + }, + "variables": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "14831:3:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "14860:6:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "14868:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14853:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14853:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14853:22:39" + }, + { + "nodeType": "YulAssignment", + "src": "14884:25:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14895:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14906:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14891:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14891:18:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14884:3:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "14918:53:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14940:9:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14955:1:39", + "type": "", + "value": "5" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "14958:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "14951:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14951:14:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14936:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14936:30:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14968:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14932:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14932:39:39" + }, + "variables": [ + { + "name": "tail_2", + "nodeType": "YulTypedName", + "src": "14922:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "14980:20:39", + "value": { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "14994:6:39" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "14984:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15009:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15018:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "15013:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15077:746:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15098:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "15111:6:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15119:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15107:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15107:22:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15131:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15103:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15103:95:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15091:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15091:108:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15091:108:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15212:46:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "15251:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "15238:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "15238:20:39" + }, + "variables": [ + { + "name": "rel_offset_of_tail", + "nodeType": "YulTypedName", + "src": "15216:18:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15408:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15417:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15420:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "15410:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15410:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15410:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "rel_offset_of_tail", + "nodeType": "YulIdentifier", + "src": "15285:18:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier", + "src": "15313:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "15313:14:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "15329:6:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15309:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15309:27:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15338:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15305:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15305:100:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "15281:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15281:125:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "15274:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15274:133:39" + }, + "nodeType": "YulIf", + "src": "15271:153:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15437:44:39", + "value": { + "arguments": [ + { + "name": "rel_offset_of_tail", + "nodeType": "YulIdentifier", + "src": "15454:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "15474:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15450:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15450:31:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "15441:5:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15494:33:39", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15521:5:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "15508:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "15508:19:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "15498:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15574:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15583:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15586:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "15576:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15576:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15576:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "15546:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15554:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "15543:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "15543:30:39" + }, + "nodeType": "YulIf", + "src": "15540:50:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15647:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15656:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15659:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "15649:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15649:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15649:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "15610:6:39" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier", + "src": "15622:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "15622:14:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "15638:6:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15618:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15618:27:39" + } + ], + "functionName": { + "name": "sgt", + "nodeType": "YulIdentifier", + "src": "15606:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15606:40:39" + }, + "nodeType": "YulIf", + "src": "15603:60:39" + }, + { + "nodeType": "YulAssignment", + "src": "15676:67:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15716:5:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "15723:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15712:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15712:14:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "15728:6:39" + }, + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "15736:6:39" + } + ], + "functionName": { + "name": "abi_encode_bytes_calldata", + "nodeType": "YulIdentifier", + "src": "15686:25:39" + }, + "nodeType": "YulFunctionCall", + "src": "15686:57:39" + }, + "variableNames": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "15676:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "15756:25:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "15770:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "15778:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15766:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15766:15:39" + }, + "variableNames": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "15756:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "15794:19:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15805:3:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "15810:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15801:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15801:12:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15794:3:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "15039:1:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "15042:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "15036:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "15036:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "15050:18:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15052:14:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "15061:1:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15064:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15057:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15057:9:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "15052:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "15032:3:39", + "statements": [] + }, + "src": "15028:795:39" + }, + { + "nodeType": "YulAssignment", + "src": "15832:14:39", + "value": { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "15840:6:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15832:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "14635:9:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "14646:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "14654:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "14662:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "14673:4:39", + "type": "" + } + ], + "src": "14473:1379:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15935:199:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "15981:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15990:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15993:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "15983:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15983:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15983:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "15956:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15965:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15952:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15952:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15977:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "15948:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15948:32:39" + }, + "nodeType": "YulIf", + "src": "15945:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "16006:29:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16025:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "16019:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "16019:16:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16010:5:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16088:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16097:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16100:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "16090:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16090:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16090:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16057:5:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16078:5:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "16071:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16071:13:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "16064:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16064:21:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "16054:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "16054:32:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "16047:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16047:40:39" + }, + "nodeType": "YulIf", + "src": "16044:60:39" + }, + { + "nodeType": "YulAssignment", + "src": "16113:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16123:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "16113:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bool_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15901:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "15912:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "15924:6:39", + "type": "" + } + ], + "src": "15857:277:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16313:228:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16330:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16341:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16323:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16323:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16323:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16364:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16375:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16360:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16360:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16380:2:39", + "type": "", + "value": "38" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16353:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16353:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16353:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16403:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16414:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16399:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16399:18:39" + }, + { + "hexValue": "504f4f4c3a3a72656465656d3174314445493a20696e76616c6964207369676e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "16419:34:39", + "type": "", + "value": "POOL::redeem1t1DEI: invalid sign" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16392:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16392:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16392:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16474:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16485:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16470:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16470:18:39" + }, + { + "hexValue": "617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "16490:8:39", + "type": "", + "value": "atures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16463:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16463:36:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16463:36:39" + }, + { + "nodeType": "YulAssignment", + "src": "16508:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16520:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16531:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16516:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16516:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "16508:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3b8d4b54db08ed890798fdc55ba1c410b1b90a23a79193c7486d04051b31717b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "16290:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "16304:4:39", + "type": "" + } + ], + "src": "16139:402:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16610:418:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16620:16:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16635:1:39", + "type": "", + "value": "1" + }, + "variables": [ + { + "name": "power_1", + "nodeType": "YulTypedName", + "src": "16624:7:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16645:16:39", + "value": { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "16654:7:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "16645:5:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16670:13:39", + "value": { + "name": "_base", + "nodeType": "YulIdentifier", + "src": "16678:5:39" + }, + "variableNames": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16670:4:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16734:288:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "16839:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "16841:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "16841:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16841:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16754:4:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16764:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16832:4:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "16760:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16760:77:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "16751:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "16751:87:39" + }, + "nodeType": "YulIf", + "src": "16748:113:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16900:29:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16902:25:39", + "value": { + "arguments": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "16915:5:39" + }, + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16922:4:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "16911:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16911:16:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "16902:5:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "16881:8:39" + }, + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "16891:7:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "16877:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16877:22:39" + }, + "nodeType": "YulIf", + "src": "16874:55:39" + }, + { + "nodeType": "YulAssignment", + "src": "16942:23:39", + "value": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16954:4:39" + }, + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16960:4:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "16950:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16950:15:39" + }, + "variableNames": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16942:4:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16978:34:39", + "value": { + "arguments": [ + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "16994:7:39" + }, + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17003:8:39" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "16990:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16990:22:39" + }, + "variableNames": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "16978:8:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "16703:8:39" + }, + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "16713:7:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "16700:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "16700:21:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "16722:3:39", + "statements": [] + }, + "pre": { + "nodeType": "YulBlock", + "src": "16696:3:39", + "statements": [] + }, + "src": "16692:330:39" + } + ] + }, + "name": "checked_exp_helper", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "_base", + "nodeType": "YulTypedName", + "src": "16574:5:39", + "type": "" + }, + { + "name": "exponent", + "nodeType": "YulTypedName", + "src": "16581:8:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "power", + "nodeType": "YulTypedName", + "src": "16594:5:39", + "type": "" + }, + { + "name": "base", + "nodeType": "YulTypedName", + "src": "16601:4:39", + "type": "" + } + ], + "src": "16546:482:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17092:807:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "17130:52:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17144:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17153:1:39", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17144:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "17167:5:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17112:8:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "17105:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17105:16:39" + }, + "nodeType": "YulIf", + "src": "17102:80:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17215:52:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17229:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17238:1:39", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17229:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "17252:5:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17201:4:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "17194:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17194:12:39" + }, + "nodeType": "YulIf", + "src": "17191:76:39" + }, + { + "cases": [ + { + "body": { + "nodeType": "YulBlock", + "src": "17303:52:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17317:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17326:1:39", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17317:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "17340:5:39" + } + ] + }, + "nodeType": "YulCase", + "src": "17296:59:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17301:1:39", + "type": "", + "value": "1" + } + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17371:123:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "17406:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "17408:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "17408:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17408:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17391:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17401:3:39", + "type": "", + "value": "255" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "17388:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17388:17:39" + }, + "nodeType": "YulIf", + "src": "17385:43:39" + }, + { + "nodeType": "YulAssignment", + "src": "17441:25:39", + "value": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17454:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17464:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "17450:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17450:16:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17441:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "17479:5:39" + } + ] + }, + "nodeType": "YulCase", + "src": "17364:130:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17369:1:39", + "type": "", + "value": "2" + } + } + ], + "expression": { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17283:4:39" + }, + "nodeType": "YulSwitch", + "src": "17276:218:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17592:70:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17606:28:39", + "value": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17619:4:39" + }, + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17625:8:39" + } + ], + "functionName": { + "name": "exp", + "nodeType": "YulIdentifier", + "src": "17615:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17615:19:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17606:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "17647:5:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17516:4:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17522:2:39", + "type": "", + "value": "11" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "17513:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17513:12:39" + }, + { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17530:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17540:2:39", + "type": "", + "value": "78" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "17527:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17527:16:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "17509:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17509:35:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17553:4:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17559:3:39", + "type": "", + "value": "307" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "17550:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17550:13:39" + }, + { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17568:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17578:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "17565:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17565:16:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "17546:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17546:36:39" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "17506:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17506:77:39" + }, + "nodeType": "YulIf", + "src": "17503:159:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "17671:57:39", + "value": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17713:4:39" + }, + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17719:8:39" + } + ], + "functionName": { + "name": "checked_exp_helper", + "nodeType": "YulIdentifier", + "src": "17694:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "17694:34:39" + }, + "variables": [ + { + "name": "power_1", + "nodeType": "YulTypedName", + "src": "17675:7:39", + "type": "" + }, + { + "name": "base_1", + "nodeType": "YulTypedName", + "src": "17684:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17833:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "17835:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "17835:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17835:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "17743:7:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17756:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "base_1", + "nodeType": "YulIdentifier", + "src": "17824:6:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "17752:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17752:79:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "17740:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17740:92:39" + }, + "nodeType": "YulIf", + "src": "17737:118:39" + }, + { + "nodeType": "YulAssignment", + "src": "17864:29:39", + "value": { + "arguments": [ + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "17877:7:39" + }, + { + "name": "base_1", + "nodeType": "YulIdentifier", + "src": "17886:6:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "17873:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17873:20:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17864:5:39" + } + ] + } + ] + }, + "name": "checked_exp_unsigned", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "base", + "nodeType": "YulTypedName", + "src": "17063:4:39", + "type": "" + }, + { + "name": "exponent", + "nodeType": "YulTypedName", + "src": "17069:8:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "power", + "nodeType": "YulTypedName", + "src": "17082:5:39", + "type": "" + } + ], + "src": "17033:866:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17974:61:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17984:45:39", + "value": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "18014:4:39" + }, + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "18020:8:39" + } + ], + "functionName": { + "name": "checked_exp_unsigned", + "nodeType": "YulIdentifier", + "src": "17993:20:39" + }, + "nodeType": "YulFunctionCall", + "src": "17993:36:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17984:5:39" + } + ] + } + ] + }, + "name": "checked_exp_t_uint256_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "base", + "nodeType": "YulTypedName", + "src": "17945:4:39", + "type": "" + }, + { + "name": "exponent", + "nodeType": "YulTypedName", + "src": "17951:8:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "power", + "nodeType": "YulTypedName", + "src": "17964:5:39", + "type": "" + } + ], + "src": "17904:131:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18086:228:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "18117:168:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18138:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18141:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18131:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18131:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18131:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18239:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18242:4:39", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18232:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18232:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18232:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18267:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18270:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "18260:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18260:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18260:15:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "18106:1:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "18099:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18099:9:39" + }, + "nodeType": "YulIf", + "src": "18096:189:39" + }, + { + "nodeType": "YulAssignment", + "src": "18294:14:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "18303:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "18306:1:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "18299:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18299:9:39" + }, + "variableNames": [ + { + "name": "r", + "nodeType": "YulIdentifier", + "src": "18294:1:39" + } + ] + } + ] + }, + "name": "checked_div_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "18071:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "18074:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "r", + "nodeType": "YulTypedName", + "src": "18080:1:39", + "type": "" + } + ], + "src": "18040:274:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18448:119:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "18458:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18470:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18481:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18466:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18466:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "18458:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18500:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "18511:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18493:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18493:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18493:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18538:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18549:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18534:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18534:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "18554:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18527:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18527:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18527:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18409:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "18420:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "18428:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "18439:4:39", + "type": "" + } + ], + "src": "18319:248:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18624:176:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "18743:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "18745:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "18745:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18745:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "18655:1:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "18648:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18648:9:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "18641:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18641:17:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "18663:1:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18670:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "18738:1:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "18666:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18666:74:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "18660:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "18660:81:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "18637:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18637:105:39" + }, + "nodeType": "YulIf", + "src": "18634:131:39" + }, + { + "nodeType": "YulAssignment", + "src": "18774:20:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "18789:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "18792:1:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "18785:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18785:9:39" + }, + "variableNames": [ + { + "name": "product", + "nodeType": "YulIdentifier", + "src": "18774:7:39" + } + ] + } + ] + }, + "name": "checked_mul_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "18603:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "18606:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nodeType": "YulTypedName", + "src": "18612:7:39", + "type": "" + } + ], + "src": "18572:228:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18979:179:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18996:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19007:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18989:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18989:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18989:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19030:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19041:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19026:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19026:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19046:2:39", + "type": "", + "value": "29" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19019:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19019:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19019:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19069:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19080:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19065:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19065:18:39" + }, + { + "hexValue": "4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "19085:31:39", + "type": "", + "value": "Not enough collateral in pool" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19058:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19058:59:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19058:59:39" + }, + { + "nodeType": "YulAssignment", + "src": "19126:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19138:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19149:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19134:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19134:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19126:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_f52391ebd610d5d9d518357ceeaf45367429ac1fd3150210dcaba2450d5bcce8__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18956:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "18970:4:39", + "type": "" + } + ], + "src": "18805:353:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19292:168:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19302:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19314:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19325:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19310:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19310:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19302:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19344:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "19359:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19367:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "19355:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19355:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19337:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19337:74:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19337:74:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19431:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19442:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19427:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19427:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "19447:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19420:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19420:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19420:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "19253:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "19264:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "19272:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "19283:4:39", + "type": "" + } + ], + "src": "19163:297:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19639:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19656:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19667:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19649:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19649:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19649:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19690:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19701:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19686:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19686:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19706:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19679:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19679:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19679:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19729:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19740:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19725:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19725:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "19745:34:39", + "type": "", + "value": "AccessControl: sender must be an" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19718:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19718:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19718:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19800:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19811:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19796:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19796:18:39" + }, + { + "hexValue": "2061646d696e20746f206772616e74", + "kind": "string", + "nodeType": "YulLiteral", + "src": "19816:17:39", + "type": "", + "value": " admin to grant" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19789:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19789:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19789:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "19843:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19855:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19866:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19851:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19851:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19843:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "19616:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "19630:4:39", + "type": "" + } + ], + "src": "19465:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20055:173:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20072:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20083:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20065:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20065:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20065:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20106:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20117:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20102:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20102:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20122:2:39", + "type": "", + "value": "23" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20095:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20095:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20095:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20145:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20156:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20141:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20141:18:39" + }, + { + "hexValue": "504f4f4c3a3a4d696e74696e6720697320706175736564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "20161:25:39", + "type": "", + "value": "POOL::Minting is paused" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20134:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20134:53:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20134:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "20196:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20208:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20219:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20204:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20204:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20196:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_98984f103b51115a1419edfc23f41285c32977e7b02cc32e067bba007d26b4f9__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "20032:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20046:4:39", + "type": "" + } + ], + "src": "19881:347:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20407:179:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20424:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20435:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20417:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20417:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20417:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20458:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20469:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20454:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20454:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20474:2:39", + "type": "", + "value": "29" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20447:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20447:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20447:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20497:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20508:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20493:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20493:18:39" + }, + { + "hexValue": "436f6c6c61746572616c20726174696f206d757374206265203e3d2031", + "kind": "string", + "nodeType": "YulLiteral", + "src": "20513:31:39", + "type": "", + "value": "Collateral ratio must be >= 1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20486:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20486:59:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20486:59:39" + }, + { + "nodeType": "YulAssignment", + "src": "20554:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20566:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20577:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20562:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20562:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20554:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_2b6a8f4152754b6a991bf1b0a666b82b00923d2fd769bf1e3367643b70f91813__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "20384:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20398:4:39", + "type": "" + } + ], + "src": "20233:353:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20765:182:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20782:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20793:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20775:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20775:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20775:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20816:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20827:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20812:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20812:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20832:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20805:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20805:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20805:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20855:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20866:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20851:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20851:18:39" + }, + { + "hexValue": "5b506f6f6c277320436c6f7365645d3a204365696c696e672072656163686564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "20871:34:39", + "type": "", + "value": "[Pool's Closed]: Ceiling reached" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20844:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20844:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20844:62:39" + }, + { + "nodeType": "YulAssignment", + "src": "20915:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20927:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20938:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20923:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20923:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20915:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_cff49a4dc330adf1553dee705fac7862f639b33b74fda177589900b9506a9737__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "20742:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20756:4:39", + "type": "" + } + ], + "src": "20591:356:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21126:228:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21143:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21154:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21136:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21136:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21136:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21177:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21188:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21173:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21173:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21193:2:39", + "type": "", + "value": "38" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21166:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21166:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21166:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21216:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21227:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21212:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21212:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e743174314445493a207369676e61747572652069732065", + "kind": "string", + "nodeType": "YulLiteral", + "src": "21232:34:39", + "type": "", + "value": "POOL::mint1t1DEI: signature is e" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21205:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21205:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21205:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21287:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21298:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21283:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21283:18:39" + }, + { + "hexValue": "787069726564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "21303:8:39", + "type": "", + "value": "xpired" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21276:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21276:36:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21276:36:39" + }, + { + "nodeType": "YulAssignment", + "src": "21321:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21333:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21344:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21329:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21329:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21321:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_f836b804fb91fcbb3dafb5e724f5eeb776ededc2eaf47030c5f454694abcbafe__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "21103:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "21117:4:39", + "type": "" + } + ], + "src": "20952:402:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21533:226:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21550:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21561:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21543:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21543:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21543:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21584:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21595:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21580:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21580:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21600:2:39", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21573:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21573:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21573:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21623:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21634:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21619:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21619:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e743174314445493a20696e76616c6964207369676e6174", + "kind": "string", + "nodeType": "YulLiteral", + "src": "21639:34:39", + "type": "", + "value": "POOL::mint1t1DEI: invalid signat" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21612:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21612:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21612:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21694:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21705:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21690:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21690:18:39" + }, + { + "hexValue": "75726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "21710:6:39", + "type": "", + "value": "ures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21683:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21683:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21683:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "21726:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21738:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21749:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21734:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21734:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21726:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3871818a433a796d8749bf69d3757469c36cba69a6da101f4f86b64a03c25fdf__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "21510:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "21524:4:39", + "type": "" + } + ], + "src": "21359:400:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21938:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21955:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21966:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21948:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21948:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21948:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21989:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22000:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21985:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21985:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22005:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21978:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21978:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21978:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22028:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22039:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22024:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22024:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e6365", + "kind": "string", + "nodeType": "YulLiteral", + "src": "22044:34:39", + "type": "", + "value": "AccessControl: can only renounce" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22017:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22017:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22017:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22099:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22110:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22095:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22095:18:39" + }, + { + "hexValue": "20726f6c657320666f722073656c66", + "kind": "string", + "nodeType": "YulLiteral", + "src": "22115:17:39", + "type": "", + "value": " roles for self" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22088:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22088:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22088:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "22142:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22154:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22165:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22150:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22150:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22142:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "21915:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "21929:4:39", + "type": "" + } + ], + "src": "21764:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22331:481:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "22341:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22351:2:39", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "22345:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22362:32:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22380:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "22391:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22376:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22376:18:39" + }, + "variables": [ + { + "name": "tail_1", + "nodeType": "YulTypedName", + "src": "22366:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22410:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "22421:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22403:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22403:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22403:21:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22433:17:39", + "value": { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "22444:6:39" + }, + "variables": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "22437:3:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22459:27:39", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "22479:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "22473:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "22473:13:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "22463:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "22502:6:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "22510:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22495:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22495:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22495:22:39" + }, + { + "nodeType": "YulAssignment", + "src": "22526:25:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22537:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22548:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22533:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22533:18:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22526:3:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22560:29:39", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "22578:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "22586:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22574:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22574:15:39" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "22564:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22598:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22607:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "22602:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22666:120:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22687:3:39" + }, + { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "22698:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "22692:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "22692:13:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22680:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22680:26:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22680:26:39" + }, + { + "nodeType": "YulAssignment", + "src": "22719:19:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22730:3:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "22735:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22726:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22726:12:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22719:3:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "22751:25:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "22765:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "22773:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22761:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22761:15:39" + }, + "variableNames": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "22751:6:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "22628:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "22631:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "22625:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "22625:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "22639:18:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "22641:14:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "22650:1:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22653:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22646:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22646:9:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "22641:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "22621:3:39", + "statements": [] + }, + "src": "22617:169:39" + }, + { + "nodeType": "YulAssignment", + "src": "22795:11:39", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22803:3:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22795:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "22300:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "22311:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "22322:4:39", + "type": "" + } + ], + "src": "22180:632:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22991:231:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23008:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23019:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23001:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23001:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23001:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23042:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23053:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23038:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23038:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23058:2:39", + "type": "", + "value": "41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23031:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23031:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23031:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23081:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23092:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23077:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23077:18:39" + }, + { + "hexValue": "504f4f4c3a2043616c6c6572206973206e6f7420504152414d455445525f5345", + "kind": "string", + "nodeType": "YulLiteral", + "src": "23097:34:39", + "type": "", + "value": "POOL: Caller is not PARAMETER_SE" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23070:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23070:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23070:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23152:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23163:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23148:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23148:18:39" + }, + { + "hexValue": "545445525f524f4c45", + "kind": "string", + "nodeType": "YulLiteral", + "src": "23168:11:39", + "type": "", + "value": "TTER_ROLE" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23141:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23141:39:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23141:39:39" + }, + { + "nodeType": "YulAssignment", + "src": "23189:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23201:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23212:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23197:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23197:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23189:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_76b82cf0f5d67f7f31fa6377a21018dea36302e26d7842fad5ba832c330157dd__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "22968:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "22982:4:39", + "type": "" + } + ], + "src": "22817:405:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23496:338:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "23506:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23518:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23529:3:39", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23514:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23514:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23506:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23549:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "23560:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23542:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23542:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23542:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23587:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23598:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23583:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23583:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "23603:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23576:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23576:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23576:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23630:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23641:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23626:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23626:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "23646:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23619:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23619:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23619:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23673:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23684:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23669:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23669:18:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "23689:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23662:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23662:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23662:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23716:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23727:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23712:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23712:19:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "23733:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23705:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23705:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23705:35:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23760:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23771:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23756:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23756:19:39" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "23777:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23749:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23749:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23749:35:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23804:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23815:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23800:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23800:19:39" + }, + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "23821:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23793:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23793:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23793:35:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "23417:9:39", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "23428:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "23436:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "23444:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "23452:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "23460:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "23468:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "23476:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "23487:4:39", + "type": "" + } + ], + "src": "23227:607:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24013:246:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24030:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24041:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24023:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24023:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24023:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24064:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24075:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24060:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24060:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24080:2:39", + "type": "", + "value": "56" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24053:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24053:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24053:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24103:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24114:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24099:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24099:18:39" + }, + { + "hexValue": "436f6c6c61746572616c20726174696f206e6565647320746f20626520626574", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24119:34:39", + "type": "", + "value": "Collateral ratio needs to be bet" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24092:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24092:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24092:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24174:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24185:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24170:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24170:18:39" + }, + { + "hexValue": "7765656e202e30303030303120616e64202e393939393939", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24190:26:39", + "type": "", + "value": "ween .000001 and .999999" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24163:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24163:54:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24163:54:39" + }, + { + "nodeType": "YulAssignment", + "src": "24226:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24238:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24249:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24234:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24234:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24226:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3a4aaa4225031aefd603a0181e03bfba377ad02f3a40d8d4ff79e4b75af91117__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "23990:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "24004:4:39", + "type": "" + } + ], + "src": "23839:420:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24438:298:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24455:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24466:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24448:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24448:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24448:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24489:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24500:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24485:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24485:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24505:2:39", + "type": "", + "value": "68" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24478:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24478:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24478:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24528:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24539:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24524:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24524:18:39" + }, + { + "hexValue": "506f6f6c206365696c696e6720726561636865642c206e6f206d6f7265204445", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24544:34:39", + "type": "", + "value": "Pool ceiling reached, no more DE" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24517:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24517:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24517:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24599:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24610:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24595:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24595:18:39" + }, + { + "hexValue": "492063616e206265206d696e7465642077697468207468697320636f6c6c6174", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24615:34:39", + "type": "", + "value": "I can be minted with this collat" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24588:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24588:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24588:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24670:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24681:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24666:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24666:19:39" + }, + { + "hexValue": "6572616c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24687:6:39", + "type": "", + "value": "eral" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24659:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24659:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24659:35:39" + }, + { + "nodeType": "YulAssignment", + "src": "24703:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24715:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24726:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24711:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24711:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24703:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_415add743154eebc1c14f0dcbb6d42364bd9228c5bfab92187476352ba4cf3a4__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "24415:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "24429:4:39", + "type": "" + } + ], + "src": "24264:472:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24915:236:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24932:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24943:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24925:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24925:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24925:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24966:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24977:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24962:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24962:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24982:2:39", + "type": "", + "value": "46" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24955:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24955:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24955:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25005:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25016:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25001:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25001:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e744672616374696f6e616c4445493a207369676e617475", + "kind": "string", + "nodeType": "YulLiteral", + "src": "25021:34:39", + "type": "", + "value": "POOL::mintFractionalDEI: signatu" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24994:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24994:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24994:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25076:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25087:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25072:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25072:18:39" + }, + { + "hexValue": "726520697320657870697265642e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "25092:16:39", + "type": "", + "value": "re is expired." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25065:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25065:44:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25065:44:39" + }, + { + "nodeType": "YulAssignment", + "src": "25118:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25130:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25141:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25126:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25126:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "25118:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3517d2a2517b8811826efd915add7c546f6c6059a93aba596e992ef7ede2c237__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "24892:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "24906:4:39", + "type": "" + } + ], + "src": "24741:410:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25415:372:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "25425:76:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25435:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "25429:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25517:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25530:2:39", + "type": "", + "value": "96" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "25534:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "25526:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25526:15:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "25543:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "25522:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25522:24:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25510:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25510:37:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25510:37:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25567:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25572:2:39", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25563:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25563:12:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "25577:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25556:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25556:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25556:28:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25604:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25609:2:39", + "type": "", + "value": "52" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25600:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25600:12:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25622:2:39", + "type": "", + "value": "96" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "25626:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "25618:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25618:15:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "25635:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "25614:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25614:24:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25593:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25593:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25593:46:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25659:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25664:2:39", + "type": "", + "value": "72" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25655:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25655:12:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "25669:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25648:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25648:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25648:28:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25696:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25701:3:39", + "type": "", + "value": "104" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25692:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25692:13:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "25707:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25685:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25685:29:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25685:29:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25734:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25739:3:39", + "type": "", + "value": "136" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25730:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25730:13:39" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "25745:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25723:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25723:29:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25723:29:39" + }, + { + "nodeType": "YulAssignment", + "src": "25761:20:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25772:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25777:3:39", + "type": "", + "value": "168" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25768:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25768:13:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "25761:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "25351:3:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "25356:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "25364:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "25372:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "25380:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "25388:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "25396:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "25407:3:39", + "type": "" + } + ], + "src": "25156:631:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25966:233:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25983:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25994:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25976:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25976:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25976:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26017:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26028:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26013:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26013:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26033:2:39", + "type": "", + "value": "43" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26006:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26006:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26006:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26056:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26067:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26052:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26052:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e744672616374696f6e616c4445493a20696e76616c6964", + "kind": "string", + "nodeType": "YulLiteral", + "src": "26072:34:39", + "type": "", + "value": "POOL::mintFractionalDEI: invalid" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26045:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26045:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26045:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26127:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26138:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26123:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26123:18:39" + }, + { + "hexValue": "207369676e617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "26143:13:39", + "type": "", + "value": " signatures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26116:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26116:41:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26116:41:39" + }, + { + "nodeType": "YulAssignment", + "src": "26166:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26178:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26189:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26174:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26174:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26166:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_70791a0be90f5705149d45e0236213cb0328457b5d86e6288006e4f6774b09e7__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "25943:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "25957:4:39", + "type": "" + } + ], + "src": "25792:407:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26261:209:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26278:3:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "26289:5:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26283:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26283:12:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26271:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26271:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26271:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26316:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26321:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26312:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26312:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "26338:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26345:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26334:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26334:16:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26328:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26328:23:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26305:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26305:47:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26305:47:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26372:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26377:4:39", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26368:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26368:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "26394:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26401:4:39", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26390:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26390:16:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26384:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26384:23:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26361:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26361:47:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26361:47:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26428:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26433:4:39", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26424:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26424:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "26450:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26457:4:39", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26446:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26446:16:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26440:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26440:23:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26417:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26417:47:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26417:47:39" + } + ] + }, + "name": "abi_encode_struct_MintFD_Params", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "26245:5:39", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "26252:3:39", + "type": "" + } + ], + "src": "26204:266:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26638:102:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "26648:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26660:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26671:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26656:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26656:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26648:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "26716:6:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26724:9:39" + } + ], + "functionName": { + "name": "abi_encode_struct_MintFD_Params", + "nodeType": "YulIdentifier", + "src": "26684:31:39" + }, + "nodeType": "YulFunctionCall", + "src": "26684:50:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26684:50:39" + } + ] + }, + "name": "abi_encode_tuple_t_struct$_MintFD_Params_$3600_memory_ptr__to_t_struct$_MintFD_Params_$3600_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "26607:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "26618:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "26629:4:39", + "type": "" + } + ], + "src": "26475:265:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26843:147:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "26889:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26898:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26901:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "26891:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26891:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26891:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "26864:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26873:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "26860:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26860:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26885:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "26856:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26856:32:39" + }, + "nodeType": "YulIf", + "src": "26853:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "26914:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26930:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26924:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26924:16:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "26914:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "26949:35:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26969:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26980:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26965:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26965:18:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26959:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26959:25:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "26949:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "26801:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "26812:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "26824:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "26832:6:39", + "type": "" + } + ], + "src": "26745:245:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27169:174:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27186:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27197:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27179:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27179:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27179:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27220:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27231:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27216:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27216:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27236:2:39", + "type": "", + "value": "24" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27209:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27209:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27209:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27259:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27270:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27255:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27255:18:39" + }, + { + "hexValue": "4e6f7420656e6f756768204445555320696e707574746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "27275:26:39", + "type": "", + "value": "Not enough DEUS inputted" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27248:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27248:54:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27248:54:39" + }, + { + "nodeType": "YulAssignment", + "src": "27311:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27323:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27334:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27319:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27319:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27311:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_32c377f750f3acdff4f31738199007cf625ea4cb5a4b65f0253238ad0d6fe603__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "27146:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "27160:4:39", + "type": "" + } + ], + "src": "26995:348:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27522:166:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27539:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27550:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27532:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27532:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27532:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27573:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27584:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27569:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27569:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27589:2:39", + "type": "", + "value": "16" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27562:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27562:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27562:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27612:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27623:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27608:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27608:18:39" + }, + { + "hexValue": "616d6f756e743c3d64616f5368617265", + "kind": "string", + "nodeType": "YulLiteral", + "src": "27628:18:39", + "type": "", + "value": "amount<=daoShare" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27601:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27601:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27601:46:39" + }, + { + "nodeType": "YulAssignment", + "src": "27656:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27668:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27679:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27664:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27664:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27656:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_ffc61d1a84775e893520fbdfe0ea8909f9284081f97dd4e8ed1bc343abeb295e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "27499:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "27513:4:39", + "type": "" + } + ], + "src": "27348:340:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27822:168:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "27832:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27844:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27855:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27840:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27840:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27832:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27874:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "27885:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27867:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27867:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27867:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27912:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27923:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27908:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27908:18:39" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "27932:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27940:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "27928:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27928:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27901:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27901:83:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27901:83:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "27783:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "27794:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "27802:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "27813:4:39", + "type": "" + } + ], + "src": "27693:297:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28169:241:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28186:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28197:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28179:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28179:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28179:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28220:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28231:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28216:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28216:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28236:2:39", + "type": "", + "value": "51" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28209:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28209:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28209:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28259:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28270:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28255:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28255:18:39" + }, + { + "hexValue": "504f4f4c3a3a7265636f6c6c61746572616c697a654445493a205265636f6c6c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "28275:34:39", + "type": "", + "value": "POOL::recollateralizeDEI: Recoll" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28248:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28248:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28248:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28330:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28341:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28326:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28326:18:39" + }, + { + "hexValue": "61746572616c697a6520697320706175736564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "28346:21:39", + "type": "", + "value": "ateralize is paused" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28319:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28319:49:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28319:49:39" + }, + { + "nodeType": "YulAssignment", + "src": "28377:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28389:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28400:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28385:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28385:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "28377:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_565f0845894e0f662254a5093763af0fee3605d54c84edbcf11c672de6a88543__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "28146:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "28160:4:39", + "type": "" + } + ], + "src": "27995:415:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28589:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28606:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28617:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28599:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28599:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28599:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28640:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28651:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28636:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28636:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28656:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28629:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28629:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28629:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28679:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28690:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28675:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28675:18:39" + }, + { + "hexValue": "504f4f4c3a3a7265636f6c6c61746572616c697a654445493a207369676e6174", + "kind": "string", + "nodeType": "YulLiteral", + "src": "28695:34:39", + "type": "", + "value": "POOL::recollateralizeDEI: signat" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28668:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28668:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28668:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28750:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28761:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28746:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28746:18:39" + }, + { + "hexValue": "75726520697320657870697265642e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "28766:17:39", + "type": "", + "value": "ure is expired." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28739:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28739:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28739:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "28793:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28805:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28816:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28801:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28801:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "28793:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_43ec8f409eb317e256e176d402e36ec6af276af1f8f749e4d9fbe21bcd7bc664__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "28566:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "28580:4:39", + "type": "" + } + ], + "src": "28415:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29140:691:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "29150:76:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29160:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "29154:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "29242:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29255:2:39", + "type": "", + "value": "96" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "29259:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "29251:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29251:15:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "29268:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "29247:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29247:24:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29235:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29235:37:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29235:37:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "29281:25:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "29298:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29303:2:39", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29294:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29294:12:39" + }, + "variables": [ + { + "name": "pos_1", + "nodeType": "YulTypedName", + "src": "29285:5:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "29315:27:39", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "29335:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "29329:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "29329:13:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "29319:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "29351:14:39", + "value": { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29360:5:39" + }, + "variableNames": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29351:5:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "29374:14:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29384:4:39", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "29378:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "29397:29:39", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "29415:6:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "29423:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29411:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29411:15:39" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "29401:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "29435:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29444:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "29439:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29503:126:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29524:5:39" + }, + { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "29537:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "29531:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "29531:13:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29517:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29517:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29517:28:39" + }, + { + "nodeType": "YulAssignment", + "src": "29558:23:39", + "value": { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29571:5:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "29578:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29567:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29567:14:39" + }, + "variableNames": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29558:5:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "29594:25:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "29608:6:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "29616:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29604:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29604:15:39" + }, + "variableNames": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "29594:6:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29465:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "29468:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "29462:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "29462:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "29476:18:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "29478:14:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29487:1:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29490:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29483:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29483:9:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29478:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "29458:3:39", + "statements": [] + }, + "src": "29454:175:39" + }, + { + "expression": { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29645:5:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29660:2:39", + "type": "", + "value": "96" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "29664:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "29656:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29656:15:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "29673:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "29652:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29652:24:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29638:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29638:39:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29638:39:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29697:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29704:2:39", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29693:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29693:14:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "29709:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29686:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29686:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29686:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29736:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29743:2:39", + "type": "", + "value": "52" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29732:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29732:14:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "29748:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29725:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29725:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29725:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29775:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29782:2:39", + "type": "", + "value": "84" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29771:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29771:14:39" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "29787:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29764:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29764:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29764:30:39" + }, + { + "nodeType": "YulAssignment", + "src": "29803:22:39", + "value": { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29814:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29821:3:39", + "type": "", + "value": "116" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29810:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29810:15:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "29803:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "29076:3:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "29081:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "29089:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "29097:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "29105:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "29113:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "29121:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "29132:3:39", + "type": "" + } + ], + "src": "28831:1000:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29889:205:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "29899:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29908:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "29903:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29968:63:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "29993:3:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29998:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29989:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29989:11:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "30012:3:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "30017:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30008:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30008:11:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "30002:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "30002:18:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29982:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29982:39:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29982:39:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29929:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "29932:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "29926:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "29926:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "29940:19:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "29942:15:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29951:1:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29954:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29947:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29947:10:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29942:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "29922:3:39", + "statements": [] + }, + "src": "29918:113:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30057:31:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "30070:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30075:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30066:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30066:16:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30084:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30059:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30059:27:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30059:27:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "30046:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30049:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "30043:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "30043:13:39" + }, + "nodeType": "YulIf", + "src": "30040:48:39" + } + ] + }, + "name": "copy_memory_to_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "29867:3:39", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "29872:3:39", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "29877:6:39", + "type": "" + } + ], + "src": "29836:258:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30296:991:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "30306:32:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30324:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30335:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30320:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30320:18:39" + }, + "variables": [ + { + "name": "tail_1", + "nodeType": "YulTypedName", + "src": "30310:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30354:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "30365:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30347:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30347:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30347:25:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30381:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30391:2:39", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "30385:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30413:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "30424:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30409:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30409:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30429:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30402:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30402:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30402:30:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30441:17:39", + "value": { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "30452:6:39" + }, + "variables": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "30445:3:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30467:27:39", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "30487:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "30481:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "30481:13:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "30471:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "30510:6:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30518:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30503:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30503:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30503:22:39" + }, + { + "nodeType": "YulAssignment", + "src": "30534:25:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30545:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30556:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30541:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30541:18:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "30534:3:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30568:53:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30590:9:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30605:1:39", + "type": "", + "value": "5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30608:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "30601:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30601:14:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30586:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30586:30:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30618:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30582:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30582:39:39" + }, + "variables": [ + { + "name": "tail_2", + "nodeType": "YulTypedName", + "src": "30572:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30630:29:39", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "30648:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "30656:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30644:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30644:15:39" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "30634:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30668:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30677:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "30672:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30736:522:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "30757:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "30770:6:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30778:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "30766:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30766:22:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30790:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30762:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30762:95:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30750:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30750:108:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30750:108:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30871:23:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "30887:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "30881:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "30881:13:39" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "30875:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30907:25:39", + "value": { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "30929:2:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "30923:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "30923:9:39" + }, + "variables": [ + { + "name": "length_1", + "nodeType": "YulTypedName", + "src": "30911:8:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "30952:6:39" + }, + { + "name": "length_1", + "nodeType": "YulIdentifier", + "src": "30960:8:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30945:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30945:24:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30945:24:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "31008:2:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "31012:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31004:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31004:11:39" + }, + { + "arguments": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "31021:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "31029:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31017:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31017:15:39" + }, + { + "name": "length_1", + "nodeType": "YulIdentifier", + "src": "31034:8:39" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "30982:21:39" + }, + "nodeType": "YulFunctionCall", + "src": "30982:61:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30982:61:39" + }, + { + "nodeType": "YulAssignment", + "src": "31056:122:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "31074:6:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length_1", + "nodeType": "YulIdentifier", + "src": "31090:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31100:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31086:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31086:17:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31105:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "31082:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31082:90:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31070:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31070:103:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "31175:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31066:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31066:112:39" + }, + "variableNames": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "31056:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "31191:25:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "31205:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "31213:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31201:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31201:15:39" + }, + "variableNames": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "31191:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "31229:19:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "31240:3:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "31245:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31236:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31236:12:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "31229:3:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "30698:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30701:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "30695:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "30695:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "30709:18:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "30711:14:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "30720:1:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30723:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30716:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30716:9:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "30711:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "30691:3:39", + "statements": [] + }, + "src": "30687:571:39" + }, + { + "nodeType": "YulAssignment", + "src": "31267:14:39", + "value": { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "31275:6:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "31267:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "30257:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "30268:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "30276:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "30287:4:39", + "type": "" + } + ], + "src": "30099:1188:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "31466:234:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31483:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31494:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31476:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31476:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31476:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31517:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31528:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31513:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31513:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31533:2:39", + "type": "", + "value": "44" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31506:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31506:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31506:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31556:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31567:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31552:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31552:18:39" + }, + { + "hexValue": "504f4f4c3a3a7265636f6c6c61746572616c697a654445493a20696e76616c69", + "kind": "string", + "nodeType": "YulLiteral", + "src": "31572:34:39", + "type": "", + "value": "POOL::recollateralizeDEI: invali" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31545:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31545:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31545:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31627:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31638:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31623:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31623:18:39" + }, + { + "hexValue": "64207369676e617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "31643:14:39", + "type": "", + "value": "d signatures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31616:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31616:42:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31616:42:39" + }, + { + "nodeType": "YulAssignment", + "src": "31667:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31679:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31690:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31675:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31675:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "31667:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_f8eb31fdc269657c54ee10149955fecbcb75254d3eeec631bdecc57de525010b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "31443:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "31457:4:39", + "type": "" + } + ], + "src": "31292:408:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "31737:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31754:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31757:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31747:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31747:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31747:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31851:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31854:4:39", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31844:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31844:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31844:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31875:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31878:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "31868:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31868:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31868:15:39" + } + ] + }, + "name": "panic_error_0x32", + "nodeType": "YulFunctionDefinition", + "src": "31705:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32107:250:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "32117:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32129:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32140:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32125:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32125:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "32117:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32160:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "32171:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32153:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32153:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32153:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32198:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32209:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32194:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32194:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "32214:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32187:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32187:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32187:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32241:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32252:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32237:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32237:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "32257:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32230:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32230:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32230:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32284:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32295:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32280:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32280:18:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "32300:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32273:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32273:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32273:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32327:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32338:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32323:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32323:19:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "32344:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32316:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32316:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32316:35:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "32044:9:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "32055:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "32063:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "32071:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "32079:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "32087:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "32098:4:39", + "type": "" + } + ], + "src": "31894:463:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32536:244:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32553:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32564:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32546:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32546:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32546:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32587:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32598:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32583:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32583:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32603:2:39", + "type": "", + "value": "54" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32576:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32576:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32576:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32626:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32637:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32622:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32622:18:39" + }, + { + "hexValue": "504f4f4c3a3a72656465656d416c676f726974686d69634445493a20436f6c6c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "32642:34:39", + "type": "", + "value": "POOL::redeemAlgorithmicDEI: Coll" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32615:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32615:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32615:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32697:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32708:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32693:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32693:18:39" + }, + { + "hexValue": "61746572616c20726174696f206d7573742062652030", + "kind": "string", + "nodeType": "YulLiteral", + "src": "32713:24:39", + "type": "", + "value": "ateral ratio must be 0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32686:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32686:52:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32686:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "32747:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32759:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32770:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32755:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32755:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "32747:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_219e324e833041c644ccb1dd3dba73aaa878497ddb310916decd8247cfffb1bd__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "32513:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "32527:4:39", + "type": "" + } + ], + "src": "32362:418:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32959:238:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32976:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32987:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32969:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32969:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32969:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33010:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33021:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33006:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33006:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33026:2:39", + "type": "", + "value": "48" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32999:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32999:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32999:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33049:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33060:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33045:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33045:18:39" + }, + { + "hexValue": "4445493a3a72656465656d416c676f726974686d69634445493a207369676e61", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33065:34:39", + "type": "", + "value": "DEI::redeemAlgorithmicDEI: signa" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33038:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33038:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33038:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33120:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33131:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33116:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33116:18:39" + }, + { + "hexValue": "7475726520697320657870697265642e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33136:18:39", + "type": "", + "value": "ture is expired." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33109:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33109:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33109:46:39" + }, + { + "nodeType": "YulAssignment", + "src": "33164:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33176:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33187:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33172:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33172:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "33164:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_af86e93bd0220a55e8ca62f5f35862820e5999de1371ac209bb45c45b39ee5de__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "32936:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "32950:4:39", + "type": "" + } + ], + "src": "32785:412:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33376:236:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33393:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33404:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33386:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33386:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33386:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33427:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33438:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33423:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33423:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33443:2:39", + "type": "", + "value": "46" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33416:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33416:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33416:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33466:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33477:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33462:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33462:18:39" + }, + { + "hexValue": "504f4f4c3a3a72656465656d416c676f726974686d69634445493a20696e7661", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33482:34:39", + "type": "", + "value": "POOL::redeemAlgorithmicDEI: inva" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33455:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33455:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33455:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33537:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33548:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33533:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33533:18:39" + }, + { + "hexValue": "6c6964207369676e617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33553:16:39", + "type": "", + "value": "lid signatures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33526:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33526:44:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33526:44:39" + }, + { + "nodeType": "YulAssignment", + "src": "33579:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33591:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33602:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33587:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33587:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "33579:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_bff4c2607c2670a7edf36f88b5d5987db2ccc6a59b36f486c4c57f193ba00833__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "33353:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "33367:4:39", + "type": "" + } + ], + "src": "33202:410:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33791:226:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33808:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33819:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33801:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33801:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33801:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33842:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33853:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33838:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33838:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33858:2:39", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33831:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33831:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33831:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33881:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33892:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33877:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33877:18:39" + }, + { + "hexValue": "504f4f4c3a3a6275794261636b444555533a204275796261636b206973207061", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33897:34:39", + "type": "", + "value": "POOL::buyBackDEUS: Buyback is pa" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33870:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33870:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33870:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33952:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33963:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33948:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33948:18:39" + }, + { + "hexValue": "75736564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33968:6:39", + "type": "", + "value": "used" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33941:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33941:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33941:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "33984:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33996:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34007:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33992:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33992:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "33984:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0f701899e5d254af158b94e181e8c864fa1fa8407b8e83a84b212f1856c034bb__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "33768:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "33782:4:39", + "type": "" + } + ], + "src": "33617:400:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34196:229:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34213:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34224:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34206:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34206:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34206:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34247:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34258:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34243:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34243:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34263:2:39", + "type": "", + "value": "39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34236:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34236:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34236:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34286:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34297:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34282:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34282:18:39" + }, + { + "hexValue": "4445493a3a6275794261636b444555533a207369676e61747572652069732065", + "kind": "string", + "nodeType": "YulLiteral", + "src": "34302:34:39", + "type": "", + "value": "DEI::buyBackDEUS: signature is e" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34275:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34275:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34275:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34357:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34368:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34353:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34353:18:39" + }, + { + "hexValue": "7870697265642e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "34373:9:39", + "type": "", + "value": "xpired." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34346:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34346:37:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34346:37:39" + }, + { + "nodeType": "YulAssignment", + "src": "34392:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34404:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34415:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34400:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34400:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "34392:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_74a9279f050c6419792bc3daa57da050d8e2f426f944681941d34e8909be7eac__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "34173:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "34187:4:39", + "type": "" + } + ], + "src": "34022:403:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34604:227:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34621:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34632:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34614:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34614:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34614:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34655:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34666:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34651:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34651:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34671:2:39", + "type": "", + "value": "37" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34644:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34644:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34644:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34694:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34705:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34690:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34690:18:39" + }, + { + "hexValue": "504f4f4c3a3a6275794261636b444555533a20696e76616c6964207369676e61", + "kind": "string", + "nodeType": "YulLiteral", + "src": "34710:34:39", + "type": "", + "value": "POOL::buyBackDEUS: invalid signa" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34683:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34683:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34683:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34765:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34776:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34761:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34761:18:39" + }, + { + "hexValue": "7475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "34781:7:39", + "type": "", + "value": "tures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34754:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34754:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34754:35:39" + }, + { + "nodeType": "YulAssignment", + "src": "34798:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34810:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34821:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34806:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34806:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "34798:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_c668331e1a5c68ea41572b6fbf581e9b4ce7392915c1ff6a6872ae765618f9ee__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "34581:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "34595:4:39", + "type": "" + } + ], + "src": "34430:401:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35009:102:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "35019:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35031:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35042:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35027:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35027:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "35019:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "35087:6:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35095:9:39" + } + ], + "functionName": { + "name": "abi_encode_struct_MintFD_Params", + "nodeType": "YulIdentifier", + "src": "35055:31:39" + }, + "nodeType": "YulFunctionCall", + "src": "35055:50:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35055:50:39" + } + ] + }, + "name": "abi_encode_tuple_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__to_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "34978:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "34989:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "35000:4:39", + "type": "" + } + ], + "src": "34836:275:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35290:176:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35307:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35318:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35300:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35300:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35300:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35341:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35352:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35337:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35337:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35357:2:39", + "type": "", + "value": "26" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35330:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35330:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35330:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35380:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35391:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35376:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35376:18:39" + }, + { + "hexValue": "436f6c6c61746572616c20726174696f206d7573742062652030", + "kind": "string", + "nodeType": "YulLiteral", + "src": "35396:28:39", + "type": "", + "value": "Collateral ratio must be 0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35369:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35369:56:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35369:56:39" + }, + { + "nodeType": "YulAssignment", + "src": "35434:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35446:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35457:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35442:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35442:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "35434:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_f64a17d208f26e05f2312b5ee80f462bf5bab19979dfd330950359be93bd2d66__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "35267:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "35281:4:39", + "type": "" + } + ], + "src": "35116:350:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35645:234:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35662:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35673:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35655:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35655:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35655:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35696:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35707:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35692:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35692:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35712:2:39", + "type": "", + "value": "44" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35685:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35685:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35685:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35735:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35746:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35731:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35731:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e74416c676f726974686d69634445493a20696e76616c69", + "kind": "string", + "nodeType": "YulLiteral", + "src": "35751:34:39", + "type": "", + "value": "POOL::mintAlgorithmicDEI: invali" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35724:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35724:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35724:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35806:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35817:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35802:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35802:18:39" + }, + { + "hexValue": "64207369676e617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "35822:14:39", + "type": "", + "value": "d signatures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35795:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35795:42:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35795:42:39" + }, + { + "nodeType": "YulAssignment", + "src": "35846:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35858:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35869:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35854:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35854:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "35846:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_5a2d3f9bcb3c5bd0b1926b1856db5dd186810b6e73d5cb9f87ee953c4da7fee2__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "35622:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "35636:4:39", + "type": "" + } + ], + "src": "35471:408:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36058:238:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36075:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36086:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36068:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36068:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36068:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36109:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36120:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36105:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36105:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36125:2:39", + "type": "", + "value": "48" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36098:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36098:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36098:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36148:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36159:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36144:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36144:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "36164:34:39", + "type": "", + "value": "AccessControl: sender must be an" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36137:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36137:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36137:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36219:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36230:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36215:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36215:18:39" + }, + { + "hexValue": "2061646d696e20746f207265766f6b65", + "kind": "string", + "nodeType": "YulLiteral", + "src": "36235:18:39", + "type": "", + "value": " admin to revoke" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36208:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36208:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36208:46:39" + }, + { + "nodeType": "YulAssignment", + "src": "36263:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36275:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36286:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36271:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36271:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "36263:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "36035:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "36049:4:39", + "type": "" + } + ], + "src": "35884:412:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36475:174:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36492:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36503:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36485:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36485:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36485:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36526:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36537:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36522:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36522:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36542:2:39", + "type": "", + "value": "24" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36515:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36515:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36515:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36565:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36576:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36561:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36561:18:39" + }, + { + "hexValue": "504f4f4c3a3a796f7520617265206e6f7420747275737479", + "kind": "string", + "nodeType": "YulLiteral", + "src": "36581:26:39", + "type": "", + "value": "POOL::you are not trusty" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36554:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36554:54:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36554:54:39" + }, + { + "nodeType": "YulAssignment", + "src": "36617:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36629:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36640:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36625:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36625:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "36617:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_7b7d20f9ca6e9adc6378137dbeda8a962bb9bf07440b2b9db28bb53f4e464fce__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "36452:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "36466:4:39", + "type": "" + } + ], + "src": "36301:348:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36828:313:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36845:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36856:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36838:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36838:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36838:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36879:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36890:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36875:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36875:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36895:2:39", + "type": "", + "value": "83" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36868:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36868:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36868:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36918:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36929:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36914:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36914:18:39" + }, + { + "hexValue": "504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20436f6c6c61", + "kind": "string", + "nodeType": "YulLiteral", + "src": "36934:34:39", + "type": "", + "value": "POOL::redeemFractionalDEI: Colla" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36907:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36907:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36907:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36989:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37000:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36985:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36985:18:39" + }, + { + "hexValue": "746572616c20726174696f206e6565647320746f206265206265747765656e20", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37005:34:39", + "type": "", + "value": "teral ratio needs to be between " + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36978:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36978:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36978:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37060:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37071:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37056:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37056:19:39" + }, + { + "hexValue": "2e30303030303120616e64202e393939393939", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37077:21:39", + "type": "", + "value": ".000001 and .999999" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37049:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37049:50:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37049:50:39" + }, + { + "nodeType": "YulAssignment", + "src": "37108:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37120:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37131:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37116:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37116:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "37108:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_1eb003467dd04b32fe18359370bc0d0e41e237ed2bf1be23765de9081983dd0d__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "36805:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "36819:4:39", + "type": "" + } + ], + "src": "36654:487:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "37320:236:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37337:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37348:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37330:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37330:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37330:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37371:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37382:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37367:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37367:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37387:2:39", + "type": "", + "value": "46" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37360:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37360:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37360:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37410:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37421:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37406:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37406:18:39" + }, + { + "hexValue": "4445493a3a72656465656d4672616374696f6e616c4445493a207369676e6174", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37426:34:39", + "type": "", + "value": "DEI::redeemFractionalDEI: signat" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37399:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37399:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37399:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37481:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37492:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37477:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37477:18:39" + }, + { + "hexValue": "7572652069732065787069726564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37497:16:39", + "type": "", + "value": "ure is expired" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37470:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37470:44:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37470:44:39" + }, + { + "nodeType": "YulAssignment", + "src": "37523:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37535:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37546:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37531:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37531:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "37523:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_d441a1ecab801b1c575c77e3c185431fd7b0029d666fc7417a9f7556b3f83d6f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "37297:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "37311:4:39", + "type": "" + } + ], + "src": "37146:410:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "37735:235:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37752:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37763:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37745:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37745:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37745:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37786:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37797:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37782:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37782:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37802:2:39", + "type": "", + "value": "45" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37775:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37775:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37775:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37825:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37836:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37821:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37821:18:39" + }, + { + "hexValue": "504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20696e76616c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37841:34:39", + "type": "", + "value": "POOL::redeemFractionalDEI: inval" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37814:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37814:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37814:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37896:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37907:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37892:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37892:18:39" + }, + { + "hexValue": "6964207369676e617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37912:15:39", + "type": "", + "value": "id signatures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37885:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37885:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37885:43:39" + }, + { + "nodeType": "YulAssignment", + "src": "37937:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37949:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37960:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37945:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37945:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "37937:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3cf3652b2acfb73942e459b043ef1100fffabb4093e48d3162412f77ff7ce9c4__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "37712:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "37726:4:39", + "type": "" + } + ], + "src": "37561:409:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38112:137:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "38122:27:39", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "38142:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "38136:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "38136:13:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "38126:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "38184:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38192:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38180:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38180:17:39" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "38199:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "38204:6:39" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "38158:21:39" + }, + "nodeType": "YulFunctionCall", + "src": "38158:53:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38158:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "38220:23:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "38231:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "38236:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38227:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38227:16:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "38220:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "38088:3:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "38093:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "38104:3:39", + "type": "" + } + ], + "src": "37975:274:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38428:181:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38445:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38456:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38438:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38438:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38438:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38479:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38490:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38475:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38475:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38495:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38468:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38468:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38468:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38518:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38529:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38514:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38514:18:39" + }, + { + "hexValue": "5472616e7366657248656c7065723a205452414e534645525f4641494c4544", + "kind": "string", + "nodeType": "YulLiteral", + "src": "38534:33:39", + "type": "", + "value": "TransferHelper: TRANSFER_FAILED" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38507:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38507:61:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38507:61:39" + }, + { + "nodeType": "YulAssignment", + "src": "38577:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38589:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38600:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38585:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38585:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "38577:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "38405:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "38419:4:39", + "type": "" + } + ], + "src": "38254:355:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38771:241:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "38781:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38793:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38804:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38789:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38789:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "38781:4:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "38816:52:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38826:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "38820:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38884:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "38899:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "38907:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "38895:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38895:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38877:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38877:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38877:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38931:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38942:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38927:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38927:18:39" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "38951:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "38959:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "38947:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38947:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38920:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38920:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38920:43:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38983:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38994:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38979:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38979:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "38999:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38972:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38972:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38972:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "38724:9:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "38735:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "38743:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "38751:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "38762:4:39", + "type": "" + } + ], + "src": "38614:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39191:226:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39208:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39219:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39201:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39201:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39201:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39242:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39253:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39238:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39238:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39258:2:39", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39231:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39231:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39231:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39281:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39292:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39277:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39277:18:39" + }, + { + "hexValue": "5472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641", + "kind": "string", + "nodeType": "YulLiteral", + "src": "39297:34:39", + "type": "", + "value": "TransferHelper: TRANSFER_FROM_FA" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39270:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39270:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39270:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39352:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39363:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39348:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39348:18:39" + }, + { + "hexValue": "494c4544", + "kind": "string", + "nodeType": "YulLiteral", + "src": "39368:6:39", + "type": "", + "value": "ILED" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39341:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39341:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39341:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "39384:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39396:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39407:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39392:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39392:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "39384:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "39168:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "39182:4:39", + "type": "" + } + ], + "src": "39017:400:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39596:224:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39613:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39624:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39606:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39606:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39606:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39647:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39658:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39643:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39643:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39663:2:39", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39636:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39636:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39636:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39686:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39697:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39682:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39682:18:39" + }, + { + "hexValue": "456e756d657261626c655365743a20696e646578206f7574206f6620626f756e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "39702:34:39", + "type": "", + "value": "EnumerableSet: index out of boun" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39675:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39675:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39675:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39757:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39768:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39753:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39753:18:39" + }, + { + "hexValue": "6473", + "kind": "string", + "nodeType": "YulLiteral", + "src": "39773:4:39", + "type": "", + "value": "ds" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39746:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39746:32:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39746:32:39" + }, + { + "nodeType": "YulAssignment", + "src": "39787:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39799:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39810:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39795:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39795:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "39787:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "39573:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "39587:4:39", + "type": "" + } + ], + "src": "39422:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39857:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39874:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39877:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39867:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39867:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39867:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39971:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39974:4:39", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39964:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39964:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39964:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39995:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39998:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "39988:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39988:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39988:15:39" + } + ] + }, + "name": "panic_error_0x31", + "nodeType": "YulFunctionDefinition", + "src": "39825:184:39" + } + ] + }, + "contents": "{\n { }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_array_bytes_calldata_dyn_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value3_1, value4_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n value3 := value3_1\n value4 := value4_1\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function panic_error_0x41()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory_5709() -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, 0xc0)\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function array_allocation_size_array_uint256_dyn(length) -> size\n {\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n size := add(shl(5, length), 0x20)\n }\n function abi_decode_array_uint256_dyn(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let _2 := 0x20\n let dst := allocate_memory(array_allocation_size_array_uint256_dyn(_1))\n let dst_1 := dst\n mstore(dst, _1)\n dst := add(dst, _2)\n let srcEnd := add(add(offset, shl(5, _1)), _2)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, _2)\n for { } lt(src, srcEnd) { src := add(src, _2) }\n {\n mstore(dst, calldataload(src))\n dst := add(dst, _2)\n }\n array := dst_1\n }\n function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value0 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n }\n function abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n value4 := calldataload(add(headStart, 128))\n value5 := calldataload(add(headStart, 160))\n value6 := calldataload(add(headStart, 192))\n }\n function abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n value4 := calldataload(add(headStart, 128))\n let offset := calldataload(add(headStart, 160))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value5_1, value6_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n value5 := value5_1\n value6 := value6_1\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_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_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_array_bytes_dyn(offset, end) -> array\n {\n let _1 := 0x1f\n if iszero(slt(add(offset, _1), end)) { revert(0, 0) }\n let _2 := calldataload(offset)\n let _3 := 0x20\n let dst := allocate_memory(array_allocation_size_array_uint256_dyn(_2))\n let dst_1 := dst\n mstore(dst, _2)\n dst := add(dst, _3)\n let srcEnd := add(add(offset, shl(5, _2)), _3)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, _3)\n for { } lt(src, srcEnd) { src := add(src, _3) }\n {\n let innerOffset := calldataload(src)\n let _4 := 0xffffffffffffffff\n if gt(innerOffset, _4)\n {\n let _5 := 0\n revert(_5, _5)\n }\n let _6 := add(offset, innerOffset)\n if iszero(slt(add(_6, 63), end))\n {\n let _7 := 0\n revert(_7, _7)\n }\n let _8 := calldataload(add(_6, _3))\n let _9 := 64\n if gt(_8, _4) { panic_error_0x41() }\n let array_1 := allocate_memory(add(and(add(_8, _1), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), _3))\n mstore(array_1, _8)\n if gt(add(add(_6, _8), _9), end)\n {\n let _10 := 0\n revert(_10, _10)\n }\n calldatacopy(add(array_1, _3), add(_6, _9), _8)\n mstore(add(add(array_1, _8), _3), 0)\n mstore(dst, array_1)\n dst := add(dst, _3)\n }\n array := dst_1\n }\n function abi_decode_tuple_t_struct$_RecollateralizeDEI_$1556_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if slt(sub(dataEnd, _2), 0xc0) { revert(0, 0) }\n let value := allocate_memory_5709()\n mstore(value, calldataload(_2))\n mstore(add(value, 32), calldataload(add(_2, 32)))\n let offset_1 := calldataload(add(_2, 64))\n if gt(offset_1, _1) { revert(0, 0) }\n mstore(add(value, 64), abi_decode_array_uint256_dyn(add(_2, offset_1), dataEnd))\n mstore(add(value, 96), calldataload(add(_2, 96)))\n mstore(add(value, 128), calldataload(add(_2, 128)))\n let offset_2 := calldataload(add(_2, 160))\n if gt(offset_2, _1) { revert(0, 0) }\n mstore(add(value, 160), abi_decode_array_bytes_dyn(add(_2, offset_2), dataEnd))\n value0 := value\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_memory_ptrt_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n value0 := calldataload(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n value1 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let offset_1 := calldataload(add(headStart, 128))\n if gt(offset_1, _1) { revert(0, 0) }\n let value4_1, value5_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, offset_1), dataEnd)\n value4 := value4_1\n value5 := value5_1\n }\n function abi_decode_tuple_t_addresst_uint256t_address(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := abi_decode_address(add(headStart, 64))\n }\n function abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value4_1, value5_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n value4 := value4_1\n value5 := value5_1\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function abi_encode_tuple_t_stringliteral_38c9fd1b67df6e999cac6aaf315cc13e0fa4fc296b57f92466d27a378c17f081__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 91)\n mstore(add(headStart, 64), \"POOL::collectRedemption: Must wa\")\n mstore(add(headStart, 96), \"it for redemption_delay blocks b\")\n mstore(add(headStart, 128), \"efore collecting redemption\")\n tail := add(headStart, 160)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function abi_encode_tuple_t_stringliteral_de458c40ee20c89c9807b7a8a5908e3319b480e8b007f55d3d683bc68bb7186e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 25)\n mstore(add(headStart, 64), \"POOL::Redeeming is paused\")\n tail := add(headStart, 96)\n }\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_c70433350355bf0543fc06a466fe44bcb01281d5a63b8bb87c74c17650f3e4c7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Collateral ratio must be == 1\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_0553f3220b1c65f13a1a0bcfbae12cc9d57080d375095d8011e479f9a164d51f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"POOL::mintAlgorithmicDEI: signat\")\n mstore(add(headStart, 96), \"ure is expired.\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed(pos, value3, value2, value1, value0) -> end\n {\n mstore(pos, and(shl(96, value0), 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000))\n mstore(add(pos, 20), value1)\n mstore(add(pos, 52), value2)\n mstore(add(pos, 84), value3)\n end := add(pos, 116)\n }\n function abi_encode_bytes_calldata(start, length, pos) -> end\n {\n mstore(pos, length)\n calldatacopy(add(pos, 0x20), start, length)\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n }\n function abi_encode_tuple_t_bytes32_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n let tail_1 := add(headStart, 64)\n mstore(headStart, value0)\n let _1 := 32\n mstore(add(headStart, _1), 64)\n let pos := tail_1\n mstore(tail_1, value2)\n pos := add(headStart, 96)\n let tail_2 := add(add(headStart, shl(5, value2)), 96)\n let srcPtr := value1\n let i := 0\n for { } lt(i, value2) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0))\n let rel_offset_of_tail := calldataload(srcPtr)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), value1), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n let value := add(rel_offset_of_tail, value1)\n let length := calldataload(value)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n if sgt(value1, sub(calldatasize(), length)) { revert(0, 0) }\n tail_2 := abi_encode_bytes_calldata(add(value, _1), length, tail_2)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n tail := tail_2\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_3b8d4b54db08ed890798fdc55ba1c410b1b90a23a79193c7486d04051b31717b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"POOL::redeem1t1DEI: invalid sign\")\n mstore(add(headStart, 96), \"atures\")\n tail := add(headStart, 128)\n }\n function checked_exp_helper(_base, exponent) -> power, base\n {\n let power_1 := 1\n power := power_1\n base := _base\n for { } gt(exponent, power_1) { }\n {\n if gt(base, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, base)) { panic_error_0x11() }\n if and(exponent, power_1) { power := mul(power, base) }\n base := mul(base, base)\n exponent := shr(power_1, exponent)\n }\n }\n function checked_exp_unsigned(base, exponent) -> power\n {\n if iszero(exponent)\n {\n power := 1\n leave\n }\n if iszero(base)\n {\n power := 0\n leave\n }\n switch base\n case 1 {\n power := 1\n leave\n }\n case 2 {\n if gt(exponent, 255) { panic_error_0x11() }\n power := shl(exponent, 1)\n leave\n }\n if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n {\n power := exp(base, exponent)\n leave\n }\n let power_1, base_1 := checked_exp_helper(base, exponent)\n if gt(power_1, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, base_1)) { panic_error_0x11() }\n power := mul(power_1, base_1)\n }\n function checked_exp_t_uint256_t_uint256(base, exponent) -> power\n {\n power := checked_exp_unsigned(base, exponent)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n function 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 checked_mul_t_uint256(x, y) -> product\n {\n if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n product := mul(x, y)\n }\n function abi_encode_tuple_t_stringliteral_f52391ebd610d5d9d518357ceeaf45367429ac1fd3150210dcaba2450d5bcce8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Not enough collateral in pool\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"AccessControl: sender must be an\")\n mstore(add(headStart, 96), \" admin to grant\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_98984f103b51115a1419edfc23f41285c32977e7b02cc32e067bba007d26b4f9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 23)\n mstore(add(headStart, 64), \"POOL::Minting is paused\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_2b6a8f4152754b6a991bf1b0a666b82b00923d2fd769bf1e3367643b70f91813__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Collateral ratio must be >= 1\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_cff49a4dc330adf1553dee705fac7862f639b33b74fda177589900b9506a9737__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"[Pool's Closed]: Ceiling reached\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_f836b804fb91fcbb3dafb5e724f5eeb776ededc2eaf47030c5f454694abcbafe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"POOL::mint1t1DEI: signature is e\")\n mstore(add(headStart, 96), \"xpired\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_3871818a433a796d8749bf69d3757469c36cba69a6da101f4f86b64a03c25fdf__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"POOL::mint1t1DEI: invalid signat\")\n mstore(add(headStart, 96), \"ures\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"AccessControl: can only renounce\")\n mstore(add(headStart, 96), \" roles for self\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, mload(srcPtr))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_encode_tuple_t_stringliteral_76b82cf0f5d67f7f31fa6377a21018dea36302e26d7842fad5ba832c330157dd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"POOL: Caller is not PARAMETER_SE\")\n mstore(add(headStart, 96), \"TTER_ROLE\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 224)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n mstore(add(headStart, 160), value5)\n mstore(add(headStart, 192), value6)\n }\n function abi_encode_tuple_t_stringliteral_3a4aaa4225031aefd603a0181e03bfba377ad02f3a40d8d4ff79e4b75af91117__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 56)\n mstore(add(headStart, 64), \"Collateral ratio needs to be bet\")\n mstore(add(headStart, 96), \"ween .000001 and .999999\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_415add743154eebc1c14f0dcbb6d42364bd9228c5bfab92187476352ba4cf3a4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 68)\n mstore(add(headStart, 64), \"Pool ceiling reached, no more DE\")\n mstore(add(headStart, 96), \"I can be minted with this collat\")\n mstore(add(headStart, 128), \"eral\")\n tail := add(headStart, 160)\n }\n function abi_encode_tuple_t_stringliteral_3517d2a2517b8811826efd915add7c546f6c6059a93aba596e992ef7ede2c237__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"POOL::mintFractionalDEI: signatu\")\n mstore(add(headStart, 96), \"re is expired.\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed(pos, value5, value4, value3, value2, value1, value0) -> end\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000\n mstore(pos, and(shl(96, value0), _1))\n mstore(add(pos, 20), value1)\n mstore(add(pos, 52), and(shl(96, value2), _1))\n mstore(add(pos, 72), value3)\n mstore(add(pos, 104), value4)\n mstore(add(pos, 136), value5)\n end := add(pos, 168)\n }\n function abi_encode_tuple_t_stringliteral_70791a0be90f5705149d45e0236213cb0328457b5d86e6288006e4f6774b09e7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"POOL::mintFractionalDEI: invalid\")\n mstore(add(headStart, 96), \" signatures\")\n tail := add(headStart, 128)\n }\n function abi_encode_struct_MintFD_Params(value, pos)\n {\n mstore(pos, mload(value))\n mstore(add(pos, 0x20), mload(add(value, 0x20)))\n mstore(add(pos, 0x40), mload(add(value, 0x40)))\n mstore(add(pos, 0x60), mload(add(value, 0x60)))\n }\n function abi_encode_tuple_t_struct$_MintFD_Params_$3600_memory_ptr__to_t_struct$_MintFD_Params_$3600_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 128)\n abi_encode_struct_MintFD_Params(value0, headStart)\n }\n function abi_decode_tuple_t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := mload(headStart)\n value1 := mload(add(headStart, 32))\n }\n function abi_encode_tuple_t_stringliteral_32c377f750f3acdff4f31738199007cf625ea4cb5a4b65f0253238ad0d6fe603__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"Not enough DEUS inputted\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_ffc61d1a84775e893520fbdfe0ea8909f9284081f97dd4e8ed1bc343abeb295e__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), \"amount<=daoShare\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_stringliteral_565f0845894e0f662254a5093763af0fee3605d54c84edbcf11c672de6a88543__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 51)\n mstore(add(headStart, 64), \"POOL::recollateralizeDEI: Recoll\")\n mstore(add(headStart, 96), \"ateralize is paused\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_43ec8f409eb317e256e176d402e36ec6af276af1f8f749e4d9fbe21bcd7bc664__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"POOL::recollateralizeDEI: signat\")\n mstore(add(headStart, 96), \"ure is expired.\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed(pos, value5, value4, value3, value2, value1, value0) -> end\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000\n mstore(pos, and(shl(96, value0), _1))\n let pos_1 := add(pos, 20)\n let length := mload(value1)\n pos_1 := pos_1\n let _2 := 0x20\n let srcPtr := add(value1, _2)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, mload(srcPtr))\n pos_1 := add(pos_1, _2)\n srcPtr := add(srcPtr, _2)\n }\n mstore(pos_1, and(shl(96, value2), _1))\n mstore(add(pos_1, 20), value3)\n mstore(add(pos_1, 52), value4)\n mstore(add(pos_1, 84), value5)\n end := add(pos_1, 116)\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 abi_encode_tuple_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n let tail_1 := add(headStart, 64)\n mstore(headStart, value0)\n let _1 := 32\n mstore(add(headStart, _1), 64)\n let pos := tail_1\n let length := mload(value1)\n mstore(tail_1, length)\n pos := add(headStart, 96)\n let tail_2 := add(add(headStart, shl(5, length)), 96)\n let srcPtr := add(value1, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0))\n let _2 := mload(srcPtr)\n let length_1 := mload(_2)\n mstore(tail_2, length_1)\n copy_memory_to_memory(add(_2, _1), add(tail_2, _1), length_1)\n tail_2 := add(add(tail_2, and(add(length_1, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), _1)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n tail := tail_2\n }\n function abi_encode_tuple_t_stringliteral_f8eb31fdc269657c54ee10149955fecbcb75254d3eeec631bdecc57de525010b__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), \"POOL::recollateralizeDEI: invali\")\n mstore(add(headStart, 96), \"d signatures\")\n tail := add(headStart, 128)\n }\n function panic_error_0x32()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 160)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n }\n function abi_encode_tuple_t_stringliteral_219e324e833041c644ccb1dd3dba73aaa878497ddb310916decd8247cfffb1bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 54)\n mstore(add(headStart, 64), \"POOL::redeemAlgorithmicDEI: Coll\")\n mstore(add(headStart, 96), \"ateral ratio must be 0\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_af86e93bd0220a55e8ca62f5f35862820e5999de1371ac209bb45c45b39ee5de__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 48)\n mstore(add(headStart, 64), \"DEI::redeemAlgorithmicDEI: signa\")\n mstore(add(headStart, 96), \"ture is expired.\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_bff4c2607c2670a7edf36f88b5d5987db2ccc6a59b36f486c4c57f193ba00833__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"POOL::redeemAlgorithmicDEI: inva\")\n mstore(add(headStart, 96), \"lid signatures\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_0f701899e5d254af158b94e181e8c864fa1fa8407b8e83a84b212f1856c034bb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"POOL::buyBackDEUS: Buyback is pa\")\n mstore(add(headStart, 96), \"used\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_74a9279f050c6419792bc3daa57da050d8e2f426f944681941d34e8909be7eac__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"DEI::buyBackDEUS: signature is e\")\n mstore(add(headStart, 96), \"xpired.\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_c668331e1a5c68ea41572b6fbf581e9b4ce7392915c1ff6a6872ae765618f9ee__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"POOL::buyBackDEUS: invalid signa\")\n mstore(add(headStart, 96), \"tures\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__to_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 128)\n abi_encode_struct_MintFD_Params(value0, headStart)\n }\n function abi_encode_tuple_t_stringliteral_f64a17d208f26e05f2312b5ee80f462bf5bab19979dfd330950359be93bd2d66__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 26)\n mstore(add(headStart, 64), \"Collateral ratio must be 0\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_5a2d3f9bcb3c5bd0b1926b1856db5dd186810b6e73d5cb9f87ee953c4da7fee2__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), \"POOL::mintAlgorithmicDEI: invali\")\n mstore(add(headStart, 96), \"d signatures\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 48)\n mstore(add(headStart, 64), \"AccessControl: sender must be an\")\n mstore(add(headStart, 96), \" admin to revoke\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_7b7d20f9ca6e9adc6378137dbeda8a962bb9bf07440b2b9db28bb53f4e464fce__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"POOL::you are not trusty\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_1eb003467dd04b32fe18359370bc0d0e41e237ed2bf1be23765de9081983dd0d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 83)\n mstore(add(headStart, 64), \"POOL::redeemFractionalDEI: Colla\")\n mstore(add(headStart, 96), \"teral ratio needs to be between \")\n mstore(add(headStart, 128), \".000001 and .999999\")\n tail := add(headStart, 160)\n }\n function abi_encode_tuple_t_stringliteral_d441a1ecab801b1c575c77e3c185431fd7b0029d666fc7417a9f7556b3f83d6f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"DEI::redeemFractionalDEI: signat\")\n mstore(add(headStart, 96), \"ure is expired\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_3cf3652b2acfb73942e459b043ef1100fffabb4093e48d3162412f77ff7ce9c4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"POOL::redeemFractionalDEI: inval\")\n mstore(add(headStart, 96), \"id signatures\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 31)\n mstore(add(headStart, 64), \"TransferHelper: TRANSFER_FAILED\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"TransferHelper: TRANSFER_FROM_FA\")\n mstore(add(headStart, 96), \"ILED\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"EnumerableSet: index out of boun\")\n mstore(add(headStart, 96), \"ds\")\n tail := add(headStart, 128)\n }\n function panic_error_0x31()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": { + "1600": [ + { + "length": 32, + "start": 3265 + }, + { + "length": 32, + "start": 5509 + }, + { + "length": 32, + "start": 8833 + }, + { + "length": 32, + "start": 11005 + }, + { + "length": 32, + "start": 11759 + }, + { + "length": 32, + "start": 13513 + }, + { + "length": 32, + "start": 14752 + }, + { + "length": 32, + "start": 18351 + } + ] + }, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506004361061032b5760003560e01c80637901330b116101b2578063b235d468116100f9578063ca15c873116100a2578063daa504851161007c578063daa50485146106f7578063e3d84d5e146106ff578063eb2d746114610712578063fede5c9c1461072557600080fd5b8063ca15c873146106c8578063cb73999f146106db578063d547741f146106e457600080fd5b8063c410ca1b116100d3578063c410ca1b14610699578063c6301e5d146106ac578063c74ec56a146106bf57600080fd5b8063b235d46814610657578063b6258aaa1461067d578063c3355b8d1461069057600080fd5b80639010d07c1161015b578063978b73b511610135578063978b73b51461061c578063a217fddf1461062f578063abae2c4c1461063757600080fd5b80639010d07c146105e357806391d14854146105f6578063928d2b311461060957600080fd5b80637e4831d31161018c5780637e4831d31461058d5780637f877f85146105b257806388d19f1b146105da57600080fd5b80637901330b146105695780637b0461e91461057c5780637d55094d1461058557600080fd5b806340e14b7811610276578063564b81ef1161021f5780636d2c5615116101f95780636d2c5615146104c65780636d82e314146104fd57806374347c441461052457600080fd5b8063564b81ef146104905780635de207cc146104965780636526a12a146104bd57600080fd5b80634ebbe762116102505780634ebbe7621461046257806350c9ecd91461047557806354f9769d1461047d57600080fd5b806340e14b781461043e57806342d15aec146104515780634c6349341461045957600080fd5b80632f2ff15d116102d85780633648b7dc116102b25780633648b7dc1461040257806336568abe1461040b5780633b92da471461041e57600080fd5b80632f2ff15d146103b557806332ad1ee4146103c857806334ddb95d146103db57600080fd5b806315128425116103095780631512842514610376578063248a9ca31461037f578063254cd2bd146103a257600080fd5b806308a7493d14610330578063101197c71461036357806312ace5a21461036c575b600080fd5b61035061033e366004615193565b600a6020526000908152604090205481565b6040519081526020015b60405180910390f35b61035060075481565b61037461072e565b005b61035060115481565b61035061038d3660046151ae565b60009081526020819052604090206002015490565b6103746103b0366004615213565b6108e7565b6103746103c3366004615274565b610fde565b6103506103d6366004615213565b611094565b6103507f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610350600c5481565b610374610419366004615274565b61176a565b61035061042c366004615193565b60096020526000908152604090205481565b61035061044c3660046153d6565b611819565b610374611a37565b61035060105481565b610374610470366004615413565b611afe565b610374611c3d565b61035061048b36600461545f565b611cfb565b46610350565b6103507fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f24050981565b610350600e5481565b6013546104ed90760100000000000000000000000000000000000000000000900460ff1681565b604051901515815260200161035a565b6103507f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e53081565b6014546105449073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161035a565b610374610577366004615274565b612586565b610350600b5481565b61037461271a565b6013546104ed9074010000000000000000000000000000000000000000900460ff1681565b6013546104ed9077010000000000000000000000000000000000000000000000900460ff1681565b61035060125481565b6105446105f13660046154d3565b6127d5565b6104ed610604366004615274565b6127f6565b6103746106173660046155f7565b61280e565b61037461062a366004615213565b612f1a565b610350600081565b610350610645366004615193565b600d6020526000908152604090205481565b6013546104ed907501000000000000000000000000000000000000000000900460ff1681565b61035061068b3660046151ae565b6134bd565b61035060055481565b6103746106a73660046156b0565b6135ac565b6103506106ba366004615213565b613a91565b610350600f5481565b6103506106d63660046151ae565b614079565b61035060065481565b6103746106f2366004615274565b614090565b610374614138565b61037461070d366004615737565b6141f4565b610374610720366004615773565b61431d565b61035060085481565b601154336000908152600d6020526040902054439161074c916157fa565b1115610805576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605b60248201527f504f4f4c3a3a636f6c6c656374526564656d7074696f6e3a204d75737420776160448201527f697420666f7220726564656d7074696f6e5f64656c617920626c6f636b73206260648201527f65666f726520636f6c6c656374696e6720726564656d7074696f6e0000000000608482015260a4015b60405180910390fd5b336000908152600960205260408120548190819081901561084d573360009081526009602052604081208054919055600c54909250610845908390615812565b600c55600193505b336000908152600a60205260409020541561088d5750336000908152600a602052604081208054919055600b54610885908290615812565b600b55600192505b83156108b7576004546108b79073ffffffffffffffffffffffffffffffffffffffff163384614b02565b82156108e1576001546108e19073ffffffffffffffffffffffffffffffffffffffff163383614b02565b50505050565b6013547501000000000000000000000000000000000000000000900460ff161561096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa1580156109df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a039190615829565b14610a6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203d3d203100000060448201526064016107fc565b43831015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90610bed9084908790879060040161588b565b602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e919061596d565b610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a72656465656d3174314445493a20696e76616c6964207369676e60448201527f617475726573000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000610ce77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b610cf19088615ac2565b6013546040517f068d54aa000000000000000000000000000000000000000000000000000000008152600481018990526024810183905291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063068d54aa90604401602060405180830381865afa158015610d6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d919190615829565b9050620f4240600654620f4240610da89190615812565b610db29083615afd565b610dbc9190615ac2565b600b546001546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152929350909173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e569190615829565b610e609190615812565b811115610ec9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a6020526040902054610ee49082906157fa565b336000908152600a6020526040902055600b54610f029082906157fa565b600b55336000908152600d60205260409020439055600654620f424090610f29908a615afd565b610f339190615ac2565b60126000828254610f4491906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae906044015b600060405180830381600087803b158015610fbc57600080fd5b505af1158015610fd0573d6000803e3d6000fd5b505050505050505050505050565b600082815260208190526040902060020154610ffa90336127f6565b611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084016107fc565b6110908282614c72565b5050565b60135460009074010000000000000000000000000000000000000000900460ff161561111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa15801561118e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b29190615829565b101561121a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203e3d203100000060448201526064016107fc565b600e54600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015289929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561128f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b39190615829565b6112bd9190615812565b6112c791906157fa565b111561132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5b506f6f6c277320436c6f7365645d3a204365696c696e67207265616368656460448201526064016107fc565b438410156113bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a6d696e743174314445493a207369676e6174757265206973206560448201527f787069726564000000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906114b29084908890889060040161588b565b602060405180830381865afa1580156114cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f3919061596d565b61157e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6d696e743174314445493a20696e76616c6964207369676e617460448201527f757265730000000000000000000000000000000000000000000000000000000060648201526084016107fc565b60006115ab7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6115b59089615afd565b6013546040517f882ab63a000000000000000000000000000000000000000000000000000000008152600481018a90526024810183905291925073ffffffffffffffffffffffffffffffffffffffff169063882ab63a90604401602060405180830381865afa15801561162c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116509190615829565b9250620f4240600554620f42406116679190615812565b6116719085615afd565b61167b9190615ac2565b6001549093506116a39073ffffffffffffffffffffffffffffffffffffffff1633308b614cd8565b620f4240600554846116b59190615afd565b6116bf9190615ac2565b601260008282546116d091906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561174757600080fd5b505af115801561175b573d6000803e3d6000fd5b50505050505095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016107fc565b6110908282614e76565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ad9190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561191e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119429190615829565b6003546040517f2480fcea00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690632480fcea9061199e908890600401615b3a565b602060405180830381865afa1580156119bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119df9190615829565b9050620f42408211156119f357620f424091505b6000620f4240611a038486615afd565b611a0d9190615ac2565b905080821115611a2b57611a218183615812565b9695505050505050565b50600095945050505050565b611a617f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f336127f6565b611a6a57600080fd5b6013805460ff76010000000000000000000000000000000000000000000080830482161581027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f2fda313d9b5bb0b73bd003153f2fccbc0dca49791fdd1184dfad82b44f54bd2e93611af49390049091161515815260200190565b60405180910390a1565b611b287fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f240509336127f6565b611bb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f504f4f4c3a2043616c6c6572206973206e6f7420504152414d455445525f534560448201527f545445525f524f4c45000000000000000000000000000000000000000000000060648201526084016107fc565b600e8790556010869055601185905560058490556006839055600782905560088190556040805188815260208101889052908101869052606081018590526080810184905260a0810183905260c081018290527f17fe98b66d27bd793ea01bd8a23a54acab8eeb167d9eb016a0c7cd71c573920c9060e00160405180910390a150505050505050565b611c677f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf336127f6565b611c7057600080fd5b6013805460ff7701000000000000000000000000000000000000000000000080830482161581027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f4f40fd1c59f78d7a2220da638cd9400daba01e57c7965702f390bf13133cc31f93611af49390049091161515815260200190565b60135460009074010000000000000000000000000000000000000000900460ff1615611d83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015611df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e179190615829565b9050620f424081108015611e2b5750600081115b611eb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f436f6c6c61746572616c20726174696f206e6565647320746f2062652062657460448201527f7765656e202e30303030303120616e64202e393939393939000000000000000060648201526084016107fc565b600e54600b546001546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528c929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f509190615829565b611f5a9190615812565b611f6491906157fa565b1115612019576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f506f6f6c206365696c696e6720726561636865642c206e6f206d6f7265204445908201527f492063616e206265206d696e7465642077697468207468697320636f6c6c617460648201527f6572616c00000000000000000000000000000000000000000000000000000000608482015260a4016107fc565b438510156120a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a207369676e61747560448201527f726520697320657870697265642e00000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018d90529390941b909316605484015260688301899052608883018890524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906121829084908990899060cc0161588b565b602060405180830381865afa15801561219f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c3919061596d565b61224f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a20696e76616c696460448201527f207369676e61747572657300000000000000000000000000000000000000000060648201526084016107fc565b61227a6040518060800160405280600081526020016000815260200160008152602001600081525090565b60006122a77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6122b1908d615afd565b604080516080810182528b8152602081018d9052808201929092526060820186905260135490517f537a30a70000000000000000000000000000000000000000000000000000000081529193506000925073ffffffffffffffffffffffffffffffffffffffff169063537a30a79061232d908590600401615b7e565b6040805180830381865afa158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190615ba9565b90955090508a8111156123dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e6f7420656e6f756768204445555320696e707574746564000000000000000060448201526064016107fc565b620f4240600554620f42406123f19190615812565b6123fb9087615afd565b6124059190615ac2565b600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820184905291965073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561247d57600080fd5b505af1158015612491573d6000803e3d6000fd5b50506001546124bb925073ffffffffffffffffffffffffffffffffffffffff16905033308f614cd8565b620f4240600554866124cd9190615afd565b6124d79190615ac2565b601260008282546124e891906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810187905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561255f57600080fd5b505af1158015612573573d6000803e3d6000fd5b5050505050505050979650505050505050565b6125b07f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e530336127f6565b6125b957600080fd5b601254821115612625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f616d6f756e743c3d64616f53686172650000000000000000000000000000000060448201526064016107fc565b6003546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018590529091169063b4f56b2690604401600060405180830381600087803b15801561269957600080fd5b505af11580156126ad573d6000803e3d6000fd5b5050505081601260008282546126c39190615812565b90915550506040805183815273ffffffffffffffffffffffffffffffffffffffff831660208201527f3a708f2f1c75b12457d207cf1e259ab9f87bbfccb29672903acf4661bd342e49910160405180910390a15050565b6127447fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b336127f6565b61274d57600080fd5b6013805460ff7401000000000000000000000000000000000000000080830482161581027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f6bdfe227d5db299c59aa56d5f846f40dbd73b271aaa78e18ed74fc3e00b8aa6b93611af49390049091161515815260200190565b60008281526020819052604081206127ed9083614edc565b90505b92915050565b60008281526020819052604081206127ed9083614ef2565b601354760100000000000000000000000000000000000000000000900460ff16156128bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a205265636f6c6c60448201527f61746572616c697a65206973207061757365640000000000000000000000000060648201526084016107fc565b438160800151101561294f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b6002546040828101516004546060850151608086015193516000956129989573ffffffffffffffffffffffffffffffffffffffff91821695949190911692914690602001615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052805160209091012060035460a08501517f6793f0ac00000000000000000000000000000000000000000000000000000000845291935073ffffffffffffffffffffffffffffffffffffffff1691636793f0ac91612a2991859190600401615c78565b602060405180830381865afa158015612a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6a919061596d565b612af6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6000612b237f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b8351612b2f9190615afd565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc49190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c599190615829565b60035460408088015190517f2480fcea00000000000000000000000000000000000000000000000000000000815292935060009273ffffffffffffffffffffffffffffffffffffffff90921691632480fcea91612cb891600401615b3a565b602060405180830381865afa158015612cd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf99190615829565b60135460408801518051929350600092839273ffffffffffffffffffffffffffffffffffffffff169163fc01106191899190612d3790600190615812565b81518110612d4757612d47615d36565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015260448101869052606481018890526084810187905260a4016040805180830381865afa158015612dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de39190615ba9565b90925090506000612e157f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b612e1f9084615ac2565b905060008960600151600854601054620f4240612e3c91906157fa565b612e469190615812565b612e509085615afd565b612e5a9190615ac2565b600154909150612e829073ffffffffffffffffffffffffffffffffffffffff16333085614cd8565b600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815233928101929092526024820183905273ffffffffffffffffffffffffffffffffffffffff169063b4f56b26906044015b600060405180830381600087803b158015612ef657600080fd5b505af1158015612f0a573d6000803e3d6000fd5b5050505050505050505050505050565b6013547501000000000000000000000000000000000000000000900460ff1615612fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561300d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130319190615829565b156130be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20436f6c6c60448201527f61746572616c20726174696f206d75737420626520300000000000000000000060648201526084016107fc565b4383101561314e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4445493a3a72656465656d416c676f726974686d69634445493a207369676e6160448201527f7475726520697320657870697265642e0000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906132419084908790879060040161588b565b602060405180830381865afa15801561325e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613282919061596d565b61330e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20696e766160448201527f6c6964207369676e61747572657300000000000000000000000000000000000060648201526084016107fc565b6006548690620f4240906133229082615812565b61332c9083615afd565b6133369190615ac2565b9050600086613348620f424084615afd565b6133529190615ac2565b336000908152600960205260409020549091506133709082906157fa565b33600090815260096020526040902055600c5461338e9082906157fa565b600c55336000908152600d60205260409020439055600654620f4240906133b5908a615afd565b6133bf9190615ac2565b601260008282546133d091906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561344757600080fd5b505af115801561345b573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820185905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401610fa2565b6000620f4240826134ef7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015613560573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135849190615829565b61358e9190615812565b6135989190615afd565b6135a29190615afd565b6127f09190615ac2565b60135477010000000000000000000000000000000000000000000000900460ff1615613659576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6275794261636b444555533a204275796261636b20697320706160448201527f757365640000000000000000000000000000000000000000000000000000000060648201526084016107fc565b438310156136e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4445493a3a6275794261636b444555533a207369676e6174757265206973206560448201527f7870697265642e0000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460045460009173ffffffffffffffffffffffffffffffffffffffff9081169188911687874660405160200161372696959493929190615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906137b59084908790879060040161588b565b602060405180830381865afa1580156137d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f6919061596d565b613882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f504f4f4c3a3a6275794261636b444555533a20696e76616c6964207369676e6160448201527f747572657300000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000604051806080016040528061389889611819565b81526020018781526020018860018a516138b29190615812565b815181106138c2576138c2615d36565b602002602001015181526020018981525090506000620f4240600754620f42406138ec9190615812565b6013546040517f3c04af9f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633c04af9f90613942908790600401615b7e565b602060405180830381865afa15801561395f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139839190615829565b61398d9190615afd565b6139979190615ac2565b905060006139c67f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6139d09083615ac2565b600480546040517fa8a778ae0000000000000000000000000000000000000000000000000000000081523392810192909252602482018d905291925073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015613a4857600080fd5b505af1158015613a5c573d6000803e3d6000fd5b5050600154613a85925073ffffffffffffffffffffffffffffffffffffffff1690503383614b02565b50505050505050505050565b60135460009074010000000000000000000000000000000000000000900460ff1615613b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613baa9190615829565b15613c11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f436f6c6c61746572616c20726174696f206d757374206265203000000000000060448201526064016107fc565b43841015613ca1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90613d949084908890889060040161588b565b602060405180830381865afa158015613db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dd5919061596d565b613e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6013546040517f14da4ee1000000000000000000000000000000000000000000000000000000008152600481018890526024810189905273ffffffffffffffffffffffffffffffffffffffff909116906314da4ee190604401602060405180830381865afa158015613ed7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613efb9190615829565b9150620f4240600554620f4240613f129190615812565b613f1c9084615afd565b613f269190615ac2565b9150620f424060055483613f3a9190615afd565b613f449190615ac2565b60126000828254613f5591906157fa565b9091555050600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820189905273ffffffffffffffffffffffffffffffffffffffff169063a8a778ae90604401600060405180830381600087803b158015613fcd57600080fd5b505af1158015613fe1573d6000803e3d6000fd5b50506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810186905273ffffffffffffffffffffffffffffffffffffffff909116925063b4f56b269150604401600060405180830381600087803b15801561405757600080fd5b505af115801561406b573d6000803e3d6000fd5b505050505095945050505050565b60008181526020819052604081206127f090614f31565b6000828152602081905260409020600201546140ac90336127f6565b61180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b650000000000000000000000000000000060648201526084016107fc565b6141627fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c3857336127f6565b61416b57600080fd5b6013805460ff750100000000000000000000000000000000000000000080830482161581027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f5860c5063a65e23cea4e2e2925f1a841bb6d1bc9615bd425f8dd084980b0514193611af49390049091161515815260200190565b61421e7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336127f6565b614284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f504f4f4c3a3a796f7520617265206e6f7420747275737479000000000000000060448201526064016107fc565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af11580156142f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e1919061596d565b6013547501000000000000000000000000000000000000000000900460ff16156143a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015614413573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144379190615829565b9050620f42408110801561444b5750600081115b6144fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20436f6c6c6160448201527f746572616c20726174696f206e6565647320746f206265206265747765656e2060648201527f2e30303030303120616e64202e39393939393900000000000000000000000000608482015260a4016107fc565b4384101561458d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4445493a3a72656465656d4672616374696f6e616c4445493a207369676e617460448201527f757265206973206578706972656400000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018c90529390941b909316605484015260688301889052608883018790524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906146669084908890889060cc0161588b565b602060405180830381865afa158015614683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146a7919061596d565b614733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20696e76616c60448201527f6964207369676e6174757265730000000000000000000000000000000000000060648201526084016107fc565b60008060008990506000620f4240600654620f42406147529190615812565b61475c908e615afd565b6147669190615ac2565b90506000620f42406147788884615afd565b6147829190615ac2565b61478c9083615812565b90508a61479c620f424083615afd565b6147a69190615ac2565b945060006147d57f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6147df9084615ac2565b90506000620f42406147f18a84615afd565b6147fb9190615ac2565b90508461480b620f424083615afd565b6148159190615ac2565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015292985090965073ffffffffffffffffffffffffffffffffffffffff1694506370a08231935060240191506148789050565b602060405180830381865afa158015614895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148b99190615829565b6148c39190615812565b81111561492c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a60205260409020546149479082906157fa565b336000908152600a6020526040902055600b546149659082906157fa565b600b55336000908152600960205260409020546149839083906157fa565b33600090815260096020526040902055600c546149a19083906157fa565b600c55336000908152600d60205260409020439055600654620f4240906149c8908c615afd565b6149d29190615ac2565b601260008282546149e391906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018c905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015614a5a57600080fd5b505af1158015614a6e573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820186905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401612edc565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16614f3b565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691614b999190615d65565b6000604051808303816000865af19150503d8060008114614bd6576040519150601f19603f3d011682016040523d82523d6000602084013e614bdb565b606091505b5091509150818015614c05575080511580614c05575080806020019051810190614c05919061596d565b614c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016107fc565b5050505050565b6000828152602081905260409020614c8a9082614ad0565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691614d779190615d65565b6000604051808303816000865af19150503d8060008114614db4576040519150601f19603f3d011682016040523d82523d6000602084013e614db9565b606091505b5091509150818015614de3575080511580614de3575080806020019051810190614de3919061596d565b614e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016107fc565b505050505050565b6000828152602081905260409020614e8e9082614f8a565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000614ee88383614fbc565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156127ed565b60006127f0825490565b6000818152600183016020526040812054614f82575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556127f0565b5060006127f0565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16615077565b8154600090821061504f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f647300000000000000000000000000000000000000000000000000000000000060648201526084016107fc565b82600001828154811061506457615064615d36565b9060005260206000200154905092915050565b6000818152600183016020526040812054801561516057600061509b600183615812565b85549091506000906150af90600190615812565b905060008660000182815481106150c8576150c8615d36565b90600052602060002001549050808760000184815481106150eb576150eb615d36565b6000918252602090912001556151028360016157fa565b6000828152600189016020526040902055865487908061512457615124615d81565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506127f0565b60009150506127f0565b803573ffffffffffffffffffffffffffffffffffffffff8116811461518e57600080fd5b919050565b6000602082840312156151a557600080fd5b6127ed8261516a565b6000602082840312156151c057600080fd5b5035919050565b60008083601f8401126151d957600080fd5b50813567ffffffffffffffff8111156151f157600080fd5b6020830191508360208260051b850101111561520c57600080fd5b9250929050565b60008060008060006080868803121561522b57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561525757600080fd5b615263888289016151c7565b969995985093965092949392505050565b6000806040838503121561528757600080fd5b823591506152976020840161516a565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff811182821017156152f2576152f26152a0565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561533f5761533f6152a0565b604052919050565b600067ffffffffffffffff821115615361576153616152a0565b5060051b60200190565b600082601f83011261537c57600080fd5b8135602061539161538c83615347565b6152f8565b82815260059290921b840181019181810190868411156153b057600080fd5b8286015b848110156153cb57803583529183019183016153b4565b509695505050505050565b6000602082840312156153e857600080fd5b813567ffffffffffffffff8111156153ff57600080fd5b61540b8482850161536b565b949350505050565b600080600080600080600060e0888a03121561542e57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080600080600080600060c0888a03121561547a57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a088013567ffffffffffffffff8111156154b457600080fd5b6154c08a828b016151c7565b989b979a50959850939692959293505050565b600080604083850312156154e657600080fd5b50508035926020909101359150565b6000601f838184011261550757600080fd5b8235602061551761538c83615347565b82815260059290921b8501810191818101908784111561553657600080fd5b8287015b848110156155eb57803567ffffffffffffffff8082111561555b5760008081fd5b818a0191508a603f8301126155705760008081fd5b85820135604082821115615586576155866152a0565b6155b5887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c850116016152f8565b92508183528c818386010111156155cc5760008081fd5b818185018985013750600090820187015284525091830191830161553a565b50979650505050505050565b60006020828403121561560957600080fd5b813567ffffffffffffffff8082111561562157600080fd5b9083019060c0828603121561563557600080fd5b61563d6152cf565b823581526020830135602082015260408301358281111561565d57600080fd5b6156698782860161536b565b604083015250606083013560608201526080830135608082015260a08301358281111561569557600080fd5b6156a1878286016154f5565b60a08301525095945050505050565b60008060008060008060a087890312156156c957600080fd5b86359550602087013567ffffffffffffffff808211156156e857600080fd5b6156f48a838b0161536b565b96506040890135955060608901359450608089013591508082111561571857600080fd5b5061572589828a016151c7565b979a9699509497509295939492505050565b60008060006060848603121561574c57600080fd5b6157558461516a565b92506020840135915061576a6040850161516a565b90509250925092565b60008060008060008060a0878903121561578c57600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff8111156157bf57600080fd5b61572589828a016151c7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561580d5761580d6157cb565b500190565b600082821015615824576158246157cb565b500390565b60006020828403121561583b57600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b8781101561595f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18a360301811261591657600080fd5b8901803567ffffffffffffffff81111561592f57600080fd5b8036038b131561593e57600080fd5b61594b8782888501615842565b9650505091830191908301906001016158b5565b509298975050505050505050565b60006020828403121561597f57600080fd5b8151801515811461598f57600080fd5b9392505050565b600181815b808511156159ef57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156159d5576159d56157cb565b808516156159e257918102915b93841c939080029061599b565b509250929050565b600082615a06575060016127f0565b81615a13575060006127f0565b8160018114615a295760028114615a3357615a4f565b60019150506127f0565b60ff841115615a4457615a446157cb565b50506001821b6127f0565b5060208310610133831016604e8410600b8410161715615a72575081810a6127f0565b615a7c8383615996565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615aae57615aae6157cb565b029392505050565b60006127ed83836159f7565b600082615af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615b3557615b356157cb565b500290565b6020808252825182820181905260009190848201906040850190845b81811015615b7257835183529284019291840191600101615b56565b50909695505050505050565b81518152602080830151908201526040808301519082015260608083015190820152608081016127f0565b60008060408385031215615bbc57600080fd5b505080516020909101519092909150565b60007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808960601b1683526014830188516020808b0160005b83811015615c2257815185529382019390820190600101615c06565b5050505060609790971b168652505060148401929092526034830152605482015260740192915050565b60005b83811015615c67578181015183820152602001615c4f565b838111156108e15750506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015615d28577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088870301845281518051808852615ceb81888a01898501615c4c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01696909601850195509284019290840190600101615ca6565b509398975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008251615d77818460208701615c4c565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212208bd28fcfbed5a24578c595e017ee34784a20bfadc993a68f08b4cf792d075a2c64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x32B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7901330B GT PUSH2 0x1B2 JUMPI DUP1 PUSH4 0xB235D468 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xCA15C873 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xDAA50485 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xDAA50485 EQ PUSH2 0x6F7 JUMPI DUP1 PUSH4 0xE3D84D5E EQ PUSH2 0x6FF JUMPI DUP1 PUSH4 0xEB2D7461 EQ PUSH2 0x712 JUMPI DUP1 PUSH4 0xFEDE5C9C EQ PUSH2 0x725 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x6C8 JUMPI DUP1 PUSH4 0xCB73999F EQ PUSH2 0x6DB JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x6E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC410CA1B GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xC410CA1B EQ PUSH2 0x699 JUMPI DUP1 PUSH4 0xC6301E5D EQ PUSH2 0x6AC JUMPI DUP1 PUSH4 0xC74EC56A EQ PUSH2 0x6BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB235D468 EQ PUSH2 0x657 JUMPI DUP1 PUSH4 0xB6258AAA EQ PUSH2 0x67D JUMPI DUP1 PUSH4 0xC3355B8D EQ PUSH2 0x690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9010D07C GT PUSH2 0x15B JUMPI DUP1 PUSH4 0x978B73B5 GT PUSH2 0x135 JUMPI DUP1 PUSH4 0x978B73B5 EQ PUSH2 0x61C JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x62F JUMPI DUP1 PUSH4 0xABAE2C4C EQ PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9010D07C EQ PUSH2 0x5E3 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x5F6 JUMPI DUP1 PUSH4 0x928D2B31 EQ PUSH2 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7E4831D3 GT PUSH2 0x18C JUMPI DUP1 PUSH4 0x7E4831D3 EQ PUSH2 0x58D JUMPI DUP1 PUSH4 0x7F877F85 EQ PUSH2 0x5B2 JUMPI DUP1 PUSH4 0x88D19F1B EQ PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7901330B EQ PUSH2 0x569 JUMPI DUP1 PUSH4 0x7B0461E9 EQ PUSH2 0x57C JUMPI DUP1 PUSH4 0x7D55094D EQ PUSH2 0x585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x40E14B78 GT PUSH2 0x276 JUMPI DUP1 PUSH4 0x564B81EF GT PUSH2 0x21F JUMPI DUP1 PUSH4 0x6D2C5615 GT PUSH2 0x1F9 JUMPI DUP1 PUSH4 0x6D2C5615 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x6D82E314 EQ PUSH2 0x4FD JUMPI DUP1 PUSH4 0x74347C44 EQ PUSH2 0x524 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x564B81EF EQ PUSH2 0x490 JUMPI DUP1 PUSH4 0x5DE207CC EQ PUSH2 0x496 JUMPI DUP1 PUSH4 0x6526A12A EQ PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4EBBE762 GT PUSH2 0x250 JUMPI DUP1 PUSH4 0x4EBBE762 EQ PUSH2 0x462 JUMPI DUP1 PUSH4 0x50C9ECD9 EQ PUSH2 0x475 JUMPI DUP1 PUSH4 0x54F9769D EQ PUSH2 0x47D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x40E14B78 EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0x42D15AEC EQ PUSH2 0x451 JUMPI DUP1 PUSH4 0x4C634934 EQ PUSH2 0x459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D GT PUSH2 0x2D8 JUMPI DUP1 PUSH4 0x3648B7DC GT PUSH2 0x2B2 JUMPI DUP1 PUSH4 0x3648B7DC EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x40B JUMPI DUP1 PUSH4 0x3B92DA47 EQ PUSH2 0x41E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x3B5 JUMPI DUP1 PUSH4 0x32AD1EE4 EQ PUSH2 0x3C8 JUMPI DUP1 PUSH4 0x34DDB95D EQ PUSH2 0x3DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x15128425 GT PUSH2 0x309 JUMPI DUP1 PUSH4 0x15128425 EQ PUSH2 0x376 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x37F JUMPI DUP1 PUSH4 0x254CD2BD EQ PUSH2 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8A7493D EQ PUSH2 0x330 JUMPI DUP1 PUSH4 0x101197C7 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0x12ACE5A2 EQ PUSH2 0x36C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x350 PUSH2 0x33E CALLDATASIZE PUSH1 0x4 PUSH2 0x5193 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x350 PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x72E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x350 PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x38D CALLDATASIZE PUSH1 0x4 PUSH2 0x51AE JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x3B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x3C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0xFDE JUMP JUMPDEST PUSH2 0x350 PUSH2 0x3D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x1094 JUMP JUMPDEST PUSH2 0x350 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x419 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x176A JUMP JUMPDEST PUSH2 0x350 PUSH2 0x42C CALLDATASIZE PUSH1 0x4 PUSH2 0x5193 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x44C CALLDATASIZE PUSH1 0x4 PUSH2 0x53D6 JUMP JUMPDEST PUSH2 0x1819 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x1A37 JUMP JUMPDEST PUSH2 0x350 PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x470 CALLDATASIZE PUSH1 0x4 PUSH2 0x5413 JUMP JUMPDEST PUSH2 0x1AFE JUMP JUMPDEST PUSH2 0x374 PUSH2 0x1C3D JUMP JUMPDEST PUSH2 0x350 PUSH2 0x48B CALLDATASIZE PUSH1 0x4 PUSH2 0x545F JUMP JUMPDEST PUSH2 0x1CFB JUMP JUMPDEST CHAINID PUSH2 0x350 JUMP JUMPDEST PUSH2 0x350 PUSH32 0xE08E6E8E2E796F02419355C6FA268D1461FE6F2F34114A881A2DB47C0F240509 DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x35A JUMP JUMPDEST PUSH2 0x350 PUSH32 0xD4A2989857A24DE9C91E1DAFFE87D051D59F52B68729413D1EF656EC487E530 DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH2 0x544 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x35A JUMP JUMPDEST PUSH2 0x374 PUSH2 0x577 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x2586 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x271A JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH24 0x10000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH1 0x12 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x544 PUSH2 0x5F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x54D3 JUMP JUMPDEST PUSH2 0x27D5 JUMP JUMPDEST PUSH2 0x4ED PUSH2 0x604 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x617 CALLDATASIZE PUSH1 0x4 PUSH2 0x55F7 JUMP JUMPDEST PUSH2 0x280E JUMP JUMPDEST PUSH2 0x374 PUSH2 0x62A CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x2F1A JUMP JUMPDEST PUSH2 0x350 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x645 CALLDATASIZE PUSH1 0x4 PUSH2 0x5193 JUMP JUMPDEST PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x68B CALLDATASIZE PUSH1 0x4 PUSH2 0x51AE JUMP JUMPDEST PUSH2 0x34BD JUMP JUMPDEST PUSH2 0x350 PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x6A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x56B0 JUMP JUMPDEST PUSH2 0x35AC JUMP JUMPDEST PUSH2 0x350 PUSH2 0x6BA CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x3A91 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x6D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x51AE JUMP JUMPDEST PUSH2 0x4079 JUMP JUMPDEST PUSH2 0x350 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x6F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x4090 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x4138 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x70D CALLDATASIZE PUSH1 0x4 PUSH2 0x5737 JUMP JUMPDEST PUSH2 0x41F4 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x720 CALLDATASIZE PUSH1 0x4 PUSH2 0x5773 JUMP JUMPDEST PUSH2 0x431D JUMP JUMPDEST PUSH2 0x350 PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x11 SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD NUMBER SWAP2 PUSH2 0x74C SWAP2 PUSH2 0x57FA JUMP JUMPDEST GT ISZERO PUSH2 0x805 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A636F6C6C656374526564656D7074696F6E3A204D757374207761 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x697420666F7220726564656D7074696F6E5F64656C617920626C6F636B732062 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x65666F726520636F6C6C656374696E6720726564656D7074696F6E0000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 DUP2 SWAP1 DUP2 SWAP1 ISZERO PUSH2 0x84D JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SSTORE PUSH1 0xC SLOAD SWAP1 SWAP3 POP PUSH2 0x845 SWAP1 DUP4 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH1 0xC SSTORE PUSH1 0x1 SWAP4 POP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x88D JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SSTORE PUSH1 0xB SLOAD PUSH2 0x885 SWAP1 DUP3 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH1 0xB SSTORE PUSH1 0x1 SWAP3 POP JUMPDEST DUP4 ISZERO PUSH2 0x8B7 JUMPI PUSH1 0x4 SLOAD PUSH2 0x8B7 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP5 PUSH2 0x4B02 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x8E1 JUMPI PUSH1 0x1 SLOAD PUSH2 0x8E1 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP4 PUSH2 0x4B02 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x96D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH3 0xF4240 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA03 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST EQ PUSH2 0xA6A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D757374206265203D3D2031000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0xAFA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0xBED SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC2E SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0xCBA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D3174314445493A20696E76616C6964207369676E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6174757265730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCE7 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0xCF1 SWAP1 DUP9 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x68D54AA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x68D54AA SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD6D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD91 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 PUSH1 0x6 SLOAD PUSH3 0xF4240 PUSH2 0xDA8 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0xDB2 SWAP1 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0xDBC SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE32 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE56 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0xE60 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0xEC9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F75676820636F6C6C61746572616C20696E20706F6F6C000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xEE4 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xB SLOAD PUSH2 0xF02 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xB SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0xF29 SWAP1 DUP11 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0xF33 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xF44 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP11 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFD0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xFFA SWAP1 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1086 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F206772616E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x1090 DUP3 DUP3 PUSH2 0x4C72 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x111C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH3 0xF4240 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x118E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11B2 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST LT ISZERO PUSH2 0x121A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D757374206265203E3D2031000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP10 SWAP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x128F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12B3 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x12BD SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x12C7 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST GT ISZERO PUSH2 0x132F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5B506F6F6C277320436C6F7365645D3A204365696C696E672072656163686564 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x13BF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E743174314445493A207369676E61747572652069732065 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7870697265640000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x14B2 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14CF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14F3 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x157E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E743174314445493A20696E76616C6964207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7572657300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15AB PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x15B5 SWAP1 DUP10 PUSH2 0x5AFD JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x882AB63A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP11 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x882AB63A SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x162C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1650 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP3 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x1667 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x1671 SWAP1 DUP6 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x167B SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP4 POP PUSH2 0x16A3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER ADDRESS DUP12 PUSH2 0x4CD8 JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP5 PUSH2 0x16B5 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x16BF SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x16D0 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1747 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x175B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ PUSH2 0x180F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x1090 DUP3 DUP3 PUSH2 0x4E76 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1889 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18AD SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x191E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1942 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2480FCEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x2480FCEA SWAP1 PUSH2 0x199E SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B3A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19DF SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP3 GT ISZERO PUSH2 0x19F3 JUMPI PUSH3 0xF4240 SWAP2 POP JUMPDEST PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x1A03 DUP5 DUP7 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x1A0D SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1A2B JUMPI PUSH2 0x1A21 DUP2 DUP4 PUSH2 0x5812 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1A61 PUSH32 0x8118EEB5231A5FE4008A55B62860F6A0DB4F6C3AC04F8141927A9B3FEDD86D2F CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1A6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x2FDA313D9B5BB0B73BD003153F2FCCBC0DCA49791FDD1184DFAD82B44F54BD2E SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x1B28 PUSH32 0xE08E6E8E2E796F02419355C6FA268D1461FE6F2F34114A881A2DB47C0F240509 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1BB4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A2043616C6C6572206973206E6F7420504152414D455445525F5345 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x545445525F524F4C450000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0xE DUP8 SWAP1 SSTORE PUSH1 0x10 DUP7 SWAP1 SSTORE PUSH1 0x11 DUP6 SWAP1 SSTORE PUSH1 0x5 DUP5 SWAP1 SSTORE PUSH1 0x6 DUP4 SWAP1 SSTORE PUSH1 0x7 DUP3 SWAP1 SSTORE PUSH1 0x8 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x17FE98B66D27BD793EA01BD8A23A54ACAB8EEB167D9EB016A0C7CD71C573920C SWAP1 PUSH1 0xE0 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1C67 PUSH32 0x103DA79FF3755FF7A17A557D28B73D37CB4DE0B3C3CC02FA6C48DF0F35071FBF CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1C70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH24 0x10000000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x4F40FD1C59F78D7A2220DA638CD9400DABA01E57C7965702F390BF13133CC31F SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1D83 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DF3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E17 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP2 LT DUP1 ISZERO PUSH2 0x1E2B JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x1EB7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206E6565647320746F20626520626574 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7765656E202E30303030303120616E64202E3939393939390000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP13 SWAP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F50 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x1F5A SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x1F64 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST GT ISZERO PUSH2 0x2019 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x44 PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0x506F6F6C206365696C696E6720726561636865642C206E6F206D6F7265204445 SWAP1 DUP3 ADD MSTORE PUSH32 0x492063616E206265206D696E7465642077697468207468697320636F6C6C6174 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x6572616C00000000000000000000000000000000000000000000000000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP6 LT ISZERO PUSH2 0x20A9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E744672616374696F6E616C4445493A207369676E617475 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x726520697320657870697265642E000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x34 DUP4 ADD DUP14 SWAP1 MSTORE SWAP4 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x54 DUP5 ADD MSTORE PUSH1 0x68 DUP4 ADD DUP10 SWAP1 MSTORE PUSH1 0x88 DUP4 ADD DUP9 SWAP1 MSTORE CHAINID PUSH1 0xA8 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC8 DUP5 ADD SWAP2 DUP3 SWAP1 MSTORE DUP1 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 MSTORE SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x2182 SWAP1 DUP5 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0xCC ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x219F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x21C3 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x224F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E744672616374696F6E616C4445493A20696E76616C6964 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207369676E617475726573000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x227A PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22A7 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x22B1 SWAP1 DUP14 PUSH2 0x5AFD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE DUP12 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP14 SWAP1 MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x13 SLOAD SWAP1 MLOAD PUSH32 0x537A30A700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x537A30A7 SWAP1 PUSH2 0x232D SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2349 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x236D SWAP2 SWAP1 PUSH2 0x5BA9 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP1 POP DUP11 DUP2 GT ISZERO PUSH2 0x23DC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F756768204445555320696E7075747465640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x23F1 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x23FB SWAP1 DUP8 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x2405 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE SWAP2 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x247D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2491 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH2 0x24BB SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP CALLER ADDRESS DUP16 PUSH2 0x4CD8 JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP7 PUSH2 0x24CD SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x24D7 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x24E8 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x255F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2573 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x25B0 PUSH32 0xD4A2989857A24DE9C91E1DAFFE87D051D59F52B68729413D1EF656EC487E530 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x25B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x12 SLOAD DUP3 GT ISZERO PUSH2 0x2625 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x616D6F756E743C3D64616F536861726500000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x26C3 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x3A708F2F1C75B12457D207CF1E259AB9F87BBFCCB29672903ACF4661BD342E49 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x2744 PUSH32 0xC65532185ED70B2E999433E2E9FAC124E083ACB13EC183A4E05944DA0792337B CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x274D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH21 0x10000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x6BDFE227D5DB299C59AA56D5F846F40DBD73B271AAA78E18ED74FC3E00B8AA6B SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27ED SWAP1 DUP4 PUSH2 0x4EDC JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27ED SWAP1 DUP4 PUSH2 0x4EF2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x28BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A205265636F6C6C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x61746572616C697A652069732070617573656400000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP2 PUSH1 0x80 ADD MLOAD LT ISZERO PUSH2 0x294F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP3 DUP2 ADD MLOAD PUSH1 0x4 SLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x80 DUP7 ADD MLOAD SWAP4 MLOAD PUSH1 0x0 SWAP6 PUSH2 0x2998 SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP6 SWAP5 SWAP2 SWAP1 SWAP2 AND SWAP3 SWAP2 CHAINID SWAP1 PUSH1 0x20 ADD PUSH2 0x5BCD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH1 0xA0 DUP6 ADD MLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE SWAP2 SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x6793F0AC SWAP2 PUSH2 0x2A29 SWAP2 DUP6 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x5C78 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A46 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A6A SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x2AF6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A20696E76616C69 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x64207369676E6174757265730000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B23 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST DUP4 MLOAD PUSH2 0x2B2F SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BC4 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C35 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C59 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 DUP9 ADD MLOAD SWAP1 MLOAD PUSH32 0x2480FCEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x2480FCEA SWAP2 PUSH2 0x2CB8 SWAP2 PUSH1 0x4 ADD PUSH2 0x5B3A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2CD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2CF9 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 DUP9 ADD MLOAD DUP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0xFC011061 SWAP2 DUP10 SWAP2 SWAP1 PUSH2 0x2D37 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x2D47 JUMPI PUSH2 0x2D47 PUSH2 0x5D36 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x84 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DBF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2DE3 SWAP2 SWAP1 PUSH2 0x5BA9 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x2E15 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x2E1F SWAP1 DUP5 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP10 PUSH1 0x60 ADD MLOAD PUSH1 0x8 SLOAD PUSH1 0x10 SLOAD PUSH3 0xF4240 PUSH2 0x2E3C SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH2 0x2E46 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x2E50 SWAP1 DUP6 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x2E5A SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH2 0x2E82 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER ADDRESS DUP6 PUSH2 0x4CD8 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2EF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x2FA0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x300D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3031 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST ISZERO PUSH2 0x30BE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x36 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D416C676F726974686D69634445493A20436F6C6C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x61746572616C20726174696F206D757374206265203000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0x314E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A72656465656D416C676F726974686D69634445493A207369676E61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7475726520697320657870697265642E00000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x3241 SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x325E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3282 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x330E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D416C676F726974686D69634445493A20696E7661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964207369676E617475726573000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x6 SLOAD DUP7 SWAP1 PUSH3 0xF4240 SWAP1 PUSH2 0x3322 SWAP1 DUP3 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x332C SWAP1 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3336 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH2 0x3348 PUSH3 0xF4240 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3352 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x3370 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xC SLOAD PUSH2 0x338E SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xC SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0x33B5 SWAP1 DUP11 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x33BF SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x33D0 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP11 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3447 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x345B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH2 0xFA2 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xF4240 DUP3 PUSH2 0x34EF PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3560 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3584 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x358E SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x3598 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x35A2 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x27F0 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH24 0x10000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3659 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6275794261636B444555533A204275796261636B206973207061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7573656400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0x36E9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A6275794261636B444555533A207369676E61747572652069732065 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7870697265642E00000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 DUP9 SWAP2 AND DUP8 DUP8 CHAINID PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3726 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5BCD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x37B5 SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x37D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37F6 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x3882 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6275794261636B444555533A20696E76616C6964207369676E61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7475726573000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x3898 DUP10 PUSH2 0x1819 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 DUP11 MLOAD PUSH2 0x38B2 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x38C2 JUMPI PUSH2 0x38C2 PUSH2 0x5D36 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH1 0x7 SLOAD PUSH3 0xF4240 PUSH2 0x38EC SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x3C04AF9F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x3C04AF9F SWAP1 PUSH2 0x3942 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B7E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x395F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3983 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x398D SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3997 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x39C6 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x39D0 SWAP1 DUP4 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP14 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH2 0x3A85 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP CALLER DUP4 PUSH2 0x4B02 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3B19 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3BAA SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST ISZERO PUSH2 0x3C11 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D7573742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x3CA1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x3D94 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3DB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3DD5 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x3E61 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A20696E76616C69 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x64207369676E6174757265730000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x14DA4EE100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x14DA4EE1 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3ED7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3EFB SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP2 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x3F12 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x3F1C SWAP1 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3F26 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP2 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP4 PUSH2 0x3F3A SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3F44 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3F55 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3FCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3FE1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4057 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x406B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27F0 SWAP1 PUSH2 0x4F31 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x40AC SWAP1 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x180F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F207265766F6B6500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x4162 PUSH32 0xA84A5389AD41F9AAB0831B01E5384CAE76E7A7FD09131C206FF7927C201C3857 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x416B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH22 0x1000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x5860C5063A65E23CEA4E2E2925F1A841BB6D1BC9615BD425F8DD084980B05141 SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x421E PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x4284 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A796F7520617265206E6F74207472757374790000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE DUP5 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x42F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8E1 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x43A3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4413 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4437 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP2 LT DUP1 ISZERO PUSH2 0x444B JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x44FD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x53 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D4672616374696F6E616C4445493A20436F6C6C61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x746572616C20726174696F206E6565647320746F206265206265747765656E20 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x2E30303030303120616E64202E39393939393900000000000000000000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x458D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A72656465656D4672616374696F6E616C4445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7572652069732065787069726564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x34 DUP4 ADD DUP13 SWAP1 MSTORE SWAP4 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x54 DUP5 ADD MSTORE PUSH1 0x68 DUP4 ADD DUP9 SWAP1 MSTORE PUSH1 0x88 DUP4 ADD DUP8 SWAP1 MSTORE CHAINID PUSH1 0xA8 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC8 DUP5 ADD SWAP2 DUP3 SWAP1 MSTORE DUP1 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 MSTORE SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x4666 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0xCC ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4683 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x46A7 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x4733 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D4672616374696F6E616C4445493A20696E76616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6964207369676E61747572657300000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP10 SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH1 0x6 SLOAD PUSH3 0xF4240 PUSH2 0x4752 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x475C SWAP1 DUP15 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x4766 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x4778 DUP9 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x4782 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH2 0x478C SWAP1 DUP4 PUSH2 0x5812 JUMP JUMPDEST SWAP1 POP DUP11 PUSH2 0x479C PUSH3 0xF4240 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x47A6 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP5 POP PUSH1 0x0 PUSH2 0x47D5 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x47DF SWAP1 DUP5 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x47F1 DUP11 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x47FB SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x480B PUSH3 0xF4240 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x4815 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP3 SWAP9 POP SWAP1 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP5 POP PUSH4 0x70A08231 SWAP4 POP PUSH1 0x24 ADD SWAP2 POP PUSH2 0x4878 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4895 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x48B9 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x48C3 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x492C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F75676820636F6C6C61746572616C20696E20706F6F6C000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x4947 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xB SLOAD PUSH2 0x4965 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xB SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x4983 SWAP1 DUP4 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xC SLOAD PUSH2 0x49A1 SWAP1 DUP4 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xC SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0x49C8 SWAP1 DUP13 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x49D2 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x49E3 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP13 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4A5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4A6E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH2 0x2EDC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27ED DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x4F3B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 DUP8 AND SWAP2 PUSH2 0x4B99 SWAP2 SWAP1 PUSH2 0x5D65 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4BD6 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 0x4BDB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4C05 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4C05 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4C05 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x4C6B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F4641494C454400 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x4C8A SWAP1 DUP3 PUSH2 0x4AD0 JUMP JUMPDEST ISZERO PUSH2 0x1090 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 DUP9 AND SWAP2 PUSH2 0x4D77 SWAP2 SWAP1 PUSH2 0x5D65 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4DB4 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 0x4DB9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4DE3 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4DE3 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4DE3 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x4E6E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F46524F4D5F4641 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x494C454400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x4E8E SWAP1 DUP3 PUSH2 0x4F8A JUMP JUMPDEST ISZERO PUSH2 0x1090 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EE8 DUP4 DUP4 PUSH2 0x4FBC JUMP JUMPDEST PUSH1 0x60 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD ISZERO ISZERO PUSH2 0x27ED JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27F0 DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x4F82 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 0x27F0 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x27F0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27ED DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x5077 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x504F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E756D657261626C655365743A20696E646578206F7574206F6620626F756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6473000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x5064 JUMPI PUSH2 0x5064 PUSH2 0x5D36 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x5160 JUMPI PUSH1 0x0 PUSH2 0x509B PUSH1 0x1 DUP4 PUSH2 0x5812 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x50AF SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x5812 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x50C8 JUMPI PUSH2 0x50C8 PUSH2 0x5D36 JUMP 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 0x50EB JUMPI PUSH2 0x50EB PUSH2 0x5D36 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH2 0x5102 DUP4 PUSH1 0x1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x5124 JUMPI PUSH2 0x5124 PUSH2 0x5D81 JUMP 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 0x27F0 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x27F0 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x518E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x51A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27ED DUP3 PUSH2 0x516A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x51C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x51D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x51F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x520C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x522B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5257 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5263 DUP9 DUP3 DUP10 ADD PUSH2 0x51C7 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x5297 PUSH1 0x20 DUP5 ADD PUSH2 0x516A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x52F2 JUMPI PUSH2 0x52F2 PUSH2 0x52A0 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x533F JUMPI PUSH2 0x533F PUSH2 0x52A0 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5361 JUMPI PUSH2 0x5361 PUSH2 0x52A0 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x537C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x5391 PUSH2 0x538C DUP4 PUSH2 0x5347 JUMP JUMPDEST PUSH2 0x52F8 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP7 DUP5 GT ISZERO PUSH2 0x53B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x53CB JUMPI DUP1 CALLDATALOAD DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x53B4 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x53FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x540B DUP5 DUP3 DUP6 ADD PUSH2 0x536B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x542E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP6 CALLDATALOAD SWAP8 PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP8 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP7 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP7 POP PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP6 POP PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 ADD CALLDATALOAD SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x547A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x54B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x54C0 DUP11 DUP3 DUP12 ADD PUSH2 0x51C7 JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x54E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 DUP2 DUP5 ADD SLT PUSH2 0x5507 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x20 PUSH2 0x5517 PUSH2 0x538C DUP4 PUSH2 0x5347 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP6 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP8 DUP5 GT ISZERO PUSH2 0x5536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP8 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x55EB JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x555B JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP11 ADD SWAP2 POP DUP11 PUSH1 0x3F DUP4 ADD SLT PUSH2 0x5570 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP6 DUP3 ADD CALLDATALOAD PUSH1 0x40 DUP3 DUP3 GT ISZERO PUSH2 0x5586 JUMPI PUSH2 0x5586 PUSH2 0x52A0 JUMP JUMPDEST PUSH2 0x55B5 DUP9 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP13 DUP6 ADD AND ADD PUSH2 0x52F8 JUMP JUMPDEST SWAP3 POP DUP2 DUP4 MSTORE DUP13 DUP2 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x55CC JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP2 DUP6 ADD DUP10 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 SWAP1 DUP3 ADD DUP8 ADD MSTORE DUP5 MSTORE POP SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x553A JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x5621 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0xC0 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x5635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x563D PUSH2 0x52CF JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x565D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5669 DUP8 DUP3 DUP7 ADD PUSH2 0x536B JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x5695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x56A1 DUP8 DUP3 DUP7 ADD PUSH2 0x54F5 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x56C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x56E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x56F4 DUP11 DUP4 DUP12 ADD PUSH2 0x536B JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x5718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5725 DUP10 DUP3 DUP11 ADD PUSH2 0x51C7 JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x574C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5755 DUP5 PUSH2 0x516A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0x576A PUSH1 0x40 DUP6 ADD PUSH2 0x516A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x578C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x57BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5725 DUP10 DUP3 DUP11 ADD PUSH2 0x51C7 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x580D JUMPI PUSH2 0x580D PUSH2 0x57CB JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x5824 JUMPI PUSH2 0x5824 PUSH2 0x57CB JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x583B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD DUP6 DUP4 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP6 ADD MSTORE DUP2 DUP6 DUP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP1 POP PUSH1 0x60 DUP7 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP7 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x595F JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP8 DUP7 SUB ADD DUP4 MSTORE DUP2 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP11 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x5916 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 ADD DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x592F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP12 SGT ISZERO PUSH2 0x593E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x594B DUP8 DUP3 DUP9 DUP6 ADD PUSH2 0x5842 JUMP JUMPDEST SWAP7 POP POP POP SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x58B5 JUMP JUMPDEST POP SWAP3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x597F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x598F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH2 0x59EF JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x59D5 JUMPI PUSH2 0x59D5 PUSH2 0x57CB JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH2 0x59E2 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH2 0x599B JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5A06 JUMPI POP PUSH1 0x1 PUSH2 0x27F0 JUMP JUMPDEST DUP2 PUSH2 0x5A13 JUMPI POP PUSH1 0x0 PUSH2 0x27F0 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x5A29 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x5A33 JUMPI PUSH2 0x5A4F JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x27F0 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x5A44 JUMPI PUSH2 0x5A44 PUSH2 0x57CB JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x27F0 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x5A72 JUMPI POP DUP2 DUP2 EXP PUSH2 0x27F0 JUMP JUMPDEST PUSH2 0x5A7C DUP4 DUP4 PUSH2 0x5996 JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x5AAE JUMPI PUSH2 0x5AAE PUSH2 0x57CB JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27ED DUP4 DUP4 PUSH2 0x59F7 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5AF8 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x5B35 JUMPI PUSH2 0x5B35 PUSH2 0x57CB JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5B72 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x5B56 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD PUSH2 0x27F0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5BBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 DUP1 DUP10 PUSH1 0x60 SHL AND DUP4 MSTORE PUSH1 0x14 DUP4 ADD DUP9 MLOAD PUSH1 0x20 DUP1 DUP12 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C22 JUMPI DUP2 MLOAD DUP6 MSTORE SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5C06 JUMP JUMPDEST POP POP POP POP PUSH1 0x60 SWAP8 SWAP1 SWAP8 SHL AND DUP7 MSTORE POP POP PUSH1 0x14 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x34 DUP4 ADD MSTORE PUSH1 0x54 DUP3 ADD MSTORE PUSH1 0x74 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C67 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5C4F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x8E1 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD DUP5 DUP4 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP6 ADD MSTORE DUP2 DUP6 MLOAD DUP1 DUP5 MSTORE PUSH1 0x60 DUP7 ADD SWAP2 POP PUSH1 0x60 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP4 POP DUP3 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5D28 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP9 DUP8 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP9 MSTORE PUSH2 0x5CEB DUP2 DUP9 DUP11 ADD DUP10 DUP6 ADD PUSH2 0x5C4C JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP7 SWAP1 SWAP7 ADD DUP6 ADD SWAP6 POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5CA6 JUMP JUMPDEST POP SWAP4 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x5D77 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x5C4C JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP12 0xD2 DUP16 0xCF 0xBE 0xD5 LOG2 GASLIMIT PUSH25 0xC595E017EE34784A20BFADC993A68F08B4CF792D075A2C6473 PUSH16 0x6C634300080A00330000000000000000 ", + "sourceMap": "132:660:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2285:59:7;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;552:25:39;;;540:2;525:18;2285:59:7;;;;;;;;2169:26;;;;;;17611:1096;;;:::i;:::-;;3182:35;;;;;;4347:112:20;;;;;;:::i;:::-;4404:7;4430:12;;;;;;;;;;:22;;;;4347:112;11946:1460:7;;;;;;:::i;:::-;;:::i;4709:223:20:-;;;;;;:::i;:::-;;:::i;7290:1381:7:-;;;;;;:::i;:::-;;:::i;3647:62::-;;3685:24;3647:62;;2388:32;;;;;;5883:205:20;;;;;;:::i;:::-;;:::i;2229:53:7:-;;;;;;:::i;:::-;;;;;;;;;;;;;;6104:921;;;;;;:::i;:::-;;:::i;23515:207::-;;;:::i;3076:32::-;;;;;;23953:734;;;;;;:::i;:::-;;:::i;23725:159::-;;;:::i;9861:2036::-;;;;;;:::i;:::-;;:::i;7028:119::-;7118:9;7028:119;;3793:82;;3841:34;3793:82;;2844:31;;;;;;3981:41;;;;;;;;;;;;;;;5817:14:39;;5810:22;5792:41;;5780:2;5765:18;3981:41:7;5652:187:39;3712:78:7;;3758:32;3712:78;;168:27:10;;;;;;;;;;;;6020:42:39;6008:55;;;5990:74;;5978:2;5963:18;168:27:10;5844:226:39;22770:293:7;;;;;;:::i;:::-;;:::i;2347:38::-;;;;;;23203:147;;;:::i;3913:30::-;;;;;;;;;;;;4025:33;;;;;;;;;;;;3266:27;;;;;;4030:136:20;;;;;;:::i;:::-;;:::i;3015:137::-;;;;;;:::i;:::-;;:::i;19197:1871:7:-;;;;;;:::i;:::-;;:::i;15976:1311::-;;;;;;:::i;:::-;;:::i;1722:49:20:-;;1767:4;1722:49;;2423:47:7;;;;;;:::i;:::-;;;;;;;;;;;;;;3946:32;;;;;;;;;;;;5733:235;;;;;;:::i;:::-;;:::i;2108:26::-;;;;;;21264:1452;;;;;;:::i;:::-;;:::i;8699:1062::-;;;;;;:::i;:::-;;:::i;2934:30::-;;;;;;3320:125:20;;;;;;:::i;:::-;;:::i;2137:29:7:-;;;;;;5166:226:20;;;;;;:::i;:::-;;:::i;23353:159:7:-;;;:::i;23066:134::-;;;;;;:::i;:::-;;:::i;13536:2391::-;;;;;;:::i;:::-;;:::i;2198:27::-;;;;;;17611:1096;17693:16;;17679:10;17666:24;;;;:12;:24;;;;;;17714:12;;17666:43;;;:::i;:::-;17665:61;;17653:175;;;;;;;11933:2:39;17653:175:7;;;11915:21:39;11972:2;11952:18;;;11945:30;12011:34;11991:18;;;11984:62;12082:34;12062:18;;;12055:62;12154:29;12133:19;;;12126:58;12201:19;;17653:175:7;;;;;;;;;18015:10;17832:13;17996:30;;;:18;:30;;;;;;17832:13;;;;;;17996:34;17992:208;;18069:10;18050:30;;;;:18;:30;;;;;;;18085:34;;;18144:17;;18050:30;;-1:-1:-1;18144:30:7;;18050;;18144;:::i;:::-;18124:17;:50;18191:4;;-1:-1:-1;17992:208:7;18233:10;18247:1;18208:36;;;:24;:36;;;;;;:40;18204:255;;-1:-1:-1;18299:10:7;18274:36;;;;:24;:36;;;;;;;18315:40;;;18386:23;;:42;;18274:36;;18386:42;:::i;:::-;18360:23;:68;18450:4;;-1:-1:-1;18204:255:7;18467:8;18463:107;;;18518:21;;18482:83;;18518:21;;18542:10;18554;18482:27;:83::i;:::-;18577:14;18573:131;;;18639:16;;18598:101;;18639:16;;18662:10;18678:16;18598:27;:101::i;:::-;17649:1058;;;;17611:1096::o;11946:1460::-;4258:12;;;;;;;:21;4250:59;;;;;;;12563:2:39;4250:59:7;;;12545:21:39;12602:2;12582:18;;;12575:30;12641:27;12621:18;;;12614:55;12686:18;;4250:59:7;12361:349:39;4250:59:7;12119:20:::1;::::0;12104:62:::1;::::0;;;;;;;2668:3:::1;::::0;12119:20:::1;;::::0;12104:60:::1;::::0;:62:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;12119:20;12104:62:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:86;12092:138;;;::::0;::::1;::::0;;13106:2:39;12092:138:7::1;::::0;::::1;13088:21:39::0;13145:2;13125:18;;;13118:30;13184:31;13164:18;;;13157:59;13233:18;;12092:138:7::1;12904:353:39::0;12092:138:7::1;12258:12;12243:11;:27;;12235:87;;;::::0;::::1;::::0;;13464:2:39;12235:87:7::1;::::0;::::1;13446:21:39::0;13503:2;13483:18;;;13476:30;13542:34;13522:18;;;13515:62;13613:17;13593:18;;;13586:45;13648:19;;12235:87:7::1;13262:411:39::0;12235:87:7::1;12371:18;::::0;12326:15:::1;::::0;12371:18:::1;;12391:16:::0;12409:11;7118:9;12354:81:::1;::::0;13911:2:39;13907:15;;;;13924:66;13903:88;12354:81:7::1;::::0;::::1;13891:101:39::0;14008:12;;;14001:28;;;;14045:12;;;14038:28;14082:12;;;14075:28;14119:13;;12354:81:7::1;::::0;;;;;::::1;::::0;;;;;;;12344:92;;12354:81:::1;12344:92:::0;;::::1;::::0;12463:20:::1;::::0;12448:64;;;12344:92;;-1:-1:-1;12463:20:7::1;;::::0;12448:49:::1;::::0;:64:::1;::::0;12344:92;;12507:4;;;;12448:64:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12440:115;;;::::0;::::1;::::0;;16341:2:39;12440:115:7::1;::::0;::::1;16323:21:39::0;16380:2;16360:18;;;16353:30;16419:34;16399:18;;;16392:62;16490:8;16470:18;;;16463:36;16516:19;;12440:115:7::1;16139:402:39::0;12440:115:7::1;12607:28;12652:20;12656:16;12652:2;:20;:::i;:::-;12638:35;::::0;:10;:35:::1;:::i;:::-;12705:11;::::0;:78:::1;::::0;;;;::::1;::::0;::::1;18493:25:39::0;;;18534:18;;;18527:34;;;12607:66:7;;-1:-1:-1;12677:25:7::1;::::0;12705:11:::1;::::0;;::::1;::::0;:28:::1;::::0;18466:18:39;;12705:78:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12677:106;;12865:3;12845:14;;12838:3;12830:29;;;;:::i;:::-;12809:51;::::0;:17;:51:::1;:::i;:::-;12808:61;;;;:::i;:::-;12950:23;::::0;12906:16:::1;::::0;:41:::1;::::0;;;;12941:4:::1;12906:41;::::0;::::1;5990:74:39::0;12788:81:7;;-1:-1:-1;12950:23:7;;12906:16:::1;::::0;;::::1;::::0;:26:::1;::::0;5963:18:39;;12906:41:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;;;:::i;:::-;12885:17;:88;;12873:140;;;::::0;::::1;::::0;;19007:2:39;12873:140:7::1;::::0;::::1;18989:21:39::0;19046:2;19026:18;;;19019:30;19085:31;19065:18;;;19058:59;19134:18;;12873:140:7::1;18805:353:39::0;12873:140:7::1;13082:10;13057:36;::::0;;;:24:::1;:36;::::0;;;;;:56:::1;::::0;13096:17;;13057:56:::1;:::i;:::-;13043:10;13018:36;::::0;;;:24:::1;:36;::::0;;;;:95;13143:23:::1;::::0;:43:::1;::::0;13169:17;;13143:43:::1;:::i;:::-;13117:23;:69:::0;13203:10:::1;13190:24;::::0;;;:12:::1;:24;::::0;;;;13217:12:::1;13190:39:::0;;13259:14:::1;::::0;13276:3:::1;::::0;13246:27:::1;::::0;:10;:27:::1;:::i;:::-;:33;;;;:::i;:::-;13234:8;;:45;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;13342:20:7::1;::::0;13327:75:::1;::::0;;;;13379:10:::1;13327:75;::::0;::::1;19337:74:39::0;19427:18;;;19420:34;;;13342:20:7::1;::::0;;::::1;::::0;13327:51:::1;::::0;19310:18:39;;13327:75:7::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12088:1318;;;11946:1460:::0;;;;;:::o;4709:223:20:-;4800:6;:12;;;;;;;;;;:22;;;4792:45;;686:10:4;3015:137:20;:::i;4792:45::-;4784:105;;;;;;;19667:2:39;4784:105:20;;;19649:21:39;19706:2;19686:18;;;19679:30;19745:34;19725:18;;;19718:62;19816:17;19796:18;;;19789:45;19851:19;;4784:105:20;19465:411:39;4784:105:20;4900:25;4911:4;4917:7;4900:10;:25::i;:::-;4709:223;;:::o;7290:1381:7:-;4358:10;;7445:22;;4358:10;;;;;:19;4350:55;;;;;;;20083:2:39;4350:55:7;;;20065:21:39;20122:2;20102:18;;;20095:30;20161:25;20141:18;;;20134:53;20204:18;;4350:55:7;19881:347:39;4350:55:7;7502:20:::1;::::0;7487:62:::1;::::0;;;;;;;2668:3:::1;::::0;7502:20:::1;;::::0;7487:60:::1;::::0;:62:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;7502:20;7487:62:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:86;;7475:138;;;::::0;::::1;::::0;;20435:2:39;7475:138:7::1;::::0;::::1;20417:21:39::0;20474:2;20454:18;;;20447:30;20513:31;20493:18;;;20486:59;20562:18;;7475:138:7::1;20233:353:39::0;7475:138:7::1;7721:12;::::0;7673:23:::1;::::0;7629:16:::1;::::0;:41:::1;::::0;;;;7664:4:::1;7629:41;::::0;::::1;5990:74:39::0;7700:17:7;;7673:23;7629:16:::1;;::::0;:26:::1;::::0;5963:18:39;;7629:41:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;;;:::i;:::-;:88;;;;:::i;:::-;:104;;7617:159;;;::::0;::::1;::::0;;20793:2:39;7617:159:7::1;::::0;::::1;20775:21:39::0;;;20812:18;;;20805:30;20871:34;20851:18;;;20844:62;20923:18;;7617:159:7::1;20591:356:39::0;7617:159:7::1;7804:12;7789:11;:27;;7781:78;;;::::0;::::1;::::0;;21154:2:39;7781:78:7::1;::::0;::::1;21136:21:39::0;21193:2;21173:18;;;21166:30;21232:34;21212:18;;;21205:62;21303:8;21283:18;;;21276:36;21329:19;;7781:78:7::1;20952:402:39::0;7781:78:7::1;7908:18;::::0;7863:15:::1;::::0;7908:18:::1;;7928:16:::0;7946:11;7118:9;7891:81:::1;::::0;13911:2:39;13907:15;;;;13924:66;13903:88;7891:81:7::1;::::0;::::1;13891:101:39::0;14008:12;;;14001:28;;;;14045:12;;;14038:28;14082:12;;;14075:28;14119:13;;7891:81:7::1;::::0;;;;;::::1;::::0;;;;;;;7881:92;;7891:81:::1;7881:92:::0;;::::1;::::0;8000:20:::1;::::0;7985:64;;;7881:92;;-1:-1:-1;8000:20:7::1;;::::0;7985:49:::1;::::0;:64:::1;::::0;7881:92;;8044:4;;;;7985:64:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7977:113;;;::::0;::::1;::::0;;21561:2:39;7977:113:7::1;::::0;::::1;21543:21:39::0;21600:2;21580:18;;;21573:30;21639:34;21619:18;;;21612:62;21710:6;21690:18;;;21683:34;21734:19;;7977:113:7::1;21359:400:39::0;7977:113:7::1;8095:29;8148:20;8152:16;8148:2;:20;:::i;:::-;8127:42;::::0;:17;:42:::1;:::i;:::-;8190:11;::::0;:77:::1;::::0;;;;::::1;::::0;::::1;18493:25:39::0;;;18534:18;;;18527:34;;;8095:74:7;;-1:-1:-1;8190:11:7::1;;::::0;:26:::1;::::0;18466:18:39;;8190:77:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8173:94;;8379:3;8363:11;;8356:3;8348:26;;;;:::i;:::-;8330:45;::::0;:14;:45:::1;:::i;:::-;8329:53;;;;:::i;:::-;8461:16;::::0;8312:70;;-1:-1:-1;8417:120:7::1;::::0;8461:16:::1;;8483:10;8506:4;8516:17:::0;8417:31:::1;:120::i;:::-;8586:3;8572:11;;8554:14;:29;;;;:::i;:::-;:35;;;;:::i;:::-;8542:8;;:47;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;8608:20:7::1;::::0;8593:74:::1;::::0;;;;8640:10:::1;8593:74;::::0;::::1;19337::39::0;19427:18;;;19420:34;;;8608:20:7::1;::::0;;::::1;::::0;8593:46:::1;::::0;19310:18:39;;8593:74:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7470:1201;;7290:1381:::0;;;;;;;:::o;5883:205:20:-;5969:23;;;686:10:4;5969:23:20;5961:83;;;;;;;21966:2:39;5961:83:20;;;21948:21:39;22005:2;21985:18;;;21978:30;22044:34;22024:18;;;22017:62;22115:17;22095:18;;;22088:45;22150:19;;5961:83:20;21764:411:39;5961:83:20;6055:26;6067:4;6073:7;6055:11;:26::i;6104:921:7:-;6193:7;6206:20;6244;;;;;;;;;;;6229:48;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6206:73;;6283:31;6332:20;;;;;;;;;;;6317:60;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6428:20;;6413:76;;;;;6283:96;;-1:-1:-1;6383:27:7;;6428:20;;;;;6413:58;;:76;;6472:16;;6413:76;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6383:106;;2614:3;6498:23;:52;6494:113;;;2614:3;6555:52;;6494:113;6665:40;2614:3;6709:38;6724:23;6709:12;:38;:::i;:::-;6708:71;;;;:::i;:::-;6665:114;;6906:32;6884:19;:54;6880:141;;;6950:54;6972:32;6950:19;:54;:::i;:::-;6943:61;6104:921;-1:-1:-1;;;;;;6104:921:7:o;6880:141::-;-1:-1:-1;7020:1:7;;6104:921;-1:-1:-1;;;;;6104:921:7:o;23515:207::-;23569:43;3609:35;23601:10;23569:7;:43::i;:::-;23561:52;;;;;;23642:21;;;;;;;;;;23641:22;23617:46;;;;;;;;;;;;;;23673:45;;;;;;23696:21;;;;;5817:14:39;5810:22;5792:41;;5780:2;5765:18;;5652:187;23673:45:7;;;;;;;;23515:207::o;23953:734::-;24190:42;3841:34;24221:10;24190:7;:42::i;:::-;24182:96;;;;;;;23019:2:39;24182:96:7;;;23001:21:39;23058:2;23038:18;;;23031:30;23097:34;23077:18;;;23070:62;23168:11;23148:18;;;23141:39;23197:19;;24182:96:7;22817:405:39;24182:96:7;24282:12;:26;;;24312:10;:27;;;24343:16;:39;;;24386:11;:26;;;24416:14;:31;;;24451:11;:29;;;-1:-1:-1;24484:31:7;;;24525:158;;;23542:25:39;;;23598:2;23583:18;;23576:34;;;23626:18;;;23619:34;;;23684:2;23669:18;;23662:34;;;23727:3;23712:19;;23705:35;;;23771:3;23756:19;;23749:35;;;23815:3;23800:19;;23793:35;;;24525:158:7;;23529:3:39;23514:19;24525:158:7;;;;;;;23953:734;;;;;;;:::o;23725:159::-;23771:35;3529:27;23795:10;23771:7;:35::i;:::-;23763:44;;;;;;23828:13;;;;;;;;;;23827:14;23811:30;;;;;;;;;;;;;;23851:29;;;;;;23866:13;;;;;5817:14:39;5810:22;5792:41;;5780:2;5765:18;;5652:187;9861:2036:7;4358:10;;10081:19;;4358:10;;;;;:19;4350:55;;;;;;;20083:2:39;4350:55:7;;;20065:21:39;20122:2;20102:18;;;20095:30;20161:25;20141:18;;;20134:53;20204:18;;4350:55:7;19881:347:39;4350:55:7;10155:20:::1;::::0;10140:62:::1;::::0;;;;;;;10106:31:::1;::::0;10155:20:::1;;::::0;10140:60:::1;::::0;:62:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;10155:20;10140:62:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10106:96;;2668:3;10218:23;:46;:77;;;;;10294:1;10268:23;:27;10218:77;10206:156;;;::::0;::::1;::::0;;24041:2:39;10206:156:7::1;::::0;::::1;24023:21:39::0;24080:2;24060:18;;;24053:30;24119:34;24099:18;;;24092:62;24190:26;24170:18;;;24163:54;24234:19;;10206:156:7::1;23839:420:39::0;10206:156:7::1;10469:12;::::0;10422:23:::1;::::0;10378:16:::1;::::0;:41:::1;::::0;;;;10413:4:::1;10378:41;::::0;::::1;5990:74:39::0;10448:17:7;;10422:23;10378:16:::1;;::::0;:26:::1;::::0;5963:18:39;;10378:41:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;;;:::i;:::-;:87;;;;:::i;:::-;:103;;10366:194;;;::::0;::::1;::::0;;24466:2:39;10366:194:7::1;::::0;::::1;24448:21:39::0;24505:2;24485:18;;;24478:30;;;24544:34;24524:18;;;24517:62;24615:34;24595:18;;;24588:62;24687:6;24666:19;;;24659:35;24711:19;;10366:194:7::1;24264:472:39::0;10366:194:7::1;10588:12;10573:11;:27;;10565:86;;;::::0;::::1;::::0;;24943:2:39;10565:86:7::1;::::0;::::1;24925:21:39::0;24982:2;24962:18;;;24955:30;25021:34;25001:18;;;24994:62;25092:16;25072:18;;;25065:44;25126:19;;10565:86:7::1;24741:410:39::0;10565:86:7::1;10700:18;::::0;10738:21:::1;::::0;10683:124:::1;::::0;;25435:66:39;25530:2;25526:15;;;;;10683:124:7::1;::::0;;::::1;25510:37:39::0;;;;25563:12;;;25556:28;;;25618:15;;;;;;;25600:12;;;25593:46;25655:12;;;25648:28;;;25692:13;;;25685:29;;;7118:9:7;25730:13:39;;;;25723:29;;;;10683:124:7;;;;;;;;;;25768:13:39;;;10683:124:7;;;;10673:135;;;::::1;::::0;;;;10835:20:::1;::::0;10820:64;;;;10673:135;10700:18:::1;10835:20:::0;;::::1;::::0;10820:49:::1;::::0;:64:::1;::::0;10673:135;;10879:4;;;;10820:64;;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10812:120;;;::::0;::::1;::::0;;25994:2:39;10812:120:7::1;::::0;::::1;25976:21:39::0;26033:2;26013:18;;;26006:30;26072:34;26052:18;;;26045:62;26143:13;26123:18;;;26116:41;26174:19;;10812:120:7::1;25792:407:39::0;10812:120:7::1;10937:48;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10937:48:7::1;11049:29;11102:20;11106:16;11102:2;:20;:::i;:::-;11081:42;::::0;:17;:42:::1;:::i;:::-;11143:170;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;11380:11:::1;::::0;:47;;;;;11143:170;;-1:-1:-1;;;;11380:11:7::1;;::::0;:33:::1;::::0;:47:::1;::::0;11143:170;;11380:47:::1;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11351:76:::0;;-1:-1:-1;11351:76:7;-1:-1:-1;11439:26:7;;::::1;;11431:63;;;::::0;::::1;::::0;;27197:2:39;11431:63:7::1;::::0;::::1;27179:21:39::0;27236:2;27216:18;;;27209:30;27275:26;27255:18;;;27248:54;27319:18;;11431:63:7::1;26995:348:39::0;11431:63:7::1;11563:3;11546:11;;11539:3;11531:26;;;;:::i;:::-;11516:42;::::0;:11;:42:::1;:::i;:::-;11515:52;;;;:::i;:::-;11583:21;::::0;;11572:73:::1;::::0;;;;11621:10:::1;11572:73:::0;;::::1;19337:74:39::0;;;;19427:18;;;19420:34;;;11501:66:7;;-1:-1:-1;11583:21:7::1;::::0;;::::1;::::0;11572:48:::1;::::0;19310:18:39;;11572:73:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11693:16:7::1;::::0;11649:120:::1;::::0;-1:-1:-1;11693:16:7::1;;::::0;-1:-1:-1;11715:10:7::1;11738:4;11748:17:::0;11649:31:::1;:120::i;:::-;11815:3;11801:11;;11786;:26;;;;:::i;:::-;:32;;;;:::i;:::-;11774:8;;:44;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;11837:20:7::1;::::0;11822:71:::1;::::0;;;;11869:10:::1;11822:71;::::0;::::1;19337:74:39::0;19427:18;;;19420:34;;;11837:20:7::1;::::0;;::::1;::::0;11822:46:::1;::::0;19310:18:39;;11822:71:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10102:1795;;;;9861:2036:::0;;;;;;;;;:::o;22770:293::-;22844:40;3758:32;22873:10;22844:7;:40::i;:::-;22836:49;;;;;;22907:8;;22897:6;:18;;22889:47;;;;;;;27550:2:39;22889:47:7;;;27532:21:39;27589:2;27569:18;;;27562:30;27628:18;27608;;;27601:46;27664:18;;22889:47:7;27348:340:39;22889:47:7;22955:20;;22940:58;;;;;22955:20;19355:55:39;;;22940:58:7;;;19337:74:39;19427:18;;;19420:34;;;22955:20:7;;;;22940:46;;19310:18:39;;22940:58:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23014:6;23002:8;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;23030:29:7;;;27867:25:39;;;27940:42;27928:55;;27923:2;27908:18;;27901:83;23030:29:7;;27840:18:39;23030:29:7;;;;;;;22770:293;;:::o;23203:147::-;23249:32;3390:24;23270:10;23249:7;:32::i;:::-;23241:41;;;;;;23300:10;;;;;;;;;;23299:11;23286:24;;;;;;;;;;;;;;23320:26;;;;;;23335:10;;;;;5817:14:39;5810:22;5792:41;;5780:2;5765:18;;5652:187;4030:136:20;4103:7;4129:12;;;;;;;;;;:30;;4153:5;4129:23;:30::i;:::-;4122:37;;4030:136;;;;;:::o;3015:137::-;3084:4;3107:12;;;;;;;;;;:38;;3137:7;3107:29;:38::i;19197:1871:7:-;19280:21;;;;;;;:30;19272:94;;;;;;;28197:2:39;19272:94:7;;;28179:21:39;28236:2;28216:18;;;28209:30;28275:34;28255:18;;;28248:62;28346:21;28326:18;;;28319:49;28385:19;;19272:94:7;27995:415:39;19272:94:7;19401:12;19379:6;:18;;;:34;;19371:94;;;;;;;28617:2:39;19371:94:7;;;28599:21:39;28656:2;28636:18;;;28629:30;28695:34;28675:18;;;28668:62;28766:17;28746:18;;;28739:45;28801:19;;19371:94:7;28415:411:39;19371:94:7;19525:18;;19556:23;;;;;19591:21;;19625:25;;;;19663:18;;;;19497:219;;19469:15;;19497:219;;19525:18;;;;;19556:23;19591:21;;;;;19625:25;7118:9;;19497:219;;;:::i;:::-;;;;;;;;;;;;;;;19487:230;;19497:219;19487:230;;;;19744:20;;19788:11;;;;19729:71;;;19487:230;;-1:-1:-1;19744:20:7;;;19729:49;;:71;;19487:230;;19788:11;19729:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19721:128;;;;;;;31494:2:39;19721:128:7;;;31476:21:39;31533:2;31513:18;;;31506:30;31572:34;31552:18;;;31545:62;31643:14;31623:18;;;31616:42;31675:19;;19721:128:7;31292:408:39;19721:128:7;19854:29;19914:20;19918:16;19914:2;:20;:::i;:::-;19886:24;;:49;;;;:::i;:::-;19854:81;;19940:24;19982:20;;;;;;;;;;;19967:48;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19940:77;;20021:31;20070:20;;;;;;;;;;;20055:60;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20166:20;;20210:23;;;;;20151:83;;;;;20021:96;;-1:-1:-1;20121:27:7;;20166:20;;;;;20151:58;;:83;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20296:11;;20400:23;;;;20424:30;;20121:113;;-1:-1:-1;20240:24:7;;;;20296:11;;;:39;;20357:21;;20400:23;20424:34;;20296:11;;20424:34;:::i;:::-;20400:59;;;;;;;;:::i;:::-;;;;;;;;;;;20296:353;;;;;;;;;;;;;32153:25:39;;;;32194:18;;;32187:34;32237:18;;;32230:34;;;32280:18;;;32273:34;;;32323:19;;;32316:35;;;32125:19;;20296:353:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20239:410;;-1:-1:-1;20239:410:7;-1:-1:-1;20654:34:7;20711:20;20715:16;20711:2;:20;:::i;:::-;20691:41;;:16;:41;:::i;:::-;20654:78;;20737:22;20830:6;:25;;;20813:12;;20800:10;;20793:3;20785:25;;;;:::i;:::-;:40;;;;:::i;:::-;20763:63;;:18;:63;:::i;:::-;20762:93;;;;:::i;:::-;20904:16;;20737:118;;-1:-1:-1;20860:129:7;;20904:16;;20926:10;20949:4;20959:26;20860:31;:129::i;:::-;21004:21;;;20993:71;;;;;21037:10;20993:71;;;19337:74:39;;;;19427:18;;;19420:34;;;21004:21:7;;;20993:43;;19310:18:39;;20993:71:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19268:1800;;;;;;;;;19197:1871;:::o;15976:1311::-;4258:12;;;;;;;:21;4250:59;;;;;;;12563:2:39;4250:59:7;;;12545:21:39;12602:2;12582:18;;;12575:30;12641:27;12621:18;;;12614:55;12686:18;;4250:59:7;12361:349:39;4250:59:7;16161:20:::1;;;;;;;;;;;16146:60;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67:::0;16138:134:::1;;;::::0;::::1;::::0;;32564:2:39;16138:134:7::1;::::0;::::1;32546:21:39::0;32603:2;32583:18;;;32576:30;32642:34;32622:18;;;32615:62;32713:24;32693:18;;;32686:52;32755:19;;16138:134:7::1;32362:418:39::0;16138:134:7::1;16300:12;16285:11;:27;;16277:88;;;::::0;::::1;::::0;;32987:2:39;16277:88:7::1;::::0;::::1;32969:21:39::0;33026:2;33006:18;;;32999:30;33065:34;33045:18;;;33038:62;33136:18;33116;;;33109:46;33172:19;;16277:88:7::1;32785:412:39::0;16277:88:7::1;16414:21;::::0;16369:15:::1;::::0;16414:21:::1;;16437:18:::0;16457:11;7118:9;16397:86:::1;::::0;13911:2:39;13907:15;;;;13924:66;13903:88;16397:86:7::1;::::0;::::1;13891:101:39::0;14008:12;;;14001:28;;;;14045:12;;;14038:28;14082:12;;;14075:28;14119:13;;16397:86:7::1;::::0;;;;;::::1;::::0;;;;;;;16387:97;;16397:86:::1;16387:97:::0;;::::1;::::0;16511:20:::1;::::0;16496:64;;;16387:97;;-1:-1:-1;16511:20:7::1;;::::0;16496:49:::1;::::0;:64:::1;::::0;16387:97;;16555:4;;;;16496:64:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16488:123;;;::::0;::::1;::::0;;33404:2:39;16488:123:7::1;::::0;::::1;33386:21:39::0;33443:2;33423:18;;;33416:30;33482:34;33462:18;;;33455:62;33553:16;33533:18;;;33526:44;33587:19;;16488:123:7::1;33202:410:39::0;16488:123:7::1;16728:14;::::0;16648:10;;16747:3:::1;::::0;16713:29:::1;::::0;16747:3;16713:29:::1;:::i;:::-;16688:55;::::0;:21;:55:::1;:::i;:::-;16687:63;;;;:::i;:::-;16663:87:::0;-1:-1:-1;16768:19:7::1;16836:18:::0;16791:41:::1;2554:3;16663:87:::0;16791:41:::1;:::i;:::-;16790:64;;;;:::i;:::-;16911:10;16892:30;::::0;;;:18:::1;:30;::::0;;;;;16768:86;;-1:-1:-1;16892:44:7::1;::::0;16768:86;;16892:44:::1;:::i;:::-;16878:10;16859:30;::::0;;;:18:::1;:30;::::0;;;;:77;16960:17:::1;::::0;:31:::1;::::0;16980:11;;16960:31:::1;:::i;:::-;16940:17;:51:::0;17009:10:::1;16996:24;::::0;;;:12:::1;:24;::::0;;;;17023:12:::1;16996:39:::0;;17065:14:::1;::::0;17082:3:::1;::::0;17052:27:::1;::::0;:10;:27:::1;:::i;:::-;:33;;;;:::i;:::-;17040:8;;:45;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;17148:20:7::1;::::0;17133:75:::1;::::0;;;;17185:10:::1;17133:75;::::0;::::1;19337:74:39::0;19427:18;;;19420:34;;;17148:20:7::1;::::0;;::::1;::::0;17133:51:::1;::::0;19310:18:39;;17133:75:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;17223:21:7::1;::::0;;17212:71:::1;::::0;;;;17264:4:::1;17212:71:::0;;::::1;19337:74:39::0;;;;19427:18;;;19420:34;;;17223:21:7::1;;::::0;-1:-1:-1;17212:43:7::1;::::0;-1:-1:-1;19310:18:39;;17212:71:7::1;19163:297:39::0;5733:235:7;5809:7;2554:3;5927:16;5903:20;5907:16;5903:2;:20;:::i;:::-;5875:23;;5831:16;;:41;;;;;5866:4;5831:41;;;5990:74:39;5831:16:7;;;;;:26;;5963:18:39;;5831:41:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;;;:::i;:::-;5830:94;;;;:::i;:::-;:113;;;;:::i;:::-;5829:135;;;;:::i;21264:1452::-;21447:13;;;;;;;:22;21439:71;;;;;;;33819:2:39;21439:71:7;;;33801:21:39;33858:2;33838:18;;;33831:30;33897:34;33877:18;;;33870:62;33968:6;33948:18;;;33941:34;33992:19;;21439:71:7;33617:400:39;21439:71:7;21537:12;21522:11;:27;;21514:79;;;;;;;34224:2:39;21514:79:7;;;34206:21:39;34263:2;34243:18;;;34236:30;34302:34;34282:18;;;34275:62;34373:9;34353:18;;;34346:37;34400:19;;21514:79:7;34022:403:39;21514:79:7;21653:18;;21711:21;;21597:15;;21653:18;;;;;21683:16;;21711:21;21744:18;21774:11;7118:9;21625:185;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;21615:196;;21625:185;21615:196;;;;21838:20;;21823:64;;;21615:196;;-1:-1:-1;21838:20:7;;;21823:49;;:64;;21615:196;;21882:4;;;;21823:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21815:114;;;;;;;34632:2:39;21815:114:7;;;34614:21:39;34671:2;34651:18;;;34644:30;34710:34;34690:18;;;34683:62;34781:7;34761:18;;;34754:35;34806:19;;21815:114:7;34430:401:39;21815:114:7;21934:53;21990:267;;;;;;;;22038:41;22062:16;22038:23;:41::i;:::-;21990:267;;;;22094:18;21990:267;;;;22127:16;22170:1;22144:16;:23;:27;;;;:::i;:::-;22127:45;;;;;;;;:::i;:::-;;;;;;;21990:267;;;;22232:11;21990:267;;;21934:323;;22262:33;22376:3;22359:11;;22352:3;22344:26;;;;:::i;:::-;22299:11;;:41;;;;;:11;;;;;:27;;:41;;22327:12;;22299:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;;:::i;:::-;22298:82;;;;:::i;:::-;22262:118;-1:-1:-1;22384:28:7;22444:20;22448:16;22444:2;:20;:::i;:::-;22415:50;;:25;:50;:::i;:::-;22545:21;;;22534:73;;;;;22583:10;22534:73;;;19337:74:39;;;;19427:18;;;19420:34;;;22384:81:7;;-1:-1:-1;22545:21:7;;;;;22534:48;;19310:18:39;;22534:73:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22651:16:7;;22611:101;;-1:-1:-1;22651:16:7;;;-1:-1:-1;22673:10:7;22688:20;22611:27;:101::i;:::-;21435:1281;;;;21264:1452;;;;;;:::o;8699:1062::-;4358:10;;8867:22;;4358:10;;;;;:19;4350:55;;;;;;;20083:2:39;4350:55:7;;;20065:21:39;20122:2;20102:18;;;20095:30;20161:25;20141:18;;;20134:53;20204:18;;4350:55:7;19881:347:39;4350:55:7;8922:20:::1;;;;;;;;;;;8907:60;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67:::0;8895:116:::1;;;::::0;::::1;::::0;;35318:2:39;8895:116:7::1;::::0;::::1;35300:21:39::0;35357:2;35337:18;;;35330:30;35396:28;35376:18;;;35369:56;35442:18;;8895:116:7::1;35116:350:39::0;8895:116:7::1;9038:12;9023:11;:27;;9015:87;;;::::0;::::1;::::0;;13464:2:39;9015:87:7::1;::::0;::::1;13446:21:39::0;13503:2;13483:18;;;13476:30;13542:34;13522:18;;;13515:62;13613:17;13593:18;;;13586:45;13648:19;;9015:87:7::1;13262:411:39::0;9015:87:7::1;9151:21;::::0;9106:15:::1;::::0;9151:21:::1;;9174:18:::0;9194:11;7118:9;9134:86:::1;::::0;13911:2:39;13907:15;;;;13924:66;13903:88;9134:86:7::1;::::0;::::1;13891:101:39::0;14008:12;;;14001:28;;;;14045:12;;;14038:28;14082:12;;;14075:28;14119:13;;9134:86:7::1;::::0;;;;;::::1;::::0;;;;;;;9124:97;;9134:86:::1;9124:97:::0;;::::1;::::0;9248:20:::1;::::0;9233:64;;;9124:97;;-1:-1:-1;9248:20:7::1;;::::0;9233:49:::1;::::0;:64:::1;::::0;9124:97;;9292:4;;;;9233:64:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9225:121;;;::::0;::::1;::::0;;35673:2:39;9225:121:7::1;::::0;::::1;35655:21:39::0;35712:2;35692:18;;;35685:30;35751:34;35731:18;;;35724:62;35822:14;35802:18;;;35795:42;35854:19;;9225:121:7::1;35471:408:39::0;9225:121:7::1;9368:11;::::0;:99:::1;::::0;;;;::::1;::::0;::::1;18493:25:39::0;;;18534:18;;;18527:34;;;9368:11:7::1;::::0;;::::1;::::0;:34:::1;::::0;18466:18:39;;9368:99:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9351:116;;9542:3;9524:11;;9516:3;9508:28;;;;:::i;:::-;9490:47;::::0;:14;:47:::1;:::i;:::-;9489:57;;;;:::i;:::-;9472:74;;9594:3;9580:11;;9562:14;:29;;;;:::i;:::-;:35;;;;:::i;:::-;9550:8;;:47;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;9613:21:7::1;::::0;;9602:77:::1;::::0;;;;9651:10:::1;9602:77:::0;;::::1;19337:74:39::0;;;;19427:18;;;19420:34;;;9613:21:7::1;;::::0;9602:48:::1;::::0;19310:18:39;;9602:77:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;9698:20:7::1;::::0;9683:74:::1;::::0;;;;9730:10:::1;9683:74;::::0;::::1;19337::39::0;19427:18;;;19420:34;;;9698:20:7::1;::::0;;::::1;::::0;-1:-1:-1;9683:46:7::1;::::0;-1:-1:-1;19310:18:39;;9683:74:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8891:870;8699:1062:::0;;;;;;;:::o;3320:125:20:-;3383:7;3409:12;;;;;;;;;;:29;;:27;:29::i;5166:226::-;5258:6;:12;;;;;;;;;;:22;;;5250:45;;686:10:4;3015:137:20;:::i;5250:45::-;5242:106;;;;;;;36086:2:39;5242:106:20;;;36068:21:39;36125:2;36105:18;;;36098:30;36164:34;36144:18;;;36137:62;36235:18;36215;;;36208:46;36271:19;;5242:106:20;35884:412:39;23353:159:7;23401:34;3458:26;23424:10;23401:7;:34::i;:::-;23393:43;;;;;;23456:12;;;;;;;;;;23455:13;23440:28;;;;;;;;;;;;;;23478:30;;;;;;23495:12;;;;;5817:14:39;5810:22;5792:41;;5780:2;5765:18;;5652:187;23066:134:7;4140:32;3685:24;4161:10;4140:7;:32::i;:::-;4128:79;;;;;;;36503:2:39;4128:79:7;;;36485:21:39;36542:2;36522:18;;;36515:30;36581:26;36561:18;;;36554:54;36625:18;;4128:79:7;36301:348:39;4128:79:7;23162:34:::1;::::0;;;;:22:::1;19355:55:39::0;;;23162:34:7::1;::::0;::::1;19337:74:39::0;19427:18;;;19420:34;;;23162:22:7;::::1;::::0;::::1;::::0;19310:18:39;;23162:34:7::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13536:2391::-:0;4258:12;;;;;;;:21;4250:59;;;;;;;12563:2:39;4250:59:7;;;12545:21:39;12602:2;12582:18;;;12575:30;12641:27;12621:18;;;12614:55;12686:18;;4250:59:7;12361:349:39;4250:59:7;13775:20:::1;::::0;13760:62:::1;::::0;;;;;;;13726:31:::1;::::0;13775:20:::1;;::::0;13760:60:::1;::::0;:62:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;13775:20;13760:62:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13726:96;;2668:3;13838:23;:46;:77;;;;;13914:1;13888:23;:27;13838:77;13826:183;;;::::0;::::1;::::0;;36856:2:39;13826:183:7::1;::::0;::::1;36838:21:39::0;36895:2;36875:18;;;36868:30;36934:34;36914:18;;;36907:62;37005:34;36985:18;;;36978:62;37077:21;37056:19;;;37049:50;37116:19;;13826:183:7::1;36654:487:39::0;13826:183:7::1;14037:12;14022:11;:27;;14014:86;;;::::0;::::1;::::0;;37348:2:39;14014:86:7::1;::::0;::::1;37330:21:39::0;37387:2;37367:18;;;37360:30;37426:34;37406:18;;;37399:62;37497:16;37477:18;;;37470:44;37531:19;;14014:86:7::1;37146:410:39::0;14014:86:7::1;14149:18;::::0;14187:21:::1;::::0;14132:124:::1;::::0;;25435:66:39;25530:2;25526:15;;;;;14132:124:7::1;::::0;;::::1;25510:37:39::0;;;;25563:12;;;25556:28;;;25618:15;;;;;;;25600:12;;;25593:46;25655:12;;;25648:28;;;25692:13;;;25685:29;;;7118:9:7;25730:13:39;;;;25723:29;;;;14132:124:7;;;;;;;;;;25768:13:39;;;14132:124:7;;;;14122:135;;;::::1;::::0;;;;14284:20:::1;::::0;14269:64;;;;14122:135;14149:18:::1;14284:20:::0;;::::1;::::0;14269:49:::1;::::0;:64:::1;::::0;14122:135;;14328:4;;;;14269:64;;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14261:122;;;::::0;::::1;::::0;;37763:2:39;14261:122:7::1;::::0;::::1;37745:21:39::0;37802:2;37782:18;;;37775:30;37841:34;37821:18;;;37814:62;37912:15;37892:18;;;37885:43;37945:19;;14261:122:7::1;37561:409:39::0;14261:122:7::1;14442:19;14465:25:::0;14499:21:::1;14523:16;14499:40;;14545:27;2554:3;14605:14;;14598:3;14590:29;;;;:::i;:::-;14576:44;::::0;:10;:44:::1;:::i;:::-;14575:66;;;;:::i;:::-;14545:96:::0;-1:-1:-1;14647:29:7::1;2554:3;14703:45;14725:23:::0;14545:96;14703:45:::1;:::i;:::-;14702:67;;;;:::i;:::-;14679:91;::::0;:19;:91:::1;:::i;:::-;14647:123:::0;-1:-1:-1;14834:18:7;14789:41:::1;2554:3;14647:123:::0;14789:41:::1;:::i;:::-;:64;;;;:::i;:::-;14775:78:::0;-1:-1:-1;14907:28:7::1;14961:20;14965:16;14961:2;:20;:::i;:::-;14938:44;::::0;:19;:44:::1;:::i;:::-;14907:75:::0;-1:-1:-1;14987:31:7::1;2554:3;15022:46;15045:23:::0;14907:75;15022:46:::1;:::i;:::-;15021:66;;;;:::i;:::-;14987:100:::0;-1:-1:-1;15159:13:7;15113:41:::1;2554:3;14987:100:::0;15113:41:::1;:::i;:::-;15112:61;;;;:::i;:::-;15258:23;::::0;15214:16:::1;::::0;:41:::1;::::0;;;;15249:4:::1;15214:41;::::0;::::1;5990:74:39::0;15092:81:7;;-1:-1:-1;15258:23:7;;-1:-1:-1;15214:16:7::1;;::::0;-1:-1:-1;15214:26:7::1;::::0;-1:-1:-1;5963:18:39;;;-1:-1:-1;15214:41:7::1;::::0;-1:-1:-1;5844:226:39;15214:41:7::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;;;:::i;:::-;15193:17;:88;;15181:140;;;::::0;::::1;::::0;;19007:2:39;15181:140:7::1;::::0;::::1;18989:21:39::0;19046:2;19026:18;;;19019:30;19085:31;19065:18;;;19058:59;19134:18;;15181:140:7::1;18805:353:39::0;15181:140:7::1;15390:10;15365:36;::::0;;;:24:::1;:36;::::0;;;;;:56:::1;::::0;15404:17;;15365:56:::1;:::i;:::-;15351:10;15326:36;::::0;;;:24:::1;:36;::::0;;;;:95;15451:23:::1;::::0;:43:::1;::::0;15477:17;;15451:43:::1;:::i;:::-;15425:23;:69:::0;15551:10:::1;15532:30;::::0;;;:18:::1;:30;::::0;;;;;:44:::1;::::0;15565:11;;15532:44:::1;:::i;:::-;15518:10;15499:30;::::0;;;:18:::1;:30;::::0;;;;:77;15600:17:::1;::::0;:31:::1;::::0;15620:11;;15600:31:::1;:::i;:::-;15580:17;:51:::0;15649:10:::1;15636:24;::::0;;;:12:::1;:24;::::0;;;;15663:12:::1;15636:39:::0;;15705:14:::1;::::0;15722:3:::1;::::0;15692:27:::1;::::0;:10;:27:::1;:::i;:::-;:33;;;;:::i;:::-;15680:8;;:45;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;15788:20:7::1;::::0;15773:75:::1;::::0;;;;15825:10:::1;15773:75;::::0;::::1;19337:74:39::0;19427:18;;;19420:34;;;15788:20:7::1;::::0;;::::1;::::0;15773:51:::1;::::0;19310:18:39;;15773:75:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;15863:21:7::1;::::0;;15852:71:::1;::::0;;;;15904:4:::1;15852:71:::0;;::::1;19337:74:39::0;;;;19427:18;;;19420:34;;;15863:21:7::1;;::::0;-1:-1:-1;15852:43:7::1;::::0;-1:-1:-1;19310:18:39;;15852:71:7::1;19163:297:39::0;4866:141:38;4936:4;4959:41;4964:3;4976:23;4984:14;;;;4976:23;4959:4;:41::i;559:357:32:-;752:45;;;741:10;19355:55:39;;;752:45:32;;;19337:74:39;19427:18;;;;19420:34;;;752:45:32;;;;;;;;;;19310:18:39;;;;752:45:32;;;;;;;;;;;;;741:57;;-1:-1:-1;;;;741:10:32;;;;:57;;752:45;741:57;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;705:93;;;;816:7;:57;;;;-1:-1:-1;828:11:32;;:16;;:44;;;859:4;848:24;;;;;;;;;;;;:::i;:::-;808:101;;;;;;;38456:2:39;808:101:32;;;38438:21:39;38495:2;38475:18;;;38468:30;38534:33;38514:18;;;38507:61;38585:18;;808:101:32;38254:355:39;808:101:32;629:287;;559:357;;;:::o;7090:184:20:-;7163:6;:12;;;;;;;;;;:33;;7188:7;7163:24;:33::i;:::-;7159:109;;;7217:40;;686:10:4;;7217:40:20;;;;7229:4;;7217:40;;;;;7090:184;;:::o;922:398:32:-;1145:51;;;1134:10;38895:15:39;;;1145:51:32;;;38877:34:39;38947:15;;;38927:18;;;38920:43;38979:18;;;;38972:34;;;1145:51:32;;;;;;;;;;38789:18:39;;;;1145:51:32;;;;;;;;;;;;;1134:63;;-1:-1:-1;;;;1134:10:32;;;;:63;;1145:51;1134:63;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1098:99;;;;1215:7;:57;;;;-1:-1:-1;1227:11:32;;:16;;:44;;;1258:4;1247:24;;;;;;;;;;;;:::i;:::-;1207:106;;;;;;;39219:2:39;1207:106:32;;;39201:21:39;39258:2;39238:18;;;39231:30;39297:34;39277:18;;;39270:62;39368:6;39348:18;;;39341:34;39392:19;;1207:106:32;39017:400:39;1207:106:32;1010:310;;922:398;;;;:::o;7280:188:20:-;7354:6;:12;;;;;;;;;;:36;;7382:7;7354:27;:36::i;:::-;7350:112;;;7411:40;;686:10:4;;7411:40:20;;;;7423:4;;7411:40;;;;;7280:188;;:::o;6087:147:38:-;6161:7;6203:22;6207:3;6219:5;6203:3;:22::i;:::-;6187:40;;;6087:147;-1:-1:-1;;;6087:147:38:o;5403:156::-;5536:14;;;;5528:23;;5483:4;3874:19;;;:12;;;:19;;;;;;:24;;5506:46;3778:127;5640:115;5703:7;5729:19;5737:3;4068:18;;3986:107;1613:404;1676:4;3874:19;;;:12;;;:19;;;;;;1692:319;;-1:-1:-1;1734:23:38;;;;;;;;:11;:23;;;;;;;;;;;;;1914:18;;1892:19;;;:12;;;:19;;;;;;:40;;;;1946:11;;1692:319;-1:-1:-1;1995:5:38;1988:12;;5175:147;5248:4;5271:44;5279:3;5291:23;5299:14;;;;5291:23;5271:7;:44::i;4425:201::-;4519:18;;4492:7;;4519:26;-1:-1:-1;4511:73:38;;;;;;;39624:2:39;4511:73:38;;;39606:21:39;39663:2;39643:18;;;39636:30;39702:34;39682:18;;;39675:62;39773:4;39753:18;;;39746:32;39795:19;;4511:73:38;39422:398:39;4511:73:38;4601:3;:11;;4613:5;4601:18;;;;;;;;:::i;:::-;;;;;;;;;4594:25;;4425:201;;;;:::o;2185:1512::-;2251:4;2388:19;;;:12;;;:19;;;;;;2422:15;;2418:1273;;2779:21;2803:14;2816:1;2803:10;:14;:::i;:::-;2851:18;;2779:38;;-1:-1:-1;2831:17:38;;2851:22;;2872:1;;2851:22;:::i;:::-;2831:42;;3113:17;3133:3;:11;;3145:9;3133:22;;;;;;;;:::i;:::-;;;;;;;;;3113:42;;3276:9;3247:3;:11;;3259:13;3247:26;;;;;;;;:::i;:::-;;;;;;;;;;:38;3377:17;:13;3393:1;3377:17;:::i;:::-;3351:23;;;;:12;;;:23;;;;;:43;3500:17;;3351:3;;3500:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3592:3;:12;;:19;3605:5;3592:19;;;;;;;;;;;3585:26;;;3633:4;3626:11;;;;;;;;2418:1273;3675:5;3668:12;;;;;14:196:39;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:186::-;274:6;327:2;315:9;306:7;302:23;298:32;295:52;;;343:1;340;333:12;295:52;366:29;385:9;366:29;:::i;588:180::-;647:6;700:2;688:9;679:7;675:23;671:32;668:52;;;716:1;713;706:12;668:52;-1:-1:-1;739:23:39;;588:180;-1:-1:-1;588:180:39:o;955:374::-;1025:8;1035:6;1089:3;1082:4;1074:6;1070:17;1066:27;1056:55;;1107:1;1104;1097:12;1056:55;-1:-1:-1;1130:20:39;;1173:18;1162:30;;1159:50;;;1205:1;1202;1195:12;1159:50;1242:4;1234:6;1230:17;1218:29;;1302:3;1295:4;1285:6;1282:1;1278:14;1270:6;1266:27;1262:38;1259:47;1256:67;;;1319:1;1316;1309:12;1256:67;955:374;;;;;:::o;1334:660::-;1458:6;1466;1474;1482;1490;1543:3;1531:9;1522:7;1518:23;1514:33;1511:53;;;1560:1;1557;1550:12;1511:53;1596:9;1583:23;1573:33;;1653:2;1642:9;1638:18;1625:32;1615:42;;1704:2;1693:9;1689:18;1676:32;1666:42;;1759:2;1748:9;1744:18;1731:32;1786:18;1778:6;1775:30;1772:50;;;1818:1;1815;1808:12;1772:50;1857:77;1926:7;1917:6;1906:9;1902:22;1857:77;:::i;:::-;1334:660;;;;-1:-1:-1;1334:660:39;;-1:-1:-1;1953:8:39;;1831:103;1334:660;-1:-1:-1;;;1334:660:39:o;1999:254::-;2067:6;2075;2128:2;2116:9;2107:7;2103:23;2099:32;2096:52;;;2144:1;2141;2134:12;2096:52;2180:9;2167:23;2157:33;;2209:38;2243:2;2232:9;2228:18;2209:38;:::i;:::-;2199:48;;1999:254;;;;;:::o;2258:184::-;2310:77;2307:1;2300:88;2407:4;2404:1;2397:15;2431:4;2428:1;2421:15;2447:253;2519:2;2513:9;2561:4;2549:17;;2596:18;2581:34;;2617:22;;;2578:62;2575:88;;;2643:18;;:::i;:::-;2679:2;2672:22;2447:253;:::o;2705:334::-;2776:2;2770:9;2832:2;2822:13;;2837:66;2818:86;2806:99;;2935:18;2920:34;;2956:22;;;2917:62;2914:88;;;2982:18;;:::i;:::-;3018:2;3011:22;2705:334;;-1:-1:-1;2705:334:39:o;3044:183::-;3104:4;3137:18;3129:6;3126:30;3123:56;;;3159:18;;:::i;:::-;-1:-1:-1;3204:1:39;3200:14;3216:4;3196:25;;3044:183::o;3232:662::-;3286:5;3339:3;3332:4;3324:6;3320:17;3316:27;3306:55;;3357:1;3354;3347:12;3306:55;3393:6;3380:20;3419:4;3443:60;3459:43;3499:2;3459:43;:::i;:::-;3443:60;:::i;:::-;3537:15;;;3623:1;3619:10;;;;3607:23;;3603:32;;;3568:12;;;;3647:15;;;3644:35;;;3675:1;3672;3665:12;3644:35;3711:2;3703:6;3699:15;3723:142;3739:6;3734:3;3731:15;3723:142;;;3805:17;;3793:30;;3843:12;;;;3756;;3723:142;;;-1:-1:-1;3883:5:39;3232:662;-1:-1:-1;;;;;;3232:662:39:o;3899:348::-;3983:6;4036:2;4024:9;4015:7;4011:23;4007:32;4004:52;;;4052:1;4049;4042:12;4004:52;4092:9;4079:23;4125:18;4117:6;4114:30;4111:50;;;4157:1;4154;4147:12;4111:50;4180:61;4233:7;4224:6;4213:9;4209:22;4180:61;:::i;:::-;4170:71;3899:348;-1:-1:-1;;;;3899:348:39:o;4252:592::-;4365:6;4373;4381;4389;4397;4405;4413;4466:3;4454:9;4445:7;4441:23;4437:33;4434:53;;;4483:1;4480;4473:12;4434:53;-1:-1:-1;;4506:23:39;;;4576:2;4561:18;;4548:32;;-1:-1:-1;4627:2:39;4612:18;;4599:32;;4678:2;4663:18;;4650:32;;-1:-1:-1;4729:3:39;4714:19;;4701:33;;-1:-1:-1;4781:3:39;4766:19;;4753:33;;-1:-1:-1;4833:3:39;4818:19;4805:33;;-1:-1:-1;4252:592:39;-1:-1:-1;4252:592:39:o;4849:798::-;4991:6;4999;5007;5015;5023;5031;5039;5092:3;5080:9;5071:7;5067:23;5063:33;5060:53;;;5109:1;5106;5099:12;5060:53;5145:9;5132:23;5122:33;;5202:2;5191:9;5187:18;5174:32;5164:42;;5253:2;5242:9;5238:18;5225:32;5215:42;;5304:2;5293:9;5289:18;5276:32;5266:42;;5355:3;5344:9;5340:19;5327:33;5317:43;;5411:3;5400:9;5396:19;5383:33;5439:18;5431:6;5428:30;5425:50;;;5471:1;5468;5461:12;5425:50;5510:77;5579:7;5570:6;5559:9;5555:22;5510:77;:::i;:::-;4849:798;;;;-1:-1:-1;4849:798:39;;-1:-1:-1;4849:798:39;;;;5484:103;;-1:-1:-1;;;4849:798:39:o;6334:248::-;6402:6;6410;6463:2;6451:9;6442:7;6438:23;6434:32;6431:52;;;6479:1;6476;6469:12;6431:52;-1:-1:-1;;6502:23:39;;;6572:2;6557:18;;;6544:32;;-1:-1:-1;6334:248:39:o;6587:1598::-;6639:5;6669:4;6713:3;6708:2;6700:6;6696:15;6692:25;6682:53;;6731:1;6728;6721:12;6682:53;6767:6;6754:20;6793:4;6817:60;6833:43;6873:2;6833:43;:::i;6817:60::-;6911:15;;;6997:1;6993:10;;;;6981:23;;6977:32;;;6942:12;;;;7021:15;;;7018:35;;;7049:1;7046;7039:12;7018:35;7085:2;7077:6;7073:15;7097:1059;7113:6;7108:3;7105:15;7097:1059;;;7199:3;7186:17;7226:18;7276:2;7263:11;7260:19;7257:109;;;7320:1;7349:2;7345;7338:14;7257:109;7401:11;7393:6;7389:24;7379:34;;7453:3;7448:2;7444;7440:11;7436:21;7426:119;;7499:1;7528:2;7524;7517:14;7426:119;7589:2;7585;7581:11;7568:25;7616:2;7641;7637;7634:10;7631:36;;;7647:18;;:::i;:::-;7695:110;7801:2;7732:66;7727:2;7723;7719:11;7715:84;7711:93;7695:110;:::i;:::-;7680:125;;7834:2;7825:7;7818:19;7878:3;7873:2;7868;7864;7860:11;7856:20;7853:29;7850:122;;;7924:1;7954:3;7949;7942:16;7850:122;8029:2;8024;8020;8016:11;8011:2;8002:7;7998:16;7985:47;-1:-1:-1;8079:1:39;8056:16;;;8052:25;;8045:36;8094:20;;-1:-1:-1;8134:12:39;;;;7130;;7097:1059;;;-1:-1:-1;8174:5:39;6587:1598;-1:-1:-1;;;;;;;6587:1598:39:o;8190:1049::-;8285:6;8338:2;8326:9;8317:7;8313:23;8309:32;8306:52;;;8354:1;8351;8344:12;8306:52;8394:9;8381:23;8423:18;8464:2;8456:6;8453:14;8450:34;;;8480:1;8477;8470:12;8450:34;8503:22;;;;8559:4;8541:16;;;8537:27;8534:47;;;8577:1;8574;8567:12;8534:47;8603:22;;:::i;:::-;8661:2;8648:16;8641:5;8634:31;8718:2;8714;8710:11;8697:25;8692:2;8685:5;8681:14;8674:49;8769:2;8765;8761:11;8748:25;8798:2;8788:8;8785:16;8782:36;;;8814:1;8811;8804:12;8782:36;8850:56;8898:7;8887:8;8883:2;8879:17;8850:56;:::i;:::-;8845:2;8838:5;8834:14;8827:80;;8960:2;8956;8952:11;8939:25;8934:2;8927:5;8923:14;8916:49;9019:3;9015:2;9011:12;8998:26;8992:3;8985:5;8981:15;8974:51;9071:3;9067:2;9063:12;9050:26;9101:2;9091:8;9088:16;9085:36;;;9117:1;9114;9107:12;9085:36;9154:54;9200:7;9189:8;9185:2;9181:17;9154:54;:::i;:::-;9148:3;9137:15;;9130:79;-1:-1:-1;9141:5:39;8190:1049;-1:-1:-1;;;;;8190:1049:39:o;9429:908::-;9587:6;9595;9603;9611;9619;9627;9680:3;9668:9;9659:7;9655:23;9651:33;9648:53;;;9697:1;9694;9687:12;9648:53;9733:9;9720:23;9710:33;;9794:2;9783:9;9779:18;9766:32;9817:18;9858:2;9850:6;9847:14;9844:34;;;9874:1;9871;9864:12;9844:34;9897:61;9950:7;9941:6;9930:9;9926:22;9897:61;:::i;:::-;9887:71;;10005:2;9994:9;9990:18;9977:32;9967:42;;10056:2;10045:9;10041:18;10028:32;10018:42;;10113:3;10102:9;10098:19;10085:33;10069:49;;10143:2;10133:8;10130:16;10127:36;;;10159:1;10156;10149:12;10127:36;;10198:79;10269:7;10258:8;10247:9;10243:24;10198:79;:::i;:::-;9429:908;;;;-1:-1:-1;9429:908:39;;-1:-1:-1;9429:908:39;;10296:8;;9429:908;-1:-1:-1;;;9429:908:39:o;10342:328::-;10419:6;10427;10435;10488:2;10476:9;10467:7;10463:23;10459:32;10456:52;;;10504:1;10501;10494:12;10456:52;10527:29;10546:9;10527:29;:::i;:::-;10517:39;;10603:2;10592:9;10588:18;10575:32;10565:42;;10626:38;10660:2;10649:9;10645:18;10626:38;:::i;:::-;10616:48;;10342:328;;;;;:::o;10675:729::-;10808:6;10816;10824;10832;10840;10848;10901:3;10889:9;10880:7;10876:23;10872:33;10869:53;;;10918:1;10915;10908:12;10869:53;10954:9;10941:23;10931:33;;11011:2;11000:9;10996:18;10983:32;10973:42;;11062:2;11051:9;11047:18;11034:32;11024:42;;11113:2;11102:9;11098:18;11085:32;11075:42;;11168:3;11157:9;11153:19;11140:33;11196:18;11188:6;11185:30;11182:50;;;11228:1;11225;11218:12;11182:50;11267:77;11336:7;11327:6;11316:9;11312:22;11267:77;:::i;11409:184::-;11461:77;11458:1;11451:88;11558:4;11555:1;11548:15;11582:4;11579:1;11572:15;11598:128;11638:3;11669:1;11665:6;11662:1;11659:13;11656:39;;;11675:18;;:::i;:::-;-1:-1:-1;11711:9:39;;11598:128::o;12231:125::-;12271:4;12299:1;12296;12293:8;12290:34;;;12304:18;;:::i;:::-;-1:-1:-1;12341:9:39;;12231:125::o;12715:184::-;12785:6;12838:2;12826:9;12817:7;12813:23;12809:32;12806:52;;;12854:1;12851;12844:12;12806:52;-1:-1:-1;12877:16:39;;12715:184;-1:-1:-1;12715:184:39:o;14143:325::-;14231:6;14226:3;14219:19;14283:6;14276:5;14269:4;14264:3;14260:14;14247:43;;14335:1;14328:4;14319:6;14314:3;14310:16;14306:27;14299:38;14201:3;14457:4;14387:66;14382:2;14374:6;14370:15;14366:88;14361:3;14357:98;14353:109;14346:116;;14143:325;;;;:::o;14473:1379::-;14673:4;14721:2;14710:9;14706:18;14751:6;14740:9;14733:25;14777:2;14815;14810;14799:9;14795:18;14788:30;14838:6;14868;14860;14853:22;14906:2;14895:9;14891:18;14884:25;;14968:2;14958:6;14955:1;14951:14;14940:9;14936:30;14932:39;14918:53;;14994:6;15018:1;15028:795;15042:6;15039:1;15036:13;15028:795;;;15131:66;15119:9;15111:6;15107:22;15103:95;15098:3;15091:108;15251:6;15238:20;15338:66;15329:6;15313:14;15309:27;15305:100;15285:18;15281:125;15271:153;;15420:1;15417;15410:12;15271:153;15450:31;;15508:19;;15554:18;15543:30;;15540:50;;;15586:1;15583;15576:12;15540:50;15638:6;15622:14;15618:27;15610:6;15606:40;15603:60;;;15659:1;15656;15649:12;15603:60;15686:57;15736:6;15728;15723:2;15716:5;15712:14;15686:57;:::i;:::-;15676:67;-1:-1:-1;;;15801:12:39;;;;15766:15;;;;15064:1;15057:9;15028:795;;;-1:-1:-1;15840:6:39;;14473:1379;-1:-1:-1;;;;;;;;14473:1379:39:o;15857:277::-;15924:6;15977:2;15965:9;15956:7;15952:23;15948:32;15945:52;;;15993:1;15990;15983:12;15945:52;16025:9;16019:16;16078:5;16071:13;16064:21;16057:5;16054:32;16044:60;;16100:1;16097;16090:12;16044:60;16123:5;15857:277;-1:-1:-1;;;15857:277:39:o;16546:482::-;16635:1;16678:5;16635:1;16692:330;16713:7;16703:8;16700:21;16692:330;;;16832:4;16764:66;16760:77;16754:4;16751:87;16748:113;;;16841:18;;:::i;:::-;16891:7;16881:8;16877:22;16874:55;;;16911:16;;;;16874:55;16990:22;;;;16950:15;;;;16692:330;;;16696:3;16546:482;;;;;:::o;17033:866::-;17082:5;17112:8;17102:80;;-1:-1:-1;17153:1:39;17167:5;;17102:80;17201:4;17191:76;;-1:-1:-1;17238:1:39;17252:5;;17191:76;17283:4;17301:1;17296:59;;;;17369:1;17364:130;;;;17276:218;;17296:59;17326:1;17317:10;;17340:5;;;17364:130;17401:3;17391:8;17388:17;17385:43;;;17408:18;;:::i;:::-;-1:-1:-1;;17464:1:39;17450:16;;17479:5;;17276:218;;17578:2;17568:8;17565:16;17559:3;17553:4;17550:13;17546:36;17540:2;17530:8;17527:16;17522:2;17516:4;17513:12;17509:35;17506:77;17503:159;;;-1:-1:-1;17615:19:39;;;17647:5;;17503:159;17694:34;17719:8;17713:4;17694:34;:::i;:::-;17824:6;17756:66;17752:79;17743:7;17740:92;17737:118;;;17835:18;;:::i;:::-;17873:20;;17033:866;-1:-1:-1;;;17033:866:39:o;17904:131::-;17964:5;17993:36;18020:8;18014:4;17993:36;:::i;18040:274::-;18080:1;18106;18096:189;;18141:77;18138:1;18131:88;18242:4;18239:1;18232:15;18270:4;18267:1;18260:15;18096:189;-1:-1:-1;18299:9:39;;18040:274::o;18572:228::-;18612:7;18738:1;18670:66;18666:74;18663:1;18660:81;18655:1;18648:9;18641:17;18637:105;18634:131;;;18745:18;;:::i;:::-;-1:-1:-1;18785:9:39;;18572:228::o;22180:632::-;22351:2;22403:21;;;22473:13;;22376:18;;;22495:22;;;22322:4;;22351:2;22574:15;;;;22548:2;22533:18;;;22322:4;22617:169;22631:6;22628:1;22625:13;22617:169;;;22692:13;;22680:26;;22761:15;;;;22726:12;;;;22653:1;22646:9;22617:169;;;-1:-1:-1;22803:3:39;;22180:632;-1:-1:-1;;;;;;22180:632:39:o;26475:265::-;26283:12;;26271:25;;26345:4;26334:16;;;26328:23;26312:14;;;26305:47;26401:4;26390:16;;;26384:23;26368:14;;;26361:47;26457:4;26446:16;;;26440:23;26424:14;;;26417:47;26671:3;26656:19;;26684:50;26204:266;26745:245;26824:6;26832;26885:2;26873:9;26864:7;26860:23;26856:32;26853:52;;;26901:1;26898;26891:12;26853:52;-1:-1:-1;;26924:16:39;;26980:2;26965:18;;;26959:25;26924:16;;26959:25;;-1:-1:-1;26745:245:39:o;28831:1000::-;29132:3;29160:66;29268:2;29259:6;29255:2;29251:15;29247:24;29242:3;29235:37;29303:2;29298:3;29294:12;29335:6;29329:13;29384:4;29423:2;29415:6;29411:15;29444:1;29454:175;29468:6;29465:1;29462:13;29454:175;;;29531:13;;29517:28;;29567:14;;;;29604:15;;;;29490:1;29483:9;29454:175;;;-1:-1:-1;;;;29660:2:39;29656:15;;;;29652:24;29638:39;;-1:-1:-1;;29704:2:39;29693:14;;29686:30;;;;29743:2;29732:14;;29725:30;29782:2;29771:14;;29764:30;29821:3;29810:15;;28831:1000;-1:-1:-1;;28831:1000:39:o;29836:258::-;29908:1;29918:113;29932:6;29929:1;29926:13;29918:113;;;30008:11;;;30002:18;29989:11;;;29982:39;29954:2;29947:10;29918:113;;;30049:6;30046:1;30043:13;30040:48;;;-1:-1:-1;;30084:1:39;30066:16;;30059:27;29836:258::o;30099:1188::-;30287:4;30335:2;30324:9;30320:18;30365:6;30354:9;30347:25;30391:2;30429;30424;30413:9;30409:18;30402:30;30452:6;30487;30481:13;30518:6;30510;30503:22;30556:2;30545:9;30541:18;30534:25;;30618:2;30608:6;30605:1;30601:14;30590:9;30586:30;30582:39;30568:53;;30656:2;30648:6;30644:15;30677:1;30687:571;30701:6;30698:1;30695:13;30687:571;;;30790:66;30778:9;30770:6;30766:22;30762:95;30757:3;30750:108;30887:6;30881:13;30929:2;30923:9;30960:8;30952:6;30945:24;30982:61;31034:8;31029:2;31021:6;31017:15;31012:2;31008;31004:11;30982:61;:::i;:::-;31100:2;31086:17;31105:66;31082:90;31070:103;;;;31066:112;;;-1:-1:-1;31236:12:39;;;;31201:15;;;;30723:1;30716:9;30687:571;;;-1:-1:-1;31275:6:39;;30099:1188;-1:-1:-1;;;;;;;;30099:1188:39:o;31705:184::-;31757:77;31754:1;31747:88;31854:4;31851:1;31844:15;31878:4;31875:1;31868:15;37975:274;38104:3;38142:6;38136:13;38158:53;38204:6;38199:3;38192:4;38184:6;38180:17;38158:53;:::i;:::-;38227:16;;;;;37975:274;-1:-1:-1;;37975:274:39:o;39825:184::-;39877:77;39874:1;39867:88;39974:4;39971:1;39964:15;39998:4;39995:1;39988:15" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "4807600", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "DAO_SHARE_COLLECTOR()": "273", + "DEFAULT_ADMIN_ROLE()": "273", + "HUSD_address()": "2424", + "PARAMETER_SETTER_ROLE()": "274", + "TRUSTY_ROLE()": "297", + "availableExcessCollatDV(uint256[])": "infinite", + "bonus_rate()": "2397", + "buyBackDEUS(uint256,uint256[],uint256,uint256,bytes[])": "infinite", + "buyBackPaused()": "2411", + "buyback_fee()": "2376", + "collatDollarBalance(uint256)": "infinite", + "collectDaoShare(uint256,address)": "infinite", + "collectRedemption()": "infinite", + "daoShare()": "2396", + "emergencyWithdrawERC20(address,uint256,address)": "infinite", + "getChainID()": "248", + "getRoleAdmin(bytes32)": "2527", + "getRoleMember(bytes32,uint256)": "6980", + "getRoleMemberCount(bytes32)": "infinite", + "grantRole(bytes32,address)": "infinite", + "hasRole(bytes32,address)": "infinite", + "lastRedeemed(address)": "2611", + "mint1t1DEI(uint256,uint256,uint256,bytes[])": "infinite", + "mintAlgorithmicDEI(uint256,uint256,uint256,bytes[])": "infinite", + "mintFractionalDEI(uint256,uint256,uint256,uint256,uint256,bytes[])": "infinite", + "mintPaused()": "2389", + "minting_fee()": "2396", + "pausedPrice()": "2395", + "pool_ceiling()": "2396", + "recollat_fee()": "2416", + "recollateralizeDEI((uint256,uint256,uint256[],uint256,uint256,bytes[]))": "infinite", + "recollateralizePaused()": "2388", + "redeem1t1DEI(uint256,uint256,uint256,bytes[])": "infinite", + "redeemAlgorithmicDEI(uint256,uint256,uint256,bytes[])": "infinite", + "redeemCollateralBalances(address)": "2570", + "redeemDEUSBalances(address)": "2612", + "redeemFractionalDEI(uint256,uint256,uint256,uint256,bytes[])": "infinite", + "redeemPaused()": "2389", + "redemption_delay()": "2353", + "redemption_fee()": "2373", + "renounceRole(bytes32,address)": "infinite", + "revokeRole(bytes32,address)": "infinite", + "setPoolParameters(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": "infinite", + "toggleBuyBack()": "infinite", + "toggleMinting()": "infinite", + "toggleRecollateralize()": "infinite", + "toggleRedeeming()": "infinite", + "unclaimedPoolCollateral()": "2375", + "unclaimedPoolDEUS()": "2352" + } + }, + "methodIdentifiers": { + "DAO_SHARE_COLLECTOR()": "6d82e314", + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "HUSD_address()": "74347c44", + "PARAMETER_SETTER_ROLE()": "5de207cc", + "TRUSTY_ROLE()": "34ddb95d", + "availableExcessCollatDV(uint256[])": "40e14b78", + "bonus_rate()": "4c634934", + "buyBackDEUS(uint256,uint256[],uint256,uint256,bytes[])": "c410ca1b", + "buyBackPaused()": "7f877f85", + "buyback_fee()": "101197c7", + "collatDollarBalance(uint256)": "b6258aaa", + "collectDaoShare(uint256,address)": "7901330b", + "collectRedemption()": "12ace5a2", + "daoShare()": "88d19f1b", + "emergencyWithdrawERC20(address,uint256,address)": "e3d84d5e", + "getChainID()": "564b81ef", + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "lastRedeemed(address)": "abae2c4c", + "mint1t1DEI(uint256,uint256,uint256,bytes[])": "32ad1ee4", + "mintAlgorithmicDEI(uint256,uint256,uint256,bytes[])": "c6301e5d", + "mintFractionalDEI(uint256,uint256,uint256,uint256,uint256,bytes[])": "54f9769d", + "mintPaused()": "7e4831d3", + "minting_fee()": "c3355b8d", + "pausedPrice()": "c74ec56a", + "pool_ceiling()": "6526a12a", + "recollat_fee()": "fede5c9c", + "recollateralizeDEI((uint256,uint256,uint256[],uint256,uint256,bytes[]))": "928d2b31", + "recollateralizePaused()": "6d2c5615", + "redeem1t1DEI(uint256,uint256,uint256,bytes[])": "254cd2bd", + "redeemAlgorithmicDEI(uint256,uint256,uint256,bytes[])": "978b73b5", + "redeemCollateralBalances(address)": "08a7493d", + "redeemDEUSBalances(address)": "3b92da47", + "redeemFractionalDEI(uint256,uint256,uint256,uint256,bytes[])": "eb2d7461", + "redeemPaused()": "b235d468", + "redemption_delay()": "15128425", + "redemption_fee()": "cb73999f", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "setPoolParameters(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": "4ebbe762", + "toggleBuyBack()": "50c9ecd9", + "toggleMinting()": "7d55094d", + "toggleRecollateralize()": "42d15aec", + "toggleRedeeming()": "daa50485", + "unclaimedPoolCollateral()": "7b0461e9", + "unclaimedPoolDEUS()": "3648b7dc" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dei_contract_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_deus_contract_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_collateral_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_trusty_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_admin_address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pool_ceiling\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_library\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"toggled\",\"type\":\"bool\"}],\"name\":\"BuybackToggled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"toggled\",\"type\":\"bool\"}],\"name\":\"MintingToggled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_ceiling\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_bonus_rate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_redemption_delay\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_mint_fee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_redeem_fee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_buyback_fee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_recollat_fee\",\"type\":\"uint256\"}],\"name\":\"PoolParametersSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"toggled\",\"type\":\"bool\"}],\"name\":\"RecollateralizeToggled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"toggled\",\"type\":\"bool\"}],\"name\":\"RedeemingToggled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"daoShare\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"daoShareCollected\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DAO_SHARE_COLLECTOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HUSD_address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PARAMETER_SETTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRUSTY_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"collat_usd_price\",\"type\":\"uint256[]\"}],\"name\":\"availableExcessCollatDV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bonus_rate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"DEUS_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"collateral_price\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"buyBackDEUS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"buyBackPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"buyback_fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"collat_usd_price\",\"type\":\"uint256\"}],\"name\":\"collatDollarBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"collectDaoShare\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectRedemption\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"daoShare\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"emergencyWithdrawERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"lastRedeemed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"collateral_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateral_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"mint1t1DEI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dei_amount_d18\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deus_amount_d18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"mintAlgorithmicDEI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dei_amount_d18\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"collateral_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deus_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateral_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"mintFractionalDEI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"mint_amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minting_fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pausedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pool_ceiling\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recollat_fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"collateral_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pool_collateral_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"collateral_price\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"internalType\":\"struct DEIPool.RecollateralizeDEI\",\"name\":\"inputs\",\"type\":\"tuple\"}],\"name\":\"recollateralizeDEI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recollateralizePaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"DEI_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateral_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"redeem1t1DEI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"DEI_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"redeemAlgorithmicDEI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"redeemCollateralBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"redeemDEUSBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"DEI_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateral_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"redeemFractionalDEI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeemPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redemption_delay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redemption_fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"new_ceiling\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_bonus_rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_redemption_delay\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_mint_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_redeem_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_buyback_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_recollat_fee\",\"type\":\"uint256\"}],\"name\":\"setPoolParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleBuyBack\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleMinting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleRecollateralize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleRedeeming\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unclaimedPoolCollateral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unclaimedPoolDEUS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/DEI/Pools/Pool_HUSD.sol\":\"Pool_HUSD\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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 payable(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}\",\"keccak256\":\"0x60d51a32063a4975dbf9433d38f5849173527da72f007c38053274e06698cb54\",\"license\":\"MIT\"},\"contracts/DEI/IDEI.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\n\\ninterface IDEIStablecoin {\\n function name() external view returns (string memory);\\n function symbol() external view returns (string memory);\\n function totalSupply() external view returns (uint256);\\n function global_collateral_ratio() external view returns (uint256);\\n function dei_pools(address _address) external view returns (bool);\\n function dei_pools_array() external view returns (address[] memory);\\n function verify_price(bytes32 sighash, bytes[] calldata sigs) external view returns (bool);\\n function dei_info(uint256[] memory collat_usd_price) external view returns (uint256, uint256, uint256);\\n function getChainID() external view returns (uint256);\\n function globalCollateralValue(uint256[] memory collat_usd_price) external view returns (uint256);\\n function refreshCollateralRatio(uint deus_price, uint dei_price, uint256 expire_block, bytes[] calldata sigs) external;\\n function useGrowthRatio(bool _use_growth_ratio) external;\\n function setGrowthRatioBands(uint256 _GR_top_band, uint256 _GR_bottom_band) external;\\n function setPriceBands(uint256 _top_band, uint256 _bottom_band) external;\\n function activateDIP(bool _activate) external;\\n function pool_burn_from(address b_address, uint256 b_amount) external;\\n function pool_mint(address m_address, uint256 m_amount) external;\\n function addPool(address pool_address) external;\\n function removePool(address pool_address) external;\\n function setNameAndSymbol(string memory _name, string memory _symbol) external;\\n function setOracle(address _oracle) external;\\n function setDEIStep(uint256 _new_step) external;\\n function setReserveTracker(address _reserve_tracker_address) external;\\n function setRefreshCooldown(uint256 _new_cooldown) external;\\n function setDEUSAddress(address _deus_address) external;\\n function toggleCollateralRatio() external;\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x0c16e210870801fd11bac76f0cddbe1f61b19f18eb75a648144da3cba5f5f035\",\"license\":\"GPL-2.0-or-later\"},\"contracts/DEI/Pools/DEIPool.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity ^0.8.0;\\npragma abicoder v2;\\n// =================================================================================================================\\n// _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| |\\n// _| _| _| _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| |\\n// _| _| _|_|_| _| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_|_|_| |\\n// _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| |\\n// _|_|_| _|_|_|_| _|_| _|_|_| _| _| _| _| _|_|_| _| _| _|_|_| _|_|_| |\\n// =================================================================================================================\\n// ============================= DEIPool =============================\\n// ====================================================================\\n// DEUS Finance: https://github.com/DeusFinance\\n\\n// Primary Author(s)\\n// Travis Moore: https://github.com/FortisFortuna\\n// Jason Huan: https://github.com/jasonhuan\\n// Sam Kazemian: https://github.com/samkazemian\\n// Vahid Gh: https://github.com/vahid-dev\\n// SAYaghoubnejad: https://github.com/SAYaghoubnejad\\n\\n// Reviewer(s) / Contributor(s)\\n// Sam Sun: https://github.com/samczsun\\n\\nimport \\\"../../Uniswap/TransferHelper.sol\\\";\\nimport \\\"../../DEUS/IDEUS.sol\\\";\\nimport \\\"../../DEI/IDEI.sol\\\";\\nimport \\\"../../ERC20/ERC20.sol\\\";\\nimport \\\"../../Governance/AccessControl.sol\\\";\\nimport \\\"./DEIPoolLibrary.sol\\\";\\n\\ncontract DEIPool is AccessControl {\\n\\n\\tstruct RecollateralizeDEI {\\n\\t\\tuint256 collateral_amount;\\n\\t\\tuint256 pool_collateral_price;\\n\\t\\tuint256[] collateral_price;\\n\\t\\tuint256 deus_current_price;\\n\\t\\tuint256 expireBlock;\\n\\t\\tbytes[] sigs;\\n\\t}\\n\\n\\t/* ========== STATE VARIABLES ========== */\\n\\n\\tERC20 private collateral_token;\\n\\taddress private collateral_address;\\n\\n\\taddress private dei_contract_address;\\n\\taddress private deus_contract_address;\\n\\n\\tuint256 public minting_fee;\\n\\tuint256 public redemption_fee;\\n\\tuint256 public buyback_fee;\\n\\tuint256 public recollat_fee;\\n\\n\\tmapping(address => uint256) public redeemDEUSBalances;\\n\\tmapping(address => uint256) public redeemCollateralBalances;\\n\\tuint256 public unclaimedPoolCollateral;\\n\\tuint256 public unclaimedPoolDEUS;\\n\\tmapping(address => uint256) public lastRedeemed;\\n\\n\\t// Constants for various precisions\\n\\tuint256 private constant PRICE_PRECISION = 1e6;\\n\\tuint256 private constant COLLATERAL_RATIO_PRECISION = 1e6;\\n\\tuint256 private constant COLLATERAL_RATIO_MAX = 1e6;\\n\\n\\t// Number of decimals needed to get to 18\\n\\tuint256 private immutable missing_decimals;\\n\\n\\t// Pool_ceiling is the total units of collateral that a pool contract can hold\\n\\tuint256 public pool_ceiling = 0;\\n\\n\\t// Stores price of the collateral, if price is paused\\n\\tuint256 public pausedPrice = 0;\\n\\n\\t// Bonus rate on DEUS minted during recollateralizeDEI(); 6 decimals of precision, set to 0.75% on genesis\\n\\tuint256 public bonus_rate = 7500;\\n\\n\\t// Number of blocks to wait before being able to collectRedemption()\\n\\tuint256 public redemption_delay = 2;\\n\\n\\t// Minting/Redeeming fees goes to daoWallet\\n\\tuint256 public daoShare = 0;\\n\\n\\tDEIPoolLibrary poolLibrary;\\n\\n\\t// AccessControl Roles\\n\\tbytes32 private constant MINT_PAUSER = keccak256(\\\"MINT_PAUSER\\\");\\n\\tbytes32 private constant REDEEM_PAUSER = keccak256(\\\"REDEEM_PAUSER\\\");\\n\\tbytes32 private constant BUYBACK_PAUSER = keccak256(\\\"BUYBACK_PAUSER\\\");\\n\\tbytes32 private constant RECOLLATERALIZE_PAUSER = keccak256(\\\"RECOLLATERALIZE_PAUSER\\\");\\n\\tbytes32 public constant TRUSTY_ROLE = keccak256(\\\"TRUSTY_ROLE\\\");\\n\\tbytes32 public constant DAO_SHARE_COLLECTOR = keccak256(\\\"DAO_SHARE_COLLECTOR\\\");\\n\\tbytes32 public constant PARAMETER_SETTER_ROLE = keccak256(\\\"PARAMETER_SETTER_ROLE\\\");\\n\\n\\t// AccessControl state variables\\n\\tbool public mintPaused = false;\\n\\tbool public redeemPaused = false;\\n\\tbool public recollateralizePaused = false;\\n\\tbool public buyBackPaused = false;\\n\\n\\t/* ========== MODIFIERS ========== */\\n\\n\\tmodifier onlyTrusty() {\\n\\t\\trequire(\\n\\t\\t\\thasRole(TRUSTY_ROLE, msg.sender),\\n\\t\\t\\t\\\"POOL::you are not trusty\\\"\\n\\t\\t);\\n\\t\\t_;\\n\\t}\\n\\n\\tmodifier notRedeemPaused() {\\n\\t\\trequire(redeemPaused == false, \\\"POOL::Redeeming is paused\\\");\\n\\t\\t_;\\n\\t}\\n\\n\\tmodifier notMintPaused() {\\n\\t\\trequire(mintPaused == false, \\\"POOL::Minting is paused\\\");\\n\\t\\t_;\\n\\t}\\n\\n\\t/* ========== CONSTRUCTOR ========== */\\n\\n\\tconstructor(\\n\\t\\taddress _dei_contract_address,\\n\\t\\taddress _deus_contract_address,\\n\\t\\taddress _collateral_address,\\n\\t\\taddress _trusty_address,\\n\\t\\taddress _admin_address,\\n\\t\\tuint256 _pool_ceiling,\\n\\t\\taddress _library\\n\\t) {\\n\\t\\trequire(\\n\\t\\t\\t(_dei_contract_address != address(0)) &&\\n\\t\\t\\t\\t(_deus_contract_address != address(0)) &&\\n\\t\\t\\t\\t(_collateral_address != address(0)) &&\\n\\t\\t\\t\\t(_trusty_address != address(0)) &&\\n\\t\\t\\t\\t(_admin_address != address(0)) &&\\n\\t\\t\\t\\t(_library != address(0)),\\n\\t\\t\\t\\\"POOL::Zero address detected\\\"\\n\\t\\t);\\n\\t\\tpoolLibrary = DEIPoolLibrary(_library);\\n\\t\\tdei_contract_address = _dei_contract_address;\\n\\t\\tdeus_contract_address = _deus_contract_address;\\n\\t\\tcollateral_address = _collateral_address;\\n\\t\\tcollateral_token = ERC20(_collateral_address);\\n\\t\\tpool_ceiling = _pool_ceiling;\\n\\t\\tmissing_decimals = uint256(18) - collateral_token.decimals();\\n\\n\\t\\t_setupRole(DEFAULT_ADMIN_ROLE, _admin_address);\\n\\t\\t_setupRole(MINT_PAUSER, _trusty_address);\\n\\t\\t_setupRole(REDEEM_PAUSER, _trusty_address);\\n\\t\\t_setupRole(RECOLLATERALIZE_PAUSER, _trusty_address);\\n\\t\\t_setupRole(BUYBACK_PAUSER, _trusty_address);\\n\\t\\t_setupRole(TRUSTY_ROLE, _trusty_address);\\n\\t\\t_setupRole(PARAMETER_SETTER_ROLE, _trusty_address);\\n\\t}\\n\\n\\t/* ========== VIEWS ========== */\\n\\n\\t// Returns dollar value of collateral held in this DEI pool\\n\\tfunction collatDollarBalance(uint256 collat_usd_price) public view returns (uint256) {\\n\\t\\treturn ((collateral_token.balanceOf(address(this)) - unclaimedPoolCollateral) * (10**missing_decimals) * collat_usd_price) / (PRICE_PRECISION);\\n\\t}\\n\\n\\t// Returns the value of excess collateral held in this DEI pool, compared to what is needed to maintain the global collateral ratio\\n\\tfunction availableExcessCollatDV(uint256[] memory collat_usd_price) public view returns (uint256) {\\n\\t\\tuint256 total_supply = IDEIStablecoin(dei_contract_address).totalSupply();\\n\\t\\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\\n\\t\\tuint256 global_collat_value = IDEIStablecoin(dei_contract_address).globalCollateralValue(collat_usd_price);\\n\\n\\t\\tif (global_collateral_ratio > COLLATERAL_RATIO_PRECISION)\\n\\t\\t\\tglobal_collateral_ratio = COLLATERAL_RATIO_PRECISION; // Handles an overcollateralized contract with CR > 1\\n\\t\\tuint256 required_collat_dollar_value_d18 = (total_supply * global_collateral_ratio) / (COLLATERAL_RATIO_PRECISION); // Calculates collateral needed to back each 1 DEI with $1 of collateral at current collat ratio\\n\\t\\tif (global_collat_value > required_collat_dollar_value_d18)\\n\\t\\t\\treturn global_collat_value - required_collat_dollar_value_d18;\\n\\t\\telse return 0;\\n\\t}\\n\\n\\tfunction getChainID() public view returns (uint256) {\\n\\t\\tuint256 id;\\n\\t\\tassembly {\\n\\t\\t\\tid := chainid()\\n\\t\\t}\\n\\t\\treturn id;\\n\\t}\\n\\n\\t/* ========== PUBLIC FUNCTIONS ========== */\\n\\n\\t// We separate out the 1t1, fractional and algorithmic minting functions for gas efficiency\\n\\tfunction mint1t1DEI(uint256 collateral_amount, uint256 collateral_price, uint256 expireBlock, bytes[] calldata sigs)\\n\\t\\texternal\\n\\t\\tnotMintPaused\\n\\t\\treturns (uint256 dei_amount_d18)\\n\\t{\\n\\n\\t\\trequire(\\n\\t\\t\\tIDEIStablecoin(dei_contract_address).global_collateral_ratio() >= COLLATERAL_RATIO_MAX,\\n\\t\\t\\t\\\"Collateral ratio must be >= 1\\\"\\n\\t\\t);\\n\\t\\trequire(\\n\\t\\t\\tcollateral_token.balanceOf(address(this)) - unclaimedPoolCollateral + collateral_amount <= pool_ceiling,\\n\\t\\t\\t\\\"[Pool's Closed]: Ceiling reached\\\"\\n\\t\\t);\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"POOL::mint1t1DEI: signature is expired\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::mint1t1DEI: invalid signatures\\\");\\n\\n\\t\\tuint256 collateral_amount_d18 = collateral_amount * (10**missing_decimals);\\n\\t\\tdei_amount_d18 = poolLibrary.calcMint1t1DEI(\\n\\t\\t\\tcollateral_price,\\n\\t\\t\\tcollateral_amount_d18\\n\\t\\t); //1 DEI for each $1 worth of collateral\\n\\n\\t\\tdei_amount_d18 = (dei_amount_d18 * (uint256(1e6) - minting_fee)) / 1e6; //remove precision at the end\\n\\n\\t\\tTransferHelper.safeTransferFrom(\\n\\t\\t\\taddress(collateral_token),\\n\\t\\t\\tmsg.sender,\\n\\t\\t\\taddress(this),\\n\\t\\t\\tcollateral_amount\\n\\t\\t);\\n\\n\\t\\tdaoShare += dei_amount_d18 * minting_fee / 1e6;\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_mint(msg.sender, dei_amount_d18);\\n\\t}\\n\\n\\t// 0% collateral-backed\\n\\tfunction mintAlgorithmicDEI(\\n\\t\\tuint256 deus_amount_d18,\\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external notMintPaused returns (uint256 dei_amount_d18) {\\n\\t\\trequire(\\n\\t\\t\\tIDEIStablecoin(dei_contract_address).global_collateral_ratio() == 0,\\n\\t\\t\\t\\\"Collateral ratio must be 0\\\"\\n\\t\\t);\\n\\t\\trequire(expireBlock >= block.number, \\\"POOL::mintAlgorithmicDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(deus_contract_address, deus_current_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::mintAlgorithmicDEI: invalid signatures\\\");\\n\\n\\t\\tdei_amount_d18 = poolLibrary.calcMintAlgorithmicDEI(\\n\\t\\t\\tdeus_current_price, // X DEUS / 1 USD\\n\\t\\t\\tdeus_amount_d18\\n\\t\\t);\\n\\n\\t\\tdei_amount_d18 = (dei_amount_d18 * (uint256(1e6) - (minting_fee))) / (1e6);\\n\\t\\tdaoShare += dei_amount_d18 * minting_fee / 1e6;\\n\\n\\t\\tIDEUSToken(deus_contract_address).pool_burn_from(msg.sender, deus_amount_d18);\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_mint(msg.sender, dei_amount_d18);\\n\\t}\\n\\n\\t// Will fail if fully collateralized or fully algorithmic\\n\\t// > 0% and < 100% collateral-backed\\n\\tfunction mintFractionalDEI(\\n\\t\\tuint256 collateral_amount,\\n\\t\\tuint256 deus_amount,\\n\\t\\tuint256 collateral_price,\\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external notMintPaused returns (uint256 mint_amount) {\\n\\t\\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\\n\\t\\trequire(\\n\\t\\t\\tglobal_collateral_ratio < COLLATERAL_RATIO_MAX && global_collateral_ratio > 0,\\n\\t\\t\\t\\\"Collateral ratio needs to be between .000001 and .999999\\\"\\n\\t\\t);\\n\\t\\trequire(\\n\\t\\t\\tcollateral_token.balanceOf(address(this)) - unclaimedPoolCollateral + collateral_amount <= pool_ceiling,\\n\\t\\t\\t\\\"Pool ceiling reached, no more DEI can be minted with this collateral\\\"\\n\\t\\t);\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"POOL::mintFractionalDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, deus_contract_address, deus_current_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::mintFractionalDEI: invalid signatures\\\");\\n\\n\\t\\tDEIPoolLibrary.MintFD_Params memory input_params;\\n\\n\\t\\t// Blocking is just for solving stack depth problem\\n\\t\\t{\\n\\t\\t\\tuint256 collateral_amount_d18 = collateral_amount * (10**missing_decimals);\\n\\t\\t\\tinput_params = DEIPoolLibrary.MintFD_Params(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_current_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_amount_d18,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tglobal_collateral_ratio\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\t\\t}\\t\\t\\t\\t\\t\\t\\n\\n\\t\\tuint256 deus_needed;\\n\\t\\t(mint_amount, deus_needed) = poolLibrary.calcMintFractionalDEI(input_params);\\n\\t\\trequire(deus_needed <= deus_amount, \\\"Not enough DEUS inputted\\\");\\n\\t\\t\\n\\t\\tmint_amount = (mint_amount * (uint256(1e6) - minting_fee)) / (1e6);\\n\\n\\t\\tIDEUSToken(deus_contract_address).pool_burn_from(msg.sender, deus_needed);\\n\\t\\tTransferHelper.safeTransferFrom(\\n\\t\\t\\taddress(collateral_token),\\n\\t\\t\\tmsg.sender,\\n\\t\\t\\taddress(this),\\n\\t\\t\\tcollateral_amount\\n\\t\\t);\\n\\n\\t\\tdaoShare += mint_amount * minting_fee / 1e6;\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_mint(msg.sender, mint_amount);\\n\\t}\\n\\n\\t// Redeem collateral. 100% collateral-backed\\n\\tfunction redeem1t1DEI(uint256 DEI_amount, uint256 collateral_price, uint256 expireBlock, bytes[] calldata sigs)\\n\\t\\texternal\\n\\t\\tnotRedeemPaused\\n\\t{\\n\\t\\trequire(\\n\\t\\t\\tIDEIStablecoin(dei_contract_address).global_collateral_ratio() == COLLATERAL_RATIO_MAX,\\n\\t\\t\\t\\\"Collateral ratio must be == 1\\\"\\n\\t\\t);\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"POOL::mintAlgorithmicDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::redeem1t1DEI: invalid signatures\\\");\\n\\n\\t\\t// Need to adjust for decimals of collateral\\n\\t\\tuint256 DEI_amount_precision = DEI_amount / (10**missing_decimals);\\n\\t\\tuint256 collateral_needed = poolLibrary.calcRedeem1t1DEI(\\n\\t\\t\\tcollateral_price,\\n\\t\\t\\tDEI_amount_precision\\n\\t\\t);\\n\\n\\t\\tcollateral_needed = (collateral_needed * (uint256(1e6) - redemption_fee)) / (1e6);\\n\\t\\trequire(\\n\\t\\t\\tcollateral_needed <= collateral_token.balanceOf(address(this)) - unclaimedPoolCollateral,\\n\\t\\t\\t\\\"Not enough collateral in pool\\\"\\n\\t\\t);\\n\\n\\t\\tredeemCollateralBalances[msg.sender] = redeemCollateralBalances[msg.sender] + collateral_needed;\\n\\t\\tunclaimedPoolCollateral = unclaimedPoolCollateral + collateral_needed;\\n\\t\\tlastRedeemed[msg.sender] = block.number;\\n\\n\\t\\tdaoShare += DEI_amount * redemption_fee / 1e6;\\n\\t\\t// Move all external functions to the end\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_burn_from(msg.sender, DEI_amount);\\n\\t}\\n\\n\\t// Will fail if fully collateralized or algorithmic\\n\\t// Redeem DEI for collateral and DEUS. > 0% and < 100% collateral-backed\\n\\tfunction redeemFractionalDEI(\\n\\t\\tuint256 DEI_amount,\\n\\t\\tuint256 collateral_price, \\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external notRedeemPaused {\\n\\t\\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\\n\\t\\trequire(\\n\\t\\t\\tglobal_collateral_ratio < COLLATERAL_RATIO_MAX && global_collateral_ratio > 0,\\n\\t\\t\\t\\\"POOL::redeemFractionalDEI: Collateral ratio needs to be between .000001 and .999999\\\"\\n\\t\\t);\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"DEI::redeemFractionalDEI: signature is expired\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, deus_contract_address, deus_current_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::redeemFractionalDEI: invalid signatures\\\");\\n\\n\\t\\t// Blocking is just for solving stack depth problem\\n\\t\\tuint256 deus_amount;\\n\\t\\tuint256 collateral_amount;\\n\\t\\t{\\n\\t\\t\\tuint256 col_price_usd = collateral_price;\\n\\n\\t\\t\\tuint256 DEI_amount_post_fee = (DEI_amount * (uint256(1e6) - redemption_fee)) / (PRICE_PRECISION);\\n\\n\\t\\t\\tuint256 deus_dollar_value_d18 = DEI_amount_post_fee - ((DEI_amount_post_fee * global_collateral_ratio) / (PRICE_PRECISION));\\n\\t\\t\\tdeus_amount = deus_dollar_value_d18 * (PRICE_PRECISION) / (deus_current_price);\\n\\n\\t\\t\\t// Need to adjust for decimals of collateral\\n\\t\\t\\tuint256 DEI_amount_precision = DEI_amount_post_fee / (10**missing_decimals);\\n\\t\\t\\tuint256 collateral_dollar_value = (DEI_amount_precision * global_collateral_ratio) / PRICE_PRECISION;\\n\\t\\t\\tcollateral_amount = (collateral_dollar_value * PRICE_PRECISION) / (col_price_usd);\\n\\t\\t}\\n\\t\\trequire(\\n\\t\\t\\tcollateral_amount <= collateral_token.balanceOf(address(this)) - unclaimedPoolCollateral,\\n\\t\\t\\t\\\"Not enough collateral in pool\\\"\\n\\t\\t);\\n\\n\\t\\tredeemCollateralBalances[msg.sender] = redeemCollateralBalances[msg.sender] + collateral_amount;\\n\\t\\tunclaimedPoolCollateral = unclaimedPoolCollateral + collateral_amount;\\n\\n\\t\\tredeemDEUSBalances[msg.sender] = redeemDEUSBalances[msg.sender] + deus_amount;\\n\\t\\tunclaimedPoolDEUS = unclaimedPoolDEUS + deus_amount;\\n\\n\\t\\tlastRedeemed[msg.sender] = block.number;\\n\\n\\t\\tdaoShare += DEI_amount * redemption_fee / 1e6;\\n\\t\\t// Move all external functions to the end\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_burn_from(msg.sender, DEI_amount);\\n\\t\\tIDEUSToken(deus_contract_address).pool_mint(address(this), deus_amount);\\n\\t}\\n\\n\\t// Redeem DEI for DEUS. 0% collateral-backed\\n\\tfunction redeemAlgorithmicDEI(\\n\\t\\tuint256 DEI_amount,\\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external notRedeemPaused {\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).global_collateral_ratio() == 0, \\\"POOL::redeemAlgorithmicDEI: Collateral ratio must be 0\\\");\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"DEI::redeemAlgorithmicDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(deus_contract_address, deus_current_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::redeemAlgorithmicDEI: invalid signatures\\\");\\n\\n\\t\\tuint256 deus_dollar_value_d18 = DEI_amount;\\n\\n\\t\\tdeus_dollar_value_d18 = (deus_dollar_value_d18 * (uint256(1e6) - redemption_fee)) / 1e6; //apply fees\\n\\n\\t\\tuint256 deus_amount = (deus_dollar_value_d18 * (PRICE_PRECISION)) / deus_current_price;\\n\\n\\t\\tredeemDEUSBalances[msg.sender] = redeemDEUSBalances[msg.sender] + deus_amount;\\n\\t\\tunclaimedPoolDEUS = unclaimedPoolDEUS + deus_amount;\\n\\n\\t\\tlastRedeemed[msg.sender] = block.number;\\n\\n\\t\\tdaoShare += DEI_amount * redemption_fee / 1e6;\\n\\t\\t// Move all external functions to the end\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_burn_from(msg.sender, DEI_amount);\\n\\t\\tIDEUSToken(deus_contract_address).pool_mint(address(this), deus_amount);\\n\\t}\\n\\n\\t// After a redemption happens, transfer the newly minted DEUS and owed collateral from this pool\\n\\t// contract to the user. Redemption is split into two functions to prevent flash loans from being able\\n\\t// to take out DEI/collateral from the system, use an AMM to trade the new price, and then mint back into the system.\\n\\tfunction collectRedemption() external {\\n\\t\\trequire(\\n\\t\\t\\t(lastRedeemed[msg.sender] + redemption_delay) <= block.number,\\n\\t\\t\\t\\\"POOL::collectRedemption: Must wait for redemption_delay blocks before collecting redemption\\\"\\n\\t\\t);\\n\\t\\tbool sendDEUS = false;\\n\\t\\tbool sendCollateral = false;\\n\\t\\tuint256 DEUSAmount = 0;\\n\\t\\tuint256 CollateralAmount = 0;\\n\\n\\t\\t// Use Checks-Effects-Interactions pattern\\n\\t\\tif (redeemDEUSBalances[msg.sender] > 0) {\\n\\t\\t\\tDEUSAmount = redeemDEUSBalances[msg.sender];\\n\\t\\t\\tredeemDEUSBalances[msg.sender] = 0;\\n\\t\\t\\tunclaimedPoolDEUS = unclaimedPoolDEUS - DEUSAmount;\\n\\n\\t\\t\\tsendDEUS = true;\\n\\t\\t}\\n\\n\\t\\tif (redeemCollateralBalances[msg.sender] > 0) {\\n\\t\\t\\tCollateralAmount = redeemCollateralBalances[msg.sender];\\n\\t\\t\\tredeemCollateralBalances[msg.sender] = 0;\\n\\t\\t\\tunclaimedPoolCollateral = unclaimedPoolCollateral - CollateralAmount;\\n\\t\\t\\tsendCollateral = true;\\n\\t\\t}\\n\\n\\t\\tif (sendDEUS) {\\n\\t\\t\\tTransferHelper.safeTransfer(address(deus_contract_address), msg.sender, DEUSAmount);\\n\\t\\t}\\n\\t\\tif (sendCollateral) {\\n\\t\\t\\tTransferHelper.safeTransfer(\\n\\t\\t\\t\\taddress(collateral_token),\\n\\t\\t\\t\\tmsg.sender,\\n\\t\\t\\t\\tCollateralAmount\\n\\t\\t\\t);\\n\\t\\t}\\n\\t}\\n\\n\\t// When the protocol is recollateralizing, we need to give a discount of DEUS to hit the new CR target\\n\\t// Thus, if the target collateral ratio is higher than the actual value of collateral, minters get DEUS for adding collateral\\n\\t// This function simply rewards anyone that sends collateral to a pool with the same amount of DEUS + the bonus rate\\n\\t// Anyone can call this function to recollateralize the protocol and take the extra DEUS value from the bonus rate as an arb opportunity\\n\\tfunction recollateralizeDEI(RecollateralizeDEI memory inputs) external {\\n\\t\\trequire(recollateralizePaused == false, \\\"POOL::recollateralizeDEI: Recollateralize is paused\\\");\\n\\n\\t\\trequire(inputs.expireBlock >= block.number, \\\"POOL::recollateralizeDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_address, \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinputs.collateral_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_contract_address, \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinputs.deus_current_price, \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinputs.expireBlock,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tgetChainID()\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, inputs.sigs), \\\"POOL::recollateralizeDEI: invalid signatures\\\");\\n\\n\\t\\tuint256 collateral_amount_d18 = inputs.collateral_amount * (10**missing_decimals);\\n\\n\\t\\tuint256 dei_total_supply = IDEIStablecoin(dei_contract_address).totalSupply();\\n\\t\\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\\n\\t\\tuint256 global_collat_value = IDEIStablecoin(dei_contract_address).globalCollateralValue(inputs.collateral_price);\\n\\n\\t\\t(uint256 collateral_units, uint256 amount_to_recollat) = poolLibrary.calcRecollateralizeDEIInner(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_amount_d18,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinputs.collateral_price[inputs.collateral_price.length - 1], // pool collateral price exist in last index\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tglobal_collat_value,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdei_total_supply,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tglobal_collateral_ratio\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\tuint256 collateral_units_precision = collateral_units / (10**missing_decimals);\\n\\n\\t\\tuint256 deus_paid_back = (amount_to_recollat * (uint256(1e6) + bonus_rate - recollat_fee)) / inputs.deus_current_price;\\n\\n\\t\\tTransferHelper.safeTransferFrom(\\n\\t\\t\\taddress(collateral_token),\\n\\t\\t\\tmsg.sender,\\n\\t\\t\\taddress(this),\\n\\t\\t\\tcollateral_units_precision\\n\\t\\t);\\n\\t\\tIDEUSToken(deus_contract_address).pool_mint(msg.sender, deus_paid_back);\\n\\t}\\n\\n\\t// Function can be called by an DEUS holder to have the protocol buy back DEUS with excess collateral value from a desired collateral pool\\n\\t// This can also happen if the collateral ratio > 1\\n\\tfunction buyBackDEUS(\\n\\t\\tuint256 DEUS_amount,\\n\\t\\tuint256[] memory collateral_price,\\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external {\\n\\t\\trequire(buyBackPaused == false, \\\"POOL::buyBackDEUS: Buyback is paused\\\");\\n\\t\\trequire(expireBlock >= block.number, \\\"DEI::buyBackDEUS: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_address,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_contract_address,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_current_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\texpireBlock,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tgetChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::buyBackDEUS: invalid signatures\\\");\\n\\n\\t\\tDEIPoolLibrary.BuybackDEUS_Params memory input_params = DEIPoolLibrary.BuybackDEUS_Params(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tavailableExcessCollatDV(collateral_price),\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_current_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_price[collateral_price.length - 1], // pool collateral price exist in last index\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tDEUS_amount\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\tuint256 collateral_equivalent_d18 = (poolLibrary.calcBuyBackDEUS(input_params) * (uint256(1e6) - buyback_fee)) / (1e6);\\n\\t\\tuint256 collateral_precision = collateral_equivalent_d18 / (10**missing_decimals);\\n\\n\\t\\t// Give the sender their desired collateral and burn the DEUS\\n\\t\\tIDEUSToken(deus_contract_address).pool_burn_from(msg.sender, DEUS_amount);\\n\\t\\tTransferHelper.safeTransfer(\\n\\t\\t\\taddress(collateral_token),\\n\\t\\t\\tmsg.sender,\\n\\t\\t\\tcollateral_precision\\n\\t\\t);\\n\\t}\\n\\n\\t/* ========== RESTRICTED FUNCTIONS ========== */\\n\\n\\tfunction collectDaoShare(uint256 amount, address to) external {\\n\\t\\trequire(hasRole(DAO_SHARE_COLLECTOR, msg.sender));\\n\\t\\trequire(amount <= daoShare, \\\"amount<=daoShare\\\");\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_mint(to, amount);\\n\\t\\tdaoShare -= amount;\\n\\n\\t\\temit daoShareCollected(amount, to);\\n\\t}\\n\\n\\tfunction emergencyWithdrawERC20(address token, uint amount, address to) external onlyTrusty {\\n\\t\\tIERC20(token).transfer(to, amount);\\n\\t}\\n\\n\\tfunction toggleMinting() external {\\n\\t\\trequire(hasRole(MINT_PAUSER, msg.sender));\\n\\t\\tmintPaused = !mintPaused;\\n\\n\\t\\temit MintingToggled(mintPaused);\\n\\t}\\n\\n\\tfunction toggleRedeeming() external {\\n\\t\\trequire(hasRole(REDEEM_PAUSER, msg.sender));\\n\\t\\tredeemPaused = !redeemPaused;\\n\\n\\t\\temit RedeemingToggled(redeemPaused);\\n\\t}\\n\\n\\tfunction toggleRecollateralize() external {\\n\\t\\trequire(hasRole(RECOLLATERALIZE_PAUSER, msg.sender));\\n\\t\\trecollateralizePaused = !recollateralizePaused;\\n\\n\\t\\temit RecollateralizeToggled(recollateralizePaused);\\n\\t}\\n\\n\\tfunction toggleBuyBack() external {\\n\\t\\trequire(hasRole(BUYBACK_PAUSER, msg.sender));\\n\\t\\tbuyBackPaused = !buyBackPaused;\\n\\n\\t\\temit BuybackToggled(buyBackPaused);\\n\\t}\\n\\n\\t// Combined into one function due to 24KiB contract memory limit\\n\\tfunction setPoolParameters(\\n\\t\\tuint256 new_ceiling,\\n\\t\\tuint256 new_bonus_rate,\\n\\t\\tuint256 new_redemption_delay,\\n\\t\\tuint256 new_mint_fee,\\n\\t\\tuint256 new_redeem_fee,\\n\\t\\tuint256 new_buyback_fee,\\n\\t\\tuint256 new_recollat_fee\\n\\t) external {\\n\\t\\trequire(hasRole(PARAMETER_SETTER_ROLE, msg.sender), \\\"POOL: Caller is not PARAMETER_SETTER_ROLE\\\");\\n\\t\\tpool_ceiling = new_ceiling;\\n\\t\\tbonus_rate = new_bonus_rate;\\n\\t\\tredemption_delay = new_redemption_delay;\\n\\t\\tminting_fee = new_mint_fee;\\n\\t\\tredemption_fee = new_redeem_fee;\\n\\t\\tbuyback_fee = new_buyback_fee;\\n\\t\\trecollat_fee = new_recollat_fee;\\n\\n\\t\\temit PoolParametersSet(\\n\\t\\t\\tnew_ceiling,\\n\\t\\t\\tnew_bonus_rate,\\n\\t\\t\\tnew_redemption_delay,\\n\\t\\t\\tnew_mint_fee,\\n\\t\\t\\tnew_redeem_fee,\\n\\t\\t\\tnew_buyback_fee,\\n\\t\\t\\tnew_recollat_fee\\n\\t\\t);\\n\\t}\\n\\n\\t/* ========== EVENTS ========== */\\n\\n\\tevent PoolParametersSet(\\n\\t\\tuint256 new_ceiling,\\n\\t\\tuint256 new_bonus_rate,\\n\\t\\tuint256 new_redemption_delay,\\n\\t\\tuint256 new_mint_fee,\\n\\t\\tuint256 new_redeem_fee,\\n\\t\\tuint256 new_buyback_fee,\\n\\t\\tuint256 new_recollat_fee\\n\\t);\\n\\tevent daoShareCollected(uint256 daoShare, address to);\\n\\tevent MintingToggled(bool toggled);\\n\\tevent RedeemingToggled(bool toggled);\\n\\tevent RecollateralizeToggled(bool toggled);\\n\\tevent BuybackToggled(bool toggled);\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0xc714b5aaa2c0b0b8129e279d395e924d1ea17699f830b64250af9127e6026d21\",\"license\":\"GPL-2.0-or-later\"},\"contracts/DEI/Pools/DEIPoolLibrary.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.8.0;\\n\\ncontract DEIPoolLibrary {\\n\\n // Constants for various precisions\\n uint256 private constant PRICE_PRECISION = 1e6;\\n\\n constructor() {}\\n\\n // ================ Structs ================\\n // Needed to lower stack size\\n struct MintFD_Params {\\n uint256 deus_price_usd; \\n uint256 col_price_usd;\\n uint256 collateral_amount;\\n uint256 col_ratio;\\n }\\n\\n struct BuybackDEUS_Params {\\n uint256 excess_collateral_dollar_value_d18;\\n uint256 deus_price_usd;\\n uint256 col_price_usd;\\n uint256 DEUS_amount;\\n }\\n\\n // ================ Functions ================\\n\\n function calcMint1t1DEI(uint256 col_price, uint256 collateral_amount_d18) public pure returns (uint256) {\\n return (collateral_amount_d18 * col_price) / (1e6);\\n }\\n\\n function calcMintAlgorithmicDEI(uint256 deus_price_usd, uint256 deus_amount_d18) public pure returns (uint256) {\\n return (deus_amount_d18 * deus_price_usd) / (1e6);\\n }\\n\\n function calcMintFractionalDEI(MintFD_Params memory params) public pure returns (uint256, uint256) {\\n // Since solidity truncates division, every division operation must be the last operation in the equation to ensure minimum error\\n // The contract must check the proper ratio was sent to mint DEI. We do this by seeing the minimum mintable DEI based on each amount \\n uint256 c_dollar_value_d18;\\n \\n // Scoping for stack concerns\\n { \\n // USD amounts of the collateral and the DEUS\\n c_dollar_value_d18 = (params.collateral_amount * params.col_price_usd) / (1e6);\\n\\n }\\n uint calculated_deus_dollar_value_d18 = ((c_dollar_value_d18 * (1e6)) / params.col_ratio) - c_dollar_value_d18;\\n\\n uint calculated_deus_needed = (calculated_deus_dollar_value_d18 * (1e6)) / params.deus_price_usd;\\n\\n return (\\n c_dollar_value_d18 + calculated_deus_dollar_value_d18,\\n calculated_deus_needed\\n );\\n }\\n\\n function calcRedeem1t1DEI(uint256 col_price_usd, uint256 DEI_amount) public pure returns (uint256) {\\n return (DEI_amount * (1e6)) / col_price_usd;\\n }\\n\\n function calcBuyBackDEUS(BuybackDEUS_Params memory params) public pure returns (uint256) {\\n // If the total collateral value is higher than the amount required at the current collateral ratio then buy back up to the possible DEUS with the desired collateral\\n require(params.excess_collateral_dollar_value_d18 > 0, \\\"No excess collateral to buy back!\\\");\\n\\n // Make sure not to take more than is available\\n uint256 deus_dollar_value_d18 = (params.DEUS_amount * (params.deus_price_usd)) / (1e6);\\n require(deus_dollar_value_d18 <= params.excess_collateral_dollar_value_d18, \\\"You are trying to buy back more than the excess!\\\");\\n\\n // Get the equivalent amount of collateral based on the market value of DEUS provided \\n uint256 collateral_equivalent_d18 = (deus_dollar_value_d18 * (1e6)) / params.col_price_usd;\\n //collateral_equivalent_d18 = collateral_equivalent_d18.sub((collateral_equivalent_d18.mul(params.buyback_fee)).div(1e6));\\n\\n return collateral_equivalent_d18;\\n\\n }\\n\\n\\n // Returns value of collateral that must increase to reach recollateralization target (if 0 means no recollateralization)\\n function recollateralizeAmount(uint256 total_supply, uint256 global_collateral_ratio, uint256 global_collat_value) public pure returns (uint256) {\\n uint256 target_collat_value = (total_supply * global_collateral_ratio) / (1e6); // We want 18 decimals of precision so divide by 1e6; total_supply is 1e18 and global_collateral_ratio is 1e6\\n // Subtract the current value of collateral from the target value needed, if higher than 0 then system needs to recollateralize\\n return target_collat_value - global_collat_value; // If recollateralization is not needed, throws a subtraction underflow\\n }\\n\\n function calcRecollateralizeDEIInner(\\n uint256 collateral_amount, \\n uint256 col_price,\\n uint256 global_collat_value,\\n uint256 dei_total_supply,\\n uint256 global_collateral_ratio\\n ) public pure returns (uint256, uint256) {\\n uint256 collat_value_attempted = (collateral_amount * col_price) / (1e6);\\n uint256 effective_collateral_ratio = (global_collat_value * (1e6)) / dei_total_supply; //returns it in 1e6\\n uint256 recollat_possible = (global_collateral_ratio * dei_total_supply - (dei_total_supply * effective_collateral_ratio)) / (1e6);\\n\\n uint256 amount_to_recollat;\\n if(collat_value_attempted <= recollat_possible){\\n amount_to_recollat = collat_value_attempted;\\n } else {\\n amount_to_recollat = recollat_possible;\\n }\\n\\n return ((amount_to_recollat * (1e6)) / col_price, amount_to_recollat);\\n\\n }\\n\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x6c2db8a8f39e018d8beb032c29cb86e4c99766669e511f328fa8faf0b173966a\",\"license\":\"GPL-2.0-or-later\"},\"contracts/DEI/Pools/Pool_HUSD.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.6.11;\\n\\nimport \\\"./DEIPool.sol\\\";\\n\\ncontract Pool_HUSD is DEIPool {\\n address public HUSD_address;\\n constructor(\\n address _dei_contract_address,\\n address _deus_contract_address,\\n address _collateral_address,\\n address _trusty_address,\\n address _admin_address,\\n uint256 _pool_ceiling,\\n address _library\\n ) \\n DEIPool(_dei_contract_address, _deus_contract_address, _collateral_address, _trusty_address, _admin_address, _pool_ceiling, _library)\\n public {\\n require(_collateral_address != address(0), \\\"Zero address detected\\\");\\n\\n _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());\\n HUSD_address = _collateral_address;\\n }\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x152d01ff92109aaa0bd5b7d760cf764e149b6de134a217edcbda78ad499d7904\",\"license\":\"GPL-2.0-or-later\"},\"contracts/DEUS/IDEUS.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\n\\ninterface IDEUSToken {\\n function name() external view returns (string memory);\\n function symbol() external view returns (string memory);\\n function pool_burn_from(address b_address, uint256 b_amount) external;\\n function pool_mint(address m_address, uint256 m_amount) external;\\n function mint(address to, uint256 amount) external;\\n function setDEIAddress(address dei_contract_address) external;\\n function setNameAndSymbol(string memory _name, string memory _symbol) external;\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x7be865a95630d427608efd14514c9875ed1a6d65e4b421eaf61c2d63f43b9eb7\",\"license\":\"GPL-2.0-or-later\"},\"contracts/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\n\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20Mintable}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * We have followed general OpenZeppelin guidelines: functions revert instead\\n * of returning `false` on failure. This behavior is nonetheless conventional\\n * and does not conflict with the expectations of ERC20 applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\n \\ncontract ERC20 is Context, IERC20 {\\n using SafeMath for uint256;\\n\\n mapping (address => uint256) private _balances;\\n\\n mapping (address => mapping (address => uint256)) private _allowances;\\n\\n uint256 private _totalSupply;\\n\\n string private _name;\\n string private _symbol;\\n uint8 private _decimals;\\n \\n /**\\n * @dev Sets the values for {name} and {symbol}, initializes {decimals} with\\n * a default value of 18.\\n *\\n * To select a different value for {decimals}, use {_setupDecimals}.\\n *\\n * All three of these values are immutable: they can only be set once during\\n * construction.\\n */\\n constructor (string memory __name, string memory __symbol) public {\\n _name = __name;\\n _symbol = __symbol;\\n _decimals = 18;\\n }\\n\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() public view returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev Returns the symbol of the token, usually a shorter version of the\\n * name.\\n */\\n function symbol() public view returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev Returns the number of decimals used to get its user representation.\\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\\n *\\n * Tokens usually opt for a value of 18, imitating the relationship between\\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\\n * called.\\n *\\n * NOTE: This information is only used for _display_ purposes: it in\\n * no way affects any of the arithmetic of the contract, including\\n * {IERC20-balanceOf} and {IERC20-transfer}.\\n */\\n function decimals() public view returns (uint8) {\\n return _decimals;\\n }\\n\\n /**\\n * @dev See {IERC20-totalSupply}.\\n */\\n function totalSupply() public view override returns (uint256) {\\n return _totalSupply;\\n }\\n\\n /**\\n * @dev See {IERC20-balanceOf}.\\n */\\n function balanceOf(address account) public view override returns (uint256) {\\n return _balances[account];\\n }\\n\\n /**\\n * @dev See {IERC20-transfer}.\\n *\\n * Requirements:\\n *\\n * - `recipient` cannot be the zero address.\\n * - the caller must have a balance of at least `amount`.\\n */\\n function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\\n _transfer(_msgSender(), recipient, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-allowance}.\\n */\\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n return _allowances[owner][spender];\\n }\\n\\n /**\\n * @dev See {IERC20-approve}.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.approve(address spender, uint256 amount)\\n */\\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n _approve(_msgSender(), spender, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-transferFrom}.\\n *\\n * Emits an {Approval} event indicating the updated allowance. This is not\\n * required by the EIP. See the note at the beginning of {ERC20};\\n *\\n * Requirements:\\n * - `sender` and `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n * - the caller must have allowance for `sender`'s tokens of at least\\n * `amount`.\\n */\\n function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {\\n _transfer(sender, recipient, amount);\\n _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \\\"ERC20: transfer amount exceeds allowance\\\"));\\n return true;\\n }\\n\\n /**\\n * @dev Atomically increases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\\n return true;\\n }\\n\\n /**\\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `spender` must have allowance for the caller of at least\\n * `subtractedValue`.\\n */\\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \\\"ERC20: decreased allowance below zero\\\"));\\n return true;\\n }\\n\\n /**\\n * @dev Moves tokens `amount` from `sender` to `recipient`.\\n *\\n * This is internal function is equivalent to {transfer}, and can be used to\\n * e.g. implement automatic token fees, slashing mechanisms, etc.\\n *\\n * Emits a {Transfer} event.\\n *\\n * Requirements:\\n *\\n * - `sender` cannot be the zero address.\\n * - `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n */\\n function _transfer(address sender, address recipient, uint256 amount) internal virtual {\\n require(sender != address(0), \\\"ERC20: transfer from the zero address\\\");\\n require(recipient != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(sender, recipient, amount);\\n\\n _balances[sender] = _balances[sender].sub(amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n _balances[recipient] = _balances[recipient].add(amount);\\n emit Transfer(sender, recipient, amount);\\n }\\n\\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n * the total supply.\\n *\\n * Emits a {Transfer} event with `from` set to the zero address.\\n *\\n * Requirements\\n *\\n * - `to` cannot be the zero address.\\n */\\n function _mint(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n _beforeTokenTransfer(address(0), account, amount);\\n\\n _totalSupply = _totalSupply.add(amount);\\n _balances[account] = _balances[account].add(amount);\\n emit Transfer(address(0), account, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from the caller.\\n *\\n * See {ERC20-_burn}.\\n */\\n function burn(uint256 amount) public virtual {\\n _burn(_msgSender(), amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, deducting from the caller's\\n * allowance.\\n *\\n * See {ERC20-_burn} and {ERC20-allowance}.\\n *\\n * Requirements:\\n *\\n * - the caller must have allowance for `accounts`'s tokens of at least\\n * `amount`.\\n */\\n function burnFrom(address account, uint256 amount) public virtual {\\n uint256 decreasedAllowance = allowance(account, _msgSender()).sub(amount, \\\"ERC20: burn amount exceeds allowance\\\");\\n\\n _approve(account, _msgSender(), decreasedAllowance);\\n _burn(account, amount);\\n }\\n\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, reducing the\\n * total supply.\\n *\\n * Emits a {Transfer} event with `to` set to the zero address.\\n *\\n * Requirements\\n *\\n * - `account` cannot be the zero address.\\n * - `account` must have at least `amount` tokens.\\n */\\n function _burn(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n _beforeTokenTransfer(account, address(0), amount);\\n\\n _balances[account] = _balances[account].sub(amount, \\\"ERC20: burn amount exceeds balance\\\");\\n _totalSupply = _totalSupply.sub(amount);\\n emit Transfer(account, address(0), amount);\\n }\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\\n *\\n * This is internal function is equivalent to `approve`, and can be used to\\n * e.g. set automatic allowances for certain subsystems, etc.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `owner` cannot be the zero address.\\n * - `spender` cannot be the zero address.\\n */\\n function _approve(address owner, address spender, uint256 amount) internal virtual {\\n require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n _allowances[owner][spender] = amount;\\n emit Approval(owner, spender, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`.`amount` is then deducted\\n * from the caller's allowance.\\n *\\n * See {_burn} and {_approve}.\\n */\\n function _burnFrom(address account, uint256 amount) internal virtual {\\n _burn(account, amount);\\n _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, \\\"ERC20: burn amount exceeds allowance\\\"));\\n }\\n\\n /**\\n * @dev Hook that is called before any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of `from`'s tokens\\n * will be to transferred to `to`.\\n * - when `from` is zero, `amount` tokens will be minted for `to`.\\n * - when `to` is zero, `amount` of `from`'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:using-hooks.adoc[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }\\n}\\n\",\"keccak256\":\"0x433b9ee195d0bd257219bc337ff8aac624282a826726b18fdb299de0e3d4149e\",\"license\":\"MIT\"},\"contracts/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {ERC20Detailed}.\\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\\n\",\"keccak256\":\"0x057bec1fafd7ca222117f41fcfb9c8dc1f61aa30e5a0222c981196e9113de7e6\",\"license\":\"MIT\"},\"contracts/Governance/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Utils/EnumerableSet.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\nimport \\\"../Common/Context.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it.\\n */\\nabstract contract AccessControl is Context {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n using Address for address;\\n\\n struct RoleData {\\n EnumerableSet.AddressSet members;\\n bytes32 adminRole;\\n }\\n\\n mapping (bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; //bytes32(uint256(0x4B437D01b575618140442A4975db38850e3f8f5f) << 96);\\n\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view returns (bool) {\\n return _roles[role].members.contains(account);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view returns (uint256) {\\n return _roles[role].members.length();\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view returns (address) {\\n return _roles[role].members.at(index);\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to grant\\\");\\n\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to revoke\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) public virtual {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);\\n _roles[role].adminRole = adminRole;\\n }\\n\\n function _grantRole(bytes32 role, address account) private {\\n if (_roles[role].members.add(account)) {\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n function _revokeRole(bytes32 role, address account) private {\\n if (_roles[role].members.remove(account)) {\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x749b2c0e515a59c6d03cf4908a252ebc5d2b482ca3fd7ec997d1143c302f4e89\",\"license\":\"MIT\"},\"contracts/Math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\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\\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 * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\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 * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\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 * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (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) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts 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 * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts 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 * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\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}\",\"keccak256\":\"0x43a20f7cf4c4319f81450d53779455e88a7ab80bdfc43925156ed4083b74a180\",\"license\":\"MIT\"},\"contracts/Uniswap/TransferHelper.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\n// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false\\nlibrary TransferHelper {\\n function safeApprove(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('approve(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');\\n }\\n\\n function safeTransfer(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transfer(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');\\n }\\n\\n function safeTransferFrom(address token, address from, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');\\n }\\n\\n function safeTransferETH(address to, uint value) internal {\\n (bool success,) = to.call{value:value}(new bytes(0));\\n require(success, 'TransferHelper: ETH_TRANSFER_FAILED');\\n }\\n}\",\"keccak256\":\"0x2eb33792741584e83e0794a7493335b5dce9a9b675dda9e647ce29d88a40a196\",\"license\":\"MIT\"},\"contracts/Utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11 <0.9.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}\",\"keccak256\":\"0xe392046e85c78eea7d4c1237af52a5fc06c097b7a480ea4f20159670b4a582a4\",\"license\":\"MIT\"},\"contracts/Utils/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\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.0.0, only sets of type `address` (`AddressSet`) and `uint256`\\n * (`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 // 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(bytes20(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(bytes20(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(bytes20(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(bytes20(_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\",\"keccak256\":\"0x685f4133ba76f930e3761c1d1414d7f6e55dd40d58b4b210cb392662a6cbd27d\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 6023, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "_roles", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_bytes32,t_struct(RoleData)6018_storage)" + }, + { + "astId": 1559, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "collateral_token", + "offset": 0, + "slot": "1", + "type": "t_contract(ERC20)4919" + }, + { + "astId": 1561, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "collateral_address", + "offset": 0, + "slot": "2", + "type": "t_address" + }, + { + "astId": 1563, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "dei_contract_address", + "offset": 0, + "slot": "3", + "type": "t_address" + }, + { + "astId": 1565, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "deus_contract_address", + "offset": 0, + "slot": "4", + "type": "t_address" + }, + { + "astId": 1567, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "minting_fee", + "offset": 0, + "slot": "5", + "type": "t_uint256" + }, + { + "astId": 1569, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "redemption_fee", + "offset": 0, + "slot": "6", + "type": "t_uint256" + }, + { + "astId": 1571, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "buyback_fee", + "offset": 0, + "slot": "7", + "type": "t_uint256" + }, + { + "astId": 1573, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "recollat_fee", + "offset": 0, + "slot": "8", + "type": "t_uint256" + }, + { + "astId": 1577, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "redeemDEUSBalances", + "offset": 0, + "slot": "9", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 1581, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "redeemCollateralBalances", + "offset": 0, + "slot": "10", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 1583, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "unclaimedPoolCollateral", + "offset": 0, + "slot": "11", + "type": "t_uint256" + }, + { + "astId": 1585, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "unclaimedPoolDEUS", + "offset": 0, + "slot": "12", + "type": "t_uint256" + }, + { + "astId": 1589, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "lastRedeemed", + "offset": 0, + "slot": "13", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 1603, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "pool_ceiling", + "offset": 0, + "slot": "14", + "type": "t_uint256" + }, + { + "astId": 1606, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "pausedPrice", + "offset": 0, + "slot": "15", + "type": "t_uint256" + }, + { + "astId": 1609, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "bonus_rate", + "offset": 0, + "slot": "16", + "type": "t_uint256" + }, + { + "astId": 1612, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "redemption_delay", + "offset": 0, + "slot": "17", + "type": "t_uint256" + }, + { + "astId": 1615, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "daoShare", + "offset": 0, + "slot": "18", + "type": "t_uint256" + }, + { + "astId": 1618, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "poolLibrary", + "offset": 0, + "slot": "19", + "type": "t_contract(DEIPoolLibrary)3879" + }, + { + "astId": 1656, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "mintPaused", + "offset": 20, + "slot": "19", + "type": "t_bool" + }, + { + "astId": 1659, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "redeemPaused", + "offset": 21, + "slot": "19", + "type": "t_bool" + }, + { + "astId": 1662, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "recollateralizePaused", + "offset": 22, + "slot": "19", + "type": "t_bool" + }, + { + "astId": 1665, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "buyBackPaused", + "offset": 23, + "slot": "19", + "type": "t_bool" + }, + { + "astId": 3941, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "HUSD_address", + "offset": 0, + "slot": "20", + "type": "t_address" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_bytes32)dyn_storage": { + "base": "t_bytes32", + "encoding": "dynamic_array", + "label": "bytes32[]", + "numberOfBytes": "32" + }, + "t_bool": { + "encoding": "inplace", + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "encoding": "inplace", + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(DEIPoolLibrary)3879": { + "encoding": "inplace", + "label": "contract DEIPoolLibrary", + "numberOfBytes": "20" + }, + "t_contract(ERC20)4919": { + "encoding": "inplace", + "label": "contract ERC20", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_uint256)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_mapping(t_bytes32,t_struct(RoleData)6018_storage)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => struct AccessControl.RoleData)", + "numberOfBytes": "32", + "value": "t_struct(RoleData)6018_storage" + }, + "t_mapping(t_bytes32,t_uint256)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_struct(AddressSet)11740_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.AddressSet", + "members": [ + { + "astId": 11739, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "_inner", + "offset": 0, + "slot": "0", + "type": "t_struct(Set)11554_storage" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleData)6018_storage": { + "encoding": "inplace", + "label": "struct AccessControl.RoleData", + "members": [ + { + "astId": 6015, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "members", + "offset": 0, + "slot": "0", + "type": "t_struct(AddressSet)11740_storage" + }, + { + "astId": 6017, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "adminRole", + "offset": 0, + "slot": "2", + "type": "t_bytes32" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Set)11554_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.Set", + "members": [ + { + "astId": 11549, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "_values", + "offset": 0, + "slot": "0", + "type": "t_array(t_bytes32)dyn_storage" + }, + { + "astId": 11553, + "contract": "contracts/DEI/Pools/Pool_HUSD.sol:Pool_HUSD", + "label": "_indexes", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ], + "numberOfBytes": "64" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/DEI/Pools/Pool_USDC.sol": { + "Pool_USDC": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_dei_contract_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_deus_contract_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_collateral_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_trusty_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_admin_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_pool_ceiling", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_library", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "BuybackToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "MintingToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "new_ceiling", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_bonus_rate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_redemption_delay", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_mint_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_redeem_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_buyback_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_recollat_fee", + "type": "uint256" + } + ], + "name": "PoolParametersSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "RecollateralizeToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "RedeemingToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "daoShare", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "daoShareCollected", + "type": "event" + }, + { + "inputs": [], + "name": "DAO_SHARE_COLLECTOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PARAMETER_SETTER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TRUSTY_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "USDC_address", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "collat_usd_price", + "type": "uint256[]" + } + ], + "name": "availableExcessCollatDV", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bonus_rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEUS_amount", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "collateral_price", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "buyBackDEUS", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "buyBackPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "buyback_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collat_usd_price", + "type": "uint256" + } + ], + "name": "collatDollarBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "collectDaoShare", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "collectRedemption", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "daoShare", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "emergencyWithdrawERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getChainID", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "lastRedeemed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mint1t1DEI", + "outputs": [ + { + "internalType": "uint256", + "name": "dei_amount_d18", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deus_amount_d18", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mintAlgorithmicDEI", + "outputs": [ + { + "internalType": "uint256", + "name": "dei_amount_d18", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mintFractionalDEI", + "outputs": [ + { + "internalType": "uint256", + "name": "mint_amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "mintPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minting_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pausedPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pool_ceiling", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "recollat_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "pool_collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "collateral_price", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "internalType": "struct DEIPool.RecollateralizeDEI", + "name": "inputs", + "type": "tuple" + } + ], + "name": "recollateralizeDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "recollateralizePaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeem1t1DEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeemAlgorithmicDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "redeemCollateralBalances", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "redeemDEUSBalances", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeemFractionalDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "redeemPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "redemption_delay", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "redemption_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "new_ceiling", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_bonus_rate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_redemption_delay", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_mint_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_redeem_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_buyback_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_recollat_fee", + "type": "uint256" + } + ], + "name": "setPoolParameters", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleBuyBack", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleMinting", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleRecollateralize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleRedeeming", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unclaimedPoolCollateral", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unclaimedPoolDEUS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "getRoleAdmin(bytes32)": { + "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." + }, + "getRoleMember(bytes32,uint256)": { + "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information." + }, + "getRoleMemberCount(bytes32)": { + "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role." + }, + "grantRole(bytes32,address)": { + "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role." + }, + "hasRole(bytes32,address)": { + "details": "Returns `true` if `account` has been granted `role`." + }, + "renounceRole(bytes32,address)": { + "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`." + }, + "revokeRole(bytes32,address)": { + "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role." + } + }, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": { + "@_1843": { + "entryPoint": null, + "id": 1843, + "parameterSlots": 7, + "returnSlots": 0 + }, + "@_4043": { + "entryPoint": null, + "id": 4043, + "parameterSlots": 7, + "returnSlots": 0 + }, + "@_add_11596": { + "entryPoint": 1093, + "id": 11596, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_contains_11696": { + "entryPoint": null, + "id": 11696, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_6258": { + "entryPoint": 953, + "id": 6258, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_msgSender_444": { + "entryPoint": null, + "id": 444, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_setupRole_6209": { + "entryPoint": 937, + "id": 6209, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@add_11764": { + "entryPoint": 1056, + "id": 11764, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_address_fromMemory": { + "entryPoint": 1175, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256t_address_fromMemory": { + "entryPoint": 1204, + "id": null, + "parameterSlots": 2, + "returnSlots": 7 + }, + "abi_decode_tuple_t_uint8_fromMemory": { + "entryPoint": 1344, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_088ae2e6daf22183595f1e6a5f7779d3f2c298acab226e55240662c2e1b8abe6__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_2a5a9515df0747227c3d5efc42180f2060cd0f29e443cb46b69635b43998b954__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 1388, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:2107:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "74:117:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "84:22:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "99:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "93:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "93:13:39" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "84:5:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "169:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "178:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "181:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "171:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "171:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "171:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "128:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "139:5:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "154:3:39", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "159:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "150:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "150:11:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "163:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "146:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "146:19:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "135:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "135:31:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "125:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "125:42:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "118:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "118:50:39" + }, + "nodeType": "YulIf", + "src": "115:70:39" + } + ] + }, + "name": "abi_decode_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "53:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "64:5:39", + "type": "" + } + ], + "src": "14:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "379:515:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "426:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "435:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "438:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "428:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "428:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "428:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "400:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "409:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "396:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "396:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "421:3:39", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "392:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "392:33:39" + }, + "nodeType": "YulIf", + "src": "389:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "451:50:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "491:9:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "461:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "461:40:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "451:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "510:59:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "554:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "565:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "550:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "550:18:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "520:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "520:49:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "510:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "578:59:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "622:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "633:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "618:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "618:18:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "588:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "588:49:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "578:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "646:59:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "690:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "701:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "686:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "686:18:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "656:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "656:49:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "646:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "714:60:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "758:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "769:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "754:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "754:19:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "724:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "724:50:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "714:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "783:36:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "803:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "814:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "799:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "799:19:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "793:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "793:26:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "783:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "828:60:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "872:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "883:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "868:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "868:19:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "838:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "838:50:39" + }, + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "828:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "297:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "308:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "320:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "328:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "336:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "344:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "352:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "360:6:39", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "368:6:39", + "type": "" + } + ], + "src": "196:698:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1073:177:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1090:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1101:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1083:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1083:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1083:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1124:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1135:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1120:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1120:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1140:2:39", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1113:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1113:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1113:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1163:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1174:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1159:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1159:18:39" + }, + { + "hexValue": "504f4f4c3a3a5a65726f2061646472657373206465746563746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "1179:29:39", + "type": "", + "value": "POOL::Zero address detected" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1152:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1152:57:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1152:57:39" + }, + { + "nodeType": "YulAssignment", + "src": "1218:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1230:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1241:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1226:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1226:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1218:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_088ae2e6daf22183595f1e6a5f7779d3f2c298acab226e55240662c2e1b8abe6__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1050:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1064:4:39", + "type": "" + } + ], + "src": "899:351:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1334:194:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1380:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1389:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1392:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1382:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1382:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1382:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1355:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1364:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1351:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1351:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1376:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1347:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1347:32:39" + }, + "nodeType": "YulIf", + "src": "1344:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1405:29:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1424:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1418:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "1418:16:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1409:5:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1482:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1491:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1494:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1484:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1484:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1484:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1456:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1467:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1474:4:39", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1463:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1463:16:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1453:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1453:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1446:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1446:35:39" + }, + "nodeType": "YulIf", + "src": "1443:55:39" + }, + { + "nodeType": "YulAssignment", + "src": "1507:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1517:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1507:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint8_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1300:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1311:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1323:6:39", + "type": "" + } + ], + "src": "1255:273:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1582:173:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1612:111:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1633:1:39", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1640:3:39", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1645:10:39", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1636:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1636:20:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1626:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1626:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1626:31:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1677:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1680:4:39", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1670:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1670:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1670:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1705:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1708:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1698:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1698:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1698:15:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1598:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1601:1:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1595:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1595:8:39" + }, + "nodeType": "YulIf", + "src": "1592:131:39" + }, + { + "nodeType": "YulAssignment", + "src": "1732:17:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1744:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1747:1:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1740:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1740:9:39" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "1732:4:39" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "1564:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "1567:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "1573:4:39", + "type": "" + } + ], + "src": "1533:222:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1934:171:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1951:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1962:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1944:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1944:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1944:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1985:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1996:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1981:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1981:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2001:2:39", + "type": "", + "value": "21" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1974:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1974:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1974:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2024:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2035:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2020:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2020:18:39" + }, + { + "hexValue": "5a65726f2061646472657373206465746563746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "2040:23:39", + "type": "", + "value": "Zero address detected" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2013:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2013:51:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2013:51:39" + }, + { + "nodeType": "YulAssignment", + "src": "2073:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2085:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2096:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2081:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2081:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2073:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_2a5a9515df0747227c3d5efc42180f2060cd0f29e443cb46b69635b43998b954__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1911:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1925:4:39", + "type": "" + } + ], + "src": "1760:345:39" + } + ] + }, + "contents": "{\n { }\n function abi_decode_address_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256t_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n value0 := abi_decode_address_fromMemory(headStart)\n value1 := abi_decode_address_fromMemory(add(headStart, 32))\n value2 := abi_decode_address_fromMemory(add(headStart, 64))\n value3 := abi_decode_address_fromMemory(add(headStart, 96))\n value4 := abi_decode_address_fromMemory(add(headStart, 128))\n value5 := mload(add(headStart, 160))\n value6 := abi_decode_address_fromMemory(add(headStart, 192))\n }\n function abi_encode_tuple_t_stringliteral_088ae2e6daf22183595f1e6a5f7779d3f2c298acab226e55240662c2e1b8abe6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"POOL::Zero address detected\")\n tail := add(headStart, 96)\n }\n function abi_decode_tuple_t_uint8_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n value0 := value\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n diff := sub(x, y)\n }\n function abi_encode_tuple_t_stringliteral_2a5a9515df0747227c3d5efc42180f2060cd0f29e443cb46b69635b43998b954__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 21)\n mstore(add(headStart, 64), \"Zero address detected\")\n tail := add(headStart, 96)\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "60a06040526000600e819055600f819055611d4c60105560026011556012556013805463ffffffff60a01b191690553480156200003b57600080fd5b50604051620063c5380380620063c58339810160408190526200005e91620004b4565b868686868686866001600160a01b038716158015906200008657506001600160a01b03861615155b80156200009b57506001600160a01b03851615155b8015620000b057506001600160a01b03841615155b8015620000c557506001600160a01b03831615155b8015620000da57506001600160a01b03811615155b6200012c5760405162461bcd60e51b815260206004820152601b60248201527f504f4f4c3a3a5a65726f2061646472657373206465746563746564000000000060448201526064015b60405180910390fd5b601380546001600160a01b038084166001600160a01b031992831617909255600380548a8416908316179055600480548984169083161781556002805493891693831684179055600180549092168317909155600e8490556040805163313ce56760e01b8152905163313ce567928281019260209291908290030181865afa158015620001bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e3919062000540565b620001f39060ff1660126200056c565b60805262000203600084620003a9565b6200022f7fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b85620003a9565b6200025b7fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c385785620003a9565b620002877f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f85620003a9565b620002b37f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf85620003a9565b620002df7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c85620003a9565b6200030b7fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f24050985620003a9565b50505050506001600160a01b038716151591506200036e90505760405162461bcd60e51b815260206004820152601560248201527f5a65726f20616464726573732064657465637465640000000000000000000000604482015260640162000123565b6200037b600033620003a9565b5050601480546001600160a01b0319166001600160a01b039490941693909317909255506200059292505050565b620003b58282620003b9565b5050565b600082815260208181526040909120620003de91839062004ad062000420821b17901c565b15620003b55760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b60006200043c836001600160601b0319606085901b1662000445565b90505b92915050565b60008181526001830160205260408120546200048e575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200043f565b5060006200043f565b80516001600160a01b0381168114620004af57600080fd5b919050565b600080600080600080600060e0888a031215620004d057600080fd5b620004db8862000497565b9650620004eb6020890162000497565b9550620004fb6040890162000497565b94506200050b6060890162000497565b93506200051b6080890162000497565b925060a088015191506200053260c0890162000497565b905092959891949750929550565b6000602082840312156200055357600080fd5b815160ff811681146200056557600080fd5b9392505050565b6000828210156200058d57634e487b7160e01b600052601160045260246000fd5b500390565b608051615de6620005df60003960008181610cc1015281816115850152818161228101528181612afd01528181612def015281816134c9015281816139a001526147af0152615de66000f3fe608060405234801561001057600080fd5b506004361061032b5760003560e01c80637b0461e9116101b2578063b6258aaa116100f9578063cb73999f116100a2578063e3d84d5e1161007c578063e3d84d5e146106df578063eb2d7461146106f2578063f9abd26c14610705578063fede5c9c1461072557600080fd5b8063cb73999f146106bb578063d547741f146106c4578063daa50485146106d757600080fd5b8063c6301e5d116100d3578063c6301e5d1461068c578063c74ec56a1461069f578063ca15c873146106a857600080fd5b8063b6258aaa1461065d578063c3355b8d14610670578063c410ca1b1461067957600080fd5b806391d148541161015b578063a217fddf11610135578063a217fddf1461060f578063abae2c4c14610617578063b235d4681461063757600080fd5b806391d14854146105d6578063928d2b31146105e9578063978b73b5146105fc57600080fd5b80637f877f851161018c5780637f877f851461056d57806388d19f1b146105955780639010d07c1461059e57600080fd5b80637b0461e9146105375780637d55094d146105405780637e4831d31461054857600080fd5b806340e14b7811610276578063564b81ef1161021f5780636d2c5615116101f95780636d2c5615146104c65780636d82e314146104fd5780637901330b1461052457600080fd5b8063564b81ef146104905780635de207cc146104965780636526a12a146104bd57600080fd5b80634ebbe762116102505780634ebbe7621461046257806350c9ecd91461047557806354f9769d1461047d57600080fd5b806340e14b781461043e57806342d15aec146104515780634c6349341461045957600080fd5b80632f2ff15d116102d85780633648b7dc116102b25780633648b7dc1461040257806336568abe1461040b5780633b92da471461041e57600080fd5b80632f2ff15d146103b557806332ad1ee4146103c857806334ddb95d146103db57600080fd5b806315128425116103095780631512842514610376578063248a9ca31461037f578063254cd2bd146103a257600080fd5b806308a7493d14610330578063101197c71461036357806312ace5a21461036c575b600080fd5b61035061033e366004615193565b600a6020526000908152604090205481565b6040519081526020015b60405180910390f35b61035060075481565b61037461072e565b005b61035060115481565b61035061038d3660046151ae565b60009081526020819052604090206002015490565b6103746103b0366004615213565b6108e7565b6103746103c3366004615274565b610fde565b6103506103d6366004615213565b611094565b6103507f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610350600c5481565b610374610419366004615274565b61176a565b61035061042c366004615193565b60096020526000908152604090205481565b61035061044c3660046153d6565b611819565b610374611a37565b61035060105481565b610374610470366004615413565b611afe565b610374611c3d565b61035061048b36600461545f565b611cfb565b46610350565b6103507fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f24050981565b610350600e5481565b6013546104ed90760100000000000000000000000000000000000000000000900460ff1681565b604051901515815260200161035a565b6103507f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e53081565b610374610532366004615274565b612586565b610350600b5481565b61037461271a565b6013546104ed9074010000000000000000000000000000000000000000900460ff1681565b6013546104ed9077010000000000000000000000000000000000000000000000900460ff1681565b61035060125481565b6105b16105ac3660046154d3565b6127d5565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161035a565b6104ed6105e4366004615274565b6127f6565b6103746105f73660046155f7565b61280e565b61037461060a366004615213565b612f1a565b610350600081565b610350610625366004615193565b600d6020526000908152604090205481565b6013546104ed907501000000000000000000000000000000000000000000900460ff1681565b61035061066b3660046151ae565b6134bd565b61035060055481565b6103746106873660046156b0565b6135ac565b61035061069a366004615213565b613a91565b610350600f5481565b6103506106b63660046151ae565b614079565b61035060065481565b6103746106d2366004615274565b614090565b610374614138565b6103746106ed366004615737565b6141f4565b610374610700366004615773565b61431d565b6014546105b19073ffffffffffffffffffffffffffffffffffffffff1681565b61035060085481565b601154336000908152600d6020526040902054439161074c916157fa565b1115610805576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605b60248201527f504f4f4c3a3a636f6c6c656374526564656d7074696f6e3a204d75737420776160448201527f697420666f7220726564656d7074696f6e5f64656c617920626c6f636b73206260648201527f65666f726520636f6c6c656374696e6720726564656d7074696f6e0000000000608482015260a4015b60405180910390fd5b336000908152600960205260408120548190819081901561084d573360009081526009602052604081208054919055600c54909250610845908390615812565b600c55600193505b336000908152600a60205260409020541561088d5750336000908152600a602052604081208054919055600b54610885908290615812565b600b55600192505b83156108b7576004546108b79073ffffffffffffffffffffffffffffffffffffffff163384614b02565b82156108e1576001546108e19073ffffffffffffffffffffffffffffffffffffffff163383614b02565b50505050565b6013547501000000000000000000000000000000000000000000900460ff161561096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa1580156109df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a039190615829565b14610a6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203d3d203100000060448201526064016107fc565b43831015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90610bed9084908790879060040161588b565b602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e919061596d565b610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a72656465656d3174314445493a20696e76616c6964207369676e60448201527f617475726573000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000610ce77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b610cf19088615ac2565b6013546040517f068d54aa000000000000000000000000000000000000000000000000000000008152600481018990526024810183905291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063068d54aa90604401602060405180830381865afa158015610d6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d919190615829565b9050620f4240600654620f4240610da89190615812565b610db29083615afd565b610dbc9190615ac2565b600b546001546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152929350909173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e569190615829565b610e609190615812565b811115610ec9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a6020526040902054610ee49082906157fa565b336000908152600a6020526040902055600b54610f029082906157fa565b600b55336000908152600d60205260409020439055600654620f424090610f29908a615afd565b610f339190615ac2565b60126000828254610f4491906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae906044015b600060405180830381600087803b158015610fbc57600080fd5b505af1158015610fd0573d6000803e3d6000fd5b505050505050505050505050565b600082815260208190526040902060020154610ffa90336127f6565b611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084016107fc565b6110908282614c72565b5050565b60135460009074010000000000000000000000000000000000000000900460ff161561111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa15801561118e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b29190615829565b101561121a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203e3d203100000060448201526064016107fc565b600e54600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015289929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561128f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b39190615829565b6112bd9190615812565b6112c791906157fa565b111561132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5b506f6f6c277320436c6f7365645d3a204365696c696e67207265616368656460448201526064016107fc565b438410156113bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a6d696e743174314445493a207369676e6174757265206973206560448201527f787069726564000000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906114b29084908890889060040161588b565b602060405180830381865afa1580156114cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f3919061596d565b61157e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6d696e743174314445493a20696e76616c6964207369676e617460448201527f757265730000000000000000000000000000000000000000000000000000000060648201526084016107fc565b60006115ab7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6115b59089615afd565b6013546040517f882ab63a000000000000000000000000000000000000000000000000000000008152600481018a90526024810183905291925073ffffffffffffffffffffffffffffffffffffffff169063882ab63a90604401602060405180830381865afa15801561162c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116509190615829565b9250620f4240600554620f42406116679190615812565b6116719085615afd565b61167b9190615ac2565b6001549093506116a39073ffffffffffffffffffffffffffffffffffffffff1633308b614cd8565b620f4240600554846116b59190615afd565b6116bf9190615ac2565b601260008282546116d091906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561174757600080fd5b505af115801561175b573d6000803e3d6000fd5b50505050505095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016107fc565b6110908282614e76565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ad9190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561191e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119429190615829565b6003546040517f2480fcea00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690632480fcea9061199e908890600401615b3a565b602060405180830381865afa1580156119bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119df9190615829565b9050620f42408211156119f357620f424091505b6000620f4240611a038486615afd565b611a0d9190615ac2565b905080821115611a2b57611a218183615812565b9695505050505050565b50600095945050505050565b611a617f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f336127f6565b611a6a57600080fd5b6013805460ff76010000000000000000000000000000000000000000000080830482161581027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f2fda313d9b5bb0b73bd003153f2fccbc0dca49791fdd1184dfad82b44f54bd2e93611af49390049091161515815260200190565b60405180910390a1565b611b287fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f240509336127f6565b611bb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f504f4f4c3a2043616c6c6572206973206e6f7420504152414d455445525f534560448201527f545445525f524f4c45000000000000000000000000000000000000000000000060648201526084016107fc565b600e8790556010869055601185905560058490556006839055600782905560088190556040805188815260208101889052908101869052606081018590526080810184905260a0810183905260c081018290527f17fe98b66d27bd793ea01bd8a23a54acab8eeb167d9eb016a0c7cd71c573920c9060e00160405180910390a150505050505050565b611c677f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf336127f6565b611c7057600080fd5b6013805460ff7701000000000000000000000000000000000000000000000080830482161581027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f4f40fd1c59f78d7a2220da638cd9400daba01e57c7965702f390bf13133cc31f93611af49390049091161515815260200190565b60135460009074010000000000000000000000000000000000000000900460ff1615611d83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015611df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e179190615829565b9050620f424081108015611e2b5750600081115b611eb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f436f6c6c61746572616c20726174696f206e6565647320746f2062652062657460448201527f7765656e202e30303030303120616e64202e393939393939000000000000000060648201526084016107fc565b600e54600b546001546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528c929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f509190615829565b611f5a9190615812565b611f6491906157fa565b1115612019576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f506f6f6c206365696c696e6720726561636865642c206e6f206d6f7265204445908201527f492063616e206265206d696e7465642077697468207468697320636f6c6c617460648201527f6572616c00000000000000000000000000000000000000000000000000000000608482015260a4016107fc565b438510156120a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a207369676e61747560448201527f726520697320657870697265642e00000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018d90529390941b909316605484015260688301899052608883018890524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906121829084908990899060cc0161588b565b602060405180830381865afa15801561219f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c3919061596d565b61224f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a20696e76616c696460448201527f207369676e61747572657300000000000000000000000000000000000000000060648201526084016107fc565b61227a6040518060800160405280600081526020016000815260200160008152602001600081525090565b60006122a77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6122b1908d615afd565b604080516080810182528b8152602081018d9052808201929092526060820186905260135490517f537a30a70000000000000000000000000000000000000000000000000000000081529193506000925073ffffffffffffffffffffffffffffffffffffffff169063537a30a79061232d908590600401615b7e565b6040805180830381865afa158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190615ba9565b90955090508a8111156123dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e6f7420656e6f756768204445555320696e707574746564000000000000000060448201526064016107fc565b620f4240600554620f42406123f19190615812565b6123fb9087615afd565b6124059190615ac2565b600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820184905291965073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561247d57600080fd5b505af1158015612491573d6000803e3d6000fd5b50506001546124bb925073ffffffffffffffffffffffffffffffffffffffff16905033308f614cd8565b620f4240600554866124cd9190615afd565b6124d79190615ac2565b601260008282546124e891906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810187905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561255f57600080fd5b505af1158015612573573d6000803e3d6000fd5b5050505050505050979650505050505050565b6125b07f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e530336127f6565b6125b957600080fd5b601254821115612625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f616d6f756e743c3d64616f53686172650000000000000000000000000000000060448201526064016107fc565b6003546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018590529091169063b4f56b2690604401600060405180830381600087803b15801561269957600080fd5b505af11580156126ad573d6000803e3d6000fd5b5050505081601260008282546126c39190615812565b90915550506040805183815273ffffffffffffffffffffffffffffffffffffffff831660208201527f3a708f2f1c75b12457d207cf1e259ab9f87bbfccb29672903acf4661bd342e49910160405180910390a15050565b6127447fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b336127f6565b61274d57600080fd5b6013805460ff7401000000000000000000000000000000000000000080830482161581027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f6bdfe227d5db299c59aa56d5f846f40dbd73b271aaa78e18ed74fc3e00b8aa6b93611af49390049091161515815260200190565b60008281526020819052604081206127ed9083614edc565b90505b92915050565b60008281526020819052604081206127ed9083614ef2565b601354760100000000000000000000000000000000000000000000900460ff16156128bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a205265636f6c6c60448201527f61746572616c697a65206973207061757365640000000000000000000000000060648201526084016107fc565b438160800151101561294f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b6002546040828101516004546060850151608086015193516000956129989573ffffffffffffffffffffffffffffffffffffffff91821695949190911692914690602001615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052805160209091012060035460a08501517f6793f0ac00000000000000000000000000000000000000000000000000000000845291935073ffffffffffffffffffffffffffffffffffffffff1691636793f0ac91612a2991859190600401615c78565b602060405180830381865afa158015612a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6a919061596d565b612af6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6000612b237f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b8351612b2f9190615afd565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc49190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c599190615829565b60035460408088015190517f2480fcea00000000000000000000000000000000000000000000000000000000815292935060009273ffffffffffffffffffffffffffffffffffffffff90921691632480fcea91612cb891600401615b3a565b602060405180830381865afa158015612cd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf99190615829565b60135460408801518051929350600092839273ffffffffffffffffffffffffffffffffffffffff169163fc01106191899190612d3790600190615812565b81518110612d4757612d47615d36565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015260448101869052606481018890526084810187905260a4016040805180830381865afa158015612dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de39190615ba9565b90925090506000612e157f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b612e1f9084615ac2565b905060008960600151600854601054620f4240612e3c91906157fa565b612e469190615812565b612e509085615afd565b612e5a9190615ac2565b600154909150612e829073ffffffffffffffffffffffffffffffffffffffff16333085614cd8565b600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815233928101929092526024820183905273ffffffffffffffffffffffffffffffffffffffff169063b4f56b26906044015b600060405180830381600087803b158015612ef657600080fd5b505af1158015612f0a573d6000803e3d6000fd5b5050505050505050505050505050565b6013547501000000000000000000000000000000000000000000900460ff1615612fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561300d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130319190615829565b156130be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20436f6c6c60448201527f61746572616c20726174696f206d75737420626520300000000000000000000060648201526084016107fc565b4383101561314e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4445493a3a72656465656d416c676f726974686d69634445493a207369676e6160448201527f7475726520697320657870697265642e0000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906132419084908790879060040161588b565b602060405180830381865afa15801561325e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613282919061596d565b61330e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20696e766160448201527f6c6964207369676e61747572657300000000000000000000000000000000000060648201526084016107fc565b6006548690620f4240906133229082615812565b61332c9083615afd565b6133369190615ac2565b9050600086613348620f424084615afd565b6133529190615ac2565b336000908152600960205260409020549091506133709082906157fa565b33600090815260096020526040902055600c5461338e9082906157fa565b600c55336000908152600d60205260409020439055600654620f4240906133b5908a615afd565b6133bf9190615ac2565b601260008282546133d091906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561344757600080fd5b505af115801561345b573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820185905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401610fa2565b6000620f4240826134ef7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015613560573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135849190615829565b61358e9190615812565b6135989190615afd565b6135a29190615afd565b6127f09190615ac2565b60135477010000000000000000000000000000000000000000000000900460ff1615613659576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6275794261636b444555533a204275796261636b20697320706160448201527f757365640000000000000000000000000000000000000000000000000000000060648201526084016107fc565b438310156136e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4445493a3a6275794261636b444555533a207369676e6174757265206973206560448201527f7870697265642e0000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460045460009173ffffffffffffffffffffffffffffffffffffffff9081169188911687874660405160200161372696959493929190615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906137b59084908790879060040161588b565b602060405180830381865afa1580156137d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f6919061596d565b613882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f504f4f4c3a3a6275794261636b444555533a20696e76616c6964207369676e6160448201527f747572657300000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000604051806080016040528061389889611819565b81526020018781526020018860018a516138b29190615812565b815181106138c2576138c2615d36565b602002602001015181526020018981525090506000620f4240600754620f42406138ec9190615812565b6013546040517f3c04af9f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633c04af9f90613942908790600401615b7e565b602060405180830381865afa15801561395f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139839190615829565b61398d9190615afd565b6139979190615ac2565b905060006139c67f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6139d09083615ac2565b600480546040517fa8a778ae0000000000000000000000000000000000000000000000000000000081523392810192909252602482018d905291925073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015613a4857600080fd5b505af1158015613a5c573d6000803e3d6000fd5b5050600154613a85925073ffffffffffffffffffffffffffffffffffffffff1690503383614b02565b50505050505050505050565b60135460009074010000000000000000000000000000000000000000900460ff1615613b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613baa9190615829565b15613c11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f436f6c6c61746572616c20726174696f206d757374206265203000000000000060448201526064016107fc565b43841015613ca1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90613d949084908890889060040161588b565b602060405180830381865afa158015613db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dd5919061596d565b613e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6013546040517f14da4ee1000000000000000000000000000000000000000000000000000000008152600481018890526024810189905273ffffffffffffffffffffffffffffffffffffffff909116906314da4ee190604401602060405180830381865afa158015613ed7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613efb9190615829565b9150620f4240600554620f4240613f129190615812565b613f1c9084615afd565b613f269190615ac2565b9150620f424060055483613f3a9190615afd565b613f449190615ac2565b60126000828254613f5591906157fa565b9091555050600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820189905273ffffffffffffffffffffffffffffffffffffffff169063a8a778ae90604401600060405180830381600087803b158015613fcd57600080fd5b505af1158015613fe1573d6000803e3d6000fd5b50506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810186905273ffffffffffffffffffffffffffffffffffffffff909116925063b4f56b269150604401600060405180830381600087803b15801561405757600080fd5b505af115801561406b573d6000803e3d6000fd5b505050505095945050505050565b60008181526020819052604081206127f090614f31565b6000828152602081905260409020600201546140ac90336127f6565b61180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b650000000000000000000000000000000060648201526084016107fc565b6141627fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c3857336127f6565b61416b57600080fd5b6013805460ff750100000000000000000000000000000000000000000080830482161581027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f5860c5063a65e23cea4e2e2925f1a841bb6d1bc9615bd425f8dd084980b0514193611af49390049091161515815260200190565b61421e7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336127f6565b614284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f504f4f4c3a3a796f7520617265206e6f7420747275737479000000000000000060448201526064016107fc565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af11580156142f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e1919061596d565b6013547501000000000000000000000000000000000000000000900460ff16156143a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015614413573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144379190615829565b9050620f42408110801561444b5750600081115b6144fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20436f6c6c6160448201527f746572616c20726174696f206e6565647320746f206265206265747765656e2060648201527f2e30303030303120616e64202e39393939393900000000000000000000000000608482015260a4016107fc565b4384101561458d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4445493a3a72656465656d4672616374696f6e616c4445493a207369676e617460448201527f757265206973206578706972656400000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018c90529390941b909316605484015260688301889052608883018790524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906146669084908890889060cc0161588b565b602060405180830381865afa158015614683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146a7919061596d565b614733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20696e76616c60448201527f6964207369676e6174757265730000000000000000000000000000000000000060648201526084016107fc565b60008060008990506000620f4240600654620f42406147529190615812565b61475c908e615afd565b6147669190615ac2565b90506000620f42406147788884615afd565b6147829190615ac2565b61478c9083615812565b90508a61479c620f424083615afd565b6147a69190615ac2565b945060006147d57f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6147df9084615ac2565b90506000620f42406147f18a84615afd565b6147fb9190615ac2565b90508461480b620f424083615afd565b6148159190615ac2565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015292985090965073ffffffffffffffffffffffffffffffffffffffff1694506370a08231935060240191506148789050565b602060405180830381865afa158015614895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148b99190615829565b6148c39190615812565b81111561492c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a60205260409020546149479082906157fa565b336000908152600a6020526040902055600b546149659082906157fa565b600b55336000908152600960205260409020546149839083906157fa565b33600090815260096020526040902055600c546149a19083906157fa565b600c55336000908152600d60205260409020439055600654620f4240906149c8908c615afd565b6149d29190615ac2565b601260008282546149e391906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018c905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015614a5a57600080fd5b505af1158015614a6e573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820186905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401612edc565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16614f3b565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691614b999190615d65565b6000604051808303816000865af19150503d8060008114614bd6576040519150601f19603f3d011682016040523d82523d6000602084013e614bdb565b606091505b5091509150818015614c05575080511580614c05575080806020019051810190614c05919061596d565b614c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016107fc565b5050505050565b6000828152602081905260409020614c8a9082614ad0565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691614d779190615d65565b6000604051808303816000865af19150503d8060008114614db4576040519150601f19603f3d011682016040523d82523d6000602084013e614db9565b606091505b5091509150818015614de3575080511580614de3575080806020019051810190614de3919061596d565b614e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016107fc565b505050505050565b6000828152602081905260409020614e8e9082614f8a565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000614ee88383614fbc565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156127ed565b60006127f0825490565b6000818152600183016020526040812054614f82575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556127f0565b5060006127f0565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16615077565b8154600090821061504f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f647300000000000000000000000000000000000000000000000000000000000060648201526084016107fc565b82600001828154811061506457615064615d36565b9060005260206000200154905092915050565b6000818152600183016020526040812054801561516057600061509b600183615812565b85549091506000906150af90600190615812565b905060008660000182815481106150c8576150c8615d36565b90600052602060002001549050808760000184815481106150eb576150eb615d36565b6000918252602090912001556151028360016157fa565b6000828152600189016020526040902055865487908061512457615124615d81565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506127f0565b60009150506127f0565b803573ffffffffffffffffffffffffffffffffffffffff8116811461518e57600080fd5b919050565b6000602082840312156151a557600080fd5b6127ed8261516a565b6000602082840312156151c057600080fd5b5035919050565b60008083601f8401126151d957600080fd5b50813567ffffffffffffffff8111156151f157600080fd5b6020830191508360208260051b850101111561520c57600080fd5b9250929050565b60008060008060006080868803121561522b57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561525757600080fd5b615263888289016151c7565b969995985093965092949392505050565b6000806040838503121561528757600080fd5b823591506152976020840161516a565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff811182821017156152f2576152f26152a0565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561533f5761533f6152a0565b604052919050565b600067ffffffffffffffff821115615361576153616152a0565b5060051b60200190565b600082601f83011261537c57600080fd5b8135602061539161538c83615347565b6152f8565b82815260059290921b840181019181810190868411156153b057600080fd5b8286015b848110156153cb57803583529183019183016153b4565b509695505050505050565b6000602082840312156153e857600080fd5b813567ffffffffffffffff8111156153ff57600080fd5b61540b8482850161536b565b949350505050565b600080600080600080600060e0888a03121561542e57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080600080600080600060c0888a03121561547a57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a088013567ffffffffffffffff8111156154b457600080fd5b6154c08a828b016151c7565b989b979a50959850939692959293505050565b600080604083850312156154e657600080fd5b50508035926020909101359150565b6000601f838184011261550757600080fd5b8235602061551761538c83615347565b82815260059290921b8501810191818101908784111561553657600080fd5b8287015b848110156155eb57803567ffffffffffffffff8082111561555b5760008081fd5b818a0191508a603f8301126155705760008081fd5b85820135604082821115615586576155866152a0565b6155b5887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c850116016152f8565b92508183528c818386010111156155cc5760008081fd5b818185018985013750600090820187015284525091830191830161553a565b50979650505050505050565b60006020828403121561560957600080fd5b813567ffffffffffffffff8082111561562157600080fd5b9083019060c0828603121561563557600080fd5b61563d6152cf565b823581526020830135602082015260408301358281111561565d57600080fd5b6156698782860161536b565b604083015250606083013560608201526080830135608082015260a08301358281111561569557600080fd5b6156a1878286016154f5565b60a08301525095945050505050565b60008060008060008060a087890312156156c957600080fd5b86359550602087013567ffffffffffffffff808211156156e857600080fd5b6156f48a838b0161536b565b96506040890135955060608901359450608089013591508082111561571857600080fd5b5061572589828a016151c7565b979a9699509497509295939492505050565b60008060006060848603121561574c57600080fd5b6157558461516a565b92506020840135915061576a6040850161516a565b90509250925092565b60008060008060008060a0878903121561578c57600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff8111156157bf57600080fd5b61572589828a016151c7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561580d5761580d6157cb565b500190565b600082821015615824576158246157cb565b500390565b60006020828403121561583b57600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b8781101561595f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18a360301811261591657600080fd5b8901803567ffffffffffffffff81111561592f57600080fd5b8036038b131561593e57600080fd5b61594b8782888501615842565b9650505091830191908301906001016158b5565b509298975050505050505050565b60006020828403121561597f57600080fd5b8151801515811461598f57600080fd5b9392505050565b600181815b808511156159ef57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156159d5576159d56157cb565b808516156159e257918102915b93841c939080029061599b565b509250929050565b600082615a06575060016127f0565b81615a13575060006127f0565b8160018114615a295760028114615a3357615a4f565b60019150506127f0565b60ff841115615a4457615a446157cb565b50506001821b6127f0565b5060208310610133831016604e8410600b8410161715615a72575081810a6127f0565b615a7c8383615996565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615aae57615aae6157cb565b029392505050565b60006127ed83836159f7565b600082615af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615b3557615b356157cb565b500290565b6020808252825182820181905260009190848201906040850190845b81811015615b7257835183529284019291840191600101615b56565b50909695505050505050565b81518152602080830151908201526040808301519082015260608083015190820152608081016127f0565b60008060408385031215615bbc57600080fd5b505080516020909101519092909150565b60007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808960601b1683526014830188516020808b0160005b83811015615c2257815185529382019390820190600101615c06565b5050505060609790971b168652505060148401929092526034830152605482015260740192915050565b60005b83811015615c67578181015183820152602001615c4f565b838111156108e15750506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015615d28577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088870301845281518051808852615ceb81888a01898501615c4c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01696909601850195509284019290840190600101615ca6565b509398975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008251615d77818460208701615c4c565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212204622a05d75c89b78cbc019e8eea4cfb3dfa44f6208b9d4d768626026b70bda0b64736f6c634300080a0033", + "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0xE DUP2 SWAP1 SSTORE PUSH1 0xF DUP2 SWAP1 SSTORE PUSH2 0x1D4C PUSH1 0x10 SSTORE PUSH1 0x2 PUSH1 0x11 SSTORE PUSH1 0x12 SSTORE PUSH1 0x13 DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x63C5 CODESIZE SUB DUP1 PUSH3 0x63C5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x5E SWAP2 PUSH3 0x4B4 JUMP JUMPDEST DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND ISZERO DUP1 ISZERO SWAP1 PUSH3 0x86 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH3 0x9B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH3 0xB0 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH3 0xC5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH3 0xDA JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO ISZERO JUMPDEST PUSH3 0x12C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A5A65726F20616464726573732064657465637465640000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x3 DUP1 SLOAD DUP11 DUP5 AND SWAP1 DUP4 AND OR SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP10 DUP5 AND SWAP1 DUP4 AND OR DUP2 SSTORE PUSH1 0x2 DUP1 SLOAD SWAP4 DUP10 AND SWAP4 DUP4 AND DUP5 OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP3 AND DUP4 OR SWAP1 SWAP2 SSTORE PUSH1 0xE DUP5 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x313CE567 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH4 0x313CE567 SWAP3 DUP3 DUP2 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x1BD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1E3 SWAP2 SWAP1 PUSH3 0x540 JUMP JUMPDEST PUSH3 0x1F3 SWAP1 PUSH1 0xFF AND PUSH1 0x12 PUSH3 0x56C JUMP JUMPDEST PUSH1 0x80 MSTORE PUSH3 0x203 PUSH1 0x0 DUP5 PUSH3 0x3A9 JUMP JUMPDEST PUSH3 0x22F PUSH32 0xC65532185ED70B2E999433E2E9FAC124E083ACB13EC183A4E05944DA0792337B DUP6 PUSH3 0x3A9 JUMP JUMPDEST PUSH3 0x25B PUSH32 0xA84A5389AD41F9AAB0831B01E5384CAE76E7A7FD09131C206FF7927C201C3857 DUP6 PUSH3 0x3A9 JUMP JUMPDEST PUSH3 0x287 PUSH32 0x8118EEB5231A5FE4008A55B62860F6A0DB4F6C3AC04F8141927A9B3FEDD86D2F DUP6 PUSH3 0x3A9 JUMP JUMPDEST PUSH3 0x2B3 PUSH32 0x103DA79FF3755FF7A17A557D28B73D37CB4DE0B3C3CC02FA6C48DF0F35071FBF DUP6 PUSH3 0x3A9 JUMP JUMPDEST PUSH3 0x2DF PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP6 PUSH3 0x3A9 JUMP JUMPDEST PUSH3 0x30B PUSH32 0xE08E6E8E2E796F02419355C6FA268D1461FE6F2F34114A881A2DB47C0F240509 DUP6 PUSH3 0x3A9 JUMP JUMPDEST POP POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND ISZERO ISZERO SWAP2 POP PUSH3 0x36E SWAP1 POP JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5A65726F20616464726573732064657465637465640000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x123 JUMP JUMPDEST PUSH3 0x37B PUSH1 0x0 CALLER PUSH3 0x3A9 JUMP JUMPDEST POP POP PUSH1 0x14 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE POP PUSH3 0x592 SWAP3 POP POP POP JUMP JUMPDEST PUSH3 0x3B5 DUP3 DUP3 PUSH3 0x3B9 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH3 0x3DE SWAP2 DUP4 SWAP1 PUSH3 0x4AD0 PUSH3 0x420 DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST ISZERO PUSH3 0x3B5 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x43C DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH3 0x445 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH3 0x48E 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 PUSH3 0x43F JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0x43F JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x4DB DUP9 PUSH3 0x497 JUMP JUMPDEST SWAP7 POP PUSH3 0x4EB PUSH1 0x20 DUP10 ADD PUSH3 0x497 JUMP JUMPDEST SWAP6 POP PUSH3 0x4FB PUSH1 0x40 DUP10 ADD PUSH3 0x497 JUMP JUMPDEST SWAP5 POP PUSH3 0x50B PUSH1 0x60 DUP10 ADD PUSH3 0x497 JUMP JUMPDEST SWAP4 POP PUSH3 0x51B PUSH1 0x80 DUP10 ADD PUSH3 0x497 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD MLOAD SWAP2 POP PUSH3 0x532 PUSH1 0xC0 DUP10 ADD PUSH3 0x497 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x553 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH3 0x565 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH3 0x58D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x5DE6 PUSH3 0x5DF PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0xCC1 ADD MSTORE DUP2 DUP2 PUSH2 0x1585 ADD MSTORE DUP2 DUP2 PUSH2 0x2281 ADD MSTORE DUP2 DUP2 PUSH2 0x2AFD ADD MSTORE DUP2 DUP2 PUSH2 0x2DEF ADD MSTORE DUP2 DUP2 PUSH2 0x34C9 ADD MSTORE DUP2 DUP2 PUSH2 0x39A0 ADD MSTORE PUSH2 0x47AF ADD MSTORE PUSH2 0x5DE6 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 0x32B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7B0461E9 GT PUSH2 0x1B2 JUMPI DUP1 PUSH4 0xB6258AAA GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xCB73999F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xE3D84D5E GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xE3D84D5E EQ PUSH2 0x6DF JUMPI DUP1 PUSH4 0xEB2D7461 EQ PUSH2 0x6F2 JUMPI DUP1 PUSH4 0xF9ABD26C EQ PUSH2 0x705 JUMPI DUP1 PUSH4 0xFEDE5C9C EQ PUSH2 0x725 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCB73999F EQ PUSH2 0x6BB JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x6C4 JUMPI DUP1 PUSH4 0xDAA50485 EQ PUSH2 0x6D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC6301E5D GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xC6301E5D EQ PUSH2 0x68C JUMPI DUP1 PUSH4 0xC74EC56A EQ PUSH2 0x69F JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x6A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB6258AAA EQ PUSH2 0x65D JUMPI DUP1 PUSH4 0xC3355B8D EQ PUSH2 0x670 JUMPI DUP1 PUSH4 0xC410CA1B EQ PUSH2 0x679 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 GT PUSH2 0x15B JUMPI DUP1 PUSH4 0xA217FDDF GT PUSH2 0x135 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x60F JUMPI DUP1 PUSH4 0xABAE2C4C EQ PUSH2 0x617 JUMPI DUP1 PUSH4 0xB235D468 EQ PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 EQ PUSH2 0x5D6 JUMPI DUP1 PUSH4 0x928D2B31 EQ PUSH2 0x5E9 JUMPI DUP1 PUSH4 0x978B73B5 EQ PUSH2 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7F877F85 GT PUSH2 0x18C JUMPI DUP1 PUSH4 0x7F877F85 EQ PUSH2 0x56D JUMPI DUP1 PUSH4 0x88D19F1B EQ PUSH2 0x595 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7B0461E9 EQ PUSH2 0x537 JUMPI DUP1 PUSH4 0x7D55094D EQ PUSH2 0x540 JUMPI DUP1 PUSH4 0x7E4831D3 EQ PUSH2 0x548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x40E14B78 GT PUSH2 0x276 JUMPI DUP1 PUSH4 0x564B81EF GT PUSH2 0x21F JUMPI DUP1 PUSH4 0x6D2C5615 GT PUSH2 0x1F9 JUMPI DUP1 PUSH4 0x6D2C5615 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x6D82E314 EQ PUSH2 0x4FD JUMPI DUP1 PUSH4 0x7901330B EQ PUSH2 0x524 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x564B81EF EQ PUSH2 0x490 JUMPI DUP1 PUSH4 0x5DE207CC EQ PUSH2 0x496 JUMPI DUP1 PUSH4 0x6526A12A EQ PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4EBBE762 GT PUSH2 0x250 JUMPI DUP1 PUSH4 0x4EBBE762 EQ PUSH2 0x462 JUMPI DUP1 PUSH4 0x50C9ECD9 EQ PUSH2 0x475 JUMPI DUP1 PUSH4 0x54F9769D EQ PUSH2 0x47D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x40E14B78 EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0x42D15AEC EQ PUSH2 0x451 JUMPI DUP1 PUSH4 0x4C634934 EQ PUSH2 0x459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D GT PUSH2 0x2D8 JUMPI DUP1 PUSH4 0x3648B7DC GT PUSH2 0x2B2 JUMPI DUP1 PUSH4 0x3648B7DC EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x40B JUMPI DUP1 PUSH4 0x3B92DA47 EQ PUSH2 0x41E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x3B5 JUMPI DUP1 PUSH4 0x32AD1EE4 EQ PUSH2 0x3C8 JUMPI DUP1 PUSH4 0x34DDB95D EQ PUSH2 0x3DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x15128425 GT PUSH2 0x309 JUMPI DUP1 PUSH4 0x15128425 EQ PUSH2 0x376 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x37F JUMPI DUP1 PUSH4 0x254CD2BD EQ PUSH2 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8A7493D EQ PUSH2 0x330 JUMPI DUP1 PUSH4 0x101197C7 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0x12ACE5A2 EQ PUSH2 0x36C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x350 PUSH2 0x33E CALLDATASIZE PUSH1 0x4 PUSH2 0x5193 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x350 PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x72E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x350 PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x38D CALLDATASIZE PUSH1 0x4 PUSH2 0x51AE JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x3B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x3C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0xFDE JUMP JUMPDEST PUSH2 0x350 PUSH2 0x3D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x1094 JUMP JUMPDEST PUSH2 0x350 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x419 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x176A JUMP JUMPDEST PUSH2 0x350 PUSH2 0x42C CALLDATASIZE PUSH1 0x4 PUSH2 0x5193 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x44C CALLDATASIZE PUSH1 0x4 PUSH2 0x53D6 JUMP JUMPDEST PUSH2 0x1819 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x1A37 JUMP JUMPDEST PUSH2 0x350 PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x470 CALLDATASIZE PUSH1 0x4 PUSH2 0x5413 JUMP JUMPDEST PUSH2 0x1AFE JUMP JUMPDEST PUSH2 0x374 PUSH2 0x1C3D JUMP JUMPDEST PUSH2 0x350 PUSH2 0x48B CALLDATASIZE PUSH1 0x4 PUSH2 0x545F JUMP JUMPDEST PUSH2 0x1CFB JUMP JUMPDEST CHAINID PUSH2 0x350 JUMP JUMPDEST PUSH2 0x350 PUSH32 0xE08E6E8E2E796F02419355C6FA268D1461FE6F2F34114A881A2DB47C0F240509 DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x35A JUMP JUMPDEST PUSH2 0x350 PUSH32 0xD4A2989857A24DE9C91E1DAFFE87D051D59F52B68729413D1EF656EC487E530 DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x532 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x2586 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x271A JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH24 0x10000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH1 0x12 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x5B1 PUSH2 0x5AC CALLDATASIZE PUSH1 0x4 PUSH2 0x54D3 JUMP JUMPDEST PUSH2 0x27D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x35A JUMP JUMPDEST PUSH2 0x4ED PUSH2 0x5E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x5F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x55F7 JUMP JUMPDEST PUSH2 0x280E JUMP JUMPDEST PUSH2 0x374 PUSH2 0x60A CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x2F1A JUMP JUMPDEST PUSH2 0x350 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x625 CALLDATASIZE PUSH1 0x4 PUSH2 0x5193 JUMP JUMPDEST PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x66B CALLDATASIZE PUSH1 0x4 PUSH2 0x51AE JUMP JUMPDEST PUSH2 0x34BD JUMP JUMPDEST PUSH2 0x350 PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x687 CALLDATASIZE PUSH1 0x4 PUSH2 0x56B0 JUMP JUMPDEST PUSH2 0x35AC JUMP JUMPDEST PUSH2 0x350 PUSH2 0x69A CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x3A91 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x6B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x51AE JUMP JUMPDEST PUSH2 0x4079 JUMP JUMPDEST PUSH2 0x350 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x6D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x4090 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x4138 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x6ED CALLDATASIZE PUSH1 0x4 PUSH2 0x5737 JUMP JUMPDEST PUSH2 0x41F4 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x700 CALLDATASIZE PUSH1 0x4 PUSH2 0x5773 JUMP JUMPDEST PUSH2 0x431D JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH2 0x5B1 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x11 SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD NUMBER SWAP2 PUSH2 0x74C SWAP2 PUSH2 0x57FA JUMP JUMPDEST GT ISZERO PUSH2 0x805 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A636F6C6C656374526564656D7074696F6E3A204D757374207761 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x697420666F7220726564656D7074696F6E5F64656C617920626C6F636B732062 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x65666F726520636F6C6C656374696E6720726564656D7074696F6E0000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 DUP2 SWAP1 DUP2 SWAP1 ISZERO PUSH2 0x84D JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SSTORE PUSH1 0xC SLOAD SWAP1 SWAP3 POP PUSH2 0x845 SWAP1 DUP4 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH1 0xC SSTORE PUSH1 0x1 SWAP4 POP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x88D JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SSTORE PUSH1 0xB SLOAD PUSH2 0x885 SWAP1 DUP3 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH1 0xB SSTORE PUSH1 0x1 SWAP3 POP JUMPDEST DUP4 ISZERO PUSH2 0x8B7 JUMPI PUSH1 0x4 SLOAD PUSH2 0x8B7 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP5 PUSH2 0x4B02 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x8E1 JUMPI PUSH1 0x1 SLOAD PUSH2 0x8E1 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP4 PUSH2 0x4B02 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x96D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH3 0xF4240 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA03 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST EQ PUSH2 0xA6A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D757374206265203D3D2031000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0xAFA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0xBED SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC2E SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0xCBA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D3174314445493A20696E76616C6964207369676E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6174757265730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCE7 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0xCF1 SWAP1 DUP9 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x68D54AA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x68D54AA SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD6D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD91 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 PUSH1 0x6 SLOAD PUSH3 0xF4240 PUSH2 0xDA8 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0xDB2 SWAP1 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0xDBC SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE32 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE56 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0xE60 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0xEC9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F75676820636F6C6C61746572616C20696E20706F6F6C000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xEE4 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xB SLOAD PUSH2 0xF02 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xB SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0xF29 SWAP1 DUP11 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0xF33 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xF44 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP11 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFD0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xFFA SWAP1 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1086 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F206772616E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x1090 DUP3 DUP3 PUSH2 0x4C72 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x111C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH3 0xF4240 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x118E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11B2 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST LT ISZERO PUSH2 0x121A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D757374206265203E3D2031000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP10 SWAP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x128F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12B3 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x12BD SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x12C7 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST GT ISZERO PUSH2 0x132F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5B506F6F6C277320436C6F7365645D3A204365696C696E672072656163686564 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x13BF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E743174314445493A207369676E61747572652069732065 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7870697265640000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x14B2 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14CF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14F3 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x157E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E743174314445493A20696E76616C6964207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7572657300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15AB PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x15B5 SWAP1 DUP10 PUSH2 0x5AFD JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x882AB63A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP11 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x882AB63A SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x162C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1650 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP3 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x1667 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x1671 SWAP1 DUP6 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x167B SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP4 POP PUSH2 0x16A3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER ADDRESS DUP12 PUSH2 0x4CD8 JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP5 PUSH2 0x16B5 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x16BF SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x16D0 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1747 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x175B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ PUSH2 0x180F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x1090 DUP3 DUP3 PUSH2 0x4E76 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1889 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18AD SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x191E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1942 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2480FCEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x2480FCEA SWAP1 PUSH2 0x199E SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B3A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19DF SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP3 GT ISZERO PUSH2 0x19F3 JUMPI PUSH3 0xF4240 SWAP2 POP JUMPDEST PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x1A03 DUP5 DUP7 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x1A0D SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1A2B JUMPI PUSH2 0x1A21 DUP2 DUP4 PUSH2 0x5812 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1A61 PUSH32 0x8118EEB5231A5FE4008A55B62860F6A0DB4F6C3AC04F8141927A9B3FEDD86D2F CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1A6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x2FDA313D9B5BB0B73BD003153F2FCCBC0DCA49791FDD1184DFAD82B44F54BD2E SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x1B28 PUSH32 0xE08E6E8E2E796F02419355C6FA268D1461FE6F2F34114A881A2DB47C0F240509 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1BB4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A2043616C6C6572206973206E6F7420504152414D455445525F5345 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x545445525F524F4C450000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0xE DUP8 SWAP1 SSTORE PUSH1 0x10 DUP7 SWAP1 SSTORE PUSH1 0x11 DUP6 SWAP1 SSTORE PUSH1 0x5 DUP5 SWAP1 SSTORE PUSH1 0x6 DUP4 SWAP1 SSTORE PUSH1 0x7 DUP3 SWAP1 SSTORE PUSH1 0x8 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x17FE98B66D27BD793EA01BD8A23A54ACAB8EEB167D9EB016A0C7CD71C573920C SWAP1 PUSH1 0xE0 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1C67 PUSH32 0x103DA79FF3755FF7A17A557D28B73D37CB4DE0B3C3CC02FA6C48DF0F35071FBF CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1C70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH24 0x10000000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x4F40FD1C59F78D7A2220DA638CD9400DABA01E57C7965702F390BF13133CC31F SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1D83 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DF3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E17 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP2 LT DUP1 ISZERO PUSH2 0x1E2B JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x1EB7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206E6565647320746F20626520626574 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7765656E202E30303030303120616E64202E3939393939390000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP13 SWAP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F50 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x1F5A SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x1F64 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST GT ISZERO PUSH2 0x2019 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x44 PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0x506F6F6C206365696C696E6720726561636865642C206E6F206D6F7265204445 SWAP1 DUP3 ADD MSTORE PUSH32 0x492063616E206265206D696E7465642077697468207468697320636F6C6C6174 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x6572616C00000000000000000000000000000000000000000000000000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP6 LT ISZERO PUSH2 0x20A9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E744672616374696F6E616C4445493A207369676E617475 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x726520697320657870697265642E000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x34 DUP4 ADD DUP14 SWAP1 MSTORE SWAP4 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x54 DUP5 ADD MSTORE PUSH1 0x68 DUP4 ADD DUP10 SWAP1 MSTORE PUSH1 0x88 DUP4 ADD DUP9 SWAP1 MSTORE CHAINID PUSH1 0xA8 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC8 DUP5 ADD SWAP2 DUP3 SWAP1 MSTORE DUP1 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 MSTORE SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x2182 SWAP1 DUP5 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0xCC ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x219F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x21C3 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x224F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E744672616374696F6E616C4445493A20696E76616C6964 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207369676E617475726573000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x227A PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22A7 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x22B1 SWAP1 DUP14 PUSH2 0x5AFD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE DUP12 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP14 SWAP1 MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x13 SLOAD SWAP1 MLOAD PUSH32 0x537A30A700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x537A30A7 SWAP1 PUSH2 0x232D SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2349 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x236D SWAP2 SWAP1 PUSH2 0x5BA9 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP1 POP DUP11 DUP2 GT ISZERO PUSH2 0x23DC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F756768204445555320696E7075747465640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x23F1 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x23FB SWAP1 DUP8 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x2405 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE SWAP2 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x247D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2491 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH2 0x24BB SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP CALLER ADDRESS DUP16 PUSH2 0x4CD8 JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP7 PUSH2 0x24CD SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x24D7 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x24E8 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x255F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2573 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x25B0 PUSH32 0xD4A2989857A24DE9C91E1DAFFE87D051D59F52B68729413D1EF656EC487E530 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x25B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x12 SLOAD DUP3 GT ISZERO PUSH2 0x2625 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x616D6F756E743C3D64616F536861726500000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x26C3 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x3A708F2F1C75B12457D207CF1E259AB9F87BBFCCB29672903ACF4661BD342E49 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x2744 PUSH32 0xC65532185ED70B2E999433E2E9FAC124E083ACB13EC183A4E05944DA0792337B CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x274D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH21 0x10000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x6BDFE227D5DB299C59AA56D5F846F40DBD73B271AAA78E18ED74FC3E00B8AA6B SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27ED SWAP1 DUP4 PUSH2 0x4EDC JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27ED SWAP1 DUP4 PUSH2 0x4EF2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x28BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A205265636F6C6C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x61746572616C697A652069732070617573656400000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP2 PUSH1 0x80 ADD MLOAD LT ISZERO PUSH2 0x294F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP3 DUP2 ADD MLOAD PUSH1 0x4 SLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x80 DUP7 ADD MLOAD SWAP4 MLOAD PUSH1 0x0 SWAP6 PUSH2 0x2998 SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP6 SWAP5 SWAP2 SWAP1 SWAP2 AND SWAP3 SWAP2 CHAINID SWAP1 PUSH1 0x20 ADD PUSH2 0x5BCD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH1 0xA0 DUP6 ADD MLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE SWAP2 SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x6793F0AC SWAP2 PUSH2 0x2A29 SWAP2 DUP6 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x5C78 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A46 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A6A SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x2AF6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A20696E76616C69 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x64207369676E6174757265730000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B23 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST DUP4 MLOAD PUSH2 0x2B2F SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BC4 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C35 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C59 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 DUP9 ADD MLOAD SWAP1 MLOAD PUSH32 0x2480FCEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x2480FCEA SWAP2 PUSH2 0x2CB8 SWAP2 PUSH1 0x4 ADD PUSH2 0x5B3A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2CD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2CF9 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 DUP9 ADD MLOAD DUP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0xFC011061 SWAP2 DUP10 SWAP2 SWAP1 PUSH2 0x2D37 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x2D47 JUMPI PUSH2 0x2D47 PUSH2 0x5D36 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x84 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DBF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2DE3 SWAP2 SWAP1 PUSH2 0x5BA9 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x2E15 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x2E1F SWAP1 DUP5 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP10 PUSH1 0x60 ADD MLOAD PUSH1 0x8 SLOAD PUSH1 0x10 SLOAD PUSH3 0xF4240 PUSH2 0x2E3C SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH2 0x2E46 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x2E50 SWAP1 DUP6 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x2E5A SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH2 0x2E82 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER ADDRESS DUP6 PUSH2 0x4CD8 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2EF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x2FA0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x300D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3031 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST ISZERO PUSH2 0x30BE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x36 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D416C676F726974686D69634445493A20436F6C6C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x61746572616C20726174696F206D757374206265203000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0x314E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A72656465656D416C676F726974686D69634445493A207369676E61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7475726520697320657870697265642E00000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x3241 SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x325E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3282 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x330E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D416C676F726974686D69634445493A20696E7661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964207369676E617475726573000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x6 SLOAD DUP7 SWAP1 PUSH3 0xF4240 SWAP1 PUSH2 0x3322 SWAP1 DUP3 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x332C SWAP1 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3336 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH2 0x3348 PUSH3 0xF4240 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3352 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x3370 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xC SLOAD PUSH2 0x338E SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xC SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0x33B5 SWAP1 DUP11 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x33BF SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x33D0 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP11 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3447 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x345B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH2 0xFA2 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xF4240 DUP3 PUSH2 0x34EF PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3560 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3584 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x358E SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x3598 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x35A2 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x27F0 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH24 0x10000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3659 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6275794261636B444555533A204275796261636B206973207061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7573656400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0x36E9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A6275794261636B444555533A207369676E61747572652069732065 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7870697265642E00000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 DUP9 SWAP2 AND DUP8 DUP8 CHAINID PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3726 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5BCD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x37B5 SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x37D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37F6 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x3882 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6275794261636B444555533A20696E76616C6964207369676E61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7475726573000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x3898 DUP10 PUSH2 0x1819 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 DUP11 MLOAD PUSH2 0x38B2 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x38C2 JUMPI PUSH2 0x38C2 PUSH2 0x5D36 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH1 0x7 SLOAD PUSH3 0xF4240 PUSH2 0x38EC SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x3C04AF9F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x3C04AF9F SWAP1 PUSH2 0x3942 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B7E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x395F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3983 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x398D SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3997 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x39C6 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x39D0 SWAP1 DUP4 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP14 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH2 0x3A85 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP CALLER DUP4 PUSH2 0x4B02 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3B19 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3BAA SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST ISZERO PUSH2 0x3C11 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D7573742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x3CA1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x3D94 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3DB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3DD5 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x3E61 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A20696E76616C69 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x64207369676E6174757265730000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x14DA4EE100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x14DA4EE1 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3ED7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3EFB SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP2 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x3F12 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x3F1C SWAP1 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3F26 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP2 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP4 PUSH2 0x3F3A SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3F44 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3F55 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3FCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3FE1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4057 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x406B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27F0 SWAP1 PUSH2 0x4F31 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x40AC SWAP1 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x180F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F207265766F6B6500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x4162 PUSH32 0xA84A5389AD41F9AAB0831B01E5384CAE76E7A7FD09131C206FF7927C201C3857 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x416B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH22 0x1000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x5860C5063A65E23CEA4E2E2925F1A841BB6D1BC9615BD425F8DD084980B05141 SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x421E PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x4284 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A796F7520617265206E6F74207472757374790000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE DUP5 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x42F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8E1 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x43A3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4413 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4437 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP2 LT DUP1 ISZERO PUSH2 0x444B JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x44FD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x53 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D4672616374696F6E616C4445493A20436F6C6C61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x746572616C20726174696F206E6565647320746F206265206265747765656E20 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x2E30303030303120616E64202E39393939393900000000000000000000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x458D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A72656465656D4672616374696F6E616C4445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7572652069732065787069726564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x34 DUP4 ADD DUP13 SWAP1 MSTORE SWAP4 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x54 DUP5 ADD MSTORE PUSH1 0x68 DUP4 ADD DUP9 SWAP1 MSTORE PUSH1 0x88 DUP4 ADD DUP8 SWAP1 MSTORE CHAINID PUSH1 0xA8 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC8 DUP5 ADD SWAP2 DUP3 SWAP1 MSTORE DUP1 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 MSTORE SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x4666 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0xCC ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4683 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x46A7 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x4733 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D4672616374696F6E616C4445493A20696E76616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6964207369676E61747572657300000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP10 SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH1 0x6 SLOAD PUSH3 0xF4240 PUSH2 0x4752 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x475C SWAP1 DUP15 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x4766 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x4778 DUP9 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x4782 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH2 0x478C SWAP1 DUP4 PUSH2 0x5812 JUMP JUMPDEST SWAP1 POP DUP11 PUSH2 0x479C PUSH3 0xF4240 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x47A6 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP5 POP PUSH1 0x0 PUSH2 0x47D5 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x47DF SWAP1 DUP5 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x47F1 DUP11 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x47FB SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x480B PUSH3 0xF4240 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x4815 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP3 SWAP9 POP SWAP1 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP5 POP PUSH4 0x70A08231 SWAP4 POP PUSH1 0x24 ADD SWAP2 POP PUSH2 0x4878 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4895 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x48B9 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x48C3 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x492C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F75676820636F6C6C61746572616C20696E20706F6F6C000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x4947 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xB SLOAD PUSH2 0x4965 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xB SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x4983 SWAP1 DUP4 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xC SLOAD PUSH2 0x49A1 SWAP1 DUP4 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xC SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0x49C8 SWAP1 DUP13 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x49D2 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x49E3 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP13 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4A5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4A6E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH2 0x2EDC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27ED DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x4F3B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 DUP8 AND SWAP2 PUSH2 0x4B99 SWAP2 SWAP1 PUSH2 0x5D65 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4BD6 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 0x4BDB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4C05 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4C05 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4C05 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x4C6B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F4641494C454400 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x4C8A SWAP1 DUP3 PUSH2 0x4AD0 JUMP JUMPDEST ISZERO PUSH2 0x1090 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 DUP9 AND SWAP2 PUSH2 0x4D77 SWAP2 SWAP1 PUSH2 0x5D65 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4DB4 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 0x4DB9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4DE3 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4DE3 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4DE3 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x4E6E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F46524F4D5F4641 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x494C454400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x4E8E SWAP1 DUP3 PUSH2 0x4F8A JUMP JUMPDEST ISZERO PUSH2 0x1090 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EE8 DUP4 DUP4 PUSH2 0x4FBC JUMP JUMPDEST PUSH1 0x60 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD ISZERO ISZERO PUSH2 0x27ED JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27F0 DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x4F82 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 0x27F0 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x27F0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27ED DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x5077 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x504F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E756D657261626C655365743A20696E646578206F7574206F6620626F756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6473000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x5064 JUMPI PUSH2 0x5064 PUSH2 0x5D36 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x5160 JUMPI PUSH1 0x0 PUSH2 0x509B PUSH1 0x1 DUP4 PUSH2 0x5812 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x50AF SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x5812 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x50C8 JUMPI PUSH2 0x50C8 PUSH2 0x5D36 JUMP 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 0x50EB JUMPI PUSH2 0x50EB PUSH2 0x5D36 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH2 0x5102 DUP4 PUSH1 0x1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x5124 JUMPI PUSH2 0x5124 PUSH2 0x5D81 JUMP 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 0x27F0 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x27F0 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x518E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x51A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27ED DUP3 PUSH2 0x516A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x51C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x51D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x51F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x520C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x522B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5257 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5263 DUP9 DUP3 DUP10 ADD PUSH2 0x51C7 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x5297 PUSH1 0x20 DUP5 ADD PUSH2 0x516A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x52F2 JUMPI PUSH2 0x52F2 PUSH2 0x52A0 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x533F JUMPI PUSH2 0x533F PUSH2 0x52A0 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5361 JUMPI PUSH2 0x5361 PUSH2 0x52A0 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x537C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x5391 PUSH2 0x538C DUP4 PUSH2 0x5347 JUMP JUMPDEST PUSH2 0x52F8 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP7 DUP5 GT ISZERO PUSH2 0x53B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x53CB JUMPI DUP1 CALLDATALOAD DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x53B4 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x53FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x540B DUP5 DUP3 DUP6 ADD PUSH2 0x536B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x542E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP6 CALLDATALOAD SWAP8 PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP8 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP7 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP7 POP PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP6 POP PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 ADD CALLDATALOAD SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x547A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x54B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x54C0 DUP11 DUP3 DUP12 ADD PUSH2 0x51C7 JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x54E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 DUP2 DUP5 ADD SLT PUSH2 0x5507 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x20 PUSH2 0x5517 PUSH2 0x538C DUP4 PUSH2 0x5347 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP6 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP8 DUP5 GT ISZERO PUSH2 0x5536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP8 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x55EB JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x555B JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP11 ADD SWAP2 POP DUP11 PUSH1 0x3F DUP4 ADD SLT PUSH2 0x5570 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP6 DUP3 ADD CALLDATALOAD PUSH1 0x40 DUP3 DUP3 GT ISZERO PUSH2 0x5586 JUMPI PUSH2 0x5586 PUSH2 0x52A0 JUMP JUMPDEST PUSH2 0x55B5 DUP9 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP13 DUP6 ADD AND ADD PUSH2 0x52F8 JUMP JUMPDEST SWAP3 POP DUP2 DUP4 MSTORE DUP13 DUP2 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x55CC JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP2 DUP6 ADD DUP10 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 SWAP1 DUP3 ADD DUP8 ADD MSTORE DUP5 MSTORE POP SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x553A JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x5621 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0xC0 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x5635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x563D PUSH2 0x52CF JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x565D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5669 DUP8 DUP3 DUP7 ADD PUSH2 0x536B JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x5695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x56A1 DUP8 DUP3 DUP7 ADD PUSH2 0x54F5 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x56C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x56E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x56F4 DUP11 DUP4 DUP12 ADD PUSH2 0x536B JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x5718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5725 DUP10 DUP3 DUP11 ADD PUSH2 0x51C7 JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x574C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5755 DUP5 PUSH2 0x516A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0x576A PUSH1 0x40 DUP6 ADD PUSH2 0x516A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x578C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x57BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5725 DUP10 DUP3 DUP11 ADD PUSH2 0x51C7 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x580D JUMPI PUSH2 0x580D PUSH2 0x57CB JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x5824 JUMPI PUSH2 0x5824 PUSH2 0x57CB JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x583B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD DUP6 DUP4 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP6 ADD MSTORE DUP2 DUP6 DUP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP1 POP PUSH1 0x60 DUP7 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP7 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x595F JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP8 DUP7 SUB ADD DUP4 MSTORE DUP2 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP11 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x5916 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 ADD DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x592F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP12 SGT ISZERO PUSH2 0x593E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x594B DUP8 DUP3 DUP9 DUP6 ADD PUSH2 0x5842 JUMP JUMPDEST SWAP7 POP POP POP SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x58B5 JUMP JUMPDEST POP SWAP3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x597F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x598F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH2 0x59EF JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x59D5 JUMPI PUSH2 0x59D5 PUSH2 0x57CB JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH2 0x59E2 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH2 0x599B JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5A06 JUMPI POP PUSH1 0x1 PUSH2 0x27F0 JUMP JUMPDEST DUP2 PUSH2 0x5A13 JUMPI POP PUSH1 0x0 PUSH2 0x27F0 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x5A29 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x5A33 JUMPI PUSH2 0x5A4F JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x27F0 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x5A44 JUMPI PUSH2 0x5A44 PUSH2 0x57CB JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x27F0 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x5A72 JUMPI POP DUP2 DUP2 EXP PUSH2 0x27F0 JUMP JUMPDEST PUSH2 0x5A7C DUP4 DUP4 PUSH2 0x5996 JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x5AAE JUMPI PUSH2 0x5AAE PUSH2 0x57CB JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27ED DUP4 DUP4 PUSH2 0x59F7 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5AF8 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x5B35 JUMPI PUSH2 0x5B35 PUSH2 0x57CB JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5B72 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x5B56 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD PUSH2 0x27F0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5BBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 DUP1 DUP10 PUSH1 0x60 SHL AND DUP4 MSTORE PUSH1 0x14 DUP4 ADD DUP9 MLOAD PUSH1 0x20 DUP1 DUP12 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C22 JUMPI DUP2 MLOAD DUP6 MSTORE SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5C06 JUMP JUMPDEST POP POP POP POP PUSH1 0x60 SWAP8 SWAP1 SWAP8 SHL AND DUP7 MSTORE POP POP PUSH1 0x14 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x34 DUP4 ADD MSTORE PUSH1 0x54 DUP3 ADD MSTORE PUSH1 0x74 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C67 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5C4F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x8E1 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD DUP5 DUP4 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP6 ADD MSTORE DUP2 DUP6 MLOAD DUP1 DUP5 MSTORE PUSH1 0x60 DUP7 ADD SWAP2 POP PUSH1 0x60 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP4 POP DUP3 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5D28 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP9 DUP8 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP9 MSTORE PUSH2 0x5CEB DUP2 DUP9 DUP11 ADD DUP10 DUP6 ADD PUSH2 0x5C4C JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP7 SWAP1 SWAP7 ADD DUP6 ADD SWAP6 POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5CA6 JUMP JUMPDEST POP SWAP4 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x5D77 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x5C4C JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CHAINID 0x22 LOG0 0x5D PUSH22 0xC89B78CBC019E8EEA4CFB3DFA44F6208B9D4D7686260 0x26 0xB7 SIGNEXTEND 0xDA SIGNEXTEND PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "132:660:11:-:0;;;2874:1:7;2844:31;;;;2934:30;;;;3104:4;3076:32;;3216:1;3182:35;;3266:27;;3913:30;;;-1:-1:-1;;;;4025:33:7;;;201:589:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;470:21;493:22;517:19;538:15;555:14;571:13;586:8;-1:-1:-1;;;;;4687:35:7;;;;;;4686:83;;-1:-1:-1;;;;;;4732:36:7;;;;4686:83;:126;;;;-1:-1:-1;;;;;;4778:33:7;;;;4686:126;:165;;;;-1:-1:-1;;;;;;4821:29:7;;;;4686:165;:203;;;;-1:-1:-1;;;;;;4860:28:7;;;;4686:203;:235;;;;-1:-1:-1;;;;;;4898:22:7;;;;4686:235;4674:285;;;;-1:-1:-1;;;4674:285:7;;1101:2:39;4674:285:7;;;1083:21:39;1140:2;1120:18;;;1113:30;1179:29;1159:18;;;1152:57;1226:18;;4674:285:7;;;;;;;;;4963:11;:38;;-1:-1:-1;;;;;4963:38:7;;;-1:-1:-1;;;;;;4963:38:7;;;;;;;5005:20;:44;;;;;;;;;;;5053:21;:46;;;;;;;;;;;5103:18;:40;;;;;;;;;;;;4963:38;5147:45;;;;;;;;;;5196:12;:28;;;5261:27;;;-1:-1:-1;;;5261:27:7;;;;:25;;:27;;;;;;;;;;;;;5103:40;5261:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5247:41;;;;5255:2;5247:41;:::i;:::-;5228:60;;5293:46;1767:4:20;5324:14:7;5293:10;:46::i;:::-;5343:40;3390:24;5367:15;5343:10;:40::i;:::-;5387:42;3458:26;5413:15;5387:10;:42::i;:::-;5433:51;3609:35;5468:15;5433:10;:51::i;:::-;5488:43;3529:27;5515:15;5488:10;:43::i;:::-;5535:40;3685:24;5559:15;5535:10;:40::i;:::-;5579:50;3841:34;5613:15;5579:10;:50::i;:::-;-1:-1:-1;;;;;;;;;;625:33:11;::::1;::::0;::::1;::::0;-1:-1:-1;617:67:11::1;::::0;-1:-1:-1;617:67:11::1;;::::0;-1:-1:-1;;;617:67:11;;1962:2:39;617:67:11::1;::::0;::::1;1944:21:39::0;2001:2;1981:18;;;1974:30;2040:23;2020:18;;;2013:51;2081:18;;617:67:11::1;1760:345:39::0;617:67:11::1;695:44;1767:4:20;686:10:4::0;695::11::1;:44::i;:::-;-1:-1:-1::0;;749:12:11::1;:34:::0;;-1:-1:-1;;;;;;749:34:11::1;-1:-1:-1::0;;;;;749:34:11;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;132:660:11;;-1:-1:-1;;;132:660:11;6653:110:20;6731:25;6742:4;6748:7;6731:10;:25::i;:::-;6653:110;;:::o;7090:184::-;7163:6;:12;;;;;;;;;;;:33;;7188:7;;7163:24;;;;;:33;;:::i;:::-;7159:109;;;7217:40;;686:10:4;;-1:-1:-1;;;;;7217:40:20;;;7229:4;;7217:40;;;;;7090:184;;:::o;4866:141:38:-;4936:4;4959:41;4964:3;-1:-1:-1;;;;;;4984:14:38;;;;4976:23;4959:4;:41::i;:::-;4952:48;;4866:141;;;;;:::o;1613:404::-;1676:4;3874:19;;;:12;;;:19;;;;;;1692:319;;-1:-1:-1;1734:23:38;;;;;;;;:11;:23;;;;;;;;;;;;;1914:18;;1892:19;;;:12;;;:19;;;;;;:40;;;;1946:11;;1692:319;-1:-1:-1;1995:5:38;1988:12;;14:177:39;93:13;;-1:-1:-1;;;;;135:31:39;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:698::-;320:6;328;336;344;352;360;368;421:3;409:9;400:7;396:23;392:33;389:53;;;438:1;435;428:12;389:53;461:40;491:9;461:40;:::i;:::-;451:50;;520:49;565:2;554:9;550:18;520:49;:::i;:::-;510:59;;588:49;633:2;622:9;618:18;588:49;:::i;:::-;578:59;;656:49;701:2;690:9;686:18;656:49;:::i;:::-;646:59;;724:50;769:3;758:9;754:19;724:50;:::i;:::-;714:60;;814:3;803:9;799:19;793:26;783:36;;838:50;883:3;872:9;868:19;838:50;:::i;:::-;828:60;;196:698;;;;;;;;;;:::o;1255:273::-;1323:6;1376:2;1364:9;1355:7;1351:23;1347:32;1344:52;;;1392:1;1389;1382:12;1344:52;1424:9;1418:16;1474:4;1467:5;1463:16;1456:5;1453:27;1443:55;;1494:1;1491;1484:12;1443:55;1517:5;1255:273;-1:-1:-1;;;1255:273:39:o;1533:222::-;1573:4;1601:1;1598;1595:8;1592:131;;;1645:10;1640:3;1636:20;1633:1;1626:31;1680:4;1677:1;1670:15;1708:4;1705:1;1698:15;1592:131;-1:-1:-1;1740:9:39;;1533:222::o;1760:345::-;132:660:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@DAO_SHARE_COLLECTOR_1648": { + "entryPoint": null, + "id": 1648, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DEFAULT_ADMIN_ROLE_6026": { + "entryPoint": null, + "id": 6026, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@PARAMETER_SETTER_ROLE_1653": { + "entryPoint": null, + "id": 1653, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@TRUSTY_ROLE_1643": { + "entryPoint": null, + "id": 1643, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@USDC_address_3996": { + "entryPoint": null, + "id": 3996, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_add_11596": { + "entryPoint": 20283, + "id": 11596, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_at_11736": { + "entryPoint": 20412, + "id": 11736, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_contains_11696": { + "entryPoint": null, + "id": 11696, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_6258": { + "entryPoint": 19570, + "id": 6258, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_length_11710": { + "entryPoint": null, + "id": 11710, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_msgSender_444": { + "entryPoint": null, + "id": 444, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_remove_11677": { + "entryPoint": 20599, + "id": 11677, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_revokeRole_6282": { + "entryPoint": 20086, + "id": 6282, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@add_11764": { + "entryPoint": 19152, + "id": 11764, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@at_11851": { + "entryPoint": 20188, + "id": 11851, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@availableExcessCollatDV_1935": { + "entryPoint": 6169, + "id": 1935, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@bonus_rate_1609": { + "entryPoint": null, + "id": 1609, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@buyBackDEUS_3334": { + "entryPoint": 13740, + "id": 3334, + "parameterSlots": 6, + "returnSlots": 0 + }, + "@buyBackPaused_1665": { + "entryPoint": null, + "id": 1665, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@buyback_fee_1571": { + "entryPoint": null, + "id": 1571, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@collatDollarBalance_1873": { + "entryPoint": 13501, + "id": 1873, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@collectDaoShare_3374": { + "entryPoint": 9606, + "id": 3374, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@collectRedemption_3047": { + "entryPoint": 1838, + "id": 3047, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@contains_11812": { + "entryPoint": 20210, + "id": 11812, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@daoShare_1615": { + "entryPoint": null, + "id": 1615, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@emergencyWithdrawERC20_3394": { + "entryPoint": 16884, + "id": 3394, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@getChainID_1947": { + "entryPoint": null, + "id": 1947, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getRoleAdmin_6121": { + "entryPoint": null, + "id": 6121, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMemberCount_6088": { + "entryPoint": 16505, + "id": 6088, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMember_6107": { + "entryPoint": 10197, + "id": 6107, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@grantRole_6147": { + "entryPoint": 4062, + "id": 6147, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@hasRole_6072": { + "entryPoint": 10230, + "id": 6072, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@lastRedeemed_1589": { + "entryPoint": null, + "id": 1589, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@length_11827": { + "entryPoint": 20273, + "id": 11827, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@mint1t1DEI_2089": { + "entryPoint": 4244, + "id": 2089, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@mintAlgorithmicDEI_2200": { + "entryPoint": 14993, + "id": 2200, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@mintFractionalDEI_2394": { + "entryPoint": 7419, + "id": 2394, + "parameterSlots": 7, + "returnSlots": 1 + }, + "@mintPaused_1656": { + "entryPoint": null, + "id": 1656, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@minting_fee_1567": { + "entryPoint": null, + "id": 1567, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@pausedPrice_1606": { + "entryPoint": null, + "id": 1606, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@pool_ceiling_1603": { + "entryPoint": null, + "id": 1603, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@recollat_fee_1573": { + "entryPoint": null, + "id": 1573, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@recollateralizeDEI_3208": { + "entryPoint": 10254, + "id": 3208, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@recollateralizePaused_1662": { + "entryPoint": null, + "id": 1662, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@redeem1t1DEI_2543": { + "entryPoint": 2279, + "id": 2543, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@redeemAlgorithmicDEI_2919": { + "entryPoint": 12058, + "id": 2919, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@redeemCollateralBalances_1581": { + "entryPoint": null, + "id": 1581, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@redeemDEUSBalances_1577": { + "entryPoint": null, + "id": 1577, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@redeemFractionalDEI_2778": { + "entryPoint": 17181, + "id": 2778, + "parameterSlots": 6, + "returnSlots": 0 + }, + "@redeemPaused_1659": { + "entryPoint": null, + "id": 1659, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@redemption_delay_1612": { + "entryPoint": null, + "id": 1612, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@redemption_fee_1569": { + "entryPoint": null, + "id": 1569, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@remove_11788": { + "entryPoint": 20362, + "id": 11788, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@renounceRole_6195": { + "entryPoint": 5994, + "id": 6195, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@revokeRole_6173": { + "entryPoint": 16528, + "id": 6173, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@safeTransferFrom_8741": { + "entryPoint": 19672, + "id": 8741, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@safeTransfer_8695": { + "entryPoint": 19202, + "id": 8695, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@setPoolParameters_3543": { + "entryPoint": 6910, + "id": 3543, + "parameterSlots": 7, + "returnSlots": 0 + }, + "@toggleBuyBack_3478": { + "entryPoint": 7229, + "id": 3478, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@toggleMinting_3415": { + "entryPoint": 10010, + "id": 3415, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@toggleRecollateralize_3457": { + "entryPoint": 6711, + "id": 3457, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@toggleRedeeming_3436": { + "entryPoint": 16696, + "id": 3436, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@unclaimedPoolCollateral_1583": { + "entryPoint": null, + "id": 1583, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@unclaimedPoolDEUS_1585": { + "entryPoint": null, + "id": 1585, + "parameterSlots": 0, + "returnSlots": 0 + }, + "abi_decode_address": { + "entryPoint": 20842, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_array_bytes_calldata_dyn_calldata": { + "entryPoint": 20935, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_array_bytes_dyn": { + "entryPoint": 21749, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_array_uint256_dyn": { + "entryPoint": 21355, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 20883, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_uint256t_address": { + "entryPoint": 22327, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr": { + "entryPoint": 21462, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bool_fromMemory": { + "entryPoint": 22893, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32": { + "entryPoint": 20910, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32t_address": { + "entryPoint": 21108, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes32t_uint256": { + "entryPoint": 21715, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_struct$_RecollateralizeDEI_$1556_memory_ptr": { + "entryPoint": 22007, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256_fromMemory": { + "entryPoint": 22569, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256t_address": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_memory_ptrt_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": { + "entryPoint": 22192, + "id": null, + "parameterSlots": 2, + "returnSlots": 6 + }, + "abi_decode_tuple_t_uint256t_uint256_fromMemory": { + "entryPoint": 23465, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": { + "entryPoint": 21011, + "id": null, + "parameterSlots": 2, + "returnSlots": 5 + }, + "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": { + "entryPoint": 22387, + "id": null, + "parameterSlots": 2, + "returnSlots": 6 + }, + "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": { + "entryPoint": 21599, + "id": null, + "parameterSlots": 2, + "returnSlots": 7 + }, + "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256": { + "entryPoint": 21523, + "id": null, + "parameterSlots": 2, + "returnSlots": 7 + }, + "abi_encode_bytes_calldata": { + "entryPoint": 22594, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_struct_MintFD_Params": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_packed_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 23501, + "id": null, + "parameterSlots": 7, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 7, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 23909, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 23354, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 22667, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 23672, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_0553f3220b1c65f13a1a0bcfbae12cc9d57080d375095d8011e479f9a164d51f__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_0f701899e5d254af158b94e181e8c864fa1fa8407b8e83a84b212f1856c034bb__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_1eb003467dd04b32fe18359370bc0d0e41e237ed2bf1be23765de9081983dd0d__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_219e324e833041c644ccb1dd3dba73aaa878497ddb310916decd8247cfffb1bd__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_2b6a8f4152754b6a991bf1b0a666b82b00923d2fd769bf1e3367643b70f91813__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_32c377f750f3acdff4f31738199007cf625ea4cb5a4b65f0253238ad0d6fe603__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3517d2a2517b8811826efd915add7c546f6c6059a93aba596e992ef7ede2c237__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3871818a433a796d8749bf69d3757469c36cba69a6da101f4f86b64a03c25fdf__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_38c9fd1b67df6e999cac6aaf315cc13e0fa4fc296b57f92466d27a378c17f081__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3a4aaa4225031aefd603a0181e03bfba377ad02f3a40d8d4ff79e4b75af91117__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3b8d4b54db08ed890798fdc55ba1c410b1b90a23a79193c7486d04051b31717b__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3cf3652b2acfb73942e459b043ef1100fffabb4093e48d3162412f77ff7ce9c4__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_415add743154eebc1c14f0dcbb6d42364bd9228c5bfab92187476352ba4cf3a4__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_43ec8f409eb317e256e176d402e36ec6af276af1f8f749e4d9fbe21bcd7bc664__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_565f0845894e0f662254a5093763af0fee3605d54c84edbcf11c672de6a88543__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_5a2d3f9bcb3c5bd0b1926b1856db5dd186810b6e73d5cb9f87ee953c4da7fee2__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_70791a0be90f5705149d45e0236213cb0328457b5d86e6288006e4f6774b09e7__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_74a9279f050c6419792bc3daa57da050d8e2f426f944681941d34e8909be7eac__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_76b82cf0f5d67f7f31fa6377a21018dea36302e26d7842fad5ba832c330157dd__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_7b7d20f9ca6e9adc6378137dbeda8a962bb9bf07440b2b9db28bb53f4e464fce__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_98984f103b51115a1419edfc23f41285c32977e7b02cc32e067bba007d26b4f9__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_af86e93bd0220a55e8ca62f5f35862820e5999de1371ac209bb45c45b39ee5de__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_bff4c2607c2670a7edf36f88b5d5987db2ccc6a59b36f486c4c57f193ba00833__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_c668331e1a5c68ea41572b6fbf581e9b4ce7392915c1ff6a6872ae765618f9ee__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_c70433350355bf0543fc06a466fe44bcb01281d5a63b8bb87c74c17650f3e4c7__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_cff49a4dc330adf1553dee705fac7862f639b33b74fda177589900b9506a9737__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_d441a1ecab801b1c575c77e3c185431fd7b0029d666fc7417a9f7556b3f83d6f__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_de458c40ee20c89c9807b7a8a5908e3319b480e8b007f55d3d683bc68bb7186e__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_f52391ebd610d5d9d518357ceeaf45367429ac1fd3150210dcaba2450d5bcce8__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_f64a17d208f26e05f2312b5ee80f462bf5bab19979dfd330950359be93bd2d66__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_f836b804fb91fcbb3dafb5e724f5eeb776ededc2eaf47030c5f454694abcbafe__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_f8eb31fdc269657c54ee10149955fecbcb75254d3eeec631bdecc57de525010b__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_ffc61d1a84775e893520fbdfe0ea8909f9284081f97dd4e8ed1bc343abeb295e__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__to_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_struct$_MintFD_Params_$3600_memory_ptr__to_t_struct$_MintFD_Params_$3600_memory_ptr__fromStack_reversed": { + "entryPoint": 23422, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 8, + "returnSlots": 1 + }, + "allocate_memory": { + "entryPoint": 21240, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "allocate_memory_5709": { + "entryPoint": 21199, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "array_allocation_size_array_uint256_dyn": { + "entryPoint": 21319, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 22522, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_div_t_uint256": { + "entryPoint": 23234, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_exp_helper": { + "entryPoint": 22934, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "checked_exp_t_uint256_t_uint256": { + "entryPoint": 23222, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_exp_unsigned": { + "entryPoint": 23031, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_mul_t_uint256": { + "entryPoint": 23293, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 22546, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "copy_memory_to_memory": { + "entryPoint": 23628, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "panic_error_0x11": { + "entryPoint": 22475, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x31": { + "entryPoint": 23937, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 23862, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 21152, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:40011:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "63:147:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "73:29:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "95:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "82:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "82:20:39" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "73:5:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "188:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "200:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "190:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "190:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "190:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "124:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "135:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "142:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "131:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "131:54:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "121:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "121:65:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "114:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "114:73:39" + }, + "nodeType": "YulIf", + "src": "111:93:39" + } + ] + }, + "name": "abi_decode_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "42:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "53:5:39", + "type": "" + } + ], + "src": "14:196:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "285:116:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "331:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "340:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "343:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "333:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "333:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "333:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "306:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "315:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "302:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "302:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "327:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "298:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "298:32:39" + }, + "nodeType": "YulIf", + "src": "295:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "356:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "385:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "366:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "366:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "356:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "251:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "262:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "274:6:39", + "type": "" + } + ], + "src": "215:186:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "507:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "517:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "529:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "540:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "525:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "525:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "517:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "559:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "570:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "552:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "552:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "552:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "476:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "487:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "498:4:39", + "type": "" + } + ], + "src": "406:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "658:110:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "704:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "713:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "716:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "706:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "706:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "706:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "679:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "688:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "675:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "675:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "700:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "671:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "671:32:39" + }, + "nodeType": "YulIf", + "src": "668:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "729:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "752:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "739:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "739:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "729:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "624:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "635:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "647:6:39", + "type": "" + } + ], + "src": "588:180:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "874:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "884:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "896:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "907:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "892:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "892:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "884:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "926:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "937:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "919:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "919:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "919:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "843:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "854:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "865:4:39", + "type": "" + } + ], + "src": "773:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1046:283:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1095:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1104:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1107:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1097:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1097:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1097:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1074:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1082:4:39", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1070:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1070:17:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "1089:3:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1066:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1066:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1059:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1059:35:39" + }, + "nodeType": "YulIf", + "src": "1056:55:39" + }, + { + "nodeType": "YulAssignment", + "src": "1120:30:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1143:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1130:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1130:20:39" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1120:6:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1193:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1202:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1205:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1195:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1195:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1195:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1165:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1173:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1162:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1162:30:39" + }, + "nodeType": "YulIf", + "src": "1159:50:39" + }, + { + "nodeType": "YulAssignment", + "src": "1218:29:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1234:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1242:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1230:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1230:17:39" + }, + "variableNames": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "1218:8:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1307:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1316:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1319:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1309:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1309:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1309:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1270:6:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1282:1:39", + "type": "", + "value": "5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1285:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1278:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1278:14:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1266:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1266:27:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1295:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1262:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1262:38:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "1302:3:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1259:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1259:47:39" + }, + "nodeType": "YulIf", + "src": "1256:67:39" + } + ] + }, + "name": "abi_decode_array_bytes_calldata_dyn_calldata", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1009:6:39", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "1017:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "arrayPos", + "nodeType": "YulTypedName", + "src": "1025:8:39", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1035:6:39", + "type": "" + } + ], + "src": "955:374:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1501:493:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1548:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1557:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1560:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1550:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1550:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1550:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1522:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1531:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1518:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1518:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1543:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1514:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1514:33:39" + }, + "nodeType": "YulIf", + "src": "1511:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "1573:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1596:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1583:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1583:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1573:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1615:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1642:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1653:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1638:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1638:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1625:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1625:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1615:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1666:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1693:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1704:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1689:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1689:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1676:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1676:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "1666:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1717:46:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1748:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1759:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1744:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1744:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1731:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1731:32:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1721:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1806:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1815:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1818:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1808:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1808:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1808:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1778:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1786:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1775:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1775:30:39" + }, + "nodeType": "YulIf", + "src": "1772:50:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1831:103:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1906:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1917:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1902:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1902:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1926:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_bytes_calldata_dyn_calldata", + "nodeType": "YulIdentifier", + "src": "1857:44:39" + }, + "nodeType": "YulFunctionCall", + "src": "1857:77:39" + }, + "variables": [ + { + "name": "value3_1", + "nodeType": "YulTypedName", + "src": "1835:8:39", + "type": "" + }, + { + "name": "value4_1", + "nodeType": "YulTypedName", + "src": "1845:8:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1943:18:39", + "value": { + "name": "value3_1", + "nodeType": "YulIdentifier", + "src": "1953:8:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "1943:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1970:18:39", + "value": { + "name": "value4_1", + "nodeType": "YulIdentifier", + "src": "1980:8:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "1970:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1435:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1446:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1458:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1466:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "1474:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "1482:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "1490:6:39", + "type": "" + } + ], + "src": "1334:660:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2086:167:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2132:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2141:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2144:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2134:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2134:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2134:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2107:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2116:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2103:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2103:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2128:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2099:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2099:32:39" + }, + "nodeType": "YulIf", + "src": "2096:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "2157:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2180:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2167:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2167:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2157:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2199:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2232:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2243:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2228:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2228:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "2209:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "2209:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2199:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2044:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2055:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2067:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2075:6:39", + "type": "" + } + ], + "src": "1999:254:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2290:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2307:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2310:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2300:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2300:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2300:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2404:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2407:4:39", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2397:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2397:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2397:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2428:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2431:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2421:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2421:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2421:15:39" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "2258:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2493:207:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2503:19:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2519:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2513:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "2513:9:39" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2503:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2531:35:39", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2553:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2561:4:39", + "type": "", + "value": "0xc0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2549:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2549:17:39" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "2535:10:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2641:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "2643:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "2643:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2643:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "2584:10:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2596:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2581:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2581:34:39" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "2620:10:39" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2632:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2617:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2617:22:39" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "2578:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2578:62:39" + }, + "nodeType": "YulIf", + "src": "2575:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2679:2:39", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "2683:10:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2672:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2672:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2672:22:39" + } + ] + }, + "name": "allocate_memory_5709", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "2482:6:39", + "type": "" + } + ], + "src": "2447:253:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2750:289:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2760:19:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2776:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2770:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "2770:9:39" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2760:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2788:117:39", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2810:6:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "2826:4:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2832:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2822:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2822:13:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2837:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2818:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2818:86:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2806:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2806:99:39" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "2792:10:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2980:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "2982:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "2982:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2982:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "2923:10:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2935:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2920:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2920:34:39" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "2959:10:39" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2971:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2956:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2956:22:39" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "2917:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2917:62:39" + }, + "nodeType": "YulIf", + "src": "2914:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3018:2:39", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "3022:10:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3011:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3011:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3011:22:39" + } + ] + }, + "name": "allocate_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "2730:4:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "2739:6:39", + "type": "" + } + ], + "src": "2705:334:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3113:114:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3157:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "3159:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "3159:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3159:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3129:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3137:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3126:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3126:30:39" + }, + "nodeType": "YulIf", + "src": "3123:56:39" + }, + { + "nodeType": "YulAssignment", + "src": "3188:33:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3204:1:39", + "type": "", + "value": "5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3207:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3200:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3200:14:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3216:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3196:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3196:25:39" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "3188:4:39" + } + ] + } + ] + }, + "name": "array_allocation_size_array_uint256_dyn", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "3093:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "3104:4:39", + "type": "" + } + ], + "src": "3044:183:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3296:598:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3345:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3354:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3357:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3347:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3347:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3347:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3324:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3332:4:39", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3320:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3320:17:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3339:3:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3316:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3316:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3309:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3309:35:39" + }, + "nodeType": "YulIf", + "src": "3306:55:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3370:30:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3393:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3380:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "3380:20:39" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "3374:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3409:14:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3419:4:39", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "3413:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3432:71:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3499:2:39" + } + ], + "functionName": { + "name": "array_allocation_size_array_uint256_dyn", + "nodeType": "YulIdentifier", + "src": "3459:39:39" + }, + "nodeType": "YulFunctionCall", + "src": "3459:43:39" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "3443:15:39" + }, + "nodeType": "YulFunctionCall", + "src": "3443:60:39" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "3436:3:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3512:16:39", + "value": { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3525:3:39" + }, + "variables": [ + { + "name": "dst_1", + "nodeType": "YulTypedName", + "src": "3516:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3544:3:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3549:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3537:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3537:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3537:15:39" + }, + { + "nodeType": "YulAssignment", + "src": "3561:19:39", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3572:3:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3577:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3568:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3568:12:39" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3561:3:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3589:46:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3611:6:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3623:1:39", + "type": "", + "value": "5" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3626:2:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3619:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3619:10:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3607:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3607:23:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3632:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3603:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3603:32:39" + }, + "variables": [ + { + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "3593:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3663:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3672:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3675:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3665:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3665:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3665:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "3650:6:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3658:3:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3647:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3647:15:39" + }, + "nodeType": "YulIf", + "src": "3644:35:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3688:26:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3703:6:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3711:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3699:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3699:15:39" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "3692:3:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3779:86:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3800:3:39" + }, + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3818:3:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3805:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "3805:17:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3793:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3793:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3793:30:39" + }, + { + "nodeType": "YulAssignment", + "src": "3836:19:39", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3847:3:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3852:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3843:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3843:12:39" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3836:3:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3734:3:39" + }, + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "3739:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "3731:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3731:15:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "3747:23:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3749:19:39", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3760:3:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3765:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3756:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3756:12:39" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3749:3:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "3727:3:39", + "statements": [] + }, + "src": "3723:142:39" + }, + { + "nodeType": "YulAssignment", + "src": "3874:14:39", + "value": { + "name": "dst_1", + "nodeType": "YulIdentifier", + "src": "3883:5:39" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "3874:5:39" + } + ] + } + ] + }, + "name": "abi_decode_array_uint256_dyn", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3270:6:39", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3278:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "3286:5:39", + "type": "" + } + ], + "src": "3232:662:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3994:253:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4040:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4049:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4052:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4042:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4042:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4042:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4015:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4024:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4011:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4011:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4036:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4007:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4007:32:39" + }, + "nodeType": "YulIf", + "src": "4004:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4065:37:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4092:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4079:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4079:23:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4069:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4145:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4154:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4157:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4147:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4147:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4147:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4117:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4125:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4114:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "4114:30:39" + }, + "nodeType": "YulIf", + "src": "4111:50:39" + }, + { + "nodeType": "YulAssignment", + "src": "4170:71:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4213:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4224:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4209:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4209:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4233:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_uint256_dyn", + "nodeType": "YulIdentifier", + "src": "4180:28:39" + }, + "nodeType": "YulFunctionCall", + "src": "4180:61:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4170:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3960:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3971:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3983:6:39", + "type": "" + } + ], + "src": "3899:348:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4424:420:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4471:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4480:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4483:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4473:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4473:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4473:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4445:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4454:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4441:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4441:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4466:3:39", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4437:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4437:33:39" + }, + "nodeType": "YulIf", + "src": "4434:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "4496:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4519:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4506:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4506:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4496:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4538:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4565:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4576:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4561:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4561:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4548:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4548:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "4538:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4589:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4616:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4627:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4612:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4612:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4599:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4599:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "4589:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4640:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4667:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4678:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4663:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4663:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4650:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4650:32:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "4640:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4691:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4718:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4729:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4714:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4714:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4701:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4701:33:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "4691:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4743:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4770:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4781:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4766:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4766:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4753:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4753:33:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "4743:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4795:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4822:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4833:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4818:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4818:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4805:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4805:33:39" + }, + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "4795:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4342:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "4353:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4365:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "4373:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "4381:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "4389:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "4397:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "4405:6:39", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "4413:6:39", + "type": "" + } + ], + "src": "4252:592:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5050:597:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5097:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5106:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5109:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5099:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5099:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5099:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5071:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5080:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5067:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5067:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5092:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5063:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5063:33:39" + }, + "nodeType": "YulIf", + "src": "5060:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "5122:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5145:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5132:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5132:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5122:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5164:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5191:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5202:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5187:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5187:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5174:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5174:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "5164:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5215:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5242:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5253:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5238:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5238:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5225:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5225:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "5215:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5266:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5293:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5304:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5289:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5289:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5276:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5276:32:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "5266:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5317:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5344:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5355:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5340:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5340:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5327:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5327:33:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "5317:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5369:47:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5400:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5411:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5396:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5396:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5383:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5383:33:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5373:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5459:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5468:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5471:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5461:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5461:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5461:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5431:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5439:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "5428:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "5428:30:39" + }, + "nodeType": "YulIf", + "src": "5425:50:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5484:103:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5559:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5570:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5555:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5555:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5579:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_bytes_calldata_dyn_calldata", + "nodeType": "YulIdentifier", + "src": "5510:44:39" + }, + "nodeType": "YulFunctionCall", + "src": "5510:77:39" + }, + "variables": [ + { + "name": "value5_1", + "nodeType": "YulTypedName", + "src": "5488:8:39", + "type": "" + }, + { + "name": "value6_1", + "nodeType": "YulTypedName", + "src": "5498:8:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5596:18:39", + "value": { + "name": "value5_1", + "nodeType": "YulIdentifier", + "src": "5606:8:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "5596:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5623:18:39", + "value": { + "name": "value6_1", + "nodeType": "YulIdentifier", + "src": "5633:8:39" + }, + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "5623:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4968:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "4979:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4991:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "4999:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "5007:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "5015:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "5023:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "5031:6:39", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "5039:6:39", + "type": "" + } + ], + "src": "4849:798:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5747:92:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5757:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5769:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5780:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5765:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5765:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5757:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5799:9:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5824:6:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5817:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5817:14:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5810:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5810:22:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5792:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5792:41:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5792:41:39" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5716:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5727:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5738:4:39", + "type": "" + } + ], + "src": "5652:187:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5931:167:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5977:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5986:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5989:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5979:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5979:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5979:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5952:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5961:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5948:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5948:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5973:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5944:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5944:32:39" + }, + "nodeType": "YulIf", + "src": "5941:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "6002:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6025:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6012:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "6012:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6002:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6044:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6077:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6088:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6073:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6073:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "6054:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "6054:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "6044:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5889:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "5900:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5912:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "5920:6:39", + "type": "" + } + ], + "src": "5844:254:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6190:161:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6236:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6245:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6248:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6238:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6238:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6238:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6211:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6220:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6207:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6207:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6232:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "6203:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6203:32:39" + }, + "nodeType": "YulIf", + "src": "6200:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "6261:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6284:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6271:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "6271:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6261:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6303:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6330:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6341:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6326:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6326:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6313:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "6313:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "6303:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6148:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "6159:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6171:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "6179:6:39", + "type": "" + } + ], + "src": "6103:248:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6457:125:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6467:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6479:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6490:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6475:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6475:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6467:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6509:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6524:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6532:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6520:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6520:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6502:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6502:74:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6502:74:39" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6426:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6437:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6448:4:39", + "type": "" + } + ], + "src": "6356:226:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6649:1536:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6659:14:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6669:4:39", + "type": "", + "value": "0x1f" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "6663:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6719:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6728:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6731:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6721:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6721:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6721:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6700:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "6708:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6696:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6696:15:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "6713:3:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "6692:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6692:25:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "6685:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6685:33:39" + }, + "nodeType": "YulIf", + "src": "6682:53:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6744:30:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6767:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6754:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "6754:20:39" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "6748:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6783:14:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6793:4:39", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_3", + "nodeType": "YulTypedName", + "src": "6787:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6806:71:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "6873:2:39" + } + ], + "functionName": { + "name": "array_allocation_size_array_uint256_dyn", + "nodeType": "YulIdentifier", + "src": "6833:39:39" + }, + "nodeType": "YulFunctionCall", + "src": "6833:43:39" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "6817:15:39" + }, + "nodeType": "YulFunctionCall", + "src": "6817:60:39" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "6810:3:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6886:16:39", + "value": { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6899:3:39" + }, + "variables": [ + { + "name": "dst_1", + "nodeType": "YulTypedName", + "src": "6890:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6918:3:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "6923:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6911:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6911:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6911:15:39" + }, + { + "nodeType": "YulAssignment", + "src": "6935:19:39", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6946:3:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "6951:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6942:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6942:12:39" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6935:3:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6963:46:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6985:6:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6997:1:39", + "type": "", + "value": "5" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "7000:2:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "6993:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6993:10:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6981:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6981:23:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "7006:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6977:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6977:32:39" + }, + "variables": [ + { + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "6967:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7037:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7046:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7049:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7039:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7039:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7039:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "7024:6:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7032:3:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7021:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "7021:15:39" + }, + "nodeType": "YulIf", + "src": "7018:35:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7062:26:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7077:6:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "7085:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7073:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7073:15:39" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "7066:3:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7153:1003:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7167:36:39", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "7199:3:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7186:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "7186:17:39" + }, + "variables": [ + { + "name": "innerOffset", + "nodeType": "YulTypedName", + "src": "7171:11:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7216:28:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7226:18:39", + "type": "", + "value": "0xffffffffffffffff" + }, + "variables": [ + { + "name": "_4", + "nodeType": "YulTypedName", + "src": "7220:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7292:74:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7310:11:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7320:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_5", + "nodeType": "YulTypedName", + "src": "7314:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "_5", + "nodeType": "YulIdentifier", + "src": "7345:2:39" + }, + { + "name": "_5", + "nodeType": "YulIdentifier", + "src": "7349:2:39" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7338:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7338:14:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7338:14:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "innerOffset", + "nodeType": "YulIdentifier", + "src": "7263:11:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "7276:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7260:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "7260:19:39" + }, + "nodeType": "YulIf", + "src": "7257:109:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7379:34:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7393:6:39" + }, + { + "name": "innerOffset", + "nodeType": "YulIdentifier", + "src": "7401:11:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7389:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7389:24:39" + }, + "variables": [ + { + "name": "_6", + "nodeType": "YulTypedName", + "src": "7383:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7471:74:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7489:11:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7499:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_7", + "nodeType": "YulTypedName", + "src": "7493:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "_7", + "nodeType": "YulIdentifier", + "src": "7524:2:39" + }, + { + "name": "_7", + "nodeType": "YulIdentifier", + "src": "7528:2:39" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7517:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7517:14:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7517:14:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_6", + "nodeType": "YulIdentifier", + "src": "7444:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7448:2:39", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7440:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7440:11:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7453:3:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "7436:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7436:21:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "7429:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7429:29:39" + }, + "nodeType": "YulIf", + "src": "7426:119:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7558:35:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_6", + "nodeType": "YulIdentifier", + "src": "7585:2:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "7589:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7581:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7581:11:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7568:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "7568:25:39" + }, + "variables": [ + { + "name": "_8", + "nodeType": "YulTypedName", + "src": "7562:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7606:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7616:2:39", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "_9", + "nodeType": "YulTypedName", + "src": "7610:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7645:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "7647:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "7647:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7647:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "7637:2:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "7641:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7634:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "7634:10:39" + }, + "nodeType": "YulIf", + "src": "7631:36:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7680:125:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "7723:2:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "7727:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7719:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7719:11:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7732:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "7715:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7715:84:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "7801:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7711:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7711:93:39" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "7695:15:39" + }, + "nodeType": "YulFunctionCall", + "src": "7695:110:39" + }, + "variables": [ + { + "name": "array_1", + "nodeType": "YulTypedName", + "src": "7684:7:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "7825:7:39" + }, + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "7834:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7818:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7818:19:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7818:19:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7895:77:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7913:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7924:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_10", + "nodeType": "YulTypedName", + "src": "7917:3:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "_10", + "nodeType": "YulIdentifier", + "src": "7949:3:39" + }, + { + "name": "_10", + "nodeType": "YulIdentifier", + "src": "7954:3:39" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7942:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7942:16:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7942:16:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_6", + "nodeType": "YulIdentifier", + "src": "7864:2:39" + }, + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "7868:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7860:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7860:11:39" + }, + { + "name": "_9", + "nodeType": "YulIdentifier", + "src": "7873:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7856:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7856:20:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7878:3:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7853:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "7853:29:39" + }, + "nodeType": "YulIf", + "src": "7850:122:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "8002:7:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "8011:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7998:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7998:16:39" + }, + { + "arguments": [ + { + "name": "_6", + "nodeType": "YulIdentifier", + "src": "8020:2:39" + }, + { + "name": "_9", + "nodeType": "YulIdentifier", + "src": "8024:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8016:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8016:11:39" + }, + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "8029:2:39" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "7985:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "7985:47:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7985:47:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "8060:7:39" + }, + { + "name": "_8", + "nodeType": "YulIdentifier", + "src": "8069:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8056:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8056:16:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "8074:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8052:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8052:25:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8079:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8045:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8045:36:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8045:36:39" + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "8101:3:39" + }, + { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "8106:7:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8094:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8094:20:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8094:20:39" + }, + { + "nodeType": "YulAssignment", + "src": "8127:19:39", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "8138:3:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "8143:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8134:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8134:12:39" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "8127:3:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "7108:3:39" + }, + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "7113:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "7105:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "7105:15:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "7121:23:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7123:19:39", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "7134:3:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "7139:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7130:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7130:12:39" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "7123:3:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "7101:3:39", + "statements": [] + }, + "src": "7097:1059:39" + }, + { + "nodeType": "YulAssignment", + "src": "8165:14:39", + "value": { + "name": "dst_1", + "nodeType": "YulIdentifier", + "src": "8174:5:39" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "8165:5:39" + } + ] + } + ] + }, + "name": "abi_decode_array_bytes_dyn", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "6623:6:39", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "6631:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "6639:5:39", + "type": "" + } + ], + "src": "6587:1598:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8296:943:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "8342:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8351:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8354:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8344:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8344:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8344:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8317:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8326:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8313:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8313:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8338:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "8309:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8309:32:39" + }, + "nodeType": "YulIf", + "src": "8306:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8367:37:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8394:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8381:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8381:23:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8371:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8413:28:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8423:18:39", + "type": "", + "value": "0xffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "8417:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8468:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8477:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8480:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8470:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8470:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8470:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8456:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "8464:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8453:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "8453:14:39" + }, + "nodeType": "YulIf", + "src": "8450:34:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8493:32:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8507:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8518:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8503:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8503:22:39" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "8497:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8565:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8574:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8577:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8567:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8567:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8567:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8545:7:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8554:2:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8541:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8541:16:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8559:4:39", + "type": "", + "value": "0xc0" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "8537:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8537:27:39" + }, + "nodeType": "YulIf", + "src": "8534:47:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8590:35:39", + "value": { + "arguments": [], + "functionName": { + "name": "allocate_memory_5709", + "nodeType": "YulIdentifier", + "src": "8603:20:39" + }, + "nodeType": "YulFunctionCall", + "src": "8603:22:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8594:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8641:5:39" + }, + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8661:2:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8648:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8648:16:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8634:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8634:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8634:31:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8685:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8692:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8681:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8681:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8714:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8718:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8710:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8710:11:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8697:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8697:25:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8674:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8674:49:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8674:49:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8732:41:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8765:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8769:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8761:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8761:11:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8748:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8748:25:39" + }, + "variables": [ + { + "name": "offset_1", + "nodeType": "YulTypedName", + "src": "8736:8:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8802:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8811:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8814:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8804:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8804:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8804:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "8788:8:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "8798:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8785:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "8785:16:39" + }, + "nodeType": "YulIf", + "src": "8782:36:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8838:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8845:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8834:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8834:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8883:2:39" + }, + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "8887:8:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8879:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8879:17:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8898:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_uint256_dyn", + "nodeType": "YulIdentifier", + "src": "8850:28:39" + }, + "nodeType": "YulFunctionCall", + "src": "8850:56:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8827:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8827:80:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8827:80:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8927:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8934:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8923:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8923:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8956:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8960:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8952:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8952:11:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8939:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8939:25:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8916:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8916:49:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8916:49:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8985:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8992:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8981:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8981:15:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "9015:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9019:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9011:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9011:12:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8998:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "8998:26:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8974:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8974:51:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8974:51:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "9034:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "9067:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9071:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9063:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9063:12:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9050:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9050:26:39" + }, + "variables": [ + { + "name": "offset_2", + "nodeType": "YulTypedName", + "src": "9038:8:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9105:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9114:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9117:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9107:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9107:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9107:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_2", + "nodeType": "YulIdentifier", + "src": "9091:8:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "9101:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "9088:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "9088:16:39" + }, + "nodeType": "YulIf", + "src": "9085:36:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9141:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9148:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9137:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9137:15:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "9185:2:39" + }, + { + "name": "offset_2", + "nodeType": "YulIdentifier", + "src": "9189:8:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9181:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9181:17:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9200:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_bytes_dyn", + "nodeType": "YulIdentifier", + "src": "9154:26:39" + }, + "nodeType": "YulFunctionCall", + "src": "9154:54:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9130:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9130:79:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9130:79:39" + }, + { + "nodeType": "YulAssignment", + "src": "9218:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9228:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9218:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_struct$_RecollateralizeDEI_$1556_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8262:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "8273:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "8285:6:39", + "type": "" + } + ], + "src": "8190:1049:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9314:110:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9360:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9369:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9372:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9362:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9362:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9362:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9335:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9344:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9331:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9331:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9356:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "9327:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9327:32:39" + }, + "nodeType": "YulIf", + "src": "9324:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "9385:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9408:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9395:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9395:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9385:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9280:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "9291:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9303:6:39", + "type": "" + } + ], + "src": "9244:180:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9638:699:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9685:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9694:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9697:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9687:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9687:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9687:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9659:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9668:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9655:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9655:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9680:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "9651:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9651:33:39" + }, + "nodeType": "YulIf", + "src": "9648:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "9710:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9733:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9720:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9720:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9710:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "9752:46:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9783:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9794:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9779:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9779:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9766:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9766:32:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9756:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "9807:28:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9817:18:39", + "type": "", + "value": "0xffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "9811:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9862:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9871:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9874:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9864:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9864:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9864:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9850:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "9858:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "9847:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "9847:14:39" + }, + "nodeType": "YulIf", + "src": "9844:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "9887:71:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9930:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9941:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9926:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9926:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9950:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_uint256_dyn", + "nodeType": "YulIdentifier", + "src": "9897:28:39" + }, + "nodeType": "YulFunctionCall", + "src": "9897:61:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "9887:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9967:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9994:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10005:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9990:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9990:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9977:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "9977:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "9967:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10018:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10045:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10056:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10041:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10041:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10028:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "10028:32:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "10018:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "10069:49:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10102:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10113:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10098:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10098:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10085:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "10085:33:39" + }, + "variables": [ + { + "name": "offset_1", + "nodeType": "YulTypedName", + "src": "10073:8:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10147:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10156:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10159:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10149:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10149:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10149:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "10133:8:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "10143:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "10130:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "10130:16:39" + }, + "nodeType": "YulIf", + "src": "10127:36:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "10172:105:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10247:9:39" + }, + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "10258:8:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10243:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10243:24:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10269:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_bytes_calldata_dyn_calldata", + "nodeType": "YulIdentifier", + "src": "10198:44:39" + }, + "nodeType": "YulFunctionCall", + "src": "10198:79:39" + }, + "variables": [ + { + "name": "value4_1", + "nodeType": "YulTypedName", + "src": "10176:8:39", + "type": "" + }, + { + "name": "value5_1", + "nodeType": "YulTypedName", + "src": "10186:8:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10286:18:39", + "value": { + "name": "value4_1", + "nodeType": "YulIdentifier", + "src": "10296:8:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "10286:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10313:18:39", + "value": { + "name": "value5_1", + "nodeType": "YulIdentifier", + "src": "10323:8:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "10313:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_memory_ptrt_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9564:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "9575:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9587:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "9595:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "9603:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "9611:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "9619:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "9627:6:39", + "type": "" + } + ], + "src": "9429:908:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10446:224:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "10492:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10501:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10504:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10494:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10494:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10494:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10467:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10476:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10463:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10463:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10488:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "10459:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10459:32:39" + }, + "nodeType": "YulIf", + "src": "10456:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "10517:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10546:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "10527:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "10527:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "10517:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10565:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10592:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10603:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10588:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10588:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10575:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "10575:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "10565:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10616:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10649:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10660:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10645:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10645:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "10626:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "10626:38:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "10616:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10396:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "10407:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "10419:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "10427:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "10435:6:39", + "type": "" + } + ], + "src": "10342:328:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10859:545:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "10906:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10915:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10918:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10908:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10908:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10908:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10880:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10889:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10876:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10876:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10901:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "10872:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10872:33:39" + }, + "nodeType": "YulIf", + "src": "10869:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "10931:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10954:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10941:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "10941:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "10931:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10973:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11000:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11011:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10996:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10996:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10983:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "10983:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "10973:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11024:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11051:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11062:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11047:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11047:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "11034:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "11034:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "11024:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11075:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11102:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11113:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11098:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11098:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "11085:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "11085:32:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "11075:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "11126:47:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11157:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11168:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11153:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11153:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "11140:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "11140:33:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "11130:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11216:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11225:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11228:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "11218:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11218:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11218:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11188:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11196:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "11185:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "11185:30:39" + }, + "nodeType": "YulIf", + "src": "11182:50:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "11241:103:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11316:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11327:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11312:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11312:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11336:7:39" + } + ], + "functionName": { + "name": "abi_decode_array_bytes_calldata_dyn_calldata", + "nodeType": "YulIdentifier", + "src": "11267:44:39" + }, + "nodeType": "YulFunctionCall", + "src": "11267:77:39" + }, + "variables": [ + { + "name": "value4_1", + "nodeType": "YulTypedName", + "src": "11245:8:39", + "type": "" + }, + { + "name": "value5_1", + "nodeType": "YulTypedName", + "src": "11255:8:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11353:18:39", + "value": { + "name": "value4_1", + "nodeType": "YulIdentifier", + "src": "11363:8:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "11353:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11380:18:39", + "value": { + "name": "value5_1", + "nodeType": "YulIdentifier", + "src": "11390:8:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "11380:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10785:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "10796:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "10808:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "10816:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "10824:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "10832:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "10840:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "10848:6:39", + "type": "" + } + ], + "src": "10675:729:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11441:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11458:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11461:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11451:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11451:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11451:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11555:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11558:4:39", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11548:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11548:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11548:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11579:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11582:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "11572:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11572:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11572:15:39" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "11409:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11646:80:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "11673:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "11675:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "11675:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11675:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11662:1:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11669:1:39" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "11665:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11665:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "11659:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "11659:13:39" + }, + "nodeType": "YulIf", + "src": "11656:39:39" + }, + { + "nodeType": "YulAssignment", + "src": "11704:16:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11715:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11718:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11711:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11711:9:39" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "11704:3:39" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "11629:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "11632:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "11638:3:39", + "type": "" + } + ], + "src": "11598:128:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11905:321:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11922:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11933:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11915:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11915:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11915:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11956:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11967:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11952:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11952:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11972:2:39", + "type": "", + "value": "91" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11945:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11945:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11945:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11995:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12006:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11991:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11991:18:39" + }, + { + "hexValue": "504f4f4c3a3a636f6c6c656374526564656d7074696f6e3a204d757374207761", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12011:34:39", + "type": "", + "value": "POOL::collectRedemption: Must wa" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11984:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11984:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11984:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12066:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12077:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12062:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12062:18:39" + }, + { + "hexValue": "697420666f7220726564656d7074696f6e5f64656c617920626c6f636b732062", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12082:34:39", + "type": "", + "value": "it for redemption_delay blocks b" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12055:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12055:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12055:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12137:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12148:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12133:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12133:19:39" + }, + { + "hexValue": "65666f726520636f6c6c656374696e6720726564656d7074696f6e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12154:29:39", + "type": "", + "value": "efore collecting redemption" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12126:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12126:58:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12126:58:39" + }, + { + "nodeType": "YulAssignment", + "src": "12193:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12205:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12216:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12201:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12201:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12193:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_38c9fd1b67df6e999cac6aaf315cc13e0fa4fc296b57f92466d27a378c17f081__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "11882:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "11896:4:39", + "type": "" + } + ], + "src": "11731:495:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12280:76:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "12302:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "12304:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "12304:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12304:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "12296:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "12299:1:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "12293:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "12293:8:39" + }, + "nodeType": "YulIf", + "src": "12290:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "12333:17:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "12345:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "12348:1:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "12341:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12341:9:39" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "12333:4:39" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "12262:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "12265:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "12271:4:39", + "type": "" + } + ], + "src": "12231:125:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12535:175:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12552:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12563:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12545:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12545:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12545:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12586:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12597:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12582:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12582:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12602:2:39", + "type": "", + "value": "25" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12575:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12575:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12575:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12625:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12636:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12621:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12621:18:39" + }, + { + "hexValue": "504f4f4c3a3a52656465656d696e6720697320706175736564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12641:27:39", + "type": "", + "value": "POOL::Redeeming is paused" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12614:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12614:55:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12614:55:39" + }, + { + "nodeType": "YulAssignment", + "src": "12678:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12690:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12701:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12686:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12686:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12678:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_de458c40ee20c89c9807b7a8a5908e3319b480e8b007f55d3d683bc68bb7186e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12512:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "12526:4:39", + "type": "" + } + ], + "src": "12361:349:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12796:103:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "12842:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12851:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12854:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "12844:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12844:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12844:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "12817:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12826:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "12813:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12813:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12838:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "12809:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12809:32:39" + }, + "nodeType": "YulIf", + "src": "12806:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "12867:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12883:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "12877:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "12877:16:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "12867:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12762:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "12773:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "12785:6:39", + "type": "" + } + ], + "src": "12715:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13078:179:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13095:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13106:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13088:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13088:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13088:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13129:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13140:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13125:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13125:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13145:2:39", + "type": "", + "value": "29" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13118:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13118:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13118:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13168:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13179:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13164:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13164:18:39" + }, + { + "hexValue": "436f6c6c61746572616c20726174696f206d757374206265203d3d2031", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13184:31:39", + "type": "", + "value": "Collateral ratio must be == 1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13157:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13157:59:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13157:59:39" + }, + { + "nodeType": "YulAssignment", + "src": "13225:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13237:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13248:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13233:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13233:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13225:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_c70433350355bf0543fc06a466fe44bcb01281d5a63b8bb87c74c17650f3e4c7__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13055:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13069:4:39", + "type": "" + } + ], + "src": "12904:353:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13436:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13453:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13464:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13446:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13446:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13446:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13487:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13498:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13483:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13483:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13503:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13476:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13476:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13476:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13526:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13537:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13522:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13522:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e6174", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13542:34:39", + "type": "", + "value": "POOL::mintAlgorithmicDEI: signat" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13515:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13515:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13515:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13597:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13608:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13593:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13593:18:39" + }, + { + "hexValue": "75726520697320657870697265642e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13613:17:39", + "type": "", + "value": "ure is expired." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13586:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13586:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13586:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "13640:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13652:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13663:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13648:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13648:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13640:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0553f3220b1c65f13a1a0bcfbae12cc9d57080d375095d8011e479f9a164d51f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13413:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13427:4:39", + "type": "" + } + ], + "src": "13262:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13881:257:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13898:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13911:2:39", + "type": "", + "value": "96" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13915:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "13907:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13907:15:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13924:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "13903:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13903:88:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13891:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13891:101:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13891:101:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14012:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14017:2:39", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14008:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14008:12:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "14022:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14001:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14001:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14001:28:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14049:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14054:2:39", + "type": "", + "value": "52" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14045:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14045:12:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "14059:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14038:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14038:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14038:28:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14086:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14091:2:39", + "type": "", + "value": "84" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14082:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14082:12:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "14096:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14075:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14075:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14075:28:39" + }, + { + "nodeType": "YulAssignment", + "src": "14112:20:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14123:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14128:3:39", + "type": "", + "value": "116" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14119:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14119:13:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "14112:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "13833:3:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "13838:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "13846:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "13854:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13862:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "13873:3:39", + "type": "" + } + ], + "src": "13678:460:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14209:259:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14226:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14231:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14219:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14219:19:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14219:19:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14264:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14269:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14260:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14260:14:39" + }, + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "14276:5:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14283:6:39" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "14247:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "14247:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14247:43:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14314:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14319:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14310:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14310:16:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14328:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14306:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14306:27:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14335:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14299:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14299:38:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14299:38:39" + }, + { + "nodeType": "YulAssignment", + "src": "14346:116:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14361:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14374:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14382:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14370:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14370:15:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14387:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "14366:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14366:88:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14357:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14357:98:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14457:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14353:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14353:109:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "14346:3:39" + } + ] + } + ] + }, + "name": "abi_encode_bytes_calldata", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "start", + "nodeType": "YulTypedName", + "src": "14178:5:39", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "14185:6:39", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "14193:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "14201:3:39", + "type": "" + } + ], + "src": "14143:325:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14682:1170:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14692:32:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14710:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14721:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14706:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14706:18:39" + }, + "variables": [ + { + "name": "tail_1", + "nodeType": "YulTypedName", + "src": "14696:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14740:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "14751:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14733:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14733:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14733:25:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "14767:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14777:2:39", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "14771:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14799:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "14810:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14795:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14795:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14815:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14788:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14788:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14788:30:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "14827:17:39", + "value": { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "14838:6:39" + }, + "variables": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "14831:3:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "14860:6:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "14868:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14853:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14853:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14853:22:39" + }, + { + "nodeType": "YulAssignment", + "src": "14884:25:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14895:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14906:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14891:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14891:18:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14884:3:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "14918:53:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14940:9:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14955:1:39", + "type": "", + "value": "5" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "14958:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "14951:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14951:14:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14936:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14936:30:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14968:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14932:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14932:39:39" + }, + "variables": [ + { + "name": "tail_2", + "nodeType": "YulTypedName", + "src": "14922:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "14980:20:39", + "value": { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "14994:6:39" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "14984:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15009:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15018:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "15013:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15077:746:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15098:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "15111:6:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15119:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15107:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15107:22:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15131:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15103:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15103:95:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15091:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15091:108:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15091:108:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15212:46:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "15251:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "15238:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "15238:20:39" + }, + "variables": [ + { + "name": "rel_offset_of_tail", + "nodeType": "YulTypedName", + "src": "15216:18:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15408:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15417:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15420:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "15410:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15410:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15410:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "rel_offset_of_tail", + "nodeType": "YulIdentifier", + "src": "15285:18:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier", + "src": "15313:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "15313:14:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "15329:6:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15309:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15309:27:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15338:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15305:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15305:100:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "15281:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15281:125:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "15274:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15274:133:39" + }, + "nodeType": "YulIf", + "src": "15271:153:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15437:44:39", + "value": { + "arguments": [ + { + "name": "rel_offset_of_tail", + "nodeType": "YulIdentifier", + "src": "15454:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "15474:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15450:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15450:31:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "15441:5:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15494:33:39", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15521:5:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "15508:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "15508:19:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "15498:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15574:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15583:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15586:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "15576:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15576:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15576:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "15546:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15554:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "15543:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "15543:30:39" + }, + "nodeType": "YulIf", + "src": "15540:50:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15647:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15656:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15659:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "15649:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15649:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15649:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "15610:6:39" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier", + "src": "15622:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "15622:14:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "15638:6:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15618:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15618:27:39" + } + ], + "functionName": { + "name": "sgt", + "nodeType": "YulIdentifier", + "src": "15606:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15606:40:39" + }, + "nodeType": "YulIf", + "src": "15603:60:39" + }, + { + "nodeType": "YulAssignment", + "src": "15676:67:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15716:5:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "15723:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15712:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15712:14:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "15728:6:39" + }, + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "15736:6:39" + } + ], + "functionName": { + "name": "abi_encode_bytes_calldata", + "nodeType": "YulIdentifier", + "src": "15686:25:39" + }, + "nodeType": "YulFunctionCall", + "src": "15686:57:39" + }, + "variableNames": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "15676:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "15756:25:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "15770:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "15778:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15766:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15766:15:39" + }, + "variableNames": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "15756:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "15794:19:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15805:3:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "15810:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15801:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15801:12:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15794:3:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "15039:1:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "15042:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "15036:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "15036:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "15050:18:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15052:14:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "15061:1:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15064:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15057:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15057:9:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "15052:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "15032:3:39", + "statements": [] + }, + "src": "15028:795:39" + }, + { + "nodeType": "YulAssignment", + "src": "15832:14:39", + "value": { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "15840:6:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15832:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "14635:9:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "14646:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "14654:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "14662:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "14673:4:39", + "type": "" + } + ], + "src": "14473:1379:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15935:199:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "15981:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15990:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15993:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "15983:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15983:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15983:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "15956:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15965:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15952:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15952:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15977:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "15948:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15948:32:39" + }, + "nodeType": "YulIf", + "src": "15945:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "16006:29:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16025:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "16019:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "16019:16:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16010:5:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16088:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16097:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16100:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "16090:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16090:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16090:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16057:5:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16078:5:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "16071:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16071:13:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "16064:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16064:21:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "16054:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "16054:32:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "16047:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16047:40:39" + }, + "nodeType": "YulIf", + "src": "16044:60:39" + }, + { + "nodeType": "YulAssignment", + "src": "16113:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16123:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "16113:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bool_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15901:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "15912:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "15924:6:39", + "type": "" + } + ], + "src": "15857:277:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16313:228:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16330:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16341:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16323:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16323:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16323:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16364:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16375:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16360:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16360:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16380:2:39", + "type": "", + "value": "38" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16353:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16353:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16353:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16403:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16414:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16399:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16399:18:39" + }, + { + "hexValue": "504f4f4c3a3a72656465656d3174314445493a20696e76616c6964207369676e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "16419:34:39", + "type": "", + "value": "POOL::redeem1t1DEI: invalid sign" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16392:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16392:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16392:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16474:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16485:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16470:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16470:18:39" + }, + { + "hexValue": "617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "16490:8:39", + "type": "", + "value": "atures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16463:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16463:36:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16463:36:39" + }, + { + "nodeType": "YulAssignment", + "src": "16508:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16520:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16531:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16516:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16516:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "16508:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3b8d4b54db08ed890798fdc55ba1c410b1b90a23a79193c7486d04051b31717b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "16290:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "16304:4:39", + "type": "" + } + ], + "src": "16139:402:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16610:418:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16620:16:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16635:1:39", + "type": "", + "value": "1" + }, + "variables": [ + { + "name": "power_1", + "nodeType": "YulTypedName", + "src": "16624:7:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16645:16:39", + "value": { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "16654:7:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "16645:5:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16670:13:39", + "value": { + "name": "_base", + "nodeType": "YulIdentifier", + "src": "16678:5:39" + }, + "variableNames": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16670:4:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16734:288:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "16839:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "16841:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "16841:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16841:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16754:4:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16764:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16832:4:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "16760:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16760:77:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "16751:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "16751:87:39" + }, + "nodeType": "YulIf", + "src": "16748:113:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16900:29:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16902:25:39", + "value": { + "arguments": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "16915:5:39" + }, + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16922:4:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "16911:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16911:16:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "16902:5:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "16881:8:39" + }, + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "16891:7:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "16877:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16877:22:39" + }, + "nodeType": "YulIf", + "src": "16874:55:39" + }, + { + "nodeType": "YulAssignment", + "src": "16942:23:39", + "value": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16954:4:39" + }, + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16960:4:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "16950:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16950:15:39" + }, + "variableNames": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "16942:4:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16978:34:39", + "value": { + "arguments": [ + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "16994:7:39" + }, + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17003:8:39" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "16990:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16990:22:39" + }, + "variableNames": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "16978:8:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "16703:8:39" + }, + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "16713:7:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "16700:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "16700:21:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "16722:3:39", + "statements": [] + }, + "pre": { + "nodeType": "YulBlock", + "src": "16696:3:39", + "statements": [] + }, + "src": "16692:330:39" + } + ] + }, + "name": "checked_exp_helper", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "_base", + "nodeType": "YulTypedName", + "src": "16574:5:39", + "type": "" + }, + { + "name": "exponent", + "nodeType": "YulTypedName", + "src": "16581:8:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "power", + "nodeType": "YulTypedName", + "src": "16594:5:39", + "type": "" + }, + { + "name": "base", + "nodeType": "YulTypedName", + "src": "16601:4:39", + "type": "" + } + ], + "src": "16546:482:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17092:807:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "17130:52:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17144:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17153:1:39", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17144:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "17167:5:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17112:8:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "17105:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17105:16:39" + }, + "nodeType": "YulIf", + "src": "17102:80:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17215:52:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17229:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17238:1:39", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17229:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "17252:5:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17201:4:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "17194:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17194:12:39" + }, + "nodeType": "YulIf", + "src": "17191:76:39" + }, + { + "cases": [ + { + "body": { + "nodeType": "YulBlock", + "src": "17303:52:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17317:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17326:1:39", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17317:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "17340:5:39" + } + ] + }, + "nodeType": "YulCase", + "src": "17296:59:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17301:1:39", + "type": "", + "value": "1" + } + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17371:123:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "17406:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "17408:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "17408:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17408:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17391:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17401:3:39", + "type": "", + "value": "255" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "17388:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17388:17:39" + }, + "nodeType": "YulIf", + "src": "17385:43:39" + }, + { + "nodeType": "YulAssignment", + "src": "17441:25:39", + "value": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17454:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17464:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "17450:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17450:16:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17441:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "17479:5:39" + } + ] + }, + "nodeType": "YulCase", + "src": "17364:130:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17369:1:39", + "type": "", + "value": "2" + } + } + ], + "expression": { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17283:4:39" + }, + "nodeType": "YulSwitch", + "src": "17276:218:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17592:70:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17606:28:39", + "value": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17619:4:39" + }, + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17625:8:39" + } + ], + "functionName": { + "name": "exp", + "nodeType": "YulIdentifier", + "src": "17615:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17615:19:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17606:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "17647:5:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17516:4:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17522:2:39", + "type": "", + "value": "11" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "17513:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17513:12:39" + }, + { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17530:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17540:2:39", + "type": "", + "value": "78" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "17527:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17527:16:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "17509:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17509:35:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17553:4:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17559:3:39", + "type": "", + "value": "307" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "17550:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17550:13:39" + }, + { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17568:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17578:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "17565:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17565:16:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "17546:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17546:36:39" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "17506:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17506:77:39" + }, + "nodeType": "YulIf", + "src": "17503:159:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "17671:57:39", + "value": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "17713:4:39" + }, + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "17719:8:39" + } + ], + "functionName": { + "name": "checked_exp_helper", + "nodeType": "YulIdentifier", + "src": "17694:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "17694:34:39" + }, + "variables": [ + { + "name": "power_1", + "nodeType": "YulTypedName", + "src": "17675:7:39", + "type": "" + }, + { + "name": "base_1", + "nodeType": "YulTypedName", + "src": "17684:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17833:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "17835:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "17835:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17835:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "17743:7:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17756:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "base_1", + "nodeType": "YulIdentifier", + "src": "17824:6:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "17752:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17752:79:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "17740:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "17740:92:39" + }, + "nodeType": "YulIf", + "src": "17737:118:39" + }, + { + "nodeType": "YulAssignment", + "src": "17864:29:39", + "value": { + "arguments": [ + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "17877:7:39" + }, + { + "name": "base_1", + "nodeType": "YulIdentifier", + "src": "17886:6:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "17873:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17873:20:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17864:5:39" + } + ] + } + ] + }, + "name": "checked_exp_unsigned", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "base", + "nodeType": "YulTypedName", + "src": "17063:4:39", + "type": "" + }, + { + "name": "exponent", + "nodeType": "YulTypedName", + "src": "17069:8:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "power", + "nodeType": "YulTypedName", + "src": "17082:5:39", + "type": "" + } + ], + "src": "17033:866:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17974:61:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17984:45:39", + "value": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "18014:4:39" + }, + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "18020:8:39" + } + ], + "functionName": { + "name": "checked_exp_unsigned", + "nodeType": "YulIdentifier", + "src": "17993:20:39" + }, + "nodeType": "YulFunctionCall", + "src": "17993:36:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "17984:5:39" + } + ] + } + ] + }, + "name": "checked_exp_t_uint256_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "base", + "nodeType": "YulTypedName", + "src": "17945:4:39", + "type": "" + }, + { + "name": "exponent", + "nodeType": "YulTypedName", + "src": "17951:8:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "power", + "nodeType": "YulTypedName", + "src": "17964:5:39", + "type": "" + } + ], + "src": "17904:131:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18086:228:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "18117:168:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18138:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18141:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18131:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18131:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18131:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18239:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18242:4:39", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18232:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18232:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18232:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18267:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18270:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "18260:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18260:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18260:15:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "18106:1:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "18099:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18099:9:39" + }, + "nodeType": "YulIf", + "src": "18096:189:39" + }, + { + "nodeType": "YulAssignment", + "src": "18294:14:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "18303:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "18306:1:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "18299:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18299:9:39" + }, + "variableNames": [ + { + "name": "r", + "nodeType": "YulIdentifier", + "src": "18294:1:39" + } + ] + } + ] + }, + "name": "checked_div_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "18071:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "18074:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "r", + "nodeType": "YulTypedName", + "src": "18080:1:39", + "type": "" + } + ], + "src": "18040:274:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18448:119:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "18458:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18470:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18481:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18466:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18466:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "18458:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18500:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "18511:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18493:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18493:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18493:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18538:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18549:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18534:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18534:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "18554:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18527:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18527:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18527:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18409:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "18420:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "18428:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "18439:4:39", + "type": "" + } + ], + "src": "18319:248:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18624:176:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "18743:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "18745:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "18745:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18745:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "18655:1:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "18648:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18648:9:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "18641:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18641:17:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "18663:1:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18670:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "18738:1:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "18666:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18666:74:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "18660:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "18660:81:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "18637:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18637:105:39" + }, + "nodeType": "YulIf", + "src": "18634:131:39" + }, + { + "nodeType": "YulAssignment", + "src": "18774:20:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "18789:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "18792:1:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "18785:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18785:9:39" + }, + "variableNames": [ + { + "name": "product", + "nodeType": "YulIdentifier", + "src": "18774:7:39" + } + ] + } + ] + }, + "name": "checked_mul_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "18603:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "18606:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nodeType": "YulTypedName", + "src": "18612:7:39", + "type": "" + } + ], + "src": "18572:228:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18979:179:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18996:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19007:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18989:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18989:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18989:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19030:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19041:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19026:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19026:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19046:2:39", + "type": "", + "value": "29" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19019:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19019:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19019:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19069:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19080:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19065:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19065:18:39" + }, + { + "hexValue": "4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "19085:31:39", + "type": "", + "value": "Not enough collateral in pool" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19058:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19058:59:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19058:59:39" + }, + { + "nodeType": "YulAssignment", + "src": "19126:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19138:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19149:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19134:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19134:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19126:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_f52391ebd610d5d9d518357ceeaf45367429ac1fd3150210dcaba2450d5bcce8__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18956:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "18970:4:39", + "type": "" + } + ], + "src": "18805:353:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19292:168:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19302:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19314:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19325:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19310:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19310:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19302:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19344:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "19359:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19367:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "19355:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19355:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19337:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19337:74:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19337:74:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19431:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19442:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19427:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19427:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "19447:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19420:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19420:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19420:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "19253:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "19264:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "19272:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "19283:4:39", + "type": "" + } + ], + "src": "19163:297:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19639:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19656:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19667:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19649:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19649:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19649:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19690:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19701:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19686:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19686:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19706:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19679:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19679:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19679:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19729:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19740:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19725:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19725:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "19745:34:39", + "type": "", + "value": "AccessControl: sender must be an" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19718:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19718:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19718:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19800:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19811:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19796:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19796:18:39" + }, + { + "hexValue": "2061646d696e20746f206772616e74", + "kind": "string", + "nodeType": "YulLiteral", + "src": "19816:17:39", + "type": "", + "value": " admin to grant" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19789:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19789:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19789:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "19843:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19855:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19866:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19851:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19851:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19843:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "19616:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "19630:4:39", + "type": "" + } + ], + "src": "19465:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20055:173:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20072:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20083:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20065:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20065:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20065:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20106:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20117:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20102:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20102:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20122:2:39", + "type": "", + "value": "23" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20095:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20095:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20095:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20145:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20156:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20141:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20141:18:39" + }, + { + "hexValue": "504f4f4c3a3a4d696e74696e6720697320706175736564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "20161:25:39", + "type": "", + "value": "POOL::Minting is paused" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20134:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20134:53:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20134:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "20196:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20208:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20219:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20204:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20204:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20196:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_98984f103b51115a1419edfc23f41285c32977e7b02cc32e067bba007d26b4f9__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "20032:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20046:4:39", + "type": "" + } + ], + "src": "19881:347:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20407:179:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20424:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20435:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20417:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20417:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20417:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20458:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20469:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20454:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20454:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20474:2:39", + "type": "", + "value": "29" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20447:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20447:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20447:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20497:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20508:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20493:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20493:18:39" + }, + { + "hexValue": "436f6c6c61746572616c20726174696f206d757374206265203e3d2031", + "kind": "string", + "nodeType": "YulLiteral", + "src": "20513:31:39", + "type": "", + "value": "Collateral ratio must be >= 1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20486:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20486:59:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20486:59:39" + }, + { + "nodeType": "YulAssignment", + "src": "20554:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20566:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20577:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20562:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20562:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20554:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_2b6a8f4152754b6a991bf1b0a666b82b00923d2fd769bf1e3367643b70f91813__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "20384:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20398:4:39", + "type": "" + } + ], + "src": "20233:353:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20765:182:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20782:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20793:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20775:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20775:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20775:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20816:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20827:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20812:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20812:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20832:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20805:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20805:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20805:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20855:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20866:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20851:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20851:18:39" + }, + { + "hexValue": "5b506f6f6c277320436c6f7365645d3a204365696c696e672072656163686564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "20871:34:39", + "type": "", + "value": "[Pool's Closed]: Ceiling reached" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20844:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "20844:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "20844:62:39" + }, + { + "nodeType": "YulAssignment", + "src": "20915:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20927:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20938:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20923:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "20923:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20915:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_cff49a4dc330adf1553dee705fac7862f639b33b74fda177589900b9506a9737__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "20742:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20756:4:39", + "type": "" + } + ], + "src": "20591:356:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21126:228:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21143:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21154:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21136:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21136:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21136:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21177:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21188:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21173:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21173:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21193:2:39", + "type": "", + "value": "38" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21166:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21166:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21166:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21216:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21227:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21212:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21212:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e743174314445493a207369676e61747572652069732065", + "kind": "string", + "nodeType": "YulLiteral", + "src": "21232:34:39", + "type": "", + "value": "POOL::mint1t1DEI: signature is e" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21205:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21205:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21205:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21287:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21298:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21283:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21283:18:39" + }, + { + "hexValue": "787069726564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "21303:8:39", + "type": "", + "value": "xpired" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21276:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21276:36:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21276:36:39" + }, + { + "nodeType": "YulAssignment", + "src": "21321:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21333:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21344:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21329:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21329:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21321:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_f836b804fb91fcbb3dafb5e724f5eeb776ededc2eaf47030c5f454694abcbafe__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "21103:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "21117:4:39", + "type": "" + } + ], + "src": "20952:402:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21533:226:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21550:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21561:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21543:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21543:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21543:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21584:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21595:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21580:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21580:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21600:2:39", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21573:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21573:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21573:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21623:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21634:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21619:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21619:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e743174314445493a20696e76616c6964207369676e6174", + "kind": "string", + "nodeType": "YulLiteral", + "src": "21639:34:39", + "type": "", + "value": "POOL::mint1t1DEI: invalid signat" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21612:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21612:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21612:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21694:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21705:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21690:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21690:18:39" + }, + { + "hexValue": "75726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "21710:6:39", + "type": "", + "value": "ures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21683:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21683:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21683:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "21726:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21738:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21749:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21734:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21734:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21726:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3871818a433a796d8749bf69d3757469c36cba69a6da101f4f86b64a03c25fdf__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "21510:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "21524:4:39", + "type": "" + } + ], + "src": "21359:400:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21938:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21955:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21966:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21948:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21948:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21948:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21989:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22000:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21985:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "21985:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22005:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21978:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "21978:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "21978:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22028:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22039:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22024:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22024:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e6365", + "kind": "string", + "nodeType": "YulLiteral", + "src": "22044:34:39", + "type": "", + "value": "AccessControl: can only renounce" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22017:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22017:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22017:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22099:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22110:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22095:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22095:18:39" + }, + { + "hexValue": "20726f6c657320666f722073656c66", + "kind": "string", + "nodeType": "YulLiteral", + "src": "22115:17:39", + "type": "", + "value": " roles for self" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22088:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22088:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22088:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "22142:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22154:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22165:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22150:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22150:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22142:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "21915:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "21929:4:39", + "type": "" + } + ], + "src": "21764:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22331:481:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "22341:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22351:2:39", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "22345:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22362:32:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22380:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "22391:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22376:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22376:18:39" + }, + "variables": [ + { + "name": "tail_1", + "nodeType": "YulTypedName", + "src": "22366:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22410:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "22421:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22403:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22403:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22403:21:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22433:17:39", + "value": { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "22444:6:39" + }, + "variables": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "22437:3:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22459:27:39", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "22479:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "22473:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "22473:13:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "22463:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "22502:6:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "22510:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22495:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22495:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22495:22:39" + }, + { + "nodeType": "YulAssignment", + "src": "22526:25:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22537:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22548:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22533:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22533:18:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22526:3:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22560:29:39", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "22578:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "22586:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22574:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22574:15:39" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "22564:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22598:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22607:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "22602:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22666:120:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22687:3:39" + }, + { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "22698:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "22692:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "22692:13:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22680:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "22680:26:39" + }, + "nodeType": "YulExpressionStatement", + "src": "22680:26:39" + }, + { + "nodeType": "YulAssignment", + "src": "22719:19:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22730:3:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "22735:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22726:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22726:12:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22719:3:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "22751:25:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "22765:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "22773:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22761:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22761:15:39" + }, + "variableNames": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "22751:6:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "22628:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "22631:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "22625:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "22625:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "22639:18:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "22641:14:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "22650:1:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22653:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22646:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "22646:9:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "22641:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "22621:3:39", + "statements": [] + }, + "src": "22617:169:39" + }, + { + "nodeType": "YulAssignment", + "src": "22795:11:39", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22803:3:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22795:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "22300:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "22311:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "22322:4:39", + "type": "" + } + ], + "src": "22180:632:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22991:231:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23008:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23019:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23001:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23001:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23001:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23042:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23053:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23038:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23038:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23058:2:39", + "type": "", + "value": "41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23031:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23031:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23031:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23081:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23092:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23077:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23077:18:39" + }, + { + "hexValue": "504f4f4c3a2043616c6c6572206973206e6f7420504152414d455445525f5345", + "kind": "string", + "nodeType": "YulLiteral", + "src": "23097:34:39", + "type": "", + "value": "POOL: Caller is not PARAMETER_SE" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23070:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23070:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23070:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23152:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23163:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23148:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23148:18:39" + }, + { + "hexValue": "545445525f524f4c45", + "kind": "string", + "nodeType": "YulLiteral", + "src": "23168:11:39", + "type": "", + "value": "TTER_ROLE" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23141:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23141:39:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23141:39:39" + }, + { + "nodeType": "YulAssignment", + "src": "23189:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23201:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23212:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23197:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23197:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23189:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_76b82cf0f5d67f7f31fa6377a21018dea36302e26d7842fad5ba832c330157dd__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "22968:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "22982:4:39", + "type": "" + } + ], + "src": "22817:405:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23496:338:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "23506:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23518:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23529:3:39", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23514:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23514:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23506:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23549:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "23560:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23542:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23542:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23542:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23587:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23598:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23583:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23583:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "23603:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23576:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23576:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23576:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23630:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23641:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23626:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23626:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "23646:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23619:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23619:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23619:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23673:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23684:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23669:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23669:18:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "23689:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23662:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23662:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23662:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23716:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23727:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23712:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23712:19:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "23733:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23705:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23705:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23705:35:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23760:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23771:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23756:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23756:19:39" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "23777:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23749:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23749:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23749:35:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23804:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23815:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23800:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "23800:19:39" + }, + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "23821:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23793:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "23793:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "23793:35:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "23417:9:39", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "23428:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "23436:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "23444:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "23452:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "23460:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "23468:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "23476:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "23487:4:39", + "type": "" + } + ], + "src": "23227:607:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24013:246:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24030:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24041:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24023:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24023:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24023:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24064:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24075:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24060:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24060:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24080:2:39", + "type": "", + "value": "56" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24053:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24053:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24053:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24103:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24114:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24099:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24099:18:39" + }, + { + "hexValue": "436f6c6c61746572616c20726174696f206e6565647320746f20626520626574", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24119:34:39", + "type": "", + "value": "Collateral ratio needs to be bet" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24092:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24092:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24092:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24174:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24185:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24170:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24170:18:39" + }, + { + "hexValue": "7765656e202e30303030303120616e64202e393939393939", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24190:26:39", + "type": "", + "value": "ween .000001 and .999999" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24163:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24163:54:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24163:54:39" + }, + { + "nodeType": "YulAssignment", + "src": "24226:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24238:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24249:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24234:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24234:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24226:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3a4aaa4225031aefd603a0181e03bfba377ad02f3a40d8d4ff79e4b75af91117__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "23990:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "24004:4:39", + "type": "" + } + ], + "src": "23839:420:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24438:298:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24455:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24466:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24448:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24448:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24448:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24489:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24500:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24485:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24485:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24505:2:39", + "type": "", + "value": "68" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24478:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24478:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24478:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24528:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24539:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24524:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24524:18:39" + }, + { + "hexValue": "506f6f6c206365696c696e6720726561636865642c206e6f206d6f7265204445", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24544:34:39", + "type": "", + "value": "Pool ceiling reached, no more DE" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24517:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24517:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24517:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24599:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24610:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24595:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24595:18:39" + }, + { + "hexValue": "492063616e206265206d696e7465642077697468207468697320636f6c6c6174", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24615:34:39", + "type": "", + "value": "I can be minted with this collat" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24588:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24588:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24588:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24670:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24681:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24666:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24666:19:39" + }, + { + "hexValue": "6572616c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24687:6:39", + "type": "", + "value": "eral" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24659:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24659:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24659:35:39" + }, + { + "nodeType": "YulAssignment", + "src": "24703:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24715:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24726:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24711:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24711:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24703:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_415add743154eebc1c14f0dcbb6d42364bd9228c5bfab92187476352ba4cf3a4__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "24415:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "24429:4:39", + "type": "" + } + ], + "src": "24264:472:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24915:236:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24932:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24943:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24925:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24925:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24925:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24966:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24977:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24962:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "24962:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24982:2:39", + "type": "", + "value": "46" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24955:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24955:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24955:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25005:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25016:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25001:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25001:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e744672616374696f6e616c4445493a207369676e617475", + "kind": "string", + "nodeType": "YulLiteral", + "src": "25021:34:39", + "type": "", + "value": "POOL::mintFractionalDEI: signatu" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24994:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "24994:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "24994:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25076:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25087:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25072:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25072:18:39" + }, + { + "hexValue": "726520697320657870697265642e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "25092:16:39", + "type": "", + "value": "re is expired." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25065:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25065:44:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25065:44:39" + }, + { + "nodeType": "YulAssignment", + "src": "25118:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25130:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25141:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25126:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25126:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "25118:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3517d2a2517b8811826efd915add7c546f6c6059a93aba596e992ef7ede2c237__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "24892:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "24906:4:39", + "type": "" + } + ], + "src": "24741:410:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25415:372:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "25425:76:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25435:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "25429:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25517:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25530:2:39", + "type": "", + "value": "96" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "25534:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "25526:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25526:15:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "25543:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "25522:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25522:24:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25510:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25510:37:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25510:37:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25567:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25572:2:39", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25563:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25563:12:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "25577:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25556:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25556:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25556:28:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25604:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25609:2:39", + "type": "", + "value": "52" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25600:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25600:12:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25622:2:39", + "type": "", + "value": "96" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "25626:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "25618:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25618:15:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "25635:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "25614:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25614:24:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25593:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25593:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25593:46:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25659:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25664:2:39", + "type": "", + "value": "72" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25655:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25655:12:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "25669:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25648:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25648:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25648:28:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25696:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25701:3:39", + "type": "", + "value": "104" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25692:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25692:13:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "25707:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25685:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25685:29:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25685:29:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25734:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25739:3:39", + "type": "", + "value": "136" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25730:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25730:13:39" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "25745:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25723:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25723:29:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25723:29:39" + }, + { + "nodeType": "YulAssignment", + "src": "25761:20:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25772:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25777:3:39", + "type": "", + "value": "168" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25768:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "25768:13:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "25761:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "25351:3:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "25356:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "25364:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "25372:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "25380:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "25388:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "25396:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "25407:3:39", + "type": "" + } + ], + "src": "25156:631:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25966:233:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25983:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25994:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25976:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "25976:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "25976:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26017:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26028:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26013:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26013:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26033:2:39", + "type": "", + "value": "43" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26006:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26006:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26006:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26056:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26067:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26052:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26052:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e744672616374696f6e616c4445493a20696e76616c6964", + "kind": "string", + "nodeType": "YulLiteral", + "src": "26072:34:39", + "type": "", + "value": "POOL::mintFractionalDEI: invalid" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26045:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26045:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26045:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26127:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26138:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26123:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26123:18:39" + }, + { + "hexValue": "207369676e617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "26143:13:39", + "type": "", + "value": " signatures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26116:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26116:41:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26116:41:39" + }, + { + "nodeType": "YulAssignment", + "src": "26166:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26178:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26189:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26174:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26174:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26166:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_70791a0be90f5705149d45e0236213cb0328457b5d86e6288006e4f6774b09e7__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "25943:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "25957:4:39", + "type": "" + } + ], + "src": "25792:407:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26261:209:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26278:3:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "26289:5:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26283:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26283:12:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26271:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26271:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26271:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26316:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26321:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26312:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26312:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "26338:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26345:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26334:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26334:16:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26328:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26328:23:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26305:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26305:47:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26305:47:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26372:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26377:4:39", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26368:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26368:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "26394:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26401:4:39", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26390:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26390:16:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26384:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26384:23:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26361:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26361:47:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26361:47:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26428:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26433:4:39", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26424:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26424:14:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "26450:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26457:4:39", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26446:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26446:16:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26440:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26440:23:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26417:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26417:47:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26417:47:39" + } + ] + }, + "name": "abi_encode_struct_MintFD_Params", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "26245:5:39", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "26252:3:39", + "type": "" + } + ], + "src": "26204:266:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26638:102:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "26648:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26660:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26671:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26656:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26656:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26648:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "26716:6:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26724:9:39" + } + ], + "functionName": { + "name": "abi_encode_struct_MintFD_Params", + "nodeType": "YulIdentifier", + "src": "26684:31:39" + }, + "nodeType": "YulFunctionCall", + "src": "26684:50:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26684:50:39" + } + ] + }, + "name": "abi_encode_tuple_t_struct$_MintFD_Params_$3600_memory_ptr__to_t_struct$_MintFD_Params_$3600_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "26607:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "26618:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "26629:4:39", + "type": "" + } + ], + "src": "26475:265:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26843:147:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "26889:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26898:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26901:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "26891:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "26891:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "26891:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "26864:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26873:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "26860:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26860:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26885:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "26856:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26856:32:39" + }, + "nodeType": "YulIf", + "src": "26853:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "26914:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26930:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26924:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26924:16:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "26914:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "26949:35:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26969:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26980:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26965:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "26965:18:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26959:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "26959:25:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "26949:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "26801:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "26812:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "26824:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "26832:6:39", + "type": "" + } + ], + "src": "26745:245:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27169:174:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27186:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27197:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27179:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27179:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27179:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27220:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27231:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27216:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27216:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27236:2:39", + "type": "", + "value": "24" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27209:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27209:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27209:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27259:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27270:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27255:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27255:18:39" + }, + { + "hexValue": "4e6f7420656e6f756768204445555320696e707574746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "27275:26:39", + "type": "", + "value": "Not enough DEUS inputted" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27248:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27248:54:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27248:54:39" + }, + { + "nodeType": "YulAssignment", + "src": "27311:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27323:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27334:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27319:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27319:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27311:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_32c377f750f3acdff4f31738199007cf625ea4cb5a4b65f0253238ad0d6fe603__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "27146:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "27160:4:39", + "type": "" + } + ], + "src": "26995:348:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27522:166:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27539:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27550:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27532:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27532:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27532:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27573:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27584:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27569:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27569:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27589:2:39", + "type": "", + "value": "16" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27562:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27562:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27562:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27612:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27623:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27608:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27608:18:39" + }, + { + "hexValue": "616d6f756e743c3d64616f5368617265", + "kind": "string", + "nodeType": "YulLiteral", + "src": "27628:18:39", + "type": "", + "value": "amount<=daoShare" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27601:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27601:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27601:46:39" + }, + { + "nodeType": "YulAssignment", + "src": "27656:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27668:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27679:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27664:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27664:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27656:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_ffc61d1a84775e893520fbdfe0ea8909f9284081f97dd4e8ed1bc343abeb295e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "27499:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "27513:4:39", + "type": "" + } + ], + "src": "27348:340:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27822:168:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "27832:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27844:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27855:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27840:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27840:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27832:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27874:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "27885:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27867:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27867:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27867:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27912:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27923:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27908:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27908:18:39" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "27932:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27940:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "27928:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "27928:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27901:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "27901:83:39" + }, + "nodeType": "YulExpressionStatement", + "src": "27901:83:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "27783:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "27794:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "27802:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "27813:4:39", + "type": "" + } + ], + "src": "27693:297:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28169:241:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28186:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28197:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28179:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28179:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28179:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28220:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28231:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28216:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28216:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28236:2:39", + "type": "", + "value": "51" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28209:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28209:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28209:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28259:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28270:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28255:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28255:18:39" + }, + { + "hexValue": "504f4f4c3a3a7265636f6c6c61746572616c697a654445493a205265636f6c6c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "28275:34:39", + "type": "", + "value": "POOL::recollateralizeDEI: Recoll" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28248:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28248:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28248:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28330:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28341:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28326:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28326:18:39" + }, + { + "hexValue": "61746572616c697a6520697320706175736564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "28346:21:39", + "type": "", + "value": "ateralize is paused" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28319:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28319:49:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28319:49:39" + }, + { + "nodeType": "YulAssignment", + "src": "28377:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28389:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28400:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28385:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28385:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "28377:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_565f0845894e0f662254a5093763af0fee3605d54c84edbcf11c672de6a88543__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "28146:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "28160:4:39", + "type": "" + } + ], + "src": "27995:415:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28589:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28606:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28617:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28599:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28599:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28599:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28640:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28651:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28636:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28636:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28656:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28629:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28629:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28629:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28679:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28690:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28675:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28675:18:39" + }, + { + "hexValue": "504f4f4c3a3a7265636f6c6c61746572616c697a654445493a207369676e6174", + "kind": "string", + "nodeType": "YulLiteral", + "src": "28695:34:39", + "type": "", + "value": "POOL::recollateralizeDEI: signat" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28668:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28668:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28668:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28750:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28761:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28746:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28746:18:39" + }, + { + "hexValue": "75726520697320657870697265642e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "28766:17:39", + "type": "", + "value": "ure is expired." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28739:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "28739:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "28739:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "28793:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28805:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28816:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28801:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "28801:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "28793:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_43ec8f409eb317e256e176d402e36ec6af276af1f8f749e4d9fbe21bcd7bc664__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "28566:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "28580:4:39", + "type": "" + } + ], + "src": "28415:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29140:691:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "29150:76:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29160:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "29154:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "29242:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29255:2:39", + "type": "", + "value": "96" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "29259:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "29251:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29251:15:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "29268:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "29247:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29247:24:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29235:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29235:37:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29235:37:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "29281:25:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "29298:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29303:2:39", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29294:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29294:12:39" + }, + "variables": [ + { + "name": "pos_1", + "nodeType": "YulTypedName", + "src": "29285:5:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "29315:27:39", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "29335:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "29329:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "29329:13:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "29319:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "29351:14:39", + "value": { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29360:5:39" + }, + "variableNames": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29351:5:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "29374:14:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29384:4:39", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "29378:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "29397:29:39", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "29415:6:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "29423:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29411:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29411:15:39" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "29401:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "29435:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29444:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "29439:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29503:126:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29524:5:39" + }, + { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "29537:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "29531:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "29531:13:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29517:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29517:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29517:28:39" + }, + { + "nodeType": "YulAssignment", + "src": "29558:23:39", + "value": { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29571:5:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "29578:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29567:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29567:14:39" + }, + "variableNames": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29558:5:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "29594:25:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "29608:6:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "29616:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29604:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29604:15:39" + }, + "variableNames": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "29594:6:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29465:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "29468:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "29462:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "29462:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "29476:18:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "29478:14:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29487:1:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29490:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29483:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29483:9:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29478:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "29458:3:39", + "statements": [] + }, + "src": "29454:175:39" + }, + { + "expression": { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29645:5:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29660:2:39", + "type": "", + "value": "96" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "29664:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "29656:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29656:15:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "29673:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "29652:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29652:24:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29638:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29638:39:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29638:39:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29697:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29704:2:39", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29693:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29693:14:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "29709:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29686:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29686:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29686:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29736:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29743:2:39", + "type": "", + "value": "52" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29732:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29732:14:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "29748:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29725:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29725:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29725:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29775:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29782:2:39", + "type": "", + "value": "84" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29771:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29771:14:39" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "29787:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29764:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29764:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29764:30:39" + }, + { + "nodeType": "YulAssignment", + "src": "29803:22:39", + "value": { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "29814:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29821:3:39", + "type": "", + "value": "116" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29810:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29810:15:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "29803:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "29076:3:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "29081:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "29089:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "29097:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "29105:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "29113:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "29121:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "29132:3:39", + "type": "" + } + ], + "src": "28831:1000:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29889:205:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "29899:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29908:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "29903:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29968:63:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "29993:3:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29998:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29989:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29989:11:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "30012:3:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "30017:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30008:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30008:11:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "30002:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "30002:18:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29982:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "29982:39:39" + }, + "nodeType": "YulExpressionStatement", + "src": "29982:39:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29929:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "29932:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "29926:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "29926:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "29940:19:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "29942:15:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29951:1:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29954:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29947:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "29947:10:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "29942:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "29922:3:39", + "statements": [] + }, + "src": "29918:113:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30057:31:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "30070:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30075:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30066:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30066:16:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30084:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30059:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30059:27:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30059:27:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "30046:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30049:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "30043:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "30043:13:39" + }, + "nodeType": "YulIf", + "src": "30040:48:39" + } + ] + }, + "name": "copy_memory_to_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "29867:3:39", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "29872:3:39", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "29877:6:39", + "type": "" + } + ], + "src": "29836:258:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30296:991:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "30306:32:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30324:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30335:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30320:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30320:18:39" + }, + "variables": [ + { + "name": "tail_1", + "nodeType": "YulTypedName", + "src": "30310:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30354:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "30365:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30347:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30347:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30347:25:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30381:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30391:2:39", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "30385:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30413:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "30424:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30409:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30409:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30429:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30402:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30402:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30402:30:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30441:17:39", + "value": { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "30452:6:39" + }, + "variables": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "30445:3:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30467:27:39", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "30487:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "30481:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "30481:13:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "30471:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "30510:6:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30518:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30503:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30503:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30503:22:39" + }, + { + "nodeType": "YulAssignment", + "src": "30534:25:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30545:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30556:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30541:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30541:18:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "30534:3:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30568:53:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30590:9:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30605:1:39", + "type": "", + "value": "5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30608:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "30601:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30601:14:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30586:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30586:30:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30618:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30582:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30582:39:39" + }, + "variables": [ + { + "name": "tail_2", + "nodeType": "YulTypedName", + "src": "30572:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30630:29:39", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "30648:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "30656:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30644:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30644:15:39" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "30634:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30668:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30677:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "30672:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30736:522:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "30757:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "30770:6:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30778:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "30766:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30766:22:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30790:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30762:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30762:95:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30750:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30750:108:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30750:108:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30871:23:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "30887:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "30881:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "30881:13:39" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "30875:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30907:25:39", + "value": { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "30929:2:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "30923:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "30923:9:39" + }, + "variables": [ + { + "name": "length_1", + "nodeType": "YulTypedName", + "src": "30911:8:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "30952:6:39" + }, + { + "name": "length_1", + "nodeType": "YulIdentifier", + "src": "30960:8:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30945:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "30945:24:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30945:24:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "31008:2:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "31012:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31004:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31004:11:39" + }, + { + "arguments": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "31021:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "31029:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31017:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31017:15:39" + }, + { + "name": "length_1", + "nodeType": "YulIdentifier", + "src": "31034:8:39" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "30982:21:39" + }, + "nodeType": "YulFunctionCall", + "src": "30982:61:39" + }, + "nodeType": "YulExpressionStatement", + "src": "30982:61:39" + }, + { + "nodeType": "YulAssignment", + "src": "31056:122:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "31074:6:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length_1", + "nodeType": "YulIdentifier", + "src": "31090:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31100:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31086:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31086:17:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31105:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "31082:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31082:90:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31070:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31070:103:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "31175:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31066:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31066:112:39" + }, + "variableNames": [ + { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "31056:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "31191:25:39", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "31205:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "31213:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31201:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31201:15:39" + }, + "variableNames": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "31191:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "31229:19:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "31240:3:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "31245:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31236:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31236:12:39" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "31229:3:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "30698:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30701:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "30695:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "30695:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "30709:18:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "30711:14:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "30720:1:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30723:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30716:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "30716:9:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "30711:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "30691:3:39", + "statements": [] + }, + "src": "30687:571:39" + }, + { + "nodeType": "YulAssignment", + "src": "31267:14:39", + "value": { + "name": "tail_2", + "nodeType": "YulIdentifier", + "src": "31275:6:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "31267:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "30257:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "30268:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "30276:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "30287:4:39", + "type": "" + } + ], + "src": "30099:1188:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "31466:234:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31483:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31494:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31476:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31476:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31476:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31517:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31528:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31513:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31513:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31533:2:39", + "type": "", + "value": "44" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31506:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31506:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31506:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31556:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31567:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31552:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31552:18:39" + }, + { + "hexValue": "504f4f4c3a3a7265636f6c6c61746572616c697a654445493a20696e76616c69", + "kind": "string", + "nodeType": "YulLiteral", + "src": "31572:34:39", + "type": "", + "value": "POOL::recollateralizeDEI: invali" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31545:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31545:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31545:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31627:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31638:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31623:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31623:18:39" + }, + { + "hexValue": "64207369676e617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "31643:14:39", + "type": "", + "value": "d signatures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31616:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31616:42:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31616:42:39" + }, + { + "nodeType": "YulAssignment", + "src": "31667:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31679:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31690:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31675:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "31675:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "31667:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_f8eb31fdc269657c54ee10149955fecbcb75254d3eeec631bdecc57de525010b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "31443:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "31457:4:39", + "type": "" + } + ], + "src": "31292:408:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "31737:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31754:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31757:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31747:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31747:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31747:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31851:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31854:4:39", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31844:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31844:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31844:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31875:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31878:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "31868:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "31868:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "31868:15:39" + } + ] + }, + "name": "panic_error_0x32", + "nodeType": "YulFunctionDefinition", + "src": "31705:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32107:250:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "32117:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32129:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32140:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32125:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32125:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "32117:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32160:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "32171:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32153:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32153:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32153:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32198:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32209:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32194:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32194:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "32214:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32187:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32187:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32187:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32241:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32252:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32237:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32237:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "32257:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32230:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32230:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32230:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32284:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32295:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32280:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32280:18:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "32300:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32273:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32273:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32273:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32327:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32338:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32323:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32323:19:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "32344:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32316:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32316:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32316:35:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "32044:9:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "32055:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "32063:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "32071:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "32079:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "32087:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "32098:4:39", + "type": "" + } + ], + "src": "31894:463:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32536:244:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32553:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32564:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32546:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32546:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32546:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32587:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32598:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32583:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32583:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32603:2:39", + "type": "", + "value": "54" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32576:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32576:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32576:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32626:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32637:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32622:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32622:18:39" + }, + { + "hexValue": "504f4f4c3a3a72656465656d416c676f726974686d69634445493a20436f6c6c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "32642:34:39", + "type": "", + "value": "POOL::redeemAlgorithmicDEI: Coll" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32615:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32615:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32615:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32697:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32708:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32693:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32693:18:39" + }, + { + "hexValue": "61746572616c20726174696f206d7573742062652030", + "kind": "string", + "nodeType": "YulLiteral", + "src": "32713:24:39", + "type": "", + "value": "ateral ratio must be 0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32686:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32686:52:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32686:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "32747:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32759:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32770:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32755:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "32755:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "32747:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_219e324e833041c644ccb1dd3dba73aaa878497ddb310916decd8247cfffb1bd__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "32513:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "32527:4:39", + "type": "" + } + ], + "src": "32362:418:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32959:238:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32976:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32987:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32969:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32969:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32969:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33010:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33021:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33006:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33006:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33026:2:39", + "type": "", + "value": "48" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32999:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "32999:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "32999:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33049:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33060:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33045:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33045:18:39" + }, + { + "hexValue": "4445493a3a72656465656d416c676f726974686d69634445493a207369676e61", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33065:34:39", + "type": "", + "value": "DEI::redeemAlgorithmicDEI: signa" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33038:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33038:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33038:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33120:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33131:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33116:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33116:18:39" + }, + { + "hexValue": "7475726520697320657870697265642e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33136:18:39", + "type": "", + "value": "ture is expired." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33109:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33109:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33109:46:39" + }, + { + "nodeType": "YulAssignment", + "src": "33164:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33176:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33187:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33172:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33172:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "33164:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_af86e93bd0220a55e8ca62f5f35862820e5999de1371ac209bb45c45b39ee5de__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "32936:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "32950:4:39", + "type": "" + } + ], + "src": "32785:412:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33376:236:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33393:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33404:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33386:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33386:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33386:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33427:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33438:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33423:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33423:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33443:2:39", + "type": "", + "value": "46" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33416:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33416:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33416:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33466:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33477:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33462:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33462:18:39" + }, + { + "hexValue": "504f4f4c3a3a72656465656d416c676f726974686d69634445493a20696e7661", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33482:34:39", + "type": "", + "value": "POOL::redeemAlgorithmicDEI: inva" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33455:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33455:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33455:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33537:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33548:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33533:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33533:18:39" + }, + { + "hexValue": "6c6964207369676e617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33553:16:39", + "type": "", + "value": "lid signatures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33526:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33526:44:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33526:44:39" + }, + { + "nodeType": "YulAssignment", + "src": "33579:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33591:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33602:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33587:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33587:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "33579:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_bff4c2607c2670a7edf36f88b5d5987db2ccc6a59b36f486c4c57f193ba00833__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "33353:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "33367:4:39", + "type": "" + } + ], + "src": "33202:410:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33791:226:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33808:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33819:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33801:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33801:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33801:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33842:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33853:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33838:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33838:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33858:2:39", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33831:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33831:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33831:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33881:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33892:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33877:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33877:18:39" + }, + { + "hexValue": "504f4f4c3a3a6275794261636b444555533a204275796261636b206973207061", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33897:34:39", + "type": "", + "value": "POOL::buyBackDEUS: Buyback is pa" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33870:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33870:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33870:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33952:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33963:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33948:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33948:18:39" + }, + { + "hexValue": "75736564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33968:6:39", + "type": "", + "value": "used" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33941:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "33941:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "33941:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "33984:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33996:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34007:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33992:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "33992:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "33984:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0f701899e5d254af158b94e181e8c864fa1fa8407b8e83a84b212f1856c034bb__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "33768:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "33782:4:39", + "type": "" + } + ], + "src": "33617:400:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34196:229:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34213:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34224:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34206:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34206:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34206:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34247:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34258:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34243:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34243:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34263:2:39", + "type": "", + "value": "39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34236:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34236:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34236:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34286:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34297:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34282:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34282:18:39" + }, + { + "hexValue": "4445493a3a6275794261636b444555533a207369676e61747572652069732065", + "kind": "string", + "nodeType": "YulLiteral", + "src": "34302:34:39", + "type": "", + "value": "DEI::buyBackDEUS: signature is e" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34275:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34275:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34275:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34357:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34368:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34353:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34353:18:39" + }, + { + "hexValue": "7870697265642e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "34373:9:39", + "type": "", + "value": "xpired." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34346:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34346:37:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34346:37:39" + }, + { + "nodeType": "YulAssignment", + "src": "34392:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34404:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34415:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34400:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34400:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "34392:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_74a9279f050c6419792bc3daa57da050d8e2f426f944681941d34e8909be7eac__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "34173:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "34187:4:39", + "type": "" + } + ], + "src": "34022:403:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34604:227:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34621:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34632:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34614:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34614:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34614:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34655:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34666:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34651:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34651:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34671:2:39", + "type": "", + "value": "37" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34644:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34644:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34644:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34694:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34705:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34690:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34690:18:39" + }, + { + "hexValue": "504f4f4c3a3a6275794261636b444555533a20696e76616c6964207369676e61", + "kind": "string", + "nodeType": "YulLiteral", + "src": "34710:34:39", + "type": "", + "value": "POOL::buyBackDEUS: invalid signa" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34683:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34683:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34683:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34765:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34776:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34761:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34761:18:39" + }, + { + "hexValue": "7475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "34781:7:39", + "type": "", + "value": "tures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34754:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "34754:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "34754:35:39" + }, + { + "nodeType": "YulAssignment", + "src": "34798:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34810:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34821:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34806:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "34806:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "34798:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_c668331e1a5c68ea41572b6fbf581e9b4ce7392915c1ff6a6872ae765618f9ee__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "34581:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "34595:4:39", + "type": "" + } + ], + "src": "34430:401:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35009:102:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "35019:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35031:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35042:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35027:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35027:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "35019:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "35087:6:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35095:9:39" + } + ], + "functionName": { + "name": "abi_encode_struct_MintFD_Params", + "nodeType": "YulIdentifier", + "src": "35055:31:39" + }, + "nodeType": "YulFunctionCall", + "src": "35055:50:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35055:50:39" + } + ] + }, + "name": "abi_encode_tuple_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__to_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "34978:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "34989:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "35000:4:39", + "type": "" + } + ], + "src": "34836:275:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35290:176:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35307:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35318:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35300:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35300:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35300:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35341:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35352:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35337:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35337:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35357:2:39", + "type": "", + "value": "26" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35330:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35330:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35330:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35380:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35391:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35376:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35376:18:39" + }, + { + "hexValue": "436f6c6c61746572616c20726174696f206d7573742062652030", + "kind": "string", + "nodeType": "YulLiteral", + "src": "35396:28:39", + "type": "", + "value": "Collateral ratio must be 0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35369:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35369:56:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35369:56:39" + }, + { + "nodeType": "YulAssignment", + "src": "35434:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35446:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35457:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35442:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35442:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "35434:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_f64a17d208f26e05f2312b5ee80f462bf5bab19979dfd330950359be93bd2d66__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "35267:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "35281:4:39", + "type": "" + } + ], + "src": "35116:350:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35645:234:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35662:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35673:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35655:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35655:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35655:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35696:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35707:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35692:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35692:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35712:2:39", + "type": "", + "value": "44" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35685:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35685:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35685:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35735:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35746:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35731:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35731:18:39" + }, + { + "hexValue": "504f4f4c3a3a6d696e74416c676f726974686d69634445493a20696e76616c69", + "kind": "string", + "nodeType": "YulLiteral", + "src": "35751:34:39", + "type": "", + "value": "POOL::mintAlgorithmicDEI: invali" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35724:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35724:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35724:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35806:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35817:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35802:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35802:18:39" + }, + { + "hexValue": "64207369676e617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "35822:14:39", + "type": "", + "value": "d signatures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35795:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "35795:42:39" + }, + "nodeType": "YulExpressionStatement", + "src": "35795:42:39" + }, + { + "nodeType": "YulAssignment", + "src": "35846:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35858:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35869:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35854:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "35854:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "35846:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_5a2d3f9bcb3c5bd0b1926b1856db5dd186810b6e73d5cb9f87ee953c4da7fee2__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "35622:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "35636:4:39", + "type": "" + } + ], + "src": "35471:408:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36058:238:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36075:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36086:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36068:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36068:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36068:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36109:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36120:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36105:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36105:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36125:2:39", + "type": "", + "value": "48" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36098:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36098:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36098:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36148:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36159:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36144:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36144:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "36164:34:39", + "type": "", + "value": "AccessControl: sender must be an" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36137:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36137:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36137:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36219:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36230:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36215:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36215:18:39" + }, + { + "hexValue": "2061646d696e20746f207265766f6b65", + "kind": "string", + "nodeType": "YulLiteral", + "src": "36235:18:39", + "type": "", + "value": " admin to revoke" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36208:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36208:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36208:46:39" + }, + { + "nodeType": "YulAssignment", + "src": "36263:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36275:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36286:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36271:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36271:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "36263:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "36035:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "36049:4:39", + "type": "" + } + ], + "src": "35884:412:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36475:174:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36492:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36503:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36485:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36485:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36485:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36526:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36537:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36522:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36522:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36542:2:39", + "type": "", + "value": "24" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36515:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36515:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36515:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36565:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36576:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36561:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36561:18:39" + }, + { + "hexValue": "504f4f4c3a3a796f7520617265206e6f7420747275737479", + "kind": "string", + "nodeType": "YulLiteral", + "src": "36581:26:39", + "type": "", + "value": "POOL::you are not trusty" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36554:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36554:54:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36554:54:39" + }, + { + "nodeType": "YulAssignment", + "src": "36617:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36629:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36640:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36625:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36625:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "36617:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_7b7d20f9ca6e9adc6378137dbeda8a962bb9bf07440b2b9db28bb53f4e464fce__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "36452:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "36466:4:39", + "type": "" + } + ], + "src": "36301:348:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36828:313:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36845:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36856:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36838:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36838:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36838:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36879:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36890:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36875:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36875:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36895:2:39", + "type": "", + "value": "83" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36868:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36868:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36868:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36918:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36929:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36914:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36914:18:39" + }, + { + "hexValue": "504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20436f6c6c61", + "kind": "string", + "nodeType": "YulLiteral", + "src": "36934:34:39", + "type": "", + "value": "POOL::redeemFractionalDEI: Colla" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36907:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36907:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36907:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36989:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37000:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36985:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "36985:18:39" + }, + { + "hexValue": "746572616c20726174696f206e6565647320746f206265206265747765656e20", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37005:34:39", + "type": "", + "value": "teral ratio needs to be between " + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36978:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "36978:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "36978:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37060:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37071:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37056:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37056:19:39" + }, + { + "hexValue": "2e30303030303120616e64202e393939393939", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37077:21:39", + "type": "", + "value": ".000001 and .999999" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37049:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37049:50:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37049:50:39" + }, + { + "nodeType": "YulAssignment", + "src": "37108:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37120:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37131:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37116:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37116:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "37108:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_1eb003467dd04b32fe18359370bc0d0e41e237ed2bf1be23765de9081983dd0d__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "36805:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "36819:4:39", + "type": "" + } + ], + "src": "36654:487:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "37320:236:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37337:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37348:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37330:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37330:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37330:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37371:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37382:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37367:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37367:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37387:2:39", + "type": "", + "value": "46" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37360:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37360:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37360:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37410:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37421:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37406:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37406:18:39" + }, + { + "hexValue": "4445493a3a72656465656d4672616374696f6e616c4445493a207369676e6174", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37426:34:39", + "type": "", + "value": "DEI::redeemFractionalDEI: signat" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37399:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37399:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37399:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37481:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37492:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37477:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37477:18:39" + }, + { + "hexValue": "7572652069732065787069726564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37497:16:39", + "type": "", + "value": "ure is expired" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37470:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37470:44:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37470:44:39" + }, + { + "nodeType": "YulAssignment", + "src": "37523:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37535:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37546:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37531:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37531:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "37523:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_d441a1ecab801b1c575c77e3c185431fd7b0029d666fc7417a9f7556b3f83d6f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "37297:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "37311:4:39", + "type": "" + } + ], + "src": "37146:410:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "37735:235:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37752:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37763:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37745:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37745:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37745:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37786:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37797:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37782:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37782:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37802:2:39", + "type": "", + "value": "45" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37775:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37775:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37775:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37825:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37836:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37821:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37821:18:39" + }, + { + "hexValue": "504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20696e76616c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37841:34:39", + "type": "", + "value": "POOL::redeemFractionalDEI: inval" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37814:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37814:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37814:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37896:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37907:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37892:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37892:18:39" + }, + { + "hexValue": "6964207369676e617475726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37912:15:39", + "type": "", + "value": "id signatures" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37885:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "37885:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "37885:43:39" + }, + { + "nodeType": "YulAssignment", + "src": "37937:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37949:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37960:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37945:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "37945:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "37937:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3cf3652b2acfb73942e459b043ef1100fffabb4093e48d3162412f77ff7ce9c4__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "37712:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "37726:4:39", + "type": "" + } + ], + "src": "37561:409:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38112:137:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "38122:27:39", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "38142:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "38136:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "38136:13:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "38126:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "38184:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38192:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38180:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38180:17:39" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "38199:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "38204:6:39" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "38158:21:39" + }, + "nodeType": "YulFunctionCall", + "src": "38158:53:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38158:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "38220:23:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "38231:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "38236:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38227:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38227:16:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "38220:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "38088:3:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "38093:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "38104:3:39", + "type": "" + } + ], + "src": "37975:274:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38428:181:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38445:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38456:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38438:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38438:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38438:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38479:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38490:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38475:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38475:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38495:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38468:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38468:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38468:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38518:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38529:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38514:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38514:18:39" + }, + { + "hexValue": "5472616e7366657248656c7065723a205452414e534645525f4641494c4544", + "kind": "string", + "nodeType": "YulLiteral", + "src": "38534:33:39", + "type": "", + "value": "TransferHelper: TRANSFER_FAILED" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38507:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38507:61:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38507:61:39" + }, + { + "nodeType": "YulAssignment", + "src": "38577:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38589:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38600:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38585:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38585:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "38577:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "38405:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "38419:4:39", + "type": "" + } + ], + "src": "38254:355:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38771:241:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "38781:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38793:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38804:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38789:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38789:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "38781:4:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "38816:52:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38826:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "38820:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38884:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "38899:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "38907:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "38895:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38895:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38877:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38877:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38877:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38931:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38942:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38927:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38927:18:39" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "38951:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "38959:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "38947:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38947:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38920:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38920:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38920:43:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38983:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38994:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38979:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "38979:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "38999:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38972:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "38972:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "38972:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "38724:9:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "38735:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "38743:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "38751:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "38762:4:39", + "type": "" + } + ], + "src": "38614:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39191:226:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39208:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39219:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39201:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39201:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39201:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39242:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39253:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39238:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39238:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39258:2:39", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39231:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39231:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39231:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39281:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39292:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39277:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39277:18:39" + }, + { + "hexValue": "5472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641", + "kind": "string", + "nodeType": "YulLiteral", + "src": "39297:34:39", + "type": "", + "value": "TransferHelper: TRANSFER_FROM_FA" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39270:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39270:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39270:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39352:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39363:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39348:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39348:18:39" + }, + { + "hexValue": "494c4544", + "kind": "string", + "nodeType": "YulLiteral", + "src": "39368:6:39", + "type": "", + "value": "ILED" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39341:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39341:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39341:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "39384:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39396:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39407:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39392:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39392:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "39384:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "39168:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "39182:4:39", + "type": "" + } + ], + "src": "39017:400:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39596:224:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39613:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39624:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39606:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39606:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39606:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39647:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39658:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39643:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39643:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39663:2:39", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39636:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39636:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39636:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39686:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39697:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39682:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39682:18:39" + }, + { + "hexValue": "456e756d657261626c655365743a20696e646578206f7574206f6620626f756e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "39702:34:39", + "type": "", + "value": "EnumerableSet: index out of boun" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39675:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39675:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39675:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39757:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39768:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39753:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39753:18:39" + }, + { + "hexValue": "6473", + "kind": "string", + "nodeType": "YulLiteral", + "src": "39773:4:39", + "type": "", + "value": "ds" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39746:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39746:32:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39746:32:39" + }, + { + "nodeType": "YulAssignment", + "src": "39787:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39799:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39810:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39795:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "39795:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "39787:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "39573:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "39587:4:39", + "type": "" + } + ], + "src": "39422:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39857:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39874:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39877:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39867:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39867:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39867:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39971:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39974:4:39", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39964:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39964:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39964:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39995:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39998:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "39988:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "39988:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "39988:15:39" + } + ] + }, + "name": "panic_error_0x31", + "nodeType": "YulFunctionDefinition", + "src": "39825:184:39" + } + ] + }, + "contents": "{\n { }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_array_bytes_calldata_dyn_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value3_1, value4_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n value3 := value3_1\n value4 := value4_1\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function panic_error_0x41()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory_5709() -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, 0xc0)\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function array_allocation_size_array_uint256_dyn(length) -> size\n {\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n size := add(shl(5, length), 0x20)\n }\n function abi_decode_array_uint256_dyn(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let _2 := 0x20\n let dst := allocate_memory(array_allocation_size_array_uint256_dyn(_1))\n let dst_1 := dst\n mstore(dst, _1)\n dst := add(dst, _2)\n let srcEnd := add(add(offset, shl(5, _1)), _2)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, _2)\n for { } lt(src, srcEnd) { src := add(src, _2) }\n {\n mstore(dst, calldataload(src))\n dst := add(dst, _2)\n }\n array := dst_1\n }\n function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value0 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n }\n function abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n value4 := calldataload(add(headStart, 128))\n value5 := calldataload(add(headStart, 160))\n value6 := calldataload(add(headStart, 192))\n }\n function abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n value4 := calldataload(add(headStart, 128))\n let offset := calldataload(add(headStart, 160))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value5_1, value6_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n value5 := value5_1\n value6 := value6_1\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_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_decode_array_bytes_dyn(offset, end) -> array\n {\n let _1 := 0x1f\n if iszero(slt(add(offset, _1), end)) { revert(0, 0) }\n let _2 := calldataload(offset)\n let _3 := 0x20\n let dst := allocate_memory(array_allocation_size_array_uint256_dyn(_2))\n let dst_1 := dst\n mstore(dst, _2)\n dst := add(dst, _3)\n let srcEnd := add(add(offset, shl(5, _2)), _3)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, _3)\n for { } lt(src, srcEnd) { src := add(src, _3) }\n {\n let innerOffset := calldataload(src)\n let _4 := 0xffffffffffffffff\n if gt(innerOffset, _4)\n {\n let _5 := 0\n revert(_5, _5)\n }\n let _6 := add(offset, innerOffset)\n if iszero(slt(add(_6, 63), end))\n {\n let _7 := 0\n revert(_7, _7)\n }\n let _8 := calldataload(add(_6, _3))\n let _9 := 64\n if gt(_8, _4) { panic_error_0x41() }\n let array_1 := allocate_memory(add(and(add(_8, _1), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), _3))\n mstore(array_1, _8)\n if gt(add(add(_6, _8), _9), end)\n {\n let _10 := 0\n revert(_10, _10)\n }\n calldatacopy(add(array_1, _3), add(_6, _9), _8)\n mstore(add(add(array_1, _8), _3), 0)\n mstore(dst, array_1)\n dst := add(dst, _3)\n }\n array := dst_1\n }\n function abi_decode_tuple_t_struct$_RecollateralizeDEI_$1556_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if slt(sub(dataEnd, _2), 0xc0) { revert(0, 0) }\n let value := allocate_memory_5709()\n mstore(value, calldataload(_2))\n mstore(add(value, 32), calldataload(add(_2, 32)))\n let offset_1 := calldataload(add(_2, 64))\n if gt(offset_1, _1) { revert(0, 0) }\n mstore(add(value, 64), abi_decode_array_uint256_dyn(add(_2, offset_1), dataEnd))\n mstore(add(value, 96), calldataload(add(_2, 96)))\n mstore(add(value, 128), calldataload(add(_2, 128)))\n let offset_2 := calldataload(add(_2, 160))\n if gt(offset_2, _1) { revert(0, 0) }\n mstore(add(value, 160), abi_decode_array_bytes_dyn(add(_2, offset_2), dataEnd))\n value0 := value\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_memory_ptrt_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n value0 := calldataload(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n value1 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let offset_1 := calldataload(add(headStart, 128))\n if gt(offset_1, _1) { revert(0, 0) }\n let value4_1, value5_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, offset_1), dataEnd)\n value4 := value4_1\n value5 := value5_1\n }\n function abi_decode_tuple_t_addresst_uint256t_address(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := abi_decode_address(add(headStart, 64))\n }\n function abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value4_1, value5_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n value4 := value4_1\n value5 := value5_1\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function abi_encode_tuple_t_stringliteral_38c9fd1b67df6e999cac6aaf315cc13e0fa4fc296b57f92466d27a378c17f081__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 91)\n mstore(add(headStart, 64), \"POOL::collectRedemption: Must wa\")\n mstore(add(headStart, 96), \"it for redemption_delay blocks b\")\n mstore(add(headStart, 128), \"efore collecting redemption\")\n tail := add(headStart, 160)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function abi_encode_tuple_t_stringliteral_de458c40ee20c89c9807b7a8a5908e3319b480e8b007f55d3d683bc68bb7186e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 25)\n mstore(add(headStart, 64), \"POOL::Redeeming is paused\")\n tail := add(headStart, 96)\n }\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_c70433350355bf0543fc06a466fe44bcb01281d5a63b8bb87c74c17650f3e4c7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Collateral ratio must be == 1\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_0553f3220b1c65f13a1a0bcfbae12cc9d57080d375095d8011e479f9a164d51f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"POOL::mintAlgorithmicDEI: signat\")\n mstore(add(headStart, 96), \"ure is expired.\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed(pos, value3, value2, value1, value0) -> end\n {\n mstore(pos, and(shl(96, value0), 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000))\n mstore(add(pos, 20), value1)\n mstore(add(pos, 52), value2)\n mstore(add(pos, 84), value3)\n end := add(pos, 116)\n }\n function abi_encode_bytes_calldata(start, length, pos) -> end\n {\n mstore(pos, length)\n calldatacopy(add(pos, 0x20), start, length)\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n }\n function abi_encode_tuple_t_bytes32_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n let tail_1 := add(headStart, 64)\n mstore(headStart, value0)\n let _1 := 32\n mstore(add(headStart, _1), 64)\n let pos := tail_1\n mstore(tail_1, value2)\n pos := add(headStart, 96)\n let tail_2 := add(add(headStart, shl(5, value2)), 96)\n let srcPtr := value1\n let i := 0\n for { } lt(i, value2) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0))\n let rel_offset_of_tail := calldataload(srcPtr)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), value1), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n let value := add(rel_offset_of_tail, value1)\n let length := calldataload(value)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n if sgt(value1, sub(calldatasize(), length)) { revert(0, 0) }\n tail_2 := abi_encode_bytes_calldata(add(value, _1), length, tail_2)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n tail := tail_2\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_3b8d4b54db08ed890798fdc55ba1c410b1b90a23a79193c7486d04051b31717b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"POOL::redeem1t1DEI: invalid sign\")\n mstore(add(headStart, 96), \"atures\")\n tail := add(headStart, 128)\n }\n function checked_exp_helper(_base, exponent) -> power, base\n {\n let power_1 := 1\n power := power_1\n base := _base\n for { } gt(exponent, power_1) { }\n {\n if gt(base, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, base)) { panic_error_0x11() }\n if and(exponent, power_1) { power := mul(power, base) }\n base := mul(base, base)\n exponent := shr(power_1, exponent)\n }\n }\n function checked_exp_unsigned(base, exponent) -> power\n {\n if iszero(exponent)\n {\n power := 1\n leave\n }\n if iszero(base)\n {\n power := 0\n leave\n }\n switch base\n case 1 {\n power := 1\n leave\n }\n case 2 {\n if gt(exponent, 255) { panic_error_0x11() }\n power := shl(exponent, 1)\n leave\n }\n if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n {\n power := exp(base, exponent)\n leave\n }\n let power_1, base_1 := checked_exp_helper(base, exponent)\n if gt(power_1, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, base_1)) { panic_error_0x11() }\n power := mul(power_1, base_1)\n }\n function checked_exp_t_uint256_t_uint256(base, exponent) -> power\n {\n power := checked_exp_unsigned(base, exponent)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n function 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 checked_mul_t_uint256(x, y) -> product\n {\n if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n product := mul(x, y)\n }\n function abi_encode_tuple_t_stringliteral_f52391ebd610d5d9d518357ceeaf45367429ac1fd3150210dcaba2450d5bcce8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Not enough collateral in pool\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"AccessControl: sender must be an\")\n mstore(add(headStart, 96), \" admin to grant\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_98984f103b51115a1419edfc23f41285c32977e7b02cc32e067bba007d26b4f9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 23)\n mstore(add(headStart, 64), \"POOL::Minting is paused\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_2b6a8f4152754b6a991bf1b0a666b82b00923d2fd769bf1e3367643b70f91813__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Collateral ratio must be >= 1\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_cff49a4dc330adf1553dee705fac7862f639b33b74fda177589900b9506a9737__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"[Pool's Closed]: Ceiling reached\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_f836b804fb91fcbb3dafb5e724f5eeb776ededc2eaf47030c5f454694abcbafe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"POOL::mint1t1DEI: signature is e\")\n mstore(add(headStart, 96), \"xpired\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_3871818a433a796d8749bf69d3757469c36cba69a6da101f4f86b64a03c25fdf__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"POOL::mint1t1DEI: invalid signat\")\n mstore(add(headStart, 96), \"ures\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"AccessControl: can only renounce\")\n mstore(add(headStart, 96), \" roles for self\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, mload(srcPtr))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_encode_tuple_t_stringliteral_76b82cf0f5d67f7f31fa6377a21018dea36302e26d7842fad5ba832c330157dd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"POOL: Caller is not PARAMETER_SE\")\n mstore(add(headStart, 96), \"TTER_ROLE\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 224)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n mstore(add(headStart, 160), value5)\n mstore(add(headStart, 192), value6)\n }\n function abi_encode_tuple_t_stringliteral_3a4aaa4225031aefd603a0181e03bfba377ad02f3a40d8d4ff79e4b75af91117__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 56)\n mstore(add(headStart, 64), \"Collateral ratio needs to be bet\")\n mstore(add(headStart, 96), \"ween .000001 and .999999\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_415add743154eebc1c14f0dcbb6d42364bd9228c5bfab92187476352ba4cf3a4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 68)\n mstore(add(headStart, 64), \"Pool ceiling reached, no more DE\")\n mstore(add(headStart, 96), \"I can be minted with this collat\")\n mstore(add(headStart, 128), \"eral\")\n tail := add(headStart, 160)\n }\n function abi_encode_tuple_t_stringliteral_3517d2a2517b8811826efd915add7c546f6c6059a93aba596e992ef7ede2c237__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"POOL::mintFractionalDEI: signatu\")\n mstore(add(headStart, 96), \"re is expired.\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed(pos, value5, value4, value3, value2, value1, value0) -> end\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000\n mstore(pos, and(shl(96, value0), _1))\n mstore(add(pos, 20), value1)\n mstore(add(pos, 52), and(shl(96, value2), _1))\n mstore(add(pos, 72), value3)\n mstore(add(pos, 104), value4)\n mstore(add(pos, 136), value5)\n end := add(pos, 168)\n }\n function abi_encode_tuple_t_stringliteral_70791a0be90f5705149d45e0236213cb0328457b5d86e6288006e4f6774b09e7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"POOL::mintFractionalDEI: invalid\")\n mstore(add(headStart, 96), \" signatures\")\n tail := add(headStart, 128)\n }\n function abi_encode_struct_MintFD_Params(value, pos)\n {\n mstore(pos, mload(value))\n mstore(add(pos, 0x20), mload(add(value, 0x20)))\n mstore(add(pos, 0x40), mload(add(value, 0x40)))\n mstore(add(pos, 0x60), mload(add(value, 0x60)))\n }\n function abi_encode_tuple_t_struct$_MintFD_Params_$3600_memory_ptr__to_t_struct$_MintFD_Params_$3600_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 128)\n abi_encode_struct_MintFD_Params(value0, headStart)\n }\n function abi_decode_tuple_t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := mload(headStart)\n value1 := mload(add(headStart, 32))\n }\n function abi_encode_tuple_t_stringliteral_32c377f750f3acdff4f31738199007cf625ea4cb5a4b65f0253238ad0d6fe603__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"Not enough DEUS inputted\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_ffc61d1a84775e893520fbdfe0ea8909f9284081f97dd4e8ed1bc343abeb295e__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), \"amount<=daoShare\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_stringliteral_565f0845894e0f662254a5093763af0fee3605d54c84edbcf11c672de6a88543__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 51)\n mstore(add(headStart, 64), \"POOL::recollateralizeDEI: Recoll\")\n mstore(add(headStart, 96), \"ateralize is paused\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_43ec8f409eb317e256e176d402e36ec6af276af1f8f749e4d9fbe21bcd7bc664__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"POOL::recollateralizeDEI: signat\")\n mstore(add(headStart, 96), \"ure is expired.\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed(pos, value5, value4, value3, value2, value1, value0) -> end\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000\n mstore(pos, and(shl(96, value0), _1))\n let pos_1 := add(pos, 20)\n let length := mload(value1)\n pos_1 := pos_1\n let _2 := 0x20\n let srcPtr := add(value1, _2)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, mload(srcPtr))\n pos_1 := add(pos_1, _2)\n srcPtr := add(srcPtr, _2)\n }\n mstore(pos_1, and(shl(96, value2), _1))\n mstore(add(pos_1, 20), value3)\n mstore(add(pos_1, 52), value4)\n mstore(add(pos_1, 84), value5)\n end := add(pos_1, 116)\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 abi_encode_tuple_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n let tail_1 := add(headStart, 64)\n mstore(headStart, value0)\n let _1 := 32\n mstore(add(headStart, _1), 64)\n let pos := tail_1\n let length := mload(value1)\n mstore(tail_1, length)\n pos := add(headStart, 96)\n let tail_2 := add(add(headStart, shl(5, length)), 96)\n let srcPtr := add(value1, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0))\n let _2 := mload(srcPtr)\n let length_1 := mload(_2)\n mstore(tail_2, length_1)\n copy_memory_to_memory(add(_2, _1), add(tail_2, _1), length_1)\n tail_2 := add(add(tail_2, and(add(length_1, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), _1)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n tail := tail_2\n }\n function abi_encode_tuple_t_stringliteral_f8eb31fdc269657c54ee10149955fecbcb75254d3eeec631bdecc57de525010b__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), \"POOL::recollateralizeDEI: invali\")\n mstore(add(headStart, 96), \"d signatures\")\n tail := add(headStart, 128)\n }\n function panic_error_0x32()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 160)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n }\n function abi_encode_tuple_t_stringliteral_219e324e833041c644ccb1dd3dba73aaa878497ddb310916decd8247cfffb1bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 54)\n mstore(add(headStart, 64), \"POOL::redeemAlgorithmicDEI: Coll\")\n mstore(add(headStart, 96), \"ateral ratio must be 0\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_af86e93bd0220a55e8ca62f5f35862820e5999de1371ac209bb45c45b39ee5de__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 48)\n mstore(add(headStart, 64), \"DEI::redeemAlgorithmicDEI: signa\")\n mstore(add(headStart, 96), \"ture is expired.\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_bff4c2607c2670a7edf36f88b5d5987db2ccc6a59b36f486c4c57f193ba00833__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"POOL::redeemAlgorithmicDEI: inva\")\n mstore(add(headStart, 96), \"lid signatures\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_0f701899e5d254af158b94e181e8c864fa1fa8407b8e83a84b212f1856c034bb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"POOL::buyBackDEUS: Buyback is pa\")\n mstore(add(headStart, 96), \"used\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_74a9279f050c6419792bc3daa57da050d8e2f426f944681941d34e8909be7eac__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"DEI::buyBackDEUS: signature is e\")\n mstore(add(headStart, 96), \"xpired.\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_c668331e1a5c68ea41572b6fbf581e9b4ce7392915c1ff6a6872ae765618f9ee__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"POOL::buyBackDEUS: invalid signa\")\n mstore(add(headStart, 96), \"tures\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__to_t_struct$_BuybackDEUS_Params_$3609_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 128)\n abi_encode_struct_MintFD_Params(value0, headStart)\n }\n function abi_encode_tuple_t_stringliteral_f64a17d208f26e05f2312b5ee80f462bf5bab19979dfd330950359be93bd2d66__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 26)\n mstore(add(headStart, 64), \"Collateral ratio must be 0\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_5a2d3f9bcb3c5bd0b1926b1856db5dd186810b6e73d5cb9f87ee953c4da7fee2__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), \"POOL::mintAlgorithmicDEI: invali\")\n mstore(add(headStart, 96), \"d signatures\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 48)\n mstore(add(headStart, 64), \"AccessControl: sender must be an\")\n mstore(add(headStart, 96), \" admin to revoke\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_7b7d20f9ca6e9adc6378137dbeda8a962bb9bf07440b2b9db28bb53f4e464fce__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"POOL::you are not trusty\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_1eb003467dd04b32fe18359370bc0d0e41e237ed2bf1be23765de9081983dd0d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 83)\n mstore(add(headStart, 64), \"POOL::redeemFractionalDEI: Colla\")\n mstore(add(headStart, 96), \"teral ratio needs to be between \")\n mstore(add(headStart, 128), \".000001 and .999999\")\n tail := add(headStart, 160)\n }\n function abi_encode_tuple_t_stringliteral_d441a1ecab801b1c575c77e3c185431fd7b0029d666fc7417a9f7556b3f83d6f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"DEI::redeemFractionalDEI: signat\")\n mstore(add(headStart, 96), \"ure is expired\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_3cf3652b2acfb73942e459b043ef1100fffabb4093e48d3162412f77ff7ce9c4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"POOL::redeemFractionalDEI: inval\")\n mstore(add(headStart, 96), \"id signatures\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 31)\n mstore(add(headStart, 64), \"TransferHelper: TRANSFER_FAILED\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"TransferHelper: TRANSFER_FROM_FA\")\n mstore(add(headStart, 96), \"ILED\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"EnumerableSet: index out of boun\")\n mstore(add(headStart, 96), \"ds\")\n tail := add(headStart, 128)\n }\n function panic_error_0x31()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": { + "1600": [ + { + "length": 32, + "start": 3265 + }, + { + "length": 32, + "start": 5509 + }, + { + "length": 32, + "start": 8833 + }, + { + "length": 32, + "start": 11005 + }, + { + "length": 32, + "start": 11759 + }, + { + "length": 32, + "start": 13513 + }, + { + "length": 32, + "start": 14752 + }, + { + "length": 32, + "start": 18351 + } + ] + }, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506004361061032b5760003560e01c80637b0461e9116101b2578063b6258aaa116100f9578063cb73999f116100a2578063e3d84d5e1161007c578063e3d84d5e146106df578063eb2d7461146106f2578063f9abd26c14610705578063fede5c9c1461072557600080fd5b8063cb73999f146106bb578063d547741f146106c4578063daa50485146106d757600080fd5b8063c6301e5d116100d3578063c6301e5d1461068c578063c74ec56a1461069f578063ca15c873146106a857600080fd5b8063b6258aaa1461065d578063c3355b8d14610670578063c410ca1b1461067957600080fd5b806391d148541161015b578063a217fddf11610135578063a217fddf1461060f578063abae2c4c14610617578063b235d4681461063757600080fd5b806391d14854146105d6578063928d2b31146105e9578063978b73b5146105fc57600080fd5b80637f877f851161018c5780637f877f851461056d57806388d19f1b146105955780639010d07c1461059e57600080fd5b80637b0461e9146105375780637d55094d146105405780637e4831d31461054857600080fd5b806340e14b7811610276578063564b81ef1161021f5780636d2c5615116101f95780636d2c5615146104c65780636d82e314146104fd5780637901330b1461052457600080fd5b8063564b81ef146104905780635de207cc146104965780636526a12a146104bd57600080fd5b80634ebbe762116102505780634ebbe7621461046257806350c9ecd91461047557806354f9769d1461047d57600080fd5b806340e14b781461043e57806342d15aec146104515780634c6349341461045957600080fd5b80632f2ff15d116102d85780633648b7dc116102b25780633648b7dc1461040257806336568abe1461040b5780633b92da471461041e57600080fd5b80632f2ff15d146103b557806332ad1ee4146103c857806334ddb95d146103db57600080fd5b806315128425116103095780631512842514610376578063248a9ca31461037f578063254cd2bd146103a257600080fd5b806308a7493d14610330578063101197c71461036357806312ace5a21461036c575b600080fd5b61035061033e366004615193565b600a6020526000908152604090205481565b6040519081526020015b60405180910390f35b61035060075481565b61037461072e565b005b61035060115481565b61035061038d3660046151ae565b60009081526020819052604090206002015490565b6103746103b0366004615213565b6108e7565b6103746103c3366004615274565b610fde565b6103506103d6366004615213565b611094565b6103507f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610350600c5481565b610374610419366004615274565b61176a565b61035061042c366004615193565b60096020526000908152604090205481565b61035061044c3660046153d6565b611819565b610374611a37565b61035060105481565b610374610470366004615413565b611afe565b610374611c3d565b61035061048b36600461545f565b611cfb565b46610350565b6103507fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f24050981565b610350600e5481565b6013546104ed90760100000000000000000000000000000000000000000000900460ff1681565b604051901515815260200161035a565b6103507f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e53081565b610374610532366004615274565b612586565b610350600b5481565b61037461271a565b6013546104ed9074010000000000000000000000000000000000000000900460ff1681565b6013546104ed9077010000000000000000000000000000000000000000000000900460ff1681565b61035060125481565b6105b16105ac3660046154d3565b6127d5565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161035a565b6104ed6105e4366004615274565b6127f6565b6103746105f73660046155f7565b61280e565b61037461060a366004615213565b612f1a565b610350600081565b610350610625366004615193565b600d6020526000908152604090205481565b6013546104ed907501000000000000000000000000000000000000000000900460ff1681565b61035061066b3660046151ae565b6134bd565b61035060055481565b6103746106873660046156b0565b6135ac565b61035061069a366004615213565b613a91565b610350600f5481565b6103506106b63660046151ae565b614079565b61035060065481565b6103746106d2366004615274565b614090565b610374614138565b6103746106ed366004615737565b6141f4565b610374610700366004615773565b61431d565b6014546105b19073ffffffffffffffffffffffffffffffffffffffff1681565b61035060085481565b601154336000908152600d6020526040902054439161074c916157fa565b1115610805576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605b60248201527f504f4f4c3a3a636f6c6c656374526564656d7074696f6e3a204d75737420776160448201527f697420666f7220726564656d7074696f6e5f64656c617920626c6f636b73206260648201527f65666f726520636f6c6c656374696e6720726564656d7074696f6e0000000000608482015260a4015b60405180910390fd5b336000908152600960205260408120548190819081901561084d573360009081526009602052604081208054919055600c54909250610845908390615812565b600c55600193505b336000908152600a60205260409020541561088d5750336000908152600a602052604081208054919055600b54610885908290615812565b600b55600192505b83156108b7576004546108b79073ffffffffffffffffffffffffffffffffffffffff163384614b02565b82156108e1576001546108e19073ffffffffffffffffffffffffffffffffffffffff163383614b02565b50505050565b6013547501000000000000000000000000000000000000000000900460ff161561096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa1580156109df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a039190615829565b14610a6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203d3d203100000060448201526064016107fc565b43831015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90610bed9084908790879060040161588b565b602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e919061596d565b610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a72656465656d3174314445493a20696e76616c6964207369676e60448201527f617475726573000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000610ce77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b610cf19088615ac2565b6013546040517f068d54aa000000000000000000000000000000000000000000000000000000008152600481018990526024810183905291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063068d54aa90604401602060405180830381865afa158015610d6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d919190615829565b9050620f4240600654620f4240610da89190615812565b610db29083615afd565b610dbc9190615ac2565b600b546001546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152929350909173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e569190615829565b610e609190615812565b811115610ec9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a6020526040902054610ee49082906157fa565b336000908152600a6020526040902055600b54610f029082906157fa565b600b55336000908152600d60205260409020439055600654620f424090610f29908a615afd565b610f339190615ac2565b60126000828254610f4491906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae906044015b600060405180830381600087803b158015610fbc57600080fd5b505af1158015610fd0573d6000803e3d6000fd5b505050505050505050505050565b600082815260208190526040902060020154610ffa90336127f6565b611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084016107fc565b6110908282614c72565b5050565b60135460009074010000000000000000000000000000000000000000900460ff161561111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa15801561118e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b29190615829565b101561121a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203e3d203100000060448201526064016107fc565b600e54600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015289929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561128f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b39190615829565b6112bd9190615812565b6112c791906157fa565b111561132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5b506f6f6c277320436c6f7365645d3a204365696c696e67207265616368656460448201526064016107fc565b438410156113bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a6d696e743174314445493a207369676e6174757265206973206560448201527f787069726564000000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906114b29084908890889060040161588b565b602060405180830381865afa1580156114cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f3919061596d565b61157e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6d696e743174314445493a20696e76616c6964207369676e617460448201527f757265730000000000000000000000000000000000000000000000000000000060648201526084016107fc565b60006115ab7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6115b59089615afd565b6013546040517f882ab63a000000000000000000000000000000000000000000000000000000008152600481018a90526024810183905291925073ffffffffffffffffffffffffffffffffffffffff169063882ab63a90604401602060405180830381865afa15801561162c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116509190615829565b9250620f4240600554620f42406116679190615812565b6116719085615afd565b61167b9190615ac2565b6001549093506116a39073ffffffffffffffffffffffffffffffffffffffff1633308b614cd8565b620f4240600554846116b59190615afd565b6116bf9190615ac2565b601260008282546116d091906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561174757600080fd5b505af115801561175b573d6000803e3d6000fd5b50505050505095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016107fc565b6110908282614e76565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ad9190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561191e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119429190615829565b6003546040517f2480fcea00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690632480fcea9061199e908890600401615b3a565b602060405180830381865afa1580156119bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119df9190615829565b9050620f42408211156119f357620f424091505b6000620f4240611a038486615afd565b611a0d9190615ac2565b905080821115611a2b57611a218183615812565b9695505050505050565b50600095945050505050565b611a617f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f336127f6565b611a6a57600080fd5b6013805460ff76010000000000000000000000000000000000000000000080830482161581027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f2fda313d9b5bb0b73bd003153f2fccbc0dca49791fdd1184dfad82b44f54bd2e93611af49390049091161515815260200190565b60405180910390a1565b611b287fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f240509336127f6565b611bb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f504f4f4c3a2043616c6c6572206973206e6f7420504152414d455445525f534560448201527f545445525f524f4c45000000000000000000000000000000000000000000000060648201526084016107fc565b600e8790556010869055601185905560058490556006839055600782905560088190556040805188815260208101889052908101869052606081018590526080810184905260a0810183905260c081018290527f17fe98b66d27bd793ea01bd8a23a54acab8eeb167d9eb016a0c7cd71c573920c9060e00160405180910390a150505050505050565b611c677f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf336127f6565b611c7057600080fd5b6013805460ff7701000000000000000000000000000000000000000000000080830482161581027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f4f40fd1c59f78d7a2220da638cd9400daba01e57c7965702f390bf13133cc31f93611af49390049091161515815260200190565b60135460009074010000000000000000000000000000000000000000900460ff1615611d83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015611df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e179190615829565b9050620f424081108015611e2b5750600081115b611eb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f436f6c6c61746572616c20726174696f206e6565647320746f2062652062657460448201527f7765656e202e30303030303120616e64202e393939393939000000000000000060648201526084016107fc565b600e54600b546001546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528c929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f509190615829565b611f5a9190615812565b611f6491906157fa565b1115612019576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f506f6f6c206365696c696e6720726561636865642c206e6f206d6f7265204445908201527f492063616e206265206d696e7465642077697468207468697320636f6c6c617460648201527f6572616c00000000000000000000000000000000000000000000000000000000608482015260a4016107fc565b438510156120a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a207369676e61747560448201527f726520697320657870697265642e00000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018d90529390941b909316605484015260688301899052608883018890524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906121829084908990899060cc0161588b565b602060405180830381865afa15801561219f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c3919061596d565b61224f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a20696e76616c696460448201527f207369676e61747572657300000000000000000000000000000000000000000060648201526084016107fc565b61227a6040518060800160405280600081526020016000815260200160008152602001600081525090565b60006122a77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6122b1908d615afd565b604080516080810182528b8152602081018d9052808201929092526060820186905260135490517f537a30a70000000000000000000000000000000000000000000000000000000081529193506000925073ffffffffffffffffffffffffffffffffffffffff169063537a30a79061232d908590600401615b7e565b6040805180830381865afa158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190615ba9565b90955090508a8111156123dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e6f7420656e6f756768204445555320696e707574746564000000000000000060448201526064016107fc565b620f4240600554620f42406123f19190615812565b6123fb9087615afd565b6124059190615ac2565b600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820184905291965073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561247d57600080fd5b505af1158015612491573d6000803e3d6000fd5b50506001546124bb925073ffffffffffffffffffffffffffffffffffffffff16905033308f614cd8565b620f4240600554866124cd9190615afd565b6124d79190615ac2565b601260008282546124e891906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810187905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561255f57600080fd5b505af1158015612573573d6000803e3d6000fd5b5050505050505050979650505050505050565b6125b07f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e530336127f6565b6125b957600080fd5b601254821115612625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f616d6f756e743c3d64616f53686172650000000000000000000000000000000060448201526064016107fc565b6003546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018590529091169063b4f56b2690604401600060405180830381600087803b15801561269957600080fd5b505af11580156126ad573d6000803e3d6000fd5b5050505081601260008282546126c39190615812565b90915550506040805183815273ffffffffffffffffffffffffffffffffffffffff831660208201527f3a708f2f1c75b12457d207cf1e259ab9f87bbfccb29672903acf4661bd342e49910160405180910390a15050565b6127447fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b336127f6565b61274d57600080fd5b6013805460ff7401000000000000000000000000000000000000000080830482161581027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f6bdfe227d5db299c59aa56d5f846f40dbd73b271aaa78e18ed74fc3e00b8aa6b93611af49390049091161515815260200190565b60008281526020819052604081206127ed9083614edc565b90505b92915050565b60008281526020819052604081206127ed9083614ef2565b601354760100000000000000000000000000000000000000000000900460ff16156128bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a205265636f6c6c60448201527f61746572616c697a65206973207061757365640000000000000000000000000060648201526084016107fc565b438160800151101561294f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b6002546040828101516004546060850151608086015193516000956129989573ffffffffffffffffffffffffffffffffffffffff91821695949190911692914690602001615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052805160209091012060035460a08501517f6793f0ac00000000000000000000000000000000000000000000000000000000845291935073ffffffffffffffffffffffffffffffffffffffff1691636793f0ac91612a2991859190600401615c78565b602060405180830381865afa158015612a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6a919061596d565b612af6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6000612b237f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b8351612b2f9190615afd565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc49190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c599190615829565b60035460408088015190517f2480fcea00000000000000000000000000000000000000000000000000000000815292935060009273ffffffffffffffffffffffffffffffffffffffff90921691632480fcea91612cb891600401615b3a565b602060405180830381865afa158015612cd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf99190615829565b60135460408801518051929350600092839273ffffffffffffffffffffffffffffffffffffffff169163fc01106191899190612d3790600190615812565b81518110612d4757612d47615d36565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015260448101869052606481018890526084810187905260a4016040805180830381865afa158015612dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de39190615ba9565b90925090506000612e157f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b612e1f9084615ac2565b905060008960600151600854601054620f4240612e3c91906157fa565b612e469190615812565b612e509085615afd565b612e5a9190615ac2565b600154909150612e829073ffffffffffffffffffffffffffffffffffffffff16333085614cd8565b600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815233928101929092526024820183905273ffffffffffffffffffffffffffffffffffffffff169063b4f56b26906044015b600060405180830381600087803b158015612ef657600080fd5b505af1158015612f0a573d6000803e3d6000fd5b5050505050505050505050505050565b6013547501000000000000000000000000000000000000000000900460ff1615612fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561300d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130319190615829565b156130be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20436f6c6c60448201527f61746572616c20726174696f206d75737420626520300000000000000000000060648201526084016107fc565b4383101561314e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4445493a3a72656465656d416c676f726974686d69634445493a207369676e6160448201527f7475726520697320657870697265642e0000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906132419084908790879060040161588b565b602060405180830381865afa15801561325e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613282919061596d565b61330e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20696e766160448201527f6c6964207369676e61747572657300000000000000000000000000000000000060648201526084016107fc565b6006548690620f4240906133229082615812565b61332c9083615afd565b6133369190615ac2565b9050600086613348620f424084615afd565b6133529190615ac2565b336000908152600960205260409020549091506133709082906157fa565b33600090815260096020526040902055600c5461338e9082906157fa565b600c55336000908152600d60205260409020439055600654620f4240906133b5908a615afd565b6133bf9190615ac2565b601260008282546133d091906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561344757600080fd5b505af115801561345b573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820185905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401610fa2565b6000620f4240826134ef7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015613560573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135849190615829565b61358e9190615812565b6135989190615afd565b6135a29190615afd565b6127f09190615ac2565b60135477010000000000000000000000000000000000000000000000900460ff1615613659576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6275794261636b444555533a204275796261636b20697320706160448201527f757365640000000000000000000000000000000000000000000000000000000060648201526084016107fc565b438310156136e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4445493a3a6275794261636b444555533a207369676e6174757265206973206560448201527f7870697265642e0000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460045460009173ffffffffffffffffffffffffffffffffffffffff9081169188911687874660405160200161372696959493929190615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906137b59084908790879060040161588b565b602060405180830381865afa1580156137d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f6919061596d565b613882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f504f4f4c3a3a6275794261636b444555533a20696e76616c6964207369676e6160448201527f747572657300000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000604051806080016040528061389889611819565b81526020018781526020018860018a516138b29190615812565b815181106138c2576138c2615d36565b602002602001015181526020018981525090506000620f4240600754620f42406138ec9190615812565b6013546040517f3c04af9f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633c04af9f90613942908790600401615b7e565b602060405180830381865afa15801561395f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139839190615829565b61398d9190615afd565b6139979190615ac2565b905060006139c67f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6139d09083615ac2565b600480546040517fa8a778ae0000000000000000000000000000000000000000000000000000000081523392810192909252602482018d905291925073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015613a4857600080fd5b505af1158015613a5c573d6000803e3d6000fd5b5050600154613a85925073ffffffffffffffffffffffffffffffffffffffff1690503383614b02565b50505050505050505050565b60135460009074010000000000000000000000000000000000000000900460ff1615613b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613baa9190615829565b15613c11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f436f6c6c61746572616c20726174696f206d757374206265203000000000000060448201526064016107fc565b43841015613ca1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90613d949084908890889060040161588b565b602060405180830381865afa158015613db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dd5919061596d565b613e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6013546040517f14da4ee1000000000000000000000000000000000000000000000000000000008152600481018890526024810189905273ffffffffffffffffffffffffffffffffffffffff909116906314da4ee190604401602060405180830381865afa158015613ed7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613efb9190615829565b9150620f4240600554620f4240613f129190615812565b613f1c9084615afd565b613f269190615ac2565b9150620f424060055483613f3a9190615afd565b613f449190615ac2565b60126000828254613f5591906157fa565b9091555050600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820189905273ffffffffffffffffffffffffffffffffffffffff169063a8a778ae90604401600060405180830381600087803b158015613fcd57600080fd5b505af1158015613fe1573d6000803e3d6000fd5b50506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810186905273ffffffffffffffffffffffffffffffffffffffff909116925063b4f56b269150604401600060405180830381600087803b15801561405757600080fd5b505af115801561406b573d6000803e3d6000fd5b505050505095945050505050565b60008181526020819052604081206127f090614f31565b6000828152602081905260409020600201546140ac90336127f6565b61180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b650000000000000000000000000000000060648201526084016107fc565b6141627fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c3857336127f6565b61416b57600080fd5b6013805460ff750100000000000000000000000000000000000000000080830482161581027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f5860c5063a65e23cea4e2e2925f1a841bb6d1bc9615bd425f8dd084980b0514193611af49390049091161515815260200190565b61421e7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336127f6565b614284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f504f4f4c3a3a796f7520617265206e6f7420747275737479000000000000000060448201526064016107fc565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af11580156142f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e1919061596d565b6013547501000000000000000000000000000000000000000000900460ff16156143a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015614413573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144379190615829565b9050620f42408110801561444b5750600081115b6144fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20436f6c6c6160448201527f746572616c20726174696f206e6565647320746f206265206265747765656e2060648201527f2e30303030303120616e64202e39393939393900000000000000000000000000608482015260a4016107fc565b4384101561458d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4445493a3a72656465656d4672616374696f6e616c4445493a207369676e617460448201527f757265206973206578706972656400000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018c90529390941b909316605484015260688301889052608883018790524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906146669084908890889060cc0161588b565b602060405180830381865afa158015614683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146a7919061596d565b614733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20696e76616c60448201527f6964207369676e6174757265730000000000000000000000000000000000000060648201526084016107fc565b60008060008990506000620f4240600654620f42406147529190615812565b61475c908e615afd565b6147669190615ac2565b90506000620f42406147788884615afd565b6147829190615ac2565b61478c9083615812565b90508a61479c620f424083615afd565b6147a69190615ac2565b945060006147d57f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6147df9084615ac2565b90506000620f42406147f18a84615afd565b6147fb9190615ac2565b90508461480b620f424083615afd565b6148159190615ac2565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015292985090965073ffffffffffffffffffffffffffffffffffffffff1694506370a08231935060240191506148789050565b602060405180830381865afa158015614895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148b99190615829565b6148c39190615812565b81111561492c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a60205260409020546149479082906157fa565b336000908152600a6020526040902055600b546149659082906157fa565b600b55336000908152600960205260409020546149839083906157fa565b33600090815260096020526040902055600c546149a19083906157fa565b600c55336000908152600d60205260409020439055600654620f4240906149c8908c615afd565b6149d29190615ac2565b601260008282546149e391906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018c905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015614a5a57600080fd5b505af1158015614a6e573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820186905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401612edc565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16614f3b565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691614b999190615d65565b6000604051808303816000865af19150503d8060008114614bd6576040519150601f19603f3d011682016040523d82523d6000602084013e614bdb565b606091505b5091509150818015614c05575080511580614c05575080806020019051810190614c05919061596d565b614c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016107fc565b5050505050565b6000828152602081905260409020614c8a9082614ad0565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691614d779190615d65565b6000604051808303816000865af19150503d8060008114614db4576040519150601f19603f3d011682016040523d82523d6000602084013e614db9565b606091505b5091509150818015614de3575080511580614de3575080806020019051810190614de3919061596d565b614e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016107fc565b505050505050565b6000828152602081905260409020614e8e9082614f8a565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000614ee88383614fbc565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156127ed565b60006127f0825490565b6000818152600183016020526040812054614f82575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556127f0565b5060006127f0565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16615077565b8154600090821061504f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f647300000000000000000000000000000000000000000000000000000000000060648201526084016107fc565b82600001828154811061506457615064615d36565b9060005260206000200154905092915050565b6000818152600183016020526040812054801561516057600061509b600183615812565b85549091506000906150af90600190615812565b905060008660000182815481106150c8576150c8615d36565b90600052602060002001549050808760000184815481106150eb576150eb615d36565b6000918252602090912001556151028360016157fa565b6000828152600189016020526040902055865487908061512457615124615d81565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506127f0565b60009150506127f0565b803573ffffffffffffffffffffffffffffffffffffffff8116811461518e57600080fd5b919050565b6000602082840312156151a557600080fd5b6127ed8261516a565b6000602082840312156151c057600080fd5b5035919050565b60008083601f8401126151d957600080fd5b50813567ffffffffffffffff8111156151f157600080fd5b6020830191508360208260051b850101111561520c57600080fd5b9250929050565b60008060008060006080868803121561522b57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561525757600080fd5b615263888289016151c7565b969995985093965092949392505050565b6000806040838503121561528757600080fd5b823591506152976020840161516a565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff811182821017156152f2576152f26152a0565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561533f5761533f6152a0565b604052919050565b600067ffffffffffffffff821115615361576153616152a0565b5060051b60200190565b600082601f83011261537c57600080fd5b8135602061539161538c83615347565b6152f8565b82815260059290921b840181019181810190868411156153b057600080fd5b8286015b848110156153cb57803583529183019183016153b4565b509695505050505050565b6000602082840312156153e857600080fd5b813567ffffffffffffffff8111156153ff57600080fd5b61540b8482850161536b565b949350505050565b600080600080600080600060e0888a03121561542e57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080600080600080600060c0888a03121561547a57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a088013567ffffffffffffffff8111156154b457600080fd5b6154c08a828b016151c7565b989b979a50959850939692959293505050565b600080604083850312156154e657600080fd5b50508035926020909101359150565b6000601f838184011261550757600080fd5b8235602061551761538c83615347565b82815260059290921b8501810191818101908784111561553657600080fd5b8287015b848110156155eb57803567ffffffffffffffff8082111561555b5760008081fd5b818a0191508a603f8301126155705760008081fd5b85820135604082821115615586576155866152a0565b6155b5887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c850116016152f8565b92508183528c818386010111156155cc5760008081fd5b818185018985013750600090820187015284525091830191830161553a565b50979650505050505050565b60006020828403121561560957600080fd5b813567ffffffffffffffff8082111561562157600080fd5b9083019060c0828603121561563557600080fd5b61563d6152cf565b823581526020830135602082015260408301358281111561565d57600080fd5b6156698782860161536b565b604083015250606083013560608201526080830135608082015260a08301358281111561569557600080fd5b6156a1878286016154f5565b60a08301525095945050505050565b60008060008060008060a087890312156156c957600080fd5b86359550602087013567ffffffffffffffff808211156156e857600080fd5b6156f48a838b0161536b565b96506040890135955060608901359450608089013591508082111561571857600080fd5b5061572589828a016151c7565b979a9699509497509295939492505050565b60008060006060848603121561574c57600080fd5b6157558461516a565b92506020840135915061576a6040850161516a565b90509250925092565b60008060008060008060a0878903121561578c57600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff8111156157bf57600080fd5b61572589828a016151c7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561580d5761580d6157cb565b500190565b600082821015615824576158246157cb565b500390565b60006020828403121561583b57600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b8781101561595f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18a360301811261591657600080fd5b8901803567ffffffffffffffff81111561592f57600080fd5b8036038b131561593e57600080fd5b61594b8782888501615842565b9650505091830191908301906001016158b5565b509298975050505050505050565b60006020828403121561597f57600080fd5b8151801515811461598f57600080fd5b9392505050565b600181815b808511156159ef57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156159d5576159d56157cb565b808516156159e257918102915b93841c939080029061599b565b509250929050565b600082615a06575060016127f0565b81615a13575060006127f0565b8160018114615a295760028114615a3357615a4f565b60019150506127f0565b60ff841115615a4457615a446157cb565b50506001821b6127f0565b5060208310610133831016604e8410600b8410161715615a72575081810a6127f0565b615a7c8383615996565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615aae57615aae6157cb565b029392505050565b60006127ed83836159f7565b600082615af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615b3557615b356157cb565b500290565b6020808252825182820181905260009190848201906040850190845b81811015615b7257835183529284019291840191600101615b56565b50909695505050505050565b81518152602080830151908201526040808301519082015260608083015190820152608081016127f0565b60008060408385031215615bbc57600080fd5b505080516020909101519092909150565b60007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808960601b1683526014830188516020808b0160005b83811015615c2257815185529382019390820190600101615c06565b5050505060609790971b168652505060148401929092526034830152605482015260740192915050565b60005b83811015615c67578181015183820152602001615c4f565b838111156108e15750506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015615d28577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088870301845281518051808852615ceb81888a01898501615c4c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01696909601850195509284019290840190600101615ca6565b509398975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008251615d77818460208701615c4c565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212204622a05d75c89b78cbc019e8eea4cfb3dfa44f6208b9d4d768626026b70bda0b64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x32B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7B0461E9 GT PUSH2 0x1B2 JUMPI DUP1 PUSH4 0xB6258AAA GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xCB73999F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xE3D84D5E GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xE3D84D5E EQ PUSH2 0x6DF JUMPI DUP1 PUSH4 0xEB2D7461 EQ PUSH2 0x6F2 JUMPI DUP1 PUSH4 0xF9ABD26C EQ PUSH2 0x705 JUMPI DUP1 PUSH4 0xFEDE5C9C EQ PUSH2 0x725 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCB73999F EQ PUSH2 0x6BB JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x6C4 JUMPI DUP1 PUSH4 0xDAA50485 EQ PUSH2 0x6D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC6301E5D GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xC6301E5D EQ PUSH2 0x68C JUMPI DUP1 PUSH4 0xC74EC56A EQ PUSH2 0x69F JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x6A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB6258AAA EQ PUSH2 0x65D JUMPI DUP1 PUSH4 0xC3355B8D EQ PUSH2 0x670 JUMPI DUP1 PUSH4 0xC410CA1B EQ PUSH2 0x679 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 GT PUSH2 0x15B JUMPI DUP1 PUSH4 0xA217FDDF GT PUSH2 0x135 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x60F JUMPI DUP1 PUSH4 0xABAE2C4C EQ PUSH2 0x617 JUMPI DUP1 PUSH4 0xB235D468 EQ PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 EQ PUSH2 0x5D6 JUMPI DUP1 PUSH4 0x928D2B31 EQ PUSH2 0x5E9 JUMPI DUP1 PUSH4 0x978B73B5 EQ PUSH2 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7F877F85 GT PUSH2 0x18C JUMPI DUP1 PUSH4 0x7F877F85 EQ PUSH2 0x56D JUMPI DUP1 PUSH4 0x88D19F1B EQ PUSH2 0x595 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7B0461E9 EQ PUSH2 0x537 JUMPI DUP1 PUSH4 0x7D55094D EQ PUSH2 0x540 JUMPI DUP1 PUSH4 0x7E4831D3 EQ PUSH2 0x548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x40E14B78 GT PUSH2 0x276 JUMPI DUP1 PUSH4 0x564B81EF GT PUSH2 0x21F JUMPI DUP1 PUSH4 0x6D2C5615 GT PUSH2 0x1F9 JUMPI DUP1 PUSH4 0x6D2C5615 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x6D82E314 EQ PUSH2 0x4FD JUMPI DUP1 PUSH4 0x7901330B EQ PUSH2 0x524 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x564B81EF EQ PUSH2 0x490 JUMPI DUP1 PUSH4 0x5DE207CC EQ PUSH2 0x496 JUMPI DUP1 PUSH4 0x6526A12A EQ PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4EBBE762 GT PUSH2 0x250 JUMPI DUP1 PUSH4 0x4EBBE762 EQ PUSH2 0x462 JUMPI DUP1 PUSH4 0x50C9ECD9 EQ PUSH2 0x475 JUMPI DUP1 PUSH4 0x54F9769D EQ PUSH2 0x47D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x40E14B78 EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0x42D15AEC EQ PUSH2 0x451 JUMPI DUP1 PUSH4 0x4C634934 EQ PUSH2 0x459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D GT PUSH2 0x2D8 JUMPI DUP1 PUSH4 0x3648B7DC GT PUSH2 0x2B2 JUMPI DUP1 PUSH4 0x3648B7DC EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x40B JUMPI DUP1 PUSH4 0x3B92DA47 EQ PUSH2 0x41E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x3B5 JUMPI DUP1 PUSH4 0x32AD1EE4 EQ PUSH2 0x3C8 JUMPI DUP1 PUSH4 0x34DDB95D EQ PUSH2 0x3DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x15128425 GT PUSH2 0x309 JUMPI DUP1 PUSH4 0x15128425 EQ PUSH2 0x376 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x37F JUMPI DUP1 PUSH4 0x254CD2BD EQ PUSH2 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8A7493D EQ PUSH2 0x330 JUMPI DUP1 PUSH4 0x101197C7 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0x12ACE5A2 EQ PUSH2 0x36C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x350 PUSH2 0x33E CALLDATASIZE PUSH1 0x4 PUSH2 0x5193 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x350 PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x72E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x350 PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x38D CALLDATASIZE PUSH1 0x4 PUSH2 0x51AE JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x3B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x3C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0xFDE JUMP JUMPDEST PUSH2 0x350 PUSH2 0x3D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x1094 JUMP JUMPDEST PUSH2 0x350 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x419 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x176A JUMP JUMPDEST PUSH2 0x350 PUSH2 0x42C CALLDATASIZE PUSH1 0x4 PUSH2 0x5193 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x44C CALLDATASIZE PUSH1 0x4 PUSH2 0x53D6 JUMP JUMPDEST PUSH2 0x1819 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x1A37 JUMP JUMPDEST PUSH2 0x350 PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x470 CALLDATASIZE PUSH1 0x4 PUSH2 0x5413 JUMP JUMPDEST PUSH2 0x1AFE JUMP JUMPDEST PUSH2 0x374 PUSH2 0x1C3D JUMP JUMPDEST PUSH2 0x350 PUSH2 0x48B CALLDATASIZE PUSH1 0x4 PUSH2 0x545F JUMP JUMPDEST PUSH2 0x1CFB JUMP JUMPDEST CHAINID PUSH2 0x350 JUMP JUMPDEST PUSH2 0x350 PUSH32 0xE08E6E8E2E796F02419355C6FA268D1461FE6F2F34114A881A2DB47C0F240509 DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x35A JUMP JUMPDEST PUSH2 0x350 PUSH32 0xD4A2989857A24DE9C91E1DAFFE87D051D59F52B68729413D1EF656EC487E530 DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x532 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x2586 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x271A JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH24 0x10000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH1 0x12 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x5B1 PUSH2 0x5AC CALLDATASIZE PUSH1 0x4 PUSH2 0x54D3 JUMP JUMPDEST PUSH2 0x27D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x35A JUMP JUMPDEST PUSH2 0x4ED PUSH2 0x5E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x5F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x55F7 JUMP JUMPDEST PUSH2 0x280E JUMP JUMPDEST PUSH2 0x374 PUSH2 0x60A CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x2F1A JUMP JUMPDEST PUSH2 0x350 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x625 CALLDATASIZE PUSH1 0x4 PUSH2 0x5193 JUMP JUMPDEST PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH2 0x4ED SWAP1 PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x66B CALLDATASIZE PUSH1 0x4 PUSH2 0x51AE JUMP JUMPDEST PUSH2 0x34BD JUMP JUMPDEST PUSH2 0x350 PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x687 CALLDATASIZE PUSH1 0x4 PUSH2 0x56B0 JUMP JUMPDEST PUSH2 0x35AC JUMP JUMPDEST PUSH2 0x350 PUSH2 0x69A CALLDATASIZE PUSH1 0x4 PUSH2 0x5213 JUMP JUMPDEST PUSH2 0x3A91 JUMP JUMPDEST PUSH2 0x350 PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x6B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x51AE JUMP JUMPDEST PUSH2 0x4079 JUMP JUMPDEST PUSH2 0x350 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x6D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x5274 JUMP JUMPDEST PUSH2 0x4090 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x4138 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x6ED CALLDATASIZE PUSH1 0x4 PUSH2 0x5737 JUMP JUMPDEST PUSH2 0x41F4 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x700 CALLDATASIZE PUSH1 0x4 PUSH2 0x5773 JUMP JUMPDEST PUSH2 0x431D JUMP JUMPDEST PUSH1 0x14 SLOAD PUSH2 0x5B1 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x350 PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x11 SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD NUMBER SWAP2 PUSH2 0x74C SWAP2 PUSH2 0x57FA JUMP JUMPDEST GT ISZERO PUSH2 0x805 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x5B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A636F6C6C656374526564656D7074696F6E3A204D757374207761 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x697420666F7220726564656D7074696F6E5F64656C617920626C6F636B732062 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x65666F726520636F6C6C656374696E6720726564656D7074696F6E0000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 DUP2 SWAP1 DUP2 SWAP1 ISZERO PUSH2 0x84D JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SSTORE PUSH1 0xC SLOAD SWAP1 SWAP3 POP PUSH2 0x845 SWAP1 DUP4 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH1 0xC SSTORE PUSH1 0x1 SWAP4 POP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x88D JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SWAP1 SSTORE PUSH1 0xB SLOAD PUSH2 0x885 SWAP1 DUP3 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH1 0xB SSTORE PUSH1 0x1 SWAP3 POP JUMPDEST DUP4 ISZERO PUSH2 0x8B7 JUMPI PUSH1 0x4 SLOAD PUSH2 0x8B7 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP5 PUSH2 0x4B02 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x8E1 JUMPI PUSH1 0x1 SLOAD PUSH2 0x8E1 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP4 PUSH2 0x4B02 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x96D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH3 0xF4240 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA03 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST EQ PUSH2 0xA6A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D757374206265203D3D2031000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0xAFA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0xBED SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC2E SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0xCBA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D3174314445493A20696E76616C6964207369676E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6174757265730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCE7 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0xCF1 SWAP1 DUP9 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x68D54AA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x68D54AA SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD6D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD91 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 PUSH1 0x6 SLOAD PUSH3 0xF4240 PUSH2 0xDA8 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0xDB2 SWAP1 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0xDBC SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE32 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE56 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0xE60 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0xEC9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F75676820636F6C6C61746572616C20696E20706F6F6C000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xEE4 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xB SLOAD PUSH2 0xF02 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xB SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0xF29 SWAP1 DUP11 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0xF33 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xF44 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP11 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFD0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xFFA SWAP1 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1086 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F206772616E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x1090 DUP3 DUP3 PUSH2 0x4C72 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x111C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH3 0xF4240 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x118E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11B2 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST LT ISZERO PUSH2 0x121A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D757374206265203E3D2031000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP10 SWAP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x128F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12B3 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x12BD SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x12C7 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST GT ISZERO PUSH2 0x132F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5B506F6F6C277320436C6F7365645D3A204365696C696E672072656163686564 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x13BF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E743174314445493A207369676E61747572652069732065 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7870697265640000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x14B2 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14CF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14F3 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x157E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E743174314445493A20696E76616C6964207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7572657300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15AB PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x15B5 SWAP1 DUP10 PUSH2 0x5AFD JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x882AB63A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP11 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x882AB63A SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x162C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1650 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP3 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x1667 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x1671 SWAP1 DUP6 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x167B SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP4 POP PUSH2 0x16A3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER ADDRESS DUP12 PUSH2 0x4CD8 JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP5 PUSH2 0x16B5 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x16BF SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x16D0 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1747 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x175B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ PUSH2 0x180F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x1090 DUP3 DUP3 PUSH2 0x4E76 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1889 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18AD SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x191E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1942 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2480FCEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x2480FCEA SWAP1 PUSH2 0x199E SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B3A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19DF SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP3 GT ISZERO PUSH2 0x19F3 JUMPI PUSH3 0xF4240 SWAP2 POP JUMPDEST PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x1A03 DUP5 DUP7 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x1A0D SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1A2B JUMPI PUSH2 0x1A21 DUP2 DUP4 PUSH2 0x5812 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1A61 PUSH32 0x8118EEB5231A5FE4008A55B62860F6A0DB4F6C3AC04F8141927A9B3FEDD86D2F CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1A6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x2FDA313D9B5BB0B73BD003153F2FCCBC0DCA49791FDD1184DFAD82B44F54BD2E SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x1B28 PUSH32 0xE08E6E8E2E796F02419355C6FA268D1461FE6F2F34114A881A2DB47C0F240509 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1BB4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A2043616C6C6572206973206E6F7420504152414D455445525F5345 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x545445525F524F4C450000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0xE DUP8 SWAP1 SSTORE PUSH1 0x10 DUP7 SWAP1 SSTORE PUSH1 0x11 DUP6 SWAP1 SSTORE PUSH1 0x5 DUP5 SWAP1 SSTORE PUSH1 0x6 DUP4 SWAP1 SSTORE PUSH1 0x7 DUP3 SWAP1 SSTORE PUSH1 0x8 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x17FE98B66D27BD793EA01BD8A23A54ACAB8EEB167D9EB016A0C7CD71C573920C SWAP1 PUSH1 0xE0 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1C67 PUSH32 0x103DA79FF3755FF7A17A557D28B73D37CB4DE0B3C3CC02FA6C48DF0F35071FBF CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x1C70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH24 0x10000000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x4F40FD1C59F78D7A2220DA638CD9400DABA01E57C7965702F390BF13133CC31F SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1D83 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DF3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E17 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP2 LT DUP1 ISZERO PUSH2 0x1E2B JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x1EB7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206E6565647320746F20626520626574 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7765656E202E30303030303120616E64202E3939393939390000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP13 SWAP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F50 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x1F5A SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x1F64 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST GT ISZERO PUSH2 0x2019 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x44 PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0x506F6F6C206365696C696E6720726561636865642C206E6F206D6F7265204445 SWAP1 DUP3 ADD MSTORE PUSH32 0x492063616E206265206D696E7465642077697468207468697320636F6C6C6174 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x6572616C00000000000000000000000000000000000000000000000000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP6 LT ISZERO PUSH2 0x20A9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E744672616374696F6E616C4445493A207369676E617475 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x726520697320657870697265642E000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x34 DUP4 ADD DUP14 SWAP1 MSTORE SWAP4 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x54 DUP5 ADD MSTORE PUSH1 0x68 DUP4 ADD DUP10 SWAP1 MSTORE PUSH1 0x88 DUP4 ADD DUP9 SWAP1 MSTORE CHAINID PUSH1 0xA8 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC8 DUP5 ADD SWAP2 DUP3 SWAP1 MSTORE DUP1 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 MSTORE SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x2182 SWAP1 DUP5 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0xCC ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x219F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x21C3 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x224F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E744672616374696F6E616C4445493A20696E76616C6964 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207369676E617475726573000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x227A PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22A7 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x22B1 SWAP1 DUP14 PUSH2 0x5AFD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE DUP12 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP14 SWAP1 MSTORE DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x13 SLOAD SWAP1 MLOAD PUSH32 0x537A30A700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x537A30A7 SWAP1 PUSH2 0x232D SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2349 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x236D SWAP2 SWAP1 PUSH2 0x5BA9 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP1 POP DUP11 DUP2 GT ISZERO PUSH2 0x23DC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F756768204445555320696E7075747465640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x23F1 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x23FB SWAP1 DUP8 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x2405 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE SWAP2 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x247D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2491 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH2 0x24BB SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP CALLER ADDRESS DUP16 PUSH2 0x4CD8 JUMP JUMPDEST PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP7 PUSH2 0x24CD SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x24D7 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x24E8 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x255F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2573 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x25B0 PUSH32 0xD4A2989857A24DE9C91E1DAFFE87D051D59F52B68729413D1EF656EC487E530 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x25B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x12 SLOAD DUP3 GT ISZERO PUSH2 0x2625 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x616D6F756E743C3D64616F536861726500000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x26C3 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x3A708F2F1C75B12457D207CF1E259AB9F87BBFCCB29672903ACF4661BD342E49 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x2744 PUSH32 0xC65532185ED70B2E999433E2E9FAC124E083ACB13EC183A4E05944DA0792337B CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x274D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH21 0x10000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x6BDFE227D5DB299C59AA56D5F846F40DBD73B271AAA78E18ED74FC3E00B8AA6B SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27ED SWAP1 DUP4 PUSH2 0x4EDC JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27ED SWAP1 DUP4 PUSH2 0x4EF2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x28BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A205265636F6C6C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x61746572616C697A652069732070617573656400000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP2 PUSH1 0x80 ADD MLOAD LT ISZERO PUSH2 0x294F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP3 DUP2 ADD MLOAD PUSH1 0x4 SLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x80 DUP7 ADD MLOAD SWAP4 MLOAD PUSH1 0x0 SWAP6 PUSH2 0x2998 SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP6 SWAP5 SWAP2 SWAP1 SWAP2 AND SWAP3 SWAP2 CHAINID SWAP1 PUSH1 0x20 ADD PUSH2 0x5BCD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH1 0xA0 DUP6 ADD MLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE SWAP2 SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x6793F0AC SWAP2 PUSH2 0x2A29 SWAP2 DUP6 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x5C78 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A46 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A6A SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x2AF6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A7265636F6C6C61746572616C697A654445493A20696E76616C69 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x64207369676E6174757265730000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B23 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST DUP4 MLOAD PUSH2 0x2B2F SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BC4 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C35 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C59 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 DUP9 ADD MLOAD SWAP1 MLOAD PUSH32 0x2480FCEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x2480FCEA SWAP2 PUSH2 0x2CB8 SWAP2 PUSH1 0x4 ADD PUSH2 0x5B3A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2CD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2CF9 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 DUP9 ADD MLOAD DUP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0xFC011061 SWAP2 DUP10 SWAP2 SWAP1 PUSH2 0x2D37 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x2D47 JUMPI PUSH2 0x2D47 PUSH2 0x5D36 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x84 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DBF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2DE3 SWAP2 SWAP1 PUSH2 0x5BA9 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x2E15 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x2E1F SWAP1 DUP5 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP10 PUSH1 0x60 ADD MLOAD PUSH1 0x8 SLOAD PUSH1 0x10 SLOAD PUSH3 0xF4240 PUSH2 0x2E3C SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH2 0x2E46 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x2E50 SWAP1 DUP6 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x2E5A SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH2 0x2E82 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER ADDRESS DUP6 PUSH2 0x4CD8 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2EF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x2FA0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x300D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3031 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST ISZERO PUSH2 0x30BE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x36 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D416C676F726974686D69634445493A20436F6C6C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x61746572616C20726174696F206D757374206265203000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0x314E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A72656465656D416C676F726974686D69634445493A207369676E61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7475726520697320657870697265642E00000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x3241 SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x325E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3282 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x330E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D416C676F726974686D69634445493A20696E7661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964207369676E617475726573000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x6 SLOAD DUP7 SWAP1 PUSH3 0xF4240 SWAP1 PUSH2 0x3322 SWAP1 DUP3 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x332C SWAP1 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3336 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH2 0x3348 PUSH3 0xF4240 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3352 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x3370 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xC SLOAD PUSH2 0x338E SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xC SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0x33B5 SWAP1 DUP11 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x33BF SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x33D0 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP11 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3447 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x345B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH2 0xFA2 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xF4240 DUP3 PUSH2 0x34EF PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3560 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3584 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x358E SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x3598 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x35A2 SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x27F0 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH24 0x10000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3659 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6275794261636B444555533A204275796261636B206973207061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7573656400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP4 LT ISZERO PUSH2 0x36E9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A6275794261636B444555533A207369676E61747572652069732065 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7870697265642E00000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 DUP9 SWAP2 AND DUP8 DUP8 CHAINID PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3726 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5BCD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x37B5 SWAP1 DUP5 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x37D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37F6 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x3882 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6275794261636B444555533A20696E76616C6964207369676E61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7475726573000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x3898 DUP10 PUSH2 0x1819 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 DUP11 MLOAD PUSH2 0x38B2 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x38C2 JUMPI PUSH2 0x38C2 PUSH2 0x5D36 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH1 0x7 SLOAD PUSH3 0xF4240 PUSH2 0x38EC SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x3C04AF9F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x3C04AF9F SWAP1 PUSH2 0x3942 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B7E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x395F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3983 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x398D SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3997 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x39C6 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x39D0 SWAP1 DUP4 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP14 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH2 0x3A85 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP CALLER DUP4 PUSH2 0x4B02 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3B19 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A4D696E74696E6720697320706175736564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2EB9771B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3BAA SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST ISZERO PUSH2 0x3C11 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6C6C61746572616C20726174696F206D7573742062652030000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x3CA1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x75726520697320657870697265642E0000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 CHAINID PUSH1 0x40 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x34 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x54 DUP4 ADD MSTORE PUSH1 0x74 DUP3 ADD MSTORE PUSH1 0x94 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x3D94 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3DB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3DD5 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x3E61 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A6D696E74416C676F726974686D69634445493A20696E76616C69 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x64207369676E6174757265730000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH1 0x40 MLOAD PUSH32 0x14DA4EE100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x14DA4EE1 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3ED7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3EFB SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP2 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD PUSH3 0xF4240 PUSH2 0x3F12 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x3F1C SWAP1 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3F26 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP2 POP PUSH3 0xF4240 PUSH1 0x5 SLOAD DUP4 PUSH2 0x3F3A SWAP2 SWAP1 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x3F44 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3F55 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3FCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3FE1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4057 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x406B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x27F0 SWAP1 PUSH2 0x4F31 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x40AC SWAP1 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x180F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F207265766F6B6500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x4162 PUSH32 0xA84A5389AD41F9AAB0831B01E5384CAE76E7A7FD09131C206FF7927C201C3857 CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x416B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH1 0xFF PUSH22 0x1000000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND ISZERO DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x5860C5063A65E23CEA4E2E2925F1A841BB6D1BC9615BD425F8DD084980B05141 SWAP4 PUSH2 0x1AF4 SWAP4 SWAP1 DIV SWAP1 SWAP2 AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x421E PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x4284 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A796F7520617265206E6F74207472757374790000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE DUP5 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x42F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8E1 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x13 SLOAD PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x43A3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A52656465656D696E672069732070617573656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x2EB9771B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x2EB9771B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4413 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4437 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST SWAP1 POP PUSH3 0xF4240 DUP2 LT DUP1 ISZERO PUSH2 0x444B JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x44FD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x53 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D4672616374696F6E616C4445493A20436F6C6C61 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x746572616C20726174696F206E6565647320746F206265206265747765656E20 PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x2E30303030303120616E64202E39393939393900000000000000000000000000 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x7FC JUMP JUMPDEST NUMBER DUP5 LT ISZERO PUSH2 0x458D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4445493A3A72656465656D4672616374696F6E616C4445493A207369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7572652069732065787069726564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x4 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x34 DUP4 ADD DUP13 SWAP1 MSTORE SWAP4 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x54 DUP5 ADD MSTORE PUSH1 0x68 DUP4 ADD DUP9 SWAP1 MSTORE PUSH1 0x88 DUP4 ADD DUP8 SWAP1 MSTORE CHAINID PUSH1 0xA8 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC8 DUP5 ADD SWAP2 DUP3 SWAP1 MSTORE DUP1 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SLOAD PUSH32 0x6793F0AC00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 MSTORE SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x6793F0AC SWAP1 PUSH2 0x4666 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0xCC ADD PUSH2 0x588B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4683 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x46A7 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x4733 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C3A3A72656465656D4672616374696F6E616C4445493A20696E76616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6964207369676E61747572657300000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP10 SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH1 0x6 SLOAD PUSH3 0xF4240 PUSH2 0x4752 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST PUSH2 0x475C SWAP1 DUP15 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x4766 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x4778 DUP9 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x4782 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH2 0x478C SWAP1 DUP4 PUSH2 0x5812 JUMP JUMPDEST SWAP1 POP DUP11 PUSH2 0x479C PUSH3 0xF4240 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x47A6 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP5 POP PUSH1 0x0 PUSH2 0x47D5 PUSH32 0x0 PUSH1 0xA PUSH2 0x5AB6 JUMP JUMPDEST PUSH2 0x47DF SWAP1 DUP5 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0xF4240 PUSH2 0x47F1 DUP11 DUP5 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x47FB SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x480B PUSH3 0xF4240 DUP4 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x4815 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP3 SWAP9 POP SWAP1 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP5 POP PUSH4 0x70A08231 SWAP4 POP PUSH1 0x24 ADD SWAP2 POP PUSH2 0x4878 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4895 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x48B9 SWAP2 SWAP1 PUSH2 0x5829 JUMP JUMPDEST PUSH2 0x48C3 SWAP2 SWAP1 PUSH2 0x5812 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x492C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420656E6F75676820636F6C6C61746572616C20696E20706F6F6C000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x4947 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xB SLOAD PUSH2 0x4965 SWAP1 DUP3 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xB SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x4983 SWAP1 DUP4 SWAP1 PUSH2 0x57FA JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0xC SLOAD PUSH2 0x49A1 SWAP1 DUP4 SWAP1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0xC SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH3 0xF4240 SWAP1 PUSH2 0x49C8 SWAP1 DUP13 PUSH2 0x5AFD JUMP JUMPDEST PUSH2 0x49D2 SWAP2 SWAP1 PUSH2 0x5AC2 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x49E3 SWAP2 SWAP1 PUSH2 0x57FA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA8A778AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP13 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA8A778AE SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4A5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4A6E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP PUSH4 0xB4F56B26 SWAP2 POP PUSH1 0x44 ADD PUSH2 0x2EDC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27ED DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x4F3B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 DUP8 AND SWAP2 PUSH2 0x4B99 SWAP2 SWAP1 PUSH2 0x5D65 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4BD6 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 0x4BDB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4C05 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4C05 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4C05 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x4C6B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F4641494C454400 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x4C8A SWAP1 DUP3 PUSH2 0x4AD0 JUMP JUMPDEST ISZERO PUSH2 0x1090 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 DUP9 AND SWAP2 PUSH2 0x4D77 SWAP2 SWAP1 PUSH2 0x5D65 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4DB4 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 0x4DB9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x4DE3 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x4DE3 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4DE3 SWAP2 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH2 0x4E6E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F46524F4D5F4641 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x494C454400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x4E8E SWAP1 DUP3 PUSH2 0x4F8A JUMP JUMPDEST ISZERO PUSH2 0x1090 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EE8 DUP4 DUP4 PUSH2 0x4FBC JUMP JUMPDEST PUSH1 0x60 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD ISZERO ISZERO PUSH2 0x27ED JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27F0 DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x4F82 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 0x27F0 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x27F0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27ED DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x5077 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x504F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E756D657261626C655365743A20696E646578206F7574206F6620626F756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6473000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7FC JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x5064 JUMPI PUSH2 0x5064 PUSH2 0x5D36 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x5160 JUMPI PUSH1 0x0 PUSH2 0x509B PUSH1 0x1 DUP4 PUSH2 0x5812 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x50AF SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x5812 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x50C8 JUMPI PUSH2 0x50C8 PUSH2 0x5D36 JUMP 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 0x50EB JUMPI PUSH2 0x50EB PUSH2 0x5D36 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH2 0x5102 DUP4 PUSH1 0x1 PUSH2 0x57FA JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x5124 JUMPI PUSH2 0x5124 PUSH2 0x5D81 JUMP 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 0x27F0 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x27F0 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x518E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x51A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27ED DUP3 PUSH2 0x516A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x51C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x51D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x51F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x520C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x522B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5257 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5263 DUP9 DUP3 DUP10 ADD PUSH2 0x51C7 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x5297 PUSH1 0x20 DUP5 ADD PUSH2 0x516A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x52F2 JUMPI PUSH2 0x52F2 PUSH2 0x52A0 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x533F JUMPI PUSH2 0x533F PUSH2 0x52A0 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5361 JUMPI PUSH2 0x5361 PUSH2 0x52A0 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x537C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x5391 PUSH2 0x538C DUP4 PUSH2 0x5347 JUMP JUMPDEST PUSH2 0x52F8 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP7 DUP5 GT ISZERO PUSH2 0x53B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x53CB JUMPI DUP1 CALLDATALOAD DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x53B4 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x53FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x540B DUP5 DUP3 DUP6 ADD PUSH2 0x536B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x542E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP6 CALLDATALOAD SWAP8 PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP8 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP7 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP7 POP PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP6 POP PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 ADD CALLDATALOAD SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x547A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x54B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x54C0 DUP11 DUP3 DUP12 ADD PUSH2 0x51C7 JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x54E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 DUP2 DUP5 ADD SLT PUSH2 0x5507 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x20 PUSH2 0x5517 PUSH2 0x538C DUP4 PUSH2 0x5347 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP6 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP8 DUP5 GT ISZERO PUSH2 0x5536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP8 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x55EB JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x555B JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP11 ADD SWAP2 POP DUP11 PUSH1 0x3F DUP4 ADD SLT PUSH2 0x5570 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP6 DUP3 ADD CALLDATALOAD PUSH1 0x40 DUP3 DUP3 GT ISZERO PUSH2 0x5586 JUMPI PUSH2 0x5586 PUSH2 0x52A0 JUMP JUMPDEST PUSH2 0x55B5 DUP9 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP13 DUP6 ADD AND ADD PUSH2 0x52F8 JUMP JUMPDEST SWAP3 POP DUP2 DUP4 MSTORE DUP13 DUP2 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x55CC JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP2 DUP6 ADD DUP10 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 SWAP1 DUP3 ADD DUP8 ADD MSTORE DUP5 MSTORE POP SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x553A JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x5621 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0xC0 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x5635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x563D PUSH2 0x52CF JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x565D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5669 DUP8 DUP3 DUP7 ADD PUSH2 0x536B JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x5695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x56A1 DUP8 DUP3 DUP7 ADD PUSH2 0x54F5 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x56C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x56E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x56F4 DUP11 DUP4 DUP12 ADD PUSH2 0x536B JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x5718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5725 DUP10 DUP3 DUP11 ADD PUSH2 0x51C7 JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x574C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5755 DUP5 PUSH2 0x516A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0x576A PUSH1 0x40 DUP6 ADD PUSH2 0x516A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x578C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x57BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5725 DUP10 DUP3 DUP11 ADD PUSH2 0x51C7 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x580D JUMPI PUSH2 0x580D PUSH2 0x57CB JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x5824 JUMPI PUSH2 0x5824 PUSH2 0x57CB JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x583B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD DUP6 DUP4 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP6 ADD MSTORE DUP2 DUP6 DUP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP1 POP PUSH1 0x60 DUP7 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP7 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x595F JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP8 DUP7 SUB ADD DUP4 MSTORE DUP2 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP11 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x5916 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 ADD DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x592F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP12 SGT ISZERO PUSH2 0x593E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x594B DUP8 DUP3 DUP9 DUP6 ADD PUSH2 0x5842 JUMP JUMPDEST SWAP7 POP POP POP SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x58B5 JUMP JUMPDEST POP SWAP3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x597F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x598F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH2 0x59EF JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x59D5 JUMPI PUSH2 0x59D5 PUSH2 0x57CB JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH2 0x59E2 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH2 0x599B JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5A06 JUMPI POP PUSH1 0x1 PUSH2 0x27F0 JUMP JUMPDEST DUP2 PUSH2 0x5A13 JUMPI POP PUSH1 0x0 PUSH2 0x27F0 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x5A29 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x5A33 JUMPI PUSH2 0x5A4F JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x27F0 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x5A44 JUMPI PUSH2 0x5A44 PUSH2 0x57CB JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x27F0 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x5A72 JUMPI POP DUP2 DUP2 EXP PUSH2 0x27F0 JUMP JUMPDEST PUSH2 0x5A7C DUP4 DUP4 PUSH2 0x5996 JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x5AAE JUMPI PUSH2 0x5AAE PUSH2 0x57CB JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27ED DUP4 DUP4 PUSH2 0x59F7 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5AF8 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x5B35 JUMPI PUSH2 0x5B35 PUSH2 0x57CB JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5B72 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x5B56 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD PUSH2 0x27F0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5BBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 DUP1 DUP10 PUSH1 0x60 SHL AND DUP4 MSTORE PUSH1 0x14 DUP4 ADD DUP9 MLOAD PUSH1 0x20 DUP1 DUP12 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C22 JUMPI DUP2 MLOAD DUP6 MSTORE SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5C06 JUMP JUMPDEST POP POP POP POP PUSH1 0x60 SWAP8 SWAP1 SWAP8 SHL AND DUP7 MSTORE POP POP PUSH1 0x14 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x34 DUP4 ADD MSTORE PUSH1 0x54 DUP3 ADD MSTORE PUSH1 0x74 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C67 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5C4F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x8E1 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD DUP5 DUP4 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP6 ADD MSTORE DUP2 DUP6 MLOAD DUP1 DUP5 MSTORE PUSH1 0x60 DUP7 ADD SWAP2 POP PUSH1 0x60 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP4 POP DUP3 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5D28 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP9 DUP8 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP9 MSTORE PUSH2 0x5CEB DUP2 DUP9 DUP11 ADD DUP10 DUP6 ADD PUSH2 0x5C4C JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP7 SWAP1 SWAP7 ADD DUP6 ADD SWAP6 POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5CA6 JUMP JUMPDEST POP SWAP4 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x5D77 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x5C4C JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CHAINID 0x22 LOG0 0x5D PUSH22 0xC89B78CBC019E8EEA4CFB3DFA44F6208B9D4D7686260 0x26 0xB7 SIGNEXTEND 0xDA SIGNEXTEND PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "132:660:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2285:59:7;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;552:25:39;;;540:2;525:18;2285:59:7;;;;;;;;2169:26;;;;;;17611:1096;;;:::i;:::-;;3182:35;;;;;;4347:112:20;;;;;;:::i;:::-;4404:7;4430:12;;;;;;;;;;:22;;;;4347:112;11946:1460:7;;;;;;:::i;:::-;;:::i;4709:223:20:-;;;;;;:::i;:::-;;:::i;7290:1381:7:-;;;;;;:::i;:::-;;:::i;3647:62::-;;3685:24;3647:62;;2388:32;;;;;;5883:205:20;;;;;;:::i;:::-;;:::i;2229:53:7:-;;;;;;:::i;:::-;;;;;;;;;;;;;;6104:921;;;;;;:::i;:::-;;:::i;23515:207::-;;;:::i;3076:32::-;;;;;;23953:734;;;;;;:::i;:::-;;:::i;23725:159::-;;;:::i;9861:2036::-;;;;;;:::i;:::-;;:::i;7028:119::-;7118:9;7028:119;;3793:82;;3841:34;3793:82;;2844:31;;;;;;3981:41;;;;;;;;;;;;;;;5817:14:39;;5810:22;5792:41;;5780:2;5765:18;3981:41:7;5652:187:39;3712:78:7;;3758:32;3712:78;;22770:293;;;;;;:::i;:::-;;:::i;2347:38::-;;;;;;23203:147;;;:::i;3913:30::-;;;;;;;;;;;;4025:33;;;;;;;;;;;;3266:27;;;;;;4030:136:20;;;;;;:::i;:::-;;:::i;:::-;;;6532:42:39;6520:55;;;6502:74;;6490:2;6475:18;4030:136:20;6356:226:39;3015:137:20;;;;;;:::i;:::-;;:::i;19197:1871:7:-;;;;;;:::i;:::-;;:::i;15976:1311::-;;;;;;:::i;:::-;;:::i;1722:49:20:-;;1767:4;1722:49;;2423:47:7;;;;;;:::i;:::-;;;;;;;;;;;;;;3946:32;;;;;;;;;;;;5733:235;;;;;;:::i;:::-;;:::i;2108:26::-;;;;;;21264:1452;;;;;;:::i;:::-;;:::i;8699:1062::-;;;;;;:::i;:::-;;:::i;2934:30::-;;;;;;3320:125:20;;;;;;:::i;:::-;;:::i;2137:29:7:-;;;;;;5166:226:20;;;;;;:::i;:::-;;:::i;23353:159:7:-;;;:::i;23066:134::-;;;;;;:::i;:::-;;:::i;13536:2391::-;;;;;;:::i;:::-;;:::i;168:27:11:-;;;;;;;;;2198::7;;;;;;17611:1096;17693:16;;17679:10;17666:24;;;;:12;:24;;;;;;17714:12;;17666:43;;;:::i;:::-;17665:61;;17653:175;;;;;;;11933:2:39;17653:175:7;;;11915:21:39;11972:2;11952:18;;;11945:30;12011:34;11991:18;;;11984:62;12082:34;12062:18;;;12055:62;12154:29;12133:19;;;12126:58;12201:19;;17653:175:7;;;;;;;;;18015:10;17832:13;17996:30;;;:18;:30;;;;;;17832:13;;;;;;17996:34;17992:208;;18069:10;18050:30;;;;:18;:30;;;;;;;18085:34;;;18144:17;;18050:30;;-1:-1:-1;18144:30:7;;18050;;18144;:::i;:::-;18124:17;:50;18191:4;;-1:-1:-1;17992:208:7;18233:10;18247:1;18208:36;;;:24;:36;;;;;;:40;18204:255;;-1:-1:-1;18299:10:7;18274:36;;;;:24;:36;;;;;;;18315:40;;;18386:23;;:42;;18274:36;;18386:42;:::i;:::-;18360:23;:68;18450:4;;-1:-1:-1;18204:255:7;18467:8;18463:107;;;18518:21;;18482:83;;18518:21;;18542:10;18554;18482:27;:83::i;:::-;18577:14;18573:131;;;18639:16;;18598:101;;18639:16;;18662:10;18678:16;18598:27;:101::i;:::-;17649:1058;;;;17611:1096::o;11946:1460::-;4258:12;;;;;;;:21;4250:59;;;;;;;12563:2:39;4250:59:7;;;12545:21:39;12602:2;12582:18;;;12575:30;12641:27;12621:18;;;12614:55;12686:18;;4250:59:7;12361:349:39;4250:59:7;12119:20:::1;::::0;12104:62:::1;::::0;;;;;;;2668:3:::1;::::0;12119:20:::1;;::::0;12104:60:::1;::::0;:62:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;12119:20;12104:62:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:86;12092:138;;;::::0;::::1;::::0;;13106:2:39;12092:138:7::1;::::0;::::1;13088:21:39::0;13145:2;13125:18;;;13118:30;13184:31;13164:18;;;13157:59;13233:18;;12092:138:7::1;12904:353:39::0;12092:138:7::1;12258:12;12243:11;:27;;12235:87;;;::::0;::::1;::::0;;13464:2:39;12235:87:7::1;::::0;::::1;13446:21:39::0;13503:2;13483:18;;;13476:30;13542:34;13522:18;;;13515:62;13613:17;13593:18;;;13586:45;13648:19;;12235:87:7::1;13262:411:39::0;12235:87:7::1;12371:18;::::0;12326:15:::1;::::0;12371:18:::1;;12391:16:::0;12409:11;7118:9;12354:81:::1;::::0;13911:2:39;13907:15;;;;13924:66;13903:88;12354:81:7::1;::::0;::::1;13891:101:39::0;14008:12;;;14001:28;;;;14045:12;;;14038:28;14082:12;;;14075:28;14119:13;;12354:81:7::1;::::0;;;;;::::1;::::0;;;;;;;12344:92;;12354:81:::1;12344:92:::0;;::::1;::::0;12463:20:::1;::::0;12448:64;;;12344:92;;-1:-1:-1;12463:20:7::1;;::::0;12448:49:::1;::::0;:64:::1;::::0;12344:92;;12507:4;;;;12448:64:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12440:115;;;::::0;::::1;::::0;;16341:2:39;12440:115:7::1;::::0;::::1;16323:21:39::0;16380:2;16360:18;;;16353:30;16419:34;16399:18;;;16392:62;16490:8;16470:18;;;16463:36;16516:19;;12440:115:7::1;16139:402:39::0;12440:115:7::1;12607:28;12652:20;12656:16;12652:2;:20;:::i;:::-;12638:35;::::0;:10;:35:::1;:::i;:::-;12705:11;::::0;:78:::1;::::0;;;;::::1;::::0;::::1;18493:25:39::0;;;18534:18;;;18527:34;;;12607:66:7;;-1:-1:-1;12677:25:7::1;::::0;12705:11:::1;::::0;;::::1;::::0;:28:::1;::::0;18466:18:39;;12705:78:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12677:106;;12865:3;12845:14;;12838:3;12830:29;;;;:::i;:::-;12809:51;::::0;:17;:51:::1;:::i;:::-;12808:61;;;;:::i;:::-;12950:23;::::0;12906:16:::1;::::0;:41:::1;::::0;;;;12941:4:::1;12906:41;::::0;::::1;6502:74:39::0;12788:81:7;;-1:-1:-1;12950:23:7;;12906:16:::1;::::0;;::::1;::::0;:26:::1;::::0;6475:18:39;;12906:41:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;;;:::i;:::-;12885:17;:88;;12873:140;;;::::0;::::1;::::0;;19007:2:39;12873:140:7::1;::::0;::::1;18989:21:39::0;19046:2;19026:18;;;19019:30;19085:31;19065:18;;;19058:59;19134:18;;12873:140:7::1;18805:353:39::0;12873:140:7::1;13082:10;13057:36;::::0;;;:24:::1;:36;::::0;;;;;:56:::1;::::0;13096:17;;13057:56:::1;:::i;:::-;13043:10;13018:36;::::0;;;:24:::1;:36;::::0;;;;:95;13143:23:::1;::::0;:43:::1;::::0;13169:17;;13143:43:::1;:::i;:::-;13117:23;:69:::0;13203:10:::1;13190:24;::::0;;;:12:::1;:24;::::0;;;;13217:12:::1;13190:39:::0;;13259:14:::1;::::0;13276:3:::1;::::0;13246:27:::1;::::0;:10;:27:::1;:::i;:::-;:33;;;;:::i;:::-;13234:8;;:45;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;13342:20:7::1;::::0;13327:75:::1;::::0;;;;13379:10:::1;13327:75;::::0;::::1;19337:74:39::0;19427:18;;;19420:34;;;13342:20:7::1;::::0;;::::1;::::0;13327:51:::1;::::0;19310:18:39;;13327:75:7::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12088:1318;;;11946:1460:::0;;;;;:::o;4709:223:20:-;4800:6;:12;;;;;;;;;;:22;;;4792:45;;686:10:4;3015:137:20;:::i;4792:45::-;4784:105;;;;;;;19667:2:39;4784:105:20;;;19649:21:39;19706:2;19686:18;;;19679:30;19745:34;19725:18;;;19718:62;19816:17;19796:18;;;19789:45;19851:19;;4784:105:20;19465:411:39;4784:105:20;4900:25;4911:4;4917:7;4900:10;:25::i;:::-;4709:223;;:::o;7290:1381:7:-;4358:10;;7445:22;;4358:10;;;;;:19;4350:55;;;;;;;20083:2:39;4350:55:7;;;20065:21:39;20122:2;20102:18;;;20095:30;20161:25;20141:18;;;20134:53;20204:18;;4350:55:7;19881:347:39;4350:55:7;7502:20:::1;::::0;7487:62:::1;::::0;;;;;;;2668:3:::1;::::0;7502:20:::1;;::::0;7487:60:::1;::::0;:62:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;7502:20;7487:62:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:86;;7475:138;;;::::0;::::1;::::0;;20435:2:39;7475:138:7::1;::::0;::::1;20417:21:39::0;20474:2;20454:18;;;20447:30;20513:31;20493:18;;;20486:59;20562:18;;7475:138:7::1;20233:353:39::0;7475:138:7::1;7721:12;::::0;7673:23:::1;::::0;7629:16:::1;::::0;:41:::1;::::0;;;;7664:4:::1;7629:41;::::0;::::1;6502:74:39::0;7700:17:7;;7673:23;7629:16:::1;;::::0;:26:::1;::::0;6475:18:39;;7629:41:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;;;:::i;:::-;:88;;;;:::i;:::-;:104;;7617:159;;;::::0;::::1;::::0;;20793:2:39;7617:159:7::1;::::0;::::1;20775:21:39::0;;;20812:18;;;20805:30;20871:34;20851:18;;;20844:62;20923:18;;7617:159:7::1;20591:356:39::0;7617:159:7::1;7804:12;7789:11;:27;;7781:78;;;::::0;::::1;::::0;;21154:2:39;7781:78:7::1;::::0;::::1;21136:21:39::0;21193:2;21173:18;;;21166:30;21232:34;21212:18;;;21205:62;21303:8;21283:18;;;21276:36;21329:19;;7781:78:7::1;20952:402:39::0;7781:78:7::1;7908:18;::::0;7863:15:::1;::::0;7908:18:::1;;7928:16:::0;7946:11;7118:9;7891:81:::1;::::0;13911:2:39;13907:15;;;;13924:66;13903:88;7891:81:7::1;::::0;::::1;13891:101:39::0;14008:12;;;14001:28;;;;14045:12;;;14038:28;14082:12;;;14075:28;14119:13;;7891:81:7::1;::::0;;;;;::::1;::::0;;;;;;;7881:92;;7891:81:::1;7881:92:::0;;::::1;::::0;8000:20:::1;::::0;7985:64;;;7881:92;;-1:-1:-1;8000:20:7::1;;::::0;7985:49:::1;::::0;:64:::1;::::0;7881:92;;8044:4;;;;7985:64:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7977:113;;;::::0;::::1;::::0;;21561:2:39;7977:113:7::1;::::0;::::1;21543:21:39::0;21600:2;21580:18;;;21573:30;21639:34;21619:18;;;21612:62;21710:6;21690:18;;;21683:34;21734:19;;7977:113:7::1;21359:400:39::0;7977:113:7::1;8095:29;8148:20;8152:16;8148:2;:20;:::i;:::-;8127:42;::::0;:17;:42:::1;:::i;:::-;8190:11;::::0;:77:::1;::::0;;;;::::1;::::0;::::1;18493:25:39::0;;;18534:18;;;18527:34;;;8095:74:7;;-1:-1:-1;8190:11:7::1;;::::0;:26:::1;::::0;18466:18:39;;8190:77:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8173:94;;8379:3;8363:11;;8356:3;8348:26;;;;:::i;:::-;8330:45;::::0;:14;:45:::1;:::i;:::-;8329:53;;;;:::i;:::-;8461:16;::::0;8312:70;;-1:-1:-1;8417:120:7::1;::::0;8461:16:::1;;8483:10;8506:4;8516:17:::0;8417:31:::1;:120::i;:::-;8586:3;8572:11;;8554:14;:29;;;;:::i;:::-;:35;;;;:::i;:::-;8542:8;;:47;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;8608:20:7::1;::::0;8593:74:::1;::::0;;;;8640:10:::1;8593:74;::::0;::::1;19337::39::0;19427:18;;;19420:34;;;8608:20:7::1;::::0;;::::1;::::0;8593:46:::1;::::0;19310:18:39;;8593:74:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7470:1201;;7290:1381:::0;;;;;;;:::o;5883:205:20:-;5969:23;;;686:10:4;5969:23:20;5961:83;;;;;;;21966:2:39;5961:83:20;;;21948:21:39;22005:2;21985:18;;;21978:30;22044:34;22024:18;;;22017:62;22115:17;22095:18;;;22088:45;22150:19;;5961:83:20;21764:411:39;5961:83:20;6055:26;6067:4;6073:7;6055:11;:26::i;6104:921:7:-;6193:7;6206:20;6244;;;;;;;;;;;6229:48;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6206:73;;6283:31;6332:20;;;;;;;;;;;6317:60;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6428:20;;6413:76;;;;;6283:96;;-1:-1:-1;6383:27:7;;6428:20;;;;;6413:58;;:76;;6472:16;;6413:76;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6383:106;;2614:3;6498:23;:52;6494:113;;;2614:3;6555:52;;6494:113;6665:40;2614:3;6709:38;6724:23;6709:12;:38;:::i;:::-;6708:71;;;;:::i;:::-;6665:114;;6906:32;6884:19;:54;6880:141;;;6950:54;6972:32;6950:19;:54;:::i;:::-;6943:61;6104:921;-1:-1:-1;;;;;;6104:921:7:o;6880:141::-;-1:-1:-1;7020:1:7;;6104:921;-1:-1:-1;;;;;6104:921:7:o;23515:207::-;23569:43;3609:35;23601:10;23569:7;:43::i;:::-;23561:52;;;;;;23642:21;;;;;;;;;;23641:22;23617:46;;;;;;;;;;;;;;23673:45;;;;;;23696:21;;;;;5817:14:39;5810:22;5792:41;;5780:2;5765:18;;5652:187;23673:45:7;;;;;;;;23515:207::o;23953:734::-;24190:42;3841:34;24221:10;24190:7;:42::i;:::-;24182:96;;;;;;;23019:2:39;24182:96:7;;;23001:21:39;23058:2;23038:18;;;23031:30;23097:34;23077:18;;;23070:62;23168:11;23148:18;;;23141:39;23197:19;;24182:96:7;22817:405:39;24182:96:7;24282:12;:26;;;24312:10;:27;;;24343:16;:39;;;24386:11;:26;;;24416:14;:31;;;24451:11;:29;;;-1:-1:-1;24484:31:7;;;24525:158;;;23542:25:39;;;23598:2;23583:18;;23576:34;;;23626:18;;;23619:34;;;23684:2;23669:18;;23662:34;;;23727:3;23712:19;;23705:35;;;23771:3;23756:19;;23749:35;;;23815:3;23800:19;;23793:35;;;24525:158:7;;23529:3:39;23514:19;24525:158:7;;;;;;;23953:734;;;;;;;:::o;23725:159::-;23771:35;3529:27;23795:10;23771:7;:35::i;:::-;23763:44;;;;;;23828:13;;;;;;;;;;23827:14;23811:30;;;;;;;;;;;;;;23851:29;;;;;;23866:13;;;;;5817:14:39;5810:22;5792:41;;5780:2;5765:18;;5652:187;9861:2036:7;4358:10;;10081:19;;4358:10;;;;;:19;4350:55;;;;;;;20083:2:39;4350:55:7;;;20065:21:39;20122:2;20102:18;;;20095:30;20161:25;20141:18;;;20134:53;20204:18;;4350:55:7;19881:347:39;4350:55:7;10155:20:::1;::::0;10140:62:::1;::::0;;;;;;;10106:31:::1;::::0;10155:20:::1;;::::0;10140:60:::1;::::0;:62:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;10155:20;10140:62:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10106:96;;2668:3;10218:23;:46;:77;;;;;10294:1;10268:23;:27;10218:77;10206:156;;;::::0;::::1;::::0;;24041:2:39;10206:156:7::1;::::0;::::1;24023:21:39::0;24080:2;24060:18;;;24053:30;24119:34;24099:18;;;24092:62;24190:26;24170:18;;;24163:54;24234:19;;10206:156:7::1;23839:420:39::0;10206:156:7::1;10469:12;::::0;10422:23:::1;::::0;10378:16:::1;::::0;:41:::1;::::0;;;;10413:4:::1;10378:41;::::0;::::1;6502:74:39::0;10448:17:7;;10422:23;10378:16:::1;;::::0;:26:::1;::::0;6475:18:39;;10378:41:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;;;:::i;:::-;:87;;;;:::i;:::-;:103;;10366:194;;;::::0;::::1;::::0;;24466:2:39;10366:194:7::1;::::0;::::1;24448:21:39::0;24505:2;24485:18;;;24478:30;;;24544:34;24524:18;;;24517:62;24615:34;24595:18;;;24588:62;24687:6;24666:19;;;24659:35;24711:19;;10366:194:7::1;24264:472:39::0;10366:194:7::1;10588:12;10573:11;:27;;10565:86;;;::::0;::::1;::::0;;24943:2:39;10565:86:7::1;::::0;::::1;24925:21:39::0;24982:2;24962:18;;;24955:30;25021:34;25001:18;;;24994:62;25092:16;25072:18;;;25065:44;25126:19;;10565:86:7::1;24741:410:39::0;10565:86:7::1;10700:18;::::0;10738:21:::1;::::0;10683:124:::1;::::0;;25435:66:39;25530:2;25526:15;;;;;10683:124:7::1;::::0;;::::1;25510:37:39::0;;;;25563:12;;;25556:28;;;25618:15;;;;;;;25600:12;;;25593:46;25655:12;;;25648:28;;;25692:13;;;25685:29;;;7118:9:7;25730:13:39;;;;25723:29;;;;10683:124:7;;;;;;;;;;25768:13:39;;;10683:124:7;;;;10673:135;;;::::1;::::0;;;;10835:20:::1;::::0;10820:64;;;;10673:135;10700:18:::1;10835:20:::0;;::::1;::::0;10820:49:::1;::::0;:64:::1;::::0;10673:135;;10879:4;;;;10820:64;;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10812:120;;;::::0;::::1;::::0;;25994:2:39;10812:120:7::1;::::0;::::1;25976:21:39::0;26033:2;26013:18;;;26006:30;26072:34;26052:18;;;26045:62;26143:13;26123:18;;;26116:41;26174:19;;10812:120:7::1;25792:407:39::0;10812:120:7::1;10937:48;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10937:48:7::1;11049:29;11102:20;11106:16;11102:2;:20;:::i;:::-;11081:42;::::0;:17;:42:::1;:::i;:::-;11143:170;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;11380:11:::1;::::0;:47;;;;;11143:170;;-1:-1:-1;;;;11380:11:7::1;;::::0;:33:::1;::::0;:47:::1;::::0;11143:170;;11380:47:::1;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11351:76:::0;;-1:-1:-1;11351:76:7;-1:-1:-1;11439:26:7;;::::1;;11431:63;;;::::0;::::1;::::0;;27197:2:39;11431:63:7::1;::::0;::::1;27179:21:39::0;27236:2;27216:18;;;27209:30;27275:26;27255:18;;;27248:54;27319:18;;11431:63:7::1;26995:348:39::0;11431:63:7::1;11563:3;11546:11;;11539:3;11531:26;;;;:::i;:::-;11516:42;::::0;:11;:42:::1;:::i;:::-;11515:52;;;;:::i;:::-;11583:21;::::0;;11572:73:::1;::::0;;;;11621:10:::1;11572:73:::0;;::::1;19337:74:39::0;;;;19427:18;;;19420:34;;;11501:66:7;;-1:-1:-1;11583:21:7::1;::::0;;::::1;::::0;11572:48:::1;::::0;19310:18:39;;11572:73:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11693:16:7::1;::::0;11649:120:::1;::::0;-1:-1:-1;11693:16:7::1;;::::0;-1:-1:-1;11715:10:7::1;11738:4;11748:17:::0;11649:31:::1;:120::i;:::-;11815:3;11801:11;;11786;:26;;;;:::i;:::-;:32;;;;:::i;:::-;11774:8;;:44;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;11837:20:7::1;::::0;11822:71:::1;::::0;;;;11869:10:::1;11822:71;::::0;::::1;19337:74:39::0;19427:18;;;19420:34;;;11837:20:7::1;::::0;;::::1;::::0;11822:46:::1;::::0;19310:18:39;;11822:71:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10102:1795;;;;9861:2036:::0;;;;;;;;;:::o;22770:293::-;22844:40;3758:32;22873:10;22844:7;:40::i;:::-;22836:49;;;;;;22907:8;;22897:6;:18;;22889:47;;;;;;;27550:2:39;22889:47:7;;;27532:21:39;27589:2;27569:18;;;27562:30;27628:18;27608;;;27601:46;27664:18;;22889:47:7;27348:340:39;22889:47:7;22955:20;;22940:58;;;;;22955:20;19355:55:39;;;22940:58:7;;;19337:74:39;19427:18;;;19420:34;;;22955:20:7;;;;22940:46;;19310:18:39;;22940:58:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23014:6;23002:8;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;23030:29:7;;;27867:25:39;;;27940:42;27928:55;;27923:2;27908:18;;27901:83;23030:29:7;;27840:18:39;23030:29:7;;;;;;;22770:293;;:::o;23203:147::-;23249:32;3390:24;23270:10;23249:7;:32::i;:::-;23241:41;;;;;;23300:10;;;;;;;;;;23299:11;23286:24;;;;;;;;;;;;;;23320:26;;;;;;23335:10;;;;;5817:14:39;5810:22;5792:41;;5780:2;5765:18;;5652:187;4030:136:20;4103:7;4129:12;;;;;;;;;;:30;;4153:5;4129:23;:30::i;:::-;4122:37;;4030:136;;;;;:::o;3015:137::-;3084:4;3107:12;;;;;;;;;;:38;;3137:7;3107:29;:38::i;19197:1871:7:-;19280:21;;;;;;;:30;19272:94;;;;;;;28197:2:39;19272:94:7;;;28179:21:39;28236:2;28216:18;;;28209:30;28275:34;28255:18;;;28248:62;28346:21;28326:18;;;28319:49;28385:19;;19272:94:7;27995:415:39;19272:94:7;19401:12;19379:6;:18;;;:34;;19371:94;;;;;;;28617:2:39;19371:94:7;;;28599:21:39;28656:2;28636:18;;;28629:30;28695:34;28675:18;;;28668:62;28766:17;28746:18;;;28739:45;28801:19;;19371:94:7;28415:411:39;19371:94:7;19525:18;;19556:23;;;;;19591:21;;19625:25;;;;19663:18;;;;19497:219;;19469:15;;19497:219;;19525:18;;;;;19556:23;19591:21;;;;;19625:25;7118:9;;19497:219;;;:::i;:::-;;;;;;;;;;;;;;;19487:230;;19497:219;19487:230;;;;19744:20;;19788:11;;;;19729:71;;;19487:230;;-1:-1:-1;19744:20:7;;;19729:49;;:71;;19487:230;;19788:11;19729:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19721:128;;;;;;;31494:2:39;19721:128:7;;;31476:21:39;31533:2;31513:18;;;31506:30;31572:34;31552:18;;;31545:62;31643:14;31623:18;;;31616:42;31675:19;;19721:128:7;31292:408:39;19721:128:7;19854:29;19914:20;19918:16;19914:2;:20;:::i;:::-;19886:24;;:49;;;;:::i;:::-;19854:81;;19940:24;19982:20;;;;;;;;;;;19967:48;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19940:77;;20021:31;20070:20;;;;;;;;;;;20055:60;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20166:20;;20210:23;;;;;20151:83;;;;;20021:96;;-1:-1:-1;20121:27:7;;20166:20;;;;;20151:58;;:83;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20296:11;;20400:23;;;;20424:30;;20121:113;;-1:-1:-1;20240:24:7;;;;20296:11;;;:39;;20357:21;;20400:23;20424:34;;20296:11;;20424:34;:::i;:::-;20400:59;;;;;;;;:::i;:::-;;;;;;;;;;;20296:353;;;;;;;;;;;;;32153:25:39;;;;32194:18;;;32187:34;32237:18;;;32230:34;;;32280:18;;;32273:34;;;32323:19;;;32316:35;;;32125:19;;20296:353:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20239:410;;-1:-1:-1;20239:410:7;-1:-1:-1;20654:34:7;20711:20;20715:16;20711:2;:20;:::i;:::-;20691:41;;:16;:41;:::i;:::-;20654:78;;20737:22;20830:6;:25;;;20813:12;;20800:10;;20793:3;20785:25;;;;:::i;:::-;:40;;;;:::i;:::-;20763:63;;:18;:63;:::i;:::-;20762:93;;;;:::i;:::-;20904:16;;20737:118;;-1:-1:-1;20860:129:7;;20904:16;;20926:10;20949:4;20959:26;20860:31;:129::i;:::-;21004:21;;;20993:71;;;;;21037:10;20993:71;;;19337:74:39;;;;19427:18;;;19420:34;;;21004:21:7;;;20993:43;;19310:18:39;;20993:71:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19268:1800;;;;;;;;;19197:1871;:::o;15976:1311::-;4258:12;;;;;;;:21;4250:59;;;;;;;12563:2:39;4250:59:7;;;12545:21:39;12602:2;12582:18;;;12575:30;12641:27;12621:18;;;12614:55;12686:18;;4250:59:7;12361:349:39;4250:59:7;16161:20:::1;;;;;;;;;;;16146:60;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67:::0;16138:134:::1;;;::::0;::::1;::::0;;32564:2:39;16138:134:7::1;::::0;::::1;32546:21:39::0;32603:2;32583:18;;;32576:30;32642:34;32622:18;;;32615:62;32713:24;32693:18;;;32686:52;32755:19;;16138:134:7::1;32362:418:39::0;16138:134:7::1;16300:12;16285:11;:27;;16277:88;;;::::0;::::1;::::0;;32987:2:39;16277:88:7::1;::::0;::::1;32969:21:39::0;33026:2;33006:18;;;32999:30;33065:34;33045:18;;;33038:62;33136:18;33116;;;33109:46;33172:19;;16277:88:7::1;32785:412:39::0;16277:88:7::1;16414:21;::::0;16369:15:::1;::::0;16414:21:::1;;16437:18:::0;16457:11;7118:9;16397:86:::1;::::0;13911:2:39;13907:15;;;;13924:66;13903:88;16397:86:7::1;::::0;::::1;13891:101:39::0;14008:12;;;14001:28;;;;14045:12;;;14038:28;14082:12;;;14075:28;14119:13;;16397:86:7::1;::::0;;;;;::::1;::::0;;;;;;;16387:97;;16397:86:::1;16387:97:::0;;::::1;::::0;16511:20:::1;::::0;16496:64;;;16387:97;;-1:-1:-1;16511:20:7::1;;::::0;16496:49:::1;::::0;:64:::1;::::0;16387:97;;16555:4;;;;16496:64:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16488:123;;;::::0;::::1;::::0;;33404:2:39;16488:123:7::1;::::0;::::1;33386:21:39::0;33443:2;33423:18;;;33416:30;33482:34;33462:18;;;33455:62;33553:16;33533:18;;;33526:44;33587:19;;16488:123:7::1;33202:410:39::0;16488:123:7::1;16728:14;::::0;16648:10;;16747:3:::1;::::0;16713:29:::1;::::0;16747:3;16713:29:::1;:::i;:::-;16688:55;::::0;:21;:55:::1;:::i;:::-;16687:63;;;;:::i;:::-;16663:87:::0;-1:-1:-1;16768:19:7::1;16836:18:::0;16791:41:::1;2554:3;16663:87:::0;16791:41:::1;:::i;:::-;16790:64;;;;:::i;:::-;16911:10;16892:30;::::0;;;:18:::1;:30;::::0;;;;;16768:86;;-1:-1:-1;16892:44:7::1;::::0;16768:86;;16892:44:::1;:::i;:::-;16878:10;16859:30;::::0;;;:18:::1;:30;::::0;;;;:77;16960:17:::1;::::0;:31:::1;::::0;16980:11;;16960:31:::1;:::i;:::-;16940:17;:51:::0;17009:10:::1;16996:24;::::0;;;:12:::1;:24;::::0;;;;17023:12:::1;16996:39:::0;;17065:14:::1;::::0;17082:3:::1;::::0;17052:27:::1;::::0;:10;:27:::1;:::i;:::-;:33;;;;:::i;:::-;17040:8;;:45;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;17148:20:7::1;::::0;17133:75:::1;::::0;;;;17185:10:::1;17133:75;::::0;::::1;19337:74:39::0;19427:18;;;19420:34;;;17148:20:7::1;::::0;;::::1;::::0;17133:51:::1;::::0;19310:18:39;;17133:75:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;17223:21:7::1;::::0;;17212:71:::1;::::0;;;;17264:4:::1;17212:71:::0;;::::1;19337:74:39::0;;;;19427:18;;;19420:34;;;17223:21:7::1;;::::0;-1:-1:-1;17212:43:7::1;::::0;-1:-1:-1;19310:18:39;;17212:71:7::1;19163:297:39::0;5733:235:7;5809:7;2554:3;5927:16;5903:20;5907:16;5903:2;:20;:::i;:::-;5875:23;;5831:16;;:41;;;;;5866:4;5831:41;;;6502:74:39;5831:16:7;;;;;:26;;6475:18:39;;5831:41:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;;;:::i;:::-;5830:94;;;;:::i;:::-;:113;;;;:::i;:::-;5829:135;;;;:::i;21264:1452::-;21447:13;;;;;;;:22;21439:71;;;;;;;33819:2:39;21439:71:7;;;33801:21:39;33858:2;33838:18;;;33831:30;33897:34;33877:18;;;33870:62;33968:6;33948:18;;;33941:34;33992:19;;21439:71:7;33617:400:39;21439:71:7;21537:12;21522:11;:27;;21514:79;;;;;;;34224:2:39;21514:79:7;;;34206:21:39;34263:2;34243:18;;;34236:30;34302:34;34282:18;;;34275:62;34373:9;34353:18;;;34346:37;34400:19;;21514:79:7;34022:403:39;21514:79:7;21653:18;;21711:21;;21597:15;;21653:18;;;;;21683:16;;21711:21;21744:18;21774:11;7118:9;21625:185;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;21615:196;;21625:185;21615:196;;;;21838:20;;21823:64;;;21615:196;;-1:-1:-1;21838:20:7;;;21823:49;;:64;;21615:196;;21882:4;;;;21823:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21815:114;;;;;;;34632:2:39;21815:114:7;;;34614:21:39;34671:2;34651:18;;;34644:30;34710:34;34690:18;;;34683:62;34781:7;34761:18;;;34754:35;34806:19;;21815:114:7;34430:401:39;21815:114:7;21934:53;21990:267;;;;;;;;22038:41;22062:16;22038:23;:41::i;:::-;21990:267;;;;22094:18;21990:267;;;;22127:16;22170:1;22144:16;:23;:27;;;;:::i;:::-;22127:45;;;;;;;;:::i;:::-;;;;;;;21990:267;;;;22232:11;21990:267;;;21934:323;;22262:33;22376:3;22359:11;;22352:3;22344:26;;;;:::i;:::-;22299:11;;:41;;;;;:11;;;;;:27;;:41;;22327:12;;22299:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;;:::i;:::-;22298:82;;;;:::i;:::-;22262:118;-1:-1:-1;22384:28:7;22444:20;22448:16;22444:2;:20;:::i;:::-;22415:50;;:25;:50;:::i;:::-;22545:21;;;22534:73;;;;;22583:10;22534:73;;;19337:74:39;;;;19427:18;;;19420:34;;;22384:81:7;;-1:-1:-1;22545:21:7;;;;;22534:48;;19310:18:39;;22534:73:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22651:16:7;;22611:101;;-1:-1:-1;22651:16:7;;;-1:-1:-1;22673:10:7;22688:20;22611:27;:101::i;:::-;21435:1281;;;;21264:1452;;;;;;:::o;8699:1062::-;4358:10;;8867:22;;4358:10;;;;;:19;4350:55;;;;;;;20083:2:39;4350:55:7;;;20065:21:39;20122:2;20102:18;;;20095:30;20161:25;20141:18;;;20134:53;20204:18;;4350:55:7;19881:347:39;4350:55:7;8922:20:::1;;;;;;;;;;;8907:60;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67:::0;8895:116:::1;;;::::0;::::1;::::0;;35318:2:39;8895:116:7::1;::::0;::::1;35300:21:39::0;35357:2;35337:18;;;35330:30;35396:28;35376:18;;;35369:56;35442:18;;8895:116:7::1;35116:350:39::0;8895:116:7::1;9038:12;9023:11;:27;;9015:87;;;::::0;::::1;::::0;;13464:2:39;9015:87:7::1;::::0;::::1;13446:21:39::0;13503:2;13483:18;;;13476:30;13542:34;13522:18;;;13515:62;13613:17;13593:18;;;13586:45;13648:19;;9015:87:7::1;13262:411:39::0;9015:87:7::1;9151:21;::::0;9106:15:::1;::::0;9151:21:::1;;9174:18:::0;9194:11;7118:9;9134:86:::1;::::0;13911:2:39;13907:15;;;;13924:66;13903:88;9134:86:7::1;::::0;::::1;13891:101:39::0;14008:12;;;14001:28;;;;14045:12;;;14038:28;14082:12;;;14075:28;14119:13;;9134:86:7::1;::::0;;;;;::::1;::::0;;;;;;;9124:97;;9134:86:::1;9124:97:::0;;::::1;::::0;9248:20:::1;::::0;9233:64;;;9124:97;;-1:-1:-1;9248:20:7::1;;::::0;9233:49:::1;::::0;:64:::1;::::0;9124:97;;9292:4;;;;9233:64:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9225:121;;;::::0;::::1;::::0;;35673:2:39;9225:121:7::1;::::0;::::1;35655:21:39::0;35712:2;35692:18;;;35685:30;35751:34;35731:18;;;35724:62;35822:14;35802:18;;;35795:42;35854:19;;9225:121:7::1;35471:408:39::0;9225:121:7::1;9368:11;::::0;:99:::1;::::0;;;;::::1;::::0;::::1;18493:25:39::0;;;18534:18;;;18527:34;;;9368:11:7::1;::::0;;::::1;::::0;:34:::1;::::0;18466:18:39;;9368:99:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9351:116;;9542:3;9524:11;;9516:3;9508:28;;;;:::i;:::-;9490:47;::::0;:14;:47:::1;:::i;:::-;9489:57;;;;:::i;:::-;9472:74;;9594:3;9580:11;;9562:14;:29;;;;:::i;:::-;:35;;;;:::i;:::-;9550:8;;:47;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;9613:21:7::1;::::0;;9602:77:::1;::::0;;;;9651:10:::1;9602:77:::0;;::::1;19337:74:39::0;;;;19427:18;;;19420:34;;;9613:21:7::1;;::::0;9602:48:::1;::::0;19310:18:39;;9602:77:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;9698:20:7::1;::::0;9683:74:::1;::::0;;;;9730:10:::1;9683:74;::::0;::::1;19337::39::0;19427:18;;;19420:34;;;9698:20:7::1;::::0;;::::1;::::0;-1:-1:-1;9683:46:7::1;::::0;-1:-1:-1;19310:18:39;;9683:74:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8891:870;8699:1062:::0;;;;;;;:::o;3320:125:20:-;3383:7;3409:12;;;;;;;;;;:29;;:27;:29::i;5166:226::-;5258:6;:12;;;;;;;;;;:22;;;5250:45;;686:10:4;3015:137:20;:::i;5250:45::-;5242:106;;;;;;;36086:2:39;5242:106:20;;;36068:21:39;36125:2;36105:18;;;36098:30;36164:34;36144:18;;;36137:62;36235:18;36215;;;36208:46;36271:19;;5242:106:20;35884:412:39;23353:159:7;23401:34;3458:26;23424:10;23401:7;:34::i;:::-;23393:43;;;;;;23456:12;;;;;;;;;;23455:13;23440:28;;;;;;;;;;;;;;23478:30;;;;;;23495:12;;;;;5817:14:39;5810:22;5792:41;;5780:2;5765:18;;5652:187;23066:134:7;4140:32;3685:24;4161:10;4140:7;:32::i;:::-;4128:79;;;;;;;36503:2:39;4128:79:7;;;36485:21:39;36542:2;36522:18;;;36515:30;36581:26;36561:18;;;36554:54;36625:18;;4128:79:7;36301:348:39;4128:79:7;23162:34:::1;::::0;;;;:22:::1;19355:55:39::0;;;23162:34:7::1;::::0;::::1;19337:74:39::0;19427:18;;;19420:34;;;23162:22:7;::::1;::::0;::::1;::::0;19310:18:39;;23162:34:7::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13536:2391::-:0;4258:12;;;;;;;:21;4250:59;;;;;;;12563:2:39;4250:59:7;;;12545:21:39;12602:2;12582:18;;;12575:30;12641:27;12621:18;;;12614:55;12686:18;;4250:59:7;12361:349:39;4250:59:7;13775:20:::1;::::0;13760:62:::1;::::0;;;;;;;13726:31:::1;::::0;13775:20:::1;;::::0;13760:60:::1;::::0;:62:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;13775:20;13760:62:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13726:96;;2668:3;13838:23;:46;:77;;;;;13914:1;13888:23;:27;13838:77;13826:183;;;::::0;::::1;::::0;;36856:2:39;13826:183:7::1;::::0;::::1;36838:21:39::0;36895:2;36875:18;;;36868:30;36934:34;36914:18;;;36907:62;37005:34;36985:18;;;36978:62;37077:21;37056:19;;;37049:50;37116:19;;13826:183:7::1;36654:487:39::0;13826:183:7::1;14037:12;14022:11;:27;;14014:86;;;::::0;::::1;::::0;;37348:2:39;14014:86:7::1;::::0;::::1;37330:21:39::0;37387:2;37367:18;;;37360:30;37426:34;37406:18;;;37399:62;37497:16;37477:18;;;37470:44;37531:19;;14014:86:7::1;37146:410:39::0;14014:86:7::1;14149:18;::::0;14187:21:::1;::::0;14132:124:::1;::::0;;25435:66:39;25530:2;25526:15;;;;;14132:124:7::1;::::0;;::::1;25510:37:39::0;;;;25563:12;;;25556:28;;;25618:15;;;;;;;25600:12;;;25593:46;25655:12;;;25648:28;;;25692:13;;;25685:29;;;7118:9:7;25730:13:39;;;;25723:29;;;;14132:124:7;;;;;;;;;;25768:13:39;;;14132:124:7;;;;14122:135;;;::::1;::::0;;;;14284:20:::1;::::0;14269:64;;;;14122:135;14149:18:::1;14284:20:::0;;::::1;::::0;14269:49:::1;::::0;:64:::1;::::0;14122:135;;14328:4;;;;14269:64;;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14261:122;;;::::0;::::1;::::0;;37763:2:39;14261:122:7::1;::::0;::::1;37745:21:39::0;37802:2;37782:18;;;37775:30;37841:34;37821:18;;;37814:62;37912:15;37892:18;;;37885:43;37945:19;;14261:122:7::1;37561:409:39::0;14261:122:7::1;14442:19;14465:25:::0;14499:21:::1;14523:16;14499:40;;14545:27;2554:3;14605:14;;14598:3;14590:29;;;;:::i;:::-;14576:44;::::0;:10;:44:::1;:::i;:::-;14575:66;;;;:::i;:::-;14545:96:::0;-1:-1:-1;14647:29:7::1;2554:3;14703:45;14725:23:::0;14545:96;14703:45:::1;:::i;:::-;14702:67;;;;:::i;:::-;14679:91;::::0;:19;:91:::1;:::i;:::-;14647:123:::0;-1:-1:-1;14834:18:7;14789:41:::1;2554:3;14647:123:::0;14789:41:::1;:::i;:::-;:64;;;;:::i;:::-;14775:78:::0;-1:-1:-1;14907:28:7::1;14961:20;14965:16;14961:2;:20;:::i;:::-;14938:44;::::0;:19;:44:::1;:::i;:::-;14907:75:::0;-1:-1:-1;14987:31:7::1;2554:3;15022:46;15045:23:::0;14907:75;15022:46:::1;:::i;:::-;15021:66;;;;:::i;:::-;14987:100:::0;-1:-1:-1;15159:13:7;15113:41:::1;2554:3;14987:100:::0;15113:41:::1;:::i;:::-;15112:61;;;;:::i;:::-;15258:23;::::0;15214:16:::1;::::0;:41:::1;::::0;;;;15249:4:::1;15214:41;::::0;::::1;6502:74:39::0;15092:81:7;;-1:-1:-1;15258:23:7;;-1:-1:-1;15214:16:7::1;;::::0;-1:-1:-1;15214:26:7::1;::::0;-1:-1:-1;6475:18:39;;;-1:-1:-1;15214:41:7::1;::::0;-1:-1:-1;6356:226:39;15214:41:7::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;;;:::i;:::-;15193:17;:88;;15181:140;;;::::0;::::1;::::0;;19007:2:39;15181:140:7::1;::::0;::::1;18989:21:39::0;19046:2;19026:18;;;19019:30;19085:31;19065:18;;;19058:59;19134:18;;15181:140:7::1;18805:353:39::0;15181:140:7::1;15390:10;15365:36;::::0;;;:24:::1;:36;::::0;;;;;:56:::1;::::0;15404:17;;15365:56:::1;:::i;:::-;15351:10;15326:36;::::0;;;:24:::1;:36;::::0;;;;:95;15451:23:::1;::::0;:43:::1;::::0;15477:17;;15451:43:::1;:::i;:::-;15425:23;:69:::0;15551:10:::1;15532:30;::::0;;;:18:::1;:30;::::0;;;;;:44:::1;::::0;15565:11;;15532:44:::1;:::i;:::-;15518:10;15499:30;::::0;;;:18:::1;:30;::::0;;;;:77;15600:17:::1;::::0;:31:::1;::::0;15620:11;;15600:31:::1;:::i;:::-;15580:17;:51:::0;15649:10:::1;15636:24;::::0;;;:12:::1;:24;::::0;;;;15663:12:::1;15636:39:::0;;15705:14:::1;::::0;15722:3:::1;::::0;15692:27:::1;::::0;:10;:27:::1;:::i;:::-;:33;;;;:::i;:::-;15680:8;;:45;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;15788:20:7::1;::::0;15773:75:::1;::::0;;;;15825:10:::1;15773:75;::::0;::::1;19337:74:39::0;19427:18;;;19420:34;;;15788:20:7::1;::::0;;::::1;::::0;15773:51:::1;::::0;19310:18:39;;15773:75:7::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;15863:21:7::1;::::0;;15852:71:::1;::::0;;;;15904:4:::1;15852:71:::0;;::::1;19337:74:39::0;;;;19427:18;;;19420:34;;;15863:21:7::1;;::::0;-1:-1:-1;15852:43:7::1;::::0;-1:-1:-1;19310:18:39;;15852:71:7::1;19163:297:39::0;4866:141:38;4936:4;4959:41;4964:3;4976:23;4984:14;;;;4976:23;4959:4;:41::i;559:357:32:-;752:45;;;741:10;19355:55:39;;;752:45:32;;;19337:74:39;19427:18;;;;19420:34;;;752:45:32;;;;;;;;;;19310:18:39;;;;752:45:32;;;;;;;;;;;;;741:57;;-1:-1:-1;;;;741:10:32;;;;:57;;752:45;741:57;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;705:93;;;;816:7;:57;;;;-1:-1:-1;828:11:32;;:16;;:44;;;859:4;848:24;;;;;;;;;;;;:::i;:::-;808:101;;;;;;;38456:2:39;808:101:32;;;38438:21:39;38495:2;38475:18;;;38468:30;38534:33;38514:18;;;38507:61;38585:18;;808:101:32;38254:355:39;808:101:32;629:287;;559:357;;;:::o;7090:184:20:-;7163:6;:12;;;;;;;;;;:33;;7188:7;7163:24;:33::i;:::-;7159:109;;;7217:40;;686:10:4;;7217:40:20;;;;7229:4;;7217:40;;;;;7090:184;;:::o;922:398:32:-;1145:51;;;1134:10;38895:15:39;;;1145:51:32;;;38877:34:39;38947:15;;;38927:18;;;38920:43;38979:18;;;;38972:34;;;1145:51:32;;;;;;;;;;38789:18:39;;;;1145:51:32;;;;;;;;;;;;;1134:63;;-1:-1:-1;;;;1134:10:32;;;;:63;;1145:51;1134:63;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1098:99;;;;1215:7;:57;;;;-1:-1:-1;1227:11:32;;:16;;:44;;;1258:4;1247:24;;;;;;;;;;;;:::i;:::-;1207:106;;;;;;;39219:2:39;1207:106:32;;;39201:21:39;39258:2;39238:18;;;39231:30;39297:34;39277:18;;;39270:62;39368:6;39348:18;;;39341:34;39392:19;;1207:106:32;39017:400:39;1207:106:32;1010:310;;922:398;;;;:::o;7280:188:20:-;7354:6;:12;;;;;;;;;;:36;;7382:7;7354:27;:36::i;:::-;7350:112;;;7411:40;;686:10:4;;7411:40:20;;;;7423:4;;7411:40;;;;;7280:188;;:::o;6087:147:38:-;6161:7;6203:22;6207:3;6219:5;6203:3;:22::i;:::-;6187:40;;;6087:147;-1:-1:-1;;;6087:147:38:o;5403:156::-;5536:14;;;;5528:23;;5483:4;3874:19;;;:12;;;:19;;;;;;:24;;5506:46;3778:127;5640:115;5703:7;5729:19;5737:3;4068:18;;3986:107;1613:404;1676:4;3874:19;;;:12;;;:19;;;;;;1692:319;;-1:-1:-1;1734:23:38;;;;;;;;:11;:23;;;;;;;;;;;;;1914:18;;1892:19;;;:12;;;:19;;;;;;:40;;;;1946:11;;1692:319;-1:-1:-1;1995:5:38;1988:12;;5175:147;5248:4;5271:44;5279:3;5291:23;5299:14;;;;5291:23;5271:7;:44::i;4425:201::-;4519:18;;4492:7;;4519:26;-1:-1:-1;4511:73:38;;;;;;;39624:2:39;4511:73:38;;;39606:21:39;39663:2;39643:18;;;39636:30;39702:34;39682:18;;;39675:62;39773:4;39753:18;;;39746:32;39795:19;;4511:73:38;39422:398:39;4511:73:38;4601:3;:11;;4613:5;4601:18;;;;;;;;:::i;:::-;;;;;;;;;4594:25;;4425:201;;;;:::o;2185:1512::-;2251:4;2388:19;;;:12;;;:19;;;;;;2422:15;;2418:1273;;2779:21;2803:14;2816:1;2803:10;:14;:::i;:::-;2851:18;;2779:38;;-1:-1:-1;2831:17:38;;2851:22;;2872:1;;2851:22;:::i;:::-;2831:42;;3113:17;3133:3;:11;;3145:9;3133:22;;;;;;;;:::i;:::-;;;;;;;;;3113:42;;3276:9;3247:3;:11;;3259:13;3247:26;;;;;;;;:::i;:::-;;;;;;;;;;:38;3377:17;:13;3393:1;3377:17;:::i;:::-;3351:23;;;;:12;;;:23;;;;;:43;3500:17;;3351:3;;3500:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3592:3;:12;;:19;3605:5;3592:19;;;;;;;;;;;3585:26;;;3633:4;3626:11;;;;;;;;2418:1273;3675:5;3668:12;;;;;14:196:39;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:186::-;274:6;327:2;315:9;306:7;302:23;298:32;295:52;;;343:1;340;333:12;295:52;366:29;385:9;366:29;:::i;588:180::-;647:6;700:2;688:9;679:7;675:23;671:32;668:52;;;716:1;713;706:12;668:52;-1:-1:-1;739:23:39;;588:180;-1:-1:-1;588:180:39:o;955:374::-;1025:8;1035:6;1089:3;1082:4;1074:6;1070:17;1066:27;1056:55;;1107:1;1104;1097:12;1056:55;-1:-1:-1;1130:20:39;;1173:18;1162:30;;1159:50;;;1205:1;1202;1195:12;1159:50;1242:4;1234:6;1230:17;1218:29;;1302:3;1295:4;1285:6;1282:1;1278:14;1270:6;1266:27;1262:38;1259:47;1256:67;;;1319:1;1316;1309:12;1256:67;955:374;;;;;:::o;1334:660::-;1458:6;1466;1474;1482;1490;1543:3;1531:9;1522:7;1518:23;1514:33;1511:53;;;1560:1;1557;1550:12;1511:53;1596:9;1583:23;1573:33;;1653:2;1642:9;1638:18;1625:32;1615:42;;1704:2;1693:9;1689:18;1676:32;1666:42;;1759:2;1748:9;1744:18;1731:32;1786:18;1778:6;1775:30;1772:50;;;1818:1;1815;1808:12;1772:50;1857:77;1926:7;1917:6;1906:9;1902:22;1857:77;:::i;:::-;1334:660;;;;-1:-1:-1;1334:660:39;;-1:-1:-1;1953:8:39;;1831:103;1334:660;-1:-1:-1;;;1334:660:39:o;1999:254::-;2067:6;2075;2128:2;2116:9;2107:7;2103:23;2099:32;2096:52;;;2144:1;2141;2134:12;2096:52;2180:9;2167:23;2157:33;;2209:38;2243:2;2232:9;2228:18;2209:38;:::i;:::-;2199:48;;1999:254;;;;;:::o;2258:184::-;2310:77;2307:1;2300:88;2407:4;2404:1;2397:15;2431:4;2428:1;2421:15;2447:253;2519:2;2513:9;2561:4;2549:17;;2596:18;2581:34;;2617:22;;;2578:62;2575:88;;;2643:18;;:::i;:::-;2679:2;2672:22;2447:253;:::o;2705:334::-;2776:2;2770:9;2832:2;2822:13;;2837:66;2818:86;2806:99;;2935:18;2920:34;;2956:22;;;2917:62;2914:88;;;2982:18;;:::i;:::-;3018:2;3011:22;2705:334;;-1:-1:-1;2705:334:39:o;3044:183::-;3104:4;3137:18;3129:6;3126:30;3123:56;;;3159:18;;:::i;:::-;-1:-1:-1;3204:1:39;3200:14;3216:4;3196:25;;3044:183::o;3232:662::-;3286:5;3339:3;3332:4;3324:6;3320:17;3316:27;3306:55;;3357:1;3354;3347:12;3306:55;3393:6;3380:20;3419:4;3443:60;3459:43;3499:2;3459:43;:::i;:::-;3443:60;:::i;:::-;3537:15;;;3623:1;3619:10;;;;3607:23;;3603:32;;;3568:12;;;;3647:15;;;3644:35;;;3675:1;3672;3665:12;3644:35;3711:2;3703:6;3699:15;3723:142;3739:6;3734:3;3731:15;3723:142;;;3805:17;;3793:30;;3843:12;;;;3756;;3723:142;;;-1:-1:-1;3883:5:39;3232:662;-1:-1:-1;;;;;;3232:662:39:o;3899:348::-;3983:6;4036:2;4024:9;4015:7;4011:23;4007:32;4004:52;;;4052:1;4049;4042:12;4004:52;4092:9;4079:23;4125:18;4117:6;4114:30;4111:50;;;4157:1;4154;4147:12;4111:50;4180:61;4233:7;4224:6;4213:9;4209:22;4180:61;:::i;:::-;4170:71;3899:348;-1:-1:-1;;;;3899:348:39:o;4252:592::-;4365:6;4373;4381;4389;4397;4405;4413;4466:3;4454:9;4445:7;4441:23;4437:33;4434:53;;;4483:1;4480;4473:12;4434:53;-1:-1:-1;;4506:23:39;;;4576:2;4561:18;;4548:32;;-1:-1:-1;4627:2:39;4612:18;;4599:32;;4678:2;4663:18;;4650:32;;-1:-1:-1;4729:3:39;4714:19;;4701:33;;-1:-1:-1;4781:3:39;4766:19;;4753:33;;-1:-1:-1;4833:3:39;4818:19;4805:33;;-1:-1:-1;4252:592:39;-1:-1:-1;4252:592:39:o;4849:798::-;4991:6;4999;5007;5015;5023;5031;5039;5092:3;5080:9;5071:7;5067:23;5063:33;5060:53;;;5109:1;5106;5099:12;5060:53;5145:9;5132:23;5122:33;;5202:2;5191:9;5187:18;5174:32;5164:42;;5253:2;5242:9;5238:18;5225:32;5215:42;;5304:2;5293:9;5289:18;5276:32;5266:42;;5355:3;5344:9;5340:19;5327:33;5317:43;;5411:3;5400:9;5396:19;5383:33;5439:18;5431:6;5428:30;5425:50;;;5471:1;5468;5461:12;5425:50;5510:77;5579:7;5570:6;5559:9;5555:22;5510:77;:::i;:::-;4849:798;;;;-1:-1:-1;4849:798:39;;-1:-1:-1;4849:798:39;;;;5484:103;;-1:-1:-1;;;4849:798:39:o;6103:248::-;6171:6;6179;6232:2;6220:9;6211:7;6207:23;6203:32;6200:52;;;6248:1;6245;6238:12;6200:52;-1:-1:-1;;6271:23:39;;;6341:2;6326:18;;;6313:32;;-1:-1:-1;6103:248:39:o;6587:1598::-;6639:5;6669:4;6713:3;6708:2;6700:6;6696:15;6692:25;6682:53;;6731:1;6728;6721:12;6682:53;6767:6;6754:20;6793:4;6817:60;6833:43;6873:2;6833:43;:::i;6817:60::-;6911:15;;;6997:1;6993:10;;;;6981:23;;6977:32;;;6942:12;;;;7021:15;;;7018:35;;;7049:1;7046;7039:12;7018:35;7085:2;7077:6;7073:15;7097:1059;7113:6;7108:3;7105:15;7097:1059;;;7199:3;7186:17;7226:18;7276:2;7263:11;7260:19;7257:109;;;7320:1;7349:2;7345;7338:14;7257:109;7401:11;7393:6;7389:24;7379:34;;7453:3;7448:2;7444;7440:11;7436:21;7426:119;;7499:1;7528:2;7524;7517:14;7426:119;7589:2;7585;7581:11;7568:25;7616:2;7641;7637;7634:10;7631:36;;;7647:18;;:::i;:::-;7695:110;7801:2;7732:66;7727:2;7723;7719:11;7715:84;7711:93;7695:110;:::i;:::-;7680:125;;7834:2;7825:7;7818:19;7878:3;7873:2;7868;7864;7860:11;7856:20;7853:29;7850:122;;;7924:1;7954:3;7949;7942:16;7850:122;8029:2;8024;8020;8016:11;8011:2;8002:7;7998:16;7985:47;-1:-1:-1;8079:1:39;8056:16;;;8052:25;;8045:36;8094:20;;-1:-1:-1;8134:12:39;;;;7130;;7097:1059;;;-1:-1:-1;8174:5:39;6587:1598;-1:-1:-1;;;;;;;6587:1598:39:o;8190:1049::-;8285:6;8338:2;8326:9;8317:7;8313:23;8309:32;8306:52;;;8354:1;8351;8344:12;8306:52;8394:9;8381:23;8423:18;8464:2;8456:6;8453:14;8450:34;;;8480:1;8477;8470:12;8450:34;8503:22;;;;8559:4;8541:16;;;8537:27;8534:47;;;8577:1;8574;8567:12;8534:47;8603:22;;:::i;:::-;8661:2;8648:16;8641:5;8634:31;8718:2;8714;8710:11;8697:25;8692:2;8685:5;8681:14;8674:49;8769:2;8765;8761:11;8748:25;8798:2;8788:8;8785:16;8782:36;;;8814:1;8811;8804:12;8782:36;8850:56;8898:7;8887:8;8883:2;8879:17;8850:56;:::i;:::-;8845:2;8838:5;8834:14;8827:80;;8960:2;8956;8952:11;8939:25;8934:2;8927:5;8923:14;8916:49;9019:3;9015:2;9011:12;8998:26;8992:3;8985:5;8981:15;8974:51;9071:3;9067:2;9063:12;9050:26;9101:2;9091:8;9088:16;9085:36;;;9117:1;9114;9107:12;9085:36;9154:54;9200:7;9189:8;9185:2;9181:17;9154:54;:::i;:::-;9148:3;9137:15;;9130:79;-1:-1:-1;9141:5:39;8190:1049;-1:-1:-1;;;;;8190:1049:39:o;9429:908::-;9587:6;9595;9603;9611;9619;9627;9680:3;9668:9;9659:7;9655:23;9651:33;9648:53;;;9697:1;9694;9687:12;9648:53;9733:9;9720:23;9710:33;;9794:2;9783:9;9779:18;9766:32;9817:18;9858:2;9850:6;9847:14;9844:34;;;9874:1;9871;9864:12;9844:34;9897:61;9950:7;9941:6;9930:9;9926:22;9897:61;:::i;:::-;9887:71;;10005:2;9994:9;9990:18;9977:32;9967:42;;10056:2;10045:9;10041:18;10028:32;10018:42;;10113:3;10102:9;10098:19;10085:33;10069:49;;10143:2;10133:8;10130:16;10127:36;;;10159:1;10156;10149:12;10127:36;;10198:79;10269:7;10258:8;10247:9;10243:24;10198:79;:::i;:::-;9429:908;;;;-1:-1:-1;9429:908:39;;-1:-1:-1;9429:908:39;;10296:8;;9429:908;-1:-1:-1;;;9429:908:39:o;10342:328::-;10419:6;10427;10435;10488:2;10476:9;10467:7;10463:23;10459:32;10456:52;;;10504:1;10501;10494:12;10456:52;10527:29;10546:9;10527:29;:::i;:::-;10517:39;;10603:2;10592:9;10588:18;10575:32;10565:42;;10626:38;10660:2;10649:9;10645:18;10626:38;:::i;:::-;10616:48;;10342:328;;;;;:::o;10675:729::-;10808:6;10816;10824;10832;10840;10848;10901:3;10889:9;10880:7;10876:23;10872:33;10869:53;;;10918:1;10915;10908:12;10869:53;10954:9;10941:23;10931:33;;11011:2;11000:9;10996:18;10983:32;10973:42;;11062:2;11051:9;11047:18;11034:32;11024:42;;11113:2;11102:9;11098:18;11085:32;11075:42;;11168:3;11157:9;11153:19;11140:33;11196:18;11188:6;11185:30;11182:50;;;11228:1;11225;11218:12;11182:50;11267:77;11336:7;11327:6;11316:9;11312:22;11267:77;:::i;11409:184::-;11461:77;11458:1;11451:88;11558:4;11555:1;11548:15;11582:4;11579:1;11572:15;11598:128;11638:3;11669:1;11665:6;11662:1;11659:13;11656:39;;;11675:18;;:::i;:::-;-1:-1:-1;11711:9:39;;11598:128::o;12231:125::-;12271:4;12299:1;12296;12293:8;12290:34;;;12304:18;;:::i;:::-;-1:-1:-1;12341:9:39;;12231:125::o;12715:184::-;12785:6;12838:2;12826:9;12817:7;12813:23;12809:32;12806:52;;;12854:1;12851;12844:12;12806:52;-1:-1:-1;12877:16:39;;12715:184;-1:-1:-1;12715:184:39:o;14143:325::-;14231:6;14226:3;14219:19;14283:6;14276:5;14269:4;14264:3;14260:14;14247:43;;14335:1;14328:4;14319:6;14314:3;14310:16;14306:27;14299:38;14201:3;14457:4;14387:66;14382:2;14374:6;14370:15;14366:88;14361:3;14357:98;14353:109;14346:116;;14143:325;;;;:::o;14473:1379::-;14673:4;14721:2;14710:9;14706:18;14751:6;14740:9;14733:25;14777:2;14815;14810;14799:9;14795:18;14788:30;14838:6;14868;14860;14853:22;14906:2;14895:9;14891:18;14884:25;;14968:2;14958:6;14955:1;14951:14;14940:9;14936:30;14932:39;14918:53;;14994:6;15018:1;15028:795;15042:6;15039:1;15036:13;15028:795;;;15131:66;15119:9;15111:6;15107:22;15103:95;15098:3;15091:108;15251:6;15238:20;15338:66;15329:6;15313:14;15309:27;15305:100;15285:18;15281:125;15271:153;;15420:1;15417;15410:12;15271:153;15450:31;;15508:19;;15554:18;15543:30;;15540:50;;;15586:1;15583;15576:12;15540:50;15638:6;15622:14;15618:27;15610:6;15606:40;15603:60;;;15659:1;15656;15649:12;15603:60;15686:57;15736:6;15728;15723:2;15716:5;15712:14;15686:57;:::i;:::-;15676:67;-1:-1:-1;;;15801:12:39;;;;15766:15;;;;15064:1;15057:9;15028:795;;;-1:-1:-1;15840:6:39;;14473:1379;-1:-1:-1;;;;;;;;14473:1379:39:o;15857:277::-;15924:6;15977:2;15965:9;15956:7;15952:23;15948:32;15945:52;;;15993:1;15990;15983:12;15945:52;16025:9;16019:16;16078:5;16071:13;16064:21;16057:5;16054:32;16044:60;;16100:1;16097;16090:12;16044:60;16123:5;15857:277;-1:-1:-1;;;15857:277:39:o;16546:482::-;16635:1;16678:5;16635:1;16692:330;16713:7;16703:8;16700:21;16692:330;;;16832:4;16764:66;16760:77;16754:4;16751:87;16748:113;;;16841:18;;:::i;:::-;16891:7;16881:8;16877:22;16874:55;;;16911:16;;;;16874:55;16990:22;;;;16950:15;;;;16692:330;;;16696:3;16546:482;;;;;:::o;17033:866::-;17082:5;17112:8;17102:80;;-1:-1:-1;17153:1:39;17167:5;;17102:80;17201:4;17191:76;;-1:-1:-1;17238:1:39;17252:5;;17191:76;17283:4;17301:1;17296:59;;;;17369:1;17364:130;;;;17276:218;;17296:59;17326:1;17317:10;;17340:5;;;17364:130;17401:3;17391:8;17388:17;17385:43;;;17408:18;;:::i;:::-;-1:-1:-1;;17464:1:39;17450:16;;17479:5;;17276:218;;17578:2;17568:8;17565:16;17559:3;17553:4;17550:13;17546:36;17540:2;17530:8;17527:16;17522:2;17516:4;17513:12;17509:35;17506:77;17503:159;;;-1:-1:-1;17615:19:39;;;17647:5;;17503:159;17694:34;17719:8;17713:4;17694:34;:::i;:::-;17824:6;17756:66;17752:79;17743:7;17740:92;17737:118;;;17835:18;;:::i;:::-;17873:20;;17033:866;-1:-1:-1;;;17033:866:39:o;17904:131::-;17964:5;17993:36;18020:8;18014:4;17993:36;:::i;18040:274::-;18080:1;18106;18096:189;;18141:77;18138:1;18131:88;18242:4;18239:1;18232:15;18270:4;18267:1;18260:15;18096:189;-1:-1:-1;18299:9:39;;18040:274::o;18572:228::-;18612:7;18738:1;18670:66;18666:74;18663:1;18660:81;18655:1;18648:9;18641:17;18637:105;18634:131;;;18745:18;;:::i;:::-;-1:-1:-1;18785:9:39;;18572:228::o;22180:632::-;22351:2;22403:21;;;22473:13;;22376:18;;;22495:22;;;22322:4;;22351:2;22574:15;;;;22548:2;22533:18;;;22322:4;22617:169;22631:6;22628:1;22625:13;22617:169;;;22692:13;;22680:26;;22761:15;;;;22726:12;;;;22653:1;22646:9;22617:169;;;-1:-1:-1;22803:3:39;;22180:632;-1:-1:-1;;;;;;22180:632:39:o;26475:265::-;26283:12;;26271:25;;26345:4;26334:16;;;26328:23;26312:14;;;26305:47;26401:4;26390:16;;;26384:23;26368:14;;;26361:47;26457:4;26446:16;;;26440:23;26424:14;;;26417:47;26671:3;26656:19;;26684:50;26204:266;26745:245;26824:6;26832;26885:2;26873:9;26864:7;26860:23;26856:32;26853:52;;;26901:1;26898;26891:12;26853:52;-1:-1:-1;;26924:16:39;;26980:2;26965:18;;;26959:25;26924:16;;26959:25;;-1:-1:-1;26745:245:39:o;28831:1000::-;29132:3;29160:66;29268:2;29259:6;29255:2;29251:15;29247:24;29242:3;29235:37;29303:2;29298:3;29294:12;29335:6;29329:13;29384:4;29423:2;29415:6;29411:15;29444:1;29454:175;29468:6;29465:1;29462:13;29454:175;;;29531:13;;29517:28;;29567:14;;;;29604:15;;;;29490:1;29483:9;29454:175;;;-1:-1:-1;;;;29660:2:39;29656:15;;;;29652:24;29638:39;;-1:-1:-1;;29704:2:39;29693:14;;29686:30;;;;29743:2;29732:14;;29725:30;29782:2;29771:14;;29764:30;29821:3;29810:15;;28831:1000;-1:-1:-1;;28831:1000:39:o;29836:258::-;29908:1;29918:113;29932:6;29929:1;29926:13;29918:113;;;30008:11;;;30002:18;29989:11;;;29982:39;29954:2;29947:10;29918:113;;;30049:6;30046:1;30043:13;30040:48;;;-1:-1:-1;;30084:1:39;30066:16;;30059:27;29836:258::o;30099:1188::-;30287:4;30335:2;30324:9;30320:18;30365:6;30354:9;30347:25;30391:2;30429;30424;30413:9;30409:18;30402:30;30452:6;30487;30481:13;30518:6;30510;30503:22;30556:2;30545:9;30541:18;30534:25;;30618:2;30608:6;30605:1;30601:14;30590:9;30586:30;30582:39;30568:53;;30656:2;30648:6;30644:15;30677:1;30687:571;30701:6;30698:1;30695:13;30687:571;;;30790:66;30778:9;30770:6;30766:22;30762:95;30757:3;30750:108;30887:6;30881:13;30929:2;30923:9;30960:8;30952:6;30945:24;30982:61;31034:8;31029:2;31021:6;31017:15;31012:2;31008;31004:11;30982:61;:::i;:::-;31100:2;31086:17;31105:66;31082:90;31070:103;;;;31066:112;;;-1:-1:-1;31236:12:39;;;;31201:15;;;;30723:1;30716:9;30687:571;;;-1:-1:-1;31275:6:39;;30099:1188;-1:-1:-1;;;;;;;;30099:1188:39:o;31705:184::-;31757:77;31754:1;31747:88;31854:4;31851:1;31844:15;31878:4;31875:1;31868:15;37975:274;38104:3;38142:6;38136:13;38158:53;38204:6;38199:3;38192:4;38184:6;38180:17;38158:53;:::i;:::-;38227:16;;;;;37975:274;-1:-1:-1;;37975:274:39:o;39825:184::-;39877:77;39874:1;39867:88;39974:4;39971:1;39964:15;39998:4;39995:1;39988:15" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "4807600", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "DAO_SHARE_COLLECTOR()": "273", + "DEFAULT_ADMIN_ROLE()": "251", + "PARAMETER_SETTER_ROLE()": "274", + "TRUSTY_ROLE()": "297", + "USDC_address()": "2423", + "availableExcessCollatDV(uint256[])": "infinite", + "bonus_rate()": "2397", + "buyBackDEUS(uint256,uint256[],uint256,uint256,bytes[])": "infinite", + "buyBackPaused()": "2389", + "buyback_fee()": "2376", + "collatDollarBalance(uint256)": "infinite", + "collectDaoShare(uint256,address)": "infinite", + "collectRedemption()": "infinite", + "daoShare()": "2374", + "emergencyWithdrawERC20(address,uint256,address)": "infinite", + "getChainID()": "248", + "getRoleAdmin(bytes32)": "2527", + "getRoleMember(bytes32,uint256)": "7024", + "getRoleMemberCount(bytes32)": "infinite", + "grantRole(bytes32,address)": "infinite", + "hasRole(bytes32,address)": "infinite", + "lastRedeemed(address)": "2589", + "mint1t1DEI(uint256,uint256,uint256,bytes[])": "infinite", + "mintAlgorithmicDEI(uint256,uint256,uint256,bytes[])": "infinite", + "mintFractionalDEI(uint256,uint256,uint256,uint256,uint256,bytes[])": "infinite", + "mintPaused()": "2434", + "minting_fee()": "2374", + "pausedPrice()": "2373", + "pool_ceiling()": "2396", + "recollat_fee()": "2416", + "recollateralizeDEI((uint256,uint256,uint256[],uint256,uint256,bytes[]))": "infinite", + "recollateralizePaused()": "2388", + "redeem1t1DEI(uint256,uint256,uint256,bytes[])": "infinite", + "redeemAlgorithmicDEI(uint256,uint256,uint256,bytes[])": "infinite", + "redeemCollateralBalances(address)": "2570", + "redeemDEUSBalances(address)": "2612", + "redeemFractionalDEI(uint256,uint256,uint256,uint256,bytes[])": "infinite", + "redeemPaused()": "2432", + "redemption_delay()": "2353", + "redemption_fee()": "2351", + "renounceRole(bytes32,address)": "infinite", + "revokeRole(bytes32,address)": "infinite", + "setPoolParameters(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": "infinite", + "toggleBuyBack()": "infinite", + "toggleMinting()": "infinite", + "toggleRecollateralize()": "infinite", + "toggleRedeeming()": "infinite", + "unclaimedPoolCollateral()": "2353", + "unclaimedPoolDEUS()": "2352" + } + }, + "methodIdentifiers": { + "DAO_SHARE_COLLECTOR()": "6d82e314", + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "PARAMETER_SETTER_ROLE()": "5de207cc", + "TRUSTY_ROLE()": "34ddb95d", + "USDC_address()": "f9abd26c", + "availableExcessCollatDV(uint256[])": "40e14b78", + "bonus_rate()": "4c634934", + "buyBackDEUS(uint256,uint256[],uint256,uint256,bytes[])": "c410ca1b", + "buyBackPaused()": "7f877f85", + "buyback_fee()": "101197c7", + "collatDollarBalance(uint256)": "b6258aaa", + "collectDaoShare(uint256,address)": "7901330b", + "collectRedemption()": "12ace5a2", + "daoShare()": "88d19f1b", + "emergencyWithdrawERC20(address,uint256,address)": "e3d84d5e", + "getChainID()": "564b81ef", + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "lastRedeemed(address)": "abae2c4c", + "mint1t1DEI(uint256,uint256,uint256,bytes[])": "32ad1ee4", + "mintAlgorithmicDEI(uint256,uint256,uint256,bytes[])": "c6301e5d", + "mintFractionalDEI(uint256,uint256,uint256,uint256,uint256,bytes[])": "54f9769d", + "mintPaused()": "7e4831d3", + "minting_fee()": "c3355b8d", + "pausedPrice()": "c74ec56a", + "pool_ceiling()": "6526a12a", + "recollat_fee()": "fede5c9c", + "recollateralizeDEI((uint256,uint256,uint256[],uint256,uint256,bytes[]))": "928d2b31", + "recollateralizePaused()": "6d2c5615", + "redeem1t1DEI(uint256,uint256,uint256,bytes[])": "254cd2bd", + "redeemAlgorithmicDEI(uint256,uint256,uint256,bytes[])": "978b73b5", + "redeemCollateralBalances(address)": "08a7493d", + "redeemDEUSBalances(address)": "3b92da47", + "redeemFractionalDEI(uint256,uint256,uint256,uint256,bytes[])": "eb2d7461", + "redeemPaused()": "b235d468", + "redemption_delay()": "15128425", + "redemption_fee()": "cb73999f", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "setPoolParameters(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": "4ebbe762", + "toggleBuyBack()": "50c9ecd9", + "toggleMinting()": "7d55094d", + "toggleRecollateralize()": "42d15aec", + "toggleRedeeming()": "daa50485", + "unclaimedPoolCollateral()": "7b0461e9", + "unclaimedPoolDEUS()": "3648b7dc" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dei_contract_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_deus_contract_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_collateral_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_trusty_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_admin_address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pool_ceiling\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_library\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"toggled\",\"type\":\"bool\"}],\"name\":\"BuybackToggled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"toggled\",\"type\":\"bool\"}],\"name\":\"MintingToggled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_ceiling\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_bonus_rate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_redemption_delay\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_mint_fee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_redeem_fee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_buyback_fee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_recollat_fee\",\"type\":\"uint256\"}],\"name\":\"PoolParametersSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"toggled\",\"type\":\"bool\"}],\"name\":\"RecollateralizeToggled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"toggled\",\"type\":\"bool\"}],\"name\":\"RedeemingToggled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"daoShare\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"daoShareCollected\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DAO_SHARE_COLLECTOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PARAMETER_SETTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRUSTY_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USDC_address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"collat_usd_price\",\"type\":\"uint256[]\"}],\"name\":\"availableExcessCollatDV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bonus_rate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"DEUS_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"collateral_price\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"buyBackDEUS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"buyBackPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"buyback_fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"collat_usd_price\",\"type\":\"uint256\"}],\"name\":\"collatDollarBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"collectDaoShare\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectRedemption\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"daoShare\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"emergencyWithdrawERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"lastRedeemed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"collateral_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateral_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"mint1t1DEI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dei_amount_d18\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deus_amount_d18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"mintAlgorithmicDEI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dei_amount_d18\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"collateral_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deus_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateral_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"mintFractionalDEI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"mint_amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minting_fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pausedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pool_ceiling\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recollat_fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"collateral_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pool_collateral_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"collateral_price\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"internalType\":\"struct DEIPool.RecollateralizeDEI\",\"name\":\"inputs\",\"type\":\"tuple\"}],\"name\":\"recollateralizeDEI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recollateralizePaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"DEI_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateral_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"redeem1t1DEI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"DEI_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"redeemAlgorithmicDEI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"redeemCollateralBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"redeemDEUSBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"DEI_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateral_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deus_current_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"redeemFractionalDEI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeemPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redemption_delay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redemption_fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"new_ceiling\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_bonus_rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_redemption_delay\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_mint_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_redeem_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_buyback_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"new_recollat_fee\",\"type\":\"uint256\"}],\"name\":\"setPoolParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleBuyBack\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleMinting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleRecollateralize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleRedeeming\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unclaimedPoolCollateral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unclaimedPoolDEUS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/DEI/Pools/Pool_USDC.sol\":\"Pool_USDC\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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 payable(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}\",\"keccak256\":\"0x60d51a32063a4975dbf9433d38f5849173527da72f007c38053274e06698cb54\",\"license\":\"MIT\"},\"contracts/DEI/IDEI.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\n\\ninterface IDEIStablecoin {\\n function name() external view returns (string memory);\\n function symbol() external view returns (string memory);\\n function totalSupply() external view returns (uint256);\\n function global_collateral_ratio() external view returns (uint256);\\n function dei_pools(address _address) external view returns (bool);\\n function dei_pools_array() external view returns (address[] memory);\\n function verify_price(bytes32 sighash, bytes[] calldata sigs) external view returns (bool);\\n function dei_info(uint256[] memory collat_usd_price) external view returns (uint256, uint256, uint256);\\n function getChainID() external view returns (uint256);\\n function globalCollateralValue(uint256[] memory collat_usd_price) external view returns (uint256);\\n function refreshCollateralRatio(uint deus_price, uint dei_price, uint256 expire_block, bytes[] calldata sigs) external;\\n function useGrowthRatio(bool _use_growth_ratio) external;\\n function setGrowthRatioBands(uint256 _GR_top_band, uint256 _GR_bottom_band) external;\\n function setPriceBands(uint256 _top_band, uint256 _bottom_band) external;\\n function activateDIP(bool _activate) external;\\n function pool_burn_from(address b_address, uint256 b_amount) external;\\n function pool_mint(address m_address, uint256 m_amount) external;\\n function addPool(address pool_address) external;\\n function removePool(address pool_address) external;\\n function setNameAndSymbol(string memory _name, string memory _symbol) external;\\n function setOracle(address _oracle) external;\\n function setDEIStep(uint256 _new_step) external;\\n function setReserveTracker(address _reserve_tracker_address) external;\\n function setRefreshCooldown(uint256 _new_cooldown) external;\\n function setDEUSAddress(address _deus_address) external;\\n function toggleCollateralRatio() external;\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x0c16e210870801fd11bac76f0cddbe1f61b19f18eb75a648144da3cba5f5f035\",\"license\":\"GPL-2.0-or-later\"},\"contracts/DEI/Pools/DEIPool.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity ^0.8.0;\\npragma abicoder v2;\\n// =================================================================================================================\\n// _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| |\\n// _| _| _| _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| |\\n// _| _| _|_|_| _| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_|_|_| |\\n// _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| |\\n// _|_|_| _|_|_|_| _|_| _|_|_| _| _| _| _| _|_|_| _| _| _|_|_| _|_|_| |\\n// =================================================================================================================\\n// ============================= DEIPool =============================\\n// ====================================================================\\n// DEUS Finance: https://github.com/DeusFinance\\n\\n// Primary Author(s)\\n// Travis Moore: https://github.com/FortisFortuna\\n// Jason Huan: https://github.com/jasonhuan\\n// Sam Kazemian: https://github.com/samkazemian\\n// Vahid Gh: https://github.com/vahid-dev\\n// SAYaghoubnejad: https://github.com/SAYaghoubnejad\\n\\n// Reviewer(s) / Contributor(s)\\n// Sam Sun: https://github.com/samczsun\\n\\nimport \\\"../../Uniswap/TransferHelper.sol\\\";\\nimport \\\"../../DEUS/IDEUS.sol\\\";\\nimport \\\"../../DEI/IDEI.sol\\\";\\nimport \\\"../../ERC20/ERC20.sol\\\";\\nimport \\\"../../Governance/AccessControl.sol\\\";\\nimport \\\"./DEIPoolLibrary.sol\\\";\\n\\ncontract DEIPool is AccessControl {\\n\\n\\tstruct RecollateralizeDEI {\\n\\t\\tuint256 collateral_amount;\\n\\t\\tuint256 pool_collateral_price;\\n\\t\\tuint256[] collateral_price;\\n\\t\\tuint256 deus_current_price;\\n\\t\\tuint256 expireBlock;\\n\\t\\tbytes[] sigs;\\n\\t}\\n\\n\\t/* ========== STATE VARIABLES ========== */\\n\\n\\tERC20 private collateral_token;\\n\\taddress private collateral_address;\\n\\n\\taddress private dei_contract_address;\\n\\taddress private deus_contract_address;\\n\\n\\tuint256 public minting_fee;\\n\\tuint256 public redemption_fee;\\n\\tuint256 public buyback_fee;\\n\\tuint256 public recollat_fee;\\n\\n\\tmapping(address => uint256) public redeemDEUSBalances;\\n\\tmapping(address => uint256) public redeemCollateralBalances;\\n\\tuint256 public unclaimedPoolCollateral;\\n\\tuint256 public unclaimedPoolDEUS;\\n\\tmapping(address => uint256) public lastRedeemed;\\n\\n\\t// Constants for various precisions\\n\\tuint256 private constant PRICE_PRECISION = 1e6;\\n\\tuint256 private constant COLLATERAL_RATIO_PRECISION = 1e6;\\n\\tuint256 private constant COLLATERAL_RATIO_MAX = 1e6;\\n\\n\\t// Number of decimals needed to get to 18\\n\\tuint256 private immutable missing_decimals;\\n\\n\\t// Pool_ceiling is the total units of collateral that a pool contract can hold\\n\\tuint256 public pool_ceiling = 0;\\n\\n\\t// Stores price of the collateral, if price is paused\\n\\tuint256 public pausedPrice = 0;\\n\\n\\t// Bonus rate on DEUS minted during recollateralizeDEI(); 6 decimals of precision, set to 0.75% on genesis\\n\\tuint256 public bonus_rate = 7500;\\n\\n\\t// Number of blocks to wait before being able to collectRedemption()\\n\\tuint256 public redemption_delay = 2;\\n\\n\\t// Minting/Redeeming fees goes to daoWallet\\n\\tuint256 public daoShare = 0;\\n\\n\\tDEIPoolLibrary poolLibrary;\\n\\n\\t// AccessControl Roles\\n\\tbytes32 private constant MINT_PAUSER = keccak256(\\\"MINT_PAUSER\\\");\\n\\tbytes32 private constant REDEEM_PAUSER = keccak256(\\\"REDEEM_PAUSER\\\");\\n\\tbytes32 private constant BUYBACK_PAUSER = keccak256(\\\"BUYBACK_PAUSER\\\");\\n\\tbytes32 private constant RECOLLATERALIZE_PAUSER = keccak256(\\\"RECOLLATERALIZE_PAUSER\\\");\\n\\tbytes32 public constant TRUSTY_ROLE = keccak256(\\\"TRUSTY_ROLE\\\");\\n\\tbytes32 public constant DAO_SHARE_COLLECTOR = keccak256(\\\"DAO_SHARE_COLLECTOR\\\");\\n\\tbytes32 public constant PARAMETER_SETTER_ROLE = keccak256(\\\"PARAMETER_SETTER_ROLE\\\");\\n\\n\\t// AccessControl state variables\\n\\tbool public mintPaused = false;\\n\\tbool public redeemPaused = false;\\n\\tbool public recollateralizePaused = false;\\n\\tbool public buyBackPaused = false;\\n\\n\\t/* ========== MODIFIERS ========== */\\n\\n\\tmodifier onlyTrusty() {\\n\\t\\trequire(\\n\\t\\t\\thasRole(TRUSTY_ROLE, msg.sender),\\n\\t\\t\\t\\\"POOL::you are not trusty\\\"\\n\\t\\t);\\n\\t\\t_;\\n\\t}\\n\\n\\tmodifier notRedeemPaused() {\\n\\t\\trequire(redeemPaused == false, \\\"POOL::Redeeming is paused\\\");\\n\\t\\t_;\\n\\t}\\n\\n\\tmodifier notMintPaused() {\\n\\t\\trequire(mintPaused == false, \\\"POOL::Minting is paused\\\");\\n\\t\\t_;\\n\\t}\\n\\n\\t/* ========== CONSTRUCTOR ========== */\\n\\n\\tconstructor(\\n\\t\\taddress _dei_contract_address,\\n\\t\\taddress _deus_contract_address,\\n\\t\\taddress _collateral_address,\\n\\t\\taddress _trusty_address,\\n\\t\\taddress _admin_address,\\n\\t\\tuint256 _pool_ceiling,\\n\\t\\taddress _library\\n\\t) {\\n\\t\\trequire(\\n\\t\\t\\t(_dei_contract_address != address(0)) &&\\n\\t\\t\\t\\t(_deus_contract_address != address(0)) &&\\n\\t\\t\\t\\t(_collateral_address != address(0)) &&\\n\\t\\t\\t\\t(_trusty_address != address(0)) &&\\n\\t\\t\\t\\t(_admin_address != address(0)) &&\\n\\t\\t\\t\\t(_library != address(0)),\\n\\t\\t\\t\\\"POOL::Zero address detected\\\"\\n\\t\\t);\\n\\t\\tpoolLibrary = DEIPoolLibrary(_library);\\n\\t\\tdei_contract_address = _dei_contract_address;\\n\\t\\tdeus_contract_address = _deus_contract_address;\\n\\t\\tcollateral_address = _collateral_address;\\n\\t\\tcollateral_token = ERC20(_collateral_address);\\n\\t\\tpool_ceiling = _pool_ceiling;\\n\\t\\tmissing_decimals = uint256(18) - collateral_token.decimals();\\n\\n\\t\\t_setupRole(DEFAULT_ADMIN_ROLE, _admin_address);\\n\\t\\t_setupRole(MINT_PAUSER, _trusty_address);\\n\\t\\t_setupRole(REDEEM_PAUSER, _trusty_address);\\n\\t\\t_setupRole(RECOLLATERALIZE_PAUSER, _trusty_address);\\n\\t\\t_setupRole(BUYBACK_PAUSER, _trusty_address);\\n\\t\\t_setupRole(TRUSTY_ROLE, _trusty_address);\\n\\t\\t_setupRole(PARAMETER_SETTER_ROLE, _trusty_address);\\n\\t}\\n\\n\\t/* ========== VIEWS ========== */\\n\\n\\t// Returns dollar value of collateral held in this DEI pool\\n\\tfunction collatDollarBalance(uint256 collat_usd_price) public view returns (uint256) {\\n\\t\\treturn ((collateral_token.balanceOf(address(this)) - unclaimedPoolCollateral) * (10**missing_decimals) * collat_usd_price) / (PRICE_PRECISION);\\n\\t}\\n\\n\\t// Returns the value of excess collateral held in this DEI pool, compared to what is needed to maintain the global collateral ratio\\n\\tfunction availableExcessCollatDV(uint256[] memory collat_usd_price) public view returns (uint256) {\\n\\t\\tuint256 total_supply = IDEIStablecoin(dei_contract_address).totalSupply();\\n\\t\\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\\n\\t\\tuint256 global_collat_value = IDEIStablecoin(dei_contract_address).globalCollateralValue(collat_usd_price);\\n\\n\\t\\tif (global_collateral_ratio > COLLATERAL_RATIO_PRECISION)\\n\\t\\t\\tglobal_collateral_ratio = COLLATERAL_RATIO_PRECISION; // Handles an overcollateralized contract with CR > 1\\n\\t\\tuint256 required_collat_dollar_value_d18 = (total_supply * global_collateral_ratio) / (COLLATERAL_RATIO_PRECISION); // Calculates collateral needed to back each 1 DEI with $1 of collateral at current collat ratio\\n\\t\\tif (global_collat_value > required_collat_dollar_value_d18)\\n\\t\\t\\treturn global_collat_value - required_collat_dollar_value_d18;\\n\\t\\telse return 0;\\n\\t}\\n\\n\\tfunction getChainID() public view returns (uint256) {\\n\\t\\tuint256 id;\\n\\t\\tassembly {\\n\\t\\t\\tid := chainid()\\n\\t\\t}\\n\\t\\treturn id;\\n\\t}\\n\\n\\t/* ========== PUBLIC FUNCTIONS ========== */\\n\\n\\t// We separate out the 1t1, fractional and algorithmic minting functions for gas efficiency\\n\\tfunction mint1t1DEI(uint256 collateral_amount, uint256 collateral_price, uint256 expireBlock, bytes[] calldata sigs)\\n\\t\\texternal\\n\\t\\tnotMintPaused\\n\\t\\treturns (uint256 dei_amount_d18)\\n\\t{\\n\\n\\t\\trequire(\\n\\t\\t\\tIDEIStablecoin(dei_contract_address).global_collateral_ratio() >= COLLATERAL_RATIO_MAX,\\n\\t\\t\\t\\\"Collateral ratio must be >= 1\\\"\\n\\t\\t);\\n\\t\\trequire(\\n\\t\\t\\tcollateral_token.balanceOf(address(this)) - unclaimedPoolCollateral + collateral_amount <= pool_ceiling,\\n\\t\\t\\t\\\"[Pool's Closed]: Ceiling reached\\\"\\n\\t\\t);\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"POOL::mint1t1DEI: signature is expired\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::mint1t1DEI: invalid signatures\\\");\\n\\n\\t\\tuint256 collateral_amount_d18 = collateral_amount * (10**missing_decimals);\\n\\t\\tdei_amount_d18 = poolLibrary.calcMint1t1DEI(\\n\\t\\t\\tcollateral_price,\\n\\t\\t\\tcollateral_amount_d18\\n\\t\\t); //1 DEI for each $1 worth of collateral\\n\\n\\t\\tdei_amount_d18 = (dei_amount_d18 * (uint256(1e6) - minting_fee)) / 1e6; //remove precision at the end\\n\\n\\t\\tTransferHelper.safeTransferFrom(\\n\\t\\t\\taddress(collateral_token),\\n\\t\\t\\tmsg.sender,\\n\\t\\t\\taddress(this),\\n\\t\\t\\tcollateral_amount\\n\\t\\t);\\n\\n\\t\\tdaoShare += dei_amount_d18 * minting_fee / 1e6;\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_mint(msg.sender, dei_amount_d18);\\n\\t}\\n\\n\\t// 0% collateral-backed\\n\\tfunction mintAlgorithmicDEI(\\n\\t\\tuint256 deus_amount_d18,\\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external notMintPaused returns (uint256 dei_amount_d18) {\\n\\t\\trequire(\\n\\t\\t\\tIDEIStablecoin(dei_contract_address).global_collateral_ratio() == 0,\\n\\t\\t\\t\\\"Collateral ratio must be 0\\\"\\n\\t\\t);\\n\\t\\trequire(expireBlock >= block.number, \\\"POOL::mintAlgorithmicDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(deus_contract_address, deus_current_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::mintAlgorithmicDEI: invalid signatures\\\");\\n\\n\\t\\tdei_amount_d18 = poolLibrary.calcMintAlgorithmicDEI(\\n\\t\\t\\tdeus_current_price, // X DEUS / 1 USD\\n\\t\\t\\tdeus_amount_d18\\n\\t\\t);\\n\\n\\t\\tdei_amount_d18 = (dei_amount_d18 * (uint256(1e6) - (minting_fee))) / (1e6);\\n\\t\\tdaoShare += dei_amount_d18 * minting_fee / 1e6;\\n\\n\\t\\tIDEUSToken(deus_contract_address).pool_burn_from(msg.sender, deus_amount_d18);\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_mint(msg.sender, dei_amount_d18);\\n\\t}\\n\\n\\t// Will fail if fully collateralized or fully algorithmic\\n\\t// > 0% and < 100% collateral-backed\\n\\tfunction mintFractionalDEI(\\n\\t\\tuint256 collateral_amount,\\n\\t\\tuint256 deus_amount,\\n\\t\\tuint256 collateral_price,\\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external notMintPaused returns (uint256 mint_amount) {\\n\\t\\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\\n\\t\\trequire(\\n\\t\\t\\tglobal_collateral_ratio < COLLATERAL_RATIO_MAX && global_collateral_ratio > 0,\\n\\t\\t\\t\\\"Collateral ratio needs to be between .000001 and .999999\\\"\\n\\t\\t);\\n\\t\\trequire(\\n\\t\\t\\tcollateral_token.balanceOf(address(this)) - unclaimedPoolCollateral + collateral_amount <= pool_ceiling,\\n\\t\\t\\t\\\"Pool ceiling reached, no more DEI can be minted with this collateral\\\"\\n\\t\\t);\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"POOL::mintFractionalDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, deus_contract_address, deus_current_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::mintFractionalDEI: invalid signatures\\\");\\n\\n\\t\\tDEIPoolLibrary.MintFD_Params memory input_params;\\n\\n\\t\\t// Blocking is just for solving stack depth problem\\n\\t\\t{\\n\\t\\t\\tuint256 collateral_amount_d18 = collateral_amount * (10**missing_decimals);\\n\\t\\t\\tinput_params = DEIPoolLibrary.MintFD_Params(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_current_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_amount_d18,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tglobal_collateral_ratio\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\t\\t}\\t\\t\\t\\t\\t\\t\\n\\n\\t\\tuint256 deus_needed;\\n\\t\\t(mint_amount, deus_needed) = poolLibrary.calcMintFractionalDEI(input_params);\\n\\t\\trequire(deus_needed <= deus_amount, \\\"Not enough DEUS inputted\\\");\\n\\t\\t\\n\\t\\tmint_amount = (mint_amount * (uint256(1e6) - minting_fee)) / (1e6);\\n\\n\\t\\tIDEUSToken(deus_contract_address).pool_burn_from(msg.sender, deus_needed);\\n\\t\\tTransferHelper.safeTransferFrom(\\n\\t\\t\\taddress(collateral_token),\\n\\t\\t\\tmsg.sender,\\n\\t\\t\\taddress(this),\\n\\t\\t\\tcollateral_amount\\n\\t\\t);\\n\\n\\t\\tdaoShare += mint_amount * minting_fee / 1e6;\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_mint(msg.sender, mint_amount);\\n\\t}\\n\\n\\t// Redeem collateral. 100% collateral-backed\\n\\tfunction redeem1t1DEI(uint256 DEI_amount, uint256 collateral_price, uint256 expireBlock, bytes[] calldata sigs)\\n\\t\\texternal\\n\\t\\tnotRedeemPaused\\n\\t{\\n\\t\\trequire(\\n\\t\\t\\tIDEIStablecoin(dei_contract_address).global_collateral_ratio() == COLLATERAL_RATIO_MAX,\\n\\t\\t\\t\\\"Collateral ratio must be == 1\\\"\\n\\t\\t);\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"POOL::mintAlgorithmicDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::redeem1t1DEI: invalid signatures\\\");\\n\\n\\t\\t// Need to adjust for decimals of collateral\\n\\t\\tuint256 DEI_amount_precision = DEI_amount / (10**missing_decimals);\\n\\t\\tuint256 collateral_needed = poolLibrary.calcRedeem1t1DEI(\\n\\t\\t\\tcollateral_price,\\n\\t\\t\\tDEI_amount_precision\\n\\t\\t);\\n\\n\\t\\tcollateral_needed = (collateral_needed * (uint256(1e6) - redemption_fee)) / (1e6);\\n\\t\\trequire(\\n\\t\\t\\tcollateral_needed <= collateral_token.balanceOf(address(this)) - unclaimedPoolCollateral,\\n\\t\\t\\t\\\"Not enough collateral in pool\\\"\\n\\t\\t);\\n\\n\\t\\tredeemCollateralBalances[msg.sender] = redeemCollateralBalances[msg.sender] + collateral_needed;\\n\\t\\tunclaimedPoolCollateral = unclaimedPoolCollateral + collateral_needed;\\n\\t\\tlastRedeemed[msg.sender] = block.number;\\n\\n\\t\\tdaoShare += DEI_amount * redemption_fee / 1e6;\\n\\t\\t// Move all external functions to the end\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_burn_from(msg.sender, DEI_amount);\\n\\t}\\n\\n\\t// Will fail if fully collateralized or algorithmic\\n\\t// Redeem DEI for collateral and DEUS. > 0% and < 100% collateral-backed\\n\\tfunction redeemFractionalDEI(\\n\\t\\tuint256 DEI_amount,\\n\\t\\tuint256 collateral_price, \\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external notRedeemPaused {\\n\\t\\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\\n\\t\\trequire(\\n\\t\\t\\tglobal_collateral_ratio < COLLATERAL_RATIO_MAX && global_collateral_ratio > 0,\\n\\t\\t\\t\\\"POOL::redeemFractionalDEI: Collateral ratio needs to be between .000001 and .999999\\\"\\n\\t\\t);\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"DEI::redeemFractionalDEI: signature is expired\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(collateral_address, collateral_price, deus_contract_address, deus_current_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::redeemFractionalDEI: invalid signatures\\\");\\n\\n\\t\\t// Blocking is just for solving stack depth problem\\n\\t\\tuint256 deus_amount;\\n\\t\\tuint256 collateral_amount;\\n\\t\\t{\\n\\t\\t\\tuint256 col_price_usd = collateral_price;\\n\\n\\t\\t\\tuint256 DEI_amount_post_fee = (DEI_amount * (uint256(1e6) - redemption_fee)) / (PRICE_PRECISION);\\n\\n\\t\\t\\tuint256 deus_dollar_value_d18 = DEI_amount_post_fee - ((DEI_amount_post_fee * global_collateral_ratio) / (PRICE_PRECISION));\\n\\t\\t\\tdeus_amount = deus_dollar_value_d18 * (PRICE_PRECISION) / (deus_current_price);\\n\\n\\t\\t\\t// Need to adjust for decimals of collateral\\n\\t\\t\\tuint256 DEI_amount_precision = DEI_amount_post_fee / (10**missing_decimals);\\n\\t\\t\\tuint256 collateral_dollar_value = (DEI_amount_precision * global_collateral_ratio) / PRICE_PRECISION;\\n\\t\\t\\tcollateral_amount = (collateral_dollar_value * PRICE_PRECISION) / (col_price_usd);\\n\\t\\t}\\n\\t\\trequire(\\n\\t\\t\\tcollateral_amount <= collateral_token.balanceOf(address(this)) - unclaimedPoolCollateral,\\n\\t\\t\\t\\\"Not enough collateral in pool\\\"\\n\\t\\t);\\n\\n\\t\\tredeemCollateralBalances[msg.sender] = redeemCollateralBalances[msg.sender] + collateral_amount;\\n\\t\\tunclaimedPoolCollateral = unclaimedPoolCollateral + collateral_amount;\\n\\n\\t\\tredeemDEUSBalances[msg.sender] = redeemDEUSBalances[msg.sender] + deus_amount;\\n\\t\\tunclaimedPoolDEUS = unclaimedPoolDEUS + deus_amount;\\n\\n\\t\\tlastRedeemed[msg.sender] = block.number;\\n\\n\\t\\tdaoShare += DEI_amount * redemption_fee / 1e6;\\n\\t\\t// Move all external functions to the end\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_burn_from(msg.sender, DEI_amount);\\n\\t\\tIDEUSToken(deus_contract_address).pool_mint(address(this), deus_amount);\\n\\t}\\n\\n\\t// Redeem DEI for DEUS. 0% collateral-backed\\n\\tfunction redeemAlgorithmicDEI(\\n\\t\\tuint256 DEI_amount,\\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external notRedeemPaused {\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).global_collateral_ratio() == 0, \\\"POOL::redeemAlgorithmicDEI: Collateral ratio must be 0\\\");\\n\\n\\t\\trequire(expireBlock >= block.number, \\\"DEI::redeemAlgorithmicDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(deus_contract_address, deus_current_price, expireBlock, getChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::redeemAlgorithmicDEI: invalid signatures\\\");\\n\\n\\t\\tuint256 deus_dollar_value_d18 = DEI_amount;\\n\\n\\t\\tdeus_dollar_value_d18 = (deus_dollar_value_d18 * (uint256(1e6) - redemption_fee)) / 1e6; //apply fees\\n\\n\\t\\tuint256 deus_amount = (deus_dollar_value_d18 * (PRICE_PRECISION)) / deus_current_price;\\n\\n\\t\\tredeemDEUSBalances[msg.sender] = redeemDEUSBalances[msg.sender] + deus_amount;\\n\\t\\tunclaimedPoolDEUS = unclaimedPoolDEUS + deus_amount;\\n\\n\\t\\tlastRedeemed[msg.sender] = block.number;\\n\\n\\t\\tdaoShare += DEI_amount * redemption_fee / 1e6;\\n\\t\\t// Move all external functions to the end\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_burn_from(msg.sender, DEI_amount);\\n\\t\\tIDEUSToken(deus_contract_address).pool_mint(address(this), deus_amount);\\n\\t}\\n\\n\\t// After a redemption happens, transfer the newly minted DEUS and owed collateral from this pool\\n\\t// contract to the user. Redemption is split into two functions to prevent flash loans from being able\\n\\t// to take out DEI/collateral from the system, use an AMM to trade the new price, and then mint back into the system.\\n\\tfunction collectRedemption() external {\\n\\t\\trequire(\\n\\t\\t\\t(lastRedeemed[msg.sender] + redemption_delay) <= block.number,\\n\\t\\t\\t\\\"POOL::collectRedemption: Must wait for redemption_delay blocks before collecting redemption\\\"\\n\\t\\t);\\n\\t\\tbool sendDEUS = false;\\n\\t\\tbool sendCollateral = false;\\n\\t\\tuint256 DEUSAmount = 0;\\n\\t\\tuint256 CollateralAmount = 0;\\n\\n\\t\\t// Use Checks-Effects-Interactions pattern\\n\\t\\tif (redeemDEUSBalances[msg.sender] > 0) {\\n\\t\\t\\tDEUSAmount = redeemDEUSBalances[msg.sender];\\n\\t\\t\\tredeemDEUSBalances[msg.sender] = 0;\\n\\t\\t\\tunclaimedPoolDEUS = unclaimedPoolDEUS - DEUSAmount;\\n\\n\\t\\t\\tsendDEUS = true;\\n\\t\\t}\\n\\n\\t\\tif (redeemCollateralBalances[msg.sender] > 0) {\\n\\t\\t\\tCollateralAmount = redeemCollateralBalances[msg.sender];\\n\\t\\t\\tredeemCollateralBalances[msg.sender] = 0;\\n\\t\\t\\tunclaimedPoolCollateral = unclaimedPoolCollateral - CollateralAmount;\\n\\t\\t\\tsendCollateral = true;\\n\\t\\t}\\n\\n\\t\\tif (sendDEUS) {\\n\\t\\t\\tTransferHelper.safeTransfer(address(deus_contract_address), msg.sender, DEUSAmount);\\n\\t\\t}\\n\\t\\tif (sendCollateral) {\\n\\t\\t\\tTransferHelper.safeTransfer(\\n\\t\\t\\t\\taddress(collateral_token),\\n\\t\\t\\t\\tmsg.sender,\\n\\t\\t\\t\\tCollateralAmount\\n\\t\\t\\t);\\n\\t\\t}\\n\\t}\\n\\n\\t// When the protocol is recollateralizing, we need to give a discount of DEUS to hit the new CR target\\n\\t// Thus, if the target collateral ratio is higher than the actual value of collateral, minters get DEUS for adding collateral\\n\\t// This function simply rewards anyone that sends collateral to a pool with the same amount of DEUS + the bonus rate\\n\\t// Anyone can call this function to recollateralize the protocol and take the extra DEUS value from the bonus rate as an arb opportunity\\n\\tfunction recollateralizeDEI(RecollateralizeDEI memory inputs) external {\\n\\t\\trequire(recollateralizePaused == false, \\\"POOL::recollateralizeDEI: Recollateralize is paused\\\");\\n\\n\\t\\trequire(inputs.expireBlock >= block.number, \\\"POOL::recollateralizeDEI: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_address, \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinputs.collateral_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_contract_address, \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinputs.deus_current_price, \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinputs.expireBlock,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tgetChainID()\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, inputs.sigs), \\\"POOL::recollateralizeDEI: invalid signatures\\\");\\n\\n\\t\\tuint256 collateral_amount_d18 = inputs.collateral_amount * (10**missing_decimals);\\n\\n\\t\\tuint256 dei_total_supply = IDEIStablecoin(dei_contract_address).totalSupply();\\n\\t\\tuint256 global_collateral_ratio = IDEIStablecoin(dei_contract_address).global_collateral_ratio();\\n\\t\\tuint256 global_collat_value = IDEIStablecoin(dei_contract_address).globalCollateralValue(inputs.collateral_price);\\n\\n\\t\\t(uint256 collateral_units, uint256 amount_to_recollat) = poolLibrary.calcRecollateralizeDEIInner(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_amount_d18,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinputs.collateral_price[inputs.collateral_price.length - 1], // pool collateral price exist in last index\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tglobal_collat_value,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdei_total_supply,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tglobal_collateral_ratio\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\tuint256 collateral_units_precision = collateral_units / (10**missing_decimals);\\n\\n\\t\\tuint256 deus_paid_back = (amount_to_recollat * (uint256(1e6) + bonus_rate - recollat_fee)) / inputs.deus_current_price;\\n\\n\\t\\tTransferHelper.safeTransferFrom(\\n\\t\\t\\taddress(collateral_token),\\n\\t\\t\\tmsg.sender,\\n\\t\\t\\taddress(this),\\n\\t\\t\\tcollateral_units_precision\\n\\t\\t);\\n\\t\\tIDEUSToken(deus_contract_address).pool_mint(msg.sender, deus_paid_back);\\n\\t}\\n\\n\\t// Function can be called by an DEUS holder to have the protocol buy back DEUS with excess collateral value from a desired collateral pool\\n\\t// This can also happen if the collateral ratio > 1\\n\\tfunction buyBackDEUS(\\n\\t\\tuint256 DEUS_amount,\\n\\t\\tuint256[] memory collateral_price,\\n\\t\\tuint256 deus_current_price,\\n\\t\\tuint256 expireBlock,\\n\\t\\tbytes[] calldata sigs\\n\\t) external {\\n\\t\\trequire(buyBackPaused == false, \\\"POOL::buyBackDEUS: Buyback is paused\\\");\\n\\t\\trequire(expireBlock >= block.number, \\\"DEI::buyBackDEUS: signature is expired.\\\");\\n\\t\\tbytes32 sighash = keccak256(abi.encodePacked(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_address,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_contract_address,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_current_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\texpireBlock,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tgetChainID()));\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).verify_price(sighash, sigs), \\\"POOL::buyBackDEUS: invalid signatures\\\");\\n\\n\\t\\tDEIPoolLibrary.BuybackDEUS_Params memory input_params = DEIPoolLibrary.BuybackDEUS_Params(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tavailableExcessCollatDV(collateral_price),\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeus_current_price,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcollateral_price[collateral_price.length - 1], // pool collateral price exist in last index\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tDEUS_amount\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\tuint256 collateral_equivalent_d18 = (poolLibrary.calcBuyBackDEUS(input_params) * (uint256(1e6) - buyback_fee)) / (1e6);\\n\\t\\tuint256 collateral_precision = collateral_equivalent_d18 / (10**missing_decimals);\\n\\n\\t\\t// Give the sender their desired collateral and burn the DEUS\\n\\t\\tIDEUSToken(deus_contract_address).pool_burn_from(msg.sender, DEUS_amount);\\n\\t\\tTransferHelper.safeTransfer(\\n\\t\\t\\taddress(collateral_token),\\n\\t\\t\\tmsg.sender,\\n\\t\\t\\tcollateral_precision\\n\\t\\t);\\n\\t}\\n\\n\\t/* ========== RESTRICTED FUNCTIONS ========== */\\n\\n\\tfunction collectDaoShare(uint256 amount, address to) external {\\n\\t\\trequire(hasRole(DAO_SHARE_COLLECTOR, msg.sender));\\n\\t\\trequire(amount <= daoShare, \\\"amount<=daoShare\\\");\\n\\t\\tIDEIStablecoin(dei_contract_address).pool_mint(to, amount);\\n\\t\\tdaoShare -= amount;\\n\\n\\t\\temit daoShareCollected(amount, to);\\n\\t}\\n\\n\\tfunction emergencyWithdrawERC20(address token, uint amount, address to) external onlyTrusty {\\n\\t\\tIERC20(token).transfer(to, amount);\\n\\t}\\n\\n\\tfunction toggleMinting() external {\\n\\t\\trequire(hasRole(MINT_PAUSER, msg.sender));\\n\\t\\tmintPaused = !mintPaused;\\n\\n\\t\\temit MintingToggled(mintPaused);\\n\\t}\\n\\n\\tfunction toggleRedeeming() external {\\n\\t\\trequire(hasRole(REDEEM_PAUSER, msg.sender));\\n\\t\\tredeemPaused = !redeemPaused;\\n\\n\\t\\temit RedeemingToggled(redeemPaused);\\n\\t}\\n\\n\\tfunction toggleRecollateralize() external {\\n\\t\\trequire(hasRole(RECOLLATERALIZE_PAUSER, msg.sender));\\n\\t\\trecollateralizePaused = !recollateralizePaused;\\n\\n\\t\\temit RecollateralizeToggled(recollateralizePaused);\\n\\t}\\n\\n\\tfunction toggleBuyBack() external {\\n\\t\\trequire(hasRole(BUYBACK_PAUSER, msg.sender));\\n\\t\\tbuyBackPaused = !buyBackPaused;\\n\\n\\t\\temit BuybackToggled(buyBackPaused);\\n\\t}\\n\\n\\t// Combined into one function due to 24KiB contract memory limit\\n\\tfunction setPoolParameters(\\n\\t\\tuint256 new_ceiling,\\n\\t\\tuint256 new_bonus_rate,\\n\\t\\tuint256 new_redemption_delay,\\n\\t\\tuint256 new_mint_fee,\\n\\t\\tuint256 new_redeem_fee,\\n\\t\\tuint256 new_buyback_fee,\\n\\t\\tuint256 new_recollat_fee\\n\\t) external {\\n\\t\\trequire(hasRole(PARAMETER_SETTER_ROLE, msg.sender), \\\"POOL: Caller is not PARAMETER_SETTER_ROLE\\\");\\n\\t\\tpool_ceiling = new_ceiling;\\n\\t\\tbonus_rate = new_bonus_rate;\\n\\t\\tredemption_delay = new_redemption_delay;\\n\\t\\tminting_fee = new_mint_fee;\\n\\t\\tredemption_fee = new_redeem_fee;\\n\\t\\tbuyback_fee = new_buyback_fee;\\n\\t\\trecollat_fee = new_recollat_fee;\\n\\n\\t\\temit PoolParametersSet(\\n\\t\\t\\tnew_ceiling,\\n\\t\\t\\tnew_bonus_rate,\\n\\t\\t\\tnew_redemption_delay,\\n\\t\\t\\tnew_mint_fee,\\n\\t\\t\\tnew_redeem_fee,\\n\\t\\t\\tnew_buyback_fee,\\n\\t\\t\\tnew_recollat_fee\\n\\t\\t);\\n\\t}\\n\\n\\t/* ========== EVENTS ========== */\\n\\n\\tevent PoolParametersSet(\\n\\t\\tuint256 new_ceiling,\\n\\t\\tuint256 new_bonus_rate,\\n\\t\\tuint256 new_redemption_delay,\\n\\t\\tuint256 new_mint_fee,\\n\\t\\tuint256 new_redeem_fee,\\n\\t\\tuint256 new_buyback_fee,\\n\\t\\tuint256 new_recollat_fee\\n\\t);\\n\\tevent daoShareCollected(uint256 daoShare, address to);\\n\\tevent MintingToggled(bool toggled);\\n\\tevent RedeemingToggled(bool toggled);\\n\\tevent RecollateralizeToggled(bool toggled);\\n\\tevent BuybackToggled(bool toggled);\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0xc714b5aaa2c0b0b8129e279d395e924d1ea17699f830b64250af9127e6026d21\",\"license\":\"GPL-2.0-or-later\"},\"contracts/DEI/Pools/DEIPoolLibrary.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.8.0;\\n\\ncontract DEIPoolLibrary {\\n\\n // Constants for various precisions\\n uint256 private constant PRICE_PRECISION = 1e6;\\n\\n constructor() {}\\n\\n // ================ Structs ================\\n // Needed to lower stack size\\n struct MintFD_Params {\\n uint256 deus_price_usd; \\n uint256 col_price_usd;\\n uint256 collateral_amount;\\n uint256 col_ratio;\\n }\\n\\n struct BuybackDEUS_Params {\\n uint256 excess_collateral_dollar_value_d18;\\n uint256 deus_price_usd;\\n uint256 col_price_usd;\\n uint256 DEUS_amount;\\n }\\n\\n // ================ Functions ================\\n\\n function calcMint1t1DEI(uint256 col_price, uint256 collateral_amount_d18) public pure returns (uint256) {\\n return (collateral_amount_d18 * col_price) / (1e6);\\n }\\n\\n function calcMintAlgorithmicDEI(uint256 deus_price_usd, uint256 deus_amount_d18) public pure returns (uint256) {\\n return (deus_amount_d18 * deus_price_usd) / (1e6);\\n }\\n\\n function calcMintFractionalDEI(MintFD_Params memory params) public pure returns (uint256, uint256) {\\n // Since solidity truncates division, every division operation must be the last operation in the equation to ensure minimum error\\n // The contract must check the proper ratio was sent to mint DEI. We do this by seeing the minimum mintable DEI based on each amount \\n uint256 c_dollar_value_d18;\\n \\n // Scoping for stack concerns\\n { \\n // USD amounts of the collateral and the DEUS\\n c_dollar_value_d18 = (params.collateral_amount * params.col_price_usd) / (1e6);\\n\\n }\\n uint calculated_deus_dollar_value_d18 = ((c_dollar_value_d18 * (1e6)) / params.col_ratio) - c_dollar_value_d18;\\n\\n uint calculated_deus_needed = (calculated_deus_dollar_value_d18 * (1e6)) / params.deus_price_usd;\\n\\n return (\\n c_dollar_value_d18 + calculated_deus_dollar_value_d18,\\n calculated_deus_needed\\n );\\n }\\n\\n function calcRedeem1t1DEI(uint256 col_price_usd, uint256 DEI_amount) public pure returns (uint256) {\\n return (DEI_amount * (1e6)) / col_price_usd;\\n }\\n\\n function calcBuyBackDEUS(BuybackDEUS_Params memory params) public pure returns (uint256) {\\n // If the total collateral value is higher than the amount required at the current collateral ratio then buy back up to the possible DEUS with the desired collateral\\n require(params.excess_collateral_dollar_value_d18 > 0, \\\"No excess collateral to buy back!\\\");\\n\\n // Make sure not to take more than is available\\n uint256 deus_dollar_value_d18 = (params.DEUS_amount * (params.deus_price_usd)) / (1e6);\\n require(deus_dollar_value_d18 <= params.excess_collateral_dollar_value_d18, \\\"You are trying to buy back more than the excess!\\\");\\n\\n // Get the equivalent amount of collateral based on the market value of DEUS provided \\n uint256 collateral_equivalent_d18 = (deus_dollar_value_d18 * (1e6)) / params.col_price_usd;\\n //collateral_equivalent_d18 = collateral_equivalent_d18.sub((collateral_equivalent_d18.mul(params.buyback_fee)).div(1e6));\\n\\n return collateral_equivalent_d18;\\n\\n }\\n\\n\\n // Returns value of collateral that must increase to reach recollateralization target (if 0 means no recollateralization)\\n function recollateralizeAmount(uint256 total_supply, uint256 global_collateral_ratio, uint256 global_collat_value) public pure returns (uint256) {\\n uint256 target_collat_value = (total_supply * global_collateral_ratio) / (1e6); // We want 18 decimals of precision so divide by 1e6; total_supply is 1e18 and global_collateral_ratio is 1e6\\n // Subtract the current value of collateral from the target value needed, if higher than 0 then system needs to recollateralize\\n return target_collat_value - global_collat_value; // If recollateralization is not needed, throws a subtraction underflow\\n }\\n\\n function calcRecollateralizeDEIInner(\\n uint256 collateral_amount, \\n uint256 col_price,\\n uint256 global_collat_value,\\n uint256 dei_total_supply,\\n uint256 global_collateral_ratio\\n ) public pure returns (uint256, uint256) {\\n uint256 collat_value_attempted = (collateral_amount * col_price) / (1e6);\\n uint256 effective_collateral_ratio = (global_collat_value * (1e6)) / dei_total_supply; //returns it in 1e6\\n uint256 recollat_possible = (global_collateral_ratio * dei_total_supply - (dei_total_supply * effective_collateral_ratio)) / (1e6);\\n\\n uint256 amount_to_recollat;\\n if(collat_value_attempted <= recollat_possible){\\n amount_to_recollat = collat_value_attempted;\\n } else {\\n amount_to_recollat = recollat_possible;\\n }\\n\\n return ((amount_to_recollat * (1e6)) / col_price, amount_to_recollat);\\n\\n }\\n\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x6c2db8a8f39e018d8beb032c29cb86e4c99766669e511f328fa8faf0b173966a\",\"license\":\"GPL-2.0-or-later\"},\"contracts/DEI/Pools/Pool_USDC.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.6.11;\\n\\nimport \\\"./DEIPool.sol\\\";\\n\\ncontract Pool_USDC is DEIPool {\\n address public USDC_address;\\n constructor(\\n address _dei_contract_address,\\n address _deus_contract_address,\\n address _collateral_address,\\n address _trusty_address,\\n address _admin_address,\\n uint256 _pool_ceiling,\\n address _library\\n ) \\n DEIPool(_dei_contract_address, _deus_contract_address, _collateral_address, _trusty_address, _admin_address, _pool_ceiling, _library)\\n public {\\n require(_collateral_address != address(0), \\\"Zero address detected\\\");\\n\\n _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());\\n USDC_address = _collateral_address;\\n }\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x540052279d6239350dbdfe8a738b8c718a846df6221cb59e20cf7a11ec448f3f\",\"license\":\"GPL-2.0-or-later\"},\"contracts/DEUS/IDEUS.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\n\\ninterface IDEUSToken {\\n function name() external view returns (string memory);\\n function symbol() external view returns (string memory);\\n function pool_burn_from(address b_address, uint256 b_amount) external;\\n function pool_mint(address m_address, uint256 m_amount) external;\\n function mint(address to, uint256 amount) external;\\n function setDEIAddress(address dei_contract_address) external;\\n function setNameAndSymbol(string memory _name, string memory _symbol) external;\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x7be865a95630d427608efd14514c9875ed1a6d65e4b421eaf61c2d63f43b9eb7\",\"license\":\"GPL-2.0-or-later\"},\"contracts/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\n\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20Mintable}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * We have followed general OpenZeppelin guidelines: functions revert instead\\n * of returning `false` on failure. This behavior is nonetheless conventional\\n * and does not conflict with the expectations of ERC20 applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\n \\ncontract ERC20 is Context, IERC20 {\\n using SafeMath for uint256;\\n\\n mapping (address => uint256) private _balances;\\n\\n mapping (address => mapping (address => uint256)) private _allowances;\\n\\n uint256 private _totalSupply;\\n\\n string private _name;\\n string private _symbol;\\n uint8 private _decimals;\\n \\n /**\\n * @dev Sets the values for {name} and {symbol}, initializes {decimals} with\\n * a default value of 18.\\n *\\n * To select a different value for {decimals}, use {_setupDecimals}.\\n *\\n * All three of these values are immutable: they can only be set once during\\n * construction.\\n */\\n constructor (string memory __name, string memory __symbol) public {\\n _name = __name;\\n _symbol = __symbol;\\n _decimals = 18;\\n }\\n\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() public view returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev Returns the symbol of the token, usually a shorter version of the\\n * name.\\n */\\n function symbol() public view returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev Returns the number of decimals used to get its user representation.\\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\\n *\\n * Tokens usually opt for a value of 18, imitating the relationship between\\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\\n * called.\\n *\\n * NOTE: This information is only used for _display_ purposes: it in\\n * no way affects any of the arithmetic of the contract, including\\n * {IERC20-balanceOf} and {IERC20-transfer}.\\n */\\n function decimals() public view returns (uint8) {\\n return _decimals;\\n }\\n\\n /**\\n * @dev See {IERC20-totalSupply}.\\n */\\n function totalSupply() public view override returns (uint256) {\\n return _totalSupply;\\n }\\n\\n /**\\n * @dev See {IERC20-balanceOf}.\\n */\\n function balanceOf(address account) public view override returns (uint256) {\\n return _balances[account];\\n }\\n\\n /**\\n * @dev See {IERC20-transfer}.\\n *\\n * Requirements:\\n *\\n * - `recipient` cannot be the zero address.\\n * - the caller must have a balance of at least `amount`.\\n */\\n function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\\n _transfer(_msgSender(), recipient, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-allowance}.\\n */\\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n return _allowances[owner][spender];\\n }\\n\\n /**\\n * @dev See {IERC20-approve}.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.approve(address spender, uint256 amount)\\n */\\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n _approve(_msgSender(), spender, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-transferFrom}.\\n *\\n * Emits an {Approval} event indicating the updated allowance. This is not\\n * required by the EIP. See the note at the beginning of {ERC20};\\n *\\n * Requirements:\\n * - `sender` and `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n * - the caller must have allowance for `sender`'s tokens of at least\\n * `amount`.\\n */\\n function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {\\n _transfer(sender, recipient, amount);\\n _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \\\"ERC20: transfer amount exceeds allowance\\\"));\\n return true;\\n }\\n\\n /**\\n * @dev Atomically increases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\\n return true;\\n }\\n\\n /**\\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `spender` must have allowance for the caller of at least\\n * `subtractedValue`.\\n */\\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \\\"ERC20: decreased allowance below zero\\\"));\\n return true;\\n }\\n\\n /**\\n * @dev Moves tokens `amount` from `sender` to `recipient`.\\n *\\n * This is internal function is equivalent to {transfer}, and can be used to\\n * e.g. implement automatic token fees, slashing mechanisms, etc.\\n *\\n * Emits a {Transfer} event.\\n *\\n * Requirements:\\n *\\n * - `sender` cannot be the zero address.\\n * - `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n */\\n function _transfer(address sender, address recipient, uint256 amount) internal virtual {\\n require(sender != address(0), \\\"ERC20: transfer from the zero address\\\");\\n require(recipient != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(sender, recipient, amount);\\n\\n _balances[sender] = _balances[sender].sub(amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n _balances[recipient] = _balances[recipient].add(amount);\\n emit Transfer(sender, recipient, amount);\\n }\\n\\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n * the total supply.\\n *\\n * Emits a {Transfer} event with `from` set to the zero address.\\n *\\n * Requirements\\n *\\n * - `to` cannot be the zero address.\\n */\\n function _mint(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n _beforeTokenTransfer(address(0), account, amount);\\n\\n _totalSupply = _totalSupply.add(amount);\\n _balances[account] = _balances[account].add(amount);\\n emit Transfer(address(0), account, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from the caller.\\n *\\n * See {ERC20-_burn}.\\n */\\n function burn(uint256 amount) public virtual {\\n _burn(_msgSender(), amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, deducting from the caller's\\n * allowance.\\n *\\n * See {ERC20-_burn} and {ERC20-allowance}.\\n *\\n * Requirements:\\n *\\n * - the caller must have allowance for `accounts`'s tokens of at least\\n * `amount`.\\n */\\n function burnFrom(address account, uint256 amount) public virtual {\\n uint256 decreasedAllowance = allowance(account, _msgSender()).sub(amount, \\\"ERC20: burn amount exceeds allowance\\\");\\n\\n _approve(account, _msgSender(), decreasedAllowance);\\n _burn(account, amount);\\n }\\n\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, reducing the\\n * total supply.\\n *\\n * Emits a {Transfer} event with `to` set to the zero address.\\n *\\n * Requirements\\n *\\n * - `account` cannot be the zero address.\\n * - `account` must have at least `amount` tokens.\\n */\\n function _burn(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n _beforeTokenTransfer(account, address(0), amount);\\n\\n _balances[account] = _balances[account].sub(amount, \\\"ERC20: burn amount exceeds balance\\\");\\n _totalSupply = _totalSupply.sub(amount);\\n emit Transfer(account, address(0), amount);\\n }\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\\n *\\n * This is internal function is equivalent to `approve`, and can be used to\\n * e.g. set automatic allowances for certain subsystems, etc.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `owner` cannot be the zero address.\\n * - `spender` cannot be the zero address.\\n */\\n function _approve(address owner, address spender, uint256 amount) internal virtual {\\n require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n _allowances[owner][spender] = amount;\\n emit Approval(owner, spender, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`.`amount` is then deducted\\n * from the caller's allowance.\\n *\\n * See {_burn} and {_approve}.\\n */\\n function _burnFrom(address account, uint256 amount) internal virtual {\\n _burn(account, amount);\\n _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, \\\"ERC20: burn amount exceeds allowance\\\"));\\n }\\n\\n /**\\n * @dev Hook that is called before any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of `from`'s tokens\\n * will be to transferred to `to`.\\n * - when `from` is zero, `amount` tokens will be minted for `to`.\\n * - when `to` is zero, `amount` of `from`'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:using-hooks.adoc[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }\\n}\\n\",\"keccak256\":\"0x433b9ee195d0bd257219bc337ff8aac624282a826726b18fdb299de0e3d4149e\",\"license\":\"MIT\"},\"contracts/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {ERC20Detailed}.\\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\\n\",\"keccak256\":\"0x057bec1fafd7ca222117f41fcfb9c8dc1f61aa30e5a0222c981196e9113de7e6\",\"license\":\"MIT\"},\"contracts/Governance/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Utils/EnumerableSet.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\nimport \\\"../Common/Context.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it.\\n */\\nabstract contract AccessControl is Context {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n using Address for address;\\n\\n struct RoleData {\\n EnumerableSet.AddressSet members;\\n bytes32 adminRole;\\n }\\n\\n mapping (bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; //bytes32(uint256(0x4B437D01b575618140442A4975db38850e3f8f5f) << 96);\\n\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view returns (bool) {\\n return _roles[role].members.contains(account);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view returns (uint256) {\\n return _roles[role].members.length();\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view returns (address) {\\n return _roles[role].members.at(index);\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to grant\\\");\\n\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to revoke\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) public virtual {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);\\n _roles[role].adminRole = adminRole;\\n }\\n\\n function _grantRole(bytes32 role, address account) private {\\n if (_roles[role].members.add(account)) {\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n function _revokeRole(bytes32 role, address account) private {\\n if (_roles[role].members.remove(account)) {\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x749b2c0e515a59c6d03cf4908a252ebc5d2b482ca3fd7ec997d1143c302f4e89\",\"license\":\"MIT\"},\"contracts/Math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\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\\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 * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\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 * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\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 * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (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) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts 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 * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts 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 * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\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}\",\"keccak256\":\"0x43a20f7cf4c4319f81450d53779455e88a7ab80bdfc43925156ed4083b74a180\",\"license\":\"MIT\"},\"contracts/Uniswap/TransferHelper.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\n// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false\\nlibrary TransferHelper {\\n function safeApprove(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('approve(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');\\n }\\n\\n function safeTransfer(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transfer(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');\\n }\\n\\n function safeTransferFrom(address token, address from, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');\\n }\\n\\n function safeTransferETH(address to, uint value) internal {\\n (bool success,) = to.call{value:value}(new bytes(0));\\n require(success, 'TransferHelper: ETH_TRANSFER_FAILED');\\n }\\n}\",\"keccak256\":\"0x2eb33792741584e83e0794a7493335b5dce9a9b675dda9e647ce29d88a40a196\",\"license\":\"MIT\"},\"contracts/Utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11 <0.9.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}\",\"keccak256\":\"0xe392046e85c78eea7d4c1237af52a5fc06c097b7a480ea4f20159670b4a582a4\",\"license\":\"MIT\"},\"contracts/Utils/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\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.0.0, only sets of type `address` (`AddressSet`) and `uint256`\\n * (`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 // 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(bytes20(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(bytes20(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(bytes20(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(bytes20(_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\",\"keccak256\":\"0x685f4133ba76f930e3761c1d1414d7f6e55dd40d58b4b210cb392662a6cbd27d\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 6023, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "_roles", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_bytes32,t_struct(RoleData)6018_storage)" + }, + { + "astId": 1559, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "collateral_token", + "offset": 0, + "slot": "1", + "type": "t_contract(ERC20)4919" + }, + { + "astId": 1561, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "collateral_address", + "offset": 0, + "slot": "2", + "type": "t_address" + }, + { + "astId": 1563, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "dei_contract_address", + "offset": 0, + "slot": "3", + "type": "t_address" + }, + { + "astId": 1565, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "deus_contract_address", + "offset": 0, + "slot": "4", + "type": "t_address" + }, + { + "astId": 1567, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "minting_fee", + "offset": 0, + "slot": "5", + "type": "t_uint256" + }, + { + "astId": 1569, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "redemption_fee", + "offset": 0, + "slot": "6", + "type": "t_uint256" + }, + { + "astId": 1571, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "buyback_fee", + "offset": 0, + "slot": "7", + "type": "t_uint256" + }, + { + "astId": 1573, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "recollat_fee", + "offset": 0, + "slot": "8", + "type": "t_uint256" + }, + { + "astId": 1577, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "redeemDEUSBalances", + "offset": 0, + "slot": "9", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 1581, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "redeemCollateralBalances", + "offset": 0, + "slot": "10", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 1583, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "unclaimedPoolCollateral", + "offset": 0, + "slot": "11", + "type": "t_uint256" + }, + { + "astId": 1585, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "unclaimedPoolDEUS", + "offset": 0, + "slot": "12", + "type": "t_uint256" + }, + { + "astId": 1589, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "lastRedeemed", + "offset": 0, + "slot": "13", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 1603, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "pool_ceiling", + "offset": 0, + "slot": "14", + "type": "t_uint256" + }, + { + "astId": 1606, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "pausedPrice", + "offset": 0, + "slot": "15", + "type": "t_uint256" + }, + { + "astId": 1609, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "bonus_rate", + "offset": 0, + "slot": "16", + "type": "t_uint256" + }, + { + "astId": 1612, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "redemption_delay", + "offset": 0, + "slot": "17", + "type": "t_uint256" + }, + { + "astId": 1615, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "daoShare", + "offset": 0, + "slot": "18", + "type": "t_uint256" + }, + { + "astId": 1618, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "poolLibrary", + "offset": 0, + "slot": "19", + "type": "t_contract(DEIPoolLibrary)3879" + }, + { + "astId": 1656, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "mintPaused", + "offset": 20, + "slot": "19", + "type": "t_bool" + }, + { + "astId": 1659, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "redeemPaused", + "offset": 21, + "slot": "19", + "type": "t_bool" + }, + { + "astId": 1662, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "recollateralizePaused", + "offset": 22, + "slot": "19", + "type": "t_bool" + }, + { + "astId": 1665, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "buyBackPaused", + "offset": 23, + "slot": "19", + "type": "t_bool" + }, + { + "astId": 3996, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "USDC_address", + "offset": 0, + "slot": "20", + "type": "t_address" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_bytes32)dyn_storage": { + "base": "t_bytes32", + "encoding": "dynamic_array", + "label": "bytes32[]", + "numberOfBytes": "32" + }, + "t_bool": { + "encoding": "inplace", + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "encoding": "inplace", + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(DEIPoolLibrary)3879": { + "encoding": "inplace", + "label": "contract DEIPoolLibrary", + "numberOfBytes": "20" + }, + "t_contract(ERC20)4919": { + "encoding": "inplace", + "label": "contract ERC20", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_uint256)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_mapping(t_bytes32,t_struct(RoleData)6018_storage)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => struct AccessControl.RoleData)", + "numberOfBytes": "32", + "value": "t_struct(RoleData)6018_storage" + }, + "t_mapping(t_bytes32,t_uint256)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_struct(AddressSet)11740_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.AddressSet", + "members": [ + { + "astId": 11739, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "_inner", + "offset": 0, + "slot": "0", + "type": "t_struct(Set)11554_storage" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleData)6018_storage": { + "encoding": "inplace", + "label": "struct AccessControl.RoleData", + "members": [ + { + "astId": 6015, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "members", + "offset": 0, + "slot": "0", + "type": "t_struct(AddressSet)11740_storage" + }, + { + "astId": 6017, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "adminRole", + "offset": 0, + "slot": "2", + "type": "t_bytes32" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Set)11554_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.Set", + "members": [ + { + "astId": 11549, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "_values", + "offset": 0, + "slot": "0", + "type": "t_array(t_bytes32)dyn_storage" + }, + { + "astId": 11553, + "contract": "contracts/DEI/Pools/Pool_USDC.sol:Pool_USDC", + "label": "_indexes", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ], + "numberOfBytes": "64" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/DEUS/DEUS.sol": { + "DEUSToken": { + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "_trusty_address", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "DEIAddressSet", + "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": "amount", + "type": "uint256" + } + ], + "name": "DEUSBurned", + "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": "amount", + "type": "uint256" + } + ], + "name": "DEUSMinted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "name": "NameAndSymbolSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MINTER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TRUSTY_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "dei_contract_address", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "genesis_supply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "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" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "b_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "b_amount", + "type": "uint256" + } + ], + "name": "pool_burn_from", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "m_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "m_amount", + "type": "uint256" + } + ], + "name": "pool_mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dei_contract_address", + "type": "address" + } + ], + "name": "setDEIAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + } + ], + "name": "setNameAndSymbol", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "DOMAIN_SEPARATOR()": { + "details": "See {IERC20Permit-DOMAIN_SEPARATOR}." + }, + "allowance(address,address)": { + "details": "See {IERC20-allowance}." + }, + "approve(address,uint256)": { + "details": "See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.approve(address spender, uint256 amount)" + }, + "balanceOf(address)": { + "details": "See {IERC20-balanceOf}." + }, + "burn(uint256)": { + "details": "Destroys `amount` tokens from the caller. See {ERC20-_burn}." + }, + "burnFrom(address,uint256)": { + "details": "Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for `accounts`'s tokens of at least `amount`." + }, + "decreaseAllowance(address,uint256)": { + "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`." + }, + "getRoleAdmin(bytes32)": { + "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." + }, + "getRoleMember(bytes32,uint256)": { + "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information." + }, + "getRoleMemberCount(bytes32)": { + "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role." + }, + "grantRole(bytes32,address)": { + "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role." + }, + "hasRole(bytes32,address)": { + "details": "Returns `true` if `account` has been granted `role`." + }, + "increaseAllowance(address,uint256)": { + "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address." + }, + "nonces(address)": { + "details": "See {IERC20Permit-nonces}." + }, + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": { + "details": "See {IERC20Permit-permit}." + }, + "renounceRole(bytes32,address)": { + "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`." + }, + "revokeRole(bytes32,address)": { + "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role." + }, + "totalSupply()": { + "details": "See {IERC20-totalSupply}." + }, + "transfer(address,uint256)": { + "details": "See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`." + }, + "transferFrom(address,address,uint256)": { + "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`." + } + }, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": { + "@_364": { + "entryPoint": null, + "id": 364, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_4162": { + "entryPoint": null, + "id": 4162, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_5867": { + "entryPoint": null, + "id": 5867, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_add_11596": { + "entryPoint": null, + "id": 11596, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_beforeTokenTransfer_5433": { + "entryPoint": null, + "id": 5433, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_buildDomainSeparator_413": { + "entryPoint": null, + "id": 413, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@_contains_11696": { + "entryPoint": null, + "id": 11696, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_6258": { + "entryPoint": 931, + "id": 6258, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_mint_5245": { + "entryPoint": 679, + "id": 5245, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_msgSender_444": { + "entryPoint": null, + "id": 444, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_setupRole_6209": { + "entryPoint": 663, + "id": 6209, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@add_11764": { + "entryPoint": 1144, + "id": 11764, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@add_6728": { + "entryPoint": 1036, + "id": 6728, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_string_fromMemory": { + "entryPoint": 1436, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_address_fromMemory": { + "entryPoint": 1619, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_6a0b9cabd6c91d2940786dc3fb7e7fd8395ac9f7a88417cfaa98e7d7f070402b__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 1821, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "extract_byte_array_length": { + "entryPoint": 1760, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "panic_error_0x41": { + "entryPoint": 1414, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:4183:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "46:95:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "63:1:39", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "70:3:39", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "75:10:39", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "66:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "66:20:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "56:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "56:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "56:31:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "103:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "106:4:39", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "96:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "96:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "96:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "127:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "130:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "120:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "120:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "120:15:39" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "14:127:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "210:821:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "259:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "268:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "271:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "261:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "261:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "261:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "238:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "246:4:39", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "234:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "234:17:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "253:3:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "230:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "230:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "223:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "223:35:39" + }, + "nodeType": "YulIf", + "src": "220:55:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "284:23:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "300:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "294:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "294:13:39" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "288:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "316:28:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "334:2:39", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "338:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "330:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "330:10:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "342:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "326:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "326:18:39" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "320:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "367:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "369:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "369:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "369:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "359:2:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "363:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "356:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "356:10:39" + }, + "nodeType": "YulIf", + "src": "353:36:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "398:17:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "412:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "408:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "408:7:39" + }, + "variables": [ + { + "name": "_3", + "nodeType": "YulTypedName", + "src": "402:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "424:23:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "444:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "438:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "438:9:39" + }, + "variables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "428:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "456:71:39", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "478:6:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "502:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "506:4:39", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "498:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "498:13:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "513:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "494:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "494:22:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "518:2:39", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "490:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "490:31:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "523:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "486:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "486:40:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "474:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "474:53:39" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "460:10:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "586:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "588:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "588:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "588:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "545:10:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "557:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "542:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "542:18:39" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "565:10:39" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "577:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "562:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "562:22:39" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "539:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "539:46:39" + }, + "nodeType": "YulIf", + "src": "536:72:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "624:2:39", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "628:10:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "617:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "617:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "617:22:39" + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "655:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "663:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "648:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "648:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "648:18:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "675:14:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "685:4:39", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_4", + "nodeType": "YulTypedName", + "src": "679:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "735:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "744:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "747:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "737:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "737:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "737:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "712:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "720:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "708:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "708:15:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "725:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "704:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "704:24:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "730:3:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "701:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "701:33:39" + }, + "nodeType": "YulIf", + "src": "698:53:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "760:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "769:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "764:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "825:87:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "854:6:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "862:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "850:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "850:14:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "866:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "846:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "846:23:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "885:6:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "893:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "881:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "881:14:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "897:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "877:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "877:23:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "871:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "871:30:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "839:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "839:63:39" + }, + "nodeType": "YulExpressionStatement", + "src": "839:63:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "790:1:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "793:2:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "787:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "787:9:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "797:19:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "799:15:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "808:1:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "811:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "804:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "804:10:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "799:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "783:3:39", + "statements": [] + }, + "src": "779:133:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "942:59:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "971:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "979:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "967:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "967:15:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "984:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "963:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "963:24:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "989:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "956:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "956:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "956:35:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "927:1:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "930:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "924:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "924:9:39" + }, + "nodeType": "YulIf", + "src": "921:80:39" + }, + { + "nodeType": "YulAssignment", + "src": "1010:15:39", + "value": { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1019:6:39" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "1010:5:39" + } + ] + } + ] + }, + "name": "abi_decode_string_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "184:6:39", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "192:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "200:5:39", + "type": "" + } + ], + "src": "146:885:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1171:594:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1217:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1226:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1229:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1219:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1219:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1219:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1192:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1201:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1188:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1188:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1213:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1184:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1184:32:39" + }, + "nodeType": "YulIf", + "src": "1181:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1242:30:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1262:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1256:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "1256:16:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1246:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1281:28:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1299:2:39", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1303:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1295:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1295:10:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1307:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1291:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1291:18:39" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "1285:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1336:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1345:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1348:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1338:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1338:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1338:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1324:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "1332:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1321:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1321:14:39" + }, + "nodeType": "YulIf", + "src": "1318:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "1361:71:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1404:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1415:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1400:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1400:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1424:7:39" + } + ], + "functionName": { + "name": "abi_decode_string_fromMemory", + "nodeType": "YulIdentifier", + "src": "1371:28:39" + }, + "nodeType": "YulFunctionCall", + "src": "1371:61:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1361:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1441:41:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1467:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1478:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1463:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1463:18:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1457:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "1457:25:39" + }, + "variables": [ + { + "name": "offset_1", + "nodeType": "YulTypedName", + "src": "1445:8:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1511:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1520:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1523:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1513:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1513:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1513:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "1497:8:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "1507:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1494:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1494:16:39" + }, + "nodeType": "YulIf", + "src": "1491:36:39" + }, + { + "nodeType": "YulAssignment", + "src": "1536:73:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1579:9:39" + }, + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "1590:8:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1575:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1575:24:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1601:7:39" + } + ], + "functionName": { + "name": "abi_decode_string_fromMemory", + "nodeType": "YulIdentifier", + "src": "1546:28:39" + }, + "nodeType": "YulFunctionCall", + "src": "1546:63:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1536:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1618:38:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1641:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1652:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1637:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1637:18:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1631:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "1631:25:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1622:5:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1719:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1728:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1731:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1721:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1721:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1721:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1678:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1689:5:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1704:3:39", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1709:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1700:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1700:11:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1713:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1696:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1696:19:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1685:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1685:31:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1675:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1675:42:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1668:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1668:50:39" + }, + "nodeType": "YulIf", + "src": "1665:70:39" + }, + { + "nodeType": "YulAssignment", + "src": "1744:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1754:5:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "1744:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1121:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1132:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1144:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1152:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "1160:6:39", + "type": "" + } + ], + "src": "1036:729:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1825:325:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1835:22:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1849:1:39", + "type": "", + "value": "1" + }, + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "1852:4:39" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "1845:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1845:12:39" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1835:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1866:38:39", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "1896:4:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1902:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1892:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1892:12:39" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "1870:18:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1943:31:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1945:27:39", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1959:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1967:4:39", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1955:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1955:17:39" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1945:6:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "1923:18:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1916:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1916:26:39" + }, + "nodeType": "YulIf", + "src": "1913:61:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2033:111:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2054:1:39", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2061:3:39", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2066:10:39", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "2057:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2057:20:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2047:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2047:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2047:31:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2098:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2101:4:39", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2091:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2091:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2091:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2126:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2129:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2119:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2119:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2119:15:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "1989:18:39" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2012:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2020:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2009:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2009:14:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1986:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1986:38:39" + }, + "nodeType": "YulIf", + "src": "1983:161:39" + } + ] + }, + "name": "extract_byte_array_length", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "1805:4:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1814:6:39", + "type": "" + } + ], + "src": "1770:380:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2329:230:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2346:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2357:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2339:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2339:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2339:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2380:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2391:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2376:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2376:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2396:2:39", + "type": "", + "value": "40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2369:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2369:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2369:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2419:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2430:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2415:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2415:18:39" + }, + { + "hexValue": "444555533a3a636f6e7374727563746f723a207a65726f206164647265737320", + "kind": "string", + "nodeType": "YulLiteral", + "src": "2435:34:39", + "type": "", + "value": "DEUS::constructor: zero address " + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2408:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2408:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2408:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2490:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2501:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2486:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2486:18:39" + }, + { + "hexValue": "6465746563746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "2506:10:39", + "type": "", + "value": "detected" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2479:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2479:38:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2479:38:39" + }, + { + "nodeType": "YulAssignment", + "src": "2526:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2538:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2549:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2534:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2534:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2526:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_6a0b9cabd6c91d2940786dc3fb7e7fd8395ac9f7a88417cfaa98e7d7f070402b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2306:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2320:4:39", + "type": "" + } + ], + "src": "2155:404:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2777:276:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2787:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2799:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2810:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2795:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2795:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2787:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2830:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2841:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2823:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2823:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2823:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2868:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2879:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2864:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2864:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2884:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2857:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2857:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2857:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2911:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2922:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2907:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2907:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "2927:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2900:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2900:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2900:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2954:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2965:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2950:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2950:18:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "2970:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2943:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2943:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2943:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2997:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3008:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2993:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2993:19:39" + }, + { + "arguments": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "3018:6:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3034:3:39", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3039:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3030:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3030:11:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3043:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3026:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3026:19:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "3014:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3014:32:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2986:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2986:61:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2986:61:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2714:9:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "2725:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "2733:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "2741:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2749:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2757:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2768:4:39", + "type": "" + } + ], + "src": "2564:489:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3232:181:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3249:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3260:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3242:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3242:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3242:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3283:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3294:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3279:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3279:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3299:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3272:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3272:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3272:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3322:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3333:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3318:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3318:18:39" + }, + { + "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "3338:33:39", + "type": "", + "value": "ERC20: mint to the zero address" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3311:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3311:61:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3311:61:39" + }, + { + "nodeType": "YulAssignment", + "src": "3381:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3393:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3404:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3389:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3389:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3381:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3209:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3223:4:39", + "type": "" + } + ], + "src": "3058:355:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3519:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3529:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3541:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3552:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3537:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3537:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3529:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3571:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3582:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3564:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3564:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3564:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3488:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3499:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3510:4:39", + "type": "" + } + ], + "src": "3418:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3648:177:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3683:111:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3704:1:39", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3711:3:39", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3716:10:39", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3707:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3707:20:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3697:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3697:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3697:31:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3748:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3751:4:39", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3741:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3741:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3741:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3776:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3779:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3769:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3769:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3769:15:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3664:1:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "3671:1:39" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "3667:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3667:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3661:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3661:13:39" + }, + "nodeType": "YulIf", + "src": "3658:136:39" + }, + { + "nodeType": "YulAssignment", + "src": "3803:16:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3814:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "3817:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3810:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3810:9:39" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "3803:3:39" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "3631:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "3634:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "3640:3:39", + "type": "" + } + ], + "src": "3600:225:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4004:177:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4021:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4032:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4014:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4014:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4014:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4055:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4066:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4051:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4051:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4071:2:39", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4044:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4044:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4044:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4094:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4105:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4090:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4090:18:39" + }, + { + "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4110:29:39", + "type": "", + "value": "SafeMath: addition overflow" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4083:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4083:57:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4083:57:39" + }, + { + "nodeType": "YulAssignment", + "src": "4149:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4161:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4172:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4157:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4157:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4149:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3981:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3995:4:39", + "type": "" + } + ], + "src": "3830:351:39" + } + ] + }, + "contents": "{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_string_fromMemory(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := mload(offset)\n let _2 := sub(shl(64, 1), 1)\n if gt(_1, _2) { panic_error_0x41() }\n let _3 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _1)\n let _4 := 0x20\n if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n let i := 0\n for { } lt(i, _1) { i := add(i, _4) }\n {\n mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n }\n if gt(i, _1)\n {\n mstore(add(add(memPtr, _1), _4), 0)\n }\n array := memPtr\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_address_fromMemory(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let offset := mload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n let value := mload(add(headStart, 64))\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value2 := value\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_6a0b9cabd6c91d2940786dc3fb7e7fd8395ac9f7a88417cfaa98e7d7f070402b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 40)\n mstore(add(headStart, 64), \"DEUS::constructor: zero address \")\n mstore(add(headStart, 96), \"detected\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 160)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 31)\n mstore(add(headStart, 64), \"ERC20: mint to the zero address\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n sum := add(x, y)\n }\n function abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"SafeMath: addition overflow\")\n tail := add(headStart, 96)\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "6101406040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610120523480156200003757600080fd5b506040516200300f3803806200300f8339810160408190526200005a9162000653565b600680546200006990620006e0565b80601f01602080910402602001604051908101604052809291908181526020018280546200009790620006e0565b8015620000e85780601f10620000bc57610100808354040283529160200191620000e8565b820191906000526020600020905b815481529060010190602001808311620000ca57829003601f168201915b505060408051808201825260018152603160f81b60209182015285519581019590952060c08181527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660e08190524660a081815285517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818c018190528188019690965260608101939093526080808401929092523083820152855180840390910181529190920190935282519290960191909120909452505050610100526001600160a01b038116620002145760405162461bcd60e51b815260206004820152602860248201527f444555533a3a636f6e7374727563746f723a207a65726f20616464726573732060448201526719195d1958dd195960c21b60648201526084015b60405180910390fd5b825162000229906006906020860190620004e0565b5081516200023f906005906020850190620004e0565b506200024d60008262000297565b620002797f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c8262000297565b6200028e8168056bc75e2d63100000620002a7565b50505062000744565b620002a38282620003a3565b5050565b6001600160a01b038216620002ff5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200020b565b6200031b816002546200040c60201b620012351790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200034e918390620012356200040c821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6000828152600460209081526040909120620003ca918390620012ae62000478821b17901c565b15620002a35760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6000806200041b83856200071d565b9050838110156200046f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016200020b565b90505b92915050565b60006200046f836001600160601b0319606085901b166000818152600183016020526040812054620004d75750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000472565b50600062000472565b828054620004ee90620006e0565b90600052602060002090601f0160209004810192826200051257600085556200055d565b82601f106200052d57805160ff19168380011785556200055d565b828001600101855582156200055d579182015b828111156200055d57825182559160200191906001019062000540565b506200056b9291506200056f565b5090565b5b808211156200056b576000815560010162000570565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620005ae57600080fd5b81516001600160401b0380821115620005cb57620005cb62000586565b604051601f8301601f19908116603f01168101908282118183101715620005f657620005f662000586565b816040528381526020925086838588010111156200061357600080fd5b600091505b8382101562000637578582018301518183018401529082019062000618565b83821115620006495760008385830101525b9695505050505050565b6000806000606084860312156200066957600080fd5b83516001600160401b03808211156200068157600080fd5b6200068f878388016200059c565b94506020860151915080821115620006a657600080fd5b50620006b5868287016200059c565b604086015190935090506001600160a01b0381168114620006d557600080fd5b809150509250925092565b600181811c90821680620006f557607f821691505b602082108114156200071757634e487b7160e01b600052602260045260246000fd5b50919050565b600082198211156200073f57634e487b7160e01b600052601160045260246000fd5b500190565b60805160a05160c05160e051610100516101205161287b620007946000396000610e90015260006117ce0152600061181d015260006117f80152600061177c015260006117a5015261287b6000f3fe608060405234801561001057600080fd5b506004361061020b5760003560e01c806379cc67901161012a578063a8a778ae116100bd578063d505accf1161008c578063d547741f11610071578063d547741f146104d6578063dd62ed3e146104e9578063efa007361461052f57600080fd5b8063d505accf1461049c578063d5391393146104af57600080fd5b8063a8a778ae14610450578063a9059cbb14610463578063b4f56b2614610476578063ca15c8731461048957600080fd5b806391d14854116100f957806391d148541461041a57806395d89b411461042d578063a217fddf14610435578063a457c2d71461043d57600080fd5b806379cc67901461039c5780637ecebe00146103af57806383e2d870146103c25780639010d07c1461040757600080fd5b80633644e515116101a257806342966c681161017157806342966c681461033057806351e238e3146103435780635a4462151461035357806370a082311461036657600080fd5b80633644e515146102ef57806336568abe146102f7578063395093511461030a57806340c10f191461031d57600080fd5b8063248a9ca3116101de578063248a9ca3146102765780632f2ff15d14610299578063313ce567146102ae57806334ddb95d146102c857600080fd5b806306fdde0314610210578063095ea7b31461022e57806318160ddd1461025157806323b872dd14610263575b600080fd5b610218610542565b6040516102259190612205565b60405180910390f35b61024161023c3660046122a1565b6105d0565b6040519015158152602001610225565b6002545b604051908152602001610225565b6102416102713660046122cb565b6105e7565b610255610284366004612307565b60009081526004602052604090206002015490565b6102ac6102a7366004612320565b61067b565b005b6102b6601281565b60405160ff9091168152602001610225565b6102557f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610255610736565b6102ac610305366004612320565b610745565b6102416103183660046122a1565b6107f4565b6102ac61032b3660046122a1565b610837565b6102ac61033e366004612307565b6108f7565b61025568056bc75e2d6310000081565b6102ac610361366004612426565b610904565b61025561037436600461248a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6102ac6103aa3660046122a1565b6109fb565b6102556103bd36600461248a565b610a47565b6007546103e29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610225565b6103e26104153660046124a5565b610a72565b610241610428366004612320565b610a91565b610218610aa9565b610255600081565b61024161044b3660046122a1565b610ab6565b6102ac61045e3660046122a1565b610b12565b6102416104713660046122a1565b610c8c565b6102ac6104843660046122a1565b610c99565b610255610497366004612307565b610e0b565b6102ac6104aa3660046124c7565b610e22565b6102557f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102ac6104e4366004612320565b610fe1565b6102556104f736600461253a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6102ac61053d36600461248a565b611089565b6006805461054f90612564565b80601f016020809104026020016040519081016040528092919081815260200182805461057b90612564565b80156105c85780601f1061059d576101008083540402835291602001916105c8565b820191906000526020600020905b8154815290600101906020018083116105ab57829003601f168201915b505050505081565b60006105dd3384846112e0565b5060015b92915050565b60006105f4848484611494565b610671843361066c856040518060600160405280602881526020016127d56028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020526040812090335b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205491906116be565b6112e0565b5060019392505050565b6000828152600460205260409020600201546106979033610a91565b610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084015b60405180910390fd5b6107328282611712565b5050565b6000610740611778565b905090565b73ffffffffffffffffffffffffffffffffffffffff811633146107ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c660000000000000000000000000000000000606482015260840161071f565b610732828261186b565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105dd91859061066c9086611235565b6108617f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610a91565b6108ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f444555533a204f6e6c79206d696e746572732061726520616c6c6f776564207460448201527f6f20646f2074686973206f7065726174696f6e00000000000000000000000000606482015260840161071f565b61073282826118d1565b61090133826119e9565b50565b61092e7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610a91565b610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f444555533a20596f7520617265206e6f74207472757374790000000000000000604482015260640161071f565b81516109a790600690602085019061216c565b5080516109bb90600590602084019061216c565b507f24a9aef9121ba62598f20f8f80fd406fa1d2d956747e0728068c649f324ddf41600660056040516109ef929190612689565b60405180910390a15050565b6000610a2b826040518060600160405280602481526020016127fd60249139610a2486336104f7565b91906116be565b9050610a388333836112e0565b610a4283836119e9565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600360205260408120546105e1565b6000828152600460205260408120610a8a9083611b57565b9392505050565b6000828152600460205260408120610a8a9083611b6d565b6005805461054f90612564565b60006105dd338461066c856040518060600160405280602581526020016128216025913933600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d16845290915290205491906116be565b6007546040517f15ea919c00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff909116906315ea919c90602401602060405180830381865afa158015610b80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba491906126ae565b610c30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f444555533a204f6e6c792064656920706f6f6c732061726520616c6c6f77656460448201527f20746f20646f2074686973206f7065726174696f6e0000000000000000000000606482015260840161071f565b610c3a8282611bac565b604051818152309073ffffffffffffffffffffffffffffffffffffffff8416907ffea1faea8b86058686e38c71a510e9ba19bc719a67a74e590aa5f68dfdfc21be906020015b60405180910390a35050565b60006105dd338484611494565b6007546040517f15ea919c00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff909116906315ea919c90602401602060405180830381865afa158015610d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2b91906126ae565b610db7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f444555533a204f6e6c792064656920706f6f6c732061726520616c6c6f77656460448201527f20746f20646f2074686973206f7065726174696f6e0000000000000000000000606482015260840161071f565b610dc182826118d1565b60405181815273ffffffffffffffffffffffffffffffffffffffff83169030907fdcdaf2f9efb1a9727c667bcd34ba547e3ce5ec7f3af304aa8829a5e590211d7e90602001610c80565b60008181526004602052604081206105e190611c04565b83421115610e8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161071f565b60007f0000000000000000000000000000000000000000000000000000000000000000888888610ebb8c611c0e565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610f2382611c43565b90506000610f3382878787611cac565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610fca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161071f565b610fd58a8a8a6112e0565b50505050505050505050565b600082815260046020526040902060020154610ffd9033610a91565b6107ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b6500000000000000000000000000000000606482015260840161071f565b6110b37f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610a91565b611119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f444555533a20596f7520617265206e6f74207472757374790000000000000000604482015260640161071f565b73ffffffffffffffffffffffffffffffffffffffff81166111bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f444555533a3a736574444549416464726573733a205a65726f2061646472657360448201527f7320646574656374656400000000000000000000000000000000000000000000606482015260840161071f565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f0692ea78a01b96b5abe8a744eae1de9f7f001f685fd013f0c552220d563d4ba79060200160405180910390a150565b60008061124283856126ff565b905083811015610a8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161071f565b6000610a8a837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16611efb565b73ffffffffffffffffffffffffffffffffffffffff8316611382576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161071f565b73ffffffffffffffffffffffffffffffffffffffff8216611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161071f565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161071f565b73ffffffffffffffffffffffffffffffffffffffff82166115da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161071f565b611624816040518060600160405280602681526020016127af6026913973ffffffffffffffffffffffffffffffffffffffff861660009081526020819052604090205491906116be565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546116609082611235565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611487565b600081848411156116fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f9190612205565b5060006117098486612717565b95945050505050565b600082815260046020526040902061172a90826112ae565b1561073257604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b60007f00000000000000000000000000000000000000000000000000000000000000004614156117c757507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008281526004602052604090206118839082611f4a565b1561073257604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b73ffffffffffffffffffffffffffffffffffffffff821661194e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161071f565b60025461195b9082611235565b60025573ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461198e9082611235565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610c80565b73ffffffffffffffffffffffffffffffffffffffff8216611a8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161071f565b611ad68160405180606001604052806022815260200161278d6022913973ffffffffffffffffffffffffffffffffffffffff851660009081526020819052604090205491906116be565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055600254611b099082611f7c565b60025560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610c80565b6000611b638383611fbe565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660009081526001830160205260408120541515610a8a565b611bb682826119e9565b610732823361066c846040518060600160405280602481526020016127fd6024913973ffffffffffffffffffffffffffffffffffffffff88166000908152600160205260408120903361063e565b60006105e1825490565b73ffffffffffffffffffffffffffffffffffffffff811660009081526003602052604090208054600181018255905b50919050565b60006105e1611c50611778565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115611d5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161071f565b8360ff16601b1480611d7357508360ff16601c145b611dff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161071f565b6040805160008082526020820180845288905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa158015611e53573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161071f565b6000818152600183016020526040812054611f42575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105e1565b5060006105e1565b6000610a8a837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16612079565b6000610a8a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116be565b81546000908210612051576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f6473000000000000000000000000000000000000000000000000000000000000606482015260840161071f565b8260000182815481106120665761206661272e565b9060005260206000200154905092915050565b6000818152600183016020526040812054801561216257600061209d600183612717565b85549091506000906120b190600190612717565b905060008660000182815481106120ca576120ca61272e565b90600052602060002001549050808760000184815481106120ed576120ed61272e565b6000918252602090912001556121048360016126ff565b600082815260018901602052604090205586548790806121265761212661275d565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506105e1565b60009150506105e1565b82805461217890612564565b90600052602060002090601f01602090048101928261219a57600085556121e0565b82601f106121b357805160ff19168380011785556121e0565b828001600101855582156121e0579182015b828111156121e05782518255916020019190600101906121c5565b506121ec9291506121f0565b5090565b5b808211156121ec57600081556001016121f1565b600060208083528351808285015260005b8181101561223257858101830151858201604001528201612216565b81811115612244576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461229c57600080fd5b919050565b600080604083850312156122b457600080fd5b6122bd83612278565b946020939093013593505050565b6000806000606084860312156122e057600080fd5b6122e984612278565b92506122f760208501612278565b9150604084013590509250925092565b60006020828403121561231957600080fd5b5035919050565b6000806040838503121561233357600080fd5b8235915061234360208401612278565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261238c57600080fd5b813567ffffffffffffffff808211156123a7576123a761234c565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156123ed576123ed61234c565b8160405283815286602085880101111561240657600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561243957600080fd5b823567ffffffffffffffff8082111561245157600080fd5b61245d8683870161237b565b9350602085013591508082111561247357600080fd5b506124808582860161237b565b9150509250929050565b60006020828403121561249c57600080fd5b610a8a82612278565b600080604083850312156124b857600080fd5b50508035926020909101359150565b600080600080600080600060e0888a0312156124e257600080fd5b6124eb88612278565b96506124f960208901612278565b95506040880135945060608801359350608088013560ff8116811461251d57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561254d57600080fd5b61255683612278565b915061234360208401612278565b600181811c9082168061257857607f821691505b60208210811415611c3d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b8054600090600181811c90808316806125cc57607f831692505b6020808410821415612607577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b8388526020880182801561262257600181146126515761267c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0087168252828201975061267c565b60008981526020902060005b878110156126765781548482015290860190840161265d565b83019850505b5050505050505092915050565b60408152600061269c60408301856125b2565b828103602084015261170981856125b2565b6000602082840312156126c057600080fd5b81518015158114610a8a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115612712576127126126d0565b500190565b600082821015612729576127296126d0565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201bee284b4d8e4bb789461cb33680ff61e63852e0240a14da24cf01309182f12a64736f6c634300080a0033", + "opcodes": "PUSH2 0x140 PUSH1 0x40 MSTORE PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 PUSH2 0x120 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x300F CODESIZE SUB DUP1 PUSH3 0x300F DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x5A SWAP2 PUSH3 0x653 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH3 0x69 SWAP1 PUSH3 0x6E0 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH3 0x97 SWAP1 PUSH3 0x6E0 JUMP JUMPDEST DUP1 ISZERO PUSH3 0xE8 JUMPI DUP1 PUSH1 0x1F LT PUSH3 0xBC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH3 0xE8 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 PUSH3 0xCA JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP6 MLOAD SWAP6 DUP2 ADD SWAP6 SWAP1 SWAP6 KECCAK256 PUSH1 0xC0 DUP2 DUP2 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0xE0 DUP2 SWAP1 MSTORE CHAINID PUSH1 0xA0 DUP2 DUP2 MSTORE DUP6 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP13 ADD DUP2 SWAP1 MSTORE DUP2 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x60 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x80 DUP1 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE ADDRESS DUP4 DUP3 ADD MSTORE DUP6 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP2 SWAP1 SWAP3 ADD SWAP1 SWAP4 MSTORE DUP3 MLOAD SWAP3 SWAP1 SWAP7 ADD SWAP2 SWAP1 SWAP2 KECCAK256 SWAP1 SWAP5 MSTORE POP POP POP PUSH2 0x100 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x214 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x444555533A3A636F6E7374727563746F723A207A65726F206164647265737320 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x19195D1958DD1959 PUSH1 0xC2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x229 SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP7 ADD SWAP1 PUSH3 0x4E0 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x23F SWAP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x4E0 JUMP JUMPDEST POP PUSH3 0x24D PUSH1 0x0 DUP3 PUSH3 0x297 JUMP JUMPDEST PUSH3 0x279 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP3 PUSH3 0x297 JUMP JUMPDEST PUSH3 0x28E DUP2 PUSH9 0x56BC75E2D63100000 PUSH3 0x2A7 JUMP JUMPDEST POP POP POP PUSH3 0x744 JUMP JUMPDEST PUSH3 0x2A3 DUP3 DUP3 PUSH3 0x3A3 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x2FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x20B JUMP JUMPDEST PUSH3 0x31B DUP2 PUSH1 0x2 SLOAD PUSH3 0x40C PUSH1 0x20 SHL PUSH3 0x1235 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH3 0x34E SWAP2 DUP4 SWAP1 PUSH3 0x1235 PUSH3 0x40C DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE SWAP3 MLOAD DUP5 DUP2 MSTORE SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH3 0x3CA SWAP2 DUP4 SWAP1 PUSH3 0x12AE PUSH3 0x478 DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST ISZERO PUSH3 0x2A3 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x41B DUP4 DUP6 PUSH3 0x71D JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH3 0x46F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x20B JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x46F DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH3 0x4D7 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 PUSH3 0x472 JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0x472 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x4EE SWAP1 PUSH3 0x6E0 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x512 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x55D JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x52D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x55D JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x55D JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x55D JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x540 JUMP JUMPDEST POP PUSH3 0x56B SWAP3 SWAP2 POP PUSH3 0x56F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x56B JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x570 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x5AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x5CB JUMPI PUSH3 0x5CB PUSH3 0x586 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x5F6 JUMPI PUSH3 0x5F6 PUSH3 0x586 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0x613 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x637 JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0x618 JUMP JUMPDEST DUP4 DUP3 GT ISZERO PUSH3 0x649 JUMPI PUSH1 0x0 DUP4 DUP6 DUP4 ADD ADD MSTORE JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x669 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x681 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x68F DUP8 DUP4 DUP9 ADD PUSH3 0x59C JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x6A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x6B5 DUP7 DUP3 DUP8 ADD PUSH3 0x59C JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD SWAP1 SWAP4 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x6D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x6F5 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0x717 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0x73F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x287B PUSH3 0x794 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH2 0xE90 ADD MSTORE PUSH1 0x0 PUSH2 0x17CE ADD MSTORE PUSH1 0x0 PUSH2 0x181D ADD MSTORE PUSH1 0x0 PUSH2 0x17F8 ADD MSTORE PUSH1 0x0 PUSH2 0x177C ADD MSTORE PUSH1 0x0 PUSH2 0x17A5 ADD MSTORE PUSH2 0x287B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x20B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x79CC6790 GT PUSH2 0x12A JUMPI DUP1 PUSH4 0xA8A778AE GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD547741F GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x4D6 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x4E9 JUMPI DUP1 PUSH4 0xEFA00736 EQ PUSH2 0x52F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x49C JUMPI DUP1 PUSH4 0xD5391393 EQ PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA8A778AE EQ PUSH2 0x450 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0xB4F56B26 EQ PUSH2 0x476 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x41A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x42D JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x435 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x39C JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x3AF JUMPI DUP1 PUSH4 0x83E2D870 EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x407 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x42966C68 GT PUSH2 0x171 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x330 JUMPI DUP1 PUSH4 0x51E238E3 EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0x5A446215 EQ PUSH2 0x353 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x2EF JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x30A JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x248A9CA3 GT PUSH2 0x1DE JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x276 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2AE JUMPI DUP1 PUSH4 0x34DDB95D EQ PUSH2 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x210 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x22E JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x263 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x218 PUSH2 0x542 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x225 SWAP2 SWAP1 PUSH2 0x2205 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x241 PUSH2 0x23C CALLDATASIZE PUSH1 0x4 PUSH2 0x22A1 JUMP JUMPDEST PUSH2 0x5D0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x225 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x225 JUMP JUMPDEST PUSH2 0x241 PUSH2 0x271 CALLDATASIZE PUSH1 0x4 PUSH2 0x22CB JUMP JUMPDEST PUSH2 0x5E7 JUMP JUMPDEST PUSH2 0x255 PUSH2 0x284 CALLDATASIZE PUSH1 0x4 PUSH2 0x2307 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x2A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2320 JUMP JUMPDEST PUSH2 0x67B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2B6 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x225 JUMP JUMPDEST PUSH2 0x255 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP2 JUMP JUMPDEST PUSH2 0x255 PUSH2 0x736 JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x305 CALLDATASIZE PUSH1 0x4 PUSH2 0x2320 JUMP JUMPDEST PUSH2 0x745 JUMP JUMPDEST PUSH2 0x241 PUSH2 0x318 CALLDATASIZE PUSH1 0x4 PUSH2 0x22A1 JUMP JUMPDEST PUSH2 0x7F4 JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x32B CALLDATASIZE PUSH1 0x4 PUSH2 0x22A1 JUMP JUMPDEST PUSH2 0x837 JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x33E CALLDATASIZE PUSH1 0x4 PUSH2 0x2307 JUMP JUMPDEST PUSH2 0x8F7 JUMP JUMPDEST PUSH2 0x255 PUSH9 0x56BC75E2D63100000 DUP2 JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x361 CALLDATASIZE PUSH1 0x4 PUSH2 0x2426 JUMP JUMPDEST PUSH2 0x904 JUMP JUMPDEST PUSH2 0x255 PUSH2 0x374 CALLDATASIZE PUSH1 0x4 PUSH2 0x248A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x3AA CALLDATASIZE PUSH1 0x4 PUSH2 0x22A1 JUMP JUMPDEST PUSH2 0x9FB JUMP JUMPDEST PUSH2 0x255 PUSH2 0x3BD CALLDATASIZE PUSH1 0x4 PUSH2 0x248A JUMP JUMPDEST PUSH2 0xA47 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH2 0x3E2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x225 JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x415 CALLDATASIZE PUSH1 0x4 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0xA72 JUMP JUMPDEST PUSH2 0x241 PUSH2 0x428 CALLDATASIZE PUSH1 0x4 PUSH2 0x2320 JUMP JUMPDEST PUSH2 0xA91 JUMP JUMPDEST PUSH2 0x218 PUSH2 0xAA9 JUMP JUMPDEST PUSH2 0x255 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x241 PUSH2 0x44B CALLDATASIZE PUSH1 0x4 PUSH2 0x22A1 JUMP JUMPDEST PUSH2 0xAB6 JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x45E CALLDATASIZE PUSH1 0x4 PUSH2 0x22A1 JUMP JUMPDEST PUSH2 0xB12 JUMP JUMPDEST PUSH2 0x241 PUSH2 0x471 CALLDATASIZE PUSH1 0x4 PUSH2 0x22A1 JUMP JUMPDEST PUSH2 0xC8C JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x484 CALLDATASIZE PUSH1 0x4 PUSH2 0x22A1 JUMP JUMPDEST PUSH2 0xC99 JUMP JUMPDEST PUSH2 0x255 PUSH2 0x497 CALLDATASIZE PUSH1 0x4 PUSH2 0x2307 JUMP JUMPDEST PUSH2 0xE0B JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x4AA CALLDATASIZE PUSH1 0x4 PUSH2 0x24C7 JUMP JUMPDEST PUSH2 0xE22 JUMP JUMPDEST PUSH2 0x255 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 DUP2 JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x4E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2320 JUMP JUMPDEST PUSH2 0xFE1 JUMP JUMPDEST PUSH2 0x255 PUSH2 0x4F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x253A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x53D CALLDATASIZE PUSH1 0x4 PUSH2 0x248A JUMP JUMPDEST PUSH2 0x1089 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH2 0x54F SWAP1 PUSH2 0x2564 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x57B SWAP1 PUSH2 0x2564 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x5C8 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x59D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5C8 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 0x5AB JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DD CALLER DUP5 DUP5 PUSH2 0x12E0 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F4 DUP5 DUP5 DUP5 PUSH2 0x1494 JUMP JUMPDEST PUSH2 0x671 DUP5 CALLER PUSH2 0x66C DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x27D5 PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 CALLER JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x16BE JUMP JUMPDEST PUSH2 0x12E0 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x697 SWAP1 CALLER PUSH2 0xA91 JUMP JUMPDEST PUSH2 0x728 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F206772616E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x732 DUP3 DUP3 PUSH2 0x1712 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x740 PUSH2 0x1778 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ PUSH2 0x7EA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH2 0x732 DUP3 DUP3 PUSH2 0x186B JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x5DD SWAP2 DUP6 SWAP1 PUSH2 0x66C SWAP1 DUP7 PUSH2 0x1235 JUMP JUMPDEST PUSH2 0x861 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 CALLER PUSH2 0xA91 JUMP JUMPDEST PUSH2 0x8ED JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x444555533A204F6E6C79206D696E746572732061726520616C6C6F7765642074 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F20646F2074686973206F7065726174696F6E00000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH2 0x732 DUP3 DUP3 PUSH2 0x18D1 JUMP JUMPDEST PUSH2 0x901 CALLER DUP3 PUSH2 0x19E9 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x92E PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0xA91 JUMP JUMPDEST PUSH2 0x994 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x444555533A20596F7520617265206E6F74207472757374790000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71F JUMP JUMPDEST DUP2 MLOAD PUSH2 0x9A7 SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x216C JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x9BB SWAP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x216C JUMP JUMPDEST POP PUSH32 0x24A9AEF9121BA62598F20F8F80FD406FA1D2D956747E0728068C649F324DDF41 PUSH1 0x6 PUSH1 0x5 PUSH1 0x40 MLOAD PUSH2 0x9EF SWAP3 SWAP2 SWAP1 PUSH2 0x2689 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA2B DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x27FD PUSH1 0x24 SWAP2 CODECOPY PUSH2 0xA24 DUP7 CALLER PUSH2 0x4F7 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x16BE JUMP JUMPDEST SWAP1 POP PUSH2 0xA38 DUP4 CALLER DUP4 PUSH2 0x12E0 JUMP JUMPDEST PUSH2 0xA42 DUP4 DUP4 PUSH2 0x19E9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x5E1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xA8A SWAP1 DUP4 PUSH2 0x1B57 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xA8A SWAP1 DUP4 PUSH2 0x1B6D JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH2 0x54F SWAP1 PUSH2 0x2564 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DD CALLER DUP5 PUSH2 0x66C DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2821 PUSH1 0x25 SWAP2 CODECOPY CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x16BE JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x15EA919C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x15EA919C SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB80 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBA4 SWAP2 SWAP1 PUSH2 0x26AE JUMP JUMPDEST PUSH2 0xC30 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x35 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x444555533A204F6E6C792064656920706F6F6C732061726520616C6C6F776564 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20746F20646F2074686973206F7065726174696F6E0000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH2 0xC3A DUP3 DUP3 PUSH2 0x1BAC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE ADDRESS SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xFEA1FAEA8B86058686E38C71A510E9BA19BC719A67A74E590AA5F68DFDFC21BE SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DD CALLER DUP5 DUP5 PUSH2 0x1494 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x15EA919C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x15EA919C SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD07 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD2B SWAP2 SWAP1 PUSH2 0x26AE JUMP JUMPDEST PUSH2 0xDB7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x35 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x444555533A204F6E6C792064656920706F6F6C732061726520616C6C6F776564 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20746F20646F2074686973206F7065726174696F6E0000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH2 0xDC1 DUP3 DUP3 PUSH2 0x18D1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 ADDRESS SWAP1 PUSH32 0xDCDAF2F9EFB1A9727C667BCD34BA547E3CE5EC7F3AF304AA8829A5E590211D7E SWAP1 PUSH1 0x20 ADD PUSH2 0xC80 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x5E1 SWAP1 PUSH2 0x1C04 JUMP JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0xE8C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332305065726D69743A206578706972656420646561646C696E65000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71F JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP9 DUP9 DUP9 PUSH2 0xEBB DUP13 PUSH2 0x1C0E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0xF23 DUP3 PUSH2 0x1C43 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xF33 DUP3 DUP8 DUP8 DUP8 PUSH2 0x1CAC JUMP JUMPDEST SWAP1 POP DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xFCA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332305065726D69743A20696E76616C6964207369676E61747572650000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71F JUMP JUMPDEST PUSH2 0xFD5 DUP11 DUP11 DUP11 PUSH2 0x12E0 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xFFD SWAP1 CALLER PUSH2 0xA91 JUMP JUMPDEST PUSH2 0x7EA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F207265766F6B6500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH2 0x10B3 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0xA91 JUMP JUMPDEST PUSH2 0x1119 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x444555533A20596F7520617265206E6F74207472757374790000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x11BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x444555533A3A736574444549416464726573733A205A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7320646574656374656400000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x692EA78A01B96B5ABE8A744EAE1DE9F7F001F685FD013F0C552220D563D4BA7 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1242 DUP4 DUP6 PUSH2 0x26FF JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0xA8A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71F JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA8A DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x1EFB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x1382 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x1425 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x1537 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x15DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH2 0x1624 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x27AF PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x16BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x1660 SWAP1 DUP3 PUSH2 0x1235 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE MLOAD DUP5 DUP2 MSTORE SWAP1 SWAP3 SWAP2 DUP7 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x1487 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x16FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x71F SWAP2 SWAP1 PUSH2 0x2205 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1709 DUP5 DUP7 PUSH2 0x2717 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x172A SWAP1 DUP3 PUSH2 0x12AE JUMP JUMPDEST ISZERO PUSH2 0x732 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ ISZERO PUSH2 0x17C7 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 DUP3 DUP5 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP4 ADD MSTORE CHAINID PUSH1 0x80 DUP4 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1883 SWAP1 DUP3 PUSH2 0x1F4A JUMP JUMPDEST ISZERO PUSH2 0x732 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x194E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71F JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x195B SWAP1 DUP3 PUSH2 0x1235 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x198E SWAP1 DUP3 PUSH2 0x1235 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE SWAP3 MLOAD DUP5 DUP2 MSTORE SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0xC80 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x1A8C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH2 0x1AD6 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x278D PUSH1 0x22 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x16BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x2 SLOAD PUSH2 0x1B09 SWAP1 DUP3 PUSH2 0x1F7C JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0xC80 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B63 DUP4 DUP4 PUSH2 0x1FBE JUMP JUMPDEST PUSH1 0x60 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD ISZERO ISZERO PUSH2 0xA8A JUMP JUMPDEST PUSH2 0x1BB6 DUP3 DUP3 PUSH2 0x19E9 JUMP JUMPDEST PUSH2 0x732 DUP3 CALLER PUSH2 0x66C DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x27FD PUSH1 0x24 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 CALLER PUSH2 0x63E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E1 DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E1 PUSH2 0x1C50 PUSH2 0x1778 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x22 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x42 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x62 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP3 GT ISZERO PUSH2 0x1D5E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7565000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST DUP4 PUSH1 0xFF AND PUSH1 0x1B EQ DUP1 PUSH2 0x1D73 JUMPI POP DUP4 PUSH1 0xFF AND PUSH1 0x1C EQ JUMPDEST PUSH2 0x1DFF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7565000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP9 SWAP1 MSTORE PUSH1 0xFF DUP8 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E53 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1709 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71F JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x1F42 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 0x5E1 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x5E1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA8A DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x2079 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA8A DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x16BE JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x2051 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E756D657261626C655365743A20696E646578206F7574206F6620626F756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6473000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2066 JUMPI PUSH2 0x2066 PUSH2 0x272E JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x2162 JUMPI PUSH1 0x0 PUSH2 0x209D PUSH1 0x1 DUP4 PUSH2 0x2717 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x20B1 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x2717 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x20CA JUMPI PUSH2 0x20CA PUSH2 0x272E JUMP 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 0x20ED JUMPI PUSH2 0x20ED PUSH2 0x272E JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH2 0x2104 DUP4 PUSH1 0x1 PUSH2 0x26FF JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x2126 JUMPI PUSH2 0x2126 PUSH2 0x275D JUMP 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 0x5E1 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x5E1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x2178 SWAP1 PUSH2 0x2564 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x219A JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x21E0 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x21B3 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x21E0 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x21E0 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x21E0 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x21C5 JUMP JUMPDEST POP PUSH2 0x21EC SWAP3 SWAP2 POP PUSH2 0x21F0 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x21EC JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x21F1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2232 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x2216 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2244 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x229C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x22B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x22BD DUP4 PUSH2 0x2278 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 0x22E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x22E9 DUP5 PUSH2 0x2278 JUMP JUMPDEST SWAP3 POP PUSH2 0x22F7 PUSH1 0x20 DUP6 ADD PUSH2 0x2278 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2333 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2343 PUSH1 0x20 DUP5 ADD PUSH2 0x2278 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x238C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x23A7 JUMPI PUSH2 0x23A7 PUSH2 0x234C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x23ED JUMPI PUSH2 0x23ED PUSH2 0x234C JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE DUP7 PUSH1 0x20 DUP6 DUP9 ADD ADD GT ISZERO PUSH2 0x2406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH1 0x20 DUP8 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE DUP1 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2439 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x245D DUP7 DUP4 DUP8 ADD PUSH2 0x237B JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2473 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2480 DUP6 DUP3 DUP7 ADD PUSH2 0x237B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x249C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA8A DUP3 PUSH2 0x2278 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x24B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x24E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24EB DUP9 PUSH2 0x2278 JUMP JUMPDEST SWAP7 POP PUSH2 0x24F9 PUSH1 0x20 DUP10 ADD PUSH2 0x2278 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x251D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x254D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2556 DUP4 PUSH2 0x2278 JUMP JUMPDEST SWAP2 POP PUSH2 0x2343 PUSH1 0x20 DUP5 ADD PUSH2 0x2278 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2578 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x1C3D JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP1 DUP4 AND DUP1 PUSH2 0x25CC JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x20 DUP1 DUP5 LT DUP3 EQ ISZERO PUSH2 0x2607 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 DUP9 MSTORE PUSH1 0x20 DUP9 ADD DUP3 DUP1 ISZERO PUSH2 0x2622 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2651 JUMPI PUSH2 0x267C JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP8 AND DUP3 MSTORE DUP3 DUP3 ADD SWAP8 POP PUSH2 0x267C JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x2676 JUMPI DUP2 SLOAD DUP5 DUP3 ADD MSTORE SWAP1 DUP7 ADD SWAP1 DUP5 ADD PUSH2 0x265D JUMP JUMPDEST DUP4 ADD SWAP9 POP POP JUMPDEST POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x269C PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x25B2 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1709 DUP2 DUP6 PUSH2 0x25B2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xA8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x2712 JUMPI PUSH2 0x2712 PUSH2 0x26D0 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x2729 JUMPI PUSH2 0x2729 PUSH2 0x26D0 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x2062616C616E636545524332303A207472616E73 PUSH7 0x657220616D6F75 PUSH15 0x74206578636565647320616C6C6F77 PUSH2 0x6E63 PUSH6 0x45524332303A KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E74206578636565647320616C6C6F77616E63654552 NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x73582212201BEE 0x28 0x4B 0x4D DUP15 0x4B 0xB7 DUP10 CHAINID SHR 0xB3 CALLDATASIZE DUP1 SELFDESTRUCT PUSH2 0xE638 MSTORE 0xE0 0x24 EXP EQ 0xDA 0x24 0xCF ADD ADDRESS SWAP2 DUP3 CALL 0x2A PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "1550:2852:12:-:0;;;1142:95:19;1097:140;;2542:373:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2644:4;1469:52:19;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2340:564:3;;;;;;;;;;;-1:-1:-1;;;2340:564:3;;;;;2426:22;;;;;;;;;2663:25;;;;2482;2698:31;;;;2758:13;2739:32;;;;3447:73;;2536:117;3447:73;;;2823:25:39;;;2864:18;;;2857:34;;;;2907:18;;;2900:34;;;;2950:18;;;;2943:34;;;;3514:4:3;2993:19:39;;;2986:61;3447:73:3;;;;;;;;;;2795:19:39;;;;3447:73:3;;;3437:84;;;;;;;;;;2781:85;;;-1:-1:-1;;;2876:21:3;;-1:-1:-1;;;;;2662:29:12;::::1;2654:82;;;::::0;-1:-1:-1;;;2654:82:12;;2357:2:39;2654:82:12::1;::::0;::::1;2339:21:39::0;2396:2;2376:18;;;2369:30;2435:34;2415:18;;;2408:62;-1:-1:-1;;;2486:18:39;;;2479:38;2534:19;;2654:82:12::1;;;;;;;;;2742:12:::0;;::::1;::::0;:4:::1;::::0;:12:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2758:16:12;;::::1;::::0;:6:::1;::::0;:16:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2778:47:12::1;1767:4:20;2809:15:12::0;2778:10:::1;:47::i;:::-;2829:40;1911:24;2853:15:::0;2829:10:::1;:40::i;:::-;2873:38;2879:15:::0;1773:6:::1;2873:5;:38::i;:::-;2542:373:::0;;;1550:2852;;6653:110:20;6731:25;6742:4;6748:7;6731:10;:25::i;:::-;6653:110;;:::o;6313:370:15:-;-1:-1:-1;;;;;6396:21:15;;6388:65;;;;-1:-1:-1;;;6388:65:15;;3260:2:39;6388:65:15;;;3242:21:39;3299:2;3279:18;;;3272:30;3338:33;3318:18;;;3311:61;3389:18;;6388:65:15;3058:355:39;6388:65:15;6539:24;6556:6;6539:12;;:16;;;;;;:24;;;;:::i;:::-;6524:12;:39;-1:-1:-1;;;;;6594:18:15;;:9;:18;;;;;;;;;;;;:30;;6617:6;;6594:22;;;;;:30;;:::i;:::-;-1:-1:-1;;;;;6573:18:15;;:9;:18;;;;;;;;;;;:51;;;;6639:37;;3564:25:39;;;6573:18:15;;:9;;6639:37;;3537:18:39;6639:37:15;;;;;;;6313:370;;:::o;7090:184:20:-;7163:12;;;;:6;:12;;;;;;;;:33;;7188:7;;7163:24;;;;;:33;;:::i;:::-;7159:109;;;7217:40;;686:10:4;;-1:-1:-1;;;;;7217:40:20;;;7229:4;;7217:40;;;;;7090:184;;:::o;868:176:23:-;926:7;;957:5;961:1;957;:5;:::i;:::-;945:17;;985:1;980;:6;;972:46;;;;-1:-1:-1;;;972:46:23;;4032:2:39;972:46:23;;;4014:21:39;4071:2;4051:18;;;4044:30;4110:29;4090:18;;;4083:57;4157:18;;972:46:23;3830:351:39;972:46:23;1036:1;-1:-1:-1;868:176:23;;;;;:::o;4866:141:38:-;4936:4;4959:41;4964:3;-1:-1:-1;;;;;;4984:14:38;;;;4976:23;1676:4;3874:19;;;:12;;;:19;;;;;;1692:319;;-1:-1:-1;1734:23:38;;;;;;;;:11;:23;;;;;;;;;;;;;1914:18;;1892:19;;;:12;;;:19;;;;;;:40;;;;1946:11;;1692:319;-1:-1:-1;1995:5:38;1988:12;;1550:2852:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1550:2852:12;;;-1:-1:-1;1550:2852:12;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:39;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:885;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:39;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:39;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;930:2;927:1;924:9;921:80;;;989:1;984:2;979;971:6;967:15;963:24;956:35;921:80;1019:6;146:885;-1:-1:-1;;;;;;146:885:39:o;1036:729::-;1144:6;1152;1160;1213:2;1201:9;1192:7;1188:23;1184:32;1181:52;;;1229:1;1226;1219:12;1181:52;1256:16;;-1:-1:-1;;;;;1321:14:39;;;1318:34;;;1348:1;1345;1338:12;1318:34;1371:61;1424:7;1415:6;1404:9;1400:22;1371:61;:::i;:::-;1361:71;;1478:2;1467:9;1463:18;1457:25;1441:41;;1507:2;1497:8;1494:16;1491:36;;;1523:1;1520;1513:12;1491:36;;1546:63;1601:7;1590:8;1579:9;1575:24;1546:63;:::i;:::-;1652:2;1637:18;;1631:25;1536:73;;-1:-1:-1;1631:25:39;-1:-1:-1;;;;;;1685:31:39;;1675:42;;1665:70;;1731:1;1728;1721:12;1665:70;1754:5;1744:15;;;1036:729;;;;;:::o;1770:380::-;1849:1;1845:12;;;;1892;;;1913:61;;1967:4;1959:6;1955:17;1945:27;;1913:61;2020:2;2012:6;2009:14;1989:18;1986:38;1983:161;;;2066:10;2061:3;2057:20;2054:1;2047:31;2101:4;2098:1;2091:15;2129:4;2126:1;2119:15;1983:161;;1770:380;;;:::o;3600:225::-;3640:3;3671:1;3667:6;3664:1;3661:13;3658:136;;;3716:10;3711:3;3707:20;3704:1;3697:31;3751:4;3748:1;3741:15;3779:4;3776:1;3769:15;3658:136;-1:-1:-1;3810:9:39;;3600:225::o;3830:351::-;1550:2852:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@DEFAULT_ADMIN_ROLE_6026": { + "entryPoint": null, + "id": 6026, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DOMAIN_SEPARATOR_5967": { + "entryPoint": 1846, + "id": 5967, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@MINTER_ROLE_4075": { + "entryPoint": null, + "id": 4075, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@TRUSTY_ROLE_4070": { + "entryPoint": null, + "id": 4070, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_add_11596": { + "entryPoint": 7931, + "id": 11596, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_approve_5392": { + "entryPoint": 4832, + "id": 5392, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_at_11736": { + "entryPoint": 8126, + "id": 11736, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_beforeTokenTransfer_5433": { + "entryPoint": null, + "id": 5433, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_buildDomainSeparator_413": { + "entryPoint": null, + "id": 413, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@_burnFrom_5422": { + "entryPoint": 7084, + "id": 5422, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_burn_5347": { + "entryPoint": 6633, + "id": 5347, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_contains_11696": { + "entryPoint": null, + "id": 11696, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_domainSeparatorV4_386": { + "entryPoint": 6008, + "id": 386, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_grantRole_6258": { + "entryPoint": 5906, + "id": 6258, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_hashTypedDataV4_429": { + "entryPoint": 7235, + "id": 429, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_length_11710": { + "entryPoint": null, + "id": 11710, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_mint_5245": { + "entryPoint": 6353, + "id": 5245, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_msgSender_444": { + "entryPoint": null, + "id": 444, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_remove_11677": { + "entryPoint": 8313, + "id": 11677, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_revokeRole_6282": { + "entryPoint": 6251, + "id": 6282, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_transfer_5190": { + "entryPoint": 5268, + "id": 5190, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_useNonce_5996": { + "entryPoint": 7182, + "id": 5996, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@add_11764": { + "entryPoint": 4782, + "id": 11764, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@add_6728": { + "entryPoint": 4661, + "id": 6728, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@allowance_5008": { + "entryPoint": null, + "id": 5008, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@approve_5029": { + "entryPoint": 1488, + "id": 5029, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@at_11851": { + "entryPoint": 6999, + "id": 11851, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@balanceOf_4969": { + "entryPoint": null, + "id": 4969, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@burnFrom_5291": { + "entryPoint": 2555, + "id": 5291, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@burn_5258": { + "entryPoint": 2295, + "id": 5258, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@contains_11812": { + "entryPoint": 7021, + "id": 11812, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@current_53": { + "entryPoint": null, + "id": 53, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@decimals_4060": { + "entryPoint": null, + "id": 4060, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@decreaseAllowance_5124": { + "entryPoint": 2742, + "id": 5124, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@dei_contract_address_4065": { + "entryPoint": null, + "id": 4065, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@genesis_supply_4063": { + "entryPoint": null, + "id": 4063, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@getRoleAdmin_6121": { + "entryPoint": null, + "id": 6121, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMemberCount_6088": { + "entryPoint": 3595, + "id": 6088, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMember_6107": { + "entryPoint": 2674, + "id": 6107, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@grantRole_6147": { + "entryPoint": 1659, + "id": 6147, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@hasRole_6072": { + "entryPoint": 2705, + "id": 6072, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@increaseAllowance_5095": { + "entryPoint": 2036, + "id": 5095, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@increment_67": { + "entryPoint": null, + "id": 67, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@length_11827": { + "entryPoint": 7172, + "id": 11827, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@mint_4226": { + "entryPoint": 2103, + "id": 4226, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@name_4057": { + "entryPoint": 1346, + "id": 4057, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@nonces_5956": { + "entryPoint": 2631, + "id": 5956, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@permit_5940": { + "entryPoint": 3618, + "id": 5940, + "parameterSlots": 7, + "returnSlots": 0 + }, + "@pool_burn_from_4278": { + "entryPoint": 2834, + "id": 4278, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@pool_mint_4252": { + "entryPoint": 3225, + "id": 4252, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@recover_254": { + "entryPoint": 7340, + "id": 254, + "parameterSlots": 4, + "returnSlots": 1 + }, + "@remove_11788": { + "entryPoint": 8010, + "id": 11788, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@renounceRole_6195": { + "entryPoint": 1861, + "id": 6195, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@revokeRole_6173": { + "entryPoint": 4065, + "id": 6173, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setDEIAddress_4211": { + "entryPoint": 4233, + "id": 4211, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setNameAndSymbol_4185": { + "entryPoint": 2308, + "id": 4185, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@sub_6745": { + "entryPoint": 8060, + "id": 6745, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@sub_6773": { + "entryPoint": 5822, + "id": 6773, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@symbol_4055": { + "entryPoint": 2729, + "id": 4055, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@toTypedDataHash_291": { + "entryPoint": null, + "id": 291, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@totalSupply_4955": { + "entryPoint": null, + "id": 4955, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@transferFrom_5067": { + "entryPoint": 1511, + "id": 5067, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@transfer_4990": { + "entryPoint": 3212, + "id": 4990, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_address": { + "entryPoint": 8824, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_string": { + "entryPoint": 9083, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 9354, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 9530, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_addresst_uint256": { + "entryPoint": 8907, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32": { + "entryPoint": 9415, + "id": null, + "parameterSlots": 2, + "returnSlots": 7 + }, + "abi_decode_tuple_t_addresst_uint256": { + "entryPoint": 8865, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bool_fromMemory": { + "entryPoint": 9902, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32": { + "entryPoint": 8967, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32t_address": { + "entryPoint": 8992, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes32t_uint256": { + "entryPoint": 9381, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr": { + "entryPoint": 9254, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_string_storage": { + "entryPoint": 9650, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 7, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 8709, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_storage_t_string_storage__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 9865, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_176a09599ffb03fd50c2529ed3df4cd78c80c2dcf09614f32fa68d539773c15e__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_319b9bac25589d8c5d20ec18b082c1494a368d755c45f66c6527a77229a081c4__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3e89525a63fb9c966b61cf8f5305156de8420bc773a2b60828a2f32c3c5797bd__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_5a4cb831de0f7d54155e118e148058bcf0d6792c6649a82226f0d85307f4726b__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_7e5456eaddf43da0f7aa5f1795c062060b43d1a4a914202d03c57753f2651885__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_94ca1ab58dfda790a1782ffbb0c0a140ec51d4148dbeecc6c39e37b25ff4b124__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "array_dataslot_string_storage": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_string": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 9983, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 10007, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "extract_byte_array_length": { + "entryPoint": 9572, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 9936, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x31": { + "entryPoint": 10077, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 10030, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 9036, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:19250:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "91:73:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "108:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "113:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "101:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "101:19:39" + }, + "nodeType": "YulExpressionStatement", + "src": "101:19:39" + }, + { + "nodeType": "YulAssignment", + "src": "129:29:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "148:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "153:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "144:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "144:14:39" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "129:11:39" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_string", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "59:3:39", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "64:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "75:11:39", + "type": "" + } + ], + "src": "14:150:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "290:535:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "300:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "310:2:39", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "304:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "328:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "339:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "321:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "321:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "321:21:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "351:27:39", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "371:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "365:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "365:13:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "355:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "398:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "409:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "394:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "394:18:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "414:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "387:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "387:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "387:34:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "430:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "439:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "434:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "499:90:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "528:9:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "539:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "524:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "524:17:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "543:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "520:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "520:26:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "562:6:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "570:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "558:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "558:14:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "574:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "554:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "554:23:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "548:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "548:30:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "513:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "513:66:39" + }, + "nodeType": "YulExpressionStatement", + "src": "513:66:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "460:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "463:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "457:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "457:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "471:19:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "473:15:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "482:1:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "485:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "478:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "478:10:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "473:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "453:3:39", + "statements": [] + }, + "src": "449:140:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "623:66:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "652:9:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "663:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "648:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "648:22:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "672:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "644:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "644:31:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "677:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "637:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "637:42:39" + }, + "nodeType": "YulExpressionStatement", + "src": "637:42:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "604:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "607:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "601:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "601:13:39" + }, + "nodeType": "YulIf", + "src": "598:91:39" + }, + { + "nodeType": "YulAssignment", + "src": "698:121:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "714:9:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "733:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "741:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "729:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "729:15:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "746:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "725:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "725:88:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "710:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "710:104:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "816:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "706:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "706:113:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "698:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "259:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "270:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "281:4:39", + "type": "" + } + ], + "src": "169:656:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "879:147:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "889:29:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "911:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "898:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "898:20:39" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "889:5:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1004:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1013:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1016:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1006:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1006:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1006:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "940:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "951:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "958:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "947:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "947:54:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "937:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "937:65:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "930:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "930:73:39" + }, + "nodeType": "YulIf", + "src": "927:93:39" + } + ] + }, + "name": "abi_decode_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "858:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "869:5:39", + "type": "" + } + ], + "src": "830:196:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1118:167:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1164:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1173:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1176:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1166:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1166:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1166:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1139:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1148:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1135:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1135:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1160:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1131:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1131:32:39" + }, + "nodeType": "YulIf", + "src": "1128:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "1189:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1218:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "1199:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "1199:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1189:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1237:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1264:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1275:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1260:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1260:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1247:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1247:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1237:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1076:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1087:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1099:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1107:6:39", + "type": "" + } + ], + "src": "1031:254:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1385:92:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1395:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1407:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1418:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1403:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1403:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1395:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1437:9:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1462:6:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1455:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1455:14:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1448:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1448:22:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1430:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1430:41:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1430:41:39" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1354:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1365:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1376:4:39", + "type": "" + } + ], + "src": "1290:187:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1583:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1593:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1605:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1616:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1601:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1601:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1593:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1635:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1646:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1628:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1628:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1628:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1552:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1563:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1574:4:39", + "type": "" + } + ], + "src": "1482:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1768:224:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1814:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1823:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1826:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1816:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1816:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1816:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1789:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1798:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1785:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1785:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1810:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1781:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1781:32:39" + }, + "nodeType": "YulIf", + "src": "1778:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "1839:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1868:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "1849:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "1849:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1839:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1887:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1920:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1931:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1916:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1916:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "1897:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "1897:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1887:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1944:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1971:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1982:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1967:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1967:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1954:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1954:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "1944:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1718:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1729:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1741:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1749:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "1757:6:39", + "type": "" + } + ], + "src": "1664:328:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2067:110:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2113:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2122:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2125:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2115:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2115:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2115:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2088:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2097:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2084:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2084:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2109:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2080:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2080:32:39" + }, + "nodeType": "YulIf", + "src": "2077:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "2138:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2161:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2148:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2148:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2138:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2033:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2044:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2056:6:39", + "type": "" + } + ], + "src": "1997:180:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2283:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2293:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2305:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2316:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2301:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2301:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2293:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2335:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2346:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2328:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2328:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2328:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2252:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2263:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2274:4:39", + "type": "" + } + ], + "src": "2182:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2451:167:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2497:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2506:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2509:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2499:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2499:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2499:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2472:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2481:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2468:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2468:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2493:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2464:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2464:32:39" + }, + "nodeType": "YulIf", + "src": "2461:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "2522:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2545:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2532:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2532:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2522:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2564:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2597:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2608:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2593:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2593:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "2574:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "2574:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2564:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2409:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2420:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2432:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2440:6:39", + "type": "" + } + ], + "src": "2364:254:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2720:87:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2730:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2742:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2753:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2738:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2738:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2730:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2772:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2787:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2795:4:39", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2783:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2783:17:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2765:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2765:36:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2765:36:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2689:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2700:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2711:4:39", + "type": "" + } + ], + "src": "2623:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2882:110:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2928:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2937:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2940:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2930:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2930:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2930:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2903:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2912:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2899:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2899:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2924:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2895:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2895:32:39" + }, + "nodeType": "YulIf", + "src": "2892:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "2953:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2976:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2963:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2963:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2953:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2848:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2859:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2871:6:39", + "type": "" + } + ], + "src": "2812:180:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3029:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3046:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3049:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3039:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3039:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3039:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3143:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3146:4:39", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3136:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3136:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3136:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3167:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3170:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3160:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3160:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3160:15:39" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "2997:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3239:725:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3288:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3297:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3300:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3290:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3290:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3290:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3267:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3275:4:39", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3263:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3263:17:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3282:3:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3259:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3259:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3252:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3252:35:39" + }, + "nodeType": "YulIf", + "src": "3249:55:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3313:30:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3336:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3323:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "3323:20:39" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "3317:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3352:28:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3362:18:39", + "type": "", + "value": "0xffffffffffffffff" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "3356:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3403:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "3405:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "3405:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3405:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3395:2:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3399:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3392:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3392:10:39" + }, + "nodeType": "YulIf", + "src": "3389:36:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3434:76:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3444:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + }, + "variables": [ + { + "name": "_3", + "nodeType": "YulTypedName", + "src": "3438:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3519:23:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3539:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "3533:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "3533:9:39" + }, + "variables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "3523:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3551:71:39", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "3573:6:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3597:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3601:4:39", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3593:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3593:13:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "3608:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "3589:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3589:22:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3613:2:39", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3585:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3585:31:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "3618:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "3581:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3581:40:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3569:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3569:53:39" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "3555:10:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3681:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "3683:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "3683:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3683:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "3640:10:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3652:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3637:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3637:18:39" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "3660:10:39" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "3672:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "3657:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3657:22:39" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "3634:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3634:46:39" + }, + "nodeType": "YulIf", + "src": "3631:72:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3719:2:39", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "3723:10:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3712:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3712:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3712:22:39" + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "3750:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3758:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3743:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3743:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3743:18:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3809:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3818:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3821:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3811:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3811:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3811:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3784:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3792:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3780:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3780:15:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3797:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3776:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3776:26:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3804:3:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3773:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3773:35:39" + }, + "nodeType": "YulIf", + "src": "3770:55:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "3851:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3859:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3847:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3847:17:39" + }, + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3870:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3878:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3866:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3866:17:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3885:2:39" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "3834:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "3834:54:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3834:54:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "3912:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3920:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3908:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3908:15:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3925:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3904:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3904:26:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3932:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3897:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3897:37:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3897:37:39" + }, + { + "nodeType": "YulAssignment", + "src": "3943:15:39", + "value": { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "3952:6:39" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "3943:5:39" + } + ] + } + ] + }, + "name": "abi_decode_string", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3213:6:39", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3221:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "3229:5:39", + "type": "" + } + ], + "src": "3186:778:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4076:436:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4122:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4131:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4134:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4124:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4124:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4124:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4097:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4106:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4093:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4093:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4118:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4089:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4089:32:39" + }, + "nodeType": "YulIf", + "src": "4086:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4147:37:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4174:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4161:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4161:23:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4151:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4193:28:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4203:18:39", + "type": "", + "value": "0xffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "4197:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4248:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4257:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4260:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4250:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4250:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4250:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4236:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "4244:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4233:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "4233:14:39" + }, + "nodeType": "YulIf", + "src": "4230:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "4273:60:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4305:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4316:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4301:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4301:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4325:7:39" + } + ], + "functionName": { + "name": "abi_decode_string", + "nodeType": "YulIdentifier", + "src": "4283:17:39" + }, + "nodeType": "YulFunctionCall", + "src": "4283:50:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4273:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4342:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4375:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4386:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4371:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4371:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4358:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4358:32:39" + }, + "variables": [ + { + "name": "offset_1", + "nodeType": "YulTypedName", + "src": "4346:8:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4419:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4428:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4431:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4421:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4421:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4421:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "4405:8:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "4415:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4402:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "4402:16:39" + }, + "nodeType": "YulIf", + "src": "4399:36:39" + }, + { + "nodeType": "YulAssignment", + "src": "4444:62:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4476:9:39" + }, + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "4487:8:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4472:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4472:24:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4498:7:39" + } + ], + "functionName": { + "name": "abi_decode_string", + "nodeType": "YulIdentifier", + "src": "4454:17:39" + }, + "nodeType": "YulFunctionCall", + "src": "4454:52:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "4444:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4034:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "4045:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4057:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "4065:6:39", + "type": "" + } + ], + "src": "3969:543:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4587:116:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4633:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4642:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4645:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4635:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4635:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4635:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4608:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4617:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4604:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4604:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4629:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4600:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4600:32:39" + }, + "nodeType": "YulIf", + "src": "4597:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "4658:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4687:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "4668:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "4668:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4658:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4553:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "4564:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4576:6:39", + "type": "" + } + ], + "src": "4517:186:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4809:125:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4819:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4831:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4842:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4827:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4827:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4819:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4861:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4876:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4884:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "4872:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4872:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4854:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4854:74:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4854:74:39" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4778:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4789:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4800:4:39", + "type": "" + } + ], + "src": "4708:226:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5026:161:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5072:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5081:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5084:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5074:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5074:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5074:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5047:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5056:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5043:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5043:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5068:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5039:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5039:32:39" + }, + "nodeType": "YulIf", + "src": "5036:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "5097:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5120:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5107:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5107:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5097:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5139:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5166:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5177:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5162:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5162:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5149:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5149:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "5139:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4984:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "4995:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5007:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "5015:6:39", + "type": "" + } + ], + "src": "4939:248:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5362:523:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5409:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5418:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5421:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5411:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5411:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5411:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5383:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5392:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5379:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5379:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5404:3:39", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5375:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5375:33:39" + }, + "nodeType": "YulIf", + "src": "5372:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "5434:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5463:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "5444:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "5444:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5434:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5482:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5515:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5526:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5511:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5511:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "5492:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "5492:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "5482:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5539:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5566:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5577:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5562:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5562:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5549:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5549:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "5539:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5590:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5617:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5628:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5613:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5613:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5600:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5600:32:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "5590:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5641:46:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5671:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5682:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5667:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5667:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5654:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5654:33:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5645:5:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5735:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5744:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5747:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5737:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5737:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5737:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5709:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5720:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5727:4:39", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5716:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5716:16:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "5706:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "5706:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5699:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5699:35:39" + }, + "nodeType": "YulIf", + "src": "5696:55:39" + }, + { + "nodeType": "YulAssignment", + "src": "5760:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5770:5:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "5760:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5784:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5811:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5822:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5807:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5807:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5794:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5794:33:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "5784:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5836:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5863:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5874:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5859:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5859:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5846:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5846:33:39" + }, + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "5836:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5280:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "5291:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5303:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "5311:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "5319:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "5327:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "5335:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "5343:6:39", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "5351:6:39", + "type": "" + } + ], + "src": "5192:693:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5977:173:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6023:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6032:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6035:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6025:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6025:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6025:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5998:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6007:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5994:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5994:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6019:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5990:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5990:32:39" + }, + "nodeType": "YulIf", + "src": "5987:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "6048:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6077:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "6058:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "6058:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6048:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6096:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6129:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6140:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6125:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6125:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "6106:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "6106:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "6096:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5935:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "5946:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5958:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "5966:6:39", + "type": "" + } + ], + "src": "5890:260:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6210:382:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6220:22:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6234:1:39", + "type": "", + "value": "1" + }, + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "6237:4:39" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6230:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6230:12:39" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6220:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6251:38:39", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "6281:4:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6287:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6277:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6277:12:39" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "6255:18:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6328:31:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6330:27:39", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6344:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6352:4:39", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6340:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6340:17:39" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6330:6:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "6308:18:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "6301:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6301:26:39" + }, + "nodeType": "YulIf", + "src": "6298:61:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6418:168:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6439:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6442:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6432:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6432:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6432:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6540:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6543:4:39", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6533:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6533:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6533:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6568:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6571:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6561:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6561:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6561:15:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "6374:18:39" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6397:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6405:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "6394:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "6394:14:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "6371:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "6371:38:39" + }, + "nodeType": "YulIf", + "src": "6368:218:39" + } + ] + }, + "name": "extract_byte_array_length", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "6190:4:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "6199:6:39", + "type": "" + } + ], + "src": "6155:437:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6771:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6788:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6799:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6781:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6781:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6781:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6822:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6833:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6818:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6818:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6838:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6811:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6811:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6811:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6861:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6872:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6857:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6857:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6877:34:39", + "type": "", + "value": "AccessControl: sender must be an" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6850:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6850:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6850:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6932:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6943:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6928:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6928:18:39" + }, + { + "hexValue": "2061646d696e20746f206772616e74", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6948:17:39", + "type": "", + "value": " admin to grant" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6921:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6921:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6921:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "6975:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6987:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6998:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6983:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6983:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6975:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6748:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6762:4:39", + "type": "" + } + ], + "src": "6597:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7187:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7204:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7215:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7197:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7197:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7197:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7238:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7249:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7234:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7234:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7254:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7227:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7227:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7227:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7277:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7288:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7273:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7273:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e6365", + "kind": "string", + "nodeType": "YulLiteral", + "src": "7293:34:39", + "type": "", + "value": "AccessControl: can only renounce" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7266:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7266:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7266:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7348:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7359:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7344:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7344:18:39" + }, + { + "hexValue": "20726f6c657320666f722073656c66", + "kind": "string", + "nodeType": "YulLiteral", + "src": "7364:17:39", + "type": "", + "value": " roles for self" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7337:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7337:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7337:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "7391:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7403:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7414:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7399:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7399:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7391:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7164:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7178:4:39", + "type": "" + } + ], + "src": "7013:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7603:241:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7620:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7631:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7613:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7613:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7613:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7654:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7665:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7650:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7650:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7670:2:39", + "type": "", + "value": "51" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7643:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7643:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7643:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7693:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7704:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7689:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7689:18:39" + }, + { + "hexValue": "444555533a204f6e6c79206d696e746572732061726520616c6c6f7765642074", + "kind": "string", + "nodeType": "YulLiteral", + "src": "7709:34:39", + "type": "", + "value": "DEUS: Only minters are allowed t" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7682:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7682:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7682:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7764:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7775:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7760:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7760:18:39" + }, + { + "hexValue": "6f20646f2074686973206f7065726174696f6e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "7780:21:39", + "type": "", + "value": "o do this operation" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7753:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7753:49:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7753:49:39" + }, + { + "nodeType": "YulAssignment", + "src": "7811:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7823:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7834:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7819:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7819:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7811:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_319b9bac25589d8c5d20ec18b082c1494a368d755c45f66c6527a77229a081c4__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7580:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7594:4:39", + "type": "" + } + ], + "src": "7429:415:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8023:174:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8040:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8051:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8033:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8033:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8033:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8074:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8085:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8070:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8070:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8090:2:39", + "type": "", + "value": "24" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8063:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8063:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8063:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8113:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8124:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8109:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8109:18:39" + }, + { + "hexValue": "444555533a20596f7520617265206e6f7420747275737479", + "kind": "string", + "nodeType": "YulLiteral", + "src": "8129:26:39", + "type": "", + "value": "DEUS: You are not trusty" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8102:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8102:54:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8102:54:39" + }, + { + "nodeType": "YulAssignment", + "src": "8165:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8177:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8188:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8173:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8173:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8165:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_5a4cb831de0f7d54155e118e148058bcf0d6792c6649a82226f0d85307f4726b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8000:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "8014:4:39", + "type": "" + } + ], + "src": "7849:348:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8258:65:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8275:1:39", + "type": "", + "value": "0" + }, + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "8278:3:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8268:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8268:14:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8268:14:39" + }, + { + "nodeType": "YulAssignment", + "src": "8291:26:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8309:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8312:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nodeType": "YulIdentifier", + "src": "8299:9:39" + }, + "nodeType": "YulFunctionCall", + "src": "8299:18:39" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "8291:4:39" + } + ] + } + ] + }, + "name": "array_dataslot_string_storage", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nodeType": "YulTypedName", + "src": "8241:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "8249:4:39", + "type": "" + } + ], + "src": "8202:121:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8386:1099:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8396:29:39", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8419:5:39" + } + ], + "functionName": { + "name": "sload", + "nodeType": "YulIdentifier", + "src": "8413:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "8413:12:39" + }, + "variables": [ + { + "name": "slotValue", + "nodeType": "YulTypedName", + "src": "8400:9:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8434:15:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8448:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "8438:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8458:11:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8468:1:39", + "type": "", + "value": "1" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "8462:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8478:28:39", + "value": { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "8492:2:39" + }, + { + "name": "slotValue", + "nodeType": "YulIdentifier", + "src": "8496:9:39" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "8488:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8488:18:39" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "8478:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8515:44:39", + "value": { + "arguments": [ + { + "name": "slotValue", + "nodeType": "YulIdentifier", + "src": "8545:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "8556:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "8541:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8541:18:39" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "8519:18:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8598:31:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8600:27:39", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "8614:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8622:4:39", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "8610:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8610:17:39" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "8600:6:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "8578:18:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "8571:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8571:26:39" + }, + "nodeType": "YulIf", + "src": "8568:61:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8638:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8648:2:39", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "8642:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8709:168:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8730:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8733:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8723:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8723:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8723:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8831:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8834:4:39", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8824:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8824:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8824:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8859:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8862:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8852:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8852:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8852:15:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "8665:18:39" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "8688:6:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "8696:2:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "8685:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "8685:14:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "8662:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "8662:38:39" + }, + "nodeType": "YulIf", + "src": "8659:218:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8886:61:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8935:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "8940:6:39" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_string", + "nodeType": "YulIdentifier", + "src": "8899:35:39" + }, + "nodeType": "YulFunctionCall", + "src": "8899:48:39" + }, + "variables": [ + { + "name": "pos_1", + "nodeType": "YulTypedName", + "src": "8890:5:39", + "type": "" + } + ] + }, + { + "cases": [ + { + "body": { + "nodeType": "YulBlock", + "src": "8997:155:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "9018:5:39" + }, + { + "arguments": [ + { + "name": "slotValue", + "nodeType": "YulIdentifier", + "src": "9029:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9040:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "9025:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9025:82:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9011:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9011:97:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9011:97:39" + }, + { + "nodeType": "YulAssignment", + "src": "9121:21:39", + "value": { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "9132:5:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "9139:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9128:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9128:14:39" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "9121:3:39" + } + ] + } + ] + }, + "nodeType": "YulCase", + "src": "8990:162:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8995:1:39", + "type": "", + "value": "0" + } + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9168:311:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9182:51:39", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9227:5:39" + } + ], + "functionName": { + "name": "array_dataslot_string_storage", + "nodeType": "YulIdentifier", + "src": "9197:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "9197:36:39" + }, + "variables": [ + { + "name": "dataPos", + "nodeType": "YulTypedName", + "src": "9186:7:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "9246:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9255:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "9250:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9323:113:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "9352:5:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "9359:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9348:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9348:13:39" + }, + { + "arguments": [ + { + "name": "dataPos", + "nodeType": "YulIdentifier", + "src": "9369:7:39" + } + ], + "functionName": { + "name": "sload", + "nodeType": "YulIdentifier", + "src": "9363:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "9363:14:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9341:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9341:37:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9341:37:39" + }, + { + "nodeType": "YulAssignment", + "src": "9395:27:39", + "value": { + "arguments": [ + { + "name": "dataPos", + "nodeType": "YulIdentifier", + "src": "9410:7:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "9419:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9406:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9406:16:39" + }, + "variableNames": [ + { + "name": "dataPos", + "nodeType": "YulIdentifier", + "src": "9395:7:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "9280:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9283:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "9277:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "9277:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "9291:19:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9293:15:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "9302:1:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "9305:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9298:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9298:10:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "9293:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "9273:3:39", + "statements": [] + }, + "src": "9269:167:39" + }, + { + "nodeType": "YulAssignment", + "src": "9449:20:39", + "value": { + "arguments": [ + { + "name": "pos_1", + "nodeType": "YulIdentifier", + "src": "9460:5:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "9467:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9456:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9456:13:39" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "9449:3:39" + } + ] + } + ] + }, + "nodeType": "YulCase", + "src": "9161:318:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9166:1:39", + "type": "", + "value": "1" + } + } + ], + "expression": { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "8963:18:39" + }, + "nodeType": "YulSwitch", + "src": "8956:523:39" + } + ] + }, + "name": "abi_encode_string_storage", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8363:5:39", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "8370:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "8378:3:39", + "type": "" + } + ], + "src": "8328:1157:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9653:230:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9670:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9681:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9663:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9663:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9663:21:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "9693:67:39", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9733:6:39" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9745:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9756:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9741:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9741:18:39" + } + ], + "functionName": { + "name": "abi_encode_string_storage", + "nodeType": "YulIdentifier", + "src": "9707:25:39" + }, + "nodeType": "YulFunctionCall", + "src": "9707:53:39" + }, + "variables": [ + { + "name": "tail_1", + "nodeType": "YulTypedName", + "src": "9697:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9780:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9791:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9776:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9776:18:39" + }, + { + "arguments": [ + { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "9800:6:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9808:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9796:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9796:22:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9769:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9769:50:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9769:50:39" + }, + { + "nodeType": "YulAssignment", + "src": "9828:49:39", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "9862:6:39" + }, + { + "name": "tail_1", + "nodeType": "YulIdentifier", + "src": "9870:6:39" + } + ], + "functionName": { + "name": "abi_encode_string_storage", + "nodeType": "YulIdentifier", + "src": "9836:25:39" + }, + "nodeType": "YulFunctionCall", + "src": "9836:41:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9828:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_storage_t_string_storage__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9614:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "9625:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9633:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "9644:4:39", + "type": "" + } + ], + "src": "9490:393:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9966:199:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "10012:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10021:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10024:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10014:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10014:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10014:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9987:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9996:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9983:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9983:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10008:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "9979:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9979:32:39" + }, + "nodeType": "YulIf", + "src": "9976:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "10037:29:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10056:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "10050:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "10050:16:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10041:5:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10119:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10128:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10131:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10121:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10121:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10121:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10088:5:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10109:5:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "10102:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10102:13:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "10095:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10095:21:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "10085:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "10085:32:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "10078:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10078:40:39" + }, + "nodeType": "YulIf", + "src": "10075:60:39" + }, + { + "nodeType": "YulAssignment", + "src": "10144:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10154:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "10144:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bool_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9932:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "9943:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9955:6:39", + "type": "" + } + ], + "src": "9888:277:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10344:243:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10361:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10372:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10354:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10354:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10354:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10395:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10406:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10391:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10391:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10411:2:39", + "type": "", + "value": "53" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10384:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10384:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10384:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10434:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10445:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10430:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10430:18:39" + }, + { + "hexValue": "444555533a204f6e6c792064656920706f6f6c732061726520616c6c6f776564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "10450:34:39", + "type": "", + "value": "DEUS: Only dei pools are allowed" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10423:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10423:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10423:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10505:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10516:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10501:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10501:18:39" + }, + { + "hexValue": "20746f20646f2074686973206f7065726174696f6e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "10521:23:39", + "type": "", + "value": " to do this operation" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10494:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10494:51:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10494:51:39" + }, + { + "nodeType": "YulAssignment", + "src": "10554:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10566:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10577:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10562:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10562:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10554:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_176a09599ffb03fd50c2529ed3df4cd78c80c2dcf09614f32fa68d539773c15e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10321:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "10335:4:39", + "type": "" + } + ], + "src": "10170:417:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10766:179:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10783:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10794:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10776:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10776:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10776:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10817:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10828:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10813:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10813:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10833:2:39", + "type": "", + "value": "29" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10806:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10806:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10806:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10856:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10867:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10852:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10852:18:39" + }, + { + "hexValue": "45524332305065726d69743a206578706972656420646561646c696e65", + "kind": "string", + "nodeType": "YulLiteral", + "src": "10872:31:39", + "type": "", + "value": "ERC20Permit: expired deadline" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10845:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10845:59:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10845:59:39" + }, + { + "nodeType": "YulAssignment", + "src": "10913:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10925:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10936:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10921:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10921:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10913:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3e89525a63fb9c966b61cf8f5305156de8420bc773a2b60828a2f32c3c5797bd__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10743:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "10757:4:39", + "type": "" + } + ], + "src": "10592:353:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11191:373:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11201:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11213:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11224:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11209:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11209:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "11201:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11244:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "11255:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11237:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11237:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11237:25:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "11271:52:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11281:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "11275:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11343:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11354:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11339:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11339:18:39" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "11363:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "11371:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "11359:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11359:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11332:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11332:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11332:43:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11395:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11406:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11391:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11391:18:39" + }, + { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "11415:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "11423:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "11411:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11411:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11384:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11384:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11384:43:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11447:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11458:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11443:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11443:18:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "11463:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11436:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11436:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11436:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11490:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11501:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11486:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11486:19:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "11507:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11479:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11479:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11479:35:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11534:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11545:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11530:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11530:19:39" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "11551:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11523:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11523:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11523:35:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "11120:9:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "11131:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "11139:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "11147:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "11155:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "11163:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "11171:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "11182:4:39", + "type": "" + } + ], + "src": "10950:614:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11743:180:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11760:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11771:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11753:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11753:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11753:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11794:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11805:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11790:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11790:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11810:2:39", + "type": "", + "value": "30" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11783:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11783:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11783:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11833:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11844:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11829:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11829:18:39" + }, + { + "hexValue": "45524332305065726d69743a20696e76616c6964207369676e6174757265", + "kind": "string", + "nodeType": "YulLiteral", + "src": "11849:32:39", + "type": "", + "value": "ERC20Permit: invalid signature" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11822:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11822:60:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11822:60:39" + }, + { + "nodeType": "YulAssignment", + "src": "11891:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11903:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11914:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11899:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11899:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "11891:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_94ca1ab58dfda790a1782ffbb0c0a140ec51d4148dbeecc6c39e37b25ff4b124__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "11720:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "11734:4:39", + "type": "" + } + ], + "src": "11569:354:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12102:238:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12119:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12130:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12112:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12112:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12112:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12153:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12164:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12149:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12149:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12169:2:39", + "type": "", + "value": "48" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12142:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12142:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12142:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12192:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12203:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12188:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12188:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12208:34:39", + "type": "", + "value": "AccessControl: sender must be an" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12181:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12181:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12181:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12263:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12274:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12259:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12259:18:39" + }, + { + "hexValue": "2061646d696e20746f207265766f6b65", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12279:18:39", + "type": "", + "value": " admin to revoke" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12252:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12252:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12252:46:39" + }, + { + "nodeType": "YulAssignment", + "src": "12307:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12319:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12330:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12315:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12315:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12307:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12079:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "12093:4:39", + "type": "" + } + ], + "src": "11928:412:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12519:232:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12536:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12547:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12529:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12529:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12529:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12570:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12581:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12566:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12566:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12586:2:39", + "type": "", + "value": "42" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12559:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12559:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12559:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12609:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12620:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12605:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12605:18:39" + }, + { + "hexValue": "444555533a3a736574444549416464726573733a205a65726f20616464726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12625:34:39", + "type": "", + "value": "DEUS::setDEIAddress: Zero addres" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12598:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12598:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12598:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12680:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12691:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12676:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12676:18:39" + }, + { + "hexValue": "73206465746563746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12696:12:39", + "type": "", + "value": "s detected" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12669:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12669:40:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12669:40:39" + }, + { + "nodeType": "YulAssignment", + "src": "12718:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12730:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12741:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12726:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12726:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12718:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_7e5456eaddf43da0f7aa5f1795c062060b43d1a4a914202d03c57753f2651885__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12496:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "12510:4:39", + "type": "" + } + ], + "src": "12345:406:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12788:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12805:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12808:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12798:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12798:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12798:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12902:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12905:4:39", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12895:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12895:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12895:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12926:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12929:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "12919:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12919:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12919:15:39" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "12756:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12993:80:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "13020:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "13022:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "13022:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13022:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "13009:1:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "13016:1:39" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "13012:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13012:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "13006:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "13006:13:39" + }, + "nodeType": "YulIf", + "src": "13003:39:39" + }, + { + "nodeType": "YulAssignment", + "src": "13051:16:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "13062:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "13065:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13058:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13058:9:39" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "13051:3:39" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "12976:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "12979:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "12985:3:39", + "type": "" + } + ], + "src": "12945:128:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13252:177:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13269:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13280:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13262:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13262:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13262:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13303:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13314:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13299:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13299:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13319:2:39", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13292:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13292:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13292:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13342:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13353:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13338:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13338:18:39" + }, + { + "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13358:29:39", + "type": "", + "value": "SafeMath: addition overflow" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13331:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13331:57:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13331:57:39" + }, + { + "nodeType": "YulAssignment", + "src": "13397:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13409:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13420:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13405:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13405:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13397:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13229:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13243:4:39", + "type": "" + } + ], + "src": "13078:351:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13608:226:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13625:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13636:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13618:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13618:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13618:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13659:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13670:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13655:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13655:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13675:2:39", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13648:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13648:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13648:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13698:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13709:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13694:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13694:18:39" + }, + { + "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f20616464", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13714:34:39", + "type": "", + "value": "ERC20: approve from the zero add" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13687:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13687:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13687:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13769:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13780:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13765:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13765:18:39" + }, + { + "hexValue": "72657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13785:6:39", + "type": "", + "value": "ress" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13758:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13758:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13758:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "13801:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13813:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13824:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13809:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13809:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13801:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13585:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13599:4:39", + "type": "" + } + ], + "src": "13434:400:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14013:224:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14030:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14041:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14023:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14023:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14023:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14064:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14075:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14060:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14060:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14080:2:39", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14053:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14053:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14053:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14103:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14114:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14099:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14099:18:39" + }, + { + "hexValue": "45524332303a20617070726f766520746f20746865207a65726f206164647265", + "kind": "string", + "nodeType": "YulLiteral", + "src": "14119:34:39", + "type": "", + "value": "ERC20: approve to the zero addre" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14092:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14092:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14092:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14174:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14185:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14170:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14170:18:39" + }, + { + "hexValue": "7373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "14190:4:39", + "type": "", + "value": "ss" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14163:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14163:32:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14163:32:39" + }, + { + "nodeType": "YulAssignment", + "src": "14204:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14216:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14227:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14212:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14212:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "14204:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13990:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "14004:4:39", + "type": "" + } + ], + "src": "13839:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14416:227:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14433:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14444:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14426:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14426:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14426:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14467:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14478:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14463:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14463:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14483:2:39", + "type": "", + "value": "37" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14456:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14456:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14456:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14506:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14517:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14502:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14502:18:39" + }, + { + "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f206164", + "kind": "string", + "nodeType": "YulLiteral", + "src": "14522:34:39", + "type": "", + "value": "ERC20: transfer from the zero ad" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14495:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14495:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14495:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14577:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14588:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14573:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14573:18:39" + }, + { + "hexValue": "6472657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "14593:7:39", + "type": "", + "value": "dress" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14566:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14566:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14566:35:39" + }, + { + "nodeType": "YulAssignment", + "src": "14610:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14622:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14633:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14618:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14618:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "14610:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "14393:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "14407:4:39", + "type": "" + } + ], + "src": "14242:401:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14822:225:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14839:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14850:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14832:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14832:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14832:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14873:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14884:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14869:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14869:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14889:2:39", + "type": "", + "value": "35" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14862:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14862:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14862:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14912:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14923:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14908:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14908:18:39" + }, + { + "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472", + "kind": "string", + "nodeType": "YulLiteral", + "src": "14928:34:39", + "type": "", + "value": "ERC20: transfer to the zero addr" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14901:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14901:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14901:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14983:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14994:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14979:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14979:18:39" + }, + { + "hexValue": "657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "14999:5:39", + "type": "", + "value": "ess" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14972:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14972:33:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14972:33:39" + }, + { + "nodeType": "YulAssignment", + "src": "15014:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15026:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15037:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15022:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15022:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15014:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "14799:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "14813:4:39", + "type": "" + } + ], + "src": "14648:399:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15101:76:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "15123:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "15125:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "15125:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15125:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "15117:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "15120:1:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "15114:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "15114:8:39" + }, + "nodeType": "YulIf", + "src": "15111:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "15154:17:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "15166:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "15169:1:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15162:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15162:9:39" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "15154:4:39" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "15083:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "15086:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "15092:4:39", + "type": "" + } + ], + "src": "15052:125:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15356:181:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15373:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15384:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15366:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15366:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15366:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15407:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15418:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15403:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15403:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15423:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15396:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15396:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15396:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15446:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15457:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15442:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15442:18:39" + }, + { + "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "15462:33:39", + "type": "", + "value": "ERC20: mint to the zero address" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15435:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15435:61:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15435:61:39" + }, + { + "nodeType": "YulAssignment", + "src": "15505:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15517:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15528:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15513:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15513:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15505:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15333:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "15347:4:39", + "type": "" + } + ], + "src": "15182:355:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15716:223:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15733:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15744:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15726:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15726:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15726:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15767:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15778:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15763:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15763:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15783:2:39", + "type": "", + "value": "33" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15756:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15756:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15756:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15806:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15817:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15802:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15802:18:39" + }, + { + "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f20616464726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "15822:34:39", + "type": "", + "value": "ERC20: burn from the zero addres" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15795:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15795:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15795:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15877:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15888:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15873:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15873:18:39" + }, + { + "hexValue": "73", + "kind": "string", + "nodeType": "YulLiteral", + "src": "15893:3:39", + "type": "", + "value": "s" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15866:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15866:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15866:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "15906:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15918:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15929:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15914:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15914:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15906:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15693:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "15707:4:39", + "type": "" + } + ], + "src": "15542:397:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16118:224:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16135:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16146:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16128:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16128:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16128:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16169:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16180:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16165:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16165:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16185:2:39", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16158:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16158:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16158:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16208:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16219:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16204:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16204:18:39" + }, + { + "hexValue": "45434453413a20696e76616c6964207369676e6174757265202773272076616c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "16224:34:39", + "type": "", + "value": "ECDSA: invalid signature 's' val" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16197:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16197:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16197:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16279:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16290:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16275:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16275:18:39" + }, + { + "hexValue": "7565", + "kind": "string", + "nodeType": "YulLiteral", + "src": "16295:4:39", + "type": "", + "value": "ue" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16268:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16268:32:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16268:32:39" + }, + { + "nodeType": "YulAssignment", + "src": "16309:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16321:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16332:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16317:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16317:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "16309:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "16095:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "16109:4:39", + "type": "" + } + ], + "src": "15944:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16521:224:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16538:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16549:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16531:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16531:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16531:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16572:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16583:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16568:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16568:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16588:2:39", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16561:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16561:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16561:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16611:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16622:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16607:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16607:18:39" + }, + { + "hexValue": "45434453413a20696e76616c6964207369676e6174757265202776272076616c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "16627:34:39", + "type": "", + "value": "ECDSA: invalid signature 'v' val" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16600:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16600:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16600:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16682:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16693:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16678:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16678:18:39" + }, + { + "hexValue": "7565", + "kind": "string", + "nodeType": "YulLiteral", + "src": "16698:4:39", + "type": "", + "value": "ue" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16671:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16671:32:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16671:32:39" + }, + { + "nodeType": "YulAssignment", + "src": "16712:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16724:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16735:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16720:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16720:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "16712:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "16498:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "16512:4:39", + "type": "" + } + ], + "src": "16347:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16931:217:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16941:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16953:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16964:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16949:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16949:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "16941:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16984:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "16995:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16977:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16977:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16977:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17022:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17033:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17018:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17018:18:39" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "17042:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17050:4:39", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "17038:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17038:17:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17011:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17011:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17011:45:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17076:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17087:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17072:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17072:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "17092:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17065:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17065:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17065:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17119:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17130:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17115:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17115:18:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "17135:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17108:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17108:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17108:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "16876:9:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "16887:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "16895:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "16903:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "16911:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "16922:4:39", + "type": "" + } + ], + "src": "16750:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17327:174:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17344:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17355:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17337:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17337:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17337:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17378:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17389:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17374:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17374:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17394:2:39", + "type": "", + "value": "24" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17367:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17367:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17367:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17417:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17428:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17413:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17413:18:39" + }, + { + "hexValue": "45434453413a20696e76616c6964207369676e6174757265", + "kind": "string", + "nodeType": "YulLiteral", + "src": "17433:26:39", + "type": "", + "value": "ECDSA: invalid signature" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17406:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17406:54:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17406:54:39" + }, + { + "nodeType": "YulAssignment", + "src": "17469:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17481:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17492:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17477:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17477:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "17469:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "17304:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "17318:4:39", + "type": "" + } + ], + "src": "17153:348:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17719:299:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17729:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17741:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17752:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17737:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17737:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "17729:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17772:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "17783:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17765:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17765:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17765:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17810:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17821:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17806:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17806:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "17826:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17799:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17799:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17799:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17853:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17864:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17849:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17849:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "17869:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17842:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17842:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17842:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17896:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17907:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17892:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17892:18:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "17912:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17885:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17885:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17885:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17939:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17950:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17935:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17935:19:39" + }, + { + "arguments": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "17960:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17968:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "17956:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17956:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17928:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17928:84:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17928:84:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "17656:9:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "17667:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "17675:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "17683:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "17691:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "17699:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "17710:4:39", + "type": "" + } + ], + "src": "17506:512:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18197:224:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18214:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18225:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18207:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18207:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18207:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18248:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18259:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18244:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18244:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18264:2:39", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18237:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18237:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18237:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18287:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18298:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18283:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18283:18:39" + }, + { + "hexValue": "456e756d657261626c655365743a20696e646578206f7574206f6620626f756e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "18303:34:39", + "type": "", + "value": "EnumerableSet: index out of boun" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18276:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18276:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18276:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18358:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18369:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18354:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18354:18:39" + }, + { + "hexValue": "6473", + "kind": "string", + "nodeType": "YulLiteral", + "src": "18374:4:39", + "type": "", + "value": "ds" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18347:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18347:32:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18347:32:39" + }, + { + "nodeType": "YulAssignment", + "src": "18388:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18400:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18411:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18396:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18396:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "18388:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18174:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "18188:4:39", + "type": "" + } + ], + "src": "18023:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18458:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18475:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18478:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18468:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18468:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18468:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18572:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18575:4:39", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18565:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18565:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18565:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18596:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18599:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "18589:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18589:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18589:15:39" + } + ] + }, + "name": "panic_error_0x32", + "nodeType": "YulFunctionDefinition", + "src": "18426:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18863:196:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18880:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18885:66:39", + "type": "", + "value": "0x1901000000000000000000000000000000000000000000000000000000000000" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18873:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18873:79:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18873:79:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18972:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18977:1:39", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18968:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "18968:11:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "18981:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18961:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18961:27:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18961:27:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "19008:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19013:2:39", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19004:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19004:12:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "19018:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18997:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "18997:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "18997:28:39" + }, + { + "nodeType": "YulAssignment", + "src": "19034:19:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "19045:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19050:2:39", + "type": "", + "value": "66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19041:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "19041:12:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "19034:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "18831:3:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "18836:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "18844:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "18855:3:39", + "type": "" + } + ], + "src": "18615:444:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19096:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19113:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19116:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19106:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19106:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19106:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19210:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19213:4:39", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19203:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19203:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19203:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19234:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19237:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "19227:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "19227:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "19227:15:39" + } + ] + }, + "name": "panic_error_0x31", + "nodeType": "YulFunctionDefinition", + "src": "19064:184:39" + } + ] + }, + "contents": "{\n { }\n function array_storeLengthForEncoding_string(pos, length) -> updated_pos\n {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n if gt(i, length)\n {\n mstore(add(add(headStart, length), 64), 0)\n }\n tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function panic_error_0x41()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_string(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let _2 := 0xffffffffffffffff\n if gt(_1, _2) { panic_error_0x41() }\n let _3 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _1)\n if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n calldatacopy(add(memPtr, 0x20), add(offset, 0x20), _1)\n mstore(add(add(memPtr, _1), 0x20), 0)\n array := memPtr\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_string(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_string(add(headStart, offset_1), dataEnd)\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_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_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let value := calldataload(add(headStart, 128))\n if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n value4 := value\n value5 := calldataload(add(headStart, 160))\n value6 := calldataload(add(headStart, 192))\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"AccessControl: sender must be an\")\n mstore(add(headStart, 96), \" admin to grant\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"AccessControl: can only renounce\")\n mstore(add(headStart, 96), \" roles for self\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_319b9bac25589d8c5d20ec18b082c1494a368d755c45f66c6527a77229a081c4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 51)\n mstore(add(headStart, 64), \"DEUS: Only minters are allowed t\")\n mstore(add(headStart, 96), \"o do this operation\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_5a4cb831de0f7d54155e118e148058bcf0d6792c6649a82226f0d85307f4726b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"DEUS: You are not trusty\")\n tail := add(headStart, 96)\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function abi_encode_string_storage(value, pos) -> ret\n {\n let slotValue := sload(value)\n let length := 0\n let _1 := 1\n length := shr(_1, slotValue)\n let outOfPlaceEncoding := and(slotValue, _1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n let _2 := 32\n if eq(outOfPlaceEncoding, lt(length, _2))\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n let pos_1 := array_storeLengthForEncoding_string(pos, length)\n switch outOfPlaceEncoding\n case 0 {\n mstore(pos_1, and(slotValue, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00))\n ret := add(pos_1, _2)\n }\n case 1 {\n let dataPos := array_dataslot_string_storage(value)\n let i := 0\n for { } lt(i, length) { i := add(i, _2) }\n {\n mstore(add(pos_1, i), sload(dataPos))\n dataPos := add(dataPos, _1)\n }\n ret := add(pos_1, i)\n }\n }\n function abi_encode_tuple_t_string_storage_t_string_storage__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_string_storage(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_string_storage(value1, tail_1)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_176a09599ffb03fd50c2529ed3df4cd78c80c2dcf09614f32fa68d539773c15e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 53)\n mstore(add(headStart, 64), \"DEUS: Only dei pools are allowed\")\n mstore(add(headStart, 96), \" to do this operation\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_3e89525a63fb9c966b61cf8f5305156de8420bc773a2b60828a2f32c3c5797bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"ERC20Permit: expired deadline\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 192)\n mstore(headStart, value0)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n mstore(add(headStart, 160), value5)\n }\n function abi_encode_tuple_t_stringliteral_94ca1ab58dfda790a1782ffbb0c0a140ec51d4148dbeecc6c39e37b25ff4b124__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 30)\n mstore(add(headStart, 64), \"ERC20Permit: invalid signature\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 48)\n mstore(add(headStart, 64), \"AccessControl: sender must be an\")\n mstore(add(headStart, 96), \" admin to revoke\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_7e5456eaddf43da0f7aa5f1795c062060b43d1a4a914202d03c57753f2651885__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"DEUS::setDEIAddress: Zero addres\")\n mstore(add(headStart, 96), \"s detected\")\n tail := add(headStart, 128)\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"SafeMath: addition overflow\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n mstore(add(headStart, 96), \"ress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n mstore(add(headStart, 96), \"ss\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n mstore(add(headStart, 96), \"dress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 35)\n mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n mstore(add(headStart, 96), \"ess\")\n tail := add(headStart, 128)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 31)\n mstore(add(headStart, 64), \"ERC20: mint to the zero address\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"ERC20: burn from the zero addres\")\n mstore(add(headStart, 96), \"s\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"ECDSA: invalid signature 's' val\")\n mstore(add(headStart, 96), \"ue\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"ECDSA: invalid signature 'v' val\")\n mstore(add(headStart, 96), \"ue\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, 0xff))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"ECDSA: invalid signature\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 160)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), and(value4, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"EnumerableSet: index out of boun\")\n mstore(add(headStart, 96), \"ds\")\n tail := add(headStart, 128)\n }\n function panic_error_0x32()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n mstore(pos, 0x1901000000000000000000000000000000000000000000000000000000000000)\n mstore(add(pos, 2), value0)\n mstore(add(pos, 34), value1)\n end := add(pos, 66)\n }\n function panic_error_0x31()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": { + "298": [ + { + "length": 32, + "start": 6053 + } + ], + "300": [ + { + "length": 32, + "start": 6012 + } + ], + "302": [ + { + "length": 32, + "start": 6136 + } + ], + "304": [ + { + "length": 32, + "start": 6173 + } + ], + "306": [ + { + "length": 32, + "start": 6094 + } + ], + "5856": [ + { + "length": 32, + "start": 3728 + } + ] + }, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506004361061020b5760003560e01c806379cc67901161012a578063a8a778ae116100bd578063d505accf1161008c578063d547741f11610071578063d547741f146104d6578063dd62ed3e146104e9578063efa007361461052f57600080fd5b8063d505accf1461049c578063d5391393146104af57600080fd5b8063a8a778ae14610450578063a9059cbb14610463578063b4f56b2614610476578063ca15c8731461048957600080fd5b806391d14854116100f957806391d148541461041a57806395d89b411461042d578063a217fddf14610435578063a457c2d71461043d57600080fd5b806379cc67901461039c5780637ecebe00146103af57806383e2d870146103c25780639010d07c1461040757600080fd5b80633644e515116101a257806342966c681161017157806342966c681461033057806351e238e3146103435780635a4462151461035357806370a082311461036657600080fd5b80633644e515146102ef57806336568abe146102f7578063395093511461030a57806340c10f191461031d57600080fd5b8063248a9ca3116101de578063248a9ca3146102765780632f2ff15d14610299578063313ce567146102ae57806334ddb95d146102c857600080fd5b806306fdde0314610210578063095ea7b31461022e57806318160ddd1461025157806323b872dd14610263575b600080fd5b610218610542565b6040516102259190612205565b60405180910390f35b61024161023c3660046122a1565b6105d0565b6040519015158152602001610225565b6002545b604051908152602001610225565b6102416102713660046122cb565b6105e7565b610255610284366004612307565b60009081526004602052604090206002015490565b6102ac6102a7366004612320565b61067b565b005b6102b6601281565b60405160ff9091168152602001610225565b6102557f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610255610736565b6102ac610305366004612320565b610745565b6102416103183660046122a1565b6107f4565b6102ac61032b3660046122a1565b610837565b6102ac61033e366004612307565b6108f7565b61025568056bc75e2d6310000081565b6102ac610361366004612426565b610904565b61025561037436600461248a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6102ac6103aa3660046122a1565b6109fb565b6102556103bd36600461248a565b610a47565b6007546103e29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610225565b6103e26104153660046124a5565b610a72565b610241610428366004612320565b610a91565b610218610aa9565b610255600081565b61024161044b3660046122a1565b610ab6565b6102ac61045e3660046122a1565b610b12565b6102416104713660046122a1565b610c8c565b6102ac6104843660046122a1565b610c99565b610255610497366004612307565b610e0b565b6102ac6104aa3660046124c7565b610e22565b6102557f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102ac6104e4366004612320565b610fe1565b6102556104f736600461253a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6102ac61053d36600461248a565b611089565b6006805461054f90612564565b80601f016020809104026020016040519081016040528092919081815260200182805461057b90612564565b80156105c85780601f1061059d576101008083540402835291602001916105c8565b820191906000526020600020905b8154815290600101906020018083116105ab57829003601f168201915b505050505081565b60006105dd3384846112e0565b5060015b92915050565b60006105f4848484611494565b610671843361066c856040518060600160405280602881526020016127d56028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020526040812090335b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205491906116be565b6112e0565b5060019392505050565b6000828152600460205260409020600201546106979033610a91565b610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084015b60405180910390fd5b6107328282611712565b5050565b6000610740611778565b905090565b73ffffffffffffffffffffffffffffffffffffffff811633146107ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c660000000000000000000000000000000000606482015260840161071f565b610732828261186b565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105dd91859061066c9086611235565b6108617f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610a91565b6108ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f444555533a204f6e6c79206d696e746572732061726520616c6c6f776564207460448201527f6f20646f2074686973206f7065726174696f6e00000000000000000000000000606482015260840161071f565b61073282826118d1565b61090133826119e9565b50565b61092e7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610a91565b610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f444555533a20596f7520617265206e6f74207472757374790000000000000000604482015260640161071f565b81516109a790600690602085019061216c565b5080516109bb90600590602084019061216c565b507f24a9aef9121ba62598f20f8f80fd406fa1d2d956747e0728068c649f324ddf41600660056040516109ef929190612689565b60405180910390a15050565b6000610a2b826040518060600160405280602481526020016127fd60249139610a2486336104f7565b91906116be565b9050610a388333836112e0565b610a4283836119e9565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600360205260408120546105e1565b6000828152600460205260408120610a8a9083611b57565b9392505050565b6000828152600460205260408120610a8a9083611b6d565b6005805461054f90612564565b60006105dd338461066c856040518060600160405280602581526020016128216025913933600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d16845290915290205491906116be565b6007546040517f15ea919c00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff909116906315ea919c90602401602060405180830381865afa158015610b80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba491906126ae565b610c30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f444555533a204f6e6c792064656920706f6f6c732061726520616c6c6f77656460448201527f20746f20646f2074686973206f7065726174696f6e0000000000000000000000606482015260840161071f565b610c3a8282611bac565b604051818152309073ffffffffffffffffffffffffffffffffffffffff8416907ffea1faea8b86058686e38c71a510e9ba19bc719a67a74e590aa5f68dfdfc21be906020015b60405180910390a35050565b60006105dd338484611494565b6007546040517f15ea919c00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff909116906315ea919c90602401602060405180830381865afa158015610d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2b91906126ae565b610db7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f444555533a204f6e6c792064656920706f6f6c732061726520616c6c6f77656460448201527f20746f20646f2074686973206f7065726174696f6e0000000000000000000000606482015260840161071f565b610dc182826118d1565b60405181815273ffffffffffffffffffffffffffffffffffffffff83169030907fdcdaf2f9efb1a9727c667bcd34ba547e3ce5ec7f3af304aa8829a5e590211d7e90602001610c80565b60008181526004602052604081206105e190611c04565b83421115610e8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161071f565b60007f0000000000000000000000000000000000000000000000000000000000000000888888610ebb8c611c0e565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610f2382611c43565b90506000610f3382878787611cac565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610fca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161071f565b610fd58a8a8a6112e0565b50505050505050505050565b600082815260046020526040902060020154610ffd9033610a91565b6107ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b6500000000000000000000000000000000606482015260840161071f565b6110b37f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610a91565b611119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f444555533a20596f7520617265206e6f74207472757374790000000000000000604482015260640161071f565b73ffffffffffffffffffffffffffffffffffffffff81166111bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f444555533a3a736574444549416464726573733a205a65726f2061646472657360448201527f7320646574656374656400000000000000000000000000000000000000000000606482015260840161071f565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f0692ea78a01b96b5abe8a744eae1de9f7f001f685fd013f0c552220d563d4ba79060200160405180910390a150565b60008061124283856126ff565b905083811015610a8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161071f565b6000610a8a837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16611efb565b73ffffffffffffffffffffffffffffffffffffffff8316611382576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161071f565b73ffffffffffffffffffffffffffffffffffffffff8216611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161071f565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161071f565b73ffffffffffffffffffffffffffffffffffffffff82166115da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161071f565b611624816040518060600160405280602681526020016127af6026913973ffffffffffffffffffffffffffffffffffffffff861660009081526020819052604090205491906116be565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546116609082611235565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611487565b600081848411156116fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f9190612205565b5060006117098486612717565b95945050505050565b600082815260046020526040902061172a90826112ae565b1561073257604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b60007f00000000000000000000000000000000000000000000000000000000000000004614156117c757507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008281526004602052604090206118839082611f4a565b1561073257604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b73ffffffffffffffffffffffffffffffffffffffff821661194e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161071f565b60025461195b9082611235565b60025573ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461198e9082611235565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610c80565b73ffffffffffffffffffffffffffffffffffffffff8216611a8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161071f565b611ad68160405180606001604052806022815260200161278d6022913973ffffffffffffffffffffffffffffffffffffffff851660009081526020819052604090205491906116be565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055600254611b099082611f7c565b60025560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610c80565b6000611b638383611fbe565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660009081526001830160205260408120541515610a8a565b611bb682826119e9565b610732823361066c846040518060600160405280602481526020016127fd6024913973ffffffffffffffffffffffffffffffffffffffff88166000908152600160205260408120903361063e565b60006105e1825490565b73ffffffffffffffffffffffffffffffffffffffff811660009081526003602052604090208054600181018255905b50919050565b60006105e1611c50611778565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115611d5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161071f565b8360ff16601b1480611d7357508360ff16601c145b611dff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161071f565b6040805160008082526020820180845288905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa158015611e53573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161071f565b6000818152600183016020526040812054611f42575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105e1565b5060006105e1565b6000610a8a837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16612079565b6000610a8a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116be565b81546000908210612051576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f6473000000000000000000000000000000000000000000000000000000000000606482015260840161071f565b8260000182815481106120665761206661272e565b9060005260206000200154905092915050565b6000818152600183016020526040812054801561216257600061209d600183612717565b85549091506000906120b190600190612717565b905060008660000182815481106120ca576120ca61272e565b90600052602060002001549050808760000184815481106120ed576120ed61272e565b6000918252602090912001556121048360016126ff565b600082815260018901602052604090205586548790806121265761212661275d565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506105e1565b60009150506105e1565b82805461217890612564565b90600052602060002090601f01602090048101928261219a57600085556121e0565b82601f106121b357805160ff19168380011785556121e0565b828001600101855582156121e0579182015b828111156121e05782518255916020019190600101906121c5565b506121ec9291506121f0565b5090565b5b808211156121ec57600081556001016121f1565b600060208083528351808285015260005b8181101561223257858101830151858201604001528201612216565b81811115612244576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461229c57600080fd5b919050565b600080604083850312156122b457600080fd5b6122bd83612278565b946020939093013593505050565b6000806000606084860312156122e057600080fd5b6122e984612278565b92506122f760208501612278565b9150604084013590509250925092565b60006020828403121561231957600080fd5b5035919050565b6000806040838503121561233357600080fd5b8235915061234360208401612278565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261238c57600080fd5b813567ffffffffffffffff808211156123a7576123a761234c565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156123ed576123ed61234c565b8160405283815286602085880101111561240657600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561243957600080fd5b823567ffffffffffffffff8082111561245157600080fd5b61245d8683870161237b565b9350602085013591508082111561247357600080fd5b506124808582860161237b565b9150509250929050565b60006020828403121561249c57600080fd5b610a8a82612278565b600080604083850312156124b857600080fd5b50508035926020909101359150565b600080600080600080600060e0888a0312156124e257600080fd5b6124eb88612278565b96506124f960208901612278565b95506040880135945060608801359350608088013560ff8116811461251d57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561254d57600080fd5b61255683612278565b915061234360208401612278565b600181811c9082168061257857607f821691505b60208210811415611c3d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b8054600090600181811c90808316806125cc57607f831692505b6020808410821415612607577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b8388526020880182801561262257600181146126515761267c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0087168252828201975061267c565b60008981526020902060005b878110156126765781548482015290860190840161265d565b83019850505b5050505050505092915050565b60408152600061269c60408301856125b2565b828103602084015261170981856125b2565b6000602082840312156126c057600080fd5b81518015158114610a8a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115612712576127126126d0565b500190565b600082821015612729576127296126d0565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201bee284b4d8e4bb789461cb33680ff61e63852e0240a14da24cf01309182f12a64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x20B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x79CC6790 GT PUSH2 0x12A JUMPI DUP1 PUSH4 0xA8A778AE GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD547741F GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x4D6 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x4E9 JUMPI DUP1 PUSH4 0xEFA00736 EQ PUSH2 0x52F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x49C JUMPI DUP1 PUSH4 0xD5391393 EQ PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA8A778AE EQ PUSH2 0x450 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0xB4F56B26 EQ PUSH2 0x476 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x41A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x42D JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x435 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x39C JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x3AF JUMPI DUP1 PUSH4 0x83E2D870 EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x407 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x42966C68 GT PUSH2 0x171 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x330 JUMPI DUP1 PUSH4 0x51E238E3 EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0x5A446215 EQ PUSH2 0x353 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x2EF JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x30A JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x248A9CA3 GT PUSH2 0x1DE JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x276 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2AE JUMPI DUP1 PUSH4 0x34DDB95D EQ PUSH2 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x210 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x22E JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x263 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x218 PUSH2 0x542 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x225 SWAP2 SWAP1 PUSH2 0x2205 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x241 PUSH2 0x23C CALLDATASIZE PUSH1 0x4 PUSH2 0x22A1 JUMP JUMPDEST PUSH2 0x5D0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x225 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x225 JUMP JUMPDEST PUSH2 0x241 PUSH2 0x271 CALLDATASIZE PUSH1 0x4 PUSH2 0x22CB JUMP JUMPDEST PUSH2 0x5E7 JUMP JUMPDEST PUSH2 0x255 PUSH2 0x284 CALLDATASIZE PUSH1 0x4 PUSH2 0x2307 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x2A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2320 JUMP JUMPDEST PUSH2 0x67B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2B6 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x225 JUMP JUMPDEST PUSH2 0x255 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP2 JUMP JUMPDEST PUSH2 0x255 PUSH2 0x736 JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x305 CALLDATASIZE PUSH1 0x4 PUSH2 0x2320 JUMP JUMPDEST PUSH2 0x745 JUMP JUMPDEST PUSH2 0x241 PUSH2 0x318 CALLDATASIZE PUSH1 0x4 PUSH2 0x22A1 JUMP JUMPDEST PUSH2 0x7F4 JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x32B CALLDATASIZE PUSH1 0x4 PUSH2 0x22A1 JUMP JUMPDEST PUSH2 0x837 JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x33E CALLDATASIZE PUSH1 0x4 PUSH2 0x2307 JUMP JUMPDEST PUSH2 0x8F7 JUMP JUMPDEST PUSH2 0x255 PUSH9 0x56BC75E2D63100000 DUP2 JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x361 CALLDATASIZE PUSH1 0x4 PUSH2 0x2426 JUMP JUMPDEST PUSH2 0x904 JUMP JUMPDEST PUSH2 0x255 PUSH2 0x374 CALLDATASIZE PUSH1 0x4 PUSH2 0x248A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x3AA CALLDATASIZE PUSH1 0x4 PUSH2 0x22A1 JUMP JUMPDEST PUSH2 0x9FB JUMP JUMPDEST PUSH2 0x255 PUSH2 0x3BD CALLDATASIZE PUSH1 0x4 PUSH2 0x248A JUMP JUMPDEST PUSH2 0xA47 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH2 0x3E2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x225 JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x415 CALLDATASIZE PUSH1 0x4 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0xA72 JUMP JUMPDEST PUSH2 0x241 PUSH2 0x428 CALLDATASIZE PUSH1 0x4 PUSH2 0x2320 JUMP JUMPDEST PUSH2 0xA91 JUMP JUMPDEST PUSH2 0x218 PUSH2 0xAA9 JUMP JUMPDEST PUSH2 0x255 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x241 PUSH2 0x44B CALLDATASIZE PUSH1 0x4 PUSH2 0x22A1 JUMP JUMPDEST PUSH2 0xAB6 JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x45E CALLDATASIZE PUSH1 0x4 PUSH2 0x22A1 JUMP JUMPDEST PUSH2 0xB12 JUMP JUMPDEST PUSH2 0x241 PUSH2 0x471 CALLDATASIZE PUSH1 0x4 PUSH2 0x22A1 JUMP JUMPDEST PUSH2 0xC8C JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x484 CALLDATASIZE PUSH1 0x4 PUSH2 0x22A1 JUMP JUMPDEST PUSH2 0xC99 JUMP JUMPDEST PUSH2 0x255 PUSH2 0x497 CALLDATASIZE PUSH1 0x4 PUSH2 0x2307 JUMP JUMPDEST PUSH2 0xE0B JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x4AA CALLDATASIZE PUSH1 0x4 PUSH2 0x24C7 JUMP JUMPDEST PUSH2 0xE22 JUMP JUMPDEST PUSH2 0x255 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 DUP2 JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x4E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2320 JUMP JUMPDEST PUSH2 0xFE1 JUMP JUMPDEST PUSH2 0x255 PUSH2 0x4F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x253A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2AC PUSH2 0x53D CALLDATASIZE PUSH1 0x4 PUSH2 0x248A JUMP JUMPDEST PUSH2 0x1089 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH2 0x54F SWAP1 PUSH2 0x2564 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x57B SWAP1 PUSH2 0x2564 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x5C8 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x59D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5C8 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 0x5AB JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DD CALLER DUP5 DUP5 PUSH2 0x12E0 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F4 DUP5 DUP5 DUP5 PUSH2 0x1494 JUMP JUMPDEST PUSH2 0x671 DUP5 CALLER PUSH2 0x66C DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x27D5 PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 CALLER JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x16BE JUMP JUMPDEST PUSH2 0x12E0 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x697 SWAP1 CALLER PUSH2 0xA91 JUMP JUMPDEST PUSH2 0x728 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F206772616E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x732 DUP3 DUP3 PUSH2 0x1712 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x740 PUSH2 0x1778 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ PUSH2 0x7EA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH2 0x732 DUP3 DUP3 PUSH2 0x186B JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x5DD SWAP2 DUP6 SWAP1 PUSH2 0x66C SWAP1 DUP7 PUSH2 0x1235 JUMP JUMPDEST PUSH2 0x861 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 CALLER PUSH2 0xA91 JUMP JUMPDEST PUSH2 0x8ED JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x444555533A204F6E6C79206D696E746572732061726520616C6C6F7765642074 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F20646F2074686973206F7065726174696F6E00000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH2 0x732 DUP3 DUP3 PUSH2 0x18D1 JUMP JUMPDEST PUSH2 0x901 CALLER DUP3 PUSH2 0x19E9 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x92E PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0xA91 JUMP JUMPDEST PUSH2 0x994 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x444555533A20596F7520617265206E6F74207472757374790000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71F JUMP JUMPDEST DUP2 MLOAD PUSH2 0x9A7 SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x216C JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x9BB SWAP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x216C JUMP JUMPDEST POP PUSH32 0x24A9AEF9121BA62598F20F8F80FD406FA1D2D956747E0728068C649F324DDF41 PUSH1 0x6 PUSH1 0x5 PUSH1 0x40 MLOAD PUSH2 0x9EF SWAP3 SWAP2 SWAP1 PUSH2 0x2689 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA2B DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x27FD PUSH1 0x24 SWAP2 CODECOPY PUSH2 0xA24 DUP7 CALLER PUSH2 0x4F7 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x16BE JUMP JUMPDEST SWAP1 POP PUSH2 0xA38 DUP4 CALLER DUP4 PUSH2 0x12E0 JUMP JUMPDEST PUSH2 0xA42 DUP4 DUP4 PUSH2 0x19E9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x5E1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xA8A SWAP1 DUP4 PUSH2 0x1B57 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xA8A SWAP1 DUP4 PUSH2 0x1B6D JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH2 0x54F SWAP1 PUSH2 0x2564 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DD CALLER DUP5 PUSH2 0x66C DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2821 PUSH1 0x25 SWAP2 CODECOPY CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x16BE JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x15EA919C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x15EA919C SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB80 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBA4 SWAP2 SWAP1 PUSH2 0x26AE JUMP JUMPDEST PUSH2 0xC30 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x35 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x444555533A204F6E6C792064656920706F6F6C732061726520616C6C6F776564 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20746F20646F2074686973206F7065726174696F6E0000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH2 0xC3A DUP3 DUP3 PUSH2 0x1BAC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE ADDRESS SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xFEA1FAEA8B86058686E38C71A510E9BA19BC719A67A74E590AA5F68DFDFC21BE SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DD CALLER DUP5 DUP5 PUSH2 0x1494 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x15EA919C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x15EA919C SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD07 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD2B SWAP2 SWAP1 PUSH2 0x26AE JUMP JUMPDEST PUSH2 0xDB7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x35 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x444555533A204F6E6C792064656920706F6F6C732061726520616C6C6F776564 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20746F20646F2074686973206F7065726174696F6E0000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH2 0xDC1 DUP3 DUP3 PUSH2 0x18D1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 ADDRESS SWAP1 PUSH32 0xDCDAF2F9EFB1A9727C667BCD34BA547E3CE5EC7F3AF304AA8829A5E590211D7E SWAP1 PUSH1 0x20 ADD PUSH2 0xC80 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x5E1 SWAP1 PUSH2 0x1C04 JUMP JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0xE8C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332305065726D69743A206578706972656420646561646C696E65000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71F JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP9 DUP9 DUP9 PUSH2 0xEBB DUP13 PUSH2 0x1C0E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0xF23 DUP3 PUSH2 0x1C43 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xF33 DUP3 DUP8 DUP8 DUP8 PUSH2 0x1CAC JUMP JUMPDEST SWAP1 POP DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xFCA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332305065726D69743A20696E76616C6964207369676E61747572650000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71F JUMP JUMPDEST PUSH2 0xFD5 DUP11 DUP11 DUP11 PUSH2 0x12E0 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xFFD SWAP1 CALLER PUSH2 0xA91 JUMP JUMPDEST PUSH2 0x7EA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F207265766F6B6500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH2 0x10B3 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0xA91 JUMP JUMPDEST PUSH2 0x1119 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x444555533A20596F7520617265206E6F74207472757374790000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x11BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x444555533A3A736574444549416464726573733A205A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7320646574656374656400000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x692EA78A01B96B5ABE8A744EAE1DE9F7F001F685FD013F0C552220D563D4BA7 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1242 DUP4 DUP6 PUSH2 0x26FF JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0xA8A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71F JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA8A DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x1EFB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x1382 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x1425 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x1537 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x15DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH2 0x1624 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x27AF PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x16BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x1660 SWAP1 DUP3 PUSH2 0x1235 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE MLOAD DUP5 DUP2 MSTORE SWAP1 SWAP3 SWAP2 DUP7 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x1487 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x16FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x71F SWAP2 SWAP1 PUSH2 0x2205 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1709 DUP5 DUP7 PUSH2 0x2717 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x172A SWAP1 DUP3 PUSH2 0x12AE JUMP JUMPDEST ISZERO PUSH2 0x732 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ ISZERO PUSH2 0x17C7 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 DUP3 DUP5 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP4 ADD MSTORE CHAINID PUSH1 0x80 DUP4 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1883 SWAP1 DUP3 PUSH2 0x1F4A JUMP JUMPDEST ISZERO PUSH2 0x732 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x194E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71F JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x195B SWAP1 DUP3 PUSH2 0x1235 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x198E SWAP1 DUP3 PUSH2 0x1235 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE SWAP3 MLOAD DUP5 DUP2 MSTORE SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0xC80 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x1A8C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH2 0x1AD6 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x278D PUSH1 0x22 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x16BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x2 SLOAD PUSH2 0x1B09 SWAP1 DUP3 PUSH2 0x1F7C JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0xC80 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B63 DUP4 DUP4 PUSH2 0x1FBE JUMP JUMPDEST PUSH1 0x60 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD ISZERO ISZERO PUSH2 0xA8A JUMP JUMPDEST PUSH2 0x1BB6 DUP3 DUP3 PUSH2 0x19E9 JUMP JUMPDEST PUSH2 0x732 DUP3 CALLER PUSH2 0x66C DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x27FD PUSH1 0x24 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 CALLER PUSH2 0x63E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E1 DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E1 PUSH2 0x1C50 PUSH2 0x1778 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x22 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x42 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x62 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP3 GT ISZERO PUSH2 0x1D5E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7565000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST DUP4 PUSH1 0xFF AND PUSH1 0x1B EQ DUP1 PUSH2 0x1D73 JUMPI POP DUP4 PUSH1 0xFF AND PUSH1 0x1C EQ JUMPDEST PUSH2 0x1DFF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7565000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP9 SWAP1 MSTORE PUSH1 0xFF DUP8 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E53 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1709 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71F JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x1F42 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 0x5E1 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x5E1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA8A DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x2079 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA8A DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x16BE JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x2051 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E756D657261626C655365743A20696E646578206F7574206F6620626F756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6473000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71F JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2066 JUMPI PUSH2 0x2066 PUSH2 0x272E JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x2162 JUMPI PUSH1 0x0 PUSH2 0x209D PUSH1 0x1 DUP4 PUSH2 0x2717 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x20B1 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x2717 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x20CA JUMPI PUSH2 0x20CA PUSH2 0x272E JUMP 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 0x20ED JUMPI PUSH2 0x20ED PUSH2 0x272E JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH2 0x2104 DUP4 PUSH1 0x1 PUSH2 0x26FF JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x2126 JUMPI PUSH2 0x2126 PUSH2 0x275D JUMP 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 0x5E1 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x5E1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x2178 SWAP1 PUSH2 0x2564 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x219A JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x21E0 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x21B3 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x21E0 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x21E0 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x21E0 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x21C5 JUMP JUMPDEST POP PUSH2 0x21EC SWAP3 SWAP2 POP PUSH2 0x21F0 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x21EC JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x21F1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2232 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x2216 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2244 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x229C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x22B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x22BD DUP4 PUSH2 0x2278 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 0x22E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x22E9 DUP5 PUSH2 0x2278 JUMP JUMPDEST SWAP3 POP PUSH2 0x22F7 PUSH1 0x20 DUP6 ADD PUSH2 0x2278 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2333 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2343 PUSH1 0x20 DUP5 ADD PUSH2 0x2278 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x238C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x23A7 JUMPI PUSH2 0x23A7 PUSH2 0x234C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x23ED JUMPI PUSH2 0x23ED PUSH2 0x234C JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE DUP7 PUSH1 0x20 DUP6 DUP9 ADD ADD GT ISZERO PUSH2 0x2406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH1 0x20 DUP8 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE DUP1 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2439 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x245D DUP7 DUP4 DUP8 ADD PUSH2 0x237B JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2473 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2480 DUP6 DUP3 DUP7 ADD PUSH2 0x237B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x249C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA8A DUP3 PUSH2 0x2278 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x24B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x24E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24EB DUP9 PUSH2 0x2278 JUMP JUMPDEST SWAP7 POP PUSH2 0x24F9 PUSH1 0x20 DUP10 ADD PUSH2 0x2278 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x251D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x254D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2556 DUP4 PUSH2 0x2278 JUMP JUMPDEST SWAP2 POP PUSH2 0x2343 PUSH1 0x20 DUP5 ADD PUSH2 0x2278 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2578 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x1C3D JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP1 DUP4 AND DUP1 PUSH2 0x25CC JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x20 DUP1 DUP5 LT DUP3 EQ ISZERO PUSH2 0x2607 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 DUP9 MSTORE PUSH1 0x20 DUP9 ADD DUP3 DUP1 ISZERO PUSH2 0x2622 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2651 JUMPI PUSH2 0x267C JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP8 AND DUP3 MSTORE DUP3 DUP3 ADD SWAP8 POP PUSH2 0x267C JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x2676 JUMPI DUP2 SLOAD DUP5 DUP3 ADD MSTORE SWAP1 DUP7 ADD SWAP1 DUP5 ADD PUSH2 0x265D JUMP JUMPDEST DUP4 ADD SWAP9 POP POP JUMPDEST POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x269C PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x25B2 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1709 DUP2 DUP6 PUSH2 0x25B2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xA8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x2712 JUMPI PUSH2 0x2712 PUSH2 0x26D0 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x2729 JUMPI PUSH2 0x2729 PUSH2 0x26D0 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x2062616C616E636545524332303A207472616E73 PUSH7 0x657220616D6F75 PUSH15 0x74206578636565647320616C6C6F77 PUSH2 0x6E63 PUSH6 0x45524332303A KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E74206578636565647320616C6C6F77616E63654552 NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x73582212201BEE 0x28 0x4B 0x4D DUP15 0x4B 0xB7 DUP10 CHAINID SHR 0xB3 CALLDATASIZE DUP1 SELFDESTRUCT PUSH2 0xE638 MSTORE 0xE0 0x24 EXP EQ 0xDA 0x24 0xCF ADD ADDRESS SWAP2 DUP3 CALL 0x2A PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "1550:2852:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1672:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2735:166:15;;;;;;:::i;:::-;;:::i;:::-;;;1455:14:39;;1448:22;1430:41;;1418:2;1403:18;2735:166:15;1290:187:39;1702:98:15;1781:12;;1702:98;;;1628:25:39;;;1616:2;1601:18;1702:98:15;1482:177:39;3359:317:15;;;;;;:::i;:::-;;:::i;4347:112:20:-;;;;;;:::i;:::-;4404:7;4430:12;;;:6;:12;;;;;:22;;;;4347:112;4709:223;;;;;;:::i;:::-;;:::i;:::-;;1693:35:12;;1726:2;1693:35;;;;;2795:4:39;2783:17;;;2765:36;;2753:2;2738:18;1693:35:12;2623:184:39;1873:62:12;;1911:24;1873:62;;2519:113:19;;;:::i;5883:205:20:-;;;;;;:::i;:::-;;:::i;4071:215:15:-;;;;;;:::i;:::-;;:::i;3469:86:12:-;;;;;;:::i;:::-;;:::i;6792:89:15:-;;;;;;:::i;:::-;;:::i;1732:47:12:-;;1773:6;1732:47;;2970:170;;;;;;:::i;:::-;;:::i;1858:117:15:-;;;;;;:::i;:::-;1950:18;;1924:7;1950:18;;;;;;;;;;;;1858:117;7185:290;;;;;;:::i;:::-;;:::i;2269:126:19:-;;;;;;:::i;:::-;;:::i;1834:35:12:-;;;;;;;;;;;;4884:42:39;4872:55;;;4854:74;;4842:2;4827:18;1834:35:12;4708:226:39;4030:136:20;;;;;;:::i;:::-;;:::i;3015:137::-;;;;;;:::i;:::-;;:::i;1649:20:12:-;;;:::i;1722:49:20:-;;1767:4;1722:49;;4773:266:15;;;;;;:::i;:::-;;:::i;3941:179:12:-;;;;;;:::i;:::-;;:::i;2178:172:15:-;;;;;;:::i;:::-;;:::i;3703:170:12:-;;;;;;:::i;:::-;;:::i;3320:125:20:-;;;;;;:::i;:::-;;:::i;1582:626:19:-;;;;;;:::i;:::-;;:::i;1938:62:12:-;;1976:24;1938:62;;5166:226:20;;;;;;:::i;:::-;;:::i;2408:149:15:-;;;;;;:::i;:::-;2523:18;;;;2497:7;2523:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2408:149;3143:271:12;;;;;;:::i;:::-;;:::i;1672:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2735:166:15:-;2818:4;2834:39;686:10:4;2857:7:15;2866:6;2834:8;:39::i;:::-;-1:-1:-1;2890:4:15;2735:166;;;;;:::o;3359:317::-;3465:4;3481:36;3491:6;3499:9;3510:6;3481:9;:36::i;:::-;3527:121;3536:6;686:10:4;3558:89:15;3596:6;3558:89;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;686:10:4;3578:12:15;3558:33;;;;;;;;;;;;;-1:-1:-1;3558:33:15;;;:89;:37;:89::i;:::-;3527:8;:121::i;:::-;-1:-1:-1;3665:4:15;3359:317;;;;;:::o;4709:223:20:-;4800:12;;;;:6;:12;;;;;:22;;;4792:45;;686:10:4;3015:137:20;:::i;4792:45::-;4784:105;;;;;;;6799:2:39;4784:105:20;;;6781:21:39;6838:2;6818:18;;;6811:30;6877:34;6857:18;;;6850:62;6948:17;6928:18;;;6921:45;6983:19;;4784:105:20;;;;;;;;;4900:25;4911:4;4917:7;4900:10;:25::i;:::-;4709:223;;:::o;2519:113:19:-;2579:7;2605:20;:18;:20::i;:::-;2598:27;;2519:113;:::o;5883:205:20:-;5969:23;;;686:10:4;5969:23:20;5961:83;;;;;;;7215:2:39;5961:83:20;;;7197:21:39;7254:2;7234:18;;;7227:30;7293:34;7273:18;;;7266:62;7364:17;7344:18;;;7337:45;7399:19;;5961:83:20;7013:411:39;5961:83:20;6055:26;6067:4;6073:7;6055:11;:26::i;4071:215:15:-;686:10:4;4159:4:15;4207:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;4159:4;;4175:83;;4198:7;;4207:50;;4246:10;4207:38;:50::i;3469:86:12:-;2132:32;1976:24;2153:10;2132:7;:32::i;:::-;2124:96;;;;;;;7631:2:39;2124:96:12;;;7613:21:39;7670:2;7650:18;;;7643:30;7709:34;7689:18;;;7682:62;7780:21;7760:18;;;7753:49;7819:19;;2124:96:12;7429:415:39;2124:96:12;3534:17:::1;3540:2;3544:6;3534:5;:17::i;6792:89:15:-:0;6847:27;686:10:4;6867:6:15;6847:5;:27::i;:::-;6792:89;:::o;2970:170:12:-;2427:32;1911:24;2448:10;2427:7;:32::i;:::-;2419:69;;;;;;;8051:2:39;2419:69:12;;;8033:21:39;8090:2;8070:18;;;8063:30;8129:26;8109:18;;;8102:54;8173:18;;2419:69:12;7849:348:39;2419:69:12;3064:12;;::::1;::::0;:4:::1;::::0;:12:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;3080:16:12;;::::1;::::0;:6:::1;::::0;:16:::1;::::0;::::1;::::0;::::1;:::i;:::-;;3106:30;3123:4;3129:6;3106:30;;;;;;;:::i;:::-;;;;;;;;2970:170:::0;;:::o;7185:290:15:-;7261:26;7290:84;7327:6;7290:84;;;;;;;;;;;;;;;;;:32;7300:7;686:10:4;2408:149:15;:::i;7290:32::-;:36;:84;:36;:84::i;:::-;7261:113;-1:-1:-1;7385:51:15;7394:7;686:10:4;7417:18:15;7385:8;:51::i;:::-;7446:22;7452:7;7461:6;7446:5;:22::i;:::-;7251:224;7185:290;;:::o;2269:126:19:-;2364:14;;;2338:7;2364:14;;;:7;:14;;;;;864::1;2364:24:19;773:112:1;4030:136:20;4103:7;4129:12;;;:6;:12;;;;;:30;;4153:5;4129:23;:30::i;:::-;4122:37;4030:136;-1:-1:-1;;;4030:136:20:o;3015:137::-;3084:4;3107:12;;;:6;:12;;;;;:38;;3137:7;3107:29;:38::i;1649:20:12:-;;;;;;;:::i;4773:266:15:-;4866:4;4882:129;686:10:4;4905:7:15;4914:96;4953:15;4914:96;;;;;;;;;;;;;;;;;686:10:4;4914:25:15;;;;:11;:25;;;;;;;;;:34;;;;;;;;;;;;:38;:96::i;3941:179:12:-;2280:20;;2265:58;;;;;2312:10;2265:58;;;4854:74:39;2280:20:12;;;;;2265:46;;4827:18:39;;2265:58:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2257:124;;;;;;;10372:2:39;2257:124:12;;;10354:21:39;10411:2;10391:18;;;10384:30;10450:34;10430:18;;;10423:62;10521:23;10501:18;;;10494:51;10562:19;;2257:124:12;10170:417:39;2257:124:12;4025:36:::1;4041:9;4052:8;4025:15;:36::i;:::-;4070:46;::::0;1628:25:39;;;4100:4:12::1;::::0;4070:46:::1;::::0;::::1;::::0;::::1;::::0;1616:2:39;1601:18;4070:46:12::1;;;;;;;;3941:179:::0;;:::o;2178:172:15:-;2264:4;2280:42;686:10:4;2304:9:15;2315:6;2280:9;:42::i;3703:170:12:-;2280:20;;2265:58;;;;;2312:10;2265:58;;;4854:74:39;2280:20:12;;;;;2265:46;;4827:18:39;;2265:58:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2257:124;;;;;;;10372:2:39;2257:124:12;;;10354:21:39;10411:2;10391:18;;;10384:30;10450:34;10430:18;;;10423:62;10521:23;10501:18;;;10494:51;10562:19;;2257:124:12;10170:417:39;2257:124:12;3782:32:::1;3794:9;3805:8;3782:11;:32::i;:::-;3823:46;::::0;1628:25:39;;;3823:46:12::1;::::0;::::1;::::0;3842:4:::1;::::0;3823:46:::1;::::0;1616:2:39;1601:18;3823:46:12::1;1482:177:39::0;3320:125:20;3383:7;3409:12;;;:6;:12;;;;;:29;;:27;:29::i;1582:626:19:-;1817:8;1798:15;:27;;1790:69;;;;;;;10794:2:39;1790:69:19;;;10776:21:39;10833:2;10813:18;;;10806:30;10872:31;10852:18;;;10845:59;10921:18;;1790:69:19;10592:353:39;1790:69:19;1870:18;1912:16;1930:5;1937:7;1946:5;1953:16;1963:5;1953:9;:16::i;:::-;1901:79;;;;;;11237:25:39;;;;11281:42;11359:15;;;11339:18;;;11332:43;11411:15;;;;11391:18;;;11384:43;11443:18;;;11436:34;11486:19;;;11479:35;11530:19;;;11523:35;;;11209:19;;1901:79:19;;;;;;;;;;;;1891:90;;;;;;1870:111;;1992:12;2007:28;2024:10;2007:16;:28::i;:::-;1992:43;;2046:14;2063:28;2077:4;2083:1;2086;2089;2063:13;:28::i;:::-;2046:45;;2119:5;2109:15;;:6;:15;;;2101:58;;;;;;;11771:2:39;2101:58:19;;;11753:21:39;11810:2;11790:18;;;11783:30;11849:32;11829:18;;;11822:60;11899:18;;2101:58:19;11569:354:39;2101:58:19;2170:31;2179:5;2186:7;2195:5;2170:8;:31::i;:::-;1780:428;;;1582:626;;;;;;;:::o;5166:226:20:-;5258:12;;;;:6;:12;;;;;:22;;;5250:45;;686:10:4;3015:137:20;:::i;5250:45::-;5242:106;;;;;;;12130:2:39;5242:106:20;;;12112:21:39;12169:2;12149:18;;;12142:30;12208:34;12188:18;;;12181:62;12279:18;12259;;;12252:46;12315:19;;5242:106:20;11928:412:39;3143:271:12;2427:32;1911:24;2448:10;2427:7;:32::i;:::-;2419:69;;;;;;;8051:2:39;2419:69:12;;;8033:21:39;8090:2;8070:18;;;8063:30;8129:26;8109:18;;;8102:54;8173:18;;2419:69:12;7849:348:39;2419:69:12;3234:35:::1;::::0;::::1;3226:90;;;::::0;::::1;::::0;;12547:2:39;3226:90:12::1;::::0;::::1;12529:21:39::0;12586:2;12566:18;;;12559:30;12625:34;12605:18;;;12598:62;12696:12;12676:18;;;12669:40;12726:19;;3226:90:12::1;12345:406:39::0;3226:90:12::1;3321:20;:44:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;3375:35:::1;::::0;4854:74:39;;;3375:35:12::1;::::0;4842:2:39;4827:18;3375:35:12::1;;;;;;;3143:271:::0;:::o;868:176:23:-;926:7;;957:5;961:1;957;:5;:::i;:::-;945:17;;985:1;980;:6;;972:46;;;;;;;13280:2:39;972:46:23;;;13262:21:39;13319:2;13299:18;;;13292:30;13358:29;13338:18;;;13331:57;13405:18;;972:46:23;13078:351:39;4866:141:38;4936:4;4959:41;4964:3;4976:23;4984:14;;;;4976:23;4959:4;:41::i;8630:340:15:-;8731:19;;;8723:68;;;;;;;13636:2:39;8723:68:15;;;13618:21:39;13675:2;13655:18;;;13648:30;13714:34;13694:18;;;13687:62;13785:6;13765:18;;;13758:34;13809:19;;8723:68:15;13434:400:39;8723:68:15;8809:21;;;8801:68;;;;;;;14041:2:39;8801:68:15;;;14023:21:39;14080:2;14060:18;;;14053:30;14119:34;14099:18;;;14092:62;14190:4;14170:18;;;14163:32;14212:19;;8801:68:15;13839:398:39;8801:68:15;8880:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8931:32;;1628:25:39;;;8931:32:15;;1601:18:39;8931:32:15;;;;;;;;8630:340;;;:::o;5513:530::-;5618:20;;;5610:70;;;;;;;14444:2:39;5610:70:15;;;14426:21:39;14483:2;14463:18;;;14456:30;14522:34;14502:18;;;14495:62;14593:7;14573:18;;;14566:35;14618:19;;5610:70:15;14242:401:39;5610:70:15;5698:23;;;5690:71;;;;;;;14850:2:39;5690:71:15;;;14832:21:39;14889:2;14869:18;;;14862:30;14928:34;14908:18;;;14901:62;14999:5;14979:18;;;14972:33;15022:19;;5690:71:15;14648:399:39;5690:71:15;5850;5872:6;5850:71;;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;5830:17;;;;:9;:17;;;;;;;;;;;:91;;;;5954:20;;;;;;;:32;;5979:6;5954:24;:32::i;:::-;5931:20;;;;:9;:20;;;;;;;;;;;;:55;;;;6001:35;1628:25:39;;;5931:20:15;;6001:35;;;;;;1601:18:39;6001:35:15;1482:177:39;1766:187:23;1852:7;1887:12;1879:6;;;;1871:29;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1910:9:23;1922:5;1926:1;1922;:5;:::i;:::-;1910:17;1766:187;-1:-1:-1;;;;;1766:187:23:o;7090:184:20:-;7163:12;;;;:6;:12;;;;;:33;;7188:7;7163:24;:33::i;:::-;7159:109;;;7217:40;;686:10:4;;7217:40:20;;;;7229:4;;7217:40;;;;;7090:184;;:::o;2990:275:3:-;3043:7;3083:16;3066:13;:33;3062:197;;;-1:-1:-1;3122:24:3;;2990:275::o;3062:197::-;-1:-1:-1;3447:73:3;;;3206:10;3447:73;;;;17765:25:39;;;;3218:12:3;17806:18:39;;;17799:34;3232:15:3;17849:18:39;;;17842:34;3491:13:3;17892:18:39;;;17885:34;3514:4:3;17935:19:39;;;;17928:84;;;;3447:73:3;;;;;;;;;;17737:19:39;;;;3447:73:3;;;3437:84;;;;;;2519:113:19:o;7280:188:20:-;7354:12;;;;:6;:12;;;;;:36;;7382:7;7354:27;:36::i;:::-;7350:112;;;7411:40;;686:10:4;;7411:40:20;;;;7423:4;;7411:40;;;;;7280:188;;:::o;6313:370:15:-;6396:21;;;6388:65;;;;;;;15384:2:39;6388:65:15;;;15366:21:39;15423:2;15403:18;;;15396:30;15462:33;15442:18;;;15435:61;15513:18;;6388:65:15;15182:355:39;6388:65:15;6539:12;;:24;;6556:6;6539:16;:24::i;:::-;6524:12;:39;6594:18;;;:9;:18;;;;;;;;;;;:30;;6617:6;6594:22;:30::i;:::-;6573:18;;;:9;:18;;;;;;;;;;;:51;;;;6639:37;;1628:25:39;;;6573:18:15;;:9;;6639:37;;1601:18:39;6639:37:15;1482:177:39;7795:410:15;7878:21;;;7870:67;;;;;;;15744:2:39;7870:67:15;;;15726:21:39;15783:2;15763:18;;;15756:30;15822:34;15802:18;;;15795:62;15893:3;15873:18;;;15866:31;15914:19;;7870:67:15;15542:397:39;7870:67:15;8029:68;8052:6;8029:68;;;;;;;;;;;;;;;;;:18;;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;8008:18;;;:9;:18;;;;;;;;;;:89;8122:12;;:24;;8139:6;8122:16;:24::i;:::-;8107:12;:39;8161:37;;1628:25:39;;;8187:1:15;;8161:37;;;;;;1616:2:39;1601:18;8161:37:15;1482:177:39;6087:147:38;6161:7;6203:22;6207:3;6219:5;6203:3;:22::i;:::-;6187:40;;;6087:147;-1:-1:-1;;;6087:147:38:o;5403:156::-;5536:14;;;;5528:23;;5483:4;3874:19;;;:12;;;:19;;;;;;:24;;5506:46;3778:127;9148:237:15;9227:22;9233:7;9242:6;9227:5;:22::i;:::-;9259:119;9268:7;686:10:4;9291:86:15;9330:6;9291:86;;;;;;;;;;;;;;;;;:20;;;;;;;:11;:20;;;;;;686:10:4;9312:12:15;591:113:4;5640:115:38;5703:7;5729:19;5737:3;4068:18;;3986:107;2763:203:19;2883:14;;;2823:15;2883:14;;;:7;:14;;;;;864::1;;996:1;978:19;;;;864:14;2942:17:19;2840:126;2763:203;;;:::o;4153:165:3:-;4230:7;4256:55;4278:20;:18;:20::i;:::-;4300:10;5774:57:2;;18885:66:39;5774:57:2;;;18873:79:39;18968:11;;;18961:27;;;19004:12;;;18997:28;;;5738:7:2;;19041:12:39;;5774:57:2;;;;;;;;;;;;5764:68;;;;;;5757:75;;5645:194;;;;;3265:1486;3388:7;4316:66;4302:80;;;4281:161;;;;;;;16146:2:39;4281:161:2;;;16128:21:39;16185:2;16165:18;;;16158:30;16224:34;16204:18;;;16197:62;16295:4;16275:18;;;16268:32;16317:19;;4281:161:2;15944:398:39;4281:161:2;4460:1;:7;;4465:2;4460:7;:18;;;;4471:1;:7;;4476:2;4471:7;4460:18;4452:65;;;;;;;16549:2:39;4452:65:2;;;16531:21:39;16588:2;16568:18;;;16561:30;16627:34;16607:18;;;16600:62;16698:4;16678:18;;;16671:32;16720:19;;4452:65:2;16347:398:39;4452:65:2;4629:24;;;4612:14;4629:24;;;;;;;;;16977:25:39;;;17050:4;17038:17;;17018:18;;;17011:45;;;;17072:18;;;17065:34;;;17115:18;;;17108:34;;;4629:24:2;;16949:19:39;;4629:24:2;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4629:24:2;;;;;;-1:-1:-1;;4671:20:2;;;4663:57;;;;;;;17355:2:39;4663:57:2;;;17337:21:39;17394:2;17374:18;;;17367:30;17433:26;17413:18;;;17406:54;17477:18;;4663:57:2;17153:348:39;1613:404:38;1676:4;3874:19;;;:12;;;:19;;;;;;1692:319;;-1:-1:-1;1734:23:38;;;;;;;;:11;:23;;;;;;;;;;;;;1914:18;;1892:19;;;:12;;;:19;;;;;;:40;;;;1946:11;;1692:319;-1:-1:-1;1995:5:38;1988:12;;5175:147;5248:4;5271:44;5279:3;5291:23;5299:14;;;;5291:23;5271:7;:44::i;1308:134:23:-;1366:7;1392:43;1396:1;1399;1392:43;;;;;;;;;;;;;;;;;:3;:43::i;4425:201:38:-;4519:18;;4492:7;;4519:26;-1:-1:-1;4511:73:38;;;;;;;18225:2:39;4511:73:38;;;18207:21:39;18264:2;18244:18;;;18237:30;18303:34;18283:18;;;18276:62;18374:4;18354:18;;;18347:32;18396:19;;4511:73:38;18023:398:39;4511:73:38;4601:3;:11;;4613:5;4601:18;;;;;;;;:::i;:::-;;;;;;;;;4594:25;;4425:201;;;;:::o;2185:1512::-;2251:4;2388:19;;;:12;;;:19;;;;;;2422:15;;2418:1273;;2779:21;2803:14;2816:1;2803:10;:14;:::i;:::-;2851:18;;2779:38;;-1:-1:-1;2831:17:38;;2851:22;;2872:1;;2851:22;:::i;:::-;2831:42;;3113:17;3133:3;:11;;3145:9;3133:22;;;;;;;;:::i;:::-;;;;;;;;;3113:42;;3276:9;3247:3;:11;;3259:13;3247:26;;;;;;;;:::i;:::-;;;;;;;;;;:38;3377:17;:13;3393:1;3377:17;:::i;:::-;3351:23;;;;:12;;;:23;;;;;:43;3500:17;;3351:3;;3500:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3592:3;:12;;:19;3605:5;3592:19;;;;;;;;;;;3585:26;;;3633:4;3626:11;;;;;;;;2418:1273;3675:5;3668:12;;;;;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;169:656:39;281:4;310:2;339;328:9;321:21;371:6;365:13;414:6;409:2;398:9;394:18;387:34;439:1;449:140;463:6;460:1;457:13;449:140;;;558:14;;;554:23;;548:30;524:17;;;543:2;520:26;513:66;478:10;;449:140;;;607:6;604:1;601:13;598:91;;;677:1;672:2;663:6;652:9;648:22;644:31;637:42;598:91;-1:-1:-1;741:2:39;729:15;746:66;725:88;710:104;;;;816:2;706:113;;169:656;-1:-1:-1;;;169:656:39:o;830:196::-;898:20;;958:42;947:54;;937:65;;927:93;;1016:1;1013;1006:12;927:93;830:196;;;:::o;1031:254::-;1099:6;1107;1160:2;1148:9;1139:7;1135:23;1131:32;1128:52;;;1176:1;1173;1166:12;1128:52;1199:29;1218:9;1199:29;:::i;:::-;1189:39;1275:2;1260:18;;;;1247:32;;-1:-1:-1;;;1031:254:39:o;1664:328::-;1741:6;1749;1757;1810:2;1798:9;1789:7;1785:23;1781:32;1778:52;;;1826:1;1823;1816:12;1778:52;1849:29;1868:9;1849:29;:::i;:::-;1839:39;;1897:38;1931:2;1920:9;1916:18;1897:38;:::i;:::-;1887:48;;1982:2;1971:9;1967:18;1954:32;1944:42;;1664:328;;;;;:::o;1997:180::-;2056:6;2109:2;2097:9;2088:7;2084:23;2080:32;2077:52;;;2125:1;2122;2115:12;2077:52;-1:-1:-1;2148:23:39;;1997:180;-1:-1:-1;1997:180:39:o;2364:254::-;2432:6;2440;2493:2;2481:9;2472:7;2468:23;2464:32;2461:52;;;2509:1;2506;2499:12;2461:52;2545:9;2532:23;2522:33;;2574:38;2608:2;2597:9;2593:18;2574:38;:::i;:::-;2564:48;;2364:254;;;;;:::o;2997:184::-;3049:77;3046:1;3039:88;3146:4;3143:1;3136:15;3170:4;3167:1;3160:15;3186:778;3229:5;3282:3;3275:4;3267:6;3263:17;3259:27;3249:55;;3300:1;3297;3290:12;3249:55;3336:6;3323:20;3362:18;3399:2;3395;3392:10;3389:36;;;3405:18;;:::i;:::-;3539:2;3533:9;3601:4;3593:13;;3444:66;3589:22;;;3613:2;3585:31;3581:40;3569:53;;;3637:18;;;3657:22;;;3634:46;3631:72;;;3683:18;;:::i;:::-;3723:10;3719:2;3712:22;3758:2;3750:6;3743:18;3804:3;3797:4;3792:2;3784:6;3780:15;3776:26;3773:35;3770:55;;;3821:1;3818;3811:12;3770:55;3885:2;3878:4;3870:6;3866:17;3859:4;3851:6;3847:17;3834:54;3932:1;3925:4;3920:2;3912:6;3908:15;3904:26;3897:37;3952:6;3943:15;;;;;;3186:778;;;;:::o;3969:543::-;4057:6;4065;4118:2;4106:9;4097:7;4093:23;4089:32;4086:52;;;4134:1;4131;4124:12;4086:52;4174:9;4161:23;4203:18;4244:2;4236:6;4233:14;4230:34;;;4260:1;4257;4250:12;4230:34;4283:50;4325:7;4316:6;4305:9;4301:22;4283:50;:::i;:::-;4273:60;;4386:2;4375:9;4371:18;4358:32;4342:48;;4415:2;4405:8;4402:16;4399:36;;;4431:1;4428;4421:12;4399:36;;4454:52;4498:7;4487:8;4476:9;4472:24;4454:52;:::i;:::-;4444:62;;;3969:543;;;;;:::o;4517:186::-;4576:6;4629:2;4617:9;4608:7;4604:23;4600:32;4597:52;;;4645:1;4642;4635:12;4597:52;4668:29;4687:9;4668:29;:::i;4939:248::-;5007:6;5015;5068:2;5056:9;5047:7;5043:23;5039:32;5036:52;;;5084:1;5081;5074:12;5036:52;-1:-1:-1;;5107:23:39;;;5177:2;5162:18;;;5149:32;;-1:-1:-1;4939:248:39:o;5192:693::-;5303:6;5311;5319;5327;5335;5343;5351;5404:3;5392:9;5383:7;5379:23;5375:33;5372:53;;;5421:1;5418;5411:12;5372:53;5444:29;5463:9;5444:29;:::i;:::-;5434:39;;5492:38;5526:2;5515:9;5511:18;5492:38;:::i;:::-;5482:48;;5577:2;5566:9;5562:18;5549:32;5539:42;;5628:2;5617:9;5613:18;5600:32;5590:42;;5682:3;5671:9;5667:19;5654:33;5727:4;5720:5;5716:16;5709:5;5706:27;5696:55;;5747:1;5744;5737:12;5696:55;5192:693;;;;-1:-1:-1;5192:693:39;;;;5770:5;5822:3;5807:19;;5794:33;;-1:-1:-1;5874:3:39;5859:19;;;5846:33;;5192:693;-1:-1:-1;;5192:693:39:o;5890:260::-;5958:6;5966;6019:2;6007:9;5998:7;5994:23;5990:32;5987:52;;;6035:1;6032;6025:12;5987:52;6058:29;6077:9;6058:29;:::i;:::-;6048:39;;6106:38;6140:2;6129:9;6125:18;6106:38;:::i;6155:437::-;6234:1;6230:12;;;;6277;;;6298:61;;6352:4;6344:6;6340:17;6330:27;;6298:61;6405:2;6397:6;6394:14;6374:18;6371:38;6368:218;;;6442:77;6439:1;6432:88;6543:4;6540:1;6533:15;6571:4;6568:1;6561:15;8328:1157;8413:12;;8378:3;;8468:1;8488:18;;;;8541;;;;8568:61;;8622:4;8614:6;8610:17;8600:27;;8568:61;8648:2;8696;8688:6;8685:14;8665:18;8662:38;8659:218;;;8733:77;8730:1;8723:88;8834:4;8831:1;8824:15;8862:4;8859:1;8852:15;8659:218;101:19;;;153:4;144:14;;8963:18;8990:162;;;;9166:1;9161:318;;;;8956:523;;8990:162;9040:66;9029:9;9025:82;9018:5;9011:97;9139:2;9132:5;9128:14;9121:21;;8990:162;;9161:318;8275:1;8268:14;;;8312:4;8299:18;;9255:1;9269:167;9283:6;9280:1;9277:13;9269:167;;;9363:14;;9348:13;;;9341:37;9406:16;;;;9298:10;;9269:167;;;9456:13;;;-1:-1:-1;;8956:523:39;;;;;;;;8328:1157;;;;:::o;9490:393::-;9681:2;9670:9;9663:21;9644:4;9707:53;9756:2;9745:9;9741:18;9733:6;9707:53;:::i;:::-;9808:9;9800:6;9796:22;9791:2;9780:9;9776:18;9769:50;9836:41;9870:6;9862;9836:41;:::i;9888:277::-;9955:6;10008:2;9996:9;9987:7;9983:23;9979:32;9976:52;;;10024:1;10021;10014:12;9976:52;10056:9;10050:16;10109:5;10102:13;10095:21;10088:5;10085:32;10075:60;;10131:1;10128;10121:12;12756:184;12808:77;12805:1;12798:88;12905:4;12902:1;12895:15;12929:4;12926:1;12919:15;12945:128;12985:3;13016:1;13012:6;13009:1;13006:13;13003:39;;;13022:18;;:::i;:::-;-1:-1:-1;13058:9:39;;12945:128::o;15052:125::-;15092:4;15120:1;15117;15114:8;15111:34;;;15125:18;;:::i;:::-;-1:-1:-1;15162:9:39;;15052:125::o;18426:184::-;18478:77;18475:1;18468:88;18575:4;18572:1;18565:15;18599:4;18596:1;18589:15;19064:184;19116:77;19113:1;19106:88;19213:4;19210:1;19203:15;19237:4;19234:1;19227:15" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "2072600", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "DEFAULT_ADMIN_ROLE()": "284", + "DOMAIN_SEPARATOR()": "infinite", + "MINTER_ROLE()": "284", + "TRUSTY_ROLE()": "307", + "allowance(address,address)": "infinite", + "approve(address,uint256)": "24619", + "balanceOf(address)": "2627", + "burn(uint256)": "infinite", + "burnFrom(address,uint256)": "infinite", + "decimals()": "294", + "decreaseAllowance(address,uint256)": "infinite", + "dei_contract_address()": "2403", + "genesis_supply()": "262", + "getRoleAdmin(bytes32)": "2490", + "getRoleMember(bytes32,uint256)": "7017", + "getRoleMemberCount(bytes32)": "infinite", + "grantRole(bytes32,address)": "infinite", + "hasRole(bytes32,address)": "infinite", + "increaseAllowance(address,uint256)": "27042", + "mint(address,uint256)": "infinite", + "name()": "infinite", + "nonces(address)": "2615", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "infinite", + "pool_burn_from(address,uint256)": "infinite", + "pool_mint(address,uint256)": "infinite", + "renounceRole(bytes32,address)": "infinite", + "revokeRole(bytes32,address)": "infinite", + "setDEIAddress(address)": "infinite", + "setNameAndSymbol(string,string)": "infinite", + "symbol()": "infinite", + "totalSupply()": "2372", + "transfer(address,uint256)": "infinite", + "transferFrom(address,address,uint256)": "infinite" + } + }, + "methodIdentifiers": { + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "DOMAIN_SEPARATOR()": "3644e515", + "MINTER_ROLE()": "d5391393", + "TRUSTY_ROLE()": "34ddb95d", + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "burn(uint256)": "42966c68", + "burnFrom(address,uint256)": "79cc6790", + "decimals()": "313ce567", + "decreaseAllowance(address,uint256)": "a457c2d7", + "dei_contract_address()": "83e2d870", + "genesis_supply()": "51e238e3", + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "increaseAllowance(address,uint256)": "39509351", + "mint(address,uint256)": "40c10f19", + "name()": "06fdde03", + "nonces(address)": "7ecebe00", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf", + "pool_burn_from(address,uint256)": "a8a778ae", + "pool_mint(address,uint256)": "b4f56b26", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "setDEIAddress(address)": "efa00736", + "setNameAndSymbol(string,string)": "5a446215", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_trusty_address\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"DEIAddressSet\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DEUSBurned\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DEUSMinted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"NameAndSymbolSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRUSTY_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dei_contract_address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesis_supply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"b_address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"b_amount\",\"type\":\"uint256\"}],\"name\":\"pool_burn_from\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"m_address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m_amount\",\"type\":\"uint256\"}],\"name\":\"pool_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dei_contract_address\",\"type\":\"address\"}],\"name\":\"setDEIAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"setNameAndSymbol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.approve(address spender, uint256 amount)\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for `accounts`'s tokens of at least `amount`.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/DEUS/DEUS.sol\":\"DEUSToken\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^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(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) 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\",\"keccak256\":\"0x3aab711a5f9a5a5a394191e928cc8258e8a243e855bb0275e7834f9686383277\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Counters.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary Counters {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0x78450f4e3b722cce467b21e285f72ce5eaf361e9ba9dd2241a413926246773cd\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n *\\n * Documentation for signature generation:\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n // Check the signature length\\n // - case 65: r,s,v signature (standard)\\n // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._\\n if (signature.length == 65) {\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n return recover(hash, v, r, s);\\n } else if (signature.length == 64) {\\n bytes32 r;\\n bytes32 vs;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n assembly {\\n r := mload(add(signature, 0x20))\\n vs := mload(add(signature, 0x40))\\n }\\n return recover(hash, r, vs);\\n } else {\\n revert(\\\"ECDSA: invalid signature length\\\");\\n }\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `r` and `vs` short-signature fields separately.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n *\\n * _Available since v4.2._\\n */\\n function recover(\\n bytes32 hash,\\n bytes32 r,\\n bytes32 vs\\n ) internal pure returns (address) {\\n bytes32 s;\\n uint8 v;\\n assembly {\\n s := and(vs, 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\\n v := add(shr(255, vs), 27)\\n }\\n return recover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `v`, `r` and `s` signature fields separately.\\n */\\n function recover(\\n bytes32 hash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal pure returns (address) {\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (281): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (282): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n require(\\n uint256(s) <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0,\\n \\\"ECDSA: invalid signature 's' value\\\"\\n );\\n require(v == 27 || v == 28, \\\"ECDSA: invalid signature 'v' value\\\");\\n\\n // If the signature is valid (and not malleable), return the signer address\\n address signer = ecrecover(hash, v, r, s);\\n require(signer != address(0), \\\"ECDSA: invalid signature\\\");\\n\\n return signer;\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Typed Data, created from a\\n * `domainSeparator` and a `structHash`. This produces hash corresponding\\n * to the one signed with the\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n * JSON-RPC method as part of EIP-712.\\n *\\n * See {recover}.\\n */\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n }\\n}\\n\",\"keccak256\":\"0x828774372910d18e7337bc31a288d786748af4cd9da80222467e486ed1d569ab\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./ECDSA.sol\\\";\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\\n *\\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\\n *\\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\\n * ({_hashTypedDataV4}).\\n *\\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\\n * the chain id to protect against replay attacks on an eventual fork of the chain.\\n *\\n * NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method\\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\\n *\\n * _Available since v3.4._\\n */\\nabstract contract EIP712 {\\n /* solhint-disable var-name-mixedcase */\\n // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to\\n // invalidate the cached domain separator if the chain id changes.\\n bytes32 private immutable _CACHED_DOMAIN_SEPARATOR;\\n uint256 private immutable _CACHED_CHAIN_ID;\\n\\n bytes32 private immutable _HASHED_NAME;\\n bytes32 private immutable _HASHED_VERSION;\\n bytes32 private immutable _TYPE_HASH;\\n\\n /* solhint-enable var-name-mixedcase */\\n\\n /**\\n * @dev Initializes the domain separator and parameter caches.\\n *\\n * The meaning of `name` and `version` is specified in\\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\\n *\\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\\n * - `version`: the current major version of the signing domain.\\n *\\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\\n * contract upgrade].\\n */\\n constructor(string memory name, string memory version) {\\n bytes32 hashedName = keccak256(bytes(name));\\n bytes32 hashedVersion = keccak256(bytes(version));\\n bytes32 typeHash = keccak256(\\n \\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"\\n );\\n _HASHED_NAME = hashedName;\\n _HASHED_VERSION = hashedVersion;\\n _CACHED_CHAIN_ID = block.chainid;\\n _CACHED_DOMAIN_SEPARATOR = _buildDomainSeparator(typeHash, hashedName, hashedVersion);\\n _TYPE_HASH = typeHash;\\n }\\n\\n /**\\n * @dev Returns the domain separator for the current chain.\\n */\\n function _domainSeparatorV4() internal view returns (bytes32) {\\n if (block.chainid == _CACHED_CHAIN_ID) {\\n return _CACHED_DOMAIN_SEPARATOR;\\n } else {\\n return _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION);\\n }\\n }\\n\\n function _buildDomainSeparator(\\n bytes32 typeHash,\\n bytes32 nameHash,\\n bytes32 versionHash\\n ) private view returns (bytes32) {\\n return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this)));\\n }\\n\\n /**\\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\\n * function returns the hash of the fully encoded EIP712 message for this domain.\\n *\\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\\n *\\n * ```solidity\\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\\n * keccak256(\\\"Mail(address to,string contents)\\\"),\\n * mailTo,\\n * keccak256(bytes(mailContents))\\n * )));\\n * address signer = ECDSA.recover(digest, signature);\\n * ```\\n */\\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\\n return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash);\\n }\\n}\\n\",\"keccak256\":\"0xba18d725602452307e5b278ed4566616c63792d89f3a0388a6f285428c26e681\",\"license\":\"MIT\"},\"contracts/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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 payable(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}\",\"keccak256\":\"0x60d51a32063a4975dbf9433d38f5849173527da72f007c38053274e06698cb54\",\"license\":\"MIT\"},\"contracts/DEI/IDEI.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\n\\ninterface IDEIStablecoin {\\n function name() external view returns (string memory);\\n function symbol() external view returns (string memory);\\n function totalSupply() external view returns (uint256);\\n function global_collateral_ratio() external view returns (uint256);\\n function dei_pools(address _address) external view returns (bool);\\n function dei_pools_array() external view returns (address[] memory);\\n function verify_price(bytes32 sighash, bytes[] calldata sigs) external view returns (bool);\\n function dei_info(uint256[] memory collat_usd_price) external view returns (uint256, uint256, uint256);\\n function getChainID() external view returns (uint256);\\n function globalCollateralValue(uint256[] memory collat_usd_price) external view returns (uint256);\\n function refreshCollateralRatio(uint deus_price, uint dei_price, uint256 expire_block, bytes[] calldata sigs) external;\\n function useGrowthRatio(bool _use_growth_ratio) external;\\n function setGrowthRatioBands(uint256 _GR_top_band, uint256 _GR_bottom_band) external;\\n function setPriceBands(uint256 _top_band, uint256 _bottom_band) external;\\n function activateDIP(bool _activate) external;\\n function pool_burn_from(address b_address, uint256 b_amount) external;\\n function pool_mint(address m_address, uint256 m_amount) external;\\n function addPool(address pool_address) external;\\n function removePool(address pool_address) external;\\n function setNameAndSymbol(string memory _name, string memory _symbol) external;\\n function setOracle(address _oracle) external;\\n function setDEIStep(uint256 _new_step) external;\\n function setReserveTracker(address _reserve_tracker_address) external;\\n function setRefreshCooldown(uint256 _new_cooldown) external;\\n function setDEUSAddress(address _deus_address) external;\\n function toggleCollateralRatio() external;\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x0c16e210870801fd11bac76f0cddbe1f61b19f18eb75a648144da3cba5f5f035\",\"license\":\"GPL-2.0-or-later\"},\"contracts/DEUS/DEUS.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity ^0.8.10;\\n\\n// =================================================================================================================\\n// _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| |\\n// _| _| _| _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| |\\n// _| _| _|_|_| _| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_|_|_| |\\n// _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| |\\n// _|_|_| _|_|_|_| _|_| _|_|_| _| _| _| _| _|_|_| _| _| _|_|_| _|_|_| |\\n// =================================================================================================================\\n// ========================= DEUS (DEUS) =========================\\n// ===============================================================\\n// DEUS Finance: https://github.com/DeusFinance\\n\\n// Primary Author(s)\\n// Travis Moore: https://github.com/FortisFortuna\\n// Jason Huan: https://github.com/jasonhuan\\n// Sam Kazemian: https://github.com/samkazemian\\n// Vahid Gh: https://github.com/vahid-dev\\n// SAYaghoubnejad: https://github.com/SAYaghoubnejad\\n\\n// Reviewer(s) / Contributor(s)\\n// Sam Sun: https://github.com/samczsun\\n\\nimport \\\"../DEI/IDEI.sol\\\";\\nimport \\\"../ERC20/draft-ERC20Permit.sol\\\";\\nimport \\\"../Governance/AccessControl.sol\\\";\\n\\ncontract DEUSToken is ERC20Permit, AccessControl {\\n\\n\\t/* ========== STATE VARIABLES ========== */\\n\\n\\tstring public symbol;\\n\\tstring public name;\\n\\tuint8 public constant decimals = 18;\\n\\n\\tuint256 public constant genesis_supply = 100e18; // genesis supply has been minted on ETH & Polygon\\n\\n\\taddress public dei_contract_address;\\n\\n\\tbytes32 public constant TRUSTY_ROLE = keccak256(\\\"TRUSTY_ROLE\\\");\\n\\tbytes32 public constant MINTER_ROLE = keccak256(\\\"MINTER_ROLE\\\");\\n\\n\\t/* ========== MODIFIERS ========== */\\n\\n\\n\\t// Note: Used by staking contracts to mint rewards\\n\\tmodifier onlyMinters() {\\n\\t\\trequire(hasRole(MINTER_ROLE, msg.sender), \\\"DEUS: Only minters are allowed to do this operation\\\");\\n\\t\\t_;\\n\\t}\\n\\n\\tmodifier onlyPools() {\\n\\t\\trequire(IDEIStablecoin(dei_contract_address).dei_pools(msg.sender), \\\"DEUS: Only dei pools are allowed to do this operation\\\");\\n\\t\\t_;\\n\\t}\\n\\n\\tmodifier onlyTrusty() {\\n\\t\\trequire(hasRole(TRUSTY_ROLE, msg.sender), \\\"DEUS: You are not trusty\\\");\\n\\t\\t_;\\n\\t}\\n\\n\\t/* ========== CONSTRUCTOR ========== */\\n\\n\\tconstructor(\\n\\t\\tstring memory _name,\\n\\t\\tstring memory _symbol,\\n\\t\\taddress _trusty_address\\n\\t) ERC20Permit(name) {\\n\\t\\trequire(_trusty_address != address(0), \\\"DEUS::constructor: zero address detected\\\"); \\n\\t\\tname = _name;\\n\\t\\tsymbol = _symbol;\\n\\t\\t_setupRole(DEFAULT_ADMIN_ROLE, _trusty_address);\\n\\t\\t_setupRole(TRUSTY_ROLE, _trusty_address);\\n\\t\\t_mint(_trusty_address, genesis_supply);\\n\\t}\\n\\n\\n\\t/* ========== RESTRICTED FUNCTIONS ========== */\\n\\n\\tfunction setNameAndSymbol(string memory _name, string memory _symbol) external onlyTrusty {\\n\\t\\tname = _name;\\n\\t\\tsymbol = _symbol;\\n\\n\\t\\temit NameAndSymbolSet(name, symbol);\\n\\t}\\n\\n\\tfunction setDEIAddress(address _dei_contract_address)\\n\\t\\texternal\\n\\t\\tonlyTrusty\\n\\t{\\n\\t\\trequire(_dei_contract_address != address(0), \\\"DEUS::setDEIAddress: Zero address detected\\\");\\n\\n\\t\\tdei_contract_address = _dei_contract_address;\\n\\n\\t\\temit DEIAddressSet(dei_contract_address);\\n\\t}\\n\\n\\t// Note: Used by staking contracts to mint rewards\\n\\tfunction mint(address to, uint256 amount) public onlyMinters {\\n\\t\\t_mint(to, amount);\\n\\t}\\n\\n\\t// This function is what other dei pools will call to mint new DEUS (similar to the DEI mint) and staking contracts can call this function too.\\n\\tfunction pool_mint(address m_address, uint256 m_amount) external onlyPools {\\n\\t\\tsuper._mint(m_address, m_amount);\\n\\t\\temit DEUSMinted(address(this), m_address, m_amount);\\n\\t}\\n\\n\\t// This function is what other dei pools will call to burn DEUS\\n\\tfunction pool_burn_from(address b_address, uint256 b_amount) external onlyPools {\\n\\t\\tsuper._burnFrom(b_address, b_amount);\\n\\t\\temit DEUSBurned(b_address, address(this), b_amount);\\n\\t}\\n\\n\\t/* ========== EVENTS ========== */\\n\\tevent DEUSBurned(address indexed from, address indexed to, uint256 amount);\\n\\tevent DEUSMinted(address indexed from, address indexed to, uint256 amount);\\n\\tevent DEIAddressSet(address addr);\\n\\tevent NameAndSymbolSet(string name, string symbol);\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0xb6eef931aba9a28e8a2459d321d3556481d0a06b654126a982b4d515b5a79d64\",\"license\":\"GPL-2.0-or-later\"},\"contracts/ERC20/ERC20Custom.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\n\\n// Due to compiling issues, _name, _symbol, and _decimals were removed\\n\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20Mintable}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * We have followed general OpenZeppelin guidelines: functions revert instead\\n * of returning `false` on failure. This behavior is nonetheless conventional\\n * and does not conflict with the expectations of ERC20 applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\ncontract ERC20Custom is Context, IERC20 {\\n using SafeMath for uint256;\\n\\n mapping (address => uint256) internal _balances;\\n\\n mapping (address => mapping (address => uint256)) internal _allowances;\\n\\n uint256 private _totalSupply;\\n\\n /**\\n * @dev See {IERC20-totalSupply}.\\n */\\n function totalSupply() public view override returns (uint256) {\\n return _totalSupply;\\n }\\n\\n /**\\n * @dev See {IERC20-balanceOf}.\\n */\\n function balanceOf(address account) public view override returns (uint256) {\\n return _balances[account];\\n }\\n\\n /**\\n * @dev See {IERC20-transfer}.\\n *\\n * Requirements:\\n *\\n * - `recipient` cannot be the zero address.\\n * - the caller must have a balance of at least `amount`.\\n */\\n function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\\n _transfer(_msgSender(), recipient, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-allowance}.\\n */\\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n return _allowances[owner][spender];\\n }\\n\\n /**\\n * @dev See {IERC20-approve}.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.approve(address spender, uint256 amount)\\n */\\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n _approve(_msgSender(), spender, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-transferFrom}.\\n *\\n * Emits an {Approval} event indicating the updated allowance. This is not\\n * required by the EIP. See the note at the beginning of {ERC20};\\n *\\n * Requirements:\\n * - `sender` and `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n * - the caller must have allowance for `sender`'s tokens of at least\\n * `amount`.\\n */\\n function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {\\n _transfer(sender, recipient, amount);\\n _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \\\"ERC20: transfer amount exceeds allowance\\\"));\\n return true;\\n }\\n\\n /**\\n * @dev Atomically increases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\\n return true;\\n }\\n\\n /**\\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `spender` must have allowance for the caller of at least\\n * `subtractedValue`.\\n */\\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \\\"ERC20: decreased allowance below zero\\\"));\\n return true;\\n }\\n\\n /**\\n * @dev Moves tokens `amount` from `sender` to `recipient`.\\n *\\n * This is internal function is equivalent to {transfer}, and can be used to\\n * e.g. implement automatic token fees, slashing mechanisms, etc.\\n *\\n * Emits a {Transfer} event.\\n *\\n * Requirements:\\n *\\n * - `sender` cannot be the zero address.\\n * - `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n */\\n function _transfer(address sender, address recipient, uint256 amount) internal virtual {\\n require(sender != address(0), \\\"ERC20: transfer from the zero address\\\");\\n require(recipient != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(sender, recipient, amount);\\n\\n _balances[sender] = _balances[sender].sub(amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n _balances[recipient] = _balances[recipient].add(amount);\\n emit Transfer(sender, recipient, amount);\\n }\\n\\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n * the total supply.\\n *\\n * Emits a {Transfer} event with `from` set to the zero address.\\n *\\n * Requirements\\n *\\n * - `to` cannot be the zero address.\\n */\\n function _mint(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n _beforeTokenTransfer(address(0), account, amount);\\n\\n _totalSupply = _totalSupply.add(amount);\\n _balances[account] = _balances[account].add(amount);\\n emit Transfer(address(0), account, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from the caller.\\n *\\n * See {ERC20-_burn}.\\n */\\n function burn(uint256 amount) public virtual {\\n _burn(_msgSender(), amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, deducting from the caller's\\n * allowance.\\n *\\n * See {ERC20-_burn} and {ERC20-allowance}.\\n *\\n * Requirements:\\n *\\n * - the caller must have allowance for `accounts`'s tokens of at least\\n * `amount`.\\n */\\n function burnFrom(address account, uint256 amount) public virtual {\\n uint256 decreasedAllowance = allowance(account, _msgSender()).sub(amount, \\\"ERC20: burn amount exceeds allowance\\\");\\n\\n _approve(account, _msgSender(), decreasedAllowance);\\n _burn(account, amount);\\n }\\n\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, reducing the\\n * total supply.\\n *\\n * Emits a {Transfer} event with `to` set to the zero address.\\n *\\n * Requirements\\n *\\n * - `account` cannot be the zero address.\\n * - `account` must have at least `amount` tokens.\\n */\\n function _burn(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n _beforeTokenTransfer(account, address(0), amount);\\n\\n _balances[account] = _balances[account].sub(amount, \\\"ERC20: burn amount exceeds balance\\\");\\n _totalSupply = _totalSupply.sub(amount);\\n emit Transfer(account, address(0), amount);\\n }\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\\n *\\n * This is internal function is equivalent to `approve`, and can be used to\\n * e.g. set automatic allowances for certain subsystems, etc.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `owner` cannot be the zero address.\\n * - `spender` cannot be the zero address.\\n */\\n function _approve(address owner, address spender, uint256 amount) internal virtual {\\n require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n _allowances[owner][spender] = amount;\\n emit Approval(owner, spender, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`.`amount` is then deducted\\n * from the caller's allowance.\\n *\\n * See {_burn} and {_approve}.\\n */\\n function _burnFrom(address account, uint256 amount) internal virtual {\\n _burn(account, amount);\\n _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, \\\"ERC20: burn amount exceeds allowance\\\"));\\n }\\n\\n /**\\n * @dev Hook that is called before any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of `from`'s tokens\\n * will be to transferred to `to`.\\n * - when `from` is zero, `amount` tokens will be minted for `to`.\\n * - when `to` is zero, `amount` of `from`'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:using-hooks.adoc[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }\\n}\",\"keccak256\":\"0xff03c1b74f9769a972c7a45f1876f8d14f02692d6994e23a2e61cb7b47f2dcc7\",\"license\":\"MIT\"},\"contracts/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {ERC20Detailed}.\\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\\n\",\"keccak256\":\"0x057bec1fafd7ca222117f41fcfb9c8dc1f61aa30e5a0222c981196e9113de7e6\",\"license\":\"MIT\"},\"contracts/ERC20/draft-ERC20Permit.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./ERC20Custom.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Counters.sol\\\";\\n\\n/**\\n * @dev Implementation 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 *\\n * _Available since v3.4._\\n */\\nabstract contract ERC20Permit is ERC20Custom, IERC20Permit, EIP712 {\\n using Counters for Counters.Counter;\\n\\n mapping(address => Counters.Counter) private _nonces;\\n\\n // solhint-disable-next-line var-name-mixedcase\\n bytes32 private immutable _PERMIT_TYPEHASH = keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\");\\n\\n /**\\n * @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\\\"1\\\"`.\\n *\\n * It's a good idea to use the same `name` that is defined as the ERC20 token name.\\n */\\n constructor(string memory name) EIP712(name, \\\"1\\\") {}\\n\\n /**\\n * @dev See {IERC20Permit-permit}.\\n */\\n function permit(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) public virtual override {\\n require(block.timestamp <= deadline, \\\"ERC20Permit: expired deadline\\\");\\n\\n bytes32 structHash = keccak256(abi.encode(_PERMIT_TYPEHASH, owner, spender, value, _useNonce(owner), deadline));\\n\\n bytes32 hash = _hashTypedDataV4(structHash);\\n\\n address signer = ECDSA.recover(hash, v, r, s);\\n require(signer == owner, \\\"ERC20Permit: invalid signature\\\");\\n\\n _approve(owner, spender, value);\\n }\\n\\n /**\\n * @dev See {IERC20Permit-nonces}.\\n */\\n function nonces(address owner) public view virtual override returns (uint256) {\\n return _nonces[owner].current();\\n }\\n\\n /**\\n * @dev See {IERC20Permit-DOMAIN_SEPARATOR}.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view override returns (bytes32) {\\n return _domainSeparatorV4();\\n }\\n\\n /**\\n * @dev \\\"Consume a nonce\\\": return the current value and increment.\\n *\\n * _Available since v4.1._\\n */\\n function _useNonce(address owner) internal virtual returns (uint256 current) {\\n Counters.Counter storage nonce = _nonces[owner];\\n current = nonce.current();\\n nonce.increment();\\n }\\n}\\n\",\"keccak256\":\"0xefbc2b0babe05f093cd2aae981fb80413601ffa53704fad7376cbdd14ee6d0ab\",\"license\":\"MIT\"},\"contracts/Governance/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Utils/EnumerableSet.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\nimport \\\"../Common/Context.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it.\\n */\\nabstract contract AccessControl is Context {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n using Address for address;\\n\\n struct RoleData {\\n EnumerableSet.AddressSet members;\\n bytes32 adminRole;\\n }\\n\\n mapping (bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; //bytes32(uint256(0x4B437D01b575618140442A4975db38850e3f8f5f) << 96);\\n\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view returns (bool) {\\n return _roles[role].members.contains(account);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view returns (uint256) {\\n return _roles[role].members.length();\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view returns (address) {\\n return _roles[role].members.at(index);\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to grant\\\");\\n\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to revoke\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) public virtual {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);\\n _roles[role].adminRole = adminRole;\\n }\\n\\n function _grantRole(bytes32 role, address account) private {\\n if (_roles[role].members.add(account)) {\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n function _revokeRole(bytes32 role, address account) private {\\n if (_roles[role].members.remove(account)) {\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x749b2c0e515a59c6d03cf4908a252ebc5d2b482ca3fd7ec997d1143c302f4e89\",\"license\":\"MIT\"},\"contracts/Math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\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\\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 * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\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 * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\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 * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (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) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts 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 * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts 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 * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\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}\",\"keccak256\":\"0x43a20f7cf4c4319f81450d53779455e88a7ab80bdfc43925156ed4083b74a180\",\"license\":\"MIT\"},\"contracts/Utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11 <0.9.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}\",\"keccak256\":\"0xe392046e85c78eea7d4c1237af52a5fc06c097b7a480ea4f20159670b4a582a4\",\"license\":\"MIT\"},\"contracts/Utils/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\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.0.0, only sets of type `address` (`AddressSet`) and `uint256`\\n * (`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 // 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(bytes20(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(bytes20(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(bytes20(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(bytes20(_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\",\"keccak256\":\"0x685f4133ba76f930e3761c1d1414d7f6e55dd40d58b4b210cb392662a6cbd27d\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 4937, + "contract": "contracts/DEUS/DEUS.sol:DEUSToken", + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 4943, + "contract": "contracts/DEUS/DEUS.sol:DEUSToken", + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))" + }, + { + "astId": 4945, + "contract": "contracts/DEUS/DEUS.sol:DEUSToken", + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256" + }, + { + "astId": 5851, + "contract": "contracts/DEUS/DEUS.sol:DEUSToken", + "label": "_nonces", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_address,t_struct(Counter)41_storage)" + }, + { + "astId": 6023, + "contract": "contracts/DEUS/DEUS.sol:DEUSToken", + "label": "_roles", + "offset": 0, + "slot": "4", + "type": "t_mapping(t_bytes32,t_struct(RoleData)6018_storage)" + }, + { + "astId": 4055, + "contract": "contracts/DEUS/DEUS.sol:DEUSToken", + "label": "symbol", + "offset": 0, + "slot": "5", + "type": "t_string_storage" + }, + { + "astId": 4057, + "contract": "contracts/DEUS/DEUS.sol:DEUSToken", + "label": "name", + "offset": 0, + "slot": "6", + "type": "t_string_storage" + }, + { + "astId": 4065, + "contract": "contracts/DEUS/DEUS.sol:DEUSToken", + "label": "dei_contract_address", + "offset": 0, + "slot": "7", + "type": "t_address" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_bytes32)dyn_storage": { + "base": "t_bytes32", + "encoding": "dynamic_array", + "label": "bytes32[]", + "numberOfBytes": "32" + }, + "t_bytes32": { + "encoding": "inplace", + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32", + "value": "t_mapping(t_address,t_uint256)" + }, + "t_mapping(t_address,t_struct(Counter)41_storage)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => struct Counters.Counter)", + "numberOfBytes": "32", + "value": "t_struct(Counter)41_storage" + }, + "t_mapping(t_address,t_uint256)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_mapping(t_bytes32,t_struct(RoleData)6018_storage)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => struct AccessControl.RoleData)", + "numberOfBytes": "32", + "value": "t_struct(RoleData)6018_storage" + }, + "t_mapping(t_bytes32,t_uint256)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_string_storage": { + "encoding": "bytes", + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressSet)11740_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.AddressSet", + "members": [ + { + "astId": 11739, + "contract": "contracts/DEUS/DEUS.sol:DEUSToken", + "label": "_inner", + "offset": 0, + "slot": "0", + "type": "t_struct(Set)11554_storage" + } + ], + "numberOfBytes": "64" + }, + "t_struct(Counter)41_storage": { + "encoding": "inplace", + "label": "struct Counters.Counter", + "members": [ + { + "astId": 40, + "contract": "contracts/DEUS/DEUS.sol:DEUSToken", + "label": "_value", + "offset": 0, + "slot": "0", + "type": "t_uint256" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)6018_storage": { + "encoding": "inplace", + "label": "struct AccessControl.RoleData", + "members": [ + { + "astId": 6015, + "contract": "contracts/DEUS/DEUS.sol:DEUSToken", + "label": "members", + "offset": 0, + "slot": "0", + "type": "t_struct(AddressSet)11740_storage" + }, + { + "astId": 6017, + "contract": "contracts/DEUS/DEUS.sol:DEUSToken", + "label": "adminRole", + "offset": 0, + "slot": "2", + "type": "t_bytes32" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Set)11554_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.Set", + "members": [ + { + "astId": 11549, + "contract": "contracts/DEUS/DEUS.sol:DEUSToken", + "label": "_values", + "offset": 0, + "slot": "0", + "type": "t_array(t_bytes32)dyn_storage" + }, + { + "astId": 11553, + "contract": "contracts/DEUS/DEUS.sol:DEUSToken", + "label": "_indexes", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ], + "numberOfBytes": "64" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/DEUS/IDEUS.sol": { + "IDEUSToken": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "b_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "b_amount", + "type": "uint256" + } + ], + "name": "pool_burn_from", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "m_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "m_amount", + "type": "uint256" + } + ], + "name": "pool_mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "dei_contract_address", + "type": "address" + } + ], + "name": "setDEIAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + } + ], + "name": "setNameAndSymbol", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "mint(address,uint256)": "40c10f19", + "name()": "06fdde03", + "pool_burn_from(address,uint256)": "a8a778ae", + "pool_mint(address,uint256)": "b4f56b26", + "setDEIAddress(address)": "efa00736", + "setNameAndSymbol(string,string)": "5a446215", + "symbol()": "95d89b41" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"b_address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"b_amount\",\"type\":\"uint256\"}],\"name\":\"pool_burn_from\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"m_address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m_amount\",\"type\":\"uint256\"}],\"name\":\"pool_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dei_contract_address\",\"type\":\"address\"}],\"name\":\"setDEIAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"setNameAndSymbol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/DEUS/IDEUS.sol\":\"IDEUSToken\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/DEUS/IDEUS.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\n\\ninterface IDEUSToken {\\n function name() external view returns (string memory);\\n function symbol() external view returns (string memory);\\n function pool_burn_from(address b_address, uint256 b_amount) external;\\n function pool_mint(address m_address, uint256 m_amount) external;\\n function mint(address to, uint256 amount) external;\\n function setDEIAddress(address dei_contract_address) external;\\n function setNameAndSymbol(string memory _name, string memory _symbol) external;\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x7be865a95630d427608efd14514c9875ed1a6d65e4b421eaf61c2d63f43b9eb7\",\"license\":\"GPL-2.0-or-later\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/ERC20/ERC20.sol": { + "ERC20": { + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "__name", + "type": "string" + }, + { + "internalType": "string", + "name": "__symbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20Mintable}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin guidelines: functions revert instead of returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.", + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "See {IERC20-allowance}." + }, + "approve(address,uint256)": { + "details": "See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.approve(address spender, uint256 amount)" + }, + "balanceOf(address)": { + "details": "See {IERC20-balanceOf}." + }, + "burn(uint256)": { + "details": "Destroys `amount` tokens from the caller. See {ERC20-_burn}." + }, + "burnFrom(address,uint256)": { + "details": "Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for `accounts`'s tokens of at least `amount`." + }, + "constructor": { + "details": "Sets the values for {name} and {symbol}, initializes {decimals} with a default value of 18. To select a different value for {decimals}, use {_setupDecimals}. All three of these values are immutable: they can only be set once during construction." + }, + "decimals()": { + "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." + }, + "decreaseAllowance(address,uint256)": { + "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`." + }, + "increaseAllowance(address,uint256)": { + "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address." + }, + "name()": { + "details": "Returns the name of the token." + }, + "symbol()": { + "details": "Returns the symbol of the token, usually a shorter version of the name." + }, + "totalSupply()": { + "details": "See {IERC20-totalSupply}." + }, + "transfer(address,uint256)": { + "details": "See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`." + }, + "transferFrom(address,address,uint256)": { + "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`." + } + }, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": { + "@_4403": { + "entryPoint": null, + "id": 4403, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_decode_string_fromMemory": { + "entryPoint": 305, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory": { + "entryPoint": 488, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "extract_byte_array_length": { + "entryPoint": 594, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "panic_error_0x41": { + "entryPoint": 283, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:1985:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "46:95:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "63:1:39", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "70:3:39", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "75:10:39", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "66:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "66:20:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "56:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "56:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "56:31:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "103:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "106:4:39", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "96:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "96:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "96:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "127:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "130:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "120:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "120:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "120:15:39" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "14:127:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "210:821:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "259:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "268:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "271:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "261:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "261:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "261:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "238:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "246:4:39", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "234:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "234:17:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "253:3:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "230:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "230:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "223:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "223:35:39" + }, + "nodeType": "YulIf", + "src": "220:55:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "284:23:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "300:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "294:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "294:13:39" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "288:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "316:28:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "334:2:39", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "338:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "330:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "330:10:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "342:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "326:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "326:18:39" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "320:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "367:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "369:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "369:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "369:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "359:2:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "363:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "356:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "356:10:39" + }, + "nodeType": "YulIf", + "src": "353:36:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "398:17:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "412:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "408:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "408:7:39" + }, + "variables": [ + { + "name": "_3", + "nodeType": "YulTypedName", + "src": "402:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "424:23:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "444:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "438:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "438:9:39" + }, + "variables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "428:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "456:71:39", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "478:6:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "502:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "506:4:39", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "498:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "498:13:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "513:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "494:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "494:22:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "518:2:39", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "490:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "490:31:39" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "523:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "486:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "486:40:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "474:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "474:53:39" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "460:10:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "586:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "588:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "588:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "588:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "545:10:39" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "557:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "542:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "542:18:39" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "565:10:39" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "577:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "562:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "562:22:39" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "539:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "539:46:39" + }, + "nodeType": "YulIf", + "src": "536:72:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "624:2:39", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "628:10:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "617:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "617:22:39" + }, + "nodeType": "YulExpressionStatement", + "src": "617:22:39" + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "655:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "663:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "648:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "648:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "648:18:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "675:14:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "685:4:39", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_4", + "nodeType": "YulTypedName", + "src": "679:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "735:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "744:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "747:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "737:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "737:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "737:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "712:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "720:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "708:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "708:15:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "725:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "704:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "704:24:39" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "730:3:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "701:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "701:33:39" + }, + "nodeType": "YulIf", + "src": "698:53:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "760:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "769:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "764:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "825:87:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "854:6:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "862:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "850:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "850:14:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "866:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "846:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "846:23:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "885:6:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "893:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "881:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "881:14:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "897:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "877:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "877:23:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "871:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "871:30:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "839:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "839:63:39" + }, + "nodeType": "YulExpressionStatement", + "src": "839:63:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "790:1:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "793:2:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "787:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "787:9:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "797:19:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "799:15:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "808:1:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "811:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "804:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "804:10:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "799:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "783:3:39", + "statements": [] + }, + "src": "779:133:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "942:59:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "971:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "979:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "967:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "967:15:39" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "984:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "963:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "963:24:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "989:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "956:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "956:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "956:35:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "927:1:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "930:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "924:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "924:9:39" + }, + "nodeType": "YulIf", + "src": "921:80:39" + }, + { + "nodeType": "YulAssignment", + "src": "1010:15:39", + "value": { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1019:6:39" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "1010:5:39" + } + ] + } + ] + }, + "name": "abi_decode_string_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "184:6:39", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "192:3:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "200:5:39", + "type": "" + } + ], + "src": "146:885:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1154:444:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1200:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1209:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1212:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1202:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1202:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1202:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1175:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1184:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1171:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1171:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1196:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1167:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1167:32:39" + }, + "nodeType": "YulIf", + "src": "1164:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1225:30:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1245:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1239:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "1239:16:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1229:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1264:28:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1282:2:39", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1286:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1278:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1278:10:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1290:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1274:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1274:18:39" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "1268:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1319:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1328:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1331:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1321:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1321:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1321:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1307:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "1315:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1304:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1304:14:39" + }, + "nodeType": "YulIf", + "src": "1301:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "1344:71:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1387:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1398:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1383:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1383:22:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1407:7:39" + } + ], + "functionName": { + "name": "abi_decode_string_fromMemory", + "nodeType": "YulIdentifier", + "src": "1354:28:39" + }, + "nodeType": "YulFunctionCall", + "src": "1354:61:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1344:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1424:41:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1450:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1461:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1446:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1446:18:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1440:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "1440:25:39" + }, + "variables": [ + { + "name": "offset_1", + "nodeType": "YulTypedName", + "src": "1428:8:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1494:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1503:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1506:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1496:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1496:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1496:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "1480:8:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "1490:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1477:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1477:16:39" + }, + "nodeType": "YulIf", + "src": "1474:36:39" + }, + { + "nodeType": "YulAssignment", + "src": "1519:73:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1562:9:39" + }, + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "1573:8:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1558:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1558:24:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1584:7:39" + } + ], + "functionName": { + "name": "abi_decode_string_fromMemory", + "nodeType": "YulIdentifier", + "src": "1529:28:39" + }, + "nodeType": "YulFunctionCall", + "src": "1529:63:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1519:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1112:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1123:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1135:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1143:6:39", + "type": "" + } + ], + "src": "1036:562:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1658:325:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1668:22:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1682:1:39", + "type": "", + "value": "1" + }, + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "1685:4:39" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "1678:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1678:12:39" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1668:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1699:38:39", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "1729:4:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1735:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1725:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1725:12:39" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "1703:18:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1776:31:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1778:27:39", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1792:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1800:4:39", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1788:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1788:17:39" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1778:6:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "1756:18:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1749:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1749:26:39" + }, + "nodeType": "YulIf", + "src": "1746:61:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1866:111:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1887:1:39", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1894:3:39", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1899:10:39", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1890:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1890:20:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1880:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1880:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1880:31:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1931:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1934:4:39", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1924:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1924:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1924:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1959:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1962:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1952:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1952:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1952:15:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "1822:18:39" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1845:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1853:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1842:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1842:14:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1819:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1819:38:39" + }, + "nodeType": "YulIf", + "src": "1816:161:39" + } + ] + }, + "name": "extract_byte_array_length", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "1638:4:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1647:6:39", + "type": "" + } + ], + "src": "1603:380:39" + } + ] + }, + "contents": "{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_string_fromMemory(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := mload(offset)\n let _2 := sub(shl(64, 1), 1)\n if gt(_1, _2) { panic_error_0x41() }\n let _3 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _1)\n let _4 := 0x20\n if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n let i := 0\n for { } lt(i, _1) { i := add(i, _4) }\n {\n mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n }\n if gt(i, _1)\n {\n mstore(add(add(memPtr, _1), _4), 0)\n }\n array := memPtr\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := mload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "60806040523480156200001157600080fd5b506040516200108d3803806200108d8339810160408190526200003491620001e8565b81516200004990600390602085019062000075565b5080516200005f90600490602084019062000075565b50506005805460ff19166012179055506200028f565b828054620000839062000252565b90600052602060002090601f016020900481019282620000a75760008555620000f2565b82601f10620000c257805160ff1916838001178555620000f2565b82800160010185558215620000f2579182015b82811115620000f2578251825591602001919060010190620000d5565b506200010092915062000104565b5090565b5b8082111562000100576000815560010162000105565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200014357600080fd5b81516001600160401b03808211156200016057620001606200011b565b604051601f8301601f19908116603f011681019082821181831017156200018b576200018b6200011b565b81604052838152602092508683858801011115620001a857600080fd5b600091505b83821015620001cc5785820183015181830184015290820190620001ad565b83821115620001de5760008385830101525b9695505050505050565b60008060408385031215620001fc57600080fd5b82516001600160401b03808211156200021457600080fd5b620002228683870162000131565b935060208501519150808211156200023957600080fd5b50620002488582860162000131565b9150509250929050565b600181811c908216806200026757607f821691505b602082108114156200028957634e487b7160e01b600052602260045260246000fd5b50919050565b610dee806200029f6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101d0578063a457c2d7146101d8578063a9059cbb146101eb578063dd62ed3e146101fe57600080fd5b806342966c681461017257806370a082311461018757806379cc6790146101bd57600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a578063395093511461015f57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610244565b6040516100f99190610ae4565b60405180910390f35b610115610110366004610b80565b6102d6565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610baa565b6102ec565b60055460405160ff90911681526020016100f9565b61011561016d366004610b80565b610362565b610185610180366004610be6565b6103a5565b005b610129610195366004610bff565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101856101cb366004610b80565b6103b2565b6100ec6103fe565b6101156101e6366004610b80565b61040d565b6101156101f9366004610b80565b610469565b61012961020c366004610c1a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461025390610c4d565b80601f016020809104026020016040519081016040528092919081815260200182805461027f90610c4d565b80156102cc5780601f106102a1576101008083540402835291602001916102cc565b820191906000526020600020905b8154815290600101906020018083116102af57829003601f168201915b5050505050905090565b60006102e3338484610476565b50600192915050565b60006102f984848461062f565b610358843361035385604051806060016040528060288152602001610d486028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602090815260408083203384529091529020549190610859565b610476565b5060019392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916102e391859061035390866108ad565b6103af338261092d565b50565b60006103e282604051806060016040528060248152602001610d70602491396103db863361020c565b9190610859565b90506103ef833383610476565b6103f9838361092d565b505050565b60606004805461025390610c4d565b60006102e3338461035385604051806060016040528060258152602001610d946025913933600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d1684529091529020549190610859565b60006102e333848461062f565b73ffffffffffffffffffffffffffffffffffffffff831661051d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166105c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610514565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166106d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610514565b73ffffffffffffffffffffffffffffffffffffffff8216610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610514565b6107bf81604051806060016040528060268152602001610d226026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610859565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546107fb90826108ad565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610622565b60008184841115610897576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105149190610ae4565b5060006108a48486610cd0565b95945050505050565b6000806108ba8385610ce7565b905083811015610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610514565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166109d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610514565b610a1a81604051806060016040528060228152602001610d006022913973ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020549190610859565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055600254610a4d9082610aa2565b60025560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600061092683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610859565b600060208083528351808285015260005b81811015610b1157858101830151858201604001528201610af5565b81811115610b23576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b7b57600080fd5b919050565b60008060408385031215610b9357600080fd5b610b9c83610b57565b946020939093013593505050565b600080600060608486031215610bbf57600080fd5b610bc884610b57565b9250610bd660208501610b57565b9150604084013590509250925092565b600060208284031215610bf857600080fd5b5035919050565b600060208284031215610c1157600080fd5b61092682610b57565b60008060408385031215610c2d57600080fd5b610c3683610b57565b9150610c4460208401610b57565b90509250929050565b600181811c90821680610c6157607f821691505b60208210811415610c9b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015610ce257610ce2610ca1565b500390565b60008219821115610cfa57610cfa610ca1565b50019056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f8f41df83324fe1a4cbabff272a02d5b798e1c83a21e4e426ec7cebbc8be6fbf64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x108D CODESIZE SUB DUP1 PUSH3 0x108D DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x1E8 JUMP JUMPDEST DUP2 MLOAD PUSH3 0x49 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x75 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x5F SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x75 JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP PUSH3 0x28F JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x83 SWAP1 PUSH3 0x252 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0xA7 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0xF2 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0xC2 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0xF2 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0xF2 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0xF2 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xD5 JUMP JUMPDEST POP PUSH3 0x100 SWAP3 SWAP2 POP PUSH3 0x104 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x100 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x105 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x160 JUMPI PUSH3 0x160 PUSH3 0x11B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x18B JUMPI PUSH3 0x18B PUSH3 0x11B JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x1CC JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0x1AD JUMP JUMPDEST DUP4 DUP3 GT ISZERO PUSH3 0x1DE JUMPI PUSH1 0x0 DUP4 DUP6 DUP4 ADD ADD MSTORE JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x1FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x222 DUP7 DUP4 DUP8 ADD PUSH3 0x131 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x239 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x248 DUP6 DUP3 DUP7 ADD PUSH3 0x131 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x267 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0x289 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xDEE DUP1 PUSH3 0x29F 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 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x42966C68 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x1D8 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x42966C68 EQ PUSH2 0x172 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x1BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x137 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x14A JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x102 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x125 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x244 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0xAE4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x115 PUSH2 0x110 CALLDATASIZE PUSH1 0x4 PUSH2 0xB80 JUMP JUMPDEST PUSH2 0x2D6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF9 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF9 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x145 CALLDATASIZE PUSH1 0x4 PUSH2 0xBAA JUMP JUMPDEST PUSH2 0x2EC JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF9 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x16D CALLDATASIZE PUSH1 0x4 PUSH2 0xB80 JUMP JUMPDEST PUSH2 0x362 JUMP JUMPDEST PUSH2 0x185 PUSH2 0x180 CALLDATASIZE PUSH1 0x4 PUSH2 0xBE6 JUMP JUMPDEST PUSH2 0x3A5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x129 PUSH2 0x195 CALLDATASIZE PUSH1 0x4 PUSH2 0xBFF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x185 PUSH2 0x1CB CALLDATASIZE PUSH1 0x4 PUSH2 0xB80 JUMP JUMPDEST PUSH2 0x3B2 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x3FE JUMP JUMPDEST PUSH2 0x115 PUSH2 0x1E6 CALLDATASIZE PUSH1 0x4 PUSH2 0xB80 JUMP JUMPDEST PUSH2 0x40D JUMP JUMPDEST PUSH2 0x115 PUSH2 0x1F9 CALLDATASIZE PUSH1 0x4 PUSH2 0xB80 JUMP JUMPDEST PUSH2 0x469 JUMP JUMPDEST PUSH2 0x129 PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0xC1A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x253 SWAP1 PUSH2 0xC4D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x27F SWAP1 PUSH2 0xC4D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2CC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2A1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2CC 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 0x2AF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E3 CALLER DUP5 DUP5 PUSH2 0x476 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F9 DUP5 DUP5 DUP5 PUSH2 0x62F JUMP JUMPDEST PUSH2 0x358 DUP5 CALLER PUSH2 0x353 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD48 PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x859 JUMP JUMPDEST PUSH2 0x476 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x2E3 SWAP2 DUP6 SWAP1 PUSH2 0x353 SWAP1 DUP7 PUSH2 0x8AD JUMP JUMPDEST PUSH2 0x3AF CALLER DUP3 PUSH2 0x92D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E2 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD70 PUSH1 0x24 SWAP2 CODECOPY PUSH2 0x3DB DUP7 CALLER PUSH2 0x20C JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x859 JUMP JUMPDEST SWAP1 POP PUSH2 0x3EF DUP4 CALLER DUP4 PUSH2 0x476 JUMP JUMPDEST PUSH2 0x3F9 DUP4 DUP4 PUSH2 0x92D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x253 SWAP1 PUSH2 0xC4D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E3 CALLER DUP5 PUSH2 0x353 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD94 PUSH1 0x25 SWAP2 CODECOPY CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x859 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E3 CALLER DUP5 DUP5 PUSH2 0x62F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x51D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x5C0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x514 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x6D2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x514 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x775 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x514 JUMP JUMPDEST PUSH2 0x7BF DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD22 PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x859 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x7FB SWAP1 DUP3 PUSH2 0x8AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE MLOAD DUP5 DUP2 MSTORE SWAP1 SWAP3 SWAP2 DUP7 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x622 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x897 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x514 SWAP2 SWAP1 PUSH2 0xAE4 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x8A4 DUP5 DUP7 PUSH2 0xCD0 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8BA DUP4 DUP6 PUSH2 0xCE7 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x926 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x514 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x9D0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x514 JUMP JUMPDEST PUSH2 0xA1A DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD00 PUSH1 0x22 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x859 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x2 SLOAD PUSH2 0xA4D SWAP1 DUP3 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x926 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x859 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB11 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xAF5 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xB23 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB9C DUP4 PUSH2 0xB57 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 0xBBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBC8 DUP5 PUSH2 0xB57 JUMP JUMPDEST SWAP3 POP PUSH2 0xBD6 PUSH1 0x20 DUP6 ADD PUSH2 0xB57 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x926 DUP3 PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC36 DUP4 PUSH2 0xB57 JUMP JUMPDEST SWAP2 POP PUSH2 0xC44 PUSH1 0x20 DUP5 ADD PUSH2 0xB57 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xC61 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xC9B JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0xCE2 JUMPI PUSH2 0xCE2 PUSH2 0xCA1 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xCFA JUMPI PUSH2 0xCFA PUSH2 0xCA1 JUMP JUMPDEST POP ADD SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x2062616C616E636545524332303A207472616E73 PUSH7 0x657220616D6F75 PUSH15 0x74206578636565647320616C6C6F77 PUSH2 0x6E63 PUSH6 0x45524332303A KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E74206578636565647320616C6C6F77616E63654552 NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x7358221220F8F4 SAR 0xF8 CALLER 0x24 INVALID BYTE 0x4C 0xBA 0xBF CALLCODE PUSH19 0xA02D5B798E1C83A21E4E426EC7CEBBC8BE6FBF PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "1333:10238:14:-:0;;;1974:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2050:14;;;;:5;;:14;;;;;:::i;:::-;-1:-1:-1;2074:18:14;;;;:7;;:18;;;;;:::i;:::-;-1:-1:-1;;2102:9:14;:14;;-1:-1:-1;;2102:14:14;2114:2;2102:14;;;-1:-1:-1;1333:10238:14;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1333:10238:14;;;-1:-1:-1;1333:10238:14;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:39;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:885;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:39;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:39;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;930:2;927:1;924:9;921:80;;;989:1;984:2;979;971:6;967:15;963:24;956:35;921:80;1019:6;146:885;-1:-1:-1;;;;;;146:885:39:o;1036:562::-;1135:6;1143;1196:2;1184:9;1175:7;1171:23;1167:32;1164:52;;;1212:1;1209;1202:12;1164:52;1239:16;;-1:-1:-1;;;;;1304:14:39;;;1301:34;;;1331:1;1328;1321:12;1301:34;1354:61;1407:7;1398:6;1387:9;1383:22;1354:61;:::i;:::-;1344:71;;1461:2;1450:9;1446:18;1440:25;1424:41;;1490:2;1480:8;1477:16;1474:36;;;1506:1;1503;1496:12;1474:36;;1529:63;1584:7;1573:8;1562:9;1558:24;1529:63;:::i;:::-;1519:73;;;1036:562;;;;;:::o;1603:380::-;1682:1;1678:12;;;;1725;;;1746:61;;1800:4;1792:6;1788:17;1778:27;;1746:61;1853:2;1845:6;1842:14;1822:18;1819:38;1816:161;;;1899:10;1894:3;1890:20;1887:1;1880:31;1934:4;1931:1;1924:15;1962:4;1959:1;1952:15;1816:161;;1603:380;;;:::o;:::-;1333:10238:14;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@_approve_4877": { + "entryPoint": 1142, + "id": 4877, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_beforeTokenTransfer_4918": { + "entryPoint": null, + "id": 4918, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_burn_4832": { + "entryPoint": 2349, + "id": 4832, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_msgSender_444": { + "entryPoint": null, + "id": 444, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_transfer_4675": { + "entryPoint": 1583, + "id": 4675, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@add_6728": { + "entryPoint": 2221, + "id": 6728, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@allowance_4493": { + "entryPoint": null, + "id": 4493, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@approve_4514": { + "entryPoint": 726, + "id": 4514, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@balanceOf_4454": { + "entryPoint": null, + "id": 4454, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@burnFrom_4776": { + "entryPoint": 946, + "id": 4776, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@burn_4743": { + "entryPoint": 933, + "id": 4743, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@decimals_4430": { + "entryPoint": null, + "id": 4430, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@decreaseAllowance_4609": { + "entryPoint": 1037, + "id": 4609, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@increaseAllowance_4580": { + "entryPoint": 866, + "id": 4580, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@name_4412": { + "entryPoint": 580, + "id": 4412, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@sub_6745": { + "entryPoint": 2722, + "id": 6745, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@sub_6773": { + "entryPoint": 2137, + "id": 6773, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@symbol_4421": { + "entryPoint": 1022, + "id": 4421, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@totalSupply_4440": { + "entryPoint": null, + "id": 4440, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@transferFrom_4552": { + "entryPoint": 748, + "id": 4552, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@transfer_4475": { + "entryPoint": 1129, + "id": 4475, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_address": { + "entryPoint": 2903, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 3071, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 3098, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_addresst_uint256": { + "entryPoint": 2986, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_addresst_uint256": { + "entryPoint": 2944, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": 3046, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 2788, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 3303, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 3280, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "extract_byte_array_length": { + "entryPoint": 3149, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 3233, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:5939:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "135:535:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "145:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "155:2:39", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "149:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "173:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "184:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "166:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "166:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "166:21:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "196:27:39", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "216:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "210:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "210:13:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "200:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "243:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "254:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "239:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "239:18:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "259:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "232:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "232:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "232:34:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "275:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "284:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "279:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "344:90:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "373:9:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "384:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "369:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "369:17:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "388:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "365:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "365:26:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "407:6:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "415:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "403:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "403:14:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "419:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "399:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "399:23:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "393:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "393:30:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "358:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "358:66:39" + }, + "nodeType": "YulExpressionStatement", + "src": "358:66:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "305:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "308:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "302:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "302:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "316:19:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "318:15:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "327:1:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "330:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "323:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "323:10:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "318:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "298:3:39", + "statements": [] + }, + "src": "294:140:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "468:66:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "497:9:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "508:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "493:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "493:22:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "517:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "489:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "489:31:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "522:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "482:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "482:42:39" + }, + "nodeType": "YulExpressionStatement", + "src": "482:42:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "449:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "452:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "446:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "446:13:39" + }, + "nodeType": "YulIf", + "src": "443:91:39" + }, + { + "nodeType": "YulAssignment", + "src": "543:121:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "559:9:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "578:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "586:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "574:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "574:15:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "591:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "570:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "570:88:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "555:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "555:104:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "661:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "551:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "551:113:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "543:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "104:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "115:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "126:4:39", + "type": "" + } + ], + "src": "14:656:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "724:147:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "734:29:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "756:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "743:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "743:20:39" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "734:5:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "849:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "858:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "861:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "851:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "851:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "851:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "785:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "796:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "803:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "792:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "792:54:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "782:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "782:65:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "775:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "775:73:39" + }, + "nodeType": "YulIf", + "src": "772:93:39" + } + ] + }, + "name": "abi_decode_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "703:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "714:5:39", + "type": "" + } + ], + "src": "675:196:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "963:167:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1009:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1018:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1021:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1011:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1011:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1011:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "984:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "993:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "980:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "980:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1005:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "976:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "976:32:39" + }, + "nodeType": "YulIf", + "src": "973:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "1034:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1063:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "1044:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "1044:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1034:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1082:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1109:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1120:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1105:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1105:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1092:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1092:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1082:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "921:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "932:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "944:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "952:6:39", + "type": "" + } + ], + "src": "876:254:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1230:92:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1240:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1252:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1263:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1248:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1248:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1240:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1282:9:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1307:6:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1300:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1300:14:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1293:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1293:22:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1275:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1275:41:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1275:41:39" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1199:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1210:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1221:4:39", + "type": "" + } + ], + "src": "1135:187:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1428:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1438:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1450:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1461:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1446:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1446:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1438:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1480:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1491:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1473:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1473:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1473:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1397:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1408:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1419:4:39", + "type": "" + } + ], + "src": "1327:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1613:224:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1659:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1668:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1671:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1661:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1661:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1661:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1634:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1643:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1630:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1630:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1655:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1626:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1626:32:39" + }, + "nodeType": "YulIf", + "src": "1623:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "1684:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1713:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "1694:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "1694:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1684:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1732:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1765:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1776:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1761:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1761:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "1742:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "1742:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1732:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1789:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1816:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1827:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1812:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1812:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1799:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1799:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "1789:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1563:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1574:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1586:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1594:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "1602:6:39", + "type": "" + } + ], + "src": "1509:328:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1939:87:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1949:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1961:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1972:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1957:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1957:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1949:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1991:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2006:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2014:4:39", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2002:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2002:17:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1984:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1984:36:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1984:36:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1908:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1919:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1930:4:39", + "type": "" + } + ], + "src": "1842:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2101:110:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2147:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2156:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2159:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2149:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2149:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2149:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2122:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2131:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2118:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2118:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2143:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2114:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2114:32:39" + }, + "nodeType": "YulIf", + "src": "2111:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "2172:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2195:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2182:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2182:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2172:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2067:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2078:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2090:6:39", + "type": "" + } + ], + "src": "2031:180:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2286:116:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2332:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2341:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2344:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2334:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2334:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2334:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2307:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2316:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2303:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2303:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2328:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2299:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2299:32:39" + }, + "nodeType": "YulIf", + "src": "2296:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "2357:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2386:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "2367:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "2367:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2357:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2252:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2263:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2275:6:39", + "type": "" + } + ], + "src": "2216:186:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2494:173:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2540:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2549:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2552:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2542:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2542:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2542:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2515:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2524:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2511:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2511:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2536:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2507:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2507:32:39" + }, + "nodeType": "YulIf", + "src": "2504:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "2565:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2594:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "2575:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "2575:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2565:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2613:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2646:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2657:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2642:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2642:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "2623:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "2623:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2613:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2452:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2463:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2475:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2483:6:39", + "type": "" + } + ], + "src": "2407:260:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2727:382:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2737:22:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2751:1:39", + "type": "", + "value": "1" + }, + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "2754:4:39" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "2747:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2747:12:39" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2737:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2768:38:39", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "2798:4:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2804:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2794:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2794:12:39" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "2772:18:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2845:31:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2847:27:39", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2861:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2869:4:39", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2857:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2857:17:39" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2847:6:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "2825:18:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2818:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2818:26:39" + }, + "nodeType": "YulIf", + "src": "2815:61:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2935:168:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2956:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2959:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2949:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2949:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2949:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3057:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3060:4:39", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3050:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3050:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3050:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3085:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3088:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3078:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3078:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3078:15:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "2891:18:39" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2914:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2922:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2911:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2911:14:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "2888:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2888:38:39" + }, + "nodeType": "YulIf", + "src": "2885:218:39" + } + ] + }, + "name": "extract_byte_array_length", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "2707:4:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2716:6:39", + "type": "" + } + ], + "src": "2672:437:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3288:226:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3305:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3316:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3298:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3298:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3298:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3339:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3350:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3335:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3335:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3355:2:39", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3328:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3328:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3328:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3378:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3389:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3374:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3374:18:39" + }, + { + "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f20616464", + "kind": "string", + "nodeType": "YulLiteral", + "src": "3394:34:39", + "type": "", + "value": "ERC20: approve from the zero add" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3367:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3367:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3367:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3449:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3460:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3445:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3445:18:39" + }, + { + "hexValue": "72657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "3465:6:39", + "type": "", + "value": "ress" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3438:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3438:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3438:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "3481:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3493:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3504:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3489:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3489:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3481:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3265:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3279:4:39", + "type": "" + } + ], + "src": "3114:400:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3693:224:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3710:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3721:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3703:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3703:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3703:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3744:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3755:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3740:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3740:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3760:2:39", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3733:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3733:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3733:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3783:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3794:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3779:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3779:18:39" + }, + { + "hexValue": "45524332303a20617070726f766520746f20746865207a65726f206164647265", + "kind": "string", + "nodeType": "YulLiteral", + "src": "3799:34:39", + "type": "", + "value": "ERC20: approve to the zero addre" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3772:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3772:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3772:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3854:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3865:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3850:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3850:18:39" + }, + { + "hexValue": "7373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "3870:4:39", + "type": "", + "value": "ss" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3843:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3843:32:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3843:32:39" + }, + { + "nodeType": "YulAssignment", + "src": "3884:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3896:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3907:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3892:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3892:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3884:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3670:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3684:4:39", + "type": "" + } + ], + "src": "3519:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4096:227:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4113:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4124:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4106:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4106:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4106:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4147:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4158:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4143:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4143:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4163:2:39", + "type": "", + "value": "37" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4136:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4136:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4136:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4186:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4197:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4182:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4182:18:39" + }, + { + "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f206164", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4202:34:39", + "type": "", + "value": "ERC20: transfer from the zero ad" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4175:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4175:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4175:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4257:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4268:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4253:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4253:18:39" + }, + { + "hexValue": "6472657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4273:7:39", + "type": "", + "value": "dress" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4246:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4246:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4246:35:39" + }, + { + "nodeType": "YulAssignment", + "src": "4290:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4302:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4313:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4298:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4298:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4290:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4073:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4087:4:39", + "type": "" + } + ], + "src": "3922:401:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4502:225:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4519:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4530:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4512:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4512:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4512:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4553:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4564:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4549:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4549:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4569:2:39", + "type": "", + "value": "35" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4542:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4542:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4542:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4592:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4603:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4588:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4588:18:39" + }, + { + "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4608:34:39", + "type": "", + "value": "ERC20: transfer to the zero addr" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4581:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4581:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4581:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4663:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4674:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4659:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4659:18:39" + }, + { + "hexValue": "657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4679:5:39", + "type": "", + "value": "ess" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4652:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4652:33:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4652:33:39" + }, + { + "nodeType": "YulAssignment", + "src": "4694:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4706:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4717:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4702:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4702:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4694:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4479:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4493:4:39", + "type": "" + } + ], + "src": "4328:399:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4764:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4781:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4784:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4774:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4774:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4774:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4878:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4881:4:39", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4871:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4871:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4871:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4902:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4905:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4895:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4895:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4895:15:39" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "4732:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4970:76:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4992:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "4994:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "4994:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4994:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "4986:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "4989:1:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "4983:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "4983:8:39" + }, + "nodeType": "YulIf", + "src": "4980:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "5023:17:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "5035:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "5038:1:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5031:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5031:9:39" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "5023:4:39" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "4952:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "4955:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "4961:4:39", + "type": "" + } + ], + "src": "4921:125:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5099:80:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5126:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "5128:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "5128:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5128:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "5115:1:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "5122:1:39" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "5118:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5118:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "5112:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "5112:13:39" + }, + "nodeType": "YulIf", + "src": "5109:39:39" + }, + { + "nodeType": "YulAssignment", + "src": "5157:16:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "5168:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "5171:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5164:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5164:9:39" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "5157:3:39" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "5082:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "5085:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "5091:3:39", + "type": "" + } + ], + "src": "5051:128:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5358:177:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5375:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5386:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5368:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5368:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5368:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5409:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5420:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5405:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5405:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5425:2:39", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5398:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5398:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5398:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5448:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5459:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5444:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5444:18:39" + }, + { + "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77", + "kind": "string", + "nodeType": "YulLiteral", + "src": "5464:29:39", + "type": "", + "value": "SafeMath: addition overflow" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5437:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5437:57:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5437:57:39" + }, + { + "nodeType": "YulAssignment", + "src": "5503:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5515:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5526:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5511:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5511:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5503:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5335:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5349:4:39", + "type": "" + } + ], + "src": "5184:351:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5714:223:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5731:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5742:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5724:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5724:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5724:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5765:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5776:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5761:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5761:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5781:2:39", + "type": "", + "value": "33" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5754:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5754:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5754:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5804:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5815:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5800:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5800:18:39" + }, + { + "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f20616464726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "5820:34:39", + "type": "", + "value": "ERC20: burn from the zero addres" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5793:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5793:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5793:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5875:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5886:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5871:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5871:18:39" + }, + { + "hexValue": "73", + "kind": "string", + "nodeType": "YulLiteral", + "src": "5891:3:39", + "type": "", + "value": "s" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5864:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5864:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5864:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "5904:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5916:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5927:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5912:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5912:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5904:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5691:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5705:4:39", + "type": "" + } + ], + "src": "5540:397:39" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n if gt(i, length)\n {\n mstore(add(add(headStart, length), 64), 0)\n }\n tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n mstore(add(headStart, 96), \"ress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n mstore(add(headStart, 96), \"ss\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n mstore(add(headStart, 96), \"dress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 35)\n mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n mstore(add(headStart, 96), \"ess\")\n tail := add(headStart, 128)\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"SafeMath: addition overflow\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"ERC20: burn from the zero addres\")\n mstore(add(headStart, 96), \"s\")\n tail := add(headStart, 128)\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100df5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101d0578063a457c2d7146101d8578063a9059cbb146101eb578063dd62ed3e146101fe57600080fd5b806342966c681461017257806370a082311461018757806379cc6790146101bd57600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a578063395093511461015f57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610244565b6040516100f99190610ae4565b60405180910390f35b610115610110366004610b80565b6102d6565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610baa565b6102ec565b60055460405160ff90911681526020016100f9565b61011561016d366004610b80565b610362565b610185610180366004610be6565b6103a5565b005b610129610195366004610bff565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101856101cb366004610b80565b6103b2565b6100ec6103fe565b6101156101e6366004610b80565b61040d565b6101156101f9366004610b80565b610469565b61012961020c366004610c1a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461025390610c4d565b80601f016020809104026020016040519081016040528092919081815260200182805461027f90610c4d565b80156102cc5780601f106102a1576101008083540402835291602001916102cc565b820191906000526020600020905b8154815290600101906020018083116102af57829003601f168201915b5050505050905090565b60006102e3338484610476565b50600192915050565b60006102f984848461062f565b610358843361035385604051806060016040528060288152602001610d486028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602090815260408083203384529091529020549190610859565b610476565b5060019392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916102e391859061035390866108ad565b6103af338261092d565b50565b60006103e282604051806060016040528060248152602001610d70602491396103db863361020c565b9190610859565b90506103ef833383610476565b6103f9838361092d565b505050565b60606004805461025390610c4d565b60006102e3338461035385604051806060016040528060258152602001610d946025913933600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d1684529091529020549190610859565b60006102e333848461062f565b73ffffffffffffffffffffffffffffffffffffffff831661051d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166105c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610514565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166106d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610514565b73ffffffffffffffffffffffffffffffffffffffff8216610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610514565b6107bf81604051806060016040528060268152602001610d226026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610859565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546107fb90826108ad565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610622565b60008184841115610897576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105149190610ae4565b5060006108a48486610cd0565b95945050505050565b6000806108ba8385610ce7565b905083811015610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610514565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166109d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610514565b610a1a81604051806060016040528060228152602001610d006022913973ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020549190610859565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055600254610a4d9082610aa2565b60025560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600061092683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610859565b600060208083528351808285015260005b81811015610b1157858101830151858201604001528201610af5565b81811115610b23576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b7b57600080fd5b919050565b60008060408385031215610b9357600080fd5b610b9c83610b57565b946020939093013593505050565b600080600060608486031215610bbf57600080fd5b610bc884610b57565b9250610bd660208501610b57565b9150604084013590509250925092565b600060208284031215610bf857600080fd5b5035919050565b600060208284031215610c1157600080fd5b61092682610b57565b60008060408385031215610c2d57600080fd5b610c3683610b57565b9150610c4460208401610b57565b90509250929050565b600181811c90821680610c6157607f821691505b60208210811415610c9b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015610ce257610ce2610ca1565b500390565b60008219821115610cfa57610cfa610ca1565b50019056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f8f41df83324fe1a4cbabff272a02d5b798e1c83a21e4e426ec7cebbc8be6fbf64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x42966C68 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x1D8 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x42966C68 EQ PUSH2 0x172 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x1BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x137 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x14A JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x102 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x125 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x244 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0xAE4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x115 PUSH2 0x110 CALLDATASIZE PUSH1 0x4 PUSH2 0xB80 JUMP JUMPDEST PUSH2 0x2D6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF9 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF9 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x145 CALLDATASIZE PUSH1 0x4 PUSH2 0xBAA JUMP JUMPDEST PUSH2 0x2EC JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF9 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x16D CALLDATASIZE PUSH1 0x4 PUSH2 0xB80 JUMP JUMPDEST PUSH2 0x362 JUMP JUMPDEST PUSH2 0x185 PUSH2 0x180 CALLDATASIZE PUSH1 0x4 PUSH2 0xBE6 JUMP JUMPDEST PUSH2 0x3A5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x129 PUSH2 0x195 CALLDATASIZE PUSH1 0x4 PUSH2 0xBFF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x185 PUSH2 0x1CB CALLDATASIZE PUSH1 0x4 PUSH2 0xB80 JUMP JUMPDEST PUSH2 0x3B2 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x3FE JUMP JUMPDEST PUSH2 0x115 PUSH2 0x1E6 CALLDATASIZE PUSH1 0x4 PUSH2 0xB80 JUMP JUMPDEST PUSH2 0x40D JUMP JUMPDEST PUSH2 0x115 PUSH2 0x1F9 CALLDATASIZE PUSH1 0x4 PUSH2 0xB80 JUMP JUMPDEST PUSH2 0x469 JUMP JUMPDEST PUSH2 0x129 PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0xC1A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x253 SWAP1 PUSH2 0xC4D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x27F SWAP1 PUSH2 0xC4D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2CC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2A1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2CC 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 0x2AF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E3 CALLER DUP5 DUP5 PUSH2 0x476 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F9 DUP5 DUP5 DUP5 PUSH2 0x62F JUMP JUMPDEST PUSH2 0x358 DUP5 CALLER PUSH2 0x353 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD48 PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x859 JUMP JUMPDEST PUSH2 0x476 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x2E3 SWAP2 DUP6 SWAP1 PUSH2 0x353 SWAP1 DUP7 PUSH2 0x8AD JUMP JUMPDEST PUSH2 0x3AF CALLER DUP3 PUSH2 0x92D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E2 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD70 PUSH1 0x24 SWAP2 CODECOPY PUSH2 0x3DB DUP7 CALLER PUSH2 0x20C JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x859 JUMP JUMPDEST SWAP1 POP PUSH2 0x3EF DUP4 CALLER DUP4 PUSH2 0x476 JUMP JUMPDEST PUSH2 0x3F9 DUP4 DUP4 PUSH2 0x92D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x253 SWAP1 PUSH2 0xC4D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E3 CALLER DUP5 PUSH2 0x353 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD94 PUSH1 0x25 SWAP2 CODECOPY CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x859 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E3 CALLER DUP5 DUP5 PUSH2 0x62F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x51D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x5C0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x514 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x6D2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x514 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x775 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x514 JUMP JUMPDEST PUSH2 0x7BF DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD22 PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x859 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x7FB SWAP1 DUP3 PUSH2 0x8AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE MLOAD DUP5 DUP2 MSTORE SWAP1 SWAP3 SWAP2 DUP7 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x622 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x897 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x514 SWAP2 SWAP1 PUSH2 0xAE4 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x8A4 DUP5 DUP7 PUSH2 0xCD0 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8BA DUP4 DUP6 PUSH2 0xCE7 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x926 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x514 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x9D0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x514 JUMP JUMPDEST PUSH2 0xA1A DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD00 PUSH1 0x22 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x859 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x2 SLOAD PUSH2 0xA4D SWAP1 DUP3 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x926 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x859 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB11 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xAF5 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xB23 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB9C DUP4 PUSH2 0xB57 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 0xBBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBC8 DUP5 PUSH2 0xB57 JUMP JUMPDEST SWAP3 POP PUSH2 0xBD6 PUSH1 0x20 DUP6 ADD PUSH2 0xB57 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x926 DUP3 PUSH2 0xB57 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC36 DUP4 PUSH2 0xB57 JUMP JUMPDEST SWAP2 POP PUSH2 0xC44 PUSH1 0x20 DUP5 ADD PUSH2 0xB57 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xC61 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xC9B JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0xCE2 JUMPI PUSH2 0xCE2 PUSH2 0xCA1 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xCFA JUMPI PUSH2 0xCFA PUSH2 0xCA1 JUMP JUMPDEST POP ADD SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x2062616C616E636545524332303A207472616E73 PUSH7 0x657220616D6F75 PUSH15 0x74206578636565647320616C6C6F77 PUSH2 0x6E63 PUSH6 0x45524332303A KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E74206578636565647320616C6C6F77616E63654552 NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x7358221220F8F4 SAR 0xF8 CALLER 0x24 INVALID BYTE 0x4C 0xBA 0xBF CALLCODE PUSH19 0xA02D5B798E1C83A21E4E426EC7CEBBC8BE6FBF PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "1333:10238:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2188:81;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4264:166;;;;;;:::i;:::-;;:::i;:::-;;;1300:14:39;;1293:22;1275:41;;1263:2;1248:18;4264:166:14;1135:187:39;3231:98:14;3310:12;;3231:98;;;1473:25:39;;;1461:2;1446:18;3231:98:14;1327:177:39;4888:317:14;;;;;;:::i;:::-;;:::i;3090:81::-;3155:9;;3090:81;;3155:9;;;;1984:36:39;;1972:2;1957:18;3090:81:14;1842:184:39;5600:215:14;;;;;;:::i;:::-;;:::i;8321:89::-;;;;;;:::i;:::-;;:::i;:::-;;3387:117;;;;;;:::i;:::-;3479:18;;3453:7;3479:18;;;;;;;;;;;;3387:117;8714:290;;;;;;:::i;:::-;;:::i;2382:85::-;;;:::i;6302:266::-;;;;;;:::i;:::-;;:::i;3707:172::-;;;;;;:::i;:::-;;:::i;3937:149::-;;;;;;:::i;:::-;4052:18;;;;4026:7;4052:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3937:149;2188:81;2225:13;2257:5;2250:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2188:81;:::o;4264:166::-;4347:4;4363:39;686:10:4;4386:7:14;4395:6;4363:8;:39::i;:::-;-1:-1:-1;4419:4:14;4264:166;;;;:::o;4888:317::-;4994:4;5010:36;5020:6;5028:9;5039:6;5010:9;:36::i;:::-;5056:121;5065:6;686:10:4;5087:89:14;5125:6;5087:89;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;;;686:10:4;5087:33:14;;;;;;;;;;:37;:89::i;:::-;5056:8;:121::i;:::-;-1:-1:-1;5194:4:14;4888:317;;;;;:::o;5600:215::-;686:10:4;5688:4:14;5736:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;5688:4;;5704:83;;5727:7;;5736:50;;5775:10;5736:38;:50::i;8321:89::-;8376:27;686:10:4;8396:6:14;8376:5;:27::i;:::-;8321:89;:::o;8714:290::-;8790:26;8819:84;8856:6;8819:84;;;;;;;;;;;;;;;;;:32;8829:7;686:10:4;3937:149:14;:::i;8819:32::-;:36;:84;:36;:84::i;:::-;8790:113;-1:-1:-1;8914:51:14;8923:7;686:10:4;8946:18:14;8914:8;:51::i;:::-;8975:22;8981:7;8990:6;8975:5;:22::i;:::-;8780:224;8714:290;;:::o;2382:85::-;2421:13;2453:7;2446:14;;;;;:::i;6302:266::-;6395:4;6411:129;686:10:4;6434:7:14;6443:96;6482:15;6443:96;;;;;;;;;;;;;;;;;686:10:4;6443:25:14;;;;:11;:25;;;;;;;;;:34;;;;;;;;;;;;:38;:96::i;3707:172::-;3793:4;3809:42;686:10:4;3833:9:14;3844:6;3809:9;:42::i;10159:340::-;10260:19;;;10252:68;;;;;;;3316:2:39;10252:68:14;;;3298:21:39;3355:2;3335:18;;;3328:30;3394:34;3374:18;;;3367:62;3465:6;3445:18;;;3438:34;3489:19;;10252:68:14;;;;;;;;;10338:21;;;10330:68;;;;;;;3721:2:39;10330:68:14;;;3703:21:39;3760:2;3740:18;;;3733:30;3799:34;3779:18;;;3772:62;3870:4;3850:18;;;3843:32;3892:19;;10330:68:14;3519:398:39;10330:68:14;10409:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10460:32;;1473:25:39;;;10460:32:14;;1446:18:39;10460:32:14;;;;;;;;10159:340;;;:::o;7042:530::-;7147:20;;;7139:70;;;;;;;4124:2:39;7139:70:14;;;4106:21:39;4163:2;4143:18;;;4136:30;4202:34;4182:18;;;4175:62;4273:7;4253:18;;;4246:35;4298:19;;7139:70:14;3922:401:39;7139:70:14;7227:23;;;7219:71;;;;;;;4530:2:39;7219:71:14;;;4512:21:39;4569:2;4549:18;;;4542:30;4608:34;4588:18;;;4581:62;4679:5;4659:18;;;4652:33;4702:19;;7219:71:14;4328:399:39;7219:71:14;7379;7401:6;7379:71;;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;7359:17;;;;:9;:17;;;;;;;;;;;:91;;;;7483:20;;;;;;;:32;;7508:6;7483:24;:32::i;:::-;7460:20;;;;:9;:20;;;;;;;;;;;;:55;;;;7530:35;1473:25:39;;;7460:20:14;;7530:35;;;;;;1446:18:39;7530:35:14;1327:177:39;1766:187:23;1852:7;1887:12;1879:6;;;;1871:29;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1910:9:23;1922:5;1926:1;1922;:5;:::i;:::-;1910:17;1766:187;-1:-1:-1;;;;;1766:187:23:o;868:176::-;926:7;;957:5;961:1;957;:5;:::i;:::-;945:17;;985:1;980;:6;;972:46;;;;;;;5386:2:39;972:46:23;;;5368:21:39;5425:2;5405:18;;;5398:30;5464:29;5444:18;;;5437:57;5511:18;;972:46:23;5184:351:39;972:46:23;1036:1;868:176;-1:-1:-1;;;868:176:23:o;9324:410:14:-;9407:21;;;9399:67;;;;;;;5742:2:39;9399:67:14;;;5724:21:39;5781:2;5761:18;;;5754:30;5820:34;5800:18;;;5793:62;5891:3;5871:18;;;5864:31;5912:19;;9399:67:14;5540:397:39;9399:67:14;9558:68;9581:6;9558:68;;;;;;;;;;;;;;;;;:18;;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;9537:18;;;:9;:18;;;;;;;;;;:89;9651:12;;:24;;9668:6;9651:16;:24::i;:::-;9636:12;:39;9690:37;;1473:25:39;;;9716:1:14;;9690:37;;;;;;1461:2:39;1446:18;9690:37:14;;;;;;;9324:410;;:::o;1308:134:23:-;1366:7;1392:43;1396:1;1399;1392:43;;;;;;;;;;;;;;;;;:3;:43::i;14:656:39:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;586:2:39;574:15;591:66;570:88;555:104;;;;661:2;551:113;;14:656;-1:-1:-1;;;14:656:39:o;675:196::-;743:20;;803:42;792:54;;782:65;;772:93;;861:1;858;851:12;772:93;675:196;;;:::o;876:254::-;944:6;952;1005:2;993:9;984:7;980:23;976:32;973:52;;;1021:1;1018;1011:12;973:52;1044:29;1063:9;1044:29;:::i;:::-;1034:39;1120:2;1105:18;;;;1092:32;;-1:-1:-1;;;876:254:39:o;1509:328::-;1586:6;1594;1602;1655:2;1643:9;1634:7;1630:23;1626:32;1623:52;;;1671:1;1668;1661:12;1623:52;1694:29;1713:9;1694:29;:::i;:::-;1684:39;;1742:38;1776:2;1765:9;1761:18;1742:38;:::i;:::-;1732:48;;1827:2;1816:9;1812:18;1799:32;1789:42;;1509:328;;;;;:::o;2031:180::-;2090:6;2143:2;2131:9;2122:7;2118:23;2114:32;2111:52;;;2159:1;2156;2149:12;2111:52;-1:-1:-1;2182:23:39;;2031:180;-1:-1:-1;2031:180:39:o;2216:186::-;2275:6;2328:2;2316:9;2307:7;2303:23;2299:32;2296:52;;;2344:1;2341;2334:12;2296:52;2367:29;2386:9;2367:29;:::i;2407:260::-;2475:6;2483;2536:2;2524:9;2515:7;2511:23;2507:32;2504:52;;;2552:1;2549;2542:12;2504:52;2575:29;2594:9;2575:29;:::i;:::-;2565:39;;2623:38;2657:2;2646:9;2642:18;2623:38;:::i;:::-;2613:48;;2407:260;;;;;:::o;2672:437::-;2751:1;2747:12;;;;2794;;;2815:61;;2869:4;2861:6;2857:17;2847:27;;2815:61;2922:2;2914:6;2911:14;2891:18;2888:38;2885:218;;;2959:77;2956:1;2949:88;3060:4;3057:1;3050:15;3088:4;3085:1;3078:15;2885:218;;2672:437;;;:::o;4732:184::-;4784:77;4781:1;4774:88;4881:4;4878:1;4871:15;4905:4;4902:1;4895:15;4921:125;4961:4;4989:1;4986;4983:8;4980:34;;;4994:18;;:::i;:::-;-1:-1:-1;5031:9:39;;4921:125::o;5051:128::-;5091:3;5122:1;5118:6;5115:1;5112:13;5109:39;;;5128:18;;:::i;:::-;-1:-1:-1;5164:9:39;;5051:128::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "713200", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "allowance(address,address)": "infinite", + "approve(address,uint256)": "24595", + "balanceOf(address)": "2561", + "burn(uint256)": "infinite", + "burnFrom(address,uint256)": "infinite", + "decimals()": "2334", + "decreaseAllowance(address,uint256)": "infinite", + "increaseAllowance(address,uint256)": "27018", + "name()": "infinite", + "symbol()": "infinite", + "totalSupply()": "2349", + "transfer(address,uint256)": "infinite", + "transferFrom(address,address,uint256)": "infinite" + }, + "internal": { + "_approve(address,address,uint256)": "infinite", + "_beforeTokenTransfer(address,address,uint256)": "infinite", + "_burn(address,uint256)": "infinite", + "_burnFrom(address,uint256)": "infinite", + "_mint(address,uint256)": "infinite", + "_transfer(address,address,uint256)": "infinite" + } + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "burn(uint256)": "42966c68", + "burnFrom(address,uint256)": "79cc6790", + "decimals()": "313ce567", + "decreaseAllowance(address,uint256)": "a457c2d7", + "increaseAllowance(address,uint256)": "39509351", + "name()": "06fdde03", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"__name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"__symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20Mintable}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin guidelines: functions revert instead of returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.approve(address spender, uint256 amount)\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for `accounts`'s tokens of at least `amount`.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}, initializes {decimals} with a default value of 18. To select a different value for {decimals}, use {_setupDecimals}. All three of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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 payable(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}\",\"keccak256\":\"0x60d51a32063a4975dbf9433d38f5849173527da72f007c38053274e06698cb54\",\"license\":\"MIT\"},\"contracts/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\n\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20Mintable}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * We have followed general OpenZeppelin guidelines: functions revert instead\\n * of returning `false` on failure. This behavior is nonetheless conventional\\n * and does not conflict with the expectations of ERC20 applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\n \\ncontract ERC20 is Context, IERC20 {\\n using SafeMath for uint256;\\n\\n mapping (address => uint256) private _balances;\\n\\n mapping (address => mapping (address => uint256)) private _allowances;\\n\\n uint256 private _totalSupply;\\n\\n string private _name;\\n string private _symbol;\\n uint8 private _decimals;\\n \\n /**\\n * @dev Sets the values for {name} and {symbol}, initializes {decimals} with\\n * a default value of 18.\\n *\\n * To select a different value for {decimals}, use {_setupDecimals}.\\n *\\n * All three of these values are immutable: they can only be set once during\\n * construction.\\n */\\n constructor (string memory __name, string memory __symbol) public {\\n _name = __name;\\n _symbol = __symbol;\\n _decimals = 18;\\n }\\n\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() public view returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev Returns the symbol of the token, usually a shorter version of the\\n * name.\\n */\\n function symbol() public view returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev Returns the number of decimals used to get its user representation.\\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\\n *\\n * Tokens usually opt for a value of 18, imitating the relationship between\\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\\n * called.\\n *\\n * NOTE: This information is only used for _display_ purposes: it in\\n * no way affects any of the arithmetic of the contract, including\\n * {IERC20-balanceOf} and {IERC20-transfer}.\\n */\\n function decimals() public view returns (uint8) {\\n return _decimals;\\n }\\n\\n /**\\n * @dev See {IERC20-totalSupply}.\\n */\\n function totalSupply() public view override returns (uint256) {\\n return _totalSupply;\\n }\\n\\n /**\\n * @dev See {IERC20-balanceOf}.\\n */\\n function balanceOf(address account) public view override returns (uint256) {\\n return _balances[account];\\n }\\n\\n /**\\n * @dev See {IERC20-transfer}.\\n *\\n * Requirements:\\n *\\n * - `recipient` cannot be the zero address.\\n * - the caller must have a balance of at least `amount`.\\n */\\n function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\\n _transfer(_msgSender(), recipient, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-allowance}.\\n */\\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n return _allowances[owner][spender];\\n }\\n\\n /**\\n * @dev See {IERC20-approve}.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.approve(address spender, uint256 amount)\\n */\\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n _approve(_msgSender(), spender, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-transferFrom}.\\n *\\n * Emits an {Approval} event indicating the updated allowance. This is not\\n * required by the EIP. See the note at the beginning of {ERC20};\\n *\\n * Requirements:\\n * - `sender` and `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n * - the caller must have allowance for `sender`'s tokens of at least\\n * `amount`.\\n */\\n function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {\\n _transfer(sender, recipient, amount);\\n _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \\\"ERC20: transfer amount exceeds allowance\\\"));\\n return true;\\n }\\n\\n /**\\n * @dev Atomically increases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\\n return true;\\n }\\n\\n /**\\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `spender` must have allowance for the caller of at least\\n * `subtractedValue`.\\n */\\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \\\"ERC20: decreased allowance below zero\\\"));\\n return true;\\n }\\n\\n /**\\n * @dev Moves tokens `amount` from `sender` to `recipient`.\\n *\\n * This is internal function is equivalent to {transfer}, and can be used to\\n * e.g. implement automatic token fees, slashing mechanisms, etc.\\n *\\n * Emits a {Transfer} event.\\n *\\n * Requirements:\\n *\\n * - `sender` cannot be the zero address.\\n * - `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n */\\n function _transfer(address sender, address recipient, uint256 amount) internal virtual {\\n require(sender != address(0), \\\"ERC20: transfer from the zero address\\\");\\n require(recipient != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(sender, recipient, amount);\\n\\n _balances[sender] = _balances[sender].sub(amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n _balances[recipient] = _balances[recipient].add(amount);\\n emit Transfer(sender, recipient, amount);\\n }\\n\\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n * the total supply.\\n *\\n * Emits a {Transfer} event with `from` set to the zero address.\\n *\\n * Requirements\\n *\\n * - `to` cannot be the zero address.\\n */\\n function _mint(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n _beforeTokenTransfer(address(0), account, amount);\\n\\n _totalSupply = _totalSupply.add(amount);\\n _balances[account] = _balances[account].add(amount);\\n emit Transfer(address(0), account, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from the caller.\\n *\\n * See {ERC20-_burn}.\\n */\\n function burn(uint256 amount) public virtual {\\n _burn(_msgSender(), amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, deducting from the caller's\\n * allowance.\\n *\\n * See {ERC20-_burn} and {ERC20-allowance}.\\n *\\n * Requirements:\\n *\\n * - the caller must have allowance for `accounts`'s tokens of at least\\n * `amount`.\\n */\\n function burnFrom(address account, uint256 amount) public virtual {\\n uint256 decreasedAllowance = allowance(account, _msgSender()).sub(amount, \\\"ERC20: burn amount exceeds allowance\\\");\\n\\n _approve(account, _msgSender(), decreasedAllowance);\\n _burn(account, amount);\\n }\\n\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, reducing the\\n * total supply.\\n *\\n * Emits a {Transfer} event with `to` set to the zero address.\\n *\\n * Requirements\\n *\\n * - `account` cannot be the zero address.\\n * - `account` must have at least `amount` tokens.\\n */\\n function _burn(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n _beforeTokenTransfer(account, address(0), amount);\\n\\n _balances[account] = _balances[account].sub(amount, \\\"ERC20: burn amount exceeds balance\\\");\\n _totalSupply = _totalSupply.sub(amount);\\n emit Transfer(account, address(0), amount);\\n }\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\\n *\\n * This is internal function is equivalent to `approve`, and can be used to\\n * e.g. set automatic allowances for certain subsystems, etc.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `owner` cannot be the zero address.\\n * - `spender` cannot be the zero address.\\n */\\n function _approve(address owner, address spender, uint256 amount) internal virtual {\\n require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n _allowances[owner][spender] = amount;\\n emit Approval(owner, spender, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`.`amount` is then deducted\\n * from the caller's allowance.\\n *\\n * See {_burn} and {_approve}.\\n */\\n function _burnFrom(address account, uint256 amount) internal virtual {\\n _burn(account, amount);\\n _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, \\\"ERC20: burn amount exceeds allowance\\\"));\\n }\\n\\n /**\\n * @dev Hook that is called before any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of `from`'s tokens\\n * will be to transferred to `to`.\\n * - when `from` is zero, `amount` tokens will be minted for `to`.\\n * - when `to` is zero, `amount` of `from`'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:using-hooks.adoc[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }\\n}\\n\",\"keccak256\":\"0x433b9ee195d0bd257219bc337ff8aac624282a826726b18fdb299de0e3d4149e\",\"license\":\"MIT\"},\"contracts/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {ERC20Detailed}.\\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\\n\",\"keccak256\":\"0x057bec1fafd7ca222117f41fcfb9c8dc1f61aa30e5a0222c981196e9113de7e6\",\"license\":\"MIT\"},\"contracts/Math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\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\\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 * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\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 * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\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 * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (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) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts 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 * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts 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 * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\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}\",\"keccak256\":\"0x43a20f7cf4c4319f81450d53779455e88a7ab80bdfc43925156ed4083b74a180\",\"license\":\"MIT\"},\"contracts/Utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11 <0.9.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}\",\"keccak256\":\"0xe392046e85c78eea7d4c1237af52a5fc06c097b7a480ea4f20159670b4a582a4\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 4368, + "contract": "contracts/ERC20/ERC20.sol:ERC20", + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 4374, + "contract": "contracts/ERC20/ERC20.sol:ERC20", + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))" + }, + { + "astId": 4376, + "contract": "contracts/ERC20/ERC20.sol:ERC20", + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256" + }, + { + "astId": 4378, + "contract": "contracts/ERC20/ERC20.sol:ERC20", + "label": "_name", + "offset": 0, + "slot": "3", + "type": "t_string_storage" + }, + { + "astId": 4380, + "contract": "contracts/ERC20/ERC20.sol:ERC20", + "label": "_symbol", + "offset": 0, + "slot": "4", + "type": "t_string_storage" + }, + { + "astId": 4382, + "contract": "contracts/ERC20/ERC20.sol:ERC20", + "label": "_decimals", + "offset": 0, + "slot": "5", + "type": "t_uint8" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32", + "value": "t_mapping(t_address,t_uint256)" + }, + "t_mapping(t_address,t_uint256)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_string_storage": { + "encoding": "bytes", + "label": "string", + "numberOfBytes": "32" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "encoding": "inplace", + "label": "uint8", + "numberOfBytes": "1" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/ERC20/ERC20Custom.sol": { + "ERC20Custom": { + "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": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20Mintable}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin guidelines: functions revert instead of returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.", + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "See {IERC20-allowance}." + }, + "approve(address,uint256)": { + "details": "See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.approve(address spender, uint256 amount)" + }, + "balanceOf(address)": { + "details": "See {IERC20-balanceOf}." + }, + "burn(uint256)": { + "details": "Destroys `amount` tokens from the caller. See {ERC20-_burn}." + }, + "burnFrom(address,uint256)": { + "details": "Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for `accounts`'s tokens of at least `amount`." + }, + "decreaseAllowance(address,uint256)": { + "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`." + }, + "increaseAllowance(address,uint256)": { + "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address." + }, + "totalSupply()": { + "details": "See {IERC20-totalSupply}." + }, + "transfer(address,uint256)": { + "details": "See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`." + }, + "transferFrom(address,address,uint256)": { + "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`." + } + }, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50610ca2806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806370a0823111610076578063a457c2d71161005b578063a457c2d714610181578063a9059cbb14610194578063dd62ed3e146101a757600080fd5b806370a082311461013857806379cc67901461016e57600080fd5b806323b872dd116100a757806323b872dd146100fd578063395093511461011057806342966c681461012357600080fd5b8063095ea7b3146100c357806318160ddd146100eb575b600080fd5b6100d66100d1366004610a15565b6101ed565b60405190151581526020015b60405180910390f35b6002545b6040519081526020016100e2565b6100d661010b366004610a3f565b610203565b6100d661011e366004610a15565b610279565b610136610131366004610a7b565b6102bc565b005b6100ef610146366004610a94565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61013661017c366004610a15565b6102c9565b6100d661018f366004610a15565b610315565b6100d66101a2366004610a15565b610371565b6100ef6101b5366004610aaf565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60006101fa33848461037e565b50600192915050565b6000610210848484610537565b61026f843361026a85604051806060016040528060288152602001610bfc6028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602090815260408083203384529091529020549190610761565b61037e565b5060019392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916101fa91859061026a90866107b5565b6102c63382610835565b50565b60006102f982604051806060016040528060248152602001610c24602491396102f286336101b5565b9190610761565b905061030683338361037e565b6103108383610835565b505050565b60006101fa338461026a85604051806060016040528060258152602001610c486025913933600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d1684529091529020549190610761565b60006101fa338484610537565b73ffffffffffffffffffffffffffffffffffffffff8316610425576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166104c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161041c565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166105da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161041c565b73ffffffffffffffffffffffffffffffffffffffff821661067d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161041c565b6106c781604051806060016040528060268152602001610bd66026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610761565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220939093559084168152205461070390826107b5565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161052a565b6000818484111561079f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041c9190610ae2565b5060006107ac8486610b84565b95945050505050565b6000806107c28385610b9b565b90508381101561082e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161041c565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166108d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161041c565b61092281604051806060016040528060228152602001610bb46022913973ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020549190610761565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205560025461095590826109aa565b60025560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600061082e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610761565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a1057600080fd5b919050565b60008060408385031215610a2857600080fd5b610a31836109ec565b946020939093013593505050565b600080600060608486031215610a5457600080fd5b610a5d846109ec565b9250610a6b602085016109ec565b9150604084013590509250925092565b600060208284031215610a8d57600080fd5b5035919050565b600060208284031215610aa657600080fd5b61082e826109ec565b60008060408385031215610ac257600080fd5b610acb836109ec565b9150610ad9602084016109ec565b90509250929050565b600060208083528351808285015260005b81811015610b0f57858101830151858201604001528201610af3565b81811115610b21576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015610b9657610b96610b55565b500390565b60008219821115610bae57610bae610b55565b50019056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203df39b758a01ee8ffab594575934b755c8f8548a12a047f39510eb3256aff33b64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCA2 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x16E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xFD JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x123 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xEB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0xA15 JUMP JUMPDEST PUSH2 0x1ED JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE2 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x10B CALLDATASIZE PUSH1 0x4 PUSH2 0xA3F JUMP JUMPDEST PUSH2 0x203 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x11E CALLDATASIZE PUSH1 0x4 PUSH2 0xA15 JUMP JUMPDEST PUSH2 0x279 JUMP JUMPDEST PUSH2 0x136 PUSH2 0x131 CALLDATASIZE PUSH1 0x4 PUSH2 0xA7B JUMP JUMPDEST PUSH2 0x2BC JUMP JUMPDEST STOP JUMPDEST PUSH2 0xEF PUSH2 0x146 CALLDATASIZE PUSH1 0x4 PUSH2 0xA94 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x136 PUSH2 0x17C CALLDATASIZE PUSH1 0x4 PUSH2 0xA15 JUMP JUMPDEST PUSH2 0x2C9 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x18F CALLDATASIZE PUSH1 0x4 PUSH2 0xA15 JUMP JUMPDEST PUSH2 0x315 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x1A2 CALLDATASIZE PUSH1 0x4 PUSH2 0xA15 JUMP JUMPDEST PUSH2 0x371 JUMP JUMPDEST PUSH2 0xEF PUSH2 0x1B5 CALLDATASIZE PUSH1 0x4 PUSH2 0xAAF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FA CALLER DUP5 DUP5 PUSH2 0x37E JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x210 DUP5 DUP5 DUP5 PUSH2 0x537 JUMP JUMPDEST PUSH2 0x26F DUP5 CALLER PUSH2 0x26A DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBFC PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x761 JUMP JUMPDEST PUSH2 0x37E JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x1FA SWAP2 DUP6 SWAP1 PUSH2 0x26A SWAP1 DUP7 PUSH2 0x7B5 JUMP JUMPDEST PUSH2 0x2C6 CALLER DUP3 PUSH2 0x835 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F9 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC24 PUSH1 0x24 SWAP2 CODECOPY PUSH2 0x2F2 DUP7 CALLER PUSH2 0x1B5 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x761 JUMP JUMPDEST SWAP1 POP PUSH2 0x306 DUP4 CALLER DUP4 PUSH2 0x37E JUMP JUMPDEST PUSH2 0x310 DUP4 DUP4 PUSH2 0x835 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FA CALLER DUP5 PUSH2 0x26A DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC48 PUSH1 0x25 SWAP2 CODECOPY CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x761 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FA CALLER DUP5 DUP5 PUSH2 0x537 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x425 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x4C8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x5DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x67D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41C JUMP JUMPDEST PUSH2 0x6C7 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBD6 PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x761 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x703 SWAP1 DUP3 PUSH2 0x7B5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE MLOAD DUP5 DUP2 MSTORE SWAP1 SWAP3 SWAP2 DUP7 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x52A JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x79F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x41C SWAP2 SWAP1 PUSH2 0xAE2 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x7AC DUP5 DUP7 PUSH2 0xB84 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7C2 DUP4 DUP6 PUSH2 0xB9B JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x82E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x41C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x8D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41C JUMP JUMPDEST PUSH2 0x922 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBB4 PUSH1 0x22 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x761 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x2 SLOAD PUSH2 0x955 SWAP1 DUP3 PUSH2 0x9AA JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x82E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x761 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xA10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA31 DUP4 PUSH2 0x9EC 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 0xA54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA5D DUP5 PUSH2 0x9EC JUMP JUMPDEST SWAP3 POP PUSH2 0xA6B PUSH1 0x20 DUP6 ADD PUSH2 0x9EC JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x82E DUP3 PUSH2 0x9EC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xAC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xACB DUP4 PUSH2 0x9EC JUMP JUMPDEST SWAP2 POP PUSH2 0xAD9 PUSH1 0x20 DUP5 ADD PUSH2 0x9EC JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB0F JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xAF3 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xB21 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0xB96 JUMPI PUSH2 0xB96 PUSH2 0xB55 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xBAE JUMPI PUSH2 0xBAE PUSH2 0xB55 JUMP JUMPDEST POP ADD SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x2062616C616E636545524332303A207472616E73 PUSH7 0x657220616D6F75 PUSH15 0x74206578636565647320616C6C6F77 PUSH2 0x6E63 PUSH6 0x45524332303A KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E74206578636565647320616C6C6F77616E63654552 NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x73582212203DF3 SWAP12 PUSH22 0x8A01EE8FFAB594575934B755C8F8548A12A047F39510 0xEB ORIGIN JUMP 0xAF RETURN EXTCODESIZE PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "1403:8639:15:-:0;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@_approve_5392": { + "entryPoint": 894, + "id": 5392, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_beforeTokenTransfer_5433": { + "entryPoint": null, + "id": 5433, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_burn_5347": { + "entryPoint": 2101, + "id": 5347, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_msgSender_444": { + "entryPoint": null, + "id": 444, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_transfer_5190": { + "entryPoint": 1335, + "id": 5190, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@add_6728": { + "entryPoint": 1973, + "id": 6728, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@allowance_5008": { + "entryPoint": null, + "id": 5008, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@approve_5029": { + "entryPoint": 493, + "id": 5029, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@balanceOf_4969": { + "entryPoint": null, + "id": 4969, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@burnFrom_5291": { + "entryPoint": 713, + "id": 5291, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@burn_5258": { + "entryPoint": 700, + "id": 5258, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@decreaseAllowance_5124": { + "entryPoint": 789, + "id": 5124, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@increaseAllowance_5095": { + "entryPoint": 633, + "id": 5095, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@sub_6745": { + "entryPoint": 2474, + "id": 6745, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@sub_6773": { + "entryPoint": 1889, + "id": 6773, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@totalSupply_4955": { + "entryPoint": null, + "id": 4955, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@transferFrom_5067": { + "entryPoint": 515, + "id": 5067, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@transfer_4990": { + "entryPoint": 881, + "id": 4990, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_address": { + "entryPoint": 2540, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 2708, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 2735, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_addresst_uint256": { + "entryPoint": 2623, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_addresst_uint256": { + "entryPoint": 2581, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": 2683, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 2786, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 2971, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 2948, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 2901, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:5308:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "63:147:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "73:29:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "95:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "82:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "82:20:39" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "73:5:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "188:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "200:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "190:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "190:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "190:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "124:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "135:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "142:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "131:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "131:54:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "121:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "121:65:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "114:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "114:73:39" + }, + "nodeType": "YulIf", + "src": "111:93:39" + } + ] + }, + "name": "abi_decode_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "42:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "53:5:39", + "type": "" + } + ], + "src": "14:196:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "302:167:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "348:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "357:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "360:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "350:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "350:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "350:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "323:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "332:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "319:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "319:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "344:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "315:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "315:32:39" + }, + "nodeType": "YulIf", + "src": "312:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "373:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "402:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "383:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "383:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "373:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "421:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "448:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "459:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "444:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "444:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "431:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "431:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "421:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "260:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "271:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "283:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "291:6:39", + "type": "" + } + ], + "src": "215:254:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "569:92:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "579:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "591:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "602:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "587:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "587:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "579:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "621:9:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "646:6:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "639:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "639:14:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "632:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "632:22:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "614:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "614:41:39" + }, + "nodeType": "YulExpressionStatement", + "src": "614:41:39" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "538:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "549:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "560:4:39", + "type": "" + } + ], + "src": "474:187:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "767:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "777:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "789:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "800:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "785:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "785:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "777:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "819:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "830:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "812:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "812:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "812:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "736:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "747:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "758:4:39", + "type": "" + } + ], + "src": "666:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "952:224:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "998:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1007:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1010:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1000:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1000:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1000:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "973:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "982:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "969:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "969:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "994:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "965:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "965:32:39" + }, + "nodeType": "YulIf", + "src": "962:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "1023:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1052:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "1033:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "1033:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1023:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1071:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1104:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1115:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1100:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1100:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "1081:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "1081:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1071:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1128:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1155:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1166:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1151:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1151:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1138:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1138:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "1128:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "902:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "913:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "925:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "933:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "941:6:39", + "type": "" + } + ], + "src": "848:328:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1251:110:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1297:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1306:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1309:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1299:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1299:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1299:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1272:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1281:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1268:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1268:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1293:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1264:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1264:32:39" + }, + "nodeType": "YulIf", + "src": "1261:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "1322:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1345:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1332:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1332:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1322:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1217:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1228:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1240:6:39", + "type": "" + } + ], + "src": "1181:180:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1436:116:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1482:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1491:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1494:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1484:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1484:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1484:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1457:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1466:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1453:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1453:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1478:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1449:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1449:32:39" + }, + "nodeType": "YulIf", + "src": "1446:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "1507:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1536:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "1517:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "1517:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1507:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1402:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1413:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1425:6:39", + "type": "" + } + ], + "src": "1366:186:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1644:173:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1690:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1699:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1702:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1692:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1692:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1692:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1665:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1674:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1661:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1661:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1686:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1657:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1657:32:39" + }, + "nodeType": "YulIf", + "src": "1654:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "1715:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1744:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "1725:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "1725:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1715:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1763:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1796:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1807:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1792:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1792:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "1773:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "1773:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1763:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1602:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1613:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1625:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1633:6:39", + "type": "" + } + ], + "src": "1557:260:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1996:226:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2013:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2024:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2006:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2006:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2006:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2047:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2058:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2043:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2043:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2063:2:39", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2036:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2036:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2036:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2086:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2097:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2082:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2082:18:39" + }, + { + "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f20616464", + "kind": "string", + "nodeType": "YulLiteral", + "src": "2102:34:39", + "type": "", + "value": "ERC20: approve from the zero add" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2075:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2075:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2075:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2157:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2168:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2153:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2153:18:39" + }, + { + "hexValue": "72657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "2173:6:39", + "type": "", + "value": "ress" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2146:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2146:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2146:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "2189:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2201:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2212:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2197:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2197:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2189:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1973:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1987:4:39", + "type": "" + } + ], + "src": "1822:400:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2401:224:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2418:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2429:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2411:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2411:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2411:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2452:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2463:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2448:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2448:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2468:2:39", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2441:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2441:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2441:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2491:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2502:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2487:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2487:18:39" + }, + { + "hexValue": "45524332303a20617070726f766520746f20746865207a65726f206164647265", + "kind": "string", + "nodeType": "YulLiteral", + "src": "2507:34:39", + "type": "", + "value": "ERC20: approve to the zero addre" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2480:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2480:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2480:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2562:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2573:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2558:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2558:18:39" + }, + { + "hexValue": "7373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "2578:4:39", + "type": "", + "value": "ss" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2551:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2551:32:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2551:32:39" + }, + { + "nodeType": "YulAssignment", + "src": "2592:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2604:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2615:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2600:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2600:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2592:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2378:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2392:4:39", + "type": "" + } + ], + "src": "2227:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2804:227:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2821:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2832:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2814:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2814:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2814:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2855:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2866:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2851:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2851:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2871:2:39", + "type": "", + "value": "37" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2844:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2844:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2844:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2894:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2905:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2890:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2890:18:39" + }, + { + "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f206164", + "kind": "string", + "nodeType": "YulLiteral", + "src": "2910:34:39", + "type": "", + "value": "ERC20: transfer from the zero ad" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2883:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2883:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2883:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2965:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2976:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2961:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2961:18:39" + }, + { + "hexValue": "6472657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "2981:7:39", + "type": "", + "value": "dress" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2954:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2954:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2954:35:39" + }, + { + "nodeType": "YulAssignment", + "src": "2998:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3010:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3021:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3006:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3006:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2998:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2781:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2795:4:39", + "type": "" + } + ], + "src": "2630:401:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3210:225:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3227:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3238:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3220:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3220:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3220:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3261:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3272:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3257:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3257:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3277:2:39", + "type": "", + "value": "35" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3250:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3250:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3250:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3300:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3311:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3296:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3296:18:39" + }, + { + "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472", + "kind": "string", + "nodeType": "YulLiteral", + "src": "3316:34:39", + "type": "", + "value": "ERC20: transfer to the zero addr" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3289:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3289:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3289:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3371:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3382:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3367:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3367:18:39" + }, + { + "hexValue": "657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "3387:5:39", + "type": "", + "value": "ess" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3360:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3360:33:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3360:33:39" + }, + { + "nodeType": "YulAssignment", + "src": "3402:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3414:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3425:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3410:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3410:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3402:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3187:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3201:4:39", + "type": "" + } + ], + "src": "3036:399:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3561:535:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3571:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3581:2:39", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "3575:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3599:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3610:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3592:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3592:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3592:21:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3622:27:39", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3642:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "3636:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "3636:13:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "3626:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3669:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3680:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3665:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3665:18:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3685:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3658:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3658:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3658:34:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3701:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3710:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "3705:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3770:90:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3799:9:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "3810:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3795:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3795:17:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3814:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3791:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3791:26:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3833:6:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "3841:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3829:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3829:14:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3845:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3825:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3825:23:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "3819:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "3819:30:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3784:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3784:66:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3784:66:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "3731:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3734:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "3728:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3728:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "3742:19:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3744:15:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "3753:1:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3756:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3749:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3749:10:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "3744:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "3724:3:39", + "statements": [] + }, + "src": "3720:140:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3894:66:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3923:9:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3934:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3919:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3919:22:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3943:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3915:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3915:31:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3948:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3908:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3908:42:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3908:42:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "3875:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3878:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3872:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3872:13:39" + }, + "nodeType": "YulIf", + "src": "3869:91:39" + }, + { + "nodeType": "YulAssignment", + "src": "3969:121:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3985:9:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4004:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4012:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4000:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4000:15:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4017:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "3996:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3996:88:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3981:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3981:104:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4087:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3977:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3977:113:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3969:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3530:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3541:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3552:4:39", + "type": "" + } + ], + "src": "3440:656:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4133:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4150:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4153:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4143:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4143:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4143:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4247:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4250:4:39", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4240:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4240:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4240:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4271:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4274:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4264:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4264:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4264:15:39" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "4101:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4339:76:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4361:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "4363:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "4363:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4363:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "4355:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "4358:1:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "4352:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "4352:8:39" + }, + "nodeType": "YulIf", + "src": "4349:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "4392:17:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "4404:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "4407:1:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4400:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4400:9:39" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "4392:4:39" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "4321:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "4324:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "4330:4:39", + "type": "" + } + ], + "src": "4290:125:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4468:80:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4495:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "4497:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "4497:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4497:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "4484:1:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "4491:1:39" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "4487:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4487:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4481:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "4481:13:39" + }, + "nodeType": "YulIf", + "src": "4478:39:39" + }, + { + "nodeType": "YulAssignment", + "src": "4526:16:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "4537:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "4540:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4533:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4533:9:39" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "4526:3:39" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "4451:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "4454:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "4460:3:39", + "type": "" + } + ], + "src": "4420:128:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4727:177:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4744:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4755:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4737:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4737:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4737:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4778:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4789:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4774:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4774:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4794:2:39", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4767:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4767:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4767:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4817:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4828:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4813:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4813:18:39" + }, + { + "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4833:29:39", + "type": "", + "value": "SafeMath: addition overflow" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4806:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4806:57:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4806:57:39" + }, + { + "nodeType": "YulAssignment", + "src": "4872:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4884:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4895:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4880:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4880:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4872:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4704:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4718:4:39", + "type": "" + } + ], + "src": "4553:351:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5083:223:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5100:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5111:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5093:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5093:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5093:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5134:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5145:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5130:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5130:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5150:2:39", + "type": "", + "value": "33" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5123:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5123:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5123:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5173:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5184:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5169:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5169:18:39" + }, + { + "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f20616464726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "5189:34:39", + "type": "", + "value": "ERC20: burn from the zero addres" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5162:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5162:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5162:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5244:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5255:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5240:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5240:18:39" + }, + { + "hexValue": "73", + "kind": "string", + "nodeType": "YulLiteral", + "src": "5260:3:39", + "type": "", + "value": "s" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5233:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5233:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5233:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "5273:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5285:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5296:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5281:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5281:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5273:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5060:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5074:4:39", + "type": "" + } + ], + "src": "4909:397:39" + } + ] + }, + "contents": "{\n { }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n mstore(add(headStart, 96), \"ress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n mstore(add(headStart, 96), \"ss\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n mstore(add(headStart, 96), \"dress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 35)\n mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n mstore(add(headStart, 96), \"ess\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n if gt(i, length)\n {\n mstore(add(add(headStart, length), 64), 0)\n }\n tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"SafeMath: addition overflow\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"ERC20: burn from the zero addres\")\n mstore(add(headStart, 96), \"s\")\n tail := add(headStart, 128)\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100be5760003560e01c806370a0823111610076578063a457c2d71161005b578063a457c2d714610181578063a9059cbb14610194578063dd62ed3e146101a757600080fd5b806370a082311461013857806379cc67901461016e57600080fd5b806323b872dd116100a757806323b872dd146100fd578063395093511461011057806342966c681461012357600080fd5b8063095ea7b3146100c357806318160ddd146100eb575b600080fd5b6100d66100d1366004610a15565b6101ed565b60405190151581526020015b60405180910390f35b6002545b6040519081526020016100e2565b6100d661010b366004610a3f565b610203565b6100d661011e366004610a15565b610279565b610136610131366004610a7b565b6102bc565b005b6100ef610146366004610a94565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61013661017c366004610a15565b6102c9565b6100d661018f366004610a15565b610315565b6100d66101a2366004610a15565b610371565b6100ef6101b5366004610aaf565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60006101fa33848461037e565b50600192915050565b6000610210848484610537565b61026f843361026a85604051806060016040528060288152602001610bfc6028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602090815260408083203384529091529020549190610761565b61037e565b5060019392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916101fa91859061026a90866107b5565b6102c63382610835565b50565b60006102f982604051806060016040528060248152602001610c24602491396102f286336101b5565b9190610761565b905061030683338361037e565b6103108383610835565b505050565b60006101fa338461026a85604051806060016040528060258152602001610c486025913933600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d1684529091529020549190610761565b60006101fa338484610537565b73ffffffffffffffffffffffffffffffffffffffff8316610425576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166104c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161041c565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166105da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161041c565b73ffffffffffffffffffffffffffffffffffffffff821661067d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161041c565b6106c781604051806060016040528060268152602001610bd66026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610761565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220939093559084168152205461070390826107b5565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161052a565b6000818484111561079f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041c9190610ae2565b5060006107ac8486610b84565b95945050505050565b6000806107c28385610b9b565b90508381101561082e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161041c565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166108d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161041c565b61092281604051806060016040528060228152602001610bb46022913973ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020549190610761565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205560025461095590826109aa565b60025560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600061082e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610761565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a1057600080fd5b919050565b60008060408385031215610a2857600080fd5b610a31836109ec565b946020939093013593505050565b600080600060608486031215610a5457600080fd5b610a5d846109ec565b9250610a6b602085016109ec565b9150604084013590509250925092565b600060208284031215610a8d57600080fd5b5035919050565b600060208284031215610aa657600080fd5b61082e826109ec565b60008060408385031215610ac257600080fd5b610acb836109ec565b9150610ad9602084016109ec565b90509250929050565b600060208083528351808285015260005b81811015610b0f57858101830151858201604001528201610af3565b81811115610b21576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015610b9657610b96610b55565b500390565b60008219821115610bae57610bae610b55565b50019056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203df39b758a01ee8ffab594575934b755c8f8548a12a047f39510eb3256aff33b64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x16E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xFD JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x123 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xEB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0xA15 JUMP JUMPDEST PUSH2 0x1ED JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE2 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x10B CALLDATASIZE PUSH1 0x4 PUSH2 0xA3F JUMP JUMPDEST PUSH2 0x203 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x11E CALLDATASIZE PUSH1 0x4 PUSH2 0xA15 JUMP JUMPDEST PUSH2 0x279 JUMP JUMPDEST PUSH2 0x136 PUSH2 0x131 CALLDATASIZE PUSH1 0x4 PUSH2 0xA7B JUMP JUMPDEST PUSH2 0x2BC JUMP JUMPDEST STOP JUMPDEST PUSH2 0xEF PUSH2 0x146 CALLDATASIZE PUSH1 0x4 PUSH2 0xA94 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x136 PUSH2 0x17C CALLDATASIZE PUSH1 0x4 PUSH2 0xA15 JUMP JUMPDEST PUSH2 0x2C9 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x18F CALLDATASIZE PUSH1 0x4 PUSH2 0xA15 JUMP JUMPDEST PUSH2 0x315 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x1A2 CALLDATASIZE PUSH1 0x4 PUSH2 0xA15 JUMP JUMPDEST PUSH2 0x371 JUMP JUMPDEST PUSH2 0xEF PUSH2 0x1B5 CALLDATASIZE PUSH1 0x4 PUSH2 0xAAF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FA CALLER DUP5 DUP5 PUSH2 0x37E JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x210 DUP5 DUP5 DUP5 PUSH2 0x537 JUMP JUMPDEST PUSH2 0x26F DUP5 CALLER PUSH2 0x26A DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBFC PUSH1 0x28 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x761 JUMP JUMPDEST PUSH2 0x37E JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x1FA SWAP2 DUP6 SWAP1 PUSH2 0x26A SWAP1 DUP7 PUSH2 0x7B5 JUMP JUMPDEST PUSH2 0x2C6 CALLER DUP3 PUSH2 0x835 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F9 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC24 PUSH1 0x24 SWAP2 CODECOPY PUSH2 0x2F2 DUP7 CALLER PUSH2 0x1B5 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x761 JUMP JUMPDEST SWAP1 POP PUSH2 0x306 DUP4 CALLER DUP4 PUSH2 0x37E JUMP JUMPDEST PUSH2 0x310 DUP4 DUP4 PUSH2 0x835 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FA CALLER DUP5 PUSH2 0x26A DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC48 PUSH1 0x25 SWAP2 CODECOPY CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x761 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FA CALLER DUP5 DUP5 PUSH2 0x537 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x425 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x4C8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x5DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x67D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41C JUMP JUMPDEST PUSH2 0x6C7 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBD6 PUSH1 0x26 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x761 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x703 SWAP1 DUP3 PUSH2 0x7B5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE MLOAD DUP5 DUP2 MSTORE SWAP1 SWAP3 SWAP2 DUP7 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x52A JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x79F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x41C SWAP2 SWAP1 PUSH2 0xAE2 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x7AC DUP5 DUP7 PUSH2 0xB84 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7C2 DUP4 DUP6 PUSH2 0xB9B JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x82E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x41C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x8D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x41C JUMP JUMPDEST PUSH2 0x922 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBB4 PUSH1 0x22 SWAP2 CODECOPY PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x761 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x2 SLOAD PUSH2 0x955 SWAP1 DUP3 PUSH2 0x9AA JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x82E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x761 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xA10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA31 DUP4 PUSH2 0x9EC 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 0xA54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA5D DUP5 PUSH2 0x9EC JUMP JUMPDEST SWAP3 POP PUSH2 0xA6B PUSH1 0x20 DUP6 ADD PUSH2 0x9EC JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x82E DUP3 PUSH2 0x9EC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xAC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xACB DUP4 PUSH2 0x9EC JUMP JUMPDEST SWAP2 POP PUSH2 0xAD9 PUSH1 0x20 DUP5 ADD PUSH2 0x9EC JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB0F JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xAF3 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xB21 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0xB96 JUMPI PUSH2 0xB96 PUSH2 0xB55 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xBAE JUMPI PUSH2 0xBAE PUSH2 0xB55 JUMP JUMPDEST POP ADD SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x2062616C616E636545524332303A207472616E73 PUSH7 0x657220616D6F75 PUSH15 0x74206578636565647320616C6C6F77 PUSH2 0x6E63 PUSH6 0x45524332303A KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E74206578636565647320616C6C6F77616E63654552 NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x73582212203DF3 SWAP12 PUSH22 0x8A01EE8FFAB594575934B755C8F8548A12A047F39510 0xEB ORIGIN JUMP 0xAF RETURN EXTCODESIZE PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "1403:8639:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2735:166;;;;;;:::i;:::-;;:::i;:::-;;;639:14:39;;632:22;614:41;;602:2;587:18;2735:166:15;;;;;;;;1702:98;1781:12;;1702:98;;;812:25:39;;;800:2;785:18;1702:98:15;666:177:39;3359:317:15;;;;;;:::i;:::-;;:::i;4071:215::-;;;;;;:::i;:::-;;:::i;6792:89::-;;;;;;:::i;:::-;;:::i;:::-;;1858:117;;;;;;:::i;:::-;1950:18;;1924:7;1950:18;;;;;;;;;;;;1858:117;7185:290;;;;;;:::i;:::-;;:::i;4773:266::-;;;;;;:::i;:::-;;:::i;2178:172::-;;;;;;:::i;:::-;;:::i;2408:149::-;;;;;;:::i;:::-;2523:18;;;;2497:7;2523:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2408:149;2735:166;2818:4;2834:39;686:10:4;2857:7:15;2866:6;2834:8;:39::i;:::-;-1:-1:-1;2890:4:15;2735:166;;;;:::o;3359:317::-;3465:4;3481:36;3491:6;3499:9;3510:6;3481:9;:36::i;:::-;3527:121;3536:6;686:10:4;3558:89:15;3596:6;3558:89;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;;;686:10:4;3558:33:15;;;;;;;;;;:37;:89::i;:::-;3527:8;:121::i;:::-;-1:-1:-1;3665:4:15;3359:317;;;;;:::o;4071:215::-;686:10:4;4159:4:15;4207:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;4159:4;;4175:83;;4198:7;;4207:50;;4246:10;4207:38;:50::i;6792:89::-;6847:27;686:10:4;6867:6:15;6847:5;:27::i;:::-;6792:89;:::o;7185:290::-;7261:26;7290:84;7327:6;7290:84;;;;;;;;;;;;;;;;;:32;7300:7;686:10:4;2408:149:15;:::i;7290:32::-;:36;:84;:36;:84::i;:::-;7261:113;-1:-1:-1;7385:51:15;7394:7;686:10:4;7417:18:15;7385:8;:51::i;:::-;7446:22;7452:7;7461:6;7446:5;:22::i;:::-;7251:224;7185:290;;:::o;4773:266::-;4866:4;4882:129;686:10:4;4905:7:15;4914:96;4953:15;4914:96;;;;;;;;;;;;;;;;;686:10:4;4914:25:15;;;;:11;:25;;;;;;;;;:34;;;;;;;;;;;;:38;:96::i;2178:172::-;2264:4;2280:42;686:10:4;2304:9:15;2315:6;2280:9;:42::i;8630:340::-;8731:19;;;8723:68;;;;;;;2024:2:39;8723:68:15;;;2006:21:39;2063:2;2043:18;;;2036:30;2102:34;2082:18;;;2075:62;2173:6;2153:18;;;2146:34;2197:19;;8723:68:15;;;;;;;;;8809:21;;;8801:68;;;;;;;2429:2:39;8801:68:15;;;2411:21:39;2468:2;2448:18;;;2441:30;2507:34;2487:18;;;2480:62;2578:4;2558:18;;;2551:32;2600:19;;8801:68:15;2227:398:39;8801:68:15;8880:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8931:32;;812:25:39;;;8931:32:15;;785:18:39;8931:32:15;;;;;;;;8630:340;;;:::o;5513:530::-;5618:20;;;5610:70;;;;;;;2832:2:39;5610:70:15;;;2814:21:39;2871:2;2851:18;;;2844:30;2910:34;2890:18;;;2883:62;2981:7;2961:18;;;2954:35;3006:19;;5610:70:15;2630:401:39;5610:70:15;5698:23;;;5690:71;;;;;;;3238:2:39;5690:71:15;;;3220:21:39;3277:2;3257:18;;;3250:30;3316:34;3296:18;;;3289:62;3387:5;3367:18;;;3360:33;3410:19;;5690:71:15;3036:399:39;5690:71:15;5850;5872:6;5850:71;;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;5830:17;;;;:9;:17;;;;;;;;;;;:91;;;;5954:20;;;;;;;:32;;5979:6;5954:24;:32::i;:::-;5931:20;;;;:9;:20;;;;;;;;;;;;:55;;;;6001:35;812:25:39;;;5931:20:15;;6001:35;;;;;;785:18:39;6001:35:15;666:177:39;1766:187:23;1852:7;1887:12;1879:6;;;;1871:29;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1910:9:23;1922:5;1926:1;1922;:5;:::i;:::-;1910:17;1766:187;-1:-1:-1;;;;;1766:187:23:o;868:176::-;926:7;;957:5;961:1;957;:5;:::i;:::-;945:17;;985:1;980;:6;;972:46;;;;;;;4755:2:39;972:46:23;;;4737:21:39;4794:2;4774:18;;;4767:30;4833:29;4813:18;;;4806:57;4880:18;;972:46:23;4553:351:39;972:46:23;1036:1;868:176;-1:-1:-1;;;868:176:23:o;7795:410:15:-;7878:21;;;7870:67;;;;;;;5111:2:39;7870:67:15;;;5093:21:39;5150:2;5130:18;;;5123:30;5189:34;5169:18;;;5162:62;5260:3;5240:18;;;5233:31;5281:19;;7870:67:15;4909:397:39;7870:67:15;8029:68;8052:6;8029:68;;;;;;;;;;;;;;;;;:18;;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;8008:18;;;:9;:18;;;;;;;;;;:89;8122:12;;:24;;8139:6;8122:16;:24::i;:::-;8107:12;:39;8161:37;;812:25:39;;;8187:1:15;;8161:37;;;;;;800:2:39;785:18;8161:37:15;;;;;;;7795:410;;:::o;1308:134:23:-;1366:7;1392:43;1396:1;1399;1392:43;;;;;;;;;;;;;;;;;:3;:43::i;14:196:39:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:254::-;283:6;291;344:2;332:9;323:7;319:23;315:32;312:52;;;360:1;357;350:12;312:52;383:29;402:9;383:29;:::i;:::-;373:39;459:2;444:18;;;;431:32;;-1:-1:-1;;;215:254:39:o;848:328::-;925:6;933;941;994:2;982:9;973:7;969:23;965:32;962:52;;;1010:1;1007;1000:12;962:52;1033:29;1052:9;1033:29;:::i;:::-;1023:39;;1081:38;1115:2;1104:9;1100:18;1081:38;:::i;:::-;1071:48;;1166:2;1155:9;1151:18;1138:32;1128:42;;848:328;;;;;:::o;1181:180::-;1240:6;1293:2;1281:9;1272:7;1268:23;1264:32;1261:52;;;1309:1;1306;1299:12;1261:52;-1:-1:-1;1332:23:39;;1181:180;-1:-1:-1;1181:180:39:o;1366:186::-;1425:6;1478:2;1466:9;1457:7;1453:23;1449:32;1446:52;;;1494:1;1491;1484:12;1446:52;1517:29;1536:9;1517:29;:::i;1557:260::-;1625:6;1633;1686:2;1674:9;1665:7;1661:23;1657:32;1654:52;;;1702:1;1699;1692:12;1654:52;1725:29;1744:9;1725:29;:::i;:::-;1715:39;;1773:38;1807:2;1796:9;1792:18;1773:38;:::i;:::-;1763:48;;1557:260;;;;;:::o;3440:656::-;3552:4;3581:2;3610;3599:9;3592:21;3642:6;3636:13;3685:6;3680:2;3669:9;3665:18;3658:34;3710:1;3720:140;3734:6;3731:1;3728:13;3720:140;;;3829:14;;;3825:23;;3819:30;3795:17;;;3814:2;3791:26;3784:66;3749:10;;3720:140;;;3878:6;3875:1;3872:13;3869:91;;;3948:1;3943:2;3934:6;3923:9;3919:22;3915:31;3908:42;3869:91;-1:-1:-1;4012:2:39;4000:15;4017:66;3996:88;3981:104;;;;4087:2;3977:113;;3440:656;-1:-1:-1;;;3440:656:39:o;4101:184::-;4153:77;4150:1;4143:88;4250:4;4247:1;4240:15;4274:4;4271:1;4264:15;4290:125;4330:4;4358:1;4355;4352:8;4349:34;;;4363:18;;:::i;:::-;-1:-1:-1;4400:9:39;;4290:125::o;4420:128::-;4460:3;4491:1;4487:6;4484:1;4481:13;4478:39;;;4497:18;;:::i;:::-;-1:-1:-1;4533:9:39;;4420:128::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "646800", + "executionCost": "683", + "totalCost": "647483" + }, + "external": { + "allowance(address,address)": "infinite", + "approve(address,uint256)": "24562", + "balanceOf(address)": "2539", + "burn(uint256)": "infinite", + "burnFrom(address,uint256)": "infinite", + "decreaseAllowance(address,uint256)": "infinite", + "increaseAllowance(address,uint256)": "26985", + "totalSupply()": "2327", + "transfer(address,uint256)": "infinite", + "transferFrom(address,address,uint256)": "infinite" + }, + "internal": { + "_approve(address,address,uint256)": "infinite", + "_beforeTokenTransfer(address,address,uint256)": "infinite", + "_burn(address,uint256)": "infinite", + "_burnFrom(address,uint256)": "infinite", + "_mint(address,uint256)": "infinite", + "_transfer(address,address,uint256)": "infinite" + } + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "burn(uint256)": "42966c68", + "burnFrom(address,uint256)": "79cc6790", + "decreaseAllowance(address,uint256)": "a457c2d7", + "increaseAllowance(address,uint256)": "39509351", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"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\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20Mintable}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin guidelines: functions revert instead of returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.approve(address spender, uint256 amount)\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for `accounts`'s tokens of at least `amount`.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ERC20/ERC20Custom.sol\":\"ERC20Custom\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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 payable(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}\",\"keccak256\":\"0x60d51a32063a4975dbf9433d38f5849173527da72f007c38053274e06698cb54\",\"license\":\"MIT\"},\"contracts/ERC20/ERC20Custom.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\n\\n// Due to compiling issues, _name, _symbol, and _decimals were removed\\n\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20Mintable}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * We have followed general OpenZeppelin guidelines: functions revert instead\\n * of returning `false` on failure. This behavior is nonetheless conventional\\n * and does not conflict with the expectations of ERC20 applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\ncontract ERC20Custom is Context, IERC20 {\\n using SafeMath for uint256;\\n\\n mapping (address => uint256) internal _balances;\\n\\n mapping (address => mapping (address => uint256)) internal _allowances;\\n\\n uint256 private _totalSupply;\\n\\n /**\\n * @dev See {IERC20-totalSupply}.\\n */\\n function totalSupply() public view override returns (uint256) {\\n return _totalSupply;\\n }\\n\\n /**\\n * @dev See {IERC20-balanceOf}.\\n */\\n function balanceOf(address account) public view override returns (uint256) {\\n return _balances[account];\\n }\\n\\n /**\\n * @dev See {IERC20-transfer}.\\n *\\n * Requirements:\\n *\\n * - `recipient` cannot be the zero address.\\n * - the caller must have a balance of at least `amount`.\\n */\\n function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\\n _transfer(_msgSender(), recipient, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-allowance}.\\n */\\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n return _allowances[owner][spender];\\n }\\n\\n /**\\n * @dev See {IERC20-approve}.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.approve(address spender, uint256 amount)\\n */\\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n _approve(_msgSender(), spender, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-transferFrom}.\\n *\\n * Emits an {Approval} event indicating the updated allowance. This is not\\n * required by the EIP. See the note at the beginning of {ERC20};\\n *\\n * Requirements:\\n * - `sender` and `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n * - the caller must have allowance for `sender`'s tokens of at least\\n * `amount`.\\n */\\n function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {\\n _transfer(sender, recipient, amount);\\n _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \\\"ERC20: transfer amount exceeds allowance\\\"));\\n return true;\\n }\\n\\n /**\\n * @dev Atomically increases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\\n return true;\\n }\\n\\n /**\\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `spender` must have allowance for the caller of at least\\n * `subtractedValue`.\\n */\\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \\\"ERC20: decreased allowance below zero\\\"));\\n return true;\\n }\\n\\n /**\\n * @dev Moves tokens `amount` from `sender` to `recipient`.\\n *\\n * This is internal function is equivalent to {transfer}, and can be used to\\n * e.g. implement automatic token fees, slashing mechanisms, etc.\\n *\\n * Emits a {Transfer} event.\\n *\\n * Requirements:\\n *\\n * - `sender` cannot be the zero address.\\n * - `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n */\\n function _transfer(address sender, address recipient, uint256 amount) internal virtual {\\n require(sender != address(0), \\\"ERC20: transfer from the zero address\\\");\\n require(recipient != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(sender, recipient, amount);\\n\\n _balances[sender] = _balances[sender].sub(amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n _balances[recipient] = _balances[recipient].add(amount);\\n emit Transfer(sender, recipient, amount);\\n }\\n\\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n * the total supply.\\n *\\n * Emits a {Transfer} event with `from` set to the zero address.\\n *\\n * Requirements\\n *\\n * - `to` cannot be the zero address.\\n */\\n function _mint(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n _beforeTokenTransfer(address(0), account, amount);\\n\\n _totalSupply = _totalSupply.add(amount);\\n _balances[account] = _balances[account].add(amount);\\n emit Transfer(address(0), account, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from the caller.\\n *\\n * See {ERC20-_burn}.\\n */\\n function burn(uint256 amount) public virtual {\\n _burn(_msgSender(), amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, deducting from the caller's\\n * allowance.\\n *\\n * See {ERC20-_burn} and {ERC20-allowance}.\\n *\\n * Requirements:\\n *\\n * - the caller must have allowance for `accounts`'s tokens of at least\\n * `amount`.\\n */\\n function burnFrom(address account, uint256 amount) public virtual {\\n uint256 decreasedAllowance = allowance(account, _msgSender()).sub(amount, \\\"ERC20: burn amount exceeds allowance\\\");\\n\\n _approve(account, _msgSender(), decreasedAllowance);\\n _burn(account, amount);\\n }\\n\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, reducing the\\n * total supply.\\n *\\n * Emits a {Transfer} event with `to` set to the zero address.\\n *\\n * Requirements\\n *\\n * - `account` cannot be the zero address.\\n * - `account` must have at least `amount` tokens.\\n */\\n function _burn(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n _beforeTokenTransfer(account, address(0), amount);\\n\\n _balances[account] = _balances[account].sub(amount, \\\"ERC20: burn amount exceeds balance\\\");\\n _totalSupply = _totalSupply.sub(amount);\\n emit Transfer(account, address(0), amount);\\n }\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\\n *\\n * This is internal function is equivalent to `approve`, and can be used to\\n * e.g. set automatic allowances for certain subsystems, etc.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `owner` cannot be the zero address.\\n * - `spender` cannot be the zero address.\\n */\\n function _approve(address owner, address spender, uint256 amount) internal virtual {\\n require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n _allowances[owner][spender] = amount;\\n emit Approval(owner, spender, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`.`amount` is then deducted\\n * from the caller's allowance.\\n *\\n * See {_burn} and {_approve}.\\n */\\n function _burnFrom(address account, uint256 amount) internal virtual {\\n _burn(account, amount);\\n _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, \\\"ERC20: burn amount exceeds allowance\\\"));\\n }\\n\\n /**\\n * @dev Hook that is called before any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of `from`'s tokens\\n * will be to transferred to `to`.\\n * - when `from` is zero, `amount` tokens will be minted for `to`.\\n * - when `to` is zero, `amount` of `from`'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:using-hooks.adoc[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }\\n}\",\"keccak256\":\"0xff03c1b74f9769a972c7a45f1876f8d14f02692d6994e23a2e61cb7b47f2dcc7\",\"license\":\"MIT\"},\"contracts/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {ERC20Detailed}.\\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\\n\",\"keccak256\":\"0x057bec1fafd7ca222117f41fcfb9c8dc1f61aa30e5a0222c981196e9113de7e6\",\"license\":\"MIT\"},\"contracts/Math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\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\\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 * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\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 * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\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 * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (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) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts 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 * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts 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 * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\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}\",\"keccak256\":\"0x43a20f7cf4c4319f81450d53779455e88a7ab80bdfc43925156ed4083b74a180\",\"license\":\"MIT\"},\"contracts/Utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11 <0.9.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}\",\"keccak256\":\"0xe392046e85c78eea7d4c1237af52a5fc06c097b7a480ea4f20159670b4a582a4\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 4937, + "contract": "contracts/ERC20/ERC20Custom.sol:ERC20Custom", + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 4943, + "contract": "contracts/ERC20/ERC20Custom.sol:ERC20Custom", + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))" + }, + { + "astId": 4945, + "contract": "contracts/ERC20/ERC20Custom.sol:ERC20Custom", + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32", + "value": "t_mapping(t_address,t_uint256)" + }, + "t_mapping(t_address,t_uint256)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/ERC20/IERC20.sol": { + "IERC20": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "Interface of the ERC20 standard as defined in the EIP. Does not include the optional functions; to access them see {ERC20Detailed}.", + "events": { + "Approval(address,address,uint256)": { + "details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance." + }, + "Transfer(address,address,uint256)": { + "details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero." + } + }, + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called." + }, + "approve(address,uint256)": { + "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event." + }, + "balanceOf(address)": { + "details": "Returns the amount of tokens owned by `account`." + }, + "totalSupply()": { + "details": "Returns the amount of tokens in existence." + }, + "transfer(address,uint256)": { + "details": "Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + }, + "transferFrom(address,address,uint256)": { + "details": "Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + } + }, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"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. Does not include the optional functions; to access them see {ERC20Detailed}.\",\"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\":{\"contracts/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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 payable(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}\",\"keccak256\":\"0x60d51a32063a4975dbf9433d38f5849173527da72f007c38053274e06698cb54\",\"license\":\"MIT\"},\"contracts/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {ERC20Detailed}.\\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\\n\",\"keccak256\":\"0x057bec1fafd7ca222117f41fcfb9c8dc1f61aa30e5a0222c981196e9113de7e6\",\"license\":\"MIT\"},\"contracts/Math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\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\\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 * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\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 * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\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 * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (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) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts 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 * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts 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 * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\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}\",\"keccak256\":\"0x43a20f7cf4c4319f81450d53779455e88a7ab80bdfc43925156ed4083b74a180\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/ERC20/IERC20_Detailed.sol": { + "IERC20_Detailed": { + "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": [], + "name": "_decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "_name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "_symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "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. Does not include the optional functions; to access them see {ERC20Detailed}.", + "events": { + "Approval(address,address,uint256)": { + "details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance." + }, + "Transfer(address,address,uint256)": { + "details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero." + } + }, + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called." + }, + "approve(address,uint256)": { + "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event." + }, + "balanceOf(address)": { + "details": "Returns the amount of tokens owned by `account`." + }, + "totalSupply()": { + "details": "Returns the amount of tokens in existence." + }, + "transfer(address,uint256)": { + "details": "Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + }, + "transferFrom(address,address,uint256)": { + "details": "Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + } + }, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "_decimals()": "32424aa3", + "_name()": "d28d8852", + "_symbol()": "b09f1266", + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"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\":[],\"name\":\"_decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"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. Does not include the optional functions; to access them see {ERC20Detailed}.\",\"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\":{\"contracts/ERC20/IERC20_Detailed.sol\":\"IERC20_Detailed\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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 payable(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}\",\"keccak256\":\"0x60d51a32063a4975dbf9433d38f5849173527da72f007c38053274e06698cb54\",\"license\":\"MIT\"},\"contracts/ERC20/IERC20_Detailed.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {ERC20Detailed}.\\n */\\ninterface IERC20_Detailed {\\n function _name() external view returns (string memory);\\n function _symbol() external view returns (string memory);\\n function _decimals() external view returns (uint8);\\n\\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\\n\",\"keccak256\":\"0xddafe5d65b626607f10eefd6414014cbf3ab8805515818be1da33733ac7822ae\",\"license\":\"MIT\"},\"contracts/Math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\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\\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 * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\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 * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\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 * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (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) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts 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 * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts 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 * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\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}\",\"keccak256\":\"0x43a20f7cf4c4319f81450d53779455e88a7ab80bdfc43925156ed4083b74a180\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/ERC20/SafeERC20.sol": { + "SafeERC20": { + "abi": [], + "devdoc": { + "details": "Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.", + "kind": "dev", + "methods": {}, + "title": "SafeERC20", + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ec8286e5eb87da5a9c4d95867d03d290fa8c7c52889b1c94fb5902616732b3a164736f6c634300080a0033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEC DUP3 DUP7 0xE5 0xEB DUP8 0xDA GAS SWAP13 0x4D SWAP6 DUP7 PUSH30 0x3D290FA8C7C52889B1C94FB5902616732B3A164736F6C634300080A0033 ", + "sourceMap": "603:3104:18:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;603:3104:18;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ec8286e5eb87da5a9c4d95867d03d290fa8c7c52889b1c94fb5902616732b3a164736f6c634300080a0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEC DUP3 DUP7 0xE5 0xEB DUP8 0xDA GAS SWAP13 0x4D SWAP6 DUP7 PUSH30 0x3D290FA8C7C52889B1C94FB5902616732B3A164736F6C634300080A0033 ", + "sourceMap": "603:3104:18:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17200", + "executionCost": "103", + "totalCost": "17303" + }, + "internal": { + "_callOptionalReturn(contract IERC20,bytes memory)": "infinite", + "safeApprove(contract IERC20,address,uint256)": "infinite", + "safeDecreaseAllowance(contract IERC20,address,uint256)": "infinite", + "safeIncreaseAllowance(contract IERC20,address,uint256)": "infinite", + "safeTransfer(contract IERC20,address,uint256)": "infinite", + "safeTransferFrom(contract IERC20,address,address,uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ERC20/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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 payable(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}\",\"keccak256\":\"0x60d51a32063a4975dbf9433d38f5849173527da72f007c38053274e06698cb54\",\"license\":\"MIT\"},\"contracts/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {ERC20Detailed}.\\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\\n\",\"keccak256\":\"0x057bec1fafd7ca222117f41fcfb9c8dc1f61aa30e5a0222c981196e9113de7e6\",\"license\":\"MIT\"},\"contracts/ERC20/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n using SafeMath for uint256;\\n using Address for address;\\n\\n function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n }\\n\\n function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n }\\n\\n /**\\n * @dev Deprecated. This function has issues similar to the ones found in\\n * {IERC20-approve}, and its usage is discouraged.\\n *\\n * Whenever possible, use {safeIncreaseAllowance} and\\n * {safeDecreaseAllowance} instead.\\n */\\n function safeApprove(IERC20 token, address spender, uint256 value) internal {\\n // safeApprove should only be called when setting an initial allowance,\\n // or when resetting it to zero. To increase and decrease it, use\\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n // solhint-disable-next-line max-line-length\\n require((value == 0) || (token.allowance(address(this), spender) == 0),\\n \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n );\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n }\\n\\n function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n uint256 newAllowance = token.allowance(address(this), spender).add(value);\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n }\\n\\n function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n uint256 newAllowance = token.allowance(address(this), spender).sub(value, \\\"SafeERC20: decreased allowance below zero\\\");\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n */\\n function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\\n // the target address contains contract code and also asserts for success in the low-level call.\\n\\n bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n if (returndata.length > 0) { // Return data is optional\\n // solhint-disable-next-line max-line-length\\n require(abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n }\\n }\\n}\",\"keccak256\":\"0xe8c2c7e61079bea734091954fd1f6077e566d1b15f004b9aa103fc453f4ca2b7\",\"license\":\"MIT\"},\"contracts/Math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\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\\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 * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\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 * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\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 * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (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) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts 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 * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts 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 * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\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}\",\"keccak256\":\"0x43a20f7cf4c4319f81450d53779455e88a7ab80bdfc43925156ed4083b74a180\",\"license\":\"MIT\"},\"contracts/Utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11 <0.9.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}\",\"keccak256\":\"0xe392046e85c78eea7d4c1237af52a5fc06c097b7a480ea4f20159670b4a582a4\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/ERC20/draft-ERC20Permit.sol": { + "ERC20Permit": { + "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": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "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" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "Implementation of the 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. _Available since v3.4._", + "kind": "dev", + "methods": { + "DOMAIN_SEPARATOR()": { + "details": "See {IERC20Permit-DOMAIN_SEPARATOR}." + }, + "allowance(address,address)": { + "details": "See {IERC20-allowance}." + }, + "approve(address,uint256)": { + "details": "See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.approve(address spender, uint256 amount)" + }, + "balanceOf(address)": { + "details": "See {IERC20-balanceOf}." + }, + "burn(uint256)": { + "details": "Destroys `amount` tokens from the caller. See {ERC20-_burn}." + }, + "burnFrom(address,uint256)": { + "details": "Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for `accounts`'s tokens of at least `amount`." + }, + "constructor": { + "details": "Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\"1\"`. It's a good idea to use the same `name` that is defined as the ERC20 token name." + }, + "decreaseAllowance(address,uint256)": { + "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`." + }, + "increaseAllowance(address,uint256)": { + "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address." + }, + "nonces(address)": { + "details": "See {IERC20Permit-nonces}." + }, + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": { + "details": "See {IERC20Permit-permit}." + }, + "totalSupply()": { + "details": "See {IERC20-totalSupply}." + }, + "transfer(address,uint256)": { + "details": "See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`." + }, + "transferFrom(address,address,uint256)": { + "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`." + } + }, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "DOMAIN_SEPARATOR()": "3644e515", + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "burn(uint256)": "42966c68", + "burnFrom(address,uint256)": "79cc6790", + "decreaseAllowance(address,uint256)": "a457c2d7", + "increaseAllowance(address,uint256)": "39509351", + "nonces(address)": "7ecebe00", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"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\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"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\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the 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. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.approve(address spender, uint256 amount)\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for `accounts`'s tokens of at least `amount`.\"},\"constructor\":{\"details\":\"Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\\\"1\\\"`. It's a good idea to use the same `name` that is defined as the ERC20 token name.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ERC20/draft-ERC20Permit.sol\":\"ERC20Permit\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^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(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) 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\",\"keccak256\":\"0x3aab711a5f9a5a5a394191e928cc8258e8a243e855bb0275e7834f9686383277\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Counters.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary Counters {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0x78450f4e3b722cce467b21e285f72ce5eaf361e9ba9dd2241a413926246773cd\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n *\\n * Documentation for signature generation:\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n // Check the signature length\\n // - case 65: r,s,v signature (standard)\\n // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._\\n if (signature.length == 65) {\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n return recover(hash, v, r, s);\\n } else if (signature.length == 64) {\\n bytes32 r;\\n bytes32 vs;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n assembly {\\n r := mload(add(signature, 0x20))\\n vs := mload(add(signature, 0x40))\\n }\\n return recover(hash, r, vs);\\n } else {\\n revert(\\\"ECDSA: invalid signature length\\\");\\n }\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `r` and `vs` short-signature fields separately.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n *\\n * _Available since v4.2._\\n */\\n function recover(\\n bytes32 hash,\\n bytes32 r,\\n bytes32 vs\\n ) internal pure returns (address) {\\n bytes32 s;\\n uint8 v;\\n assembly {\\n s := and(vs, 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\\n v := add(shr(255, vs), 27)\\n }\\n return recover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `v`, `r` and `s` signature fields separately.\\n */\\n function recover(\\n bytes32 hash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal pure returns (address) {\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (281): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (282): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n require(\\n uint256(s) <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0,\\n \\\"ECDSA: invalid signature 's' value\\\"\\n );\\n require(v == 27 || v == 28, \\\"ECDSA: invalid signature 'v' value\\\");\\n\\n // If the signature is valid (and not malleable), return the signer address\\n address signer = ecrecover(hash, v, r, s);\\n require(signer != address(0), \\\"ECDSA: invalid signature\\\");\\n\\n return signer;\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Typed Data, created from a\\n * `domainSeparator` and a `structHash`. This produces hash corresponding\\n * to the one signed with the\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n * JSON-RPC method as part of EIP-712.\\n *\\n * See {recover}.\\n */\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n }\\n}\\n\",\"keccak256\":\"0x828774372910d18e7337bc31a288d786748af4cd9da80222467e486ed1d569ab\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./ECDSA.sol\\\";\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\\n *\\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\\n *\\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\\n * ({_hashTypedDataV4}).\\n *\\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\\n * the chain id to protect against replay attacks on an eventual fork of the chain.\\n *\\n * NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method\\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\\n *\\n * _Available since v3.4._\\n */\\nabstract contract EIP712 {\\n /* solhint-disable var-name-mixedcase */\\n // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to\\n // invalidate the cached domain separator if the chain id changes.\\n bytes32 private immutable _CACHED_DOMAIN_SEPARATOR;\\n uint256 private immutable _CACHED_CHAIN_ID;\\n\\n bytes32 private immutable _HASHED_NAME;\\n bytes32 private immutable _HASHED_VERSION;\\n bytes32 private immutable _TYPE_HASH;\\n\\n /* solhint-enable var-name-mixedcase */\\n\\n /**\\n * @dev Initializes the domain separator and parameter caches.\\n *\\n * The meaning of `name` and `version` is specified in\\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\\n *\\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\\n * - `version`: the current major version of the signing domain.\\n *\\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\\n * contract upgrade].\\n */\\n constructor(string memory name, string memory version) {\\n bytes32 hashedName = keccak256(bytes(name));\\n bytes32 hashedVersion = keccak256(bytes(version));\\n bytes32 typeHash = keccak256(\\n \\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"\\n );\\n _HASHED_NAME = hashedName;\\n _HASHED_VERSION = hashedVersion;\\n _CACHED_CHAIN_ID = block.chainid;\\n _CACHED_DOMAIN_SEPARATOR = _buildDomainSeparator(typeHash, hashedName, hashedVersion);\\n _TYPE_HASH = typeHash;\\n }\\n\\n /**\\n * @dev Returns the domain separator for the current chain.\\n */\\n function _domainSeparatorV4() internal view returns (bytes32) {\\n if (block.chainid == _CACHED_CHAIN_ID) {\\n return _CACHED_DOMAIN_SEPARATOR;\\n } else {\\n return _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION);\\n }\\n }\\n\\n function _buildDomainSeparator(\\n bytes32 typeHash,\\n bytes32 nameHash,\\n bytes32 versionHash\\n ) private view returns (bytes32) {\\n return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this)));\\n }\\n\\n /**\\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\\n * function returns the hash of the fully encoded EIP712 message for this domain.\\n *\\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\\n *\\n * ```solidity\\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\\n * keccak256(\\\"Mail(address to,string contents)\\\"),\\n * mailTo,\\n * keccak256(bytes(mailContents))\\n * )));\\n * address signer = ECDSA.recover(digest, signature);\\n * ```\\n */\\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\\n return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash);\\n }\\n}\\n\",\"keccak256\":\"0xba18d725602452307e5b278ed4566616c63792d89f3a0388a6f285428c26e681\",\"license\":\"MIT\"},\"contracts/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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 payable(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}\",\"keccak256\":\"0x60d51a32063a4975dbf9433d38f5849173527da72f007c38053274e06698cb54\",\"license\":\"MIT\"},\"contracts/ERC20/ERC20Custom.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\n\\n// Due to compiling issues, _name, _symbol, and _decimals were removed\\n\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20Mintable}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * We have followed general OpenZeppelin guidelines: functions revert instead\\n * of returning `false` on failure. This behavior is nonetheless conventional\\n * and does not conflict with the expectations of ERC20 applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\ncontract ERC20Custom is Context, IERC20 {\\n using SafeMath for uint256;\\n\\n mapping (address => uint256) internal _balances;\\n\\n mapping (address => mapping (address => uint256)) internal _allowances;\\n\\n uint256 private _totalSupply;\\n\\n /**\\n * @dev See {IERC20-totalSupply}.\\n */\\n function totalSupply() public view override returns (uint256) {\\n return _totalSupply;\\n }\\n\\n /**\\n * @dev See {IERC20-balanceOf}.\\n */\\n function balanceOf(address account) public view override returns (uint256) {\\n return _balances[account];\\n }\\n\\n /**\\n * @dev See {IERC20-transfer}.\\n *\\n * Requirements:\\n *\\n * - `recipient` cannot be the zero address.\\n * - the caller must have a balance of at least `amount`.\\n */\\n function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\\n _transfer(_msgSender(), recipient, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-allowance}.\\n */\\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n return _allowances[owner][spender];\\n }\\n\\n /**\\n * @dev See {IERC20-approve}.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.approve(address spender, uint256 amount)\\n */\\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n _approve(_msgSender(), spender, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-transferFrom}.\\n *\\n * Emits an {Approval} event indicating the updated allowance. This is not\\n * required by the EIP. See the note at the beginning of {ERC20};\\n *\\n * Requirements:\\n * - `sender` and `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n * - the caller must have allowance for `sender`'s tokens of at least\\n * `amount`.\\n */\\n function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {\\n _transfer(sender, recipient, amount);\\n _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \\\"ERC20: transfer amount exceeds allowance\\\"));\\n return true;\\n }\\n\\n /**\\n * @dev Atomically increases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\\n return true;\\n }\\n\\n /**\\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `spender` must have allowance for the caller of at least\\n * `subtractedValue`.\\n */\\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \\\"ERC20: decreased allowance below zero\\\"));\\n return true;\\n }\\n\\n /**\\n * @dev Moves tokens `amount` from `sender` to `recipient`.\\n *\\n * This is internal function is equivalent to {transfer}, and can be used to\\n * e.g. implement automatic token fees, slashing mechanisms, etc.\\n *\\n * Emits a {Transfer} event.\\n *\\n * Requirements:\\n *\\n * - `sender` cannot be the zero address.\\n * - `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n */\\n function _transfer(address sender, address recipient, uint256 amount) internal virtual {\\n require(sender != address(0), \\\"ERC20: transfer from the zero address\\\");\\n require(recipient != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(sender, recipient, amount);\\n\\n _balances[sender] = _balances[sender].sub(amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n _balances[recipient] = _balances[recipient].add(amount);\\n emit Transfer(sender, recipient, amount);\\n }\\n\\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n * the total supply.\\n *\\n * Emits a {Transfer} event with `from` set to the zero address.\\n *\\n * Requirements\\n *\\n * - `to` cannot be the zero address.\\n */\\n function _mint(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n _beforeTokenTransfer(address(0), account, amount);\\n\\n _totalSupply = _totalSupply.add(amount);\\n _balances[account] = _balances[account].add(amount);\\n emit Transfer(address(0), account, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from the caller.\\n *\\n * See {ERC20-_burn}.\\n */\\n function burn(uint256 amount) public virtual {\\n _burn(_msgSender(), amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, deducting from the caller's\\n * allowance.\\n *\\n * See {ERC20-_burn} and {ERC20-allowance}.\\n *\\n * Requirements:\\n *\\n * - the caller must have allowance for `accounts`'s tokens of at least\\n * `amount`.\\n */\\n function burnFrom(address account, uint256 amount) public virtual {\\n uint256 decreasedAllowance = allowance(account, _msgSender()).sub(amount, \\\"ERC20: burn amount exceeds allowance\\\");\\n\\n _approve(account, _msgSender(), decreasedAllowance);\\n _burn(account, amount);\\n }\\n\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, reducing the\\n * total supply.\\n *\\n * Emits a {Transfer} event with `to` set to the zero address.\\n *\\n * Requirements\\n *\\n * - `account` cannot be the zero address.\\n * - `account` must have at least `amount` tokens.\\n */\\n function _burn(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n _beforeTokenTransfer(account, address(0), amount);\\n\\n _balances[account] = _balances[account].sub(amount, \\\"ERC20: burn amount exceeds balance\\\");\\n _totalSupply = _totalSupply.sub(amount);\\n emit Transfer(account, address(0), amount);\\n }\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\\n *\\n * This is internal function is equivalent to `approve`, and can be used to\\n * e.g. set automatic allowances for certain subsystems, etc.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `owner` cannot be the zero address.\\n * - `spender` cannot be the zero address.\\n */\\n function _approve(address owner, address spender, uint256 amount) internal virtual {\\n require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n _allowances[owner][spender] = amount;\\n emit Approval(owner, spender, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`.`amount` is then deducted\\n * from the caller's allowance.\\n *\\n * See {_burn} and {_approve}.\\n */\\n function _burnFrom(address account, uint256 amount) internal virtual {\\n _burn(account, amount);\\n _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, \\\"ERC20: burn amount exceeds allowance\\\"));\\n }\\n\\n /**\\n * @dev Hook that is called before any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of `from`'s tokens\\n * will be to transferred to `to`.\\n * - when `from` is zero, `amount` tokens will be minted for `to`.\\n * - when `to` is zero, `amount` of `from`'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:using-hooks.adoc[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }\\n}\",\"keccak256\":\"0xff03c1b74f9769a972c7a45f1876f8d14f02692d6994e23a2e61cb7b47f2dcc7\",\"license\":\"MIT\"},\"contracts/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {ERC20Detailed}.\\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\\n\",\"keccak256\":\"0x057bec1fafd7ca222117f41fcfb9c8dc1f61aa30e5a0222c981196e9113de7e6\",\"license\":\"MIT\"},\"contracts/ERC20/draft-ERC20Permit.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./ERC20Custom.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Counters.sol\\\";\\n\\n/**\\n * @dev Implementation 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 *\\n * _Available since v3.4._\\n */\\nabstract contract ERC20Permit is ERC20Custom, IERC20Permit, EIP712 {\\n using Counters for Counters.Counter;\\n\\n mapping(address => Counters.Counter) private _nonces;\\n\\n // solhint-disable-next-line var-name-mixedcase\\n bytes32 private immutable _PERMIT_TYPEHASH = keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\");\\n\\n /**\\n * @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\\\"1\\\"`.\\n *\\n * It's a good idea to use the same `name` that is defined as the ERC20 token name.\\n */\\n constructor(string memory name) EIP712(name, \\\"1\\\") {}\\n\\n /**\\n * @dev See {IERC20Permit-permit}.\\n */\\n function permit(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) public virtual override {\\n require(block.timestamp <= deadline, \\\"ERC20Permit: expired deadline\\\");\\n\\n bytes32 structHash = keccak256(abi.encode(_PERMIT_TYPEHASH, owner, spender, value, _useNonce(owner), deadline));\\n\\n bytes32 hash = _hashTypedDataV4(structHash);\\n\\n address signer = ECDSA.recover(hash, v, r, s);\\n require(signer == owner, \\\"ERC20Permit: invalid signature\\\");\\n\\n _approve(owner, spender, value);\\n }\\n\\n /**\\n * @dev See {IERC20Permit-nonces}.\\n */\\n function nonces(address owner) public view virtual override returns (uint256) {\\n return _nonces[owner].current();\\n }\\n\\n /**\\n * @dev See {IERC20Permit-DOMAIN_SEPARATOR}.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view override returns (bytes32) {\\n return _domainSeparatorV4();\\n }\\n\\n /**\\n * @dev \\\"Consume a nonce\\\": return the current value and increment.\\n *\\n * _Available since v4.1._\\n */\\n function _useNonce(address owner) internal virtual returns (uint256 current) {\\n Counters.Counter storage nonce = _nonces[owner];\\n current = nonce.current();\\n nonce.increment();\\n }\\n}\\n\",\"keccak256\":\"0xefbc2b0babe05f093cd2aae981fb80413601ffa53704fad7376cbdd14ee6d0ab\",\"license\":\"MIT\"},\"contracts/Math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\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\\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 * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\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 * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\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 * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (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) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts 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 * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts 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 * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\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}\",\"keccak256\":\"0x43a20f7cf4c4319f81450d53779455e88a7ab80bdfc43925156ed4083b74a180\",\"license\":\"MIT\"},\"contracts/Utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11 <0.9.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}\",\"keccak256\":\"0xe392046e85c78eea7d4c1237af52a5fc06c097b7a480ea4f20159670b4a582a4\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 4937, + "contract": "contracts/ERC20/draft-ERC20Permit.sol:ERC20Permit", + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 4943, + "contract": "contracts/ERC20/draft-ERC20Permit.sol:ERC20Permit", + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))" + }, + { + "astId": 4945, + "contract": "contracts/ERC20/draft-ERC20Permit.sol:ERC20Permit", + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256" + }, + { + "astId": 5851, + "contract": "contracts/ERC20/draft-ERC20Permit.sol:ERC20Permit", + "label": "_nonces", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_address,t_struct(Counter)41_storage)" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32", + "value": "t_mapping(t_address,t_uint256)" + }, + "t_mapping(t_address,t_struct(Counter)41_storage)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => struct Counters.Counter)", + "numberOfBytes": "32", + "value": "t_struct(Counter)41_storage" + }, + "t_mapping(t_address,t_uint256)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_struct(Counter)41_storage": { + "encoding": "inplace", + "label": "struct Counters.Counter", + "members": [ + { + "astId": 40, + "contract": "contracts/ERC20/draft-ERC20Permit.sol:ERC20Permit", + "label": "_value", + "offset": 0, + "slot": "0", + "type": "t_uint256" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/Governance/AccessControl.sol": { + "AccessControl": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "Contract module that allows children to implement role-based access control mechanisms. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ``` bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ``` function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it.", + "events": { + "RoleAdminChanged(bytes32,bytes32,bytes32)": { + "details": "Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._" + }, + "RoleGranted(bytes32,address,address)": { + "details": "Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {_setupRole}." + }, + "RoleRevoked(bytes32,address,address)": { + "details": "Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)" + } + }, + "kind": "dev", + "methods": { + "getRoleAdmin(bytes32)": { + "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." + }, + "getRoleMember(bytes32,uint256)": { + "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information." + }, + "getRoleMemberCount(bytes32)": { + "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role." + }, + "grantRole(bytes32,address)": { + "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role." + }, + "hasRole(bytes32,address)": { + "details": "Returns `true` if `account` has been granted `role`." + }, + "renounceRole(bytes32,address)": { + "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`." + }, + "revokeRole(bytes32,address)": { + "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role." + } + }, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ``` bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ``` function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it.\",\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Governance/AccessControl.sol\":\"AccessControl\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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 payable(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}\",\"keccak256\":\"0x60d51a32063a4975dbf9433d38f5849173527da72f007c38053274e06698cb54\",\"license\":\"MIT\"},\"contracts/Governance/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Utils/EnumerableSet.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\nimport \\\"../Common/Context.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it.\\n */\\nabstract contract AccessControl is Context {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n using Address for address;\\n\\n struct RoleData {\\n EnumerableSet.AddressSet members;\\n bytes32 adminRole;\\n }\\n\\n mapping (bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; //bytes32(uint256(0x4B437D01b575618140442A4975db38850e3f8f5f) << 96);\\n\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view returns (bool) {\\n return _roles[role].members.contains(account);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view returns (uint256) {\\n return _roles[role].members.length();\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view returns (address) {\\n return _roles[role].members.at(index);\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to grant\\\");\\n\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to revoke\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) public virtual {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);\\n _roles[role].adminRole = adminRole;\\n }\\n\\n function _grantRole(bytes32 role, address account) private {\\n if (_roles[role].members.add(account)) {\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n function _revokeRole(bytes32 role, address account) private {\\n if (_roles[role].members.remove(account)) {\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x749b2c0e515a59c6d03cf4908a252ebc5d2b482ca3fd7ec997d1143c302f4e89\",\"license\":\"MIT\"},\"contracts/Utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11 <0.9.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}\",\"keccak256\":\"0xe392046e85c78eea7d4c1237af52a5fc06c097b7a480ea4f20159670b4a582a4\",\"license\":\"MIT\"},\"contracts/Utils/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\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.0.0, only sets of type `address` (`AddressSet`) and `uint256`\\n * (`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 // 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(bytes20(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(bytes20(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(bytes20(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(bytes20(_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\",\"keccak256\":\"0x685f4133ba76f930e3761c1d1414d7f6e55dd40d58b4b210cb392662a6cbd27d\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 6023, + "contract": "contracts/Governance/AccessControl.sol:AccessControl", + "label": "_roles", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_bytes32,t_struct(RoleData)6018_storage)" + } + ], + "types": { + "t_array(t_bytes32)dyn_storage": { + "base": "t_bytes32", + "encoding": "dynamic_array", + "label": "bytes32[]", + "numberOfBytes": "32" + }, + "t_bytes32": { + "encoding": "inplace", + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)6018_storage)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => struct AccessControl.RoleData)", + "numberOfBytes": "32", + "value": "t_struct(RoleData)6018_storage" + }, + "t_mapping(t_bytes32,t_uint256)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_struct(AddressSet)11740_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.AddressSet", + "members": [ + { + "astId": 11739, + "contract": "contracts/Governance/AccessControl.sol:AccessControl", + "label": "_inner", + "offset": 0, + "slot": "0", + "type": "t_struct(Set)11554_storage" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleData)6018_storage": { + "encoding": "inplace", + "label": "struct AccessControl.RoleData", + "members": [ + { + "astId": 6015, + "contract": "contracts/Governance/AccessControl.sol:AccessControl", + "label": "members", + "offset": 0, + "slot": "0", + "type": "t_struct(AddressSet)11740_storage" + }, + { + "astId": 6017, + "contract": "contracts/Governance/AccessControl.sol:AccessControl", + "label": "adminRole", + "offset": 0, + "slot": "2", + "type": "t_bytes32" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Set)11554_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.Set", + "members": [ + { + "astId": 11549, + "contract": "contracts/Governance/AccessControl.sol:AccessControl", + "label": "_values", + "offset": 0, + "slot": "0", + "type": "t_array(t_bytes32)dyn_storage" + }, + { + "astId": 11553, + "contract": "contracts/Governance/AccessControl.sol:AccessControl", + "label": "_indexes", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ], + "numberOfBytes": "64" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/Math/Math.sol": { + "Math": { + "abi": [], + "devdoc": { + "details": "Standard math utilities missing in the Solidity language.", + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122011bcc7808de1dbb8a67c6beb4dd419b8145be7b49017b503ee4e8797271f641b64736f6c634300080a0033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GT 0xBC 0xC7 DUP1 DUP14 0xE1 0xDB 0xB8 0xA6 PUSH29 0x6BEB4DD419B8145BE7B49017B503EE4E8797271F641B64736F6C634300 ADDMOD EXP STOP CALLER ", + "sourceMap": "133:1075:21:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;133:1075:21;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122011bcc7808de1dbb8a67c6beb4dd419b8145be7b49017b503ee4e8797271f641b64736f6c634300080a0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GT 0xBC 0xC7 DUP1 DUP14 0xE1 0xDB 0xB8 0xA6 PUSH29 0x6BEB4DD419B8145BE7B49017B503EE4E8797271F641B64736F6C634300 ADDMOD EXP STOP CALLER ", + "sourceMap": "133:1075:21:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17200", + "executionCost": "103", + "totalCost": "17303" + }, + "internal": { + "average(uint256,uint256)": "infinite", + "max(uint256,uint256)": "infinite", + "min(uint256,uint256)": "infinite", + "sqrt(uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Math/Math.sol\":\"Math\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a >= b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow, so we distribute\\n return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);\\n }\\n\\n // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)\\n function sqrt(uint y) internal pure returns (uint z) {\\n if (y > 3) {\\n z = y;\\n uint x = y / 2 + 1;\\n while (x < z) {\\n z = x;\\n x = (y / x + x) / 2;\\n }\\n } else if (y != 0) {\\n z = 1;\\n }\\n }\\n}\",\"keccak256\":\"0x62bc6e8ee2764351c70251d50f023f15a87b6e9e31fe64e344c33a2580982dda\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/Math/SafeDecimalMath.sol": { + "SafeDecimalMath": { + "abi": [ + { + "inputs": [], + "name": "PRECISE_UNIT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNIT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "highPrecisionDecimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "preciseUnit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "unit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "preciseUnit()": { + "returns": { + "_0": "Provides an interface to PRECISE_UNIT." + } + }, + "unit()": { + "returns": { + "_0": "Provides an interface to UNIT." + } + } + }, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6102ac61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061007c5760003560e01c80639d8e21771161005a5780639d8e2177146100be578063d5e5e6e6146100c6578063def4419d146100ce57600080fd5b8063313ce56714610081578063864029e7146100a0578063907af6c0146100b6575b600080fd5b610089601281565b60405160ff90911681526020015b60405180910390f35b6100a86100d6565b604051908152602001610097565b6100a86100e5565b6100a86100f8565b6100a8610104565b610089601b81565b6100e2601b600a610263565b81565b60006100f36012600a610263565b905090565b6100e26012600a610263565b60006100f3601b600a610263565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b8085111561019a57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561018057610180610112565b8085161561018d57918102915b93841c9390800290610146565b509250929050565b6000826101b15750600161025d565b816101be5750600061025d565b81600181146101d457600281146101de576101fa565b600191505061025d565b60ff8411156101ef576101ef610112565b50506001821b61025d565b5060208310610133831016604e8410600b841016171561021d575081810a61025d565b6102278383610141565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561025957610259610112565b0290505b92915050565b600061026f83836101a2565b939250505056fea2646970667358221220bf8edb58e6261c6a41b5d9a0a20c7bafb6d67dd0d05036f4fbe640f188a2a20d64736f6c634300080a0033", + "opcodes": "PUSH2 0x2AC PUSH2 0x3A PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x2D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9D8E2177 GT PUSH2 0x5A JUMPI DUP1 PUSH4 0x9D8E2177 EQ PUSH2 0xBE JUMPI DUP1 PUSH4 0xD5E5E6E6 EQ PUSH2 0xC6 JUMPI DUP1 PUSH4 0xDEF4419D EQ PUSH2 0xCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0x864029E7 EQ PUSH2 0xA0 JUMPI DUP1 PUSH4 0x907AF6C0 EQ PUSH2 0xB6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x89 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA8 PUSH2 0xD6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x97 JUMP JUMPDEST PUSH2 0xA8 PUSH2 0xE5 JUMP JUMPDEST PUSH2 0xA8 PUSH2 0xF8 JUMP JUMPDEST PUSH2 0xA8 PUSH2 0x104 JUMP JUMPDEST PUSH2 0x89 PUSH1 0x1B DUP2 JUMP JUMPDEST PUSH2 0xE2 PUSH1 0x1B PUSH1 0xA PUSH2 0x263 JUMP JUMPDEST DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF3 PUSH1 0x12 PUSH1 0xA PUSH2 0x263 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xE2 PUSH1 0x12 PUSH1 0xA PUSH2 0x263 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF3 PUSH1 0x1B PUSH1 0xA PUSH2 0x263 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH2 0x19A JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x180 JUMPI PUSH2 0x180 PUSH2 0x112 JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH2 0x18D JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH2 0x146 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1B1 JUMPI POP PUSH1 0x1 PUSH2 0x25D JUMP JUMPDEST DUP2 PUSH2 0x1BE JUMPI POP PUSH1 0x0 PUSH2 0x25D JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x1D4 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1DE JUMPI PUSH2 0x1FA JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x25D JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1EF JUMPI PUSH2 0x1EF PUSH2 0x112 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x25D JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x21D JUMPI POP DUP2 DUP2 EXP PUSH2 0x25D JUMP JUMPDEST PUSH2 0x227 DUP4 DUP4 PUSH2 0x141 JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x259 JUMPI PUSH2 0x259 PUSH2 0x112 JUMP JUMPDEST MUL SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26F DUP4 DUP4 PUSH2 0x1A2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF DUP15 0xDB PC 0xE6 0x26 SHR PUSH11 0x41B5D9A0A20C7BAFB6D67D 0xD0 0xD0 POP CALLDATASIZE DELEGATECALL 0xFB 0xE6 BLOCKHASH CALL DUP9 LOG2 LOG2 0xD PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "171:6929:22:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;171:6929:22;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@PRECISE_UNIT_6438": { + "entryPoint": 214, + "id": 6438, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@UNIT_6430": { + "entryPoint": 248, + "id": 6430, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@decimals_6419": { + "entryPoint": null, + "id": 6419, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@highPrecisionDecimals_6422": { + "entryPoint": null, + "id": 6422, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@preciseUnit_6466": { + "entryPoint": 260, + "id": 6466, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@unit_6457": { + "entryPoint": 229, + "id": 6457, + "parameterSlots": 0, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_library_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_exp_helper": { + "entryPoint": 321, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "checked_exp_t_uint256_t_uint256": { + "entryPoint": 611, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_exp_unsigned": { + "entryPoint": 418, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 274, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:2081:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "119:87:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "129:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "141:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "152:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "137:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "137:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "129:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "171:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "186:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:4:39", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "182:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "182:17:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "164:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "164:36:39" + }, + "nodeType": "YulExpressionStatement", + "src": "164:36:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_library_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "88:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "99:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "110:4:39", + "type": "" + } + ], + "src": "14:192:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "320:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "330:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "342:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "353:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "338:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "338:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "330:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "372:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "383:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "365:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "365:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "365:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "289:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "300:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "311:4:39", + "type": "" + } + ], + "src": "211:185:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "433:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "450:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "453:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "443:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "443:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "443:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "547:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "550:4:39", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "540:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "540:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "540:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "571:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "574:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "564:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "564:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "564:15:39" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "401:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "654:418:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "664:16:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "679:1:39", + "type": "", + "value": "1" + }, + "variables": [ + { + "name": "power_1", + "nodeType": "YulTypedName", + "src": "668:7:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "689:16:39", + "value": { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "698:7:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "689:5:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "714:13:39", + "value": { + "name": "_base", + "nodeType": "YulIdentifier", + "src": "722:5:39" + }, + "variableNames": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "714:4:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "778:288:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "883:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "885:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "885:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "885:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "798:4:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "808:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "876:4:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "804:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "804:77:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "795:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "795:87:39" + }, + "nodeType": "YulIf", + "src": "792:113:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "944:29:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "946:25:39", + "value": { + "arguments": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "959:5:39" + }, + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "966:4:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "955:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "955:16:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "946:5:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "925:8:39" + }, + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "935:7:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "921:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "921:22:39" + }, + "nodeType": "YulIf", + "src": "918:55:39" + }, + { + "nodeType": "YulAssignment", + "src": "986:23:39", + "value": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "998:4:39" + }, + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "1004:4:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "994:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "994:15:39" + }, + "variableNames": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "986:4:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1022:34:39", + "value": { + "arguments": [ + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "1038:7:39" + }, + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "1047:8:39" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "1034:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1034:22:39" + }, + "variableNames": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "1022:8:39" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "747:8:39" + }, + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "757:7:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "744:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "744:21:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "766:3:39", + "statements": [] + }, + "pre": { + "nodeType": "YulBlock", + "src": "740:3:39", + "statements": [] + }, + "src": "736:330:39" + } + ] + }, + "name": "checked_exp_helper", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "_base", + "nodeType": "YulTypedName", + "src": "618:5:39", + "type": "" + }, + { + "name": "exponent", + "nodeType": "YulTypedName", + "src": "625:8:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "power", + "nodeType": "YulTypedName", + "src": "638:5:39", + "type": "" + }, + { + "name": "base", + "nodeType": "YulTypedName", + "src": "645:4:39", + "type": "" + } + ], + "src": "590:482:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1136:807:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1174:52:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1188:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1197:1:39", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "1188:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "1211:5:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "1156:8:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1149:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1149:16:39" + }, + "nodeType": "YulIf", + "src": "1146:80:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1259:52:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1273:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1282:1:39", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "1273:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "1296:5:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "1245:4:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1238:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1238:12:39" + }, + "nodeType": "YulIf", + "src": "1235:76:39" + }, + { + "cases": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1347:52:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1361:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1370:1:39", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "1361:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "1384:5:39" + } + ] + }, + "nodeType": "YulCase", + "src": "1340:59:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1345:1:39", + "type": "", + "value": "1" + } + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1415:123:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1450:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "1452:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "1452:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1452:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "1435:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1445:3:39", + "type": "", + "value": "255" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1432:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1432:17:39" + }, + "nodeType": "YulIf", + "src": "1429:43:39" + }, + { + "nodeType": "YulAssignment", + "src": "1485:25:39", + "value": { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "1498:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1508:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1494:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1494:16:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "1485:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "1523:5:39" + } + ] + }, + "nodeType": "YulCase", + "src": "1408:130:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1413:1:39", + "type": "", + "value": "2" + } + } + ], + "expression": { + "name": "base", + "nodeType": "YulIdentifier", + "src": "1327:4:39" + }, + "nodeType": "YulSwitch", + "src": "1320:218:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1636:70:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1650:28:39", + "value": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "1663:4:39" + }, + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "1669:8:39" + } + ], + "functionName": { + "name": "exp", + "nodeType": "YulIdentifier", + "src": "1659:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1659:19:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "1650:5:39" + } + ] + }, + { + "nodeType": "YulLeave", + "src": "1691:5:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "1560:4:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1566:2:39", + "type": "", + "value": "11" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1557:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1557:12:39" + }, + { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "1574:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1584:2:39", + "type": "", + "value": "78" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1571:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1571:16:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1553:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1553:35:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "1597:4:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1603:3:39", + "type": "", + "value": "307" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1594:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1594:13:39" + }, + { + "arguments": [ + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "1612:8:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1622:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1609:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1609:16:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1590:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1590:36:39" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "1550:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1550:77:39" + }, + "nodeType": "YulIf", + "src": "1547:159:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1715:57:39", + "value": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "1757:4:39" + }, + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "1763:8:39" + } + ], + "functionName": { + "name": "checked_exp_helper", + "nodeType": "YulIdentifier", + "src": "1738:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "1738:34:39" + }, + "variables": [ + { + "name": "power_1", + "nodeType": "YulTypedName", + "src": "1719:7:39", + "type": "" + }, + { + "name": "base_1", + "nodeType": "YulTypedName", + "src": "1728:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1877:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "1879:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "1879:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1879:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "1787:7:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1800:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "base_1", + "nodeType": "YulIdentifier", + "src": "1868:6:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "1796:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1796:79:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1784:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1784:92:39" + }, + "nodeType": "YulIf", + "src": "1781:118:39" + }, + { + "nodeType": "YulAssignment", + "src": "1908:29:39", + "value": { + "arguments": [ + { + "name": "power_1", + "nodeType": "YulIdentifier", + "src": "1921:7:39" + }, + { + "name": "base_1", + "nodeType": "YulIdentifier", + "src": "1930:6:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "1917:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1917:20:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "1908:5:39" + } + ] + } + ] + }, + "name": "checked_exp_unsigned", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "base", + "nodeType": "YulTypedName", + "src": "1107:4:39", + "type": "" + }, + { + "name": "exponent", + "nodeType": "YulTypedName", + "src": "1113:8:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "power", + "nodeType": "YulTypedName", + "src": "1126:5:39", + "type": "" + } + ], + "src": "1077:866:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2018:61:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2028:45:39", + "value": { + "arguments": [ + { + "name": "base", + "nodeType": "YulIdentifier", + "src": "2058:4:39" + }, + { + "name": "exponent", + "nodeType": "YulIdentifier", + "src": "2064:8:39" + } + ], + "functionName": { + "name": "checked_exp_unsigned", + "nodeType": "YulIdentifier", + "src": "2037:20:39" + }, + "nodeType": "YulFunctionCall", + "src": "2037:36:39" + }, + "variableNames": [ + { + "name": "power", + "nodeType": "YulIdentifier", + "src": "2028:5:39" + } + ] + } + ] + }, + "name": "checked_exp_t_uint256_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "base", + "nodeType": "YulTypedName", + "src": "1989:4:39", + "type": "" + }, + { + "name": "exponent", + "nodeType": "YulTypedName", + "src": "1995:8:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "power", + "nodeType": "YulTypedName", + "src": "2008:5:39", + "type": "" + } + ], + "src": "1948:131:39" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_library_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_exp_helper(_base, exponent) -> power, base\n {\n let power_1 := 1\n power := power_1\n base := _base\n for { } gt(exponent, power_1) { }\n {\n if gt(base, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, base)) { panic_error_0x11() }\n if and(exponent, power_1) { power := mul(power, base) }\n base := mul(base, base)\n exponent := shr(power_1, exponent)\n }\n }\n function checked_exp_unsigned(base, exponent) -> power\n {\n if iszero(exponent)\n {\n power := 1\n leave\n }\n if iszero(base)\n {\n power := 0\n leave\n }\n switch base\n case 1 {\n power := 1\n leave\n }\n case 2 {\n if gt(exponent, 255) { panic_error_0x11() }\n power := shl(exponent, 1)\n leave\n }\n if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n {\n power := exp(base, exponent)\n leave\n }\n let power_1, base_1 := checked_exp_helper(base, exponent)\n if gt(power_1, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, base_1)) { panic_error_0x11() }\n power := mul(power_1, base_1)\n }\n function checked_exp_t_uint256_t_uint256(base, exponent) -> power\n {\n power := checked_exp_unsigned(base, exponent)\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040526004361061007c5760003560e01c80639d8e21771161005a5780639d8e2177146100be578063d5e5e6e6146100c6578063def4419d146100ce57600080fd5b8063313ce56714610081578063864029e7146100a0578063907af6c0146100b6575b600080fd5b610089601281565b60405160ff90911681526020015b60405180910390f35b6100a86100d6565b604051908152602001610097565b6100a86100e5565b6100a86100f8565b6100a8610104565b610089601b81565b6100e2601b600a610263565b81565b60006100f36012600a610263565b905090565b6100e26012600a610263565b60006100f3601b600a610263565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b8085111561019a57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561018057610180610112565b8085161561018d57918102915b93841c9390800290610146565b509250929050565b6000826101b15750600161025d565b816101be5750600061025d565b81600181146101d457600281146101de576101fa565b600191505061025d565b60ff8411156101ef576101ef610112565b50506001821b61025d565b5060208310610133831016604e8410600b841016171561021d575081810a61025d565b6102278383610141565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561025957610259610112565b0290505b92915050565b600061026f83836101a2565b939250505056fea2646970667358221220bf8edb58e6261c6a41b5d9a0a20c7bafb6d67dd0d05036f4fbe640f188a2a20d64736f6c634300080a0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9D8E2177 GT PUSH2 0x5A JUMPI DUP1 PUSH4 0x9D8E2177 EQ PUSH2 0xBE JUMPI DUP1 PUSH4 0xD5E5E6E6 EQ PUSH2 0xC6 JUMPI DUP1 PUSH4 0xDEF4419D EQ PUSH2 0xCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0x864029E7 EQ PUSH2 0xA0 JUMPI DUP1 PUSH4 0x907AF6C0 EQ PUSH2 0xB6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x89 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA8 PUSH2 0xD6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x97 JUMP JUMPDEST PUSH2 0xA8 PUSH2 0xE5 JUMP JUMPDEST PUSH2 0xA8 PUSH2 0xF8 JUMP JUMPDEST PUSH2 0xA8 PUSH2 0x104 JUMP JUMPDEST PUSH2 0x89 PUSH1 0x1B DUP2 JUMP JUMPDEST PUSH2 0xE2 PUSH1 0x1B PUSH1 0xA PUSH2 0x263 JUMP JUMPDEST DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF3 PUSH1 0x12 PUSH1 0xA PUSH2 0x263 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xE2 PUSH1 0x12 PUSH1 0xA PUSH2 0x263 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF3 PUSH1 0x1B PUSH1 0xA PUSH2 0x263 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH2 0x19A JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x180 JUMPI PUSH2 0x180 PUSH2 0x112 JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH2 0x18D JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH2 0x146 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1B1 JUMPI POP PUSH1 0x1 PUSH2 0x25D JUMP JUMPDEST DUP2 PUSH2 0x1BE JUMPI POP PUSH1 0x0 PUSH2 0x25D JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x1D4 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1DE JUMPI PUSH2 0x1FA JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x25D JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1EF JUMPI PUSH2 0x1EF PUSH2 0x112 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x25D JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x21D JUMPI POP DUP2 DUP2 EXP PUSH2 0x25D JUMP JUMPDEST PUSH2 0x227 DUP4 DUP4 PUSH2 0x141 JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x259 JUMPI PUSH2 0x259 PUSH2 0x112 JUMP JUMPDEST MUL SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26F DUP4 DUP4 PUSH2 0x1A2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF DUP15 0xDB PC 0xE6 0x26 SHR PUSH11 0x41B5D9A0A20C7BAFB6D67D 0xD0 0xD0 POP CALLDATASIZE DELEGATECALL 0xFB 0xE6 BLOCKHASH CALL DUP9 LOG2 LOG2 0xD PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "171:6929:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;290:35;;323:2;290:35;;;;;194:4:39;182:17;;;164:36;;152:2;137:18;290:35:22;;;;;;;;545:67;;;:::i;:::-;;;365:25:39;;;353:2;338:18;545:67:22;211:185:39;794:73:22;;;:::i;425:46::-;;;:::i;943:88::-;;;:::i;331:48::-;;377:2;331:48;;545:67;581:31;377:2;581;:31;:::i;:::-;545:67;:::o;794:73::-;833:4;453:18;323:2;453;:18;:::i;:::-;849:11;;794:73;:::o;425:46::-;453:18;323:2;453;:18;:::i;943:88::-;989:4;581:31;377:2;581;:31;:::i;401:184:39:-;453:77;450:1;443:88;550:4;547:1;540:15;574:4;571:1;564:15;590:482;679:1;722:5;679:1;736:330;757:7;747:8;744:21;736:330;;;876:4;808:66;804:77;798:4;795:87;792:113;;;885:18;;:::i;:::-;935:7;925:8;921:22;918:55;;;955:16;;;;918:55;1034:22;;;;994:15;;;;736:330;;;740:3;590:482;;;;;:::o;1077:866::-;1126:5;1156:8;1146:80;;-1:-1:-1;1197:1:39;1211:5;;1146:80;1245:4;1235:76;;-1:-1:-1;1282:1:39;1296:5;;1235:76;1327:4;1345:1;1340:59;;;;1413:1;1408:130;;;;1320:218;;1340:59;1370:1;1361:10;;1384:5;;;1408:130;1445:3;1435:8;1432:17;1429:43;;;1452:18;;:::i;:::-;-1:-1:-1;;1508:1:39;1494:16;;1523:5;;1320:218;;1622:2;1612:8;1609:16;1603:3;1597:4;1594:13;1590:36;1584:2;1574:8;1571:16;1566:2;1560:4;1557:12;1553:35;1550:77;1547:159;;;-1:-1:-1;1659:19:39;;;1691:5;;1547:159;1738:34;1763:8;1757:4;1738:34;:::i;:::-;1868:6;1800:66;1796:79;1787:7;1784:92;1781:118;;;1879:18;;:::i;:::-;1917:20;;-1:-1:-1;1077:866:39;;;;;:::o;1948:131::-;2008:5;2037:36;2064:8;2058:4;2037:36;:::i;:::-;2028:45;1948:131;-1:-1:-1;;;1948:131:39:o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "136800", + "executionCost": "214", + "totalCost": "137014" + }, + "external": { + "PRECISE_UNIT()": "535", + "UNIT()": "512", + "decimals()": "178", + "highPrecisionDecimals()": "221", + "preciseUnit()": "542", + "unit()": "565" + }, + "internal": { + "_divideDecimalRound(uint256,uint256,uint256)": "infinite", + "_multiplyDecimalRound(uint256,uint256,uint256)": "infinite", + "decimalToPreciseDecimal(uint256)": "infinite", + "divideDecimal(uint256,uint256)": "infinite", + "divideDecimalRound(uint256,uint256)": "infinite", + "divideDecimalRoundPrecise(uint256,uint256)": "infinite", + "multiplyDecimal(uint256,uint256)": "infinite", + "multiplyDecimalRound(uint256,uint256)": "infinite", + "multiplyDecimalRoundPrecise(uint256,uint256)": "infinite", + "preciseDecimalToDecimal(uint256)": "infinite" + } + }, + "methodIdentifiers": { + "PRECISE_UNIT()": "864029e7", + "UNIT()": "9d8e2177", + "decimals()": "313ce567", + "highPrecisionDecimals()": "def4419d", + "preciseUnit()": "d5e5e6e6", + "unit()": "907af6c0" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"PRECISE_UNIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"highPrecisionDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preciseUnit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"preciseUnit()\":{\"returns\":{\"_0\":\"Provides an interface to PRECISE_UNIT.\"}},\"unit()\":{\"returns\":{\"_0\":\"Provides an interface to UNIT.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Math/SafeDecimalMath.sol\":\"SafeDecimalMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Math/SafeDecimalMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\n// Libraries\\nimport './SafeMath.sol';\\n\\n\\n// https://docs.synthetix.io/contracts/source/libraries/safedecimalmath\\nlibrary SafeDecimalMath {\\n using SafeMath for uint;\\n\\n /* Number of decimal places in the representations. */\\n uint8 public constant decimals = 18;\\n uint8 public constant highPrecisionDecimals = 27;\\n\\n /* The number representing 1.0. */\\n uint public constant UNIT = 10**uint(decimals);\\n\\n /* The number representing 1.0 for higher fidelity numbers. */\\n uint public constant PRECISE_UNIT = 10**uint(highPrecisionDecimals);\\n uint private constant UNIT_TO_HIGH_PRECISION_CONVERSION_FACTOR = 10**uint(highPrecisionDecimals - decimals);\\n\\n /**\\n * @return Provides an interface to UNIT.\\n */\\n function unit() external pure returns (uint) {\\n return UNIT;\\n }\\n\\n /**\\n * @return Provides an interface to PRECISE_UNIT.\\n */\\n function preciseUnit() external pure returns (uint) {\\n return PRECISE_UNIT;\\n }\\n\\n /**\\n * @return The result of multiplying x and y, interpreting the operands as fixed-point\\n * decimals.\\n *\\n * @dev A unit factor is divided out after the product of x and y is evaluated,\\n * so that product must be less than 2**256. As this is an integer division,\\n * the internal division always rounds down. This helps save on gas. Rounding\\n * is more expensive on gas.\\n */\\n function multiplyDecimal(uint x, uint y) internal pure returns (uint) {\\n /* Divide by UNIT to remove the extra factor introduced by the product. */\\n return x.mul(y) / UNIT;\\n }\\n\\n /**\\n * @return The result of safely multiplying x and y, interpreting the operands\\n * as fixed-point decimals of the specified precision unit.\\n *\\n * @dev The operands should be in the form of a the specified unit factor which will be\\n * divided out after the product of x and y is evaluated, so that product must be\\n * less than 2**256.\\n *\\n * Unlike multiplyDecimal, this function rounds the result to the nearest increment.\\n * Rounding is useful when you need to retain fidelity for small decimal numbers\\n * (eg. small fractions or percentages).\\n */\\n function _multiplyDecimalRound(\\n uint x,\\n uint y,\\n uint precisionUnit\\n ) private pure returns (uint) {\\n /* Divide by UNIT to remove the extra factor introduced by the product. */\\n uint quotientTimesTen = x.mul(y) / (precisionUnit / 10);\\n\\n if (quotientTimesTen % 10 >= 5) {\\n quotientTimesTen += 10;\\n }\\n\\n return quotientTimesTen / 10;\\n }\\n\\n /**\\n * @return The result of safely multiplying x and y, interpreting the operands\\n * as fixed-point decimals of a precise unit.\\n *\\n * @dev The operands should be in the precise unit factor which will be\\n * divided out after the product of x and y is evaluated, so that product must be\\n * less than 2**256.\\n *\\n * Unlike multiplyDecimal, this function rounds the result to the nearest increment.\\n * Rounding is useful when you need to retain fidelity for small decimal numbers\\n * (eg. small fractions or percentages).\\n */\\n function multiplyDecimalRoundPrecise(uint x, uint y) internal pure returns (uint) {\\n return _multiplyDecimalRound(x, y, PRECISE_UNIT);\\n }\\n\\n /**\\n * @return The result of safely multiplying x and y, interpreting the operands\\n * as fixed-point decimals of a standard unit.\\n *\\n * @dev The operands should be in the standard unit factor which will be\\n * divided out after the product of x and y is evaluated, so that product must be\\n * less than 2**256.\\n *\\n * Unlike multiplyDecimal, this function rounds the result to the nearest increment.\\n * Rounding is useful when you need to retain fidelity for small decimal numbers\\n * (eg. small fractions or percentages).\\n */\\n function multiplyDecimalRound(uint x, uint y) internal pure returns (uint) {\\n return _multiplyDecimalRound(x, y, UNIT);\\n }\\n\\n /**\\n * @return The result of safely dividing x and y. The return value is a high\\n * precision decimal.\\n *\\n * @dev y is divided after the product of x and the standard precision unit\\n * is evaluated, so the product of x and UNIT must be less than 2**256. As\\n * this is an integer division, the result is always rounded down.\\n * This helps save on gas. Rounding is more expensive on gas.\\n */\\n function divideDecimal(uint x, uint y) internal pure returns (uint) {\\n /* Reintroduce the UNIT factor that will be divided out by y. */\\n return x.mul(UNIT).div(y);\\n }\\n\\n /**\\n * @return The result of safely dividing x and y. The return value is as a rounded\\n * decimal in the precision unit specified in the parameter.\\n *\\n * @dev y is divided after the product of x and the specified precision unit\\n * is evaluated, so the product of x and the specified precision unit must\\n * be less than 2**256. The result is rounded to the nearest increment.\\n */\\n function _divideDecimalRound(\\n uint x,\\n uint y,\\n uint precisionUnit\\n ) private pure returns (uint) {\\n uint resultTimesTen = x.mul(precisionUnit * 10).div(y);\\n\\n if (resultTimesTen % 10 >= 5) {\\n resultTimesTen += 10;\\n }\\n\\n return resultTimesTen / 10;\\n }\\n\\n /**\\n * @return The result of safely dividing x and y. The return value is as a rounded\\n * standard precision decimal.\\n *\\n * @dev y is divided after the product of x and the standard precision unit\\n * is evaluated, so the product of x and the standard precision unit must\\n * be less than 2**256. The result is rounded to the nearest increment.\\n */\\n function divideDecimalRound(uint x, uint y) internal pure returns (uint) {\\n return _divideDecimalRound(x, y, UNIT);\\n }\\n\\n /**\\n * @return The result of safely dividing x and y. The return value is as a rounded\\n * high precision decimal.\\n *\\n * @dev y is divided after the product of x and the high precision unit\\n * is evaluated, so the product of x and the high precision unit must\\n * be less than 2**256. The result is rounded to the nearest increment.\\n */\\n function divideDecimalRoundPrecise(uint x, uint y) internal pure returns (uint) {\\n return _divideDecimalRound(x, y, PRECISE_UNIT);\\n }\\n\\n /**\\n * @dev Convert a standard decimal representation to a high precision one.\\n */\\n function decimalToPreciseDecimal(uint i) internal pure returns (uint) {\\n return i.mul(UNIT_TO_HIGH_PRECISION_CONVERSION_FACTOR);\\n }\\n\\n /**\\n * @dev Convert a high precision decimal to a standard decimal representation.\\n */\\n function preciseDecimalToDecimal(uint i) internal pure returns (uint) {\\n uint quotientTimesTen = i / (UNIT_TO_HIGH_PRECISION_CONVERSION_FACTOR / 10);\\n\\n if (quotientTimesTen % 10 >= 5) {\\n quotientTimesTen += 10;\\n }\\n\\n return quotientTimesTen / 10;\\n }\\n}\",\"keccak256\":\"0x00efd2d7e51cb0a14eaa94f6200d4ca4bd7c7442881b84b3f2acc2b81bdca624\",\"license\":\"MIT\"},\"contracts/Math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\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\\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 * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\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 * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\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 * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (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) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts 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 * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts 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 * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\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}\",\"keccak256\":\"0x43a20f7cf4c4319f81450d53779455e88a7ab80bdfc43925156ed4083b74a180\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/Math/SafeMath.sol": { + "SafeMath": { + "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 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206af44b8542a7888d55485cfef2984255efbc29d3004ae6aaa6393d6fe5d480ae64736f6c634300080a0033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH11 0xF44B8542A7888D55485CFE CALLCODE SWAP9 TIMESTAMP SSTORE 0xEF 0xBC 0x29 0xD3 STOP 0x4A 0xE6 0xAA 0xA6 CODECOPY RETURNDATASIZE PUSH16 0xE5D480AE64736F6C634300080A003300 ", + "sourceMap": "623:4708:23:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;623:4708:23;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206af44b8542a7888d55485cfef2984255efbc29d3004ae6aaa6393d6fe5d480ae64736f6c634300080a0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH11 0xF44B8542A7888D55485CFE CALLCODE SWAP9 TIMESTAMP SSTORE 0xEF 0xBC 0x29 0xD3 STOP 0x4A 0xE6 0xAA 0xA6 CODECOPY RETURNDATASIZE PUSH16 0xE5D480AE64736F6C634300080A003300 ", + "sourceMap": "623:4708:23:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17200", + "executionCost": "103", + "totalCost": "17303" + }, + "internal": { + "add(uint256,uint256)": "infinite", + "div(uint256,uint256)": "infinite", + "div(uint256,uint256,string memory)": "infinite", + "mod(uint256,uint256)": "infinite", + "mod(uint256,uint256,string memory)": "infinite", + "mul(uint256,uint256)": "infinite", + "sub(uint256,uint256)": "infinite", + "sub(uint256,uint256,string memory)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"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\":{\"contracts/Math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\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\\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 * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\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 * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\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 * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (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) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts 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 * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts 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 * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\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}\",\"keccak256\":\"0x43a20f7cf4c4319f81450d53779455e88a7ab80bdfc43925156ed4083b74a180\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/Math/UQ112x112.sol": { + "UQ112x112": { + "abi": [], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122005619b07b9df41b346785529fe7368d8530bd06e452dc1b96433886d98334e2364736f6c634300080a0033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SDIV PUSH2 0x9B07 0xB9 0xDF COINBASE 0xB3 CHAINID PUSH25 0x5529FE7368D8530BD06E452DC1B96433886D98334E2364736F PUSH13 0x634300080A0033000000000000 ", + "sourceMap": "216:394:24:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;216:394:24;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122005619b07b9df41b346785529fe7368d8530bd06e452dc1b96433886d98334e2364736f6c634300080a0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SDIV PUSH2 0x9B07 0xB9 0xDF COINBASE 0xB3 CHAINID PUSH25 0x5529FE7368D8530BD06E452DC1B96433886D98334E2364736F PUSH13 0x634300080A0033000000000000 ", + "sourceMap": "216:394:24:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17200", + "executionCost": "103", + "totalCost": "17303" + }, + "internal": { + "encode(uint112)": "infinite", + "uqdiv(uint224,uint112)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Math/UQ112x112.sol\":\"UQ112x112\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Math/UQ112x112.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\n// a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format))\\n\\n// range: [0, 2**112 - 1]\\n// resolution: 1 / 2**112\\n\\nlibrary UQ112x112 {\\n uint224 constant Q112 = 2**112;\\n\\n // encode a uint112 as a UQ112x112\\n function encode(uint112 y) internal pure returns (uint224 z) {\\n z = uint224(y) * Q112; // never overflows\\n }\\n\\n // divide a UQ112x112 by a uint112, returning a UQ112x112\\n function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) {\\n z = x / uint224(y);\\n }\\n}\",\"keccak256\":\"0xf96670ceb7698871af8201df1bb4d9273c1d3b8defc63de942f9e1466b508608\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/Oracle/Oracle.sol": { + "Oracle": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_admin", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_minimumRequiredSignature", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_trusty_address", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "minimumRequiredSignature", + "type": "uint256" + } + ], + "name": "MinimumRequiredSignatureSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ORACLE_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TRUSTY_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_minimumRequiredSignature", + "type": "uint256" + } + ], + "name": "setMinimumRequiredSignature", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "verify", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "getRoleAdmin(bytes32)": { + "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." + }, + "getRoleMember(bytes32,uint256)": { + "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information." + }, + "getRoleMemberCount(bytes32)": { + "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role." + }, + "grantRole(bytes32,address)": { + "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role." + }, + "hasRole(bytes32,address)": { + "details": "Returns `true` if `account` has been granted `role`." + }, + "renounceRole(bytes32,address)": { + "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`." + }, + "revokeRole(bytes32,address)": { + "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role." + } + }, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": { + "@_6998": { + "entryPoint": null, + "id": 6998, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_add_11596": { + "entryPoint": 386, + "id": 11596, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_contains_11696": { + "entryPoint": null, + "id": 11696, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_6258": { + "entryPoint": 246, + "id": 6258, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_msgSender_444": { + "entryPoint": null, + "id": 444, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_setupRole_6209": { + "entryPoint": 230, + "id": 6209, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@add_11764": { + "entryPoint": 349, + "id": 11764, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_address_fromMemory": { + "entryPoint": 468, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_uint256t_address_fromMemory": { + "entryPoint": 497, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_encode_tuple_t_stringliteral_f555e422e13ef1580aa8cf2129c12397e608acd890697d095ab25684b6a0f1f2__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:963:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "74:117:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "84:22:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "99:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "93:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "93:13:39" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "84:5:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "169:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "178:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "181:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "171:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "171:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "171:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "128:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "139:5:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "154:3:39", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "159:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "150:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "150:11:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "163:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "146:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "146:19:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "135:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "135:31:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "125:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "125:42:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "118:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "118:50:39" + }, + "nodeType": "YulIf", + "src": "115:70:39" + } + ] + }, + "name": "abi_decode_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "53:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "64:5:39", + "type": "" + } + ], + "src": "14:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "311:239:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "357:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "366:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "369:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "359:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "359:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "359:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "332:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "341:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "328:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "328:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "353:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "324:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "324:32:39" + }, + "nodeType": "YulIf", + "src": "321:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "382:50:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "422:9:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "392:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "392:40:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "382:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "441:35:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "461:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "472:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "457:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "457:18:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "451:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "451:25:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "441:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "485:59:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "529:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "540:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "525:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "525:18:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "495:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "495:49:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "485:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "261:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "272:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "284:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "292:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "300:6:39", + "type": "" + } + ], + "src": "196:354:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "729:232:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "746:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "757:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "739:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "739:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "739:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "780:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "791:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "776:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "776:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "796:2:39", + "type": "", + "value": "42" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "769:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "769:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "769:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "819:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "830:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "815:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "815:18:39" + }, + { + "hexValue": "4f5241434c453a3a636f6e7374727563746f723a205a65726f20616464726573", + "kind": "string", + "nodeType": "YulLiteral", + "src": "835:34:39", + "type": "", + "value": "ORACLE::constructor: Zero addres" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "808:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "808:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "808:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "890:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "901:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "886:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "886:18:39" + }, + { + "hexValue": "73206465746563746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "906:12:39", + "type": "", + "value": "s detected" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "879:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "879:40:39" + }, + "nodeType": "YulExpressionStatement", + "src": "879:40:39" + }, + { + "nodeType": "YulAssignment", + "src": "928:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "940:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "951:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "936:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "936:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "928:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_f555e422e13ef1580aa8cf2129c12397e608acd890697d095ab25684b6a0f1f2__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "706:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "720:4:39", + "type": "" + } + ], + "src": "555:406:39" + } + ] + }, + "contents": "{\n { }\n function abi_decode_address_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256t_address_fromMemory(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address_fromMemory(headStart)\n value1 := mload(add(headStart, 32))\n value2 := abi_decode_address_fromMemory(add(headStart, 64))\n }\n function abi_encode_tuple_t_stringliteral_f555e422e13ef1580aa8cf2129c12397e608acd890697d095ab25684b6a0f1f2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"ORACLE::constructor: Zero addres\")\n mstore(add(headStart, 96), \"s detected\")\n tail := add(headStart, 128)\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "60806040523480156200001157600080fd5b5060405162001329380380620013298339810160408190526200003491620001f1565b6001600160a01b038316620000a25760405162461bcd60e51b815260206004820152602a60248201527f4f5241434c453a3a636f6e7374727563746f723a205a65726f206164647265736044820152691cc819195d1958dd195960b21b606482015260840160405180910390fd5b620000af600084620000e6565b620000db7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c82620000e6565b506001555062000232565b620000f28282620000f6565b5050565b6000828152602081815260409091206200011b918390620007686200015d821b17901c565b15620000f25760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b600062000179836001600160601b0319606085901b1662000182565b90505b92915050565b6000818152600183016020526040812054620001cb575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200017c565b5060006200017c565b80516001600160a01b0381168114620001ec57600080fd5b919050565b6000806000606084860312156200020757600080fd5b6200021284620001d4565b9250602084015191506200022960408501620001d4565b90509250925092565b6110e780620002426000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80639010d07c11610081578063ca15c8731161005b578063ca15c873146101fb578063d547741f1461020e578063fb0fe3f41461022157600080fd5b80639010d07c1461019857806391d14854146101d0578063a217fddf146101f357600080fd5b806334ddb95d116100b257806334ddb95d1461014b57806336568abe1461017257806380f341ed1461018557600080fd5b806307e2cea5146100d9578063248a9ca3146101135780632f2ff15d14610136575b600080fd5b6101007f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef181565b6040519081526020015b60405180910390f35b610100610121366004610e4d565b60009081526020819052604090206002015490565b610149610144366004610e66565b610234565b005b6101007f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610149610180366004610e66565b6102ef565b610149610193366004610e4d565b61039e565b6101ab6101a6366004610eaf565b61048f565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010a565b6101e36101de366004610e66565b6104b0565b604051901515815260200161010a565b610100600081565b610100610209366004610e4d565b6104c8565b61014961021c366004610e66565b6104df565b6101e361022f366004610ed1565b610587565b60008281526020819052604090206002015461025090336104b0565b6102e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084015b60405180910390fd5b6102eb828261079a565b5050565b73ffffffffffffffffffffffffffffffffffffffff81163314610394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016102d8565b6102eb8282610800565b6103c87f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336104b0565b610454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f5241434c453a3a7365744d696e696d756d52657175697265645369676e617460448201527f7572653a20596f7520617265206e6f742074727573747900000000000000000060648201526084016102d8565b60018190556040518181527f56d6e071fcef02790d62fce568ce7db2a2417110238a7bdbbd55a0d59c7d51cd9060200160405180910390a150565b60008281526020819052604081206104a79083610866565b90505b92915050565b60008281526020819052604081206104a7908361087c565b60008181526020819052604081206104aa906108bb565b6000828152602081905260409020600201546104fb90336104b0565b610394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b650000000000000000000000000000000060648201526084016102d8565b60008060005b60015481101561075c5760006105fd8686848181106105ae576105ae610f50565b90506020028101906105c09190610f7f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b939250506108c59050565b90506106297f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef1826104b0565b6106b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4f5241434c453a3a7665726966793a205369676e6572206973206e6f7420766160448201527f6c6964000000000000000000000000000000000000000000000000000000000060648201526084016102d8565b8273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161161074a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f5241434c453a3a7665726966793a205369676e657273206172652073616d6560448201526064016102d8565b91506107558161101a565b905061058d565b50600195945050505050565b60006104a7837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16610983565b60008281526020819052604090206107b29082610768565b156102eb57604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b600082815260208190526040902061081890826109d2565b156102eb57604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b60006108728383610a04565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156104a7565b60006104aa825490565b60008151604114156108f95760208201516040830151606084015160001a6108ef86828585610abf565b93505050506104aa565b8151604014156109215760208201516040830151610918858383610d17565b925050506104aa565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016102d8565b60008181526001830160205260408120546109ca575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556104aa565b5060006104aa565b60006104a7837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16610d5a565b81546000908210610a97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f647300000000000000000000000000000000000000000000000000000000000060648201526084016102d8565b826000018281548110610aac57610aac610f50565b9060005260206000200154905092915050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115610b71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016102d8565b8360ff16601b1480610b8657508360ff16601c145b610c12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016102d8565b6040805160008082526020820180845288905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa158015610c66573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610d0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016102d8565b95945050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821660ff83901c601b01610d5086828785610abf565b9695505050505050565b60008181526001830160205260408120548015610e43576000610d7e600183611053565b8554909150600090610d9290600190611053565b90506000866000018281548110610dab57610dab610f50565b9060005260206000200154905080876000018481548110610dce57610dce610f50565b600091825260209091200155610de583600161106a565b60008281526001890160205260409020558654879080610e0757610e07611082565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506104aa565b60009150506104aa565b600060208284031215610e5f57600080fd5b5035919050565b60008060408385031215610e7957600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff81168114610ea457600080fd5b809150509250929050565b60008060408385031215610ec257600080fd5b50508035926020909101359150565b600080600060408486031215610ee657600080fd5b83359250602084013567ffffffffffffffff80821115610f0557600080fd5b818601915086601f830112610f1957600080fd5b813581811115610f2857600080fd5b8760208260051b8501011115610f3d57600080fd5b6020830194508093505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610fb457600080fd5b83018035915067ffffffffffffffff821115610fcf57600080fd5b602001915036819003821315610fe457600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561104c5761104c610feb565b5060010190565b60008282101561106557611065610feb565b500390565b6000821982111561107d5761107d610feb565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220808e25e8d69927bddf64938db333e3534c464eda7b5eb78e5e1d4aa15a1c9ceb64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1329 CODESIZE SUB DUP1 PUSH3 0x1329 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x1F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH3 0xA2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F5241434C453A3A636F6E7374727563746F723A205A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x1CC819195D1958DD1959 PUSH1 0xB2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xAF PUSH1 0x0 DUP5 PUSH3 0xE6 JUMP JUMPDEST PUSH3 0xDB PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP3 PUSH3 0xE6 JUMP JUMPDEST POP PUSH1 0x1 SSTORE POP PUSH3 0x232 JUMP JUMPDEST PUSH3 0xF2 DUP3 DUP3 PUSH3 0xF6 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH3 0x11B SWAP2 DUP4 SWAP1 PUSH3 0x768 PUSH3 0x15D DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST ISZERO PUSH3 0xF2 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x179 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH3 0x182 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH3 0x1CB 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 PUSH3 0x17C JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0x17C JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x212 DUP5 PUSH3 0x1D4 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD SWAP2 POP PUSH3 0x229 PUSH1 0x40 DUP6 ADD PUSH3 0x1D4 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x10E7 DUP1 PUSH3 0x242 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 0xD4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9010D07C GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xCA15C873 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x1FB JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0xFB0FE3F4 EQ PUSH2 0x221 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9010D07C EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x1F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x34DDB95D GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x34DDB95D EQ PUSH2 0x14B JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x172 JUMPI DUP1 PUSH4 0x80F341ED EQ PUSH2 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7E2CEA5 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x113 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x136 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x100 PUSH32 0x68E79A7BF1E0BC45D0A330C573BC367F9CF464FD326078812F301165FBDA4EF1 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x100 PUSH2 0x121 CALLDATASIZE PUSH1 0x4 PUSH2 0xE4D JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x149 PUSH2 0x144 CALLDATASIZE PUSH1 0x4 PUSH2 0xE66 JUMP JUMPDEST PUSH2 0x234 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x100 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP2 JUMP JUMPDEST PUSH2 0x149 PUSH2 0x180 CALLDATASIZE PUSH1 0x4 PUSH2 0xE66 JUMP JUMPDEST PUSH2 0x2EF JUMP JUMPDEST PUSH2 0x149 PUSH2 0x193 CALLDATASIZE PUSH1 0x4 PUSH2 0xE4D JUMP JUMPDEST PUSH2 0x39E JUMP JUMPDEST PUSH2 0x1AB PUSH2 0x1A6 CALLDATASIZE PUSH1 0x4 PUSH2 0xEAF JUMP JUMPDEST PUSH2 0x48F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10A JUMP JUMPDEST PUSH2 0x1E3 PUSH2 0x1DE CALLDATASIZE PUSH1 0x4 PUSH2 0xE66 JUMP JUMPDEST PUSH2 0x4B0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10A JUMP JUMPDEST PUSH2 0x100 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x100 PUSH2 0x209 CALLDATASIZE PUSH1 0x4 PUSH2 0xE4D JUMP JUMPDEST PUSH2 0x4C8 JUMP JUMPDEST PUSH2 0x149 PUSH2 0x21C CALLDATASIZE PUSH1 0x4 PUSH2 0xE66 JUMP JUMPDEST PUSH2 0x4DF JUMP JUMPDEST PUSH2 0x1E3 PUSH2 0x22F CALLDATASIZE PUSH1 0x4 PUSH2 0xED1 JUMP JUMPDEST PUSH2 0x587 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x250 SWAP1 CALLER PUSH2 0x4B0 JUMP JUMPDEST PUSH2 0x2E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F206772616E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2EB DUP3 DUP3 PUSH2 0x79A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ PUSH2 0x394 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D8 JUMP JUMPDEST PUSH2 0x2EB DUP3 DUP3 PUSH2 0x800 JUMP JUMPDEST PUSH2 0x3C8 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x4B0 JUMP JUMPDEST PUSH2 0x454 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x37 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F5241434C453A3A7365744D696E696D756D52657175697265645369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7572653A20596F7520617265206E6F7420747275737479000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D8 JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0x56D6E071FCEF02790D62FCE568CE7DB2A2417110238A7BDBBD55A0D59C7D51CD SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x4A7 SWAP1 DUP4 PUSH2 0x866 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x4A7 SWAP1 DUP4 PUSH2 0x87C JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x4AA SWAP1 PUSH2 0x8BB JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x4FB SWAP1 CALLER PUSH2 0x4B0 JUMP JUMPDEST PUSH2 0x394 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F207265766F6B6500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST PUSH1 0x1 SLOAD DUP2 LT ISZERO PUSH2 0x75C JUMPI PUSH1 0x0 PUSH2 0x5FD DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x5AE JUMPI PUSH2 0x5AE PUSH2 0xF50 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x5C0 SWAP2 SWAP1 PUSH2 0xF7F JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP12 SWAP4 SWAP3 POP POP PUSH2 0x8C5 SWAP1 POP JUMP JUMPDEST SWAP1 POP PUSH2 0x629 PUSH32 0x68E79A7BF1E0BC45D0A330C573BC367F9CF464FD326078812F301165FBDA4EF1 DUP3 PUSH2 0x4B0 JUMP JUMPDEST PUSH2 0x6B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F5241434C453A3A7665726966793A205369676E6572206973206E6F74207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C69640000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D8 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT PUSH2 0x74A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F5241434C453A3A7665726966793A205369676E657273206172652073616D65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2D8 JUMP JUMPDEST SWAP2 POP PUSH2 0x755 DUP2 PUSH2 0x101A JUMP JUMPDEST SWAP1 POP PUSH2 0x58D JUMP JUMPDEST POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A7 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x983 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x7B2 SWAP1 DUP3 PUSH2 0x768 JUMP JUMPDEST ISZERO PUSH2 0x2EB JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x818 SWAP1 DUP3 PUSH2 0x9D2 JUMP JUMPDEST ISZERO PUSH2 0x2EB JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x872 DUP4 DUP4 PUSH2 0xA04 JUMP JUMPDEST PUSH1 0x60 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD ISZERO ISZERO PUSH2 0x4A7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AA DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x41 EQ ISZERO PUSH2 0x8F9 JUMPI PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x8EF DUP7 DUP3 DUP6 DUP6 PUSH2 0xABF JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x4AA JUMP JUMPDEST DUP2 MLOAD PUSH1 0x40 EQ ISZERO PUSH2 0x921 JUMPI PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x918 DUP6 DUP4 DUP4 PUSH2 0xD17 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x4AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2D8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x9CA 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 0x4AA JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x4AA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A7 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0xD5A JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0xA97 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E756D657261626C655365743A20696E646578206F7574206F6620626F756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6473000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D8 JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xAAC JUMPI PUSH2 0xAAC PUSH2 0xF50 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP3 GT ISZERO PUSH2 0xB71 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7565000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D8 JUMP JUMPDEST DUP4 PUSH1 0xFF AND PUSH1 0x1B EQ DUP1 PUSH2 0xB86 JUMPI POP DUP4 PUSH1 0xFF AND PUSH1 0x1C EQ JUMPDEST PUSH2 0xC12 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7565000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP9 SWAP1 MSTORE PUSH1 0xFF DUP8 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC66 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xD0E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2D8 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0xFF DUP4 SWAP1 SHR PUSH1 0x1B ADD PUSH2 0xD50 DUP7 DUP3 DUP8 DUP6 PUSH2 0xABF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0xE43 JUMPI PUSH1 0x0 PUSH2 0xD7E PUSH1 0x1 DUP4 PUSH2 0x1053 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0xD92 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x1053 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xDAB JUMPI PUSH2 0xDAB PUSH2 0xF50 JUMP 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 0xDCE JUMPI PUSH2 0xDCE PUSH2 0xF50 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH2 0xDE5 DUP4 PUSH1 0x1 PUSH2 0x106A JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0xE07 JUMPI PUSH2 0xE07 PUSH2 0x1082 JUMP 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 0x4AA JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x4AA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xEA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xEE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xF05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xF28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xF3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0xFB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xFCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0xFE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x104C JUMPI PUSH2 0x104C PUSH2 0xFEB JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x1065 JUMPI PUSH2 0x1065 PUSH2 0xFEB JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x107D JUMPI PUSH2 0x107D PUSH2 0xFEB JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP1 DUP15 0x25 0xE8 0xD6 SWAP10 0x27 0xBD 0xDF PUSH5 0x938DB333E3 MSTORE8 0x4C CHAINID 0x4E 0xDA PUSH28 0x5EB78E5E1D4AA15A1C9CEB64736F6C634300080A0033000000000000 ", + "sourceMap": "168:1375:25:-:0;;;478:313;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;578:20:25;;570:75;;;;-1:-1:-1;;;570:75:25;;757:2:39;570:75:25;;;739:21:39;796:2;776:18;;;769:30;835:34;815:18;;;808:62;-1:-1:-1;;;886:18:39;;;879:40;936:19;;570:75:25;;;;;;;;649:38;1767:4:20;680:6:25;649:10;:38::i;:::-;691:40;343:24;715:15;691:10;:40::i;:::-;-1:-1:-1;735:24:25;:52;-1:-1:-1;168:1375:25;;6653:110:20;6731:25;6742:4;6748:7;6731:10;:25::i;:::-;6653:110;;:::o;7090:184::-;7163:6;:12;;;;;;;;;;;:33;;7188:7;;7163:24;;;;;:33;;:::i;:::-;7159:109;;;7217:40;;686:10:4;;-1:-1:-1;;;;;7217:40:20;;;7229:4;;7217:40;;;;;7090:184;;:::o;4866:141:38:-;4936:4;4959:41;4964:3;-1:-1:-1;;;;;;4984:14:38;;;;4976:23;4959:4;:41::i;:::-;4952:48;;4866:141;;;;;:::o;1613:404::-;1676:4;3874:19;;;:12;;;:19;;;;;;1692:319;;-1:-1:-1;1734:23:38;;;;;;;;:11;:23;;;;;;;;;;;;;1914:18;;1892:19;;;:12;;;:19;;;;;;:40;;;;1946:11;;1692:319;-1:-1:-1;1995:5:38;1988:12;;14:177:39;93:13;;-1:-1:-1;;;;;135:31:39;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:354::-;284:6;292;300;353:2;341:9;332:7;328:23;324:32;321:52;;;369:1;366;359:12;321:52;392:40;422:9;392:40;:::i;:::-;382:50;;472:2;461:9;457:18;451:25;441:35;;495:49;540:2;529:9;525:18;495:49;:::i;:::-;485:59;;196:354;;;;;:::o;555:406::-;168:1375:25;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@DEFAULT_ADMIN_ROLE_6026": { + "entryPoint": null, + "id": 6026, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@ORACLE_ROLE_6953": { + "entryPoint": null, + "id": 6953, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@TRUSTY_ROLE_6958": { + "entryPoint": null, + "id": 6958, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_add_11596": { + "entryPoint": 2435, + "id": 11596, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_at_11736": { + "entryPoint": 2564, + "id": 11736, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_contains_11696": { + "entryPoint": null, + "id": 11696, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_6258": { + "entryPoint": 1946, + "id": 6258, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_length_11710": { + "entryPoint": null, + "id": 11710, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_msgSender_444": { + "entryPoint": null, + "id": 444, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_remove_11677": { + "entryPoint": 3418, + "id": 11677, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_revokeRole_6282": { + "entryPoint": 2048, + "id": 6282, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@add_11764": { + "entryPoint": 1896, + "id": 11764, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@at_11851": { + "entryPoint": 2150, + "id": 11851, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@contains_11812": { + "entryPoint": 2172, + "id": 11812, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getRoleAdmin_6121": { + "entryPoint": null, + "id": 6121, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMemberCount_6088": { + "entryPoint": 1224, + "id": 6088, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMember_6107": { + "entryPoint": 1167, + "id": 6107, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@grantRole_6147": { + "entryPoint": 564, + "id": 6147, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@hasRole_6072": { + "entryPoint": 1200, + "id": 6072, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@length_11827": { + "entryPoint": 2235, + "id": 11827, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@recover_170": { + "entryPoint": 2245, + "id": 170, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@recover_197": { + "entryPoint": 3351, + "id": 197, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@recover_254": { + "entryPoint": 2751, + "id": 254, + "parameterSlots": 4, + "returnSlots": 1 + }, + "@remove_11788": { + "entryPoint": 2514, + "id": 11788, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@renounceRole_6195": { + "entryPoint": 751, + "id": 6195, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@revokeRole_6173": { + "entryPoint": 1247, + "id": 6173, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setMinimumRequiredSignature_7077": { + "entryPoint": 926, + "id": 7077, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@verify_7054": { + "entryPoint": 1415, + "id": 7054, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32": { + "entryPoint": 3661, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32t_address": { + "entryPoint": 3686, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes32t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": { + "entryPoint": 3793, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_bytes32t_uint256": { + "entryPoint": 3759, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_aaf7eb7c0c4c3933c3a7f2471eeb8fc9d0b57167f2c598c852eb594b49cbe3ec__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_d5d2e037576918c87bbde6cf67701494bc4ee0065100375f813a31cf631ead15__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_f49242a8c58b7e5d7c6bcf7ccc435caa225efcedb9b0bea48b1712423a64bfad__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "access_calldata_tail_t_bytes_calldata_ptr": { + "entryPoint": 3967, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "checked_add_t_uint256": { + "entryPoint": 4202, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 4179, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "increment_t_uint256": { + "entryPoint": 4122, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 4075, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x31": { + "entryPoint": 4226, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 3920, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:8880:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "115:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "125:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "137:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "148:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "133:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "133:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "125:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "167:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "178:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "160:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "160:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "160:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "84:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "95:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "106:4:39", + "type": "" + } + ], + "src": "14:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "266:110:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "312:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "321:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "324:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "314:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "314:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "314:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "287:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "296:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "283:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "283:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "308:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "279:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "279:32:39" + }, + "nodeType": "YulIf", + "src": "276:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "337:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "360:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "347:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "347:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "337:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "232:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "243:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "255:6:39", + "type": "" + } + ], + "src": "196:180:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "468:290:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "514:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "523:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "526:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "516:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "516:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "516:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "489:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "498:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "485:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "485:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "510:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "481:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "481:32:39" + }, + "nodeType": "YulIf", + "src": "478:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "539:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "562:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "549:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "549:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "539:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "581:45:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "611:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "622:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "607:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "607:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "594:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "594:32:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "585:5:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "712:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "721:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "724:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "714:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "714:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "714:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "648:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "659:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "666:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "655:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "655:54:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "645:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "645:65:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "638:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "638:73:39" + }, + "nodeType": "YulIf", + "src": "635:93:39" + }, + { + "nodeType": "YulAssignment", + "src": "737:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "747:5:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "737:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "426:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "437:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "449:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "457:6:39", + "type": "" + } + ], + "src": "381:377:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "833:110:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "879:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "888:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "891:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "881:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "881:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "881:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "854:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "863:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "850:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "850:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "875:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "846:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "846:32:39" + }, + "nodeType": "YulIf", + "src": "843:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "904:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "927:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "914:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "914:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "904:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "799:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "810:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "822:6:39", + "type": "" + } + ], + "src": "763:180:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1035:161:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1081:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1090:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1093:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1083:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1083:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1083:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1056:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1065:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1052:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1052:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1077:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1048:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1048:32:39" + }, + "nodeType": "YulIf", + "src": "1045:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "1106:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1129:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1116:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1116:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1106:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1148:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1175:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1186:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1171:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1171:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1158:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1158:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1148:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "993:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1004:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1016:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1024:6:39", + "type": "" + } + ], + "src": "948:248:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1302:125:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1312:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1324:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1335:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1320:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1320:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1312:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1354:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1369:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1377:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1365:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1365:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1347:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1347:74:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1347:74:39" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1271:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1282:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1293:4:39", + "type": "" + } + ], + "src": "1201:226:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1527:92:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1537:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1549:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1560:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1545:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1545:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1537:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1579:9:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1604:6:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1597:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1597:14:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1590:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1590:22:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1572:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1572:41:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1572:41:39" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1496:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1507:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1518:4:39", + "type": "" + } + ], + "src": "1432:187:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1725:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1735:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1747:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1758:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1743:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1743:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1735:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1777:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1788:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1770:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1770:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1770:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1694:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1705:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1716:4:39", + "type": "" + } + ], + "src": "1624:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1939:561:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1985:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1994:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1997:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1987:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1987:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1987:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1960:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1969:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1956:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1956:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1981:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1952:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1952:32:39" + }, + "nodeType": "YulIf", + "src": "1949:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "2010:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2033:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2020:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2020:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2010:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2052:46:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2083:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2094:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2079:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2079:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2066:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2066:32:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2056:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2107:28:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2117:18:39", + "type": "", + "value": "0xffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "2111:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2162:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2171:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2174:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2164:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2164:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2164:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2150:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "2158:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2147:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2147:14:39" + }, + "nodeType": "YulIf", + "src": "2144:34:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2187:32:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2201:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2212:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2197:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2197:22:39" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "2191:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2267:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2276:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2279:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2269:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2269:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2269:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "2246:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2250:4:39", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2242:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2242:13:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2257:7:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2238:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2238:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2231:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2231:35:39" + }, + "nodeType": "YulIf", + "src": "2228:55:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2292:30:39", + "value": { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "2319:2:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2306:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2306:16:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2296:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2349:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2358:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2361:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2351:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2351:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2351:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2337:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "2345:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2334:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2334:14:39" + }, + "nodeType": "YulIf", + "src": "2331:34:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2423:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2432:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2435:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2425:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2425:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2425:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "2388:2:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2396:1:39", + "type": "", + "value": "5" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2399:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "2392:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2392:14:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2384:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2384:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2409:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2380:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2380:32:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2414:7:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2377:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2377:45:39" + }, + "nodeType": "YulIf", + "src": "2374:65:39" + }, + { + "nodeType": "YulAssignment", + "src": "2448:21:39", + "value": { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "2462:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2466:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2458:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2458:11:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2448:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2478:16:39", + "value": { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2488:6:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "2478:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1889:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1900:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1912:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1920:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "1928:6:39", + "type": "" + } + ], + "src": "1806:694:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2679:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2696:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2707:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2689:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2689:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2689:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2730:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2741:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2726:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2726:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2746:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2719:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2719:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2719:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2769:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2780:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2765:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2765:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "2785:34:39", + "type": "", + "value": "AccessControl: sender must be an" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2758:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2758:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2758:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2840:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2851:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2836:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2836:18:39" + }, + { + "hexValue": "2061646d696e20746f206772616e74", + "kind": "string", + "nodeType": "YulLiteral", + "src": "2856:17:39", + "type": "", + "value": " admin to grant" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2829:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2829:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2829:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "2883:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2895:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2906:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2891:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2891:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2883:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2656:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2670:4:39", + "type": "" + } + ], + "src": "2505:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3095:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3112:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3123:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3105:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3105:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3105:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3146:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3157:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3142:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3142:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3162:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3135:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3135:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3135:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3185:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3196:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3181:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3181:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e6365", + "kind": "string", + "nodeType": "YulLiteral", + "src": "3201:34:39", + "type": "", + "value": "AccessControl: can only renounce" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3174:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3174:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3174:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3256:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3267:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3252:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3252:18:39" + }, + { + "hexValue": "20726f6c657320666f722073656c66", + "kind": "string", + "nodeType": "YulLiteral", + "src": "3272:17:39", + "type": "", + "value": " roles for self" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3245:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3245:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3245:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "3299:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3311:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3322:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3307:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3307:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3299:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3072:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3086:4:39", + "type": "" + } + ], + "src": "2921:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3511:245:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3528:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3539:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3521:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3521:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3521:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3562:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3573:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3558:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3558:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3578:2:39", + "type": "", + "value": "55" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3551:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3551:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3551:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3601:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3612:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3597:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3597:18:39" + }, + { + "hexValue": "4f5241434c453a3a7365744d696e696d756d52657175697265645369676e6174", + "kind": "string", + "nodeType": "YulLiteral", + "src": "3617:34:39", + "type": "", + "value": "ORACLE::setMinimumRequiredSignat" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3590:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3590:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3590:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3672:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3683:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3668:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3668:18:39" + }, + { + "hexValue": "7572653a20596f7520617265206e6f7420747275737479", + "kind": "string", + "nodeType": "YulLiteral", + "src": "3688:25:39", + "type": "", + "value": "ure: You are not trusty" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3661:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3661:53:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3661:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "3723:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3735:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3746:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3731:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3731:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3723:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_aaf7eb7c0c4c3933c3a7f2471eeb8fc9d0b57167f2c598c852eb594b49cbe3ec__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3488:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3502:4:39", + "type": "" + } + ], + "src": "3337:419:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3935:238:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3952:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3963:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3945:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3945:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3945:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3986:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3997:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3982:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3982:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4002:2:39", + "type": "", + "value": "48" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3975:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3975:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3975:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4025:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4036:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4021:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4021:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4041:34:39", + "type": "", + "value": "AccessControl: sender must be an" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4014:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4014:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4014:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4096:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4107:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4092:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4092:18:39" + }, + { + "hexValue": "2061646d696e20746f207265766f6b65", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4112:18:39", + "type": "", + "value": " admin to revoke" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4085:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4085:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4085:46:39" + }, + { + "nodeType": "YulAssignment", + "src": "4140:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4152:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4163:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4148:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4148:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4140:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3912:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3926:4:39", + "type": "" + } + ], + "src": "3761:412:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4210:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4227:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4230:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4220:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4220:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4220:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4324:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4327:4:39", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4317:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4317:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4317:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4348:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4351:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4341:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4341:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4341:15:39" + } + ] + }, + "name": "panic_error_0x32", + "nodeType": "YulFunctionDefinition", + "src": "4178:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4461:486:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4471:51:39", + "value": { + "arguments": [ + { + "name": "ptr_to_tail", + "nodeType": "YulIdentifier", + "src": "4510:11:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4497:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4497:25:39" + }, + "variables": [ + { + "name": "rel_offset_of_tail", + "nodeType": "YulTypedName", + "src": "4475:18:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4670:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4679:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4682:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4672:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4672:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4672:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "rel_offset_of_tail", + "nodeType": "YulIdentifier", + "src": "4545:18:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier", + "src": "4573:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4573:14:39" + }, + { + "name": "base_ref", + "nodeType": "YulIdentifier", + "src": "4589:8:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4569:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4569:29:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4600:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4565:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4565:102:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4541:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4541:127:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "4534:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4534:135:39" + }, + "nodeType": "YulIf", + "src": "4531:155:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4695:47:39", + "value": { + "arguments": [ + { + "name": "base_ref", + "nodeType": "YulIdentifier", + "src": "4713:8:39" + }, + { + "name": "rel_offset_of_tail", + "nodeType": "YulIdentifier", + "src": "4723:18:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4709:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4709:33:39" + }, + "variables": [ + { + "name": "addr_1", + "nodeType": "YulTypedName", + "src": "4699:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4751:30:39", + "value": { + "arguments": [ + { + "name": "addr_1", + "nodeType": "YulIdentifier", + "src": "4774:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4761:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4761:20:39" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4751:6:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4824:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4833:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4836:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4826:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4826:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4826:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4796:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4804:18:39", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4793:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "4793:30:39" + }, + "nodeType": "YulIf", + "src": "4790:50:39" + }, + { + "nodeType": "YulAssignment", + "src": "4849:25:39", + "value": { + "arguments": [ + { + "name": "addr_1", + "nodeType": "YulIdentifier", + "src": "4861:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4869:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4857:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4857:17:39" + }, + "variableNames": [ + { + "name": "addr", + "nodeType": "YulIdentifier", + "src": "4849:4:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4925:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4934:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4937:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4927:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4927:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4927:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "addr", + "nodeType": "YulIdentifier", + "src": "4890:4:39" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier", + "src": "4900:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4900:14:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4916:6:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4896:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4896:27:39" + } + ], + "functionName": { + "name": "sgt", + "nodeType": "YulIdentifier", + "src": "4886:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4886:38:39" + }, + "nodeType": "YulIf", + "src": "4883:58:39" + } + ] + }, + "name": "access_calldata_tail_t_bytes_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "base_ref", + "nodeType": "YulTypedName", + "src": "4418:8:39", + "type": "" + }, + { + "name": "ptr_to_tail", + "nodeType": "YulTypedName", + "src": "4428:11:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "addr", + "nodeType": "YulTypedName", + "src": "4444:4:39", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "4450:6:39", + "type": "" + } + ], + "src": "4367:580:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5126:225:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5143:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5154:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5136:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5136:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5136:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5177:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5188:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5173:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5173:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5193:2:39", + "type": "", + "value": "35" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5166:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5166:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5166:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5216:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5227:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5212:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5212:18:39" + }, + { + "hexValue": "4f5241434c453a3a7665726966793a205369676e6572206973206e6f74207661", + "kind": "string", + "nodeType": "YulLiteral", + "src": "5232:34:39", + "type": "", + "value": "ORACLE::verify: Signer is not va" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5205:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5205:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5205:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5287:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5298:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5283:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5283:18:39" + }, + { + "hexValue": "6c6964", + "kind": "string", + "nodeType": "YulLiteral", + "src": "5303:5:39", + "type": "", + "value": "lid" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5276:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5276:33:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5276:33:39" + }, + { + "nodeType": "YulAssignment", + "src": "5318:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5330:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5341:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5326:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5326:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5318:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_f49242a8c58b7e5d7c6bcf7ccc435caa225efcedb9b0bea48b1712423a64bfad__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5103:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5117:4:39", + "type": "" + } + ], + "src": "4952:399:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5530:182:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5547:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5558:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5540:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5540:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5540:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5581:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5592:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5577:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5577:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5597:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5570:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5570:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5570:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5620:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5631:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5616:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5616:18:39" + }, + { + "hexValue": "4f5241434c453a3a7665726966793a205369676e657273206172652073616d65", + "kind": "string", + "nodeType": "YulLiteral", + "src": "5636:34:39", + "type": "", + "value": "ORACLE::verify: Signers are same" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5609:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5609:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5609:62:39" + }, + { + "nodeType": "YulAssignment", + "src": "5680:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5692:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5703:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5688:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5688:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5680:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_d5d2e037576918c87bbde6cf67701494bc4ee0065100375f813a31cf631ead15__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5507:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5521:4:39", + "type": "" + } + ], + "src": "5356:356:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5749:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5766:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5769:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5759:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5759:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5759:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5863:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5866:4:39", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5856:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5856:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5856:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5887:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5890:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5880:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5880:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5880:15:39" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "5717:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5953:148:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6044:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "6046:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "6046:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6046:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5969:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5976:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "5966:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "5966:77:39" + }, + "nodeType": "YulIf", + "src": "5963:103:39" + }, + { + "nodeType": "YulAssignment", + "src": "6075:20:39", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6086:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6093:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6082:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6082:13:39" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "6075:3:39" + } + ] + } + ] + }, + "name": "increment_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5935:5:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "5945:3:39", + "type": "" + } + ], + "src": "5906:195:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6280:181:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6297:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6308:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6290:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6290:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6290:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6331:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6342:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6327:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6327:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6347:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6320:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6320:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6320:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6370:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6381:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6366:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6366:18:39" + }, + { + "hexValue": "45434453413a20696e76616c6964207369676e6174757265206c656e677468", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6386:33:39", + "type": "", + "value": "ECDSA: invalid signature length" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6359:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6359:61:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6359:61:39" + }, + { + "nodeType": "YulAssignment", + "src": "6429:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6441:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6452:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6437:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6437:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6429:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6257:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6271:4:39", + "type": "" + } + ], + "src": "6106:355:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6640:224:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6657:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6668:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6650:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6650:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6650:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6691:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6702:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6687:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6687:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6707:2:39", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6680:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6680:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6680:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6730:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6741:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6726:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6726:18:39" + }, + { + "hexValue": "456e756d657261626c655365743a20696e646578206f7574206f6620626f756e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6746:34:39", + "type": "", + "value": "EnumerableSet: index out of boun" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6719:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6719:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6719:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6801:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6812:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6797:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6797:18:39" + }, + { + "hexValue": "6473", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6817:4:39", + "type": "", + "value": "ds" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6790:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6790:32:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6790:32:39" + }, + { + "nodeType": "YulAssignment", + "src": "6831:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6843:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6854:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6839:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6839:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6831:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6617:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6631:4:39", + "type": "" + } + ], + "src": "6466:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7043:224:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7060:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7071:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7053:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7053:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7053:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7094:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7105:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7090:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7090:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7110:2:39", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7083:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7083:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7083:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7133:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7144:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7129:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7129:18:39" + }, + { + "hexValue": "45434453413a20696e76616c6964207369676e6174757265202773272076616c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "7149:34:39", + "type": "", + "value": "ECDSA: invalid signature 's' val" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7122:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7122:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7122:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7204:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7215:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7200:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7200:18:39" + }, + { + "hexValue": "7565", + "kind": "string", + "nodeType": "YulLiteral", + "src": "7220:4:39", + "type": "", + "value": "ue" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7193:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7193:32:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7193:32:39" + }, + { + "nodeType": "YulAssignment", + "src": "7234:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7246:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7257:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7242:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7242:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7234:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7020:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7034:4:39", + "type": "" + } + ], + "src": "6869:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7446:224:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7463:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7474:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7456:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7456:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7456:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7497:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7508:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7493:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7493:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7513:2:39", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7486:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7486:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7486:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7536:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7547:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7532:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7532:18:39" + }, + { + "hexValue": "45434453413a20696e76616c6964207369676e6174757265202776272076616c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "7552:34:39", + "type": "", + "value": "ECDSA: invalid signature 'v' val" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7525:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7525:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7525:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7607:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7618:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7603:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7603:18:39" + }, + { + "hexValue": "7565", + "kind": "string", + "nodeType": "YulLiteral", + "src": "7623:4:39", + "type": "", + "value": "ue" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7596:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7596:32:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7596:32:39" + }, + { + "nodeType": "YulAssignment", + "src": "7637:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7649:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7660:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7645:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7645:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7637:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7423:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7437:4:39", + "type": "" + } + ], + "src": "7272:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7856:217:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7866:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7878:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7889:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7874:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7874:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7866:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7909:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7920:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7902:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7902:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7902:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7947:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7958:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7943:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7943:18:39" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "7967:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7975:4:39", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "7963:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7963:17:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7936:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7936:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7936:45:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8001:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8012:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7997:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7997:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "8017:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7990:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7990:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7990:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8044:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8055:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8040:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8040:18:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "8060:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8033:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8033:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8033:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7801:9:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "7812:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "7820:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "7828:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "7836:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7847:4:39", + "type": "" + } + ], + "src": "7675:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8252:174:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8269:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8280:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8262:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8262:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8262:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8303:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8314:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8299:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8299:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8319:2:39", + "type": "", + "value": "24" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8292:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8292:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8292:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8342:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8353:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8338:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8338:18:39" + }, + { + "hexValue": "45434453413a20696e76616c6964207369676e6174757265", + "kind": "string", + "nodeType": "YulLiteral", + "src": "8358:26:39", + "type": "", + "value": "ECDSA: invalid signature" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8331:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8331:54:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8331:54:39" + }, + { + "nodeType": "YulAssignment", + "src": "8394:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8406:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8417:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8402:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8402:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8394:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8229:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "8243:4:39", + "type": "" + } + ], + "src": "8078:348:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8480:76:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "8502:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "8504:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "8504:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8504:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "8496:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "8499:1:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "8493:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "8493:8:39" + }, + "nodeType": "YulIf", + "src": "8490:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "8533:17:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "8545:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "8548:1:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8541:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8541:9:39" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "8533:4:39" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "8462:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "8465:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "8471:4:39", + "type": "" + } + ], + "src": "8431:125:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8609:80:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "8636:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "8638:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "8638:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8638:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "8625:1:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "8632:1:39" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "8628:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8628:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8622:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "8622:13:39" + }, + "nodeType": "YulIf", + "src": "8619:39:39" + }, + { + "nodeType": "YulAssignment", + "src": "8667:16:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "8678:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "8681:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8674:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8674:9:39" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "8667:3:39" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "8592:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "8595:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "8601:3:39", + "type": "" + } + ], + "src": "8561:128:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8726:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8743:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8746:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8736:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8736:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8736:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8840:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8843:4:39", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8833:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8833:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8833:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8864:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8867:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8857:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8857:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8857:15:39" + } + ] + }, + "name": "panic_error_0x31", + "nodeType": "YulFunctionDefinition", + "src": "8694:184:39" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n value1 := value\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_bytes32t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_2)\n if gt(length, _1) { revert(0, 0) }\n if gt(add(add(_2, shl(5, length)), 32), dataEnd) { revert(0, 0) }\n value1 := add(_2, 32)\n value2 := length\n }\n function abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"AccessControl: sender must be an\")\n mstore(add(headStart, 96), \" admin to grant\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"AccessControl: can only renounce\")\n mstore(add(headStart, 96), \" roles for self\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_aaf7eb7c0c4c3933c3a7f2471eeb8fc9d0b57167f2c598c852eb594b49cbe3ec__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 55)\n mstore(add(headStart, 64), \"ORACLE::setMinimumRequiredSignat\")\n mstore(add(headStart, 96), \"ure: You are not trusty\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 48)\n mstore(add(headStart, 64), \"AccessControl: sender must be an\")\n mstore(add(headStart, 96), \" admin to revoke\")\n tail := add(headStart, 128)\n }\n function panic_error_0x32()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n {\n let rel_offset_of_tail := calldataload(ptr_to_tail)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n let addr_1 := add(base_ref, rel_offset_of_tail)\n length := calldataload(addr_1)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n addr := add(addr_1, 0x20)\n if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n }\n function abi_encode_tuple_t_stringliteral_f49242a8c58b7e5d7c6bcf7ccc435caa225efcedb9b0bea48b1712423a64bfad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 35)\n mstore(add(headStart, 64), \"ORACLE::verify: Signer is not va\")\n mstore(add(headStart, 96), \"lid\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_d5d2e037576918c87bbde6cf67701494bc4ee0065100375f813a31cf631ead15__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"ORACLE::verify: Signers are same\")\n tail := add(headStart, 96)\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 31)\n mstore(add(headStart, 64), \"ECDSA: invalid signature length\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"EnumerableSet: index out of boun\")\n mstore(add(headStart, 96), \"ds\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"ECDSA: invalid signature 's' val\")\n mstore(add(headStart, 96), \"ue\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"ECDSA: invalid signature 'v' val\")\n mstore(add(headStart, 96), \"ue\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, 0xff))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"ECDSA: invalid signature\")\n tail := add(headStart, 96)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function panic_error_0x31()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100d45760003560e01c80639010d07c11610081578063ca15c8731161005b578063ca15c873146101fb578063d547741f1461020e578063fb0fe3f41461022157600080fd5b80639010d07c1461019857806391d14854146101d0578063a217fddf146101f357600080fd5b806334ddb95d116100b257806334ddb95d1461014b57806336568abe1461017257806380f341ed1461018557600080fd5b806307e2cea5146100d9578063248a9ca3146101135780632f2ff15d14610136575b600080fd5b6101007f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef181565b6040519081526020015b60405180910390f35b610100610121366004610e4d565b60009081526020819052604090206002015490565b610149610144366004610e66565b610234565b005b6101007f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610149610180366004610e66565b6102ef565b610149610193366004610e4d565b61039e565b6101ab6101a6366004610eaf565b61048f565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010a565b6101e36101de366004610e66565b6104b0565b604051901515815260200161010a565b610100600081565b610100610209366004610e4d565b6104c8565b61014961021c366004610e66565b6104df565b6101e361022f366004610ed1565b610587565b60008281526020819052604090206002015461025090336104b0565b6102e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084015b60405180910390fd5b6102eb828261079a565b5050565b73ffffffffffffffffffffffffffffffffffffffff81163314610394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016102d8565b6102eb8282610800565b6103c87f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336104b0565b610454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f5241434c453a3a7365744d696e696d756d52657175697265645369676e617460448201527f7572653a20596f7520617265206e6f742074727573747900000000000000000060648201526084016102d8565b60018190556040518181527f56d6e071fcef02790d62fce568ce7db2a2417110238a7bdbbd55a0d59c7d51cd9060200160405180910390a150565b60008281526020819052604081206104a79083610866565b90505b92915050565b60008281526020819052604081206104a7908361087c565b60008181526020819052604081206104aa906108bb565b6000828152602081905260409020600201546104fb90336104b0565b610394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b650000000000000000000000000000000060648201526084016102d8565b60008060005b60015481101561075c5760006105fd8686848181106105ae576105ae610f50565b90506020028101906105c09190610f7f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b939250506108c59050565b90506106297f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef1826104b0565b6106b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4f5241434c453a3a7665726966793a205369676e6572206973206e6f7420766160448201527f6c6964000000000000000000000000000000000000000000000000000000000060648201526084016102d8565b8273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161161074a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f5241434c453a3a7665726966793a205369676e657273206172652073616d6560448201526064016102d8565b91506107558161101a565b905061058d565b50600195945050505050565b60006104a7837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16610983565b60008281526020819052604090206107b29082610768565b156102eb57604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b600082815260208190526040902061081890826109d2565b156102eb57604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b60006108728383610a04565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156104a7565b60006104aa825490565b60008151604114156108f95760208201516040830151606084015160001a6108ef86828585610abf565b93505050506104aa565b8151604014156109215760208201516040830151610918858383610d17565b925050506104aa565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016102d8565b60008181526001830160205260408120546109ca575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556104aa565b5060006104aa565b60006104a7837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16610d5a565b81546000908210610a97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f647300000000000000000000000000000000000000000000000000000000000060648201526084016102d8565b826000018281548110610aac57610aac610f50565b9060005260206000200154905092915050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115610b71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016102d8565b8360ff16601b1480610b8657508360ff16601c145b610c12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016102d8565b6040805160008082526020820180845288905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa158015610c66573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610d0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016102d8565b95945050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821660ff83901c601b01610d5086828785610abf565b9695505050505050565b60008181526001830160205260408120548015610e43576000610d7e600183611053565b8554909150600090610d9290600190611053565b90506000866000018281548110610dab57610dab610f50565b9060005260206000200154905080876000018481548110610dce57610dce610f50565b600091825260209091200155610de583600161106a565b60008281526001890160205260409020558654879080610e0757610e07611082565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506104aa565b60009150506104aa565b600060208284031215610e5f57600080fd5b5035919050565b60008060408385031215610e7957600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff81168114610ea457600080fd5b809150509250929050565b60008060408385031215610ec257600080fd5b50508035926020909101359150565b600080600060408486031215610ee657600080fd5b83359250602084013567ffffffffffffffff80821115610f0557600080fd5b818601915086601f830112610f1957600080fd5b813581811115610f2857600080fd5b8760208260051b8501011115610f3d57600080fd5b6020830194508093505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610fb457600080fd5b83018035915067ffffffffffffffff821115610fcf57600080fd5b602001915036819003821315610fe457600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561104c5761104c610feb565b5060010190565b60008282101561106557611065610feb565b500390565b6000821982111561107d5761107d610feb565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220808e25e8d69927bddf64938db333e3534c464eda7b5eb78e5e1d4aa15a1c9ceb64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9010D07C GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xCA15C873 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x1FB JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0xFB0FE3F4 EQ PUSH2 0x221 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9010D07C EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x1F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x34DDB95D GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x34DDB95D EQ PUSH2 0x14B JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x172 JUMPI DUP1 PUSH4 0x80F341ED EQ PUSH2 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7E2CEA5 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x113 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x136 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x100 PUSH32 0x68E79A7BF1E0BC45D0A330C573BC367F9CF464FD326078812F301165FBDA4EF1 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x100 PUSH2 0x121 CALLDATASIZE PUSH1 0x4 PUSH2 0xE4D JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x149 PUSH2 0x144 CALLDATASIZE PUSH1 0x4 PUSH2 0xE66 JUMP JUMPDEST PUSH2 0x234 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x100 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP2 JUMP JUMPDEST PUSH2 0x149 PUSH2 0x180 CALLDATASIZE PUSH1 0x4 PUSH2 0xE66 JUMP JUMPDEST PUSH2 0x2EF JUMP JUMPDEST PUSH2 0x149 PUSH2 0x193 CALLDATASIZE PUSH1 0x4 PUSH2 0xE4D JUMP JUMPDEST PUSH2 0x39E JUMP JUMPDEST PUSH2 0x1AB PUSH2 0x1A6 CALLDATASIZE PUSH1 0x4 PUSH2 0xEAF JUMP JUMPDEST PUSH2 0x48F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10A JUMP JUMPDEST PUSH2 0x1E3 PUSH2 0x1DE CALLDATASIZE PUSH1 0x4 PUSH2 0xE66 JUMP JUMPDEST PUSH2 0x4B0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10A JUMP JUMPDEST PUSH2 0x100 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x100 PUSH2 0x209 CALLDATASIZE PUSH1 0x4 PUSH2 0xE4D JUMP JUMPDEST PUSH2 0x4C8 JUMP JUMPDEST PUSH2 0x149 PUSH2 0x21C CALLDATASIZE PUSH1 0x4 PUSH2 0xE66 JUMP JUMPDEST PUSH2 0x4DF JUMP JUMPDEST PUSH2 0x1E3 PUSH2 0x22F CALLDATASIZE PUSH1 0x4 PUSH2 0xED1 JUMP JUMPDEST PUSH2 0x587 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x250 SWAP1 CALLER PUSH2 0x4B0 JUMP JUMPDEST PUSH2 0x2E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F206772616E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2EB DUP3 DUP3 PUSH2 0x79A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ PUSH2 0x394 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D8 JUMP JUMPDEST PUSH2 0x2EB DUP3 DUP3 PUSH2 0x800 JUMP JUMPDEST PUSH2 0x3C8 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x4B0 JUMP JUMPDEST PUSH2 0x454 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x37 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F5241434C453A3A7365744D696E696D756D52657175697265645369676E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7572653A20596F7520617265206E6F7420747275737479000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D8 JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0x56D6E071FCEF02790D62FCE568CE7DB2A2417110238A7BDBBD55A0D59C7D51CD SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x4A7 SWAP1 DUP4 PUSH2 0x866 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x4A7 SWAP1 DUP4 PUSH2 0x87C JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x4AA SWAP1 PUSH2 0x8BB JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x4FB SWAP1 CALLER PUSH2 0x4B0 JUMP JUMPDEST PUSH2 0x394 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F207265766F6B6500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST PUSH1 0x1 SLOAD DUP2 LT ISZERO PUSH2 0x75C JUMPI PUSH1 0x0 PUSH2 0x5FD DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x5AE JUMPI PUSH2 0x5AE PUSH2 0xF50 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x5C0 SWAP2 SWAP1 PUSH2 0xF7F JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP12 SWAP4 SWAP3 POP POP PUSH2 0x8C5 SWAP1 POP JUMP JUMPDEST SWAP1 POP PUSH2 0x629 PUSH32 0x68E79A7BF1E0BC45D0A330C573BC367F9CF464FD326078812F301165FBDA4EF1 DUP3 PUSH2 0x4B0 JUMP JUMPDEST PUSH2 0x6B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F5241434C453A3A7665726966793A205369676E6572206973206E6F74207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C69640000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D8 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT PUSH2 0x74A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F5241434C453A3A7665726966793A205369676E657273206172652073616D65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2D8 JUMP JUMPDEST SWAP2 POP PUSH2 0x755 DUP2 PUSH2 0x101A JUMP JUMPDEST SWAP1 POP PUSH2 0x58D JUMP JUMPDEST POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A7 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x983 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x7B2 SWAP1 DUP3 PUSH2 0x768 JUMP JUMPDEST ISZERO PUSH2 0x2EB JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x818 SWAP1 DUP3 PUSH2 0x9D2 JUMP JUMPDEST ISZERO PUSH2 0x2EB JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x872 DUP4 DUP4 PUSH2 0xA04 JUMP JUMPDEST PUSH1 0x60 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD ISZERO ISZERO PUSH2 0x4A7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AA DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x41 EQ ISZERO PUSH2 0x8F9 JUMPI PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x8EF DUP7 DUP3 DUP6 DUP6 PUSH2 0xABF JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x4AA JUMP JUMPDEST DUP2 MLOAD PUSH1 0x40 EQ ISZERO PUSH2 0x921 JUMPI PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x918 DUP6 DUP4 DUP4 PUSH2 0xD17 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x4AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2D8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x9CA 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 0x4AA JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x4AA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A7 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0xD5A JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0xA97 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E756D657261626C655365743A20696E646578206F7574206F6620626F756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6473000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D8 JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xAAC JUMPI PUSH2 0xAAC PUSH2 0xF50 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP3 GT ISZERO PUSH2 0xB71 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7565000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D8 JUMP JUMPDEST DUP4 PUSH1 0xFF AND PUSH1 0x1B EQ DUP1 PUSH2 0xB86 JUMPI POP DUP4 PUSH1 0xFF AND PUSH1 0x1C EQ JUMPDEST PUSH2 0xC12 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7565000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP9 SWAP1 MSTORE PUSH1 0xFF DUP8 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC66 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xD0E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2D8 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0xFF DUP4 SWAP1 SHR PUSH1 0x1B ADD PUSH2 0xD50 DUP7 DUP3 DUP8 DUP6 PUSH2 0xABF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0xE43 JUMPI PUSH1 0x0 PUSH2 0xD7E PUSH1 0x1 DUP4 PUSH2 0x1053 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0xD92 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x1053 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xDAB JUMPI PUSH2 0xDAB PUSH2 0xF50 JUMP 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 0xDCE JUMPI PUSH2 0xDCE PUSH2 0xF50 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH2 0xDE5 DUP4 PUSH1 0x1 PUSH2 0x106A JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0xE07 JUMPI PUSH2 0xE07 PUSH2 0x1082 JUMP 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 0x4AA JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x4AA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xEA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xEE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xF05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xF28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xF3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0xFB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xFCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0xFE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x104C JUMPI PUSH2 0x104C PUSH2 0xFEB JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x1065 JUMPI PUSH2 0x1065 PUSH2 0xFEB JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x107D JUMPI PUSH2 0x107D PUSH2 0xFEB JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP1 DUP15 0x25 0xE8 0xD6 SWAP10 0x27 0xBD 0xDF PUSH5 0x938DB333E3 MSTORE8 0x4C CHAINID 0x4E 0xDA PUSH28 0x5EB78E5E1D4AA15A1C9CEB64736F6C634300080A0033000000000000 ", + "sourceMap": "168:1375:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;240:62;;278:24;240:62;;;;;160:25:39;;;148:2;133:18;240:62:25;;;;;;;;4347:112:20;;;;;;:::i;:::-;4404:7;4430:12;;;;;;;;;;:22;;;;4347:112;4709:223;;;;;;:::i;:::-;;:::i;:::-;;305:62:25;;343:24;305:62;;5883:205:20;;;;;;:::i;:::-;;:::i;1221:320:25:-;;;;;;:::i;:::-;;:::i;4030:136:20:-;;;;;;:::i;:::-;;:::i;:::-;;;1377:42:39;1365:55;;;1347:74;;1335:2;1320:18;4030:136:20;1201:226:39;3015:137:20;;;;;;:::i;:::-;;:::i;:::-;;;1597:14:39;;1590:22;1572:41;;1560:2;1545:18;3015:137:20;1432:187:39;1722:49:20;;1767:4;1722:49;;3320:125;;;;;;:::i;:::-;;:::i;5166:226::-;;;;;;:::i;:::-;;:::i;794:424:25:-;;;;;;:::i;:::-;;:::i;4709:223:20:-;4800:6;:12;;;;;;;;;;:22;;;4792:45;;686:10:4;3015:137:20;:::i;4792:45::-;4784:105;;;;;;;2707:2:39;4784:105:20;;;2689:21:39;2746:2;2726:18;;;2719:30;2785:34;2765:18;;;2758:62;2856:17;2836:18;;;2829:45;2891:19;;4784:105:20;;;;;;;;;4900:25;4911:4;4917:7;4900:10;:25::i;:::-;4709:223;;:::o;5883:205::-;5969:23;;;686:10:4;5969:23:20;5961:83;;;;;;;3123:2:39;5961:83:20;;;3105:21:39;3162:2;3142:18;;;3135:30;3201:34;3181:18;;;3174:62;3272:17;3252:18;;;3245:45;3307:19;;5961:83:20;2921:411:39;5961:83:20;6055:26;6067:4;6073:7;6055:11;:26::i;1221:320:25:-;1319:32;343:24;1340:10;1319:7;:32::i;:::-;1307:110;;;;;;;3539:2:39;1307:110:25;;;3521:21:39;3578:2;3558:18;;;3551:30;3617:34;3597:18;;;3590:62;3688:25;3668:18;;;3661:53;3731:19;;1307:110:25;3337:419:39;1307:110:25;1421:24;:52;;;1483:54;;160:25:39;;;1483:54:25;;148:2:39;133:18;1483:54:25;;;;;;;1221:320;:::o;4030:136:20:-;4103:7;4129:12;;;;;;;;;;:30;;4153:5;4129:23;:30::i;:::-;4122:37;;4030:136;;;;;:::o;3015:137::-;3084:4;3107:12;;;;;;;;;;:38;;3137:7;3107:29;:38::i;3320:125::-;3383:7;3409:12;;;;;;;;;;:29;;:27;:29::i;5166:226::-;5258:6;:12;;;;;;;;;;:22;;;5250:45;;686:10:4;3015:137:20;:::i;5250:45::-;5242:106;;;;;;;3963:2:39;5242:106:20;;;3945:21:39;4002:2;3982:18;;;3975:30;4041:34;4021:18;;;4014:62;4112:18;4092;;;4085:46;4148:19;;5242:106:20;3761:412:39;794:424:25;874:4;885:18;912:13;907:293;939:24;;931:5;:32;907:293;;;979:14;996:25;1009:4;;1014:5;1009:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;996:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;996:4:25;;:25;-1:-1:-1;;996:12:25;:25;-1:-1:-1;996:25:25:i;:::-;979:42;;1034:28;278:24;1055:6;1034:7;:28::i;:::-;1026:76;;;;;;;5154:2:39;1026:76:25;;;5136:21:39;5193:2;5173:18;;;5166:30;5232:34;5212:18;;;5205:62;5303:5;5283:18;;;5276:33;5326:19;;1026:76:25;4952:399:39;1026:76:25;1124:10;1115:19;;:6;:19;;;1107:64;;;;;;;5558:2:39;1107:64:25;;;5540:21:39;;;5577:18;;;5570:30;5636:34;5616:18;;;5609:62;5688:18;;1107:64:25;5356:356:39;1107:64:25;1189:6;-1:-1:-1;965:7:25;;;:::i;:::-;;;907:293;;;-1:-1:-1;1210:4:25;;794:424;-1:-1:-1;;;;;794:424:25:o;4866:141:38:-;4936:4;4959:41;4964:3;4976:23;4984:14;;;;4976:23;4959:4;:41::i;7090:184:20:-;7163:6;:12;;;;;;;;;;:33;;7188:7;7163:24;:33::i;:::-;7159:109;;;7217:40;;686:10:4;;7217:40:20;;;;7229:4;;7217:40;;;;;7090:184;;:::o;7280:188::-;7354:6;:12;;;;;;;;;;:36;;7382:7;7354:27;:36::i;:::-;7350:112;;;7411:40;;686:10:4;;7411:40:20;;;;7423:4;;7411:40;;;;;7280:188;;:::o;6087:147:38:-;6161:7;6203:22;6207:3;6219:5;6203:3;:22::i;:::-;6187:40;;;6087:147;-1:-1:-1;;;6087:147:38:o;5403:156::-;5536:14;;;;5528:23;;5483:4;3874:19;;;:12;;;:19;;;;;;:24;;5506:46;3778:127;5640:115;5703:7;5729:19;5737:3;4068:18;;3986:107;1288:1241:2;1366:7;1582:9;:16;1602:2;1582:22;1578:945;;;1871:4;1856:20;;1850:27;1920:4;1905:20;;1899:27;1977:4;1962:20;;1956:27;1620:9;1948:36;2018:22;2026:4;1948:36;1850:27;1899;2018:7;:22::i;:::-;2011:29;;;;;;;1578:945;2061:9;:16;2081:2;2061:22;2057:466;;;2330:4;2315:20;;2309:27;2380:4;2365:20;;2359:27;2420:20;2428:4;2309:27;2359;2420:7;:20::i;:::-;2413:27;;;;;;2057:466;2471:41;;;;;6308:2:39;2471:41:2;;;6290:21:39;6347:2;6327:18;;;6320:30;6386:33;6366:18;;;6359:61;6437:18;;2471:41:2;6106:355:39;1613:404:38;1676:4;3874:19;;;:12;;;:19;;;;;;1692:319;;-1:-1:-1;1734:23:38;;;;;;;;:11;:23;;;;;;;;;;;;;1914:18;;1892:19;;;:12;;;:19;;;;;;:40;;;;1946:11;;1692:319;-1:-1:-1;1995:5:38;1988:12;;5175:147;5248:4;5271:44;5279:3;5291:23;5299:14;;;;5291:23;5271:7;:44::i;4425:201::-;4519:18;;4492:7;;4519:26;-1:-1:-1;4511:73:38;;;;;;;6668:2:39;4511:73:38;;;6650:21:39;6707:2;6687:18;;;6680:30;6746:34;6726:18;;;6719:62;6817:4;6797:18;;;6790:32;6839:19;;4511:73:38;6466:398:39;4511:73:38;4601:3;:11;;4613:5;4601:18;;;;;;;;:::i;:::-;;;;;;;;;4594:25;;4425:201;;;;:::o;3265:1486:2:-;3388:7;4316:66;4302:80;;;4281:161;;;;;;;7071:2:39;4281:161:2;;;7053:21:39;7110:2;7090:18;;;7083:30;7149:34;7129:18;;;7122:62;7220:4;7200:18;;;7193:32;7242:19;;4281:161:2;6869:398:39;4281:161:2;4460:1;:7;;4465:2;4460:7;:18;;;;4471:1;:7;;4476:2;4471:7;4460:18;4452:65;;;;;;;7474:2:39;4452:65:2;;;7456:21:39;7513:2;7493:18;;;7486:30;7552:34;7532:18;;;7525:62;7623:4;7603:18;;;7596:32;7645:19;;4452:65:2;7272:398:39;4452:65:2;4629:24;;;4612:14;4629:24;;;;;;;;;7902:25:39;;;7975:4;7963:17;;7943:18;;;7936:45;;;;7997:18;;;7990:34;;;8040:18;;;8033:34;;;4629:24:2;;7874:19:39;;4629:24:2;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4629:24:2;;;;;;-1:-1:-1;;4671:20:2;;;4663:57;;;;;;;8280:2:39;4663:57:2;;;8262:21:39;8319:2;8299:18;;;8292:30;8358:26;8338:18;;;8331:54;8402:18;;4663:57:2;8078:348:39;4663:57:2;4738:6;3265:1486;-1:-1:-1;;;;;3265:1486:2:o;2780:359::-;2887:7;2978:66;2970:75;;3071:3;3067:12;;;3081:2;3063:21;3110:22;3118:4;3063:21;3127:1;2970:75;3110:7;:22::i;:::-;3103:29;2780:359;-1:-1:-1;;;;;;2780:359:2:o;2185:1512:38:-;2251:4;2388:19;;;:12;;;:19;;;;;;2422:15;;2418:1273;;2779:21;2803:14;2816:1;2803:10;:14;:::i;:::-;2851:18;;2779:38;;-1:-1:-1;2831:17:38;;2851:22;;2872:1;;2851:22;:::i;:::-;2831:42;;3113:17;3133:3;:11;;3145:9;3133:22;;;;;;;;:::i;:::-;;;;;;;;;3113:42;;3276:9;3247:3;:11;;3259:13;3247:26;;;;;;;;:::i;:::-;;;;;;;;;;:38;3377:17;:13;3393:1;3377:17;:::i;:::-;3351:23;;;;:12;;;:23;;;;;:43;3500:17;;3351:3;;3500:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3592:3;:12;;:19;3605:5;3592:19;;;;;;;;;;;3585:26;;;3633:4;3626:11;;;;;;;;2418:1273;3675:5;3668:12;;;;;196:180:39;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:39;;196:180;-1:-1:-1;196:180:39:o;381:377::-;449:6;457;510:2;498:9;489:7;485:23;481:32;478:52;;;526:1;523;516:12;478:52;562:9;549:23;539:33;;622:2;611:9;607:18;594:32;666:42;659:5;655:54;648:5;645:65;635:93;;724:1;721;714:12;635:93;747:5;737:15;;;381:377;;;;;:::o;948:248::-;1016:6;1024;1077:2;1065:9;1056:7;1052:23;1048:32;1045:52;;;1093:1;1090;1083:12;1045:52;-1:-1:-1;;1116:23:39;;;1186:2;1171:18;;;1158:32;;-1:-1:-1;948:248:39:o;1806:694::-;1912:6;1920;1928;1981:2;1969:9;1960:7;1956:23;1952:32;1949:52;;;1997:1;1994;1987:12;1949:52;2033:9;2020:23;2010:33;;2094:2;2083:9;2079:18;2066:32;2117:18;2158:2;2150:6;2147:14;2144:34;;;2174:1;2171;2164:12;2144:34;2212:6;2201:9;2197:22;2187:32;;2257:7;2250:4;2246:2;2242:13;2238:27;2228:55;;2279:1;2276;2269:12;2228:55;2319:2;2306:16;2345:2;2337:6;2334:14;2331:34;;;2361:1;2358;2351:12;2331:34;2414:7;2409:2;2399:6;2396:1;2392:14;2388:2;2384:23;2380:32;2377:45;2374:65;;;2435:1;2432;2425:12;2374:65;2466:2;2462;2458:11;2448:21;;2488:6;2478:16;;;;;1806:694;;;;;:::o;4178:184::-;4230:77;4227:1;4220:88;4327:4;4324:1;4317:15;4351:4;4348:1;4341:15;4367:580;4444:4;4450:6;4510:11;4497:25;4600:66;4589:8;4573:14;4569:29;4565:102;4545:18;4541:127;4531:155;;4682:1;4679;4672:12;4531:155;4709:33;;4761:20;;;-1:-1:-1;4804:18:39;4793:30;;4790:50;;;4836:1;4833;4826:12;4790:50;4869:4;4857:17;;-1:-1:-1;4900:14:39;4896:27;;;4886:38;;4883:58;;;4937:1;4934;4927:12;4883:58;4367:580;;;;;:::o;5717:184::-;5769:77;5766:1;5759:88;5866:4;5863:1;5856:15;5890:4;5887:1;5880:15;5906:195;5945:3;5976:66;5969:5;5966:77;5963:103;;;6046:18;;:::i;:::-;-1:-1:-1;6093:1:39;6082:13;;5906:195::o;8431:125::-;8471:4;8499:1;8496;8493:8;8490:34;;;8504:18;;:::i;:::-;-1:-1:-1;8541:9:39;;8431:125::o;8561:128::-;8601:3;8632:1;8628:6;8625:1;8622:13;8619:39;;;8638:18;;:::i;:::-;-1:-1:-1;8674:9:39;;8561:128::o;8694:184::-;8746:77;8743:1;8736:88;8843:4;8840:1;8833:15;8867:4;8864:1;8857:15" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "865400", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "DEFAULT_ADMIN_ROLE()": "251", + "ORACLE_ROLE()": "208", + "TRUSTY_ROLE()": "207", + "getRoleAdmin(bytes32)": "2482", + "getRoleMember(bytes32,uint256)": "6935", + "getRoleMemberCount(bytes32)": "infinite", + "grantRole(bytes32,address)": "infinite", + "hasRole(bytes32,address)": "infinite", + "renounceRole(bytes32,address)": "infinite", + "revokeRole(bytes32,address)": "infinite", + "setMinimumRequiredSignature(uint256)": "infinite", + "verify(bytes32,bytes[])": "infinite" + } + }, + "methodIdentifiers": { + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "ORACLE_ROLE()": "07e2cea5", + "TRUSTY_ROLE()": "34ddb95d", + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "setMinimumRequiredSignature(uint256)": "80f341ed", + "verify(bytes32,bytes[])": "fb0fe3f4" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_minimumRequiredSignature\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_trusty_address\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minimumRequiredSignature\",\"type\":\"uint256\"}],\"name\":\"MinimumRequiredSignatureSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ORACLE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRUSTY_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_minimumRequiredSignature\",\"type\":\"uint256\"}],\"name\":\"setMinimumRequiredSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes[]\",\"name\":\"sigs\",\"type\":\"bytes[]\"}],\"name\":\"verify\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Oracle/Oracle.sol\":\"Oracle\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n *\\n * Documentation for signature generation:\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n // Check the signature length\\n // - case 65: r,s,v signature (standard)\\n // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._\\n if (signature.length == 65) {\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n return recover(hash, v, r, s);\\n } else if (signature.length == 64) {\\n bytes32 r;\\n bytes32 vs;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n assembly {\\n r := mload(add(signature, 0x20))\\n vs := mload(add(signature, 0x40))\\n }\\n return recover(hash, r, vs);\\n } else {\\n revert(\\\"ECDSA: invalid signature length\\\");\\n }\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `r` and `vs` short-signature fields separately.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n *\\n * _Available since v4.2._\\n */\\n function recover(\\n bytes32 hash,\\n bytes32 r,\\n bytes32 vs\\n ) internal pure returns (address) {\\n bytes32 s;\\n uint8 v;\\n assembly {\\n s := and(vs, 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\\n v := add(shr(255, vs), 27)\\n }\\n return recover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `v`, `r` and `s` signature fields separately.\\n */\\n function recover(\\n bytes32 hash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal pure returns (address) {\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (281): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (282): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n require(\\n uint256(s) <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0,\\n \\\"ECDSA: invalid signature 's' value\\\"\\n );\\n require(v == 27 || v == 28, \\\"ECDSA: invalid signature 'v' value\\\");\\n\\n // If the signature is valid (and not malleable), return the signer address\\n address signer = ecrecover(hash, v, r, s);\\n require(signer != address(0), \\\"ECDSA: invalid signature\\\");\\n\\n return signer;\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Typed Data, created from a\\n * `domainSeparator` and a `structHash`. This produces hash corresponding\\n * to the one signed with the\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n * JSON-RPC method as part of EIP-712.\\n *\\n * See {recover}.\\n */\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n }\\n}\\n\",\"keccak256\":\"0x828774372910d18e7337bc31a288d786748af4cd9da80222467e486ed1d569ab\",\"license\":\"MIT\"},\"contracts/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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 payable(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}\",\"keccak256\":\"0x60d51a32063a4975dbf9433d38f5849173527da72f007c38053274e06698cb54\",\"license\":\"MIT\"},\"contracts/Governance/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Utils/EnumerableSet.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\nimport \\\"../Common/Context.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it.\\n */\\nabstract contract AccessControl is Context {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n using Address for address;\\n\\n struct RoleData {\\n EnumerableSet.AddressSet members;\\n bytes32 adminRole;\\n }\\n\\n mapping (bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; //bytes32(uint256(0x4B437D01b575618140442A4975db38850e3f8f5f) << 96);\\n\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view returns (bool) {\\n return _roles[role].members.contains(account);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view returns (uint256) {\\n return _roles[role].members.length();\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view returns (address) {\\n return _roles[role].members.at(index);\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to grant\\\");\\n\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to revoke\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) public virtual {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);\\n _roles[role].adminRole = adminRole;\\n }\\n\\n function _grantRole(bytes32 role, address account) private {\\n if (_roles[role].members.add(account)) {\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n function _revokeRole(bytes32 role, address account) private {\\n if (_roles[role].members.remove(account)) {\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x749b2c0e515a59c6d03cf4908a252ebc5d2b482ca3fd7ec997d1143c302f4e89\",\"license\":\"MIT\"},\"contracts/Oracle/Oracle.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\npragma solidity >=0.6.12;\\n\\nimport \\\"../Governance/AccessControl.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\\\";\\n\\ncontract Oracle is AccessControl {\\n\\tusing ECDSA for bytes32;\\n\\n\\t// role\\n\\tbytes32 public constant ORACLE_ROLE = keccak256(\\\"ORACLE_ROLE\\\");\\n\\tbytes32 public constant TRUSTY_ROLE = keccak256(\\\"TRUSTY_ROLE\\\");\\n\\n\\tuint256 minimumRequiredSignature;\\n\\n\\tevent MinimumRequiredSignatureSet(uint256 minimumRequiredSignature);\\n\\n\\tconstructor(address _admin, uint256 _minimumRequiredSignature, address _trusty_address) {\\n\\t\\trequire(_admin != address(0), \\\"ORACLE::constructor: Zero address detected\\\");\\n\\t\\t_setupRole(DEFAULT_ADMIN_ROLE, _admin);\\n\\t\\t_setupRole(TRUSTY_ROLE, _trusty_address);\\n\\t\\tminimumRequiredSignature = _minimumRequiredSignature;\\n\\t}\\n\\n\\tfunction verify(bytes32 hash, bytes[] calldata sigs)\\n\\t\\tpublic\\n\\t\\tview\\n\\t\\treturns (bool)\\n\\t{\\n\\t\\taddress lastOracle;\\n\\t\\tfor (uint256 index = 0; index < minimumRequiredSignature; ++index) {\\n\\t\\t\\taddress oracle = hash.recover(sigs[index]);\\n\\t\\t\\trequire(hasRole(ORACLE_ROLE, oracle), \\\"ORACLE::verify: Signer is not valid\\\");\\n\\t\\t\\trequire(oracle > lastOracle, \\\"ORACLE::verify: Signers are same\\\");\\n\\t\\t\\tlastOracle = oracle;\\n\\t\\t}\\n\\t\\treturn true;\\n\\t}\\n\\n\\tfunction setMinimumRequiredSignature(uint256 _minimumRequiredSignature)\\n\\t\\tpublic\\n\\t{\\n\\t\\trequire(\\n\\t\\t\\thasRole(TRUSTY_ROLE, msg.sender),\\n\\t\\t\\t\\\"ORACLE::setMinimumRequiredSignature: You are not trusty\\\"\\n\\t\\t);\\n\\t\\tminimumRequiredSignature = _minimumRequiredSignature;\\n\\n\\t\\temit MinimumRequiredSignatureSet(_minimumRequiredSignature);\\n\\t}\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x41a5379335f10262e64227d706b47f2b7f700ce738a5545d6af07a041b7d6267\"},\"contracts/Utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11 <0.9.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}\",\"keccak256\":\"0xe392046e85c78eea7d4c1237af52a5fc06c097b7a480ea4f20159670b4a582a4\",\"license\":\"MIT\"},\"contracts/Utils/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\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.0.0, only sets of type `address` (`AddressSet`) and `uint256`\\n * (`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 // 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(bytes20(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(bytes20(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(bytes20(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(bytes20(_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\",\"keccak256\":\"0x685f4133ba76f930e3761c1d1414d7f6e55dd40d58b4b210cb392662a6cbd27d\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 6023, + "contract": "contracts/Oracle/Oracle.sol:Oracle", + "label": "_roles", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_bytes32,t_struct(RoleData)6018_storage)" + }, + { + "astId": 6960, + "contract": "contracts/Oracle/Oracle.sol:Oracle", + "label": "minimumRequiredSignature", + "offset": 0, + "slot": "1", + "type": "t_uint256" + } + ], + "types": { + "t_array(t_bytes32)dyn_storage": { + "base": "t_bytes32", + "encoding": "dynamic_array", + "label": "bytes32[]", + "numberOfBytes": "32" + }, + "t_bytes32": { + "encoding": "inplace", + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)6018_storage)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => struct AccessControl.RoleData)", + "numberOfBytes": "32", + "value": "t_struct(RoleData)6018_storage" + }, + "t_mapping(t_bytes32,t_uint256)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_struct(AddressSet)11740_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.AddressSet", + "members": [ + { + "astId": 11739, + "contract": "contracts/Oracle/Oracle.sol:Oracle", + "label": "_inner", + "offset": 0, + "slot": "0", + "type": "t_struct(Set)11554_storage" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleData)6018_storage": { + "encoding": "inplace", + "label": "struct AccessControl.RoleData", + "members": [ + { + "astId": 6015, + "contract": "contracts/Oracle/Oracle.sol:Oracle", + "label": "members", + "offset": 0, + "slot": "0", + "type": "t_struct(AddressSet)11740_storage" + }, + { + "astId": 6017, + "contract": "contracts/Oracle/Oracle.sol:Oracle", + "label": "adminRole", + "offset": 0, + "slot": "2", + "type": "t_bytes32" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Set)11554_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.Set", + "members": [ + { + "astId": 11549, + "contract": "contracts/Oracle/Oracle.sol:Oracle", + "label": "_values", + "offset": 0, + "slot": "0", + "type": "t_array(t_bytes32)dyn_storage" + }, + { + "astId": 11553, + "contract": "contracts/Oracle/Oracle.sol:Oracle", + "label": "_indexes", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ], + "numberOfBytes": "64" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/Oracle/ReserveTracker.sol": { + "ReserveTracker": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_dei_contract_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_deus_contract_address", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TRUSTY_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pair_address", + "type": "address" + } + ], + "name": "addDEUSPair", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "deus_pairs", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "deus_pairs_array", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDEUSReserves", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pair_address", + "type": "address" + } + ], + "name": "removeDEUSPair", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "getRoleAdmin(bytes32)": { + "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." + }, + "getRoleMember(bytes32,uint256)": { + "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information." + }, + "getRoleMemberCount(bytes32)": { + "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role." + }, + "grantRole(bytes32,address)": { + "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role." + }, + "hasRole(bytes32,address)": { + "details": "Returns `true` if `account` has been granted `role`." + }, + "renounceRole(bytes32,address)": { + "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`." + }, + "revokeRole(bytes32,address)": { + "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role." + } + }, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": { + "@_7146": { + "entryPoint": null, + "id": 7146, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_add_11596": { + "entryPoint": 328, + "id": 11596, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_contains_11696": { + "entryPoint": null, + "id": 11696, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_6258": { + "entryPoint": 188, + "id": 6258, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_msgSender_444": { + "entryPoint": null, + "id": 444, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_setupRole_6209": { + "entryPoint": 172, + "id": 6209, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@add_11764": { + "entryPoint": 291, + "id": 11764, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_address_fromMemory": { + "entryPoint": 410, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_address_fromMemory": { + "entryPoint": 439, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:491:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "74:117:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "84:22:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "99:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "93:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "93:13:39" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "84:5:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "169:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "178:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "181:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "171:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "171:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "171:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "128:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "139:5:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "154:3:39", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "159:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "150:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "150:11:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "163:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "146:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "146:19:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "135:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "135:31:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "125:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "125:42:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "118:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "118:50:39" + }, + "nodeType": "YulIf", + "src": "115:70:39" + } + ] + }, + "name": "abi_decode_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "53:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "64:5:39", + "type": "" + } + ], + "src": "14:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "294:195:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "340:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "349:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "352:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "342:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "342:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "342:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "315:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "324:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "311:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "311:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "336:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "307:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "307:32:39" + }, + "nodeType": "YulIf", + "src": "304:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "365:50:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "405:9:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "375:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "375:40:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "365:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "424:59:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "468:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "479:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "464:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "464:18:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "434:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "434:49:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "424:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "252:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "263:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "275:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "283:6:39", + "type": "" + } + ], + "src": "196:293:39" + } + ] + }, + "contents": "{\n { }\n function abi_decode_address_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address_fromMemory(headStart)\n value1 := abi_decode_address_fromMemory(add(headStart, 32))\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "6080604052620f42406001553480156200001857600080fd5b50604051620014e1380380620014e18339810160408190526200003b91620001b7565b600280546001600160a01b038085166001600160a01b031992831617909255600380549284169290911691909117905562000078600033620000ac565b620000a47f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33620000ac565b5050620001ef565b620000b88282620000bc565b5050565b600082815260208181526040909120620000e191839062000ce762000123821b17901c565b15620000b85760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b60006200013f836001600160601b0319606085901b1662000148565b90505b92915050565b6000818152600183016020526040812054620001915750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000142565b50600062000142565b80516001600160a01b0381168114620001b257600080fd5b919050565b60008060408385031215620001cb57600080fd5b620001d6836200019a565b9150620001e6602084016200019a565b90509250929050565b6112e280620001ff6000396000f3fe608060405234801561001057600080fd5b50600436106100e95760003560e01c806336568abe1161008c578063a217fddf11610066578063a217fddf1461021f578063b28e750e14610227578063ca15c8731461023a578063d547741f1461024d57600080fd5b806336568abe146101e65780639010d07c146101f957806391d148541461020c57600080fd5b806328bb931d116100c857806328bb931d146101645780632f2ff15d1461019757806331738fcc146101ac57806334ddb95d146101bf57600080fd5b8062a66f1f146100ee57806303e63f1014610109578063248a9ca314610141575b600080fd5b6100f6610260565b6040519081526020015b60405180910390f35b61011c610117366004611073565b610646565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610100565b6100f661014f366004611073565b60009081526020819052604090206002015490565b6101876101723660046110b1565b60056020526000908152604090205460ff1681565b6040519015158152602001610100565b6101aa6101a53660046110d5565b61067d565b005b6101aa6101ba3660046110b1565b610738565b6100f67f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b6101aa6101f43660046110d5565b610901565b61011c610207366004611105565b6109b0565b61018761021a3660046110d5565b6109d1565b6100f6600081565b6101aa6102353660046110b1565b6109e9565b6100f6610248366004611073565b610c28565b6101aa61025b3660046110d5565b610c3f565b600080805b60045481101561064057600073ffffffffffffffffffffffffffffffffffffffff166004828154811061029a5761029a611127565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161461062e576003546004805473ffffffffffffffffffffffffffffffffffffffff90921691839081106102f1576102f1611127565b60009182526020918290200154604080517f0dfe1681000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921692630dfe1681926004808401938290030181865afa158015610365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103899190611156565b73ffffffffffffffffffffffffffffffffffffffff161415610479576000600482815481106103ba576103ba611127565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561042f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104539190611196565b50506dffffffffffffffffffffffffffff1690506104718184611215565b92505061062e565b6003546004805473ffffffffffffffffffffffffffffffffffffffff90921691839081106104a9576104a9611127565b60009182526020918290200154604080517fd21220a7000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263d21220a7926004808401938290030181865afa15801561051d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105419190611156565b73ffffffffffffffffffffffffffffffffffffffff16141561062e5760006004828154811061057257610572611127565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156105e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060b9190611196565b506dffffffffffffffffffffffffffff16915061062a90508184611215565b9250505b806106388161122d565b915050610265565b50919050565b6004818154811061065657600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60008281526020819052604090206002015461069990336109d1565b61072a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084015b60405180910390fd5b6107348282610d19565b5050565b6107627f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336109d1565b6107c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f43616c6c6572206973206e6f74207472757374790000000000000000000000006044820152606401610721565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604090205460ff1615610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4164647265737320616c726561647920657869737473000000000000000000006044820152606401610721565b73ffffffffffffffffffffffffffffffffffffffff16600081815260056020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b73ffffffffffffffffffffffffffffffffffffffff811633146109a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610721565b6107348282610d7f565b60008281526020819052604081206109c89083610de5565b90505b92915050565b60008281526020819052604081206109c89083610dfb565b610a137f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336109d1565b610a79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f43616c6c6572206973206e6f74207472757374790000000000000000000000006044820152606401610721565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604090205460ff161515600114610b0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f41646472657373206e6f6e6578697374616e74000000000000000000000000006044820152606401610721565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260056020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600454811015610734578173ffffffffffffffffffffffffffffffffffffffff1660048281548110610b8d57610b8d611127565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415610c1657600060048281548110610bca57610bca611127565b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b80610c208161122d565b915050610b59565b60008181526020819052604081206109cb90610e3a565b600082815260208190526040902060020154610c5b90336109d1565b6109a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b65000000000000000000000000000000006064820152608401610721565b60006109c8837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16610e44565b6000828152602081905260409020610d319082610ce7565b1561073457604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6000828152602081905260409020610d979082610e93565b1561073457604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000610df18383610ec5565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156109c8565b60006109cb825490565b6000818152600183016020526040812054610e8b575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109cb565b5060006109cb565b60006109c8837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16610f80565b81546000908210610f58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f64730000000000000000000000000000000000000000000000000000000000006064820152608401610721565b826000018281548110610f6d57610f6d611127565b9060005260206000200154905092915050565b60008181526001830160205260408120548015611069576000610fa4600183611266565b8554909150600090610fb890600190611266565b90506000866000018281548110610fd157610fd1611127565b9060005260206000200154905080876000018481548110610ff457610ff4611127565b60009182526020909120015561100b836001611215565b6000828152600189016020526040902055865487908061102d5761102d61127d565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506109cb565b60009150506109cb565b60006020828403121561108557600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146110ae57600080fd5b50565b6000602082840312156110c357600080fd5b81356110ce8161108c565b9392505050565b600080604083850312156110e857600080fd5b8235915060208301356110fa8161108c565b809150509250929050565b6000806040838503121561111857600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561116857600080fd5b81516110ce8161108c565b80516dffffffffffffffffffffffffffff8116811461119157600080fd5b919050565b6000806000606084860312156111ab57600080fd5b6111b484611173565b92506111c260208501611173565b9150604084015163ffffffff811681146111db57600080fd5b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611228576112286111e6565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561125f5761125f6111e6565b5060010190565b600082821015611278576112786111e6565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220aadf88649a2994cacf03cdf9ee652efa1f717f92bb550e513a0b41f19678198864736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH3 0xF4240 PUSH1 0x1 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x14E1 CODESIZE SUB DUP1 PUSH3 0x14E1 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x3B SWAP2 PUSH3 0x1B7 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x3 DUP1 SLOAD SWAP3 DUP5 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH3 0x78 PUSH1 0x0 CALLER PUSH3 0xAC JUMP JUMPDEST PUSH3 0xA4 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH3 0xAC JUMP JUMPDEST POP POP PUSH3 0x1EF JUMP JUMPDEST PUSH3 0xB8 DUP3 DUP3 PUSH3 0xBC JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH3 0xE1 SWAP2 DUP4 SWAP1 PUSH3 0xCE7 PUSH3 0x123 DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST ISZERO PUSH3 0xB8 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x13F DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH3 0x148 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH3 0x191 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 PUSH3 0x142 JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0x142 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x1B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1D6 DUP4 PUSH3 0x19A JUMP JUMPDEST SWAP2 POP PUSH3 0x1E6 PUSH1 0x20 DUP5 ADD PUSH3 0x19A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x12E2 DUP1 PUSH3 0x1FF 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 0xE9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x36568ABE GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA217FDDF GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0xB28E750E EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x36568ABE EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x1F9 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x28BB931D GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x28BB931D EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0x31738FCC EQ PUSH2 0x1AC JUMPI DUP1 PUSH4 0x34DDB95D EQ PUSH2 0x1BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xA66F1F EQ PUSH2 0xEE JUMPI DUP1 PUSH4 0x3E63F10 EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x141 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF6 PUSH2 0x260 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11C PUSH2 0x117 CALLDATASIZE PUSH1 0x4 PUSH2 0x1073 JUMP JUMPDEST PUSH2 0x646 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x100 JUMP JUMPDEST PUSH2 0xF6 PUSH2 0x14F CALLDATASIZE PUSH1 0x4 PUSH2 0x1073 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x187 PUSH2 0x172 CALLDATASIZE PUSH1 0x4 PUSH2 0x10B1 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x100 JUMP JUMPDEST PUSH2 0x1AA PUSH2 0x1A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x10D5 JUMP JUMPDEST PUSH2 0x67D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1AA PUSH2 0x1BA CALLDATASIZE PUSH1 0x4 PUSH2 0x10B1 JUMP JUMPDEST PUSH2 0x738 JUMP JUMPDEST PUSH2 0xF6 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP2 JUMP JUMPDEST PUSH2 0x1AA PUSH2 0x1F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x10D5 JUMP JUMPDEST PUSH2 0x901 JUMP JUMPDEST PUSH2 0x11C PUSH2 0x207 CALLDATASIZE PUSH1 0x4 PUSH2 0x1105 JUMP JUMPDEST PUSH2 0x9B0 JUMP JUMPDEST PUSH2 0x187 PUSH2 0x21A CALLDATASIZE PUSH1 0x4 PUSH2 0x10D5 JUMP JUMPDEST PUSH2 0x9D1 JUMP JUMPDEST PUSH2 0xF6 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1AA PUSH2 0x235 CALLDATASIZE PUSH1 0x4 PUSH2 0x10B1 JUMP JUMPDEST PUSH2 0x9E9 JUMP JUMPDEST PUSH2 0xF6 PUSH2 0x248 CALLDATASIZE PUSH1 0x4 PUSH2 0x1073 JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH2 0x1AA PUSH2 0x25B CALLDATASIZE PUSH1 0x4 PUSH2 0x10D5 JUMP JUMPDEST PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 JUMPDEST PUSH1 0x4 SLOAD DUP2 LT ISZERO PUSH2 0x640 JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x29A JUMPI PUSH2 0x29A PUSH2 0x1127 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x62E JUMPI PUSH1 0x3 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 DUP4 SWAP1 DUP2 LT PUSH2 0x2F1 JUMPI PUSH2 0x2F1 PUSH2 0x1127 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xDFE168100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0xDFE1681 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x365 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x389 SWAP2 SWAP1 PUSH2 0x1156 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x479 JUMPI PUSH1 0x0 PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3BA JUMPI PUSH2 0x3BA PUSH2 0x1127 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x42F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x453 SWAP2 SWAP1 PUSH2 0x1196 JUMP JUMPDEST POP POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH2 0x471 DUP2 DUP5 PUSH2 0x1215 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x62E JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 DUP4 SWAP1 DUP2 LT PUSH2 0x4A9 JUMPI PUSH2 0x4A9 PUSH2 0x1127 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xD21220A700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0xD21220A7 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x51D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x541 SWAP2 SWAP1 PUSH2 0x1156 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x62E JUMPI PUSH1 0x0 PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x572 JUMPI PUSH2 0x572 PUSH2 0x1127 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5E7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x60B SWAP2 SWAP1 PUSH2 0x1196 JUMP JUMPDEST POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH2 0x62A SWAP1 POP DUP2 DUP5 PUSH2 0x1215 JUMP JUMPDEST SWAP3 POP POP JUMPDEST DUP1 PUSH2 0x638 DUP2 PUSH2 0x122D JUMP JUMPDEST SWAP2 POP POP PUSH2 0x265 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x699 SWAP1 CALLER PUSH2 0x9D1 JUMP JUMPDEST PUSH2 0x72A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F206772616E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x734 DUP3 DUP3 PUSH2 0xD19 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x762 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x9D1 JUMP JUMPDEST PUSH2 0x7C8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616C6C6572206973206E6F7420747275737479000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x721 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x858 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4164647265737320616C72656164792065786973747300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x721 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP2 DUP3 ADD DUP2 SSTORE SWAP1 SWAP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ PUSH2 0x9A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x721 JUMP JUMPDEST PUSH2 0x734 DUP3 DUP3 PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x9C8 SWAP1 DUP4 PUSH2 0xDE5 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x9C8 SWAP1 DUP4 PUSH2 0xDFB JUMP JUMPDEST PUSH2 0xA13 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x9D1 JUMP JUMPDEST PUSH2 0xA79 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616C6C6572206973206E6F7420747275737479000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x721 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x1 EQ PUSH2 0xB0D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373206E6F6E6578697374616E7400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x721 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMPDEST PUSH1 0x4 SLOAD DUP2 LT ISZERO PUSH2 0x734 JUMPI DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xB8D JUMPI PUSH2 0xB8D PUSH2 0x1127 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xC16 JUMPI PUSH1 0x0 PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xBCA JUMPI PUSH2 0xBCA PUSH2 0x1127 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST DUP1 PUSH2 0xC20 DUP2 PUSH2 0x122D JUMP JUMPDEST SWAP2 POP POP PUSH2 0xB59 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x9CB SWAP1 PUSH2 0xE3A JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xC5B SWAP1 CALLER PUSH2 0x9D1 JUMP JUMPDEST PUSH2 0x9A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F207265766F6B6500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x721 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9C8 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0xE44 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xD31 SWAP1 DUP3 PUSH2 0xCE7 JUMP JUMPDEST ISZERO PUSH2 0x734 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xD97 SWAP1 DUP3 PUSH2 0xE93 JUMP JUMPDEST ISZERO PUSH2 0x734 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDF1 DUP4 DUP4 PUSH2 0xEC5 JUMP JUMPDEST PUSH1 0x60 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD ISZERO ISZERO PUSH2 0x9C8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9CB DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0xE8B 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 0x9CB JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x9CB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9C8 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0xF80 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0xF58 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E756D657261626C655365743A20696E646578206F7574206F6620626F756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6473000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x721 JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xF6D JUMPI PUSH2 0xF6D PUSH2 0x1127 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1069 JUMPI PUSH1 0x0 PUSH2 0xFA4 PUSH1 0x1 DUP4 PUSH2 0x1266 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0xFB8 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x1266 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xFD1 JUMPI PUSH2 0xFD1 PUSH2 0x1127 JUMP 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 0xFF4 JUMPI PUSH2 0xFF4 PUSH2 0x1127 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH2 0x100B DUP4 PUSH1 0x1 PUSH2 0x1215 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x102D JUMPI PUSH2 0x102D PUSH2 0x127D JUMP 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 0x9CB JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x9CB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1085 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x10AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x10CE DUP2 PUSH2 0x108C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x10FA DUP2 PUSH2 0x108C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x10CE DUP2 PUSH2 0x108C JUMP JUMPDEST DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x11AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11B4 DUP5 PUSH2 0x1173 JUMP JUMPDEST SWAP3 POP PUSH2 0x11C2 PUSH1 0x20 DUP6 ADD PUSH2 0x1173 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x11DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1228 JUMPI PUSH2 0x1228 PUSH2 0x11E6 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x125F JUMPI PUSH2 0x125F PUSH2 0x11E6 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x1278 JUMPI PUSH2 0x1278 PUSH2 0x11E6 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAA 0xDF DUP9 PUSH5 0x9A2994CACF SUB 0xCD 0xF9 0xEE PUSH6 0x2EFA1F717F92 0xBB SSTORE 0xE MLOAD GASPRICE SIGNEXTEND COINBASE CALL SWAP7 PUSH25 0x198864736F6C634300080A0033000000000000000000000000 ", + "sourceMap": "1631:2463:26:-:0;;;1812:3;1778:37;;2261:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2347:20;:44;;-1:-1:-1;;;;;2347:44:26;;;-1:-1:-1;;;;;;2347:44:26;;;;;;;2395:21;:46;;;;;;;;;;;;;;;2445:42;2347:20;2476:10;2445;:42::i;:::-;2491:35;1727:24;2515:10;2491;:35::i;:::-;2261:269;;1631:2463;;6653:110:20;6731:25;6742:4;6748:7;6731:10;:25::i;:::-;6653:110;;:::o;7090:184::-;7163:6;:12;;;;;;;;;;;:33;;7188:7;;7163:24;;;;;:33;;:::i;:::-;7159:109;;;7217:40;;686:10:4;;-1:-1:-1;;;;;7217:40:20;;;7229:4;;7217:40;;;;;7090:184;;:::o;4866:141:38:-;4936:4;4959:41;4964:3;-1:-1:-1;;;;;;4984:14:38;;;;4976:23;4959:4;:41::i;:::-;4952:48;;4866:141;;;;;:::o;1613:404::-;1676:4;3874:19;;;:12;;;:19;;;;;;1692:319;;-1:-1:-1;1734:23:38;;;;;;;;:11;:23;;;;;;;;;;;;;1914:18;;1892:19;;;:12;;;:19;;;;;;:40;;;;1946:11;;1692:319;-1:-1:-1;1995:5:38;1988:12;;14:177:39;93:13;;-1:-1:-1;;;;;135:31:39;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;:::-;1631:2463:26;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@DEFAULT_ADMIN_ROLE_6026": { + "entryPoint": null, + "id": 6026, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@TRUSTY_ROLE_7091": { + "entryPoint": null, + "id": 7091, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_add_11596": { + "entryPoint": 3652, + "id": 11596, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_at_11736": { + "entryPoint": 3781, + "id": 11736, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_contains_11696": { + "entryPoint": null, + "id": 11696, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_6258": { + "entryPoint": 3353, + "id": 6258, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_length_11710": { + "entryPoint": null, + "id": 11710, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_msgSender_444": { + "entryPoint": null, + "id": 444, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_remove_11677": { + "entryPoint": 3968, + "id": 11677, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_revokeRole_6282": { + "entryPoint": 3455, + "id": 6282, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@addDEUSPair_7264": { + "entryPoint": 1848, + "id": 7264, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@add_11764": { + "entryPoint": 3303, + "id": 11764, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@at_11851": { + "entryPoint": 3557, + "id": 11851, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@contains_11812": { + "entryPoint": 3579, + "id": 11812, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@deus_pairs_7105": { + "entryPoint": null, + "id": 7105, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@deus_pairs_array_7101": { + "entryPoint": 1606, + "id": 7101, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@getDEUSReserves_7235": { + "entryPoint": 608, + "id": 7235, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getRoleAdmin_6121": { + "entryPoint": null, + "id": 6121, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMemberCount_6088": { + "entryPoint": 3112, + "id": 6088, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMember_6107": { + "entryPoint": 2480, + "id": 6107, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@grantRole_6147": { + "entryPoint": 1661, + "id": 6147, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@hasRole_6072": { + "entryPoint": 2513, + "id": 6072, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@length_11827": { + "entryPoint": 3642, + "id": 11827, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@removeDEUSPair_7316": { + "entryPoint": 2537, + "id": 7316, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@remove_11788": { + "entryPoint": 3731, + "id": 11788, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@renounceRole_6195": { + "entryPoint": 2305, + "id": 6195, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@revokeRole_6173": { + "entryPoint": 3135, + "id": 6173, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 4273, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address_fromMemory": { + "entryPoint": 4438, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32t_address": { + "entryPoint": 4309, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes32t_uint256": { + "entryPoint": 4357, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_uint112t_uint112t_uint32_fromMemory": { + "entryPoint": 4502, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": 4211, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_uint112_fromMemory": { + "entryPoint": 4467, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_6b10e2daa74c4bd90e2b033a7c8b36efc27432a6a263e78fda3e12fb2deb6a00__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_9e965fdb7b16a3f4f14198070d028fb3bb36e98eebe579c3925cf405ea3f22f0__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_abb079c1f41ac6b4331fb7996590da27000be0644f42809ff78294ca58eada73__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 4629, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 4710, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "increment_t_uint256": { + "entryPoint": 4653, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 4582, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x31": { + "entryPoint": 4733, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 4391, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_address": { + "entryPoint": 4236, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:6786:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "115:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "125:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "137:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "148:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "133:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "133:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "125:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "167:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "178:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "160:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "160:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "160:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "84:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "95:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "106:4:39", + "type": "" + } + ], + "src": "14:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "266:110:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "312:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "321:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "324:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "314:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "314:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "314:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "287:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "296:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "283:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "283:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "308:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "279:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "279:32:39" + }, + "nodeType": "YulIf", + "src": "276:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "337:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "360:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "347:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "347:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "337:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "232:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "243:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "255:6:39", + "type": "" + } + ], + "src": "196:180:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "482:125:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "492:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "504:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "515:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "500:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "500:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "492:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "534:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "549:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "557:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "545:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "545:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "527:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "527:74:39" + }, + "nodeType": "YulExpressionStatement", + "src": "527:74:39" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "451:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "462:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "473:4:39", + "type": "" + } + ], + "src": "381:226:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "682:110:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "728:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "737:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "740:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "730:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "730:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "730:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "703:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "712:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "699:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "699:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "724:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "695:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "695:32:39" + }, + "nodeType": "YulIf", + "src": "692:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "753:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "776:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "763:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "763:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "753:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "648:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "659:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "671:6:39", + "type": "" + } + ], + "src": "612:180:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "898:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "908:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "920:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "931:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "916:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "916:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "908:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "950:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "961:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "943:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "943:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "943:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "867:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "878:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "889:4:39", + "type": "" + } + ], + "src": "797:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1024:109:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1111:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1120:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1123:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1113:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1113:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1113:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1047:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1058:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1065:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1054:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1054:54:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1044:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1044:65:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1037:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1037:73:39" + }, + "nodeType": "YulIf", + "src": "1034:93:39" + } + ] + }, + "name": "validator_revert_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1013:5:39", + "type": "" + } + ], + "src": "979:154:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1208:177:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1254:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1263:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1266:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1256:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1256:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1256:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1229:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1238:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1225:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1225:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1250:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1221:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1221:32:39" + }, + "nodeType": "YulIf", + "src": "1218:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1279:36:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1305:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1292:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1292:23:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1283:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1349:5:39" + } + ], + "functionName": { + "name": "validator_revert_address", + "nodeType": "YulIdentifier", + "src": "1324:24:39" + }, + "nodeType": "YulFunctionCall", + "src": "1324:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1324:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "1364:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1374:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1364:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1174:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1185:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1197:6:39", + "type": "" + } + ], + "src": "1138:247:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1485:92:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1495:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1507:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1518:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1503:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1503:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1495:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1537:9:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1562:6:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1555:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1555:14:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1548:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1548:22:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1530:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1530:41:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1530:41:39" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1454:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1465:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1476:4:39", + "type": "" + } + ], + "src": "1390:187:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1669:228:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1715:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1724:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1727:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1717:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1717:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1717:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1690:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1699:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1686:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1686:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1711:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1682:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1682:32:39" + }, + "nodeType": "YulIf", + "src": "1679:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "1740:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1763:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1750:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1750:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1740:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1782:45:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1812:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1823:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1808:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1808:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1795:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1795:32:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1786:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1861:5:39" + } + ], + "functionName": { + "name": "validator_revert_address", + "nodeType": "YulIdentifier", + "src": "1836:24:39" + }, + "nodeType": "YulFunctionCall", + "src": "1836:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1836:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "1876:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1886:5:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1876:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1627:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1638:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1650:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1658:6:39", + "type": "" + } + ], + "src": "1582:315:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1989:161:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2035:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2044:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2047:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2037:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2037:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2037:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2010:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2019:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2006:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2006:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2031:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2002:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2002:32:39" + }, + "nodeType": "YulIf", + "src": "1999:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "2060:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2083:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2070:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2070:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2060:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2102:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2129:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2140:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2125:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2125:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2112:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2112:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2102:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1947:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1958:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1970:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1978:6:39", + "type": "" + } + ], + "src": "1902:248:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2187:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2204:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2207:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2197:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2197:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2197:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2301:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2304:4:39", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2294:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2294:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2294:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2325:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2328:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2318:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2318:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2318:15:39" + } + ] + }, + "name": "panic_error_0x32", + "nodeType": "YulFunctionDefinition", + "src": "2155:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2425:170:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2471:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2480:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2483:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2473:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2473:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2473:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2446:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2455:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2442:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2442:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2467:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2438:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2438:32:39" + }, + "nodeType": "YulIf", + "src": "2435:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2496:29:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2515:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2509:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "2509:16:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2500:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2559:5:39" + } + ], + "functionName": { + "name": "validator_revert_address", + "nodeType": "YulIdentifier", + "src": "2534:24:39" + }, + "nodeType": "YulFunctionCall", + "src": "2534:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2534:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "2574:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2584:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2574:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2391:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2402:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2414:6:39", + "type": "" + } + ], + "src": "2344:251:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2660:128:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2670:22:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2685:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2679:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "2679:13:39" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2670:5:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2766:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2775:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2778:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2768:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2768:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2768:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2714:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2725:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2732:30:39", + "type": "", + "value": "0xffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2721:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2721:42:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "2711:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2711:53:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2704:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2704:61:39" + }, + "nodeType": "YulIf", + "src": "2701:81:39" + } + ] + }, + "name": "abi_decode_uint112_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2639:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2650:5:39", + "type": "" + } + ], + "src": "2600:188:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2907:336:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2953:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2962:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2965:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2955:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2955:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2955:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2928:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2937:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2924:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2924:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2949:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2920:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2920:32:39" + }, + "nodeType": "YulIf", + "src": "2917:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "2978:50:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3018:9:39" + } + ], + "functionName": { + "name": "abi_decode_uint112_fromMemory", + "nodeType": "YulIdentifier", + "src": "2988:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "2988:40:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2978:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3037:59:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3081:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3092:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3077:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3077:18:39" + } + ], + "functionName": { + "name": "abi_decode_uint112_fromMemory", + "nodeType": "YulIdentifier", + "src": "3047:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "3047:49:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "3037:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3105:38:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3128:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3139:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3124:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3124:18:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "3118:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "3118:25:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3109:5:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3197:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3206:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3209:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3199:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3199:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3199:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3165:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3176:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3183:10:39", + "type": "", + "value": "0xffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "3172:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3172:22:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "3162:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3162:33:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3155:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3155:41:39" + }, + "nodeType": "YulIf", + "src": "3152:61:39" + }, + { + "nodeType": "YulAssignment", + "src": "3222:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3232:5:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "3222:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint112t_uint112t_uint32_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2857:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2868:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2880:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2888:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "2896:6:39", + "type": "" + } + ], + "src": "2793:450:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3280:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3297:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3300:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3290:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3290:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3290:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3394:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3397:4:39", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3387:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3387:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3387:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3418:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3421:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3411:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3411:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3411:15:39" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "3248:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3485:80:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3512:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "3514:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "3514:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3514:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3501:1:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "3508:1:39" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "3504:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3504:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3498:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3498:13:39" + }, + "nodeType": "YulIf", + "src": "3495:39:39" + }, + { + "nodeType": "YulAssignment", + "src": "3543:16:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3554:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "3557:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3550:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3550:9:39" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "3543:3:39" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "3468:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "3471:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "3477:3:39", + "type": "" + } + ], + "src": "3437:128:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3617:148:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3708:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "3710:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "3710:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3710:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3633:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3640:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "3630:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3630:77:39" + }, + "nodeType": "YulIf", + "src": "3627:103:39" + }, + { + "nodeType": "YulAssignment", + "src": "3739:20:39", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3750:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3757:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3746:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3746:13:39" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "3739:3:39" + } + ] + } + ] + }, + "name": "increment_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3599:5:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "3609:3:39", + "type": "" + } + ], + "src": "3570:195:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3944:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3961:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3972:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3954:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3954:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3954:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3995:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4006:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3991:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3991:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4011:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3984:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3984:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3984:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4034:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4045:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4030:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4030:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4050:34:39", + "type": "", + "value": "AccessControl: sender must be an" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4023:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4023:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4023:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4105:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4116:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4101:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4101:18:39" + }, + { + "hexValue": "2061646d696e20746f206772616e74", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4121:17:39", + "type": "", + "value": " admin to grant" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4094:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4094:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4094:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "4148:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4160:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4171:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4156:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4156:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4148:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3921:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3935:4:39", + "type": "" + } + ], + "src": "3770:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4360:170:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4377:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4388:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4370:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4370:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4370:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4411:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4422:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4407:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4407:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4427:2:39", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4400:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4400:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4400:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4450:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4461:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4446:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4446:18:39" + }, + { + "hexValue": "43616c6c6572206973206e6f7420747275737479", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4466:22:39", + "type": "", + "value": "Caller is not trusty" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4439:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4439:50:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4439:50:39" + }, + { + "nodeType": "YulAssignment", + "src": "4498:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4510:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4521:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4506:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4506:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4498:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_6b10e2daa74c4bd90e2b033a7c8b36efc27432a6a263e78fda3e12fb2deb6a00__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4337:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4351:4:39", + "type": "" + } + ], + "src": "4186:344:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4709:172:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4726:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4737:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4719:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4719:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4719:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4760:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4771:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4756:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4756:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4776:2:39", + "type": "", + "value": "22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4749:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4749:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4749:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4799:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4810:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4795:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4795:18:39" + }, + { + "hexValue": "4164647265737320616c726561647920657869737473", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4815:24:39", + "type": "", + "value": "Address already exists" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4788:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4788:52:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4788:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "4849:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4861:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4872:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4857:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4857:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4849:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_9e965fdb7b16a3f4f14198070d028fb3bb36e98eebe579c3925cf405ea3f22f0__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4686:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4700:4:39", + "type": "" + } + ], + "src": "4535:346:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5060:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5077:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5088:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5070:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5070:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5070:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5111:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5122:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5107:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5107:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5127:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5100:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5100:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5100:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5150:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5161:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5146:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5146:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e6365", + "kind": "string", + "nodeType": "YulLiteral", + "src": "5166:34:39", + "type": "", + "value": "AccessControl: can only renounce" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5139:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5139:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5139:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5221:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5232:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5217:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5217:18:39" + }, + { + "hexValue": "20726f6c657320666f722073656c66", + "kind": "string", + "nodeType": "YulLiteral", + "src": "5237:17:39", + "type": "", + "value": " roles for self" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5210:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5210:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5210:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "5264:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5276:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5287:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5272:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5272:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5264:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5037:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5051:4:39", + "type": "" + } + ], + "src": "4886:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5476:169:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5493:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5504:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5486:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5486:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5486:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5527:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5538:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5523:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5523:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5543:2:39", + "type": "", + "value": "19" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5516:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5516:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5516:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5566:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5577:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5562:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5562:18:39" + }, + { + "hexValue": "41646472657373206e6f6e6578697374616e74", + "kind": "string", + "nodeType": "YulLiteral", + "src": "5582:21:39", + "type": "", + "value": "Address nonexistant" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5555:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5555:49:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5555:49:39" + }, + { + "nodeType": "YulAssignment", + "src": "5613:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5625:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5636:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5621:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5621:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5613:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_abb079c1f41ac6b4331fb7996590da27000be0644f42809ff78294ca58eada73__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5453:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5467:4:39", + "type": "" + } + ], + "src": "5302:343:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5824:238:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5841:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5852:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5834:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5834:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5834:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5875:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5886:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5871:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5871:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5891:2:39", + "type": "", + "value": "48" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5864:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5864:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5864:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5914:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5925:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5910:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5910:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "5930:34:39", + "type": "", + "value": "AccessControl: sender must be an" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5903:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5903:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5903:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5985:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5996:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5981:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5981:18:39" + }, + { + "hexValue": "2061646d696e20746f207265766f6b65", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6001:18:39", + "type": "", + "value": " admin to revoke" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5974:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5974:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5974:46:39" + }, + { + "nodeType": "YulAssignment", + "src": "6029:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6041:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6052:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6037:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6037:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6029:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5801:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5815:4:39", + "type": "" + } + ], + "src": "5650:412:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6241:224:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6258:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6269:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6251:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6251:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6251:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6292:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6303:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6288:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6288:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6308:2:39", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6281:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6281:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6281:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6331:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6342:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6327:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6327:18:39" + }, + { + "hexValue": "456e756d657261626c655365743a20696e646578206f7574206f6620626f756e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6347:34:39", + "type": "", + "value": "EnumerableSet: index out of boun" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6320:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6320:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6320:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6402:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6413:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6398:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6398:18:39" + }, + { + "hexValue": "6473", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6418:4:39", + "type": "", + "value": "ds" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6391:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6391:32:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6391:32:39" + }, + { + "nodeType": "YulAssignment", + "src": "6432:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6444:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6455:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6440:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6440:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6432:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6218:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6232:4:39", + "type": "" + } + ], + "src": "6067:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6519:76:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6541:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "6543:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "6543:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6543:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "6535:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "6538:1:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "6532:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "6532:8:39" + }, + "nodeType": "YulIf", + "src": "6529:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "6572:17:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "6584:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "6587:1:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6580:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6580:9:39" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "6572:4:39" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "6501:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "6504:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "6510:4:39", + "type": "" + } + ], + "src": "6470:125:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6632:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6649:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6652:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6642:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6642:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6642:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6746:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6749:4:39", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6739:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6739:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6739:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6770:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6773:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6763:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6763:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6763:15:39" + } + ] + }, + "name": "panic_error_0x31", + "nodeType": "YulFunctionDefinition", + "src": "6600:184:39" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n let value := calldataload(add(headStart, 32))\n validator_revert_address(value)\n value1 := value\n }\n function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function panic_error_0x32()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_decode_uint112_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_uint112t_uint112t_uint32_fromMemory(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_uint112_fromMemory(headStart)\n value1 := abi_decode_uint112_fromMemory(add(headStart, 32))\n let value := mload(add(headStart, 64))\n if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n value2 := value\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"AccessControl: sender must be an\")\n mstore(add(headStart, 96), \" admin to grant\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_6b10e2daa74c4bd90e2b033a7c8b36efc27432a6a263e78fda3e12fb2deb6a00__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), \"Caller is not trusty\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_9e965fdb7b16a3f4f14198070d028fb3bb36e98eebe579c3925cf405ea3f22f0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 22)\n mstore(add(headStart, 64), \"Address already exists\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"AccessControl: can only renounce\")\n mstore(add(headStart, 96), \" roles for self\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_abb079c1f41ac6b4331fb7996590da27000be0644f42809ff78294ca58eada73__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 19)\n mstore(add(headStart, 64), \"Address nonexistant\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 48)\n mstore(add(headStart, 64), \"AccessControl: sender must be an\")\n mstore(add(headStart, 96), \" admin to revoke\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"EnumerableSet: index out of boun\")\n mstore(add(headStart, 96), \"ds\")\n tail := add(headStart, 128)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function panic_error_0x31()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100e95760003560e01c806336568abe1161008c578063a217fddf11610066578063a217fddf1461021f578063b28e750e14610227578063ca15c8731461023a578063d547741f1461024d57600080fd5b806336568abe146101e65780639010d07c146101f957806391d148541461020c57600080fd5b806328bb931d116100c857806328bb931d146101645780632f2ff15d1461019757806331738fcc146101ac57806334ddb95d146101bf57600080fd5b8062a66f1f146100ee57806303e63f1014610109578063248a9ca314610141575b600080fd5b6100f6610260565b6040519081526020015b60405180910390f35b61011c610117366004611073565b610646565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610100565b6100f661014f366004611073565b60009081526020819052604090206002015490565b6101876101723660046110b1565b60056020526000908152604090205460ff1681565b6040519015158152602001610100565b6101aa6101a53660046110d5565b61067d565b005b6101aa6101ba3660046110b1565b610738565b6100f67f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b6101aa6101f43660046110d5565b610901565b61011c610207366004611105565b6109b0565b61018761021a3660046110d5565b6109d1565b6100f6600081565b6101aa6102353660046110b1565b6109e9565b6100f6610248366004611073565b610c28565b6101aa61025b3660046110d5565b610c3f565b600080805b60045481101561064057600073ffffffffffffffffffffffffffffffffffffffff166004828154811061029a5761029a611127565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161461062e576003546004805473ffffffffffffffffffffffffffffffffffffffff90921691839081106102f1576102f1611127565b60009182526020918290200154604080517f0dfe1681000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921692630dfe1681926004808401938290030181865afa158015610365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103899190611156565b73ffffffffffffffffffffffffffffffffffffffff161415610479576000600482815481106103ba576103ba611127565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561042f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104539190611196565b50506dffffffffffffffffffffffffffff1690506104718184611215565b92505061062e565b6003546004805473ffffffffffffffffffffffffffffffffffffffff90921691839081106104a9576104a9611127565b60009182526020918290200154604080517fd21220a7000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263d21220a7926004808401938290030181865afa15801561051d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105419190611156565b73ffffffffffffffffffffffffffffffffffffffff16141561062e5760006004828154811061057257610572611127565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156105e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060b9190611196565b506dffffffffffffffffffffffffffff16915061062a90508184611215565b9250505b806106388161122d565b915050610265565b50919050565b6004818154811061065657600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60008281526020819052604090206002015461069990336109d1565b61072a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084015b60405180910390fd5b6107348282610d19565b5050565b6107627f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336109d1565b6107c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f43616c6c6572206973206e6f74207472757374790000000000000000000000006044820152606401610721565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604090205460ff1615610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4164647265737320616c726561647920657869737473000000000000000000006044820152606401610721565b73ffffffffffffffffffffffffffffffffffffffff16600081815260056020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b73ffffffffffffffffffffffffffffffffffffffff811633146109a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610721565b6107348282610d7f565b60008281526020819052604081206109c89083610de5565b90505b92915050565b60008281526020819052604081206109c89083610dfb565b610a137f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336109d1565b610a79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f43616c6c6572206973206e6f74207472757374790000000000000000000000006044820152606401610721565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604090205460ff161515600114610b0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f41646472657373206e6f6e6578697374616e74000000000000000000000000006044820152606401610721565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260056020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600454811015610734578173ffffffffffffffffffffffffffffffffffffffff1660048281548110610b8d57610b8d611127565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415610c1657600060048281548110610bca57610bca611127565b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b80610c208161122d565b915050610b59565b60008181526020819052604081206109cb90610e3a565b600082815260208190526040902060020154610c5b90336109d1565b6109a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b65000000000000000000000000000000006064820152608401610721565b60006109c8837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16610e44565b6000828152602081905260409020610d319082610ce7565b1561073457604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6000828152602081905260409020610d979082610e93565b1561073457604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000610df18383610ec5565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156109c8565b60006109cb825490565b6000818152600183016020526040812054610e8b575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109cb565b5060006109cb565b60006109c8837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16610f80565b81546000908210610f58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f64730000000000000000000000000000000000000000000000000000000000006064820152608401610721565b826000018281548110610f6d57610f6d611127565b9060005260206000200154905092915050565b60008181526001830160205260408120548015611069576000610fa4600183611266565b8554909150600090610fb890600190611266565b90506000866000018281548110610fd157610fd1611127565b9060005260206000200154905080876000018481548110610ff457610ff4611127565b60009182526020909120015561100b836001611215565b6000828152600189016020526040902055865487908061102d5761102d61127d565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506109cb565b60009150506109cb565b60006020828403121561108557600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146110ae57600080fd5b50565b6000602082840312156110c357600080fd5b81356110ce8161108c565b9392505050565b600080604083850312156110e857600080fd5b8235915060208301356110fa8161108c565b809150509250929050565b6000806040838503121561111857600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561116857600080fd5b81516110ce8161108c565b80516dffffffffffffffffffffffffffff8116811461119157600080fd5b919050565b6000806000606084860312156111ab57600080fd5b6111b484611173565b92506111c260208501611173565b9150604084015163ffffffff811681146111db57600080fd5b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611228576112286111e6565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561125f5761125f6111e6565b5060010190565b600082821015611278576112786111e6565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220aadf88649a2994cacf03cdf9ee652efa1f717f92bb550e513a0b41f19678198864736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x36568ABE GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA217FDDF GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0xB28E750E EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x36568ABE EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x1F9 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x28BB931D GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x28BB931D EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0x31738FCC EQ PUSH2 0x1AC JUMPI DUP1 PUSH4 0x34DDB95D EQ PUSH2 0x1BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xA66F1F EQ PUSH2 0xEE JUMPI DUP1 PUSH4 0x3E63F10 EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x141 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF6 PUSH2 0x260 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11C PUSH2 0x117 CALLDATASIZE PUSH1 0x4 PUSH2 0x1073 JUMP JUMPDEST PUSH2 0x646 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x100 JUMP JUMPDEST PUSH2 0xF6 PUSH2 0x14F CALLDATASIZE PUSH1 0x4 PUSH2 0x1073 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x187 PUSH2 0x172 CALLDATASIZE PUSH1 0x4 PUSH2 0x10B1 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x100 JUMP JUMPDEST PUSH2 0x1AA PUSH2 0x1A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x10D5 JUMP JUMPDEST PUSH2 0x67D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1AA PUSH2 0x1BA CALLDATASIZE PUSH1 0x4 PUSH2 0x10B1 JUMP JUMPDEST PUSH2 0x738 JUMP JUMPDEST PUSH2 0xF6 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP2 JUMP JUMPDEST PUSH2 0x1AA PUSH2 0x1F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x10D5 JUMP JUMPDEST PUSH2 0x901 JUMP JUMPDEST PUSH2 0x11C PUSH2 0x207 CALLDATASIZE PUSH1 0x4 PUSH2 0x1105 JUMP JUMPDEST PUSH2 0x9B0 JUMP JUMPDEST PUSH2 0x187 PUSH2 0x21A CALLDATASIZE PUSH1 0x4 PUSH2 0x10D5 JUMP JUMPDEST PUSH2 0x9D1 JUMP JUMPDEST PUSH2 0xF6 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1AA PUSH2 0x235 CALLDATASIZE PUSH1 0x4 PUSH2 0x10B1 JUMP JUMPDEST PUSH2 0x9E9 JUMP JUMPDEST PUSH2 0xF6 PUSH2 0x248 CALLDATASIZE PUSH1 0x4 PUSH2 0x1073 JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH2 0x1AA PUSH2 0x25B CALLDATASIZE PUSH1 0x4 PUSH2 0x10D5 JUMP JUMPDEST PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 JUMPDEST PUSH1 0x4 SLOAD DUP2 LT ISZERO PUSH2 0x640 JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x29A JUMPI PUSH2 0x29A PUSH2 0x1127 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x62E JUMPI PUSH1 0x3 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 DUP4 SWAP1 DUP2 LT PUSH2 0x2F1 JUMPI PUSH2 0x2F1 PUSH2 0x1127 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xDFE168100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0xDFE1681 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x365 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x389 SWAP2 SWAP1 PUSH2 0x1156 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x479 JUMPI PUSH1 0x0 PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3BA JUMPI PUSH2 0x3BA PUSH2 0x1127 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x42F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x453 SWAP2 SWAP1 PUSH2 0x1196 JUMP JUMPDEST POP POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH2 0x471 DUP2 DUP5 PUSH2 0x1215 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x62E JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 DUP4 SWAP1 DUP2 LT PUSH2 0x4A9 JUMPI PUSH2 0x4A9 PUSH2 0x1127 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xD21220A700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0xD21220A7 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x51D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x541 SWAP2 SWAP1 PUSH2 0x1156 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x62E JUMPI PUSH1 0x0 PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x572 JUMPI PUSH2 0x572 PUSH2 0x1127 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5E7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x60B SWAP2 SWAP1 PUSH2 0x1196 JUMP JUMPDEST POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH2 0x62A SWAP1 POP DUP2 DUP5 PUSH2 0x1215 JUMP JUMPDEST SWAP3 POP POP JUMPDEST DUP1 PUSH2 0x638 DUP2 PUSH2 0x122D JUMP JUMPDEST SWAP2 POP POP PUSH2 0x265 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x699 SWAP1 CALLER PUSH2 0x9D1 JUMP JUMPDEST PUSH2 0x72A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F206772616E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x734 DUP3 DUP3 PUSH2 0xD19 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x762 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x9D1 JUMP JUMPDEST PUSH2 0x7C8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616C6C6572206973206E6F7420747275737479000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x721 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x858 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4164647265737320616C72656164792065786973747300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x721 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP2 DUP3 ADD DUP2 SSTORE SWAP1 SWAP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ PUSH2 0x9A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x721 JUMP JUMPDEST PUSH2 0x734 DUP3 DUP3 PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x9C8 SWAP1 DUP4 PUSH2 0xDE5 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x9C8 SWAP1 DUP4 PUSH2 0xDFB JUMP JUMPDEST PUSH2 0xA13 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0x9D1 JUMP JUMPDEST PUSH2 0xA79 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616C6C6572206973206E6F7420747275737479000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x721 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x1 EQ PUSH2 0xB0D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646472657373206E6F6E6578697374616E7400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x721 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE JUMPDEST PUSH1 0x4 SLOAD DUP2 LT ISZERO PUSH2 0x734 JUMPI DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xB8D JUMPI PUSH2 0xB8D PUSH2 0x1127 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xC16 JUMPI PUSH1 0x0 PUSH1 0x4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xBCA JUMPI PUSH2 0xBCA PUSH2 0x1127 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST DUP1 PUSH2 0xC20 DUP2 PUSH2 0x122D JUMP JUMPDEST SWAP2 POP POP PUSH2 0xB59 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x9CB SWAP1 PUSH2 0xE3A JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0xC5B SWAP1 CALLER PUSH2 0x9D1 JUMP JUMPDEST PUSH2 0x9A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F207265766F6B6500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x721 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9C8 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0xE44 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xD31 SWAP1 DUP3 PUSH2 0xCE7 JUMP JUMPDEST ISZERO PUSH2 0x734 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xD97 SWAP1 DUP3 PUSH2 0xE93 JUMP JUMPDEST ISZERO PUSH2 0x734 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDF1 DUP4 DUP4 PUSH2 0xEC5 JUMP JUMPDEST PUSH1 0x60 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD ISZERO ISZERO PUSH2 0x9C8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9CB DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0xE8B 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 0x9CB JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x9CB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9C8 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0xF80 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0xF58 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E756D657261626C655365743A20696E646578206F7574206F6620626F756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6473000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x721 JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xF6D JUMPI PUSH2 0xF6D PUSH2 0x1127 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1069 JUMPI PUSH1 0x0 PUSH2 0xFA4 PUSH1 0x1 DUP4 PUSH2 0x1266 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0xFB8 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x1266 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xFD1 JUMPI PUSH2 0xFD1 PUSH2 0x1127 JUMP 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 0xFF4 JUMPI PUSH2 0xFF4 PUSH2 0x1127 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH2 0x100B DUP4 PUSH1 0x1 PUSH2 0x1215 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x102D JUMPI PUSH2 0x102D PUSH2 0x127D JUMP 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 0x9CB JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x9CB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1085 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x10AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x10CE DUP2 PUSH2 0x108C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x10FA DUP2 PUSH2 0x108C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x10CE DUP2 PUSH2 0x108C JUMP JUMPDEST DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x11AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11B4 DUP5 PUSH2 0x1173 JUMP JUMPDEST SWAP3 POP PUSH2 0x11C2 PUSH1 0x20 DUP6 ADD PUSH2 0x1173 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x11DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1228 JUMPI PUSH2 0x1228 PUSH2 0x11E6 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x125F JUMPI PUSH2 0x125F PUSH2 0x11E6 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x1278 JUMPI PUSH2 0x1278 PUSH2 0x11E6 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAA 0xDF DUP9 PUSH5 0x9A2994CACF SUB 0xCD 0xF9 0xEE PUSH6 0x2EFA1F717F92 0xBB SSTORE 0xE MLOAD GASPRICE SIGNEXTEND COINBASE CALL SWAP7 PUSH25 0x198864736F6C634300080A0033000000000000000000000000 ", + "sourceMap": "1631:2463:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2566:717;;;:::i;:::-;;;160:25:39;;;148:2;133:18;2566:717:26;;;;;;;;1950:33;;;;;;:::i;:::-;;:::i;:::-;;;557:42:39;545:55;;;527:74;;515:2;500:18;1950:33:26;381:226:39;4347:112:20;;;;;;:::i;:::-;4404:7;4430:12;;;;;;;;;;:22;;;;4347:112;2036:42:26;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1555:14:39;;1548:22;1530:41;;1518:2;1503:18;2036:42:26;1390:187:39;4709:223:20;;;;;;:::i;:::-;;:::i;:::-;;3367:212:26;;;;;;:::i;:::-;;:::i;1689:62::-;;1727:24;1689:62;;5883:205:20;;;;;;:::i;:::-;;:::i;4030:136::-;;;;;;:::i;:::-;;:::i;3015:137::-;;;;;;:::i;:::-;;:::i;1722:49::-;;1767:4;1722:49;;3601:491:26;;;;;;:::i;:::-;;:::i;3320:125:20:-;;;;;;:::i;:::-;;:::i;5166:226::-;;;;;;:::i;:::-;;:::i;2566:717:26:-;2614:7;;;2663:586;2684:16;:23;2680:27;;2663:586;;;2783:1;2752:33;;:16;2769:1;2752:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;:33;2748:497;;2843:21;;2810:16;:19;;2843:21;;;;;2827:1;;2810:19;;;;;;:::i;:::-;;;;;;;;;;;;2795:44;;;;;;;;2810:19;;;;;2795:42;;:44;;;;;;;;;;2810:19;2795:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:69;;;2792:448;;;2874:14;2911:16;2928:1;2911:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2896:47;;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;2873:72:26;;;-1:-1:-1;2974:31:26;2873:72;2974:19;:31;:::i;:::-;2952:53;;2866:146;2792:448;;;3070:21;;3037:16;:19;;3070:21;;;;;3054:1;;3037:19;;;;;;:::i;:::-;;;;;;;;;;;;3022:44;;;;;;;;3037:19;;;;;3022:42;;:44;;;;;;;;;;3037:19;3022:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:69;;;3018:222;;;3104:14;3139:16;3156:1;3139:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3124:47;;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3100:73:26;;;-1:-1:-1;3202:31:26;;-1:-1:-1;3100:73:26;3202:19;:31;:::i;:::-;3180:53;;3093:147;3018:222;2709:3;;;;:::i;:::-;;;;2663:586;;;-1:-1:-1;3260:19:26;2566:717;-1:-1:-1;2566:717:26:o;1950:33::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1950:33:26;:::o;4709:223:20:-;4800:6;:12;;;;;;;;;;:22;;;4792:45;;686:10:4;3015:137:20;:::i;4792:45::-;4784:105;;;;;;;3972:2:39;4784:105:20;;;3954:21:39;4011:2;3991:18;;;3984:30;4050:34;4030:18;;;4023:62;4121:17;4101:18;;;4094:45;4156:19;;4784:105:20;;;;;;;;;4900:25;4911:4;4917:7;4900:10;:25::i;:::-;4709:223;;:::o;3367:212:26:-;2153:32;1727:24;2174:10;2153:7;:32::i;:::-;2145:65;;;;;;;4388:2:39;2145:65:26;;;4370:21:39;4427:2;4407:18;;;4400:30;4466:22;4446:18;;;4439:50;4506:18;;2145:65:26;4186:344:39;2145:65:26;3440:24:::1;::::0;::::1;;::::0;;;:10:::1;:24;::::0;;;;;::::1;;:33;3432:68;;;::::0;::::1;::::0;;4737:2:39;3432:68:26::1;::::0;::::1;4719:21:39::0;4776:2;4756:18;;;4749:30;4815:24;4795:18;;;4788:52;4857:18;;3432:68:26::1;4535:346:39::0;3432:68:26::1;3504:24;;;::::0;;;:10:::1;:24;::::0;;;;:31;;;::::1;3531:4;3504:31:::0;;::::1;::::0;;;3540:16:::1;:35:::0;;;;::::1;::::0;;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;3367:212::o;5883:205:20:-;5969:23;;;686:10:4;5969:23:20;5961:83;;;;;;;5088:2:39;5961:83:20;;;5070:21:39;5127:2;5107:18;;;5100:30;5166:34;5146:18;;;5139:62;5237:17;5217:18;;;5210:45;5272:19;;5961:83:20;4886:411:39;5961:83:20;6055:26;6067:4;6073:7;6055:11;:26::i;4030:136::-;4103:7;4129:12;;;;;;;;;;:30;;4153:5;4129:23;:30::i;:::-;4122:37;;4030:136;;;;;:::o;3015:137::-;3084:4;3107:12;;;;;;;;;;:38;;3137:7;3107:29;:38::i;3601:491:26:-;2153:32;1727:24;2174:10;2153:7;:32::i;:::-;2145:65;;;;;;;4388:2:39;2145:65:26;;;4370:21:39;4427:2;4407:18;;;4400:30;4466:22;4446:18;;;4439:50;4506:18;;2145:65:26;4186:344:39;2145:65:26;3677:24:::1;::::0;::::1;;::::0;;;:10:::1;:24;::::0;;;;;::::1;;:32;;:24:::0;:32:::1;3669:64;;;::::0;::::1;::::0;;5504:2:39;3669:64:26::1;::::0;::::1;5486:21:39::0;5543:2;5523:18;;;5516:30;5582:21;5562:18;;;5555:49;5621:18;;3669:64:26::1;5302:343:39::0;3669:64:26::1;3776:24;::::0;::::1;;::::0;;;:10:::1;:24;::::0;;;;3769:31;;;::::1;::::0;;3864:225:::1;3885:16;:23:::0;3881:27;::::1;3864:225;;;3947:12;3924:35;;:16;3941:1;3924:19;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;:35;3920:165;;;3997:1;3967:16;3984:1;3967:19;;;;;;;;:::i;:::-;;;;;;;;;:32;;;;;;;;;;;;;;;;;;4709:223:20::0;;:::o;3920:165:26:-:1;3910:3:::0;::::1;::::0;::::1;:::i;:::-;;;;3864:225;;3320:125:20::0;3383:7;3409:12;;;;;;;;;;:29;;:27;:29::i;5166:226::-;5258:6;:12;;;;;;;;;;:22;;;5250:45;;686:10:4;3015:137:20;:::i;5250:45::-;5242:106;;;;;;;5852:2:39;5242:106:20;;;5834:21:39;5891:2;5871:18;;;5864:30;5930:34;5910:18;;;5903:62;6001:18;5981;;;5974:46;6037:19;;5242:106:20;5650:412:39;4866:141:38;4936:4;4959:41;4964:3;4976:23;4984:14;;;;4976:23;4959:4;:41::i;7090:184:20:-;7163:6;:12;;;;;;;;;;:33;;7188:7;7163:24;:33::i;:::-;7159:109;;;7217:40;;686:10:4;;7217:40:20;;;;7229:4;;7217:40;;;;;7090:184;;:::o;7280:188::-;7354:6;:12;;;;;;;;;;:36;;7382:7;7354:27;:36::i;:::-;7350:112;;;7411:40;;686:10:4;;7411:40:20;;;;7423:4;;7411:40;;;;;7280:188;;:::o;6087:147:38:-;6161:7;6203:22;6207:3;6219:5;6203:3;:22::i;:::-;6187:40;;;6087:147;-1:-1:-1;;;6087:147:38:o;5403:156::-;5536:14;;;;5528:23;;5483:4;3874:19;;;:12;;;:19;;;;;;:24;;5506:46;3778:127;5640:115;5703:7;5729:19;5737:3;4068:18;;3986:107;1613:404;1676:4;3874:19;;;:12;;;:19;;;;;;1692:319;;-1:-1:-1;1734:23:38;;;;;;;;:11;:23;;;;;;;;;;;;;1914:18;;1892:19;;;:12;;;:19;;;;;;:40;;;;1946:11;;1692:319;-1:-1:-1;1995:5:38;1988:12;;5175:147;5248:4;5271:44;5279:3;5291:23;5299:14;;;;5291:23;5271:7;:44::i;4425:201::-;4519:18;;4492:7;;4519:26;-1:-1:-1;4511:73:38;;;;;;;6269:2:39;4511:73:38;;;6251:21:39;6308:2;6288:18;;;6281:30;6347:34;6327:18;;;6320:62;6418:4;6398:18;;;6391:32;6440:19;;4511:73:38;6067:398:39;4511:73:38;4601:3;:11;;4613:5;4601:18;;;;;;;;:::i;:::-;;;;;;;;;4594:25;;4425:201;;;;:::o;2185:1512::-;2251:4;2388:19;;;:12;;;:19;;;;;;2422:15;;2418:1273;;2779:21;2803:14;2816:1;2803:10;:14;:::i;:::-;2851:18;;2779:38;;-1:-1:-1;2831:17:38;;2851:22;;2872:1;;2851:22;:::i;:::-;2831:42;;3113:17;3133:3;:11;;3145:9;3133:22;;;;;;;;:::i;:::-;;;;;;;;;3113:42;;3276:9;3247:3;:11;;3259:13;3247:26;;;;;;;;:::i;:::-;;;;;;;;;;:38;3377:17;:13;3393:1;3377:17;:::i;:::-;3351:23;;;;:12;;;:23;;;;;:43;3500:17;;3351:3;;3500:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3592:3;:12;;:19;3605:5;3592:19;;;;;;;;;;;3585:26;;;3633:4;3626:11;;;;;;;;2418:1273;3675:5;3668:12;;;;;196:180:39;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:39;;196:180;-1:-1:-1;196:180:39:o;979:154::-;1065:42;1058:5;1054:54;1047:5;1044:65;1034:93;;1123:1;1120;1113:12;1034:93;979:154;:::o;1138:247::-;1197:6;1250:2;1238:9;1229:7;1225:23;1221:32;1218:52;;;1266:1;1263;1256:12;1218:52;1305:9;1292:23;1324:31;1349:5;1324:31;:::i;:::-;1374:5;1138:247;-1:-1:-1;;;1138:247:39:o;1582:315::-;1650:6;1658;1711:2;1699:9;1690:7;1686:23;1682:32;1679:52;;;1727:1;1724;1717:12;1679:52;1763:9;1750:23;1740:33;;1823:2;1812:9;1808:18;1795:32;1836:31;1861:5;1836:31;:::i;:::-;1886:5;1876:15;;;1582:315;;;;;:::o;1902:248::-;1970:6;1978;2031:2;2019:9;2010:7;2006:23;2002:32;1999:52;;;2047:1;2044;2037:12;1999:52;-1:-1:-1;;2070:23:39;;;2140:2;2125:18;;;2112:32;;-1:-1:-1;1902:248:39:o;2155:184::-;2207:77;2204:1;2197:88;2304:4;2301:1;2294:15;2328:4;2325:1;2318:15;2344:251;2414:6;2467:2;2455:9;2446:7;2442:23;2438:32;2435:52;;;2483:1;2480;2473:12;2435:52;2515:9;2509:16;2534:31;2559:5;2534:31;:::i;2600:188::-;2679:13;;2732:30;2721:42;;2711:53;;2701:81;;2778:1;2775;2768:12;2701:81;2600:188;;;:::o;2793:450::-;2880:6;2888;2896;2949:2;2937:9;2928:7;2924:23;2920:32;2917:52;;;2965:1;2962;2955:12;2917:52;2988:40;3018:9;2988:40;:::i;:::-;2978:50;;3047:49;3092:2;3081:9;3077:18;3047:49;:::i;:::-;3037:59;;3139:2;3128:9;3124:18;3118:25;3183:10;3176:5;3172:22;3165:5;3162:33;3152:61;;3209:1;3206;3199:12;3152:61;3232:5;3222:15;;;2793:450;;;;;:::o;3248:184::-;3300:77;3297:1;3290:88;3397:4;3394:1;3387:15;3421:4;3418:1;3411:15;3437:128;3477:3;3508:1;3504:6;3501:1;3498:13;3495:39;;;3514:18;;:::i;:::-;-1:-1:-1;3550:9:39;;3437:128::o;3570:195::-;3609:3;3640:66;3633:5;3630:77;3627:103;;;3710:18;;:::i;:::-;-1:-1:-1;3757:1:39;3746:13;;3570:195::o;6470:125::-;6510:4;6538:1;6535;6532:8;6529:34;;;6543:18;;:::i;:::-;-1:-1:-1;6580:9:39;;6470:125::o;6600:184::-;6652:77;6649:1;6642:88;6749:4;6746:1;6739:15;6773:4;6770:1;6763:15" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "966800", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "DEFAULT_ADMIN_ROLE()": "206", + "TRUSTY_ROLE()": "273", + "addDEUSPair(address)": "infinite", + "deus_pairs(address)": "2536", + "deus_pairs_array(uint256)": "4636", + "getDEUSReserves()": "infinite", + "getRoleAdmin(bytes32)": "2504", + "getRoleMember(bytes32,uint256)": "6957", + "getRoleMemberCount(bytes32)": "infinite", + "grantRole(bytes32,address)": "infinite", + "hasRole(bytes32,address)": "infinite", + "removeDEUSPair(address)": "infinite", + "renounceRole(bytes32,address)": "infinite", + "revokeRole(bytes32,address)": "infinite" + } + }, + "methodIdentifiers": { + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "TRUSTY_ROLE()": "34ddb95d", + "addDEUSPair(address)": "31738fcc", + "deus_pairs(address)": "28bb931d", + "deus_pairs_array(uint256)": "03e63f10", + "getDEUSReserves()": "00a66f1f", + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "removeDEUSPair(address)": "b28e750e", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dei_contract_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_deus_contract_address\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRUSTY_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pair_address\",\"type\":\"address\"}],\"name\":\"addDEUSPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deus_pairs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"deus_pairs_array\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDEUSReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pair_address\",\"type\":\"address\"}],\"name\":\"removeDEUSPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Oracle/ReserveTracker.sol\":\"ReserveTracker\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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 payable(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}\",\"keccak256\":\"0x60d51a32063a4975dbf9433d38f5849173527da72f007c38053274e06698cb54\",\"license\":\"MIT\"},\"contracts/Governance/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Utils/EnumerableSet.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\nimport \\\"../Common/Context.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it.\\n */\\nabstract contract AccessControl is Context {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n using Address for address;\\n\\n struct RoleData {\\n EnumerableSet.AddressSet members;\\n bytes32 adminRole;\\n }\\n\\n mapping (bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; //bytes32(uint256(0x4B437D01b575618140442A4975db38850e3f8f5f) << 96);\\n\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view returns (bool) {\\n return _roles[role].members.contains(account);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view returns (uint256) {\\n return _roles[role].members.length();\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view returns (address) {\\n return _roles[role].members.at(index);\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to grant\\\");\\n\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to revoke\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) public virtual {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);\\n _roles[role].adminRole = adminRole;\\n }\\n\\n function _grantRole(bytes32 role, address account) private {\\n if (_roles[role].members.add(account)) {\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n function _revokeRole(bytes32 role, address account) private {\\n if (_roles[role].members.remove(account)) {\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x749b2c0e515a59c6d03cf4908a252ebc5d2b482ca3fd7ec997d1143c302f4e89\",\"license\":\"MIT\"},\"contracts/Math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a >= b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow, so we distribute\\n return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);\\n }\\n\\n // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)\\n function sqrt(uint y) internal pure returns (uint z) {\\n if (y > 3) {\\n z = y;\\n uint x = y / 2 + 1;\\n while (x < z) {\\n z = x;\\n x = (y / x + x) / 2;\\n }\\n } else if (y != 0) {\\n z = 1;\\n }\\n }\\n}\",\"keccak256\":\"0x62bc6e8ee2764351c70251d50f023f15a87b6e9e31fe64e344c33a2580982dda\",\"license\":\"MIT\"},\"contracts/Math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\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\\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 * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\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 * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\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 * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (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) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts 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 * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts 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 * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\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}\",\"keccak256\":\"0x43a20f7cf4c4319f81450d53779455e88a7ab80bdfc43925156ed4083b74a180\",\"license\":\"MIT\"},\"contracts/Oracle/ReserveTracker.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity ^0.8.7;\\n\\n// =================================================================================================================\\n// _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| |\\n// _| _| _| _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| |\\n// _| _| _|_|_| _| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_|_|_| |\\n// _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| |\\n// _|_|_| _|_|_|_| _|_| _|_|_| _| _| _| _| _|_|_| _| _| _|_|_| _|_|_| | \\n// =================================================================================================================\\n// ====================================================================\\n// =========================== ReserveTracker =========================\\n// ====================================================================\\n// Deus Finance: https://github.com/DeusFinance\\n\\n// Primary Author(s)\\n// Jason Huan: https://github.com/jasonhuan\\n// Sam Kazemian: https://github.com/samkazemian\\n// Vahid: https://github.com/vahid-dev\\n// SAYaghoubnejad: https://github.com/SAYaghoubnejad\\n\\n// Reviewer(s) / Contributor(s)\\n// Travis Moore: https://github.com/FortisFortuna\\n\\nimport \\\"../Math/SafeMath.sol\\\";\\nimport \\\"../Math/Math.sol\\\";\\nimport \\\"../Uniswap/Interfaces/IUniswapV2Pair.sol\\\";\\nimport \\\"../Governance/AccessControl.sol\\\";\\n\\ncontract ReserveTracker is AccessControl {\\n\\n\\t// Roles\\n bytes32 public constant TRUSTY_ROLE = keccak256(\\\"TRUSTY_ROLE\\\");\\n\\n\\t// Various precisions\\n\\tuint256 private PRICE_PRECISION = 1e6;\\n\\n\\t// Contract addresses\\n\\taddress private dei_contract_address;\\n\\taddress private deus_contract_address;\\n\\n\\t// Array of pairs for DEUS\\n\\taddress[] public deus_pairs_array;\\n\\n\\t// Mapping is also used for faster verification\\n\\tmapping(address => bool) public deus_pairs;\\n\\n\\t// ========== MODIFIERS ==========\\n\\n\\tmodifier onlyTrusty() {\\n\\t\\trequire(hasRole(TRUSTY_ROLE, msg.sender), \\\"Caller is not trusty\\\");\\n\\t\\t_;\\n\\t}\\n\\n\\t// ========== CONSTRUCTOR ==========\\n\\n\\tconstructor(\\n\\t\\taddress _dei_contract_address,\\n\\t\\taddress _deus_contract_address\\n\\t) {\\n\\t\\tdei_contract_address = _dei_contract_address;\\n\\t\\tdeus_contract_address = _deus_contract_address;\\n\\t\\t_setupRole(DEFAULT_ADMIN_ROLE, msg.sender);\\n\\t\\t_setupRole(TRUSTY_ROLE, msg.sender);\\n\\t}\\n\\n\\t// ========== VIEWS ==========\\n\\n\\tfunction getDEUSReserves() public view returns (uint256) {\\n\\t\\tuint256 total_deus_reserves = 0;\\n\\n\\t\\tfor (uint i = 0; i < deus_pairs_array.length; i++){ \\n\\t\\t\\t// Exclude null addresses\\n\\t\\t\\tif (deus_pairs_array[i] != address(0)){\\n\\t\\t\\t\\tif(IUniswapV2Pair(deus_pairs_array[i]).token0() == deus_contract_address) {\\n\\t\\t\\t\\t\\t(uint reserves0, , ) = IUniswapV2Pair(deus_pairs_array[i]).getReserves();\\n\\t\\t\\t\\t\\ttotal_deus_reserves = total_deus_reserves + reserves0;\\n\\t\\t\\t\\t} else if (IUniswapV2Pair(deus_pairs_array[i]).token1() == deus_contract_address) {\\n\\t\\t\\t\\t\\t( , uint reserves1, ) = IUniswapV2Pair(deus_pairs_array[i]).getReserves();\\n\\t\\t\\t\\t\\ttotal_deus_reserves = total_deus_reserves + reserves1;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn total_deus_reserves;\\n\\t}\\n\\n\\t// Adds collateral addresses supported, such as tether and busd, must be ERC20 \\n\\tfunction addDEUSPair(address pair_address) public onlyTrusty {\\n\\t\\trequire(deus_pairs[pair_address] == false, \\\"Address already exists\\\");\\n\\t\\tdeus_pairs[pair_address] = true; \\n\\t\\tdeus_pairs_array.push(pair_address);\\n\\t}\\n\\n\\t// Remove a pool \\n\\tfunction removeDEUSPair(address pair_address) public onlyTrusty {\\n\\t\\trequire(deus_pairs[pair_address] == true, \\\"Address nonexistant\\\");\\n\\t\\t\\n\\t\\t// Delete from the mapping\\n\\t\\tdelete deus_pairs[pair_address];\\n\\n\\t\\t// 'Delete' from the array by setting the address to 0x0\\n\\t\\tfor (uint i = 0; i < deus_pairs_array.length; i++){ \\n\\t\\t\\tif (deus_pairs_array[i] == pair_address) {\\n\\t\\t\\t\\tdeus_pairs_array[i] = address(0); // This will leave a null in the array and keep the indices the same\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0x0cb0ee2ef0b994507122329c8b1a48ee75a199e8e8235cc3cdfde95c898a5a6c\",\"license\":\"GPL-2.0-or-later\"},\"contracts/Uniswap/Interfaces/IUniswapV2Pair.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ninterface IUniswapV2Pair {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external pure returns (string memory);\\n function symbol() external pure returns (string memory);\\n function decimals() external pure returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n function PERMIT_TYPEHASH() external pure returns (bytes32);\\n function nonces(address owner) external view returns (uint);\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\\n\\n event Mint(address indexed sender, uint amount0, uint amount1);\\n event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\\n event Swap(\\n address indexed sender,\\n uint amount0In,\\n uint amount1In,\\n uint amount0Out,\\n uint amount1Out,\\n address indexed to\\n );\\n event Sync(uint112 reserve0, uint112 reserve1);\\n\\n function MINIMUM_LIQUIDITY() external pure returns (uint);\\n function factory() external view returns (address);\\n function token0() external view returns (address);\\n function token1() external view returns (address);\\n function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\\n function price0CumulativeLast() external view returns (uint);\\n function price1CumulativeLast() external view returns (uint);\\n function kLast() external view returns (uint);\\n\\n function mint(address to) external returns (uint liquidity);\\n function burn(address to) external returns (uint amount0, uint amount1);\\n function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;\\n function skim(address to) external;\\n function sync() external;\\n\\n function initialize(address, address) external; \\n}\\n\",\"keccak256\":\"0x2509844ce3a43ce31165e4101700ab13e95f267a2cae4a2a88ea1ebb5a50513d\",\"license\":\"MIT\"},\"contracts/Utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11 <0.9.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}\",\"keccak256\":\"0xe392046e85c78eea7d4c1237af52a5fc06c097b7a480ea4f20159670b4a582a4\",\"license\":\"MIT\"},\"contracts/Utils/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\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.0.0, only sets of type `address` (`AddressSet`) and `uint256`\\n * (`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 // 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(bytes20(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(bytes20(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(bytes20(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(bytes20(_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\",\"keccak256\":\"0x685f4133ba76f930e3761c1d1414d7f6e55dd40d58b4b210cb392662a6cbd27d\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 6023, + "contract": "contracts/Oracle/ReserveTracker.sol:ReserveTracker", + "label": "_roles", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_bytes32,t_struct(RoleData)6018_storage)" + }, + { + "astId": 7094, + "contract": "contracts/Oracle/ReserveTracker.sol:ReserveTracker", + "label": "PRICE_PRECISION", + "offset": 0, + "slot": "1", + "type": "t_uint256" + }, + { + "astId": 7096, + "contract": "contracts/Oracle/ReserveTracker.sol:ReserveTracker", + "label": "dei_contract_address", + "offset": 0, + "slot": "2", + "type": "t_address" + }, + { + "astId": 7098, + "contract": "contracts/Oracle/ReserveTracker.sol:ReserveTracker", + "label": "deus_contract_address", + "offset": 0, + "slot": "3", + "type": "t_address" + }, + { + "astId": 7101, + "contract": "contracts/Oracle/ReserveTracker.sol:ReserveTracker", + "label": "deus_pairs_array", + "offset": 0, + "slot": "4", + "type": "t_array(t_address)dyn_storage" + }, + { + "astId": 7105, + "contract": "contracts/Oracle/ReserveTracker.sol:ReserveTracker", + "label": "deus_pairs", + "offset": 0, + "slot": "5", + "type": "t_mapping(t_address,t_bool)" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "base": "t_address", + "encoding": "dynamic_array", + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_bytes32)dyn_storage": { + "base": "t_bytes32", + "encoding": "dynamic_array", + "label": "bytes32[]", + "numberOfBytes": "32" + }, + "t_bool": { + "encoding": "inplace", + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "encoding": "inplace", + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_bool)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => bool)", + "numberOfBytes": "32", + "value": "t_bool" + }, + "t_mapping(t_bytes32,t_struct(RoleData)6018_storage)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => struct AccessControl.RoleData)", + "numberOfBytes": "32", + "value": "t_struct(RoleData)6018_storage" + }, + "t_mapping(t_bytes32,t_uint256)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_struct(AddressSet)11740_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.AddressSet", + "members": [ + { + "astId": 11739, + "contract": "contracts/Oracle/ReserveTracker.sol:ReserveTracker", + "label": "_inner", + "offset": 0, + "slot": "0", + "type": "t_struct(Set)11554_storage" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleData)6018_storage": { + "encoding": "inplace", + "label": "struct AccessControl.RoleData", + "members": [ + { + "astId": 6015, + "contract": "contracts/Oracle/ReserveTracker.sol:ReserveTracker", + "label": "members", + "offset": 0, + "slot": "0", + "type": "t_struct(AddressSet)11740_storage" + }, + { + "astId": 6017, + "contract": "contracts/Oracle/ReserveTracker.sol:ReserveTracker", + "label": "adminRole", + "offset": 0, + "slot": "2", + "type": "t_bytes32" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Set)11554_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.Set", + "members": [ + { + "astId": 11549, + "contract": "contracts/Oracle/ReserveTracker.sol:ReserveTracker", + "label": "_values", + "offset": 0, + "slot": "0", + "type": "t_array(t_bytes32)dyn_storage" + }, + { + "astId": 11553, + "contract": "contracts/Oracle/ReserveTracker.sol:ReserveTracker", + "label": "_indexes", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ], + "numberOfBytes": "64" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/Staking/Staking.sol": { + "DEUSToken": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "m_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "m_amount", + "type": "uint256" + } + ], + "name": "pool_mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "pool_mint(address,uint256)": "b4f56b26" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"m_address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m_amount\",\"type\":\"uint256\"}],\"name\":\"pool_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Staking/Staking.sol\":\"DEUSToken\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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 payable(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}\",\"keccak256\":\"0x60d51a32063a4975dbf9433d38f5849173527da72f007c38053274e06698cb54\",\"license\":\"MIT\"},\"contracts/Governance/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Utils/EnumerableSet.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\nimport \\\"../Common/Context.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it.\\n */\\nabstract contract AccessControl is Context {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n using Address for address;\\n\\n struct RoleData {\\n EnumerableSet.AddressSet members;\\n bytes32 adminRole;\\n }\\n\\n mapping (bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; //bytes32(uint256(0x4B437D01b575618140442A4975db38850e3f8f5f) << 96);\\n\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view returns (bool) {\\n return _roles[role].members.contains(account);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view returns (uint256) {\\n return _roles[role].members.length();\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view returns (address) {\\n return _roles[role].members.at(index);\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to grant\\\");\\n\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to revoke\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) public virtual {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);\\n _roles[role].adminRole = adminRole;\\n }\\n\\n function _grantRole(bytes32 role, address account) private {\\n if (_roles[role].members.add(account)) {\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n function _revokeRole(bytes32 role, address account) private {\\n if (_roles[role].members.remove(account)) {\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x749b2c0e515a59c6d03cf4908a252ebc5d2b482ca3fd7ec997d1143c302f4e89\",\"license\":\"MIT\"},\"contracts/Staking/Staking.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// =================================================================================================================\\n// _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| |\\n// _| _| _| _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| |\\n// _| _| _|_|_| _| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_|_|_| |\\n// _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| |\\n// _|_|_| _|_|_|_| _|_| _|_|_| _| _| _| _| _|_|_| _| _| _|_|_| _|_|_| |\\n// =================================================================================================================\\n// ======================= STAKING ======================\\n// ======================================================\\n// DEUS Finance: https://github.com/DeusFinance\\n\\n// Primary Author(s)\\n// Vahid: https://github.com/vahid-dev\\n// Hosein: https://github.com/hedzed\\n\\n// Reviewer(s) / Contributor(s)\\n// S.A. Yaghoubnejad: https://github.com/SAYaghoubnejad\\n// Hosein: https://github.com/hedzed\\n\\npragma solidity ^0.8.9;\\n\\nimport \\\"../Governance/AccessControl.sol\\\";\\n\\ninterface IERC20 {\\n\\tfunction balanceOf(address account) external view returns (uint256);\\n\\tfunction transfer(address recipient, uint256 amount) external returns (bool);\\n\\tfunction transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\\n}\\n\\ninterface DEUSToken {\\n\\tfunction pool_mint(address m_address, uint256 m_amount) external;\\n}\\n\\ncontract Staking is AccessControl {\\n\\n\\tstruct User {\\n\\t\\tuint256 depositAmount;\\n\\t\\tuint256 paidReward;\\n\\t}\\n\\n\\tmapping (address => User) public users;\\n\\n\\tuint256 public rewardTillNowPerToken = 0;\\n\\tuint256 public lastUpdatedBlock;\\n\\tuint256 public rewardPerBlock;\\n\\tuint256 public scale = 1e18;\\n\\n\\tuint256 public particleCollector = 0;\\n\\tuint256 public daoShare;\\n\\tuint256 public earlyFoundersShare;\\n\\taddress public daoWallet;\\n\\taddress public earlyFoundersWallet;\\n\\tuint256 public totalStakedToken = 1; // init with 1 instead of 0 to avoid division by zero\\n\\n\\taddress public stakedToken;\\n\\taddress public rewardToken;\\n\\n\\tbytes32 public constant REWARD_PER_BLOCK_SETTER = keccak256(\\\"REWARD_PER_BLOCK_SETTER\\\");\\n\\tbytes32 public constant TRUSTY_ROLE = keccak256(\\\"TRUSTY_ROLE\\\");\\n\\n\\t/* ========== CONSTRUCTOR ========== */\\n\\n\\tconstructor (\\n\\t\\taddress _stakedToken,\\n\\t\\taddress _rewardToken,\\n\\t\\tuint256 _rewardPerBlock,\\n\\t\\tuint256 _daoShare,\\n\\t\\tuint256 _earlyFoundersShare,\\n\\t\\taddress _daoWallet,\\n\\t\\taddress _earlyFoundersWallet,\\n\\t\\taddress _rewardPerBlockSetter)\\n\\t{\\n\\t\\trequire(\\n\\t\\t\\t_stakedToken != address(0) &&\\n\\t\\t\\t_rewardToken != address(0) &&\\n\\t\\t\\t_daoWallet != address(0) &&\\n\\t\\t\\t_earlyFoundersWallet != address(0),\\n\\t\\t\\t\\\"STAKING::constructor: Zero address detected\\\"\\n\\t\\t);\\n\\t\\t_setupRole(DEFAULT_ADMIN_ROLE, msg.sender);\\n\\t\\t_setupRole(REWARD_PER_BLOCK_SETTER, _rewardPerBlockSetter);\\n\\t\\t_setupRole(TRUSTY_ROLE, msg.sender);\\n\\t\\tstakedToken = _stakedToken;\\n\\t\\trewardToken = _rewardToken;\\n\\t\\trewardPerBlock = _rewardPerBlock;\\n\\t\\tdaoShare = _daoShare;\\n\\t\\tearlyFoundersShare = _earlyFoundersShare;\\n\\t\\tlastUpdatedBlock = block.number;\\n\\t\\tdaoWallet = _daoWallet;\\n\\t\\tearlyFoundersWallet = _earlyFoundersWallet;\\n\\t}\\n\\n\\n\\tmodifier onlyTrusty() {\\n\\t\\trequire(hasRole(TRUSTY_ROLE, msg.sender), \\\"STAKING:: Caller is not a trusty\\\");\\n\\t\\t_;\\n\\t}\\n\\n\\t/* ========== VIEWS ========== */\\n\\n\\t// View function to see pending reward on frontend.\\n\\tfunction pendingReward(address _user) external view returns (uint256 reward) {\\n\\t\\tUser storage user = users[_user];\\n\\t\\tuint256 accRewardPerToken = rewardTillNowPerToken;\\n\\n\\t\\tif (block.number > lastUpdatedBlock) {\\n\\t\\t\\tuint256 rewardAmount = (block.number - lastUpdatedBlock) * rewardPerBlock;\\n\\t\\t\\taccRewardPerToken = accRewardPerToken + (rewardAmount * scale / totalStakedToken);\\n\\t\\t}\\n\\t\\treward = (user.depositAmount * accRewardPerToken / scale) - user.paidReward;\\n\\t}\\n\\n\\t/* ========== PUBLIC FUNCTIONS ========== */\\n\\n\\t// Update reward variables of the pool to be up-to-date.\\n\\tfunction update() public {\\n\\t\\tif (block.number <= lastUpdatedBlock) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\tuint256 rewardAmount = (block.number - lastUpdatedBlock) * rewardPerBlock;\\n\\n\\t\\trewardTillNowPerToken = rewardTillNowPerToken + (rewardAmount * scale / totalStakedToken);\\n\\t\\tlastUpdatedBlock = block.number;\\n\\t}\\n\\n\\tfunction deposit(uint256 amount) external {\\n\\t\\tdepositFor(msg.sender, amount);\\n\\t}\\n\\n\\tfunction depositFor(address _user, uint256 amount) public {\\n\\t\\tUser storage user = users[_user];\\n\\t\\tupdate();\\n\\n\\t\\tif (user.depositAmount > 0) {\\n\\t\\t\\tuint256 _pendingReward = (user.depositAmount * rewardTillNowPerToken / scale) - user.paidReward;\\n\\t\\t\\tsendReward(_user, _pendingReward);\\n\\t\\t}\\n\\n\\t\\tuser.depositAmount = user.depositAmount + amount;\\n\\t\\tuser.paidReward = user.depositAmount * rewardTillNowPerToken / scale;\\n\\n\\t\\tIERC20(stakedToken).transferFrom(msg.sender, address(this), amount);\\n\\t\\ttotalStakedToken = totalStakedToken + amount;\\n\\t\\temit Deposit(_user, amount);\\n\\t}\\n\\n\\tfunction withdraw(uint256 amount) external {\\n\\t\\tUser storage user = users[msg.sender];\\n\\t\\trequire(user.depositAmount >= amount, \\\"STAKING::withdraw: withdraw amount exceeds deposited amount\\\");\\n\\t\\tupdate();\\n\\n\\t\\tuint256 _pendingReward = (user.depositAmount * rewardTillNowPerToken / scale) - user.paidReward;\\n\\t\\tsendReward(msg.sender, _pendingReward);\\n\\n\\t\\tuint256 particleCollectorShare = _pendingReward * (daoShare + earlyFoundersShare) / scale;\\n\\t\\tparticleCollector = particleCollector + particleCollectorShare;\\n\\n\\t\\tif (amount > 0) {\\n\\t\\t\\tuser.depositAmount = user.depositAmount - amount;\\n\\t\\t\\tIERC20(stakedToken).transfer(address(msg.sender), amount);\\n\\t\\t\\ttotalStakedToken = totalStakedToken - amount;\\n\\t\\t\\temit Withdraw(msg.sender, amount);\\n\\t\\t}\\n\\n\\t\\tuser.paidReward = user.depositAmount * rewardTillNowPerToken / scale;\\n\\t}\\n\\n\\tfunction withdrawParticleCollector() public {\\n\\t\\tuint256 _daoShare = particleCollector * daoShare / (daoShare + earlyFoundersShare);\\n\\t\\tDEUSToken(rewardToken).pool_mint(daoWallet, _daoShare);\\n\\n\\t\\tuint256 _earlyFoundersShare = particleCollector * earlyFoundersShare / (daoShare + earlyFoundersShare);\\n\\t\\tDEUSToken(rewardToken).pool_mint(earlyFoundersWallet, _earlyFoundersShare);\\n\\n\\t\\tparticleCollector = 0;\\n\\n\\t\\temit WithdrawParticleCollectorAmount(_earlyFoundersShare, _daoShare);\\n\\t}\\n\\n\\t// Withdraw without caring about rewards. EMERGENCY ONLY.\\n\\tfunction emergencyWithdraw() external {\\n\\t\\tUser storage user = users[msg.sender];\\n\\n\\t\\ttotalStakedToken = totalStakedToken - user.depositAmount;\\n\\n\\t\\tIERC20(stakedToken).transfer(msg.sender, user.depositAmount);\\n\\t\\temit EmergencyWithdraw(msg.sender, user.depositAmount);\\n\\n\\t\\tuser.depositAmount = 0;\\n\\t\\tuser.paidReward = 0;\\n\\t}\\n\\n\\tfunction sendReward(address user, uint256 amount) internal {\\n\\t\\t// uint256 _daoShareAndEarlyFoundersShare = amount * (daoShare + earlyFoundersShare) / scale;\\n\\t\\t// DEUSToken(rewardToken).pool_mint(user, amount - _daoShareAndEarlyFoundersShare);\\n\\t\\tDEUSToken(rewardToken).pool_mint(user, amount);\\n\\t\\temit RewardClaimed(user, amount);\\n\\t}\\n\\n\\t/* ========== EMERGENCY FUNCTIONS ========== */\\n\\n\\t// Add temporary withdrawal functionality for owner(DAO) to transfer all tokens to a safe place.\\n\\t// Contract ownership will transfer to address(0x) after full auditing of codes.\\n\\tfunction withdrawAllStakedtokens(address to) external onlyTrusty {\\n\\t\\tuint256 totalStakedTokens = IERC20(stakedToken).balanceOf(address(this));\\n\\t\\ttotalStakedToken = 1;\\n\\t\\tIERC20(stakedToken).transfer(to, totalStakedTokens);\\n\\n\\t\\temit withdrawStakedtokens(totalStakedTokens, to);\\n\\t}\\n\\n\\tfunction setStakedToken(address _stakedToken) external onlyTrusty {\\n\\t\\tstakedToken = _stakedToken;\\n\\n\\t\\temit StakedTokenSet(_stakedToken);\\n\\t}\\n\\n\\tfunction emergencyWithdrawERC20(address to, address _token, uint256 amount) external onlyTrusty {\\n\\t\\tIERC20(_token).transfer(to, amount);\\n\\t}\\n\\tfunction emergencyWithdrawETH(address payable to, uint amount) external onlyTrusty {\\n\\t\\tpayable(to).transfer(amount);\\n\\t}\\n\\n\\tfunction setWallets(address _daoWallet, address _earlyFoundersWallet) external onlyTrusty {\\n\\t\\tdaoWallet = _daoWallet;\\n\\t\\tearlyFoundersWallet = _earlyFoundersWallet;\\n\\n\\t\\temit WalletsSet(_daoWallet, _earlyFoundersWallet);\\n\\t}\\n\\n\\tfunction setShares(uint256 _daoShare, uint256 _earlyFoundersShare) external onlyTrusty {\\n\\t\\twithdrawParticleCollector();\\n\\t\\tdaoShare = _daoShare;\\n\\t\\tearlyFoundersShare = _earlyFoundersShare;\\n\\n\\t\\temit SharesSet(_daoShare, _earlyFoundersShare);\\n\\t}\\n\\n\\tfunction setRewardPerBlock(uint256 _rewardPerBlock) external {\\n\\t\\trequire(hasRole(REWARD_PER_BLOCK_SETTER, msg.sender), \\\"STAKING::setRewardPerBlock: Caller is not a rewardPerBlockSetter\\\");\\n\\t\\tupdate();\\n\\t\\temit RewardPerBlockChanged(rewardPerBlock, _rewardPerBlock);\\n\\t\\trewardPerBlock = _rewardPerBlock;\\n\\t}\\n\\n\\n\\t/* ========== EVENTS ========== */\\n\\n\\tevent withdrawStakedtokens(uint256 totalStakedTokens, address to);\\n\\tevent StakedTokenSet(address _stakedToken);\\n\\tevent SharesSet(uint256 _daoShare, uint256 _earlyFoundersShare);\\n\\tevent WithdrawParticleCollectorAmount(uint256 _earlyFoundersShare, uint256 _daoShare);\\n\\tevent WalletsSet(address _daoWallet, address _earlyFoundersWallet);\\n\\tevent Deposit(address user, uint256 amount);\\n\\tevent Withdraw(address user, uint256 amount);\\n\\tevent EmergencyWithdraw(address user, uint256 amount);\\n\\tevent RewardClaimed(address user, uint256 amount);\\n\\tevent RewardPerBlockChanged(uint256 oldValue, uint256 newValue);\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0xe37818c1b616468ce590530455d5565ab89b66053740f2632e2f8ba8f4b4b7a4\"},\"contracts/Utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11 <0.9.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}\",\"keccak256\":\"0xe392046e85c78eea7d4c1237af52a5fc06c097b7a480ea4f20159670b4a582a4\",\"license\":\"MIT\"},\"contracts/Utils/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\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.0.0, only sets of type `address` (`AddressSet`) and `uint256`\\n * (`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 // 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(bytes20(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(bytes20(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(bytes20(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(bytes20(_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\",\"keccak256\":\"0x685f4133ba76f930e3761c1d1414d7f6e55dd40d58b4b210cb392662a6cbd27d\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "IERC20": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "balanceOf(address)": "70a08231", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Staking/Staking.sol\":\"IERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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 payable(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}\",\"keccak256\":\"0x60d51a32063a4975dbf9433d38f5849173527da72f007c38053274e06698cb54\",\"license\":\"MIT\"},\"contracts/Governance/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Utils/EnumerableSet.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\nimport \\\"../Common/Context.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it.\\n */\\nabstract contract AccessControl is Context {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n using Address for address;\\n\\n struct RoleData {\\n EnumerableSet.AddressSet members;\\n bytes32 adminRole;\\n }\\n\\n mapping (bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; //bytes32(uint256(0x4B437D01b575618140442A4975db38850e3f8f5f) << 96);\\n\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view returns (bool) {\\n return _roles[role].members.contains(account);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view returns (uint256) {\\n return _roles[role].members.length();\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view returns (address) {\\n return _roles[role].members.at(index);\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to grant\\\");\\n\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to revoke\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) public virtual {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);\\n _roles[role].adminRole = adminRole;\\n }\\n\\n function _grantRole(bytes32 role, address account) private {\\n if (_roles[role].members.add(account)) {\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n function _revokeRole(bytes32 role, address account) private {\\n if (_roles[role].members.remove(account)) {\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x749b2c0e515a59c6d03cf4908a252ebc5d2b482ca3fd7ec997d1143c302f4e89\",\"license\":\"MIT\"},\"contracts/Staking/Staking.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// =================================================================================================================\\n// _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| |\\n// _| _| _| _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| |\\n// _| _| _|_|_| _| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_|_|_| |\\n// _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| |\\n// _|_|_| _|_|_|_| _|_| _|_|_| _| _| _| _| _|_|_| _| _| _|_|_| _|_|_| |\\n// =================================================================================================================\\n// ======================= STAKING ======================\\n// ======================================================\\n// DEUS Finance: https://github.com/DeusFinance\\n\\n// Primary Author(s)\\n// Vahid: https://github.com/vahid-dev\\n// Hosein: https://github.com/hedzed\\n\\n// Reviewer(s) / Contributor(s)\\n// S.A. Yaghoubnejad: https://github.com/SAYaghoubnejad\\n// Hosein: https://github.com/hedzed\\n\\npragma solidity ^0.8.9;\\n\\nimport \\\"../Governance/AccessControl.sol\\\";\\n\\ninterface IERC20 {\\n\\tfunction balanceOf(address account) external view returns (uint256);\\n\\tfunction transfer(address recipient, uint256 amount) external returns (bool);\\n\\tfunction transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\\n}\\n\\ninterface DEUSToken {\\n\\tfunction pool_mint(address m_address, uint256 m_amount) external;\\n}\\n\\ncontract Staking is AccessControl {\\n\\n\\tstruct User {\\n\\t\\tuint256 depositAmount;\\n\\t\\tuint256 paidReward;\\n\\t}\\n\\n\\tmapping (address => User) public users;\\n\\n\\tuint256 public rewardTillNowPerToken = 0;\\n\\tuint256 public lastUpdatedBlock;\\n\\tuint256 public rewardPerBlock;\\n\\tuint256 public scale = 1e18;\\n\\n\\tuint256 public particleCollector = 0;\\n\\tuint256 public daoShare;\\n\\tuint256 public earlyFoundersShare;\\n\\taddress public daoWallet;\\n\\taddress public earlyFoundersWallet;\\n\\tuint256 public totalStakedToken = 1; // init with 1 instead of 0 to avoid division by zero\\n\\n\\taddress public stakedToken;\\n\\taddress public rewardToken;\\n\\n\\tbytes32 public constant REWARD_PER_BLOCK_SETTER = keccak256(\\\"REWARD_PER_BLOCK_SETTER\\\");\\n\\tbytes32 public constant TRUSTY_ROLE = keccak256(\\\"TRUSTY_ROLE\\\");\\n\\n\\t/* ========== CONSTRUCTOR ========== */\\n\\n\\tconstructor (\\n\\t\\taddress _stakedToken,\\n\\t\\taddress _rewardToken,\\n\\t\\tuint256 _rewardPerBlock,\\n\\t\\tuint256 _daoShare,\\n\\t\\tuint256 _earlyFoundersShare,\\n\\t\\taddress _daoWallet,\\n\\t\\taddress _earlyFoundersWallet,\\n\\t\\taddress _rewardPerBlockSetter)\\n\\t{\\n\\t\\trequire(\\n\\t\\t\\t_stakedToken != address(0) &&\\n\\t\\t\\t_rewardToken != address(0) &&\\n\\t\\t\\t_daoWallet != address(0) &&\\n\\t\\t\\t_earlyFoundersWallet != address(0),\\n\\t\\t\\t\\\"STAKING::constructor: Zero address detected\\\"\\n\\t\\t);\\n\\t\\t_setupRole(DEFAULT_ADMIN_ROLE, msg.sender);\\n\\t\\t_setupRole(REWARD_PER_BLOCK_SETTER, _rewardPerBlockSetter);\\n\\t\\t_setupRole(TRUSTY_ROLE, msg.sender);\\n\\t\\tstakedToken = _stakedToken;\\n\\t\\trewardToken = _rewardToken;\\n\\t\\trewardPerBlock = _rewardPerBlock;\\n\\t\\tdaoShare = _daoShare;\\n\\t\\tearlyFoundersShare = _earlyFoundersShare;\\n\\t\\tlastUpdatedBlock = block.number;\\n\\t\\tdaoWallet = _daoWallet;\\n\\t\\tearlyFoundersWallet = _earlyFoundersWallet;\\n\\t}\\n\\n\\n\\tmodifier onlyTrusty() {\\n\\t\\trequire(hasRole(TRUSTY_ROLE, msg.sender), \\\"STAKING:: Caller is not a trusty\\\");\\n\\t\\t_;\\n\\t}\\n\\n\\t/* ========== VIEWS ========== */\\n\\n\\t// View function to see pending reward on frontend.\\n\\tfunction pendingReward(address _user) external view returns (uint256 reward) {\\n\\t\\tUser storage user = users[_user];\\n\\t\\tuint256 accRewardPerToken = rewardTillNowPerToken;\\n\\n\\t\\tif (block.number > lastUpdatedBlock) {\\n\\t\\t\\tuint256 rewardAmount = (block.number - lastUpdatedBlock) * rewardPerBlock;\\n\\t\\t\\taccRewardPerToken = accRewardPerToken + (rewardAmount * scale / totalStakedToken);\\n\\t\\t}\\n\\t\\treward = (user.depositAmount * accRewardPerToken / scale) - user.paidReward;\\n\\t}\\n\\n\\t/* ========== PUBLIC FUNCTIONS ========== */\\n\\n\\t// Update reward variables of the pool to be up-to-date.\\n\\tfunction update() public {\\n\\t\\tif (block.number <= lastUpdatedBlock) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\tuint256 rewardAmount = (block.number - lastUpdatedBlock) * rewardPerBlock;\\n\\n\\t\\trewardTillNowPerToken = rewardTillNowPerToken + (rewardAmount * scale / totalStakedToken);\\n\\t\\tlastUpdatedBlock = block.number;\\n\\t}\\n\\n\\tfunction deposit(uint256 amount) external {\\n\\t\\tdepositFor(msg.sender, amount);\\n\\t}\\n\\n\\tfunction depositFor(address _user, uint256 amount) public {\\n\\t\\tUser storage user = users[_user];\\n\\t\\tupdate();\\n\\n\\t\\tif (user.depositAmount > 0) {\\n\\t\\t\\tuint256 _pendingReward = (user.depositAmount * rewardTillNowPerToken / scale) - user.paidReward;\\n\\t\\t\\tsendReward(_user, _pendingReward);\\n\\t\\t}\\n\\n\\t\\tuser.depositAmount = user.depositAmount + amount;\\n\\t\\tuser.paidReward = user.depositAmount * rewardTillNowPerToken / scale;\\n\\n\\t\\tIERC20(stakedToken).transferFrom(msg.sender, address(this), amount);\\n\\t\\ttotalStakedToken = totalStakedToken + amount;\\n\\t\\temit Deposit(_user, amount);\\n\\t}\\n\\n\\tfunction withdraw(uint256 amount) external {\\n\\t\\tUser storage user = users[msg.sender];\\n\\t\\trequire(user.depositAmount >= amount, \\\"STAKING::withdraw: withdraw amount exceeds deposited amount\\\");\\n\\t\\tupdate();\\n\\n\\t\\tuint256 _pendingReward = (user.depositAmount * rewardTillNowPerToken / scale) - user.paidReward;\\n\\t\\tsendReward(msg.sender, _pendingReward);\\n\\n\\t\\tuint256 particleCollectorShare = _pendingReward * (daoShare + earlyFoundersShare) / scale;\\n\\t\\tparticleCollector = particleCollector + particleCollectorShare;\\n\\n\\t\\tif (amount > 0) {\\n\\t\\t\\tuser.depositAmount = user.depositAmount - amount;\\n\\t\\t\\tIERC20(stakedToken).transfer(address(msg.sender), amount);\\n\\t\\t\\ttotalStakedToken = totalStakedToken - amount;\\n\\t\\t\\temit Withdraw(msg.sender, amount);\\n\\t\\t}\\n\\n\\t\\tuser.paidReward = user.depositAmount * rewardTillNowPerToken / scale;\\n\\t}\\n\\n\\tfunction withdrawParticleCollector() public {\\n\\t\\tuint256 _daoShare = particleCollector * daoShare / (daoShare + earlyFoundersShare);\\n\\t\\tDEUSToken(rewardToken).pool_mint(daoWallet, _daoShare);\\n\\n\\t\\tuint256 _earlyFoundersShare = particleCollector * earlyFoundersShare / (daoShare + earlyFoundersShare);\\n\\t\\tDEUSToken(rewardToken).pool_mint(earlyFoundersWallet, _earlyFoundersShare);\\n\\n\\t\\tparticleCollector = 0;\\n\\n\\t\\temit WithdrawParticleCollectorAmount(_earlyFoundersShare, _daoShare);\\n\\t}\\n\\n\\t// Withdraw without caring about rewards. EMERGENCY ONLY.\\n\\tfunction emergencyWithdraw() external {\\n\\t\\tUser storage user = users[msg.sender];\\n\\n\\t\\ttotalStakedToken = totalStakedToken - user.depositAmount;\\n\\n\\t\\tIERC20(stakedToken).transfer(msg.sender, user.depositAmount);\\n\\t\\temit EmergencyWithdraw(msg.sender, user.depositAmount);\\n\\n\\t\\tuser.depositAmount = 0;\\n\\t\\tuser.paidReward = 0;\\n\\t}\\n\\n\\tfunction sendReward(address user, uint256 amount) internal {\\n\\t\\t// uint256 _daoShareAndEarlyFoundersShare = amount * (daoShare + earlyFoundersShare) / scale;\\n\\t\\t// DEUSToken(rewardToken).pool_mint(user, amount - _daoShareAndEarlyFoundersShare);\\n\\t\\tDEUSToken(rewardToken).pool_mint(user, amount);\\n\\t\\temit RewardClaimed(user, amount);\\n\\t}\\n\\n\\t/* ========== EMERGENCY FUNCTIONS ========== */\\n\\n\\t// Add temporary withdrawal functionality for owner(DAO) to transfer all tokens to a safe place.\\n\\t// Contract ownership will transfer to address(0x) after full auditing of codes.\\n\\tfunction withdrawAllStakedtokens(address to) external onlyTrusty {\\n\\t\\tuint256 totalStakedTokens = IERC20(stakedToken).balanceOf(address(this));\\n\\t\\ttotalStakedToken = 1;\\n\\t\\tIERC20(stakedToken).transfer(to, totalStakedTokens);\\n\\n\\t\\temit withdrawStakedtokens(totalStakedTokens, to);\\n\\t}\\n\\n\\tfunction setStakedToken(address _stakedToken) external onlyTrusty {\\n\\t\\tstakedToken = _stakedToken;\\n\\n\\t\\temit StakedTokenSet(_stakedToken);\\n\\t}\\n\\n\\tfunction emergencyWithdrawERC20(address to, address _token, uint256 amount) external onlyTrusty {\\n\\t\\tIERC20(_token).transfer(to, amount);\\n\\t}\\n\\tfunction emergencyWithdrawETH(address payable to, uint amount) external onlyTrusty {\\n\\t\\tpayable(to).transfer(amount);\\n\\t}\\n\\n\\tfunction setWallets(address _daoWallet, address _earlyFoundersWallet) external onlyTrusty {\\n\\t\\tdaoWallet = _daoWallet;\\n\\t\\tearlyFoundersWallet = _earlyFoundersWallet;\\n\\n\\t\\temit WalletsSet(_daoWallet, _earlyFoundersWallet);\\n\\t}\\n\\n\\tfunction setShares(uint256 _daoShare, uint256 _earlyFoundersShare) external onlyTrusty {\\n\\t\\twithdrawParticleCollector();\\n\\t\\tdaoShare = _daoShare;\\n\\t\\tearlyFoundersShare = _earlyFoundersShare;\\n\\n\\t\\temit SharesSet(_daoShare, _earlyFoundersShare);\\n\\t}\\n\\n\\tfunction setRewardPerBlock(uint256 _rewardPerBlock) external {\\n\\t\\trequire(hasRole(REWARD_PER_BLOCK_SETTER, msg.sender), \\\"STAKING::setRewardPerBlock: Caller is not a rewardPerBlockSetter\\\");\\n\\t\\tupdate();\\n\\t\\temit RewardPerBlockChanged(rewardPerBlock, _rewardPerBlock);\\n\\t\\trewardPerBlock = _rewardPerBlock;\\n\\t}\\n\\n\\n\\t/* ========== EVENTS ========== */\\n\\n\\tevent withdrawStakedtokens(uint256 totalStakedTokens, address to);\\n\\tevent StakedTokenSet(address _stakedToken);\\n\\tevent SharesSet(uint256 _daoShare, uint256 _earlyFoundersShare);\\n\\tevent WithdrawParticleCollectorAmount(uint256 _earlyFoundersShare, uint256 _daoShare);\\n\\tevent WalletsSet(address _daoWallet, address _earlyFoundersWallet);\\n\\tevent Deposit(address user, uint256 amount);\\n\\tevent Withdraw(address user, uint256 amount);\\n\\tevent EmergencyWithdraw(address user, uint256 amount);\\n\\tevent RewardClaimed(address user, uint256 amount);\\n\\tevent RewardPerBlockChanged(uint256 oldValue, uint256 newValue);\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0xe37818c1b616468ce590530455d5565ab89b66053740f2632e2f8ba8f4b4b7a4\"},\"contracts/Utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11 <0.9.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}\",\"keccak256\":\"0xe392046e85c78eea7d4c1237af52a5fc06c097b7a480ea4f20159670b4a582a4\",\"license\":\"MIT\"},\"contracts/Utils/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\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.0.0, only sets of type `address` (`AddressSet`) and `uint256`\\n * (`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 // 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(bytes20(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(bytes20(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(bytes20(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(bytes20(_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\",\"keccak256\":\"0x685f4133ba76f930e3761c1d1414d7f6e55dd40d58b4b210cb392662a6cbd27d\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "Staking": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_stakedToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_rewardToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_rewardPerBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_daoShare", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_earlyFoundersShare", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_daoWallet", + "type": "address" + }, + { + "internalType": "address", + "name": "_earlyFoundersWallet", + "type": "address" + }, + { + "internalType": "address", + "name": "_rewardPerBlockSetter", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "EmergencyWithdraw", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "RewardClaimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldValue", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newValue", + "type": "uint256" + } + ], + "name": "RewardPerBlockChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_daoShare", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_earlyFoundersShare", + "type": "uint256" + } + ], + "name": "SharesSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_stakedToken", + "type": "address" + } + ], + "name": "StakedTokenSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_daoWallet", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_earlyFoundersWallet", + "type": "address" + } + ], + "name": "WalletsSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_earlyFoundersShare", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_daoShare", + "type": "uint256" + } + ], + "name": "WithdrawParticleCollectorAmount", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "totalStakedTokens", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "withdrawStakedtokens", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "REWARD_PER_BLOCK_SETTER", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TRUSTY_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "daoShare", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "daoWallet", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "depositFor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "earlyFoundersShare", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "earlyFoundersWallet", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "emergencyWithdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "emergencyWithdrawERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "emergencyWithdrawETH", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lastUpdatedBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "particleCollector", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "pendingReward", + "outputs": [ + { + "internalType": "uint256", + "name": "reward", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rewardPerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardTillNowPerToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "scale", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_rewardPerBlock", + "type": "uint256" + } + ], + "name": "setRewardPerBlock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_daoShare", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_earlyFoundersShare", + "type": "uint256" + } + ], + "name": "setShares", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_stakedToken", + "type": "address" + } + ], + "name": "setStakedToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_daoWallet", + "type": "address" + }, + { + "internalType": "address", + "name": "_earlyFoundersWallet", + "type": "address" + } + ], + "name": "setWallets", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "stakedToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalStakedToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "update", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "users", + "outputs": [ + { + "internalType": "uint256", + "name": "depositAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "paidReward", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "withdrawAllStakedtokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "withdrawParticleCollector", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "getRoleAdmin(bytes32)": { + "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." + }, + "getRoleMember(bytes32,uint256)": { + "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information." + }, + "getRoleMemberCount(bytes32)": { + "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role." + }, + "grantRole(bytes32,address)": { + "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role." + }, + "hasRole(bytes32,address)": { + "details": "Returns `true` if `account` has been granted `role`." + }, + "renounceRole(bytes32,address)": { + "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`." + }, + "revokeRole(bytes32,address)": { + "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role." + } + }, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": { + "@_7507": { + "entryPoint": null, + "id": 7507, + "parameterSlots": 8, + "returnSlots": 0 + }, + "@_add_11596": { + "entryPoint": 615, + "id": 11596, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_contains_11696": { + "entryPoint": null, + "id": 11696, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_6258": { + "entryPoint": 475, + "id": 6258, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_msgSender_444": { + "entryPoint": null, + "id": 444, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_setupRole_6209": { + "entryPoint": 459, + "id": 6209, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@add_11764": { + "entryPoint": 578, + "id": 11764, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_address_fromMemory": { + "entryPoint": 697, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint256t_addresst_addresst_address_fromMemory": { + "entryPoint": 726, + "id": null, + "parameterSlots": 2, + "returnSlots": 8 + }, + "abi_encode_tuple_t_stringliteral_343b6fd5bd3a9963b4c6f8aa87ebc2ac86870fe2249ee726090c42d51157d869__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:1346:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "74:117:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "84:22:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "99:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "93:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "93:13:39" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "84:5:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "169:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "178:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "181:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "171:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "171:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "171:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "128:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "139:5:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "154:3:39", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "159:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "150:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "150:11:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "163:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "146:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "146:19:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "135:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "135:31:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "125:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "125:42:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "118:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "118:50:39" + }, + "nodeType": "YulIf", + "src": "115:70:39" + } + ] + }, + "name": "abi_decode_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "53:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "64:5:39", + "type": "" + } + ], + "src": "14:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "396:536:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "443:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "452:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "455:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "445:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "445:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "445:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "417:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "426:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "413:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "413:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "438:3:39", + "type": "", + "value": "256" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "409:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "409:33:39" + }, + "nodeType": "YulIf", + "src": "406:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "468:50:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "508:9:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "478:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "478:40:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "468:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "527:59:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "571:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "582:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "567:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "567:18:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "537:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "537:49:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "527:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "595:35:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "615:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "626:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "611:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "611:18:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "605:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "605:25:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "595:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "639:35:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "659:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "670:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "655:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "655:18:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "649:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "649:25:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "639:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "683:36:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "703:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "714:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "699:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "699:19:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "693:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "693:26:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "683:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "728:60:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "772:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "783:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "768:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "768:19:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "738:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "738:50:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "728:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "797:60:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "841:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "852:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "837:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "837:19:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "807:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "807:50:39" + }, + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "797:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "866:60:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "910:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "921:3:39", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "906:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "906:19:39" + } + ], + "functionName": { + "name": "abi_decode_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "876:29:39" + }, + "nodeType": "YulFunctionCall", + "src": "876:50:39" + }, + "variableNames": [ + { + "name": "value7", + "nodeType": "YulIdentifier", + "src": "866:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint256t_addresst_addresst_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "306:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "317:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "329:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "337:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "345:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "353:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "361:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "369:6:39", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "377:6:39", + "type": "" + }, + { + "name": "value7", + "nodeType": "YulTypedName", + "src": "385:6:39", + "type": "" + } + ], + "src": "196:736:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1111:233:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1128:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1139:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1121:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1121:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1121:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1162:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1173:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1158:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1158:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1178:2:39", + "type": "", + "value": "43" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1151:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1151:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1151:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1201:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1212:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1197:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1197:18:39" + }, + { + "hexValue": "5354414b494e473a3a636f6e7374727563746f723a205a65726f206164647265", + "kind": "string", + "nodeType": "YulLiteral", + "src": "1217:34:39", + "type": "", + "value": "STAKING::constructor: Zero addre" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1190:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1190:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1190:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1272:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1283:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1268:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1268:18:39" + }, + { + "hexValue": "7373206465746563746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "1288:13:39", + "type": "", + "value": "ss detected" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1261:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1261:41:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1261:41:39" + }, + { + "nodeType": "YulAssignment", + "src": "1311:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1323:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1334:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1319:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1319:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1311:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_343b6fd5bd3a9963b4c6f8aa87ebc2ac86870fe2249ee726090c42d51157d869__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1088:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1102:4:39", + "type": "" + } + ], + "src": "937:407:39" + } + ] + }, + "contents": "{\n { }\n function abi_decode_address_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint256t_addresst_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n {\n if slt(sub(dataEnd, headStart), 256) { revert(0, 0) }\n value0 := abi_decode_address_fromMemory(headStart)\n value1 := abi_decode_address_fromMemory(add(headStart, 32))\n value2 := mload(add(headStart, 64))\n value3 := mload(add(headStart, 96))\n value4 := mload(add(headStart, 128))\n value5 := abi_decode_address_fromMemory(add(headStart, 160))\n value6 := abi_decode_address_fromMemory(add(headStart, 192))\n value7 := abi_decode_address_fromMemory(add(headStart, 224))\n }\n function abi_encode_tuple_t_stringliteral_343b6fd5bd3a9963b4c6f8aa87ebc2ac86870fe2249ee726090c42d51157d869__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"STAKING::constructor: Zero addre\")\n mstore(add(headStart, 96), \"ss detected\")\n tail := add(headStart, 128)\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "60806040526000600255670de0b6b3a764000060055560006006556001600b553480156200002c57600080fd5b50604051620022a9380380620022a98339810160408190526200004f91620002d6565b6001600160a01b038816158015906200007057506001600160a01b03871615155b80156200008557506001600160a01b03831615155b80156200009a57506001600160a01b03821615155b620000ff5760405162461bcd60e51b815260206004820152602b60248201527f5354414b494e473a3a636f6e7374727563746f723a205a65726f20616464726560448201526a1cdcc819195d1958dd195960aa1b606482015260840160405180910390fd5b6200010c600033620001cb565b620001387fee33494882c15ef16fd46d90287d1d71c5808d5681b5d0ee0567fbc8f9b0100b82620001cb565b620001647f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33620001cb565b50600c80546001600160a01b039889166001600160a01b031991821617909155600d8054978916978216979097179096556004949094556007929092556008554360035560098054918516918416919091179055600a805491909316911617905562000363565b620001d78282620001db565b5050565b60008281526020818152604090912062000200918390620017e062000242821b17901c565b15620001d75760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b60006200025e836001600160601b0319606085901b1662000267565b90505b92915050565b6000818152600183016020526040812054620002b05750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000261565b50600062000261565b80516001600160a01b0381168114620002d157600080fd5b919050565b600080600080600080600080610100898b031215620002f457600080fd5b620002ff89620002b9565b97506200030f60208a01620002b9565b96506040890151955060608901519450608089015193506200033460a08a01620002b9565b92506200034460c08a01620002b9565b91506200035460e08a01620002b9565b90509295985092959890939650565b611f3680620003736000396000f3fe608060405234801561001057600080fd5b50600436106102775760003560e01c8063995d9b6011610160578063cc7a262e116100d8578063db2e21bc1161008c578063f51e181a11610071578063f51e181a1461056c578063f7c618c114610575578063f90ce5ba1461059557600080fd5b8063db2e21bc14610551578063f40f0f521461055957600080fd5b8063d3f6a157116100bd578063d3f6a15714610518578063d547741f1461052b578063d79e85671461053e57600080fd5b8063cc7a262e146104e5578063cee66f631461050557600080fd5b8063a87430ba1161012f578063bb872b4a11610114578063bb872b4a146104b6578063ca15c873146104c9578063cb6d8ee6146104dc57600080fd5b8063a87430ba14610467578063b6b55f25146104a357600080fd5b8063995d9b6014610427578063a217fddf14610430578063a2e6204514610438578063a43c7e7e1461044057600080fd5b806352e9c6d4116101f357806388d19f1b116101c25780639010d07c116101a75780639010d07c146103e957806391d14854146103fc5780639378c6d41461041f57600080fd5b806388d19f1b146103d75780638ae39cac146103e057600080fd5b806352e9c6d41461038857806355b8fb811461039b57806360c6cdac146103ae578063698a5897146103b757600080fd5b80632f2ff15d1161024a57806334ddb95d1161022f57806334ddb95d1461034557806336568abe1461036c578063481af4aa1461037f57600080fd5b80632f2ff15d1461031f5780632f4f21e21461033257600080fd5b8063079a57051461027c578063248a9ca3146102c65780632aca3e7d146102f75780632e1a7d4d1461030c575b600080fd5b600a5461029c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6102e96102d4366004611c45565b60009081526020819052604090206002015490565b6040519081526020016102bd565b61030a610305366004611c5e565b61059e565b005b61030a61031a366004611c45565b610683565b61030a61032d366004611ca2565b6108c9565b61030a610340366004611cd2565b61097f565b6102e97f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b61030a61037a366004611ca2565b610b29565b6102e960085481565b61030a610396366004611cfe565b610bd8565b61030a6103a9366004611d22565b610ce1565b6102e960025481565b60095461029c9073ffffffffffffffffffffffffffffffffffffffff1681565b6102e960075481565b6102e960045481565b61029c6103f7366004611c5e565b610e10565b61040f61040a366004611ca2565b610e31565b60405190151581526020016102bd565b61030a610e49565b6102e960065481565b6102e9600081565b61030a610ffc565b6102e97fee33494882c15ef16fd46d90287d1d71c5808d5681b5d0ee0567fbc8f9b0100b81565b61048e610475366004611cfe565b6001602081905260009182526040909120805491015482565b604080519283526020830191909152016102bd565b61030a6104b1366004611c45565b611058565b61030a6104c4366004611c45565b611065565b6102e96104d7366004611c45565b611166565b6102e9600b5481565b600c5461029c9073ffffffffffffffffffffffffffffffffffffffff1681565b61030a610513366004611cfe565b61117d565b61030a610526366004611d63565b611390565b61030a610539366004611ca2565b6114ac565b61030a61054c366004611cd2565b611554565b61030a61162c565b6102e9610567366004611cfe565b611735565b6102e960055481565b600d5461029c9073ffffffffffffffffffffffffffffffffffffffff1681565b6102e960035481565b6105c87f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b610633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f7420612074727573747960448201526064015b60405180910390fd5b61063b610e49565b6007829055600881905560408051838152602081018390527f635fab9ef42704636ceacfc3756d45c820dc77e2b15e0f46d436e9ec6f5a708991015b60405180910390a15050565b3360009081526001602052604090208054821115610723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f5354414b494e473a3a77697468647261773a20776974686472617720616d6f7560448201527f6e742065786365656473206465706f736974656420616d6f756e740000000000606482015260840161062a565b61072b610ffc565b6000816001015460055460025484600001546107479190611dc0565b6107519190611dfd565b61075b9190611e38565b90506107673382611812565b600060055460085460075461077c9190611e4f565b6107869084611dc0565b6107909190611dfd565b9050806006546107a09190611e4f565b600655831561089f5782546107b6908590611e38565b8355600c546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810186905273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb906044016020604051808303816000875af115801561082f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108539190611e67565b5083600b546108629190611e38565b600b5560408051338152602081018690527f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364910160405180910390a15b60055460025484546108b19190611dc0565b6108bb9190611dfd565b836001018190555050505050565b6000828152602081905260409020600201546108e59033610e31565b610971576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e740000000000000000000000000000000000606482015260840161062a565b61097b82826118eb565b5050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090206109ac610ffc565b8054156109f1576000816001015460055460025484600001546109cf9190611dc0565b6109d99190611dfd565b6109e39190611e38565b90506109ef8482611812565b505b80546109fe908390611e4f565b8082556005546002549091610a139190611dc0565b610a1d9190611dfd565b6001820155600c546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810184905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af1158015610a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac39190611e67565b5081600b54610ad29190611e4f565b600b556040805173ffffffffffffffffffffffffffffffffffffffff85168152602081018490527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c910160405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610bce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c660000000000000000000000000000000000606482015260840161062a565b61097b8282611951565b610c027f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b610c68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f74206120747275737479604482015260640161062a565b600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f793c5d6d63836324edea9ae9eb434d37862194427d3060862215257245a0c9299060200160405180910390a150565b610d0b7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b610d71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f74206120747275737479604482015260640161062a565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820183905283169063a9059cbb906044016020604051808303816000875af1158015610de6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0a9190611e67565b50505050565b6000828152602081905260408120610e2890836119b7565b90505b92915050565b6000828152602081905260408120610e2890836119cd565b6000600854600754610e5b9190611e4f565b600754600654610e6b9190611dc0565b610e759190611dfd565b600d546009546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260248101849052929350169063b4f56b2690604401600060405180830381600087803b158015610eed57600080fd5b505af1158015610f01573d6000803e3d6000fd5b505050506000600854600754610f179190611e4f565b600854600654610f279190611dc0565b610f319190611dfd565b600d54600a546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260248101849052929350169063b4f56b2690604401600060405180830381600087803b158015610fa957600080fd5b505af1158015610fbd573d6000803e3d6000fd5b50506000600655505060408051828152602081018490527fd7efc4cdd0ec299514928105db63bae6f4b6734397925b15fe9df3db233ceb519101610677565b600354431161100757565b60006004546003544361101a9190611e38565b6110249190611dc0565b9050600b54600554826110379190611dc0565b6110419190611dfd565b60025461104e9190611e4f565b6002555043600355565b611062338261097f565b50565b61108f7fee33494882c15ef16fd46d90287d1d71c5808d5681b5d0ee0567fbc8f9b0100b33610e31565b61111d57604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f5354414b494e473a3a736574526577617264506572426c6f636b3a2043616c6c60448201527f6572206973206e6f74206120726577617264506572426c6f636b536574746572606482015260840161062a565b611125610ffc565b60045460408051918252602082018390527f79a5349732f93288abbb68e251c3dfc325bf3ee6fde7786d919155d39733e0f5910160405180910390a1600455565b6000818152602081905260408120610e2b90611a0c565b6111a77f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b61120d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f74206120747275737479604482015260640161062a565b600c546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a09190611e89565b6001600b55600c546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015611320573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113449190611e67565b506040805182815273ffffffffffffffffffffffffffffffffffffffff841660208201527f5a13955452e0668a1ad79cebe6a7578b8561b92374f0749286d41c9805b75b429101610677565b6113ba7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b611420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f74206120747275737479604482015260640161062a565b6009805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909355600a80549185169190921681179091556040805192835260208301919091527ff5ce80a04fffb5058766b1d6b907c8b27d37be009f9bd418117cf9fa16dfc9b99101610677565b6000828152602081905260409020600201546114c89033610e31565b610bce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b6500000000000000000000000000000000606482015260840161062a565b61157e7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b6115e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f74206120747275737479604482015260640161062a565b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f19350505050158015611627573d6000803e3d6000fd5b505050565b3360009081526001602052604090208054600b5461164a9190611e38565b600b55600c5481546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481019190915273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb906044016020604051808303816000875af11580156116c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116eb9190611e67565b5080546040805133815260208101929092527f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd9695910160405180910390a16000808255600190910155565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604081206002546003544311156117af5760006004546003544361177a9190611e38565b6117849190611dc0565b9050600b54600554826117979190611dc0565b6117a19190611dfd565b6117ab9083611e4f565b9150505b600182015460055483546117c4908490611dc0565b6117ce9190611dfd565b6117d89190611e38565b949350505050565b6000610e28837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16611a16565b600d546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490529091169063b4f56b2690604401600060405180830381600087803b15801561188657600080fd5b505af115801561189a573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff86168152602081018590527f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f72419350019050610677565b600082815260208190526040902061190390826117e0565b1561097b57604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b60008281526020819052604090206119699082611a65565b1561097b57604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b60006119c38383611a97565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660009081526001830160205260408120541515610e28565b6000610e2b825490565b6000818152600183016020526040812054611a5d57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610e2b565b506000610e2b565b6000610e28837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16611b52565b81546000908210611b2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f6473000000000000000000000000000000000000000000000000000000000000606482015260840161062a565b826000018281548110611b3f57611b3f611ea2565b9060005260206000200154905092915050565b60008181526001830160205260408120548015611c3b576000611b76600183611e38565b8554909150600090611b8a90600190611e38565b90506000866000018281548110611ba357611ba3611ea2565b9060005260206000200154905080876000018481548110611bc657611bc6611ea2565b600091825260209091200155611bdd836001611e4f565b60008281526001890160205260409020558654879080611bff57611bff611ed1565b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610e2b565b6000915050610e2b565b600060208284031215611c5757600080fd5b5035919050565b60008060408385031215611c7157600080fd5b50508035926020909101359150565b73ffffffffffffffffffffffffffffffffffffffff8116811461106257600080fd5b60008060408385031215611cb557600080fd5b823591506020830135611cc781611c80565b809150509250929050565b60008060408385031215611ce557600080fd5b8235611cf081611c80565b946020939093013593505050565b600060208284031215611d1057600080fd5b8135611d1b81611c80565b9392505050565b600080600060608486031215611d3757600080fd5b8335611d4281611c80565b92506020840135611d5281611c80565b929592945050506040919091013590565b60008060408385031215611d7657600080fd5b8235611d8181611c80565b91506020830135611cc781611c80565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611df857611df8611d91565b500290565b600082611e33577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015611e4a57611e4a611d91565b500390565b60008219821115611e6257611e62611d91565b500190565b600060208284031215611e7957600080fd5b81518015158114611d1b57600080fd5b600060208284031215611e9b57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122012956ab11e279b37a46f390efbcb57ea3b3e7d98b6d602a71af5698b75b7d90d64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0x2 SSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0x5 SSTORE PUSH1 0x0 PUSH1 0x6 SSTORE PUSH1 0x1 PUSH1 0xB SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x22A9 CODESIZE SUB DUP1 PUSH3 0x22A9 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x4F SWAP2 PUSH3 0x2D6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND ISZERO DUP1 ISZERO SWAP1 PUSH3 0x70 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH3 0x85 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH3 0x9A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO ISZERO JUMPDEST PUSH3 0xFF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354414B494E473A3A636F6E7374727563746F723A205A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x1CDCC819195D1958DD1959 PUSH1 0xAA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x10C PUSH1 0x0 CALLER PUSH3 0x1CB JUMP JUMPDEST PUSH3 0x138 PUSH32 0xEE33494882C15EF16FD46D90287D1D71C5808D5681B5D0EE0567FBC8F9B0100B DUP3 PUSH3 0x1CB JUMP JUMPDEST PUSH3 0x164 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH3 0x1CB JUMP JUMPDEST POP PUSH1 0xC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0xD DUP1 SLOAD SWAP8 DUP10 AND SWAP8 DUP3 AND SWAP8 SWAP1 SWAP8 OR SWAP1 SWAP7 SSTORE PUSH1 0x4 SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0x7 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x8 SSTORE NUMBER PUSH1 0x3 SSTORE PUSH1 0x9 DUP1 SLOAD SWAP2 DUP6 AND SWAP2 DUP5 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0xA DUP1 SLOAD SWAP2 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE PUSH3 0x363 JUMP JUMPDEST PUSH3 0x1D7 DUP3 DUP3 PUSH3 0x1DB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH3 0x200 SWAP2 DUP4 SWAP1 PUSH3 0x17E0 PUSH3 0x242 DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST ISZERO PUSH3 0x1D7 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x25E DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH3 0x267 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH3 0x2B0 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 PUSH3 0x261 JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0x261 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x2D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH3 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x2FF DUP10 PUSH3 0x2B9 JUMP JUMPDEST SWAP8 POP PUSH3 0x30F PUSH1 0x20 DUP11 ADD PUSH3 0x2B9 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD MLOAD SWAP6 POP PUSH1 0x60 DUP10 ADD MLOAD SWAP5 POP PUSH1 0x80 DUP10 ADD MLOAD SWAP4 POP PUSH3 0x334 PUSH1 0xA0 DUP11 ADD PUSH3 0x2B9 JUMP JUMPDEST SWAP3 POP PUSH3 0x344 PUSH1 0xC0 DUP11 ADD PUSH3 0x2B9 JUMP JUMPDEST SWAP2 POP PUSH3 0x354 PUSH1 0xE0 DUP11 ADD PUSH3 0x2B9 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH2 0x1F36 DUP1 PUSH3 0x373 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 0x277 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x995D9B60 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0xCC7A262E GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xDB2E21BC GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xF51E181A GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xF51E181A EQ PUSH2 0x56C JUMPI DUP1 PUSH4 0xF7C618C1 EQ PUSH2 0x575 JUMPI DUP1 PUSH4 0xF90CE5BA EQ PUSH2 0x595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xDB2E21BC EQ PUSH2 0x551 JUMPI DUP1 PUSH4 0xF40F0F52 EQ PUSH2 0x559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xD3F6A157 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xD3F6A157 EQ PUSH2 0x518 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x52B JUMPI DUP1 PUSH4 0xD79E8567 EQ PUSH2 0x53E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCC7A262E EQ PUSH2 0x4E5 JUMPI DUP1 PUSH4 0xCEE66F63 EQ PUSH2 0x505 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA87430BA GT PUSH2 0x12F JUMPI DUP1 PUSH4 0xBB872B4A GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xBB872B4A EQ PUSH2 0x4B6 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x4C9 JUMPI DUP1 PUSH4 0xCB6D8EE6 EQ PUSH2 0x4DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA87430BA EQ PUSH2 0x467 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x995D9B60 EQ PUSH2 0x427 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x430 JUMPI DUP1 PUSH4 0xA2E62045 EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0xA43C7E7E EQ PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52E9C6D4 GT PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x88D19F1B GT PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x9010D07C GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x3E9 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x3FC JUMPI DUP1 PUSH4 0x9378C6D4 EQ PUSH2 0x41F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x88D19F1B EQ PUSH2 0x3D7 JUMPI DUP1 PUSH4 0x8AE39CAC EQ PUSH2 0x3E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52E9C6D4 EQ PUSH2 0x388 JUMPI DUP1 PUSH4 0x55B8FB81 EQ PUSH2 0x39B JUMPI DUP1 PUSH4 0x60C6CDAC EQ PUSH2 0x3AE JUMPI DUP1 PUSH4 0x698A5897 EQ PUSH2 0x3B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D GT PUSH2 0x24A JUMPI DUP1 PUSH4 0x34DDB95D GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x34DDB95D EQ PUSH2 0x345 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x36C JUMPI DUP1 PUSH4 0x481AF4AA EQ PUSH2 0x37F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x31F JUMPI DUP1 PUSH4 0x2F4F21E2 EQ PUSH2 0x332 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x79A5705 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x2C6 JUMPI DUP1 PUSH4 0x2ACA3E7D EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x30C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xA SLOAD PUSH2 0x29C SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2E9 PUSH2 0x2D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C45 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2BD JUMP JUMPDEST PUSH2 0x30A PUSH2 0x305 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C5E JUMP JUMPDEST PUSH2 0x59E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x30A PUSH2 0x31A CALLDATASIZE PUSH1 0x4 PUSH2 0x1C45 JUMP JUMPDEST PUSH2 0x683 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x32D CALLDATASIZE PUSH1 0x4 PUSH2 0x1CA2 JUMP JUMPDEST PUSH2 0x8C9 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x340 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CD2 JUMP JUMPDEST PUSH2 0x97F JUMP JUMPDEST PUSH2 0x2E9 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP2 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x37A CALLDATASIZE PUSH1 0x4 PUSH2 0x1CA2 JUMP JUMPDEST PUSH2 0xB29 JUMP JUMPDEST PUSH2 0x2E9 PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x396 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CFE JUMP JUMPDEST PUSH2 0xBD8 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x3A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D22 JUMP JUMPDEST PUSH2 0xCE1 JUMP JUMPDEST PUSH2 0x2E9 PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x29C SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x2E9 PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2E9 PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x29C PUSH2 0x3F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C5E JUMP JUMPDEST PUSH2 0xE10 JUMP JUMPDEST PUSH2 0x40F PUSH2 0x40A CALLDATASIZE PUSH1 0x4 PUSH2 0x1CA2 JUMP JUMPDEST PUSH2 0xE31 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2BD JUMP JUMPDEST PUSH2 0x30A PUSH2 0xE49 JUMP JUMPDEST PUSH2 0x2E9 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2E9 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x30A PUSH2 0xFFC JUMP JUMPDEST PUSH2 0x2E9 PUSH32 0xEE33494882C15EF16FD46D90287D1D71C5808D5681B5D0EE0567FBC8F9B0100B DUP2 JUMP JUMPDEST PUSH2 0x48E PUSH2 0x475 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CFE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP2 ADD SLOAD DUP3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x2BD JUMP JUMPDEST PUSH2 0x30A PUSH2 0x4B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C45 JUMP JUMPDEST PUSH2 0x1058 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x4C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C45 JUMP JUMPDEST PUSH2 0x1065 JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0x4D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C45 JUMP JUMPDEST PUSH2 0x1166 JUMP JUMPDEST PUSH2 0x2E9 PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH2 0x29C SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x513 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CFE JUMP JUMPDEST PUSH2 0x117D JUMP JUMPDEST PUSH2 0x30A PUSH2 0x526 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D63 JUMP JUMPDEST PUSH2 0x1390 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x539 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CA2 JUMP JUMPDEST PUSH2 0x14AC JUMP JUMPDEST PUSH2 0x30A PUSH2 0x54C CALLDATASIZE PUSH1 0x4 PUSH2 0x1CD2 JUMP JUMPDEST PUSH2 0x1554 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x162C JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0x567 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CFE JUMP JUMPDEST PUSH2 0x1735 JUMP JUMPDEST PUSH2 0x2E9 PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x29C SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x2E9 PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x5C8 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0xE31 JUMP JUMPDEST PUSH2 0x633 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354414B494E473A3A2043616C6C6572206973206E6F74206120747275737479 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x63B PUSH2 0xE49 JUMP JUMPDEST PUSH1 0x7 DUP3 SWAP1 SSTORE PUSH1 0x8 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH32 0x635FAB9EF42704636CEACFC3756D45C820DC77E2B15E0F46D436E9EC6F5A7089 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 GT ISZERO PUSH2 0x723 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354414B494E473A3A77697468647261773A20776974686472617720616D6F75 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E742065786365656473206465706F736974656420616D6F756E740000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x62A JUMP JUMPDEST PUSH2 0x72B PUSH2 0xFFC JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 ADD SLOAD PUSH1 0x5 SLOAD PUSH1 0x2 SLOAD DUP5 PUSH1 0x0 ADD SLOAD PUSH2 0x747 SWAP2 SWAP1 PUSH2 0x1DC0 JUMP JUMPDEST PUSH2 0x751 SWAP2 SWAP1 PUSH2 0x1DFD JUMP JUMPDEST PUSH2 0x75B SWAP2 SWAP1 PUSH2 0x1E38 JUMP JUMPDEST SWAP1 POP PUSH2 0x767 CALLER DUP3 PUSH2 0x1812 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0x8 SLOAD PUSH1 0x7 SLOAD PUSH2 0x77C SWAP2 SWAP1 PUSH2 0x1E4F JUMP JUMPDEST PUSH2 0x786 SWAP1 DUP5 PUSH2 0x1DC0 JUMP JUMPDEST PUSH2 0x790 SWAP2 SWAP1 PUSH2 0x1DFD JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x6 SLOAD PUSH2 0x7A0 SWAP2 SWAP1 PUSH2 0x1E4F JUMP JUMPDEST PUSH1 0x6 SSTORE DUP4 ISZERO PUSH2 0x89F JUMPI DUP3 SLOAD PUSH2 0x7B6 SWAP1 DUP6 SWAP1 PUSH2 0x1E38 JUMP JUMPDEST DUP4 SSTORE PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x82F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x853 SWAP2 SWAP1 PUSH2 0x1E67 JUMP JUMPDEST POP DUP4 PUSH1 0xB SLOAD PUSH2 0x862 SWAP2 SWAP1 PUSH2 0x1E38 JUMP JUMPDEST PUSH1 0xB SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE PUSH32 0x884EDAD9CE6FA2440D8A54CC123490EB96D2768479D49FF9C7366125A9424364 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x2 SLOAD DUP5 SLOAD PUSH2 0x8B1 SWAP2 SWAP1 PUSH2 0x1DC0 JUMP JUMPDEST PUSH2 0x8BB SWAP2 SWAP1 PUSH2 0x1DFD JUMP JUMPDEST DUP4 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x8E5 SWAP1 CALLER PUSH2 0xE31 JUMP JUMPDEST PUSH2 0x971 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F206772616E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x62A JUMP JUMPDEST PUSH2 0x97B DUP3 DUP3 PUSH2 0x18EB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x9AC PUSH2 0xFFC JUMP JUMPDEST DUP1 SLOAD ISZERO PUSH2 0x9F1 JUMPI PUSH1 0x0 DUP2 PUSH1 0x1 ADD SLOAD PUSH1 0x5 SLOAD PUSH1 0x2 SLOAD DUP5 PUSH1 0x0 ADD SLOAD PUSH2 0x9CF SWAP2 SWAP1 PUSH2 0x1DC0 JUMP JUMPDEST PUSH2 0x9D9 SWAP2 SWAP1 PUSH2 0x1DFD JUMP JUMPDEST PUSH2 0x9E3 SWAP2 SWAP1 PUSH2 0x1E38 JUMP JUMPDEST SWAP1 POP PUSH2 0x9EF DUP5 DUP3 PUSH2 0x1812 JUMP JUMPDEST POP JUMPDEST DUP1 SLOAD PUSH2 0x9FE SWAP1 DUP4 SWAP1 PUSH2 0x1E4F JUMP JUMPDEST DUP1 DUP3 SSTORE PUSH1 0x5 SLOAD PUSH1 0x2 SLOAD SWAP1 SWAP2 PUSH2 0xA13 SWAP2 SWAP1 PUSH2 0x1DC0 JUMP JUMPDEST PUSH2 0xA1D SWAP2 SWAP1 PUSH2 0x1DFD JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA9F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAC3 SWAP2 SWAP1 PUSH2 0x1E67 JUMP JUMPDEST POP DUP2 PUSH1 0xB SLOAD PUSH2 0xAD2 SWAP2 SWAP1 PUSH2 0x1E4F JUMP JUMPDEST PUSH1 0xB SSTORE PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ PUSH2 0xBCE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x62A JUMP JUMPDEST PUSH2 0x97B DUP3 DUP3 PUSH2 0x1951 JUMP JUMPDEST PUSH2 0xC02 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0xE31 JUMP JUMPDEST PUSH2 0xC68 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354414B494E473A3A2043616C6C6572206973206E6F74206120747275737479 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x62A JUMP JUMPDEST PUSH1 0xC DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x793C5D6D63836324EDEA9AE9EB434D37862194427D3060862215257245A0C929 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xD0B PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0xE31 JUMP JUMPDEST PUSH2 0xD71 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354414B494E473A3A2043616C6C6572206973206E6F74206120747275737479 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x62A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE DUP4 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDE6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE0A SWAP2 SWAP1 PUSH2 0x1E67 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xE28 SWAP1 DUP4 PUSH2 0x19B7 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xE28 SWAP1 DUP4 PUSH2 0x19CD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x7 SLOAD PUSH2 0xE5B SWAP2 SWAP1 PUSH2 0x1E4F JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x6 SLOAD PUSH2 0xE6B SWAP2 SWAP1 PUSH2 0x1DC0 JUMP JUMPDEST PUSH2 0xE75 SWAP2 SWAP1 PUSH2 0x1DFD JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE SWAP3 SWAP4 POP AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF01 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x7 SLOAD PUSH2 0xF17 SWAP2 SWAP1 PUSH2 0x1E4F JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x6 SLOAD PUSH2 0xF27 SWAP2 SWAP1 PUSH2 0x1DC0 JUMP JUMPDEST PUSH2 0xF31 SWAP2 SWAP1 PUSH2 0x1DFD JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE SWAP3 SWAP4 POP AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFBD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x0 PUSH1 0x6 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE PUSH32 0xD7EFC4CDD0EC299514928105DB63BAE6F4B6734397925B15FE9DF3DB233CEB51 SWAP2 ADD PUSH2 0x677 JUMP JUMPDEST PUSH1 0x3 SLOAD NUMBER GT PUSH2 0x1007 JUMPI JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0x3 SLOAD NUMBER PUSH2 0x101A SWAP2 SWAP1 PUSH2 0x1E38 JUMP JUMPDEST PUSH2 0x1024 SWAP2 SWAP1 PUSH2 0x1DC0 JUMP JUMPDEST SWAP1 POP PUSH1 0xB SLOAD PUSH1 0x5 SLOAD DUP3 PUSH2 0x1037 SWAP2 SWAP1 PUSH2 0x1DC0 JUMP JUMPDEST PUSH2 0x1041 SWAP2 SWAP1 PUSH2 0x1DFD JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x104E SWAP2 SWAP1 PUSH2 0x1E4F JUMP JUMPDEST PUSH1 0x2 SSTORE POP NUMBER PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH2 0x1062 CALLER DUP3 PUSH2 0x97F JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x108F PUSH32 0xEE33494882C15EF16FD46D90287D1D71C5808D5681B5D0EE0567FBC8F9B0100B CALLER PUSH2 0xE31 JUMP JUMPDEST PUSH2 0x111D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x5354414B494E473A3A736574526577617264506572426C6F636B3A2043616C6C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6572206973206E6F74206120726577617264506572426C6F636B536574746572 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x62A JUMP JUMPDEST PUSH2 0x1125 PUSH2 0xFFC JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x79A5349732F93288ABBB68E251C3DFC325BF3EE6FDE7786D919155D39733E0F5 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xE2B SWAP1 PUSH2 0x1A0C JUMP JUMPDEST PUSH2 0x11A7 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0xE31 JUMP JUMPDEST PUSH2 0x120D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354414B494E473A3A2043616C6C6572206973206E6F74206120747275737479 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x62A JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x127C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12A0 SWAP2 SWAP1 PUSH2 0x1E89 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xB SSTORE PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE SWAP3 SWAP4 POP SWAP2 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1320 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1344 SWAP2 SWAP1 PUSH2 0x1E67 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x5A13955452E0668A1AD79CEBE6A7578B8561B92374F0749286D41C9805B75B42 SWAP2 ADD PUSH2 0x677 JUMP JUMPDEST PUSH2 0x13BA PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0xE31 JUMP JUMPDEST PUSH2 0x1420 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354414B494E473A3A2043616C6C6572206973206E6F74206120747275737479 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x62A JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0xA DUP1 SLOAD SWAP2 DUP6 AND SWAP2 SWAP1 SWAP3 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xF5CE80A04FFFB5058766B1D6B907C8B27D37BE009F9BD418117CF9FA16DFC9B9 SWAP2 ADD PUSH2 0x677 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x14C8 SWAP1 CALLER PUSH2 0xE31 JUMP JUMPDEST PUSH2 0xBCE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F207265766F6B6500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x62A JUMP JUMPDEST PUSH2 0x157E PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0xE31 JUMP JUMPDEST PUSH2 0x15E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354414B494E473A3A2043616C6C6572206973206E6F74206120747275737479 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x62A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP3 ISZERO PUSH2 0x8FC MUL SWAP1 DUP4 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1627 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xB SLOAD PUSH2 0x164A SWAP2 SWAP1 PUSH2 0x1E38 JUMP JUMPDEST PUSH1 0xB SSTORE PUSH1 0xC SLOAD DUP2 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16EB SWAP2 SWAP1 PUSH2 0x1E67 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0x5FAFA99D0643513820BE26656B45130B01E1C03062E1266BF36F88CBD3BD9695 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x0 DUP1 DUP3 SSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 SLOAD PUSH1 0x3 SLOAD NUMBER GT ISZERO PUSH2 0x17AF JUMPI PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0x3 SLOAD NUMBER PUSH2 0x177A SWAP2 SWAP1 PUSH2 0x1E38 JUMP JUMPDEST PUSH2 0x1784 SWAP2 SWAP1 PUSH2 0x1DC0 JUMP JUMPDEST SWAP1 POP PUSH1 0xB SLOAD PUSH1 0x5 SLOAD DUP3 PUSH2 0x1797 SWAP2 SWAP1 PUSH2 0x1DC0 JUMP JUMPDEST PUSH2 0x17A1 SWAP2 SWAP1 PUSH2 0x1DFD JUMP JUMPDEST PUSH2 0x17AB SWAP1 DUP4 PUSH2 0x1E4F JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x5 SLOAD DUP4 SLOAD PUSH2 0x17C4 SWAP1 DUP5 SWAP1 PUSH2 0x1DC0 JUMP JUMPDEST PUSH2 0x17CE SWAP2 SWAP1 PUSH2 0x1DFD JUMP JUMPDEST PUSH2 0x17D8 SWAP2 SWAP1 PUSH2 0x1E38 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE28 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x1A16 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1886 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x189A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE PUSH32 0x106F923F993C2149D49B4255FF723ACAFA1F2D94393F561D3EDA32AE348F7241 SWAP4 POP ADD SWAP1 POP PUSH2 0x677 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1903 SWAP1 DUP3 PUSH2 0x17E0 JUMP JUMPDEST ISZERO PUSH2 0x97B JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1969 SWAP1 DUP3 PUSH2 0x1A65 JUMP JUMPDEST ISZERO PUSH2 0x97B JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19C3 DUP4 DUP4 PUSH2 0x1A97 JUMP JUMPDEST PUSH1 0x60 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD ISZERO ISZERO PUSH2 0xE28 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE2B DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x1A5D 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 0xE2B JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xE2B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE28 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x1B52 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x1B2A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E756D657261626C655365743A20696E646578206F7574206F6620626F756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6473000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x62A JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1B3F JUMPI PUSH2 0x1B3F PUSH2 0x1EA2 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1C3B JUMPI PUSH1 0x0 PUSH2 0x1B76 PUSH1 0x1 DUP4 PUSH2 0x1E38 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1B8A SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x1E38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1BA3 JUMPI PUSH2 0x1BA3 PUSH2 0x1EA2 JUMP 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 0x1BC6 JUMPI PUSH2 0x1BC6 PUSH2 0x1EA2 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH2 0x1BDD DUP4 PUSH1 0x1 PUSH2 0x1E4F JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x1BFF JUMPI PUSH2 0x1BFF PUSH2 0x1ED1 JUMP 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 0xE2B JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0xE2B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1C71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1062 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1CB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1CC7 DUP2 PUSH2 0x1C80 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1CE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1CF0 DUP2 PUSH2 0x1C80 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1D1B DUP2 PUSH2 0x1C80 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1D37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1D42 DUP2 PUSH2 0x1C80 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1D52 DUP2 PUSH2 0x1C80 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1D76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1D81 DUP2 PUSH2 0x1C80 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1CC7 DUP2 PUSH2 0x1C80 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x1DF8 JUMPI PUSH2 0x1DF8 PUSH2 0x1D91 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1E33 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x1E4A JUMPI PUSH2 0x1E4A PUSH2 0x1D91 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1E62 JUMPI PUSH2 0x1E62 PUSH2 0x1D91 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1E79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1D1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1E9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT SWAP6 PUSH11 0xB11E279B37A46F390EFBCB JUMPI 0xEA EXTCODESIZE RETURNDATACOPY PUSH30 0x98B6D602A71AF5698B75B7D90D64736F6C634300080A0033000000000000 ", + "sourceMap": "1673:7698:27:-:0;;;1858:1;1819:40;;1951:4;1928:27;;1994:1;1959:36;;2158:1;2124:35;;2474:852;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2719:26:27;;;;;;:59;;-1:-1:-1;;;;;;2752:26:27;;;;2719:59;:90;;;;-1:-1:-1;;;;;;2785:24:27;;;;2719:90;:131;;;;-1:-1:-1;;;;;;2816:34:27;;;;2719:131;2707:197;;;;-1:-1:-1;;;2707:197:27;;1139:2:39;2707:197:27;;;1121:21:39;1178:2;1158:18;;;1151:30;1217:34;1197:18;;;1190:62;-1:-1:-1;;;1268:18:39;;;1261:41;1319:19;;2707:197:27;;;;;;;;2908:42;1767:4:20;2939:10:27;2908;:42::i;:::-;2954:58;2327:36;2990:21;2954:10;:58::i;:::-;3016:35;2404:24;3040:10;3016;:35::i;:::-;-1:-1:-1;3055:11:27;:26;;-1:-1:-1;;;;;3055:26:27;;;-1:-1:-1;;;;;;3055:26:27;;;;;;;3085:11;:26;;;;;;;;;;;;;;;3115:14;:32;;;;3151:8;:20;;;;-1:-1:-1;3175:40:27;3238:12;3219:16;:31;-1:-1:-1;3254:22:27;;;;;;;;;;;;;;-1:-1:-1;3280:42:27;;;;;;;;;;;1673:7698;;6653:110:20;6731:25;6742:4;6748:7;6731:10;:25::i;:::-;6653:110;;:::o;7090:184::-;7163:6;:12;;;;;;;;;;;:33;;7188:7;;7163:24;;;;;:33;;:::i;:::-;7159:109;;;7217:40;;686:10:4;;-1:-1:-1;;;;;7217:40:20;;;7229:4;;7217:40;;;;;7090:184;;:::o;4866:141:38:-;4936:4;4959:41;4964:3;-1:-1:-1;;;;;;4984:14:38;;;;4976:23;4959:4;:41::i;:::-;4952:48;;4866:141;;;;;:::o;1613:404::-;1676:4;3874:19;;;:12;;;:19;;;;;;1692:319;;-1:-1:-1;1734:23:38;;;;;;;;:11;:23;;;;;;;;;;;;;1914:18;;1892:19;;;:12;;;:19;;;;;;:40;;;;1946:11;;1692:319;-1:-1:-1;1995:5:38;1988:12;;14:177:39;93:13;;-1:-1:-1;;;;;135:31:39;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:736::-;329:6;337;345;353;361;369;377;385;438:3;426:9;417:7;413:23;409:33;406:53;;;455:1;452;445:12;406:53;478:40;508:9;478:40;:::i;:::-;468:50;;537:49;582:2;571:9;567:18;537:49;:::i;:::-;527:59;;626:2;615:9;611:18;605:25;595:35;;670:2;659:9;655:18;649:25;639:35;;714:3;703:9;699:19;693:26;683:36;;738:50;783:3;772:9;768:19;738:50;:::i;:::-;728:60;;807:50;852:3;841:9;837:19;807:50;:::i;:::-;797:60;;876:50;921:3;910:9;906:19;876:50;:::i;:::-;866:60;;196:736;;;;;;;;;;;:::o;937:407::-;1673:7698:27;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@DEFAULT_ADMIN_ROLE_6026": { + "entryPoint": null, + "id": 6026, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@REWARD_PER_BLOCK_SETTER_7401": { + "entryPoint": null, + "id": 7401, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@TRUSTY_ROLE_7406": { + "entryPoint": null, + "id": 7406, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_add_11596": { + "entryPoint": 6678, + "id": 11596, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_at_11736": { + "entryPoint": 6807, + "id": 11736, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_contains_11696": { + "entryPoint": null, + "id": 11696, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_6258": { + "entryPoint": 6379, + "id": 6258, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_length_11710": { + "entryPoint": null, + "id": 11710, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_msgSender_444": { + "entryPoint": null, + "id": 444, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_remove_11677": { + "entryPoint": 6994, + "id": 11677, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_revokeRole_6282": { + "entryPoint": 6481, + "id": 6282, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@add_11764": { + "entryPoint": 6112, + "id": 11764, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@at_11851": { + "entryPoint": 6583, + "id": 11851, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@contains_11812": { + "entryPoint": 6605, + "id": 11812, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@daoShare_7383": { + "entryPoint": null, + "id": 7383, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@daoWallet_7387": { + "entryPoint": null, + "id": 7387, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@depositFor_7714": { + "entryPoint": 2431, + "id": 7714, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@deposit_7628": { + "entryPoint": 4184, + "id": 7628, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@earlyFoundersShare_7385": { + "entryPoint": null, + "id": 7385, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@earlyFoundersWallet_7389": { + "entryPoint": null, + "id": 7389, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@emergencyWithdrawERC20_8017": { + "entryPoint": 3297, + "id": 8017, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@emergencyWithdrawETH_8035": { + "entryPoint": 5460, + "id": 8035, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@emergencyWithdraw_7923": { + "entryPoint": 5676, + "id": 7923, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@getRoleAdmin_6121": { + "entryPoint": null, + "id": 6121, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMemberCount_6088": { + "entryPoint": 4454, + "id": 6088, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMember_6107": { + "entryPoint": 3600, + "id": 6107, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@grantRole_6147": { + "entryPoint": 2249, + "id": 6147, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@hasRole_6072": { + "entryPoint": 3633, + "id": 6072, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@lastUpdatedBlock_7373": { + "entryPoint": null, + "id": 7373, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@length_11827": { + "entryPoint": 6668, + "id": 11827, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@particleCollector_7381": { + "entryPoint": null, + "id": 7381, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@pendingReward_7579": { + "entryPoint": 5941, + "id": 7579, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@remove_11788": { + "entryPoint": 6757, + "id": 11788, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@renounceRole_6195": { + "entryPoint": 2857, + "id": 6195, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@revokeRole_6173": { + "entryPoint": 5292, + "id": 6173, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@rewardPerBlock_7375": { + "entryPoint": null, + "id": 7375, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@rewardTillNowPerToken_7371": { + "entryPoint": null, + "id": 7371, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@rewardToken_7396": { + "entryPoint": null, + "id": 7396, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@scale_7378": { + "entryPoint": null, + "id": 7378, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@sendReward_7944": { + "entryPoint": 6162, + "id": 7944, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setRewardPerBlock_8111": { + "entryPoint": 4197, + "id": 8111, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setShares_8084": { + "entryPoint": 1438, + "id": 8084, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setStakedToken_7997": { + "entryPoint": 3032, + "id": 7997, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setWallets_8058": { + "entryPoint": 5008, + "id": 8058, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@stakedToken_7394": { + "entryPoint": null, + "id": 7394, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@totalStakedToken_7392": { + "entryPoint": null, + "id": 7392, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@update_7616": { + "entryPoint": 4092, + "id": 7616, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@users_7368": { + "entryPoint": null, + "id": 7368, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@withdrawAllStakedtokens_7981": { + "entryPoint": 4477, + "id": 7981, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@withdrawParticleCollector_7875": { + "entryPoint": 3657, + "id": 7875, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@withdraw_7824": { + "entryPoint": 1667, + "id": 7824, + "parameterSlots": 1, + "returnSlots": 0 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 7422, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address_payablet_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 7523, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_addresst_uint256": { + "entryPoint": 7458, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_addresst_uint256": { + "entryPoint": 7378, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bool_fromMemory": { + "entryPoint": 7783, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32": { + "entryPoint": 7237, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32t_address": { + "entryPoint": 7330, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes32t_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256_fromMemory": { + "entryPoint": 7817, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256t_uint256": { + "entryPoint": 7262, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_587c06f0d14b166595b8869cf26c4fdc33e7631ec90c288431be59fa2bd0d92f__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_fc10209334da9e984e6aacdc85fc7b20c056ba7895742868eb7e477d52af7146__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_ff1e85932c30521286b05d6756ae02bff4c36af182f9cd76188879e4a82a0ced__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 7759, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_div_t_uint256": { + "entryPoint": 7677, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_mul_t_uint256": { + "entryPoint": 7616, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 7736, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 7569, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x31": { + "entryPoint": 7889, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 7842, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_address": { + "entryPoint": 7296, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:10186:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "115:125:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "125:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "137:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "148:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "133:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "133:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "125:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "167:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "182:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "190:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "178:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "178:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "160:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "160:74:39" + }, + "nodeType": "YulExpressionStatement", + "src": "160:74:39" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "84:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "95:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "106:4:39", + "type": "" + } + ], + "src": "14:226:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "315:110:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "361:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "370:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "373:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "363:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "363:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "363:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "336:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "345:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "332:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "332:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "357:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "328:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "328:32:39" + }, + "nodeType": "YulIf", + "src": "325:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "386:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "409:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "396:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "396:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "386:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "281:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "292:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "304:6:39", + "type": "" + } + ], + "src": "245:180:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "531:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "541:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "553:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "564:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "549:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "549:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "541:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "583:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "594:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "576:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "576:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "576:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "500:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "511:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "522:4:39", + "type": "" + } + ], + "src": "430:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "699:161:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "745:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "754:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "757:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "747:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "747:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "747:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "720:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "729:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "716:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "716:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "741:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "712:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "712:32:39" + }, + "nodeType": "YulIf", + "src": "709:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "770:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "793:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "780:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "780:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "770:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "812:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "839:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "850:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "835:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "835:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "822:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "822:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "812:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "657:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "668:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "680:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "688:6:39", + "type": "" + } + ], + "src": "612:248:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "935:110:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "981:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "990:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "993:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "983:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "983:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "983:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "956:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "965:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "952:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "952:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "977:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "948:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "948:32:39" + }, + "nodeType": "YulIf", + "src": "945:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "1006:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1029:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1016:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1016:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1006:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "901:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "912:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "924:6:39", + "type": "" + } + ], + "src": "865:180:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1095:109:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1182:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1191:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1194:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1184:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1184:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1184:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1118:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1129:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1136:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1125:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1125:54:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1115:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1115:65:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1108:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1108:73:39" + }, + "nodeType": "YulIf", + "src": "1105:93:39" + } + ] + }, + "name": "validator_revert_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1084:5:39", + "type": "" + } + ], + "src": "1050:154:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1296:228:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1342:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1351:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1354:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1344:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1344:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1344:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1317:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1326:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1313:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1313:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1338:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1309:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1309:32:39" + }, + "nodeType": "YulIf", + "src": "1306:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "1367:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1390:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1377:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1377:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1367:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1409:45:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1439:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1450:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1435:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1435:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1422:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1422:32:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1413:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1488:5:39" + } + ], + "functionName": { + "name": "validator_revert_address", + "nodeType": "YulIdentifier", + "src": "1463:24:39" + }, + "nodeType": "YulFunctionCall", + "src": "1463:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1463:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "1503:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1513:5:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1503:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1254:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1265:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1277:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1285:6:39", + "type": "" + } + ], + "src": "1209:315:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1616:228:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1662:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1671:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1674:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1664:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1664:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1664:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1637:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1646:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1633:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1633:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1658:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1629:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1629:32:39" + }, + "nodeType": "YulIf", + "src": "1626:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1687:36:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1713:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1700:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1700:23:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1691:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1757:5:39" + } + ], + "functionName": { + "name": "validator_revert_address", + "nodeType": "YulIdentifier", + "src": "1732:24:39" + }, + "nodeType": "YulFunctionCall", + "src": "1732:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1732:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "1772:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1782:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1772:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1796:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1823:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1834:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1819:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1819:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1806:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1806:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1796:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1574:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1585:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1597:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1605:6:39", + "type": "" + } + ], + "src": "1529:315:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1950:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1960:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1972:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1983:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1968:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1968:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1960:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2002:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2013:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1995:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1995:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1995:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1919:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1930:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1941:4:39", + "type": "" + } + ], + "src": "1849:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2101:177:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2147:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2156:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2159:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2149:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2149:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2149:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2122:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2131:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2118:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2118:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2143:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2114:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2114:32:39" + }, + "nodeType": "YulIf", + "src": "2111:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2172:36:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2198:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2185:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2185:23:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2176:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2242:5:39" + } + ], + "functionName": { + "name": "validator_revert_address", + "nodeType": "YulIdentifier", + "src": "2217:24:39" + }, + "nodeType": "YulFunctionCall", + "src": "2217:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2217:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "2257:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2267:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2257:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2067:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2078:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2090:6:39", + "type": "" + } + ], + "src": "2031:247:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2387:352:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2433:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2442:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2445:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2435:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2435:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2435:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2408:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2417:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2404:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2404:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2429:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2400:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2400:32:39" + }, + "nodeType": "YulIf", + "src": "2397:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2458:36:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2484:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2471:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2471:23:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2462:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2528:5:39" + } + ], + "functionName": { + "name": "validator_revert_address", + "nodeType": "YulIdentifier", + "src": "2503:24:39" + }, + "nodeType": "YulFunctionCall", + "src": "2503:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2503:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "2543:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2553:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2543:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2567:47:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2599:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2610:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2595:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2595:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2582:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2582:32:39" + }, + "variables": [ + { + "name": "value_1", + "nodeType": "YulTypedName", + "src": "2571:7:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nodeType": "YulIdentifier", + "src": "2648:7:39" + } + ], + "functionName": { + "name": "validator_revert_address", + "nodeType": "YulIdentifier", + "src": "2623:24:39" + }, + "nodeType": "YulFunctionCall", + "src": "2623:33:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2623:33:39" + }, + { + "nodeType": "YulAssignment", + "src": "2665:17:39", + "value": { + "name": "value_1", + "nodeType": "YulIdentifier", + "src": "2675:7:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2665:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2691:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2718:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2729:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2714:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2714:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2701:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2701:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "2691:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2337:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2348:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2360:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2368:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "2376:6:39", + "type": "" + } + ], + "src": "2283:456:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2831:161:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2877:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2886:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2889:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2879:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2879:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2879:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2852:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2861:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2848:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2848:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2873:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2844:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2844:32:39" + }, + "nodeType": "YulIf", + "src": "2841:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "2902:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2925:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2912:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2912:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2902:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2944:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2971:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2982:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2967:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2967:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2954:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2954:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2944:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2789:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2800:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2812:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2820:6:39", + "type": "" + } + ], + "src": "2744:248:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3092:92:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3102:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3114:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3125:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3110:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3110:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3102:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3144:9:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3169:6:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3162:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3162:14:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3155:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3155:22:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3137:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3137:41:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3137:41:39" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3061:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3072:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3083:4:39", + "type": "" + } + ], + "src": "2997:187:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3318:119:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3328:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3340:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3351:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3336:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3336:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3328:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3370:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3381:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3363:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3363:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3363:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3408:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3419:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3404:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3404:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "3424:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3397:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3397:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3397:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3279:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "3290:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3298:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3309:4:39", + "type": "" + } + ], + "src": "3189:248:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3529:301:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3575:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3584:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3587:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3577:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3577:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3577:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3550:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3559:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3546:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3546:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3571:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3542:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3542:32:39" + }, + "nodeType": "YulIf", + "src": "3539:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3600:36:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3626:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3613:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "3613:23:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3604:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3670:5:39" + } + ], + "functionName": { + "name": "validator_revert_address", + "nodeType": "YulIdentifier", + "src": "3645:24:39" + }, + "nodeType": "YulFunctionCall", + "src": "3645:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3645:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "3685:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3695:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3685:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3709:47:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3741:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3752:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3737:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3737:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3724:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "3724:32:39" + }, + "variables": [ + { + "name": "value_1", + "nodeType": "YulTypedName", + "src": "3713:7:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nodeType": "YulIdentifier", + "src": "3790:7:39" + } + ], + "functionName": { + "name": "validator_revert_address", + "nodeType": "YulIdentifier", + "src": "3765:24:39" + }, + "nodeType": "YulFunctionCall", + "src": "3765:33:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3765:33:39" + }, + { + "nodeType": "YulAssignment", + "src": "3807:17:39", + "value": { + "name": "value_1", + "nodeType": "YulIdentifier", + "src": "3817:7:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "3807:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3487:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3498:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3510:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "3518:6:39", + "type": "" + } + ], + "src": "3442:388:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3930:228:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3976:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3985:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3988:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3978:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3978:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3978:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3951:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3960:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3947:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3947:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3972:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3943:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3943:32:39" + }, + "nodeType": "YulIf", + "src": "3940:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4001:36:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4027:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4014:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4014:23:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4005:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4071:5:39" + } + ], + "functionName": { + "name": "validator_revert_address", + "nodeType": "YulIdentifier", + "src": "4046:24:39" + }, + "nodeType": "YulFunctionCall", + "src": "4046:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4046:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "4086:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4096:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4086:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4110:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4137:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4148:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4133:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4133:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4120:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4120:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "4110:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_payablet_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3888:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3899:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3911:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "3919:6:39", + "type": "" + } + ], + "src": "3835:323:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4337:182:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4354:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4365:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4347:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4347:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4347:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4388:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4399:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4384:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4384:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4404:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4377:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4377:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4377:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4427:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4438:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4423:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4423:18:39" + }, + { + "hexValue": "5354414b494e473a3a2043616c6c6572206973206e6f74206120747275737479", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4443:34:39", + "type": "", + "value": "STAKING:: Caller is not a trusty" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4416:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4416:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4416:62:39" + }, + { + "nodeType": "YulAssignment", + "src": "4487:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4499:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4510:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4495:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4495:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4487:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_587c06f0d14b166595b8869cf26c4fdc33e7631ec90c288431be59fa2bd0d92f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4314:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4328:4:39", + "type": "" + } + ], + "src": "4163:356:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4698:249:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4715:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4726:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4708:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4708:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4708:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4749:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4760:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4745:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4745:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4765:2:39", + "type": "", + "value": "59" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4738:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4738:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4738:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4788:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4799:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4784:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4784:18:39" + }, + { + "hexValue": "5354414b494e473a3a77697468647261773a20776974686472617720616d6f75", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4804:34:39", + "type": "", + "value": "STAKING::withdraw: withdraw amou" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4777:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4777:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4777:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4859:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4870:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4855:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4855:18:39" + }, + { + "hexValue": "6e742065786365656473206465706f736974656420616d6f756e74", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4875:29:39", + "type": "", + "value": "nt exceeds deposited amount" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4848:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4848:57:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4848:57:39" + }, + { + "nodeType": "YulAssignment", + "src": "4914:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4926:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4937:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4922:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4922:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4914:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_fc10209334da9e984e6aacdc85fc7b20c056ba7895742868eb7e477d52af7146__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4675:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4689:4:39", + "type": "" + } + ], + "src": "4524:423:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4984:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5001:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5004:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4994:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4994:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4994:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5098:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5101:4:39", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5091:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5091:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5091:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5122:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5125:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5115:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5115:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5115:15:39" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "4952:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5193:176:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5312:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "5314:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "5314:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5314:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "5224:1:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5217:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5217:9:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5210:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5210:17:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "5232:1:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5239:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "5307:1:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "5235:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5235:74:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "5229:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "5229:81:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5206:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5206:105:39" + }, + "nodeType": "YulIf", + "src": "5203:131:39" + }, + { + "nodeType": "YulAssignment", + "src": "5343:20:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "5358:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "5361:1:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5354:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5354:9:39" + }, + "variableNames": [ + { + "name": "product", + "nodeType": "YulIdentifier", + "src": "5343:7:39" + } + ] + } + ] + }, + "name": "checked_mul_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "5172:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "5175:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nodeType": "YulTypedName", + "src": "5181:7:39", + "type": "" + } + ], + "src": "5141:228:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5420:228:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5451:168:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5472:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5475:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5465:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5465:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5465:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5573:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5576:4:39", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5566:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5566:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5566:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5601:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5604:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5594:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5594:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5594:15:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "5440:1:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5433:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5433:9:39" + }, + "nodeType": "YulIf", + "src": "5430:189:39" + }, + { + "nodeType": "YulAssignment", + "src": "5628:14:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "5637:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "5640:1:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "5633:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5633:9:39" + }, + "variableNames": [ + { + "name": "r", + "nodeType": "YulIdentifier", + "src": "5628:1:39" + } + ] + } + ] + }, + "name": "checked_div_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "5405:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "5408:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "r", + "nodeType": "YulTypedName", + "src": "5414:1:39", + "type": "" + } + ], + "src": "5374:274:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5702:76:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5724:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "5726:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "5726:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5726:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "5718:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "5721:1:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "5715:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "5715:8:39" + }, + "nodeType": "YulIf", + "src": "5712:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "5755:17:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "5767:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "5770:1:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5763:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5763:9:39" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "5755:4:39" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "5684:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "5687:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "5693:4:39", + "type": "" + } + ], + "src": "5653:125:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5831:80:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5858:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "5860:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "5860:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5860:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "5847:1:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "5854:1:39" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "5850:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5850:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "5844:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "5844:13:39" + }, + "nodeType": "YulIf", + "src": "5841:39:39" + }, + { + "nodeType": "YulAssignment", + "src": "5889:16:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "5900:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "5903:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5896:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5896:9:39" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "5889:3:39" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "5814:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "5817:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "5823:3:39", + "type": "" + } + ], + "src": "5783:128:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6045:168:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6055:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6067:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6078:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6063:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6063:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6055:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6097:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6112:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6120:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6108:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6108:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6090:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6090:74:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6090:74:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6184:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6195:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6180:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6180:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "6200:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6173:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6173:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6173:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6006:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "6017:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6025:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6036:4:39", + "type": "" + } + ], + "src": "5916:297:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6296:199:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6342:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6351:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6354:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6344:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6344:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6344:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6317:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6326:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6313:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6313:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6338:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "6309:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6309:32:39" + }, + "nodeType": "YulIf", + "src": "6306:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6367:29:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6386:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "6380:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "6380:16:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6371:5:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6449:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6458:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6461:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6451:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6451:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6451:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6418:5:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6439:5:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "6432:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6432:13:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "6425:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6425:21:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "6415:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "6415:32:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "6408:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6408:40:39" + }, + "nodeType": "YulIf", + "src": "6405:60:39" + }, + { + "nodeType": "YulAssignment", + "src": "6474:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6484:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6474:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bool_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6262:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "6273:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6285:6:39", + "type": "" + } + ], + "src": "6218:277:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6674:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6691:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6702:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6684:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6684:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6684:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6725:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6736:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6721:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6721:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6741:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6714:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6714:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6714:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6764:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6775:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6760:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6760:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6780:34:39", + "type": "", + "value": "AccessControl: sender must be an" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6753:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6753:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6753:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6835:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6846:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6831:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6831:18:39" + }, + { + "hexValue": "2061646d696e20746f206772616e74", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6851:17:39", + "type": "", + "value": " admin to grant" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6824:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6824:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6824:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "6878:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6890:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6901:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6886:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6886:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6878:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6651:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6665:4:39", + "type": "" + } + ], + "src": "6500:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7073:241:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7083:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7095:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7106:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7091:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7091:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7083:4:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7118:52:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7128:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "7122:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7186:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7201:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "7209:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "7197:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7197:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7179:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7179:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7179:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7233:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7244:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7229:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7229:18:39" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "7253:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "7261:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "7249:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7249:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7222:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7222:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7222:43:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7285:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7296:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7281:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7281:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "7301:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7274:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7274:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7274:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7026:9:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "7037:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "7045:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "7053:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7064:4:39", + "type": "" + } + ], + "src": "6916:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7493:237:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7510:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7521:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7503:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7503:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7503:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7544:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7555:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7540:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7540:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7560:2:39", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7533:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7533:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7533:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7583:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7594:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7579:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7579:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e6365", + "kind": "string", + "nodeType": "YulLiteral", + "src": "7599:34:39", + "type": "", + "value": "AccessControl: can only renounce" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7572:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7572:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7572:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7654:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7665:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7650:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7650:18:39" + }, + { + "hexValue": "20726f6c657320666f722073656c66", + "kind": "string", + "nodeType": "YulLiteral", + "src": "7670:17:39", + "type": "", + "value": " roles for self" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7643:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7643:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7643:45:39" + }, + { + "nodeType": "YulAssignment", + "src": "7697:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7709:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7720:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7705:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7705:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7697:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7470:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7484:4:39", + "type": "" + } + ], + "src": "7319:411:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7909:254:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7926:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7937:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7919:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7919:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7919:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7960:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7971:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7956:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7956:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7976:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7949:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7949:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7949:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7999:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8010:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7995:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7995:18:39" + }, + { + "hexValue": "5354414b494e473a3a736574526577617264506572426c6f636b3a2043616c6c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "8015:34:39", + "type": "", + "value": "STAKING::setRewardPerBlock: Call" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7988:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7988:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7988:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8070:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8081:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8066:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8066:18:39" + }, + { + "hexValue": "6572206973206e6f74206120726577617264506572426c6f636b536574746572", + "kind": "string", + "nodeType": "YulLiteral", + "src": "8086:34:39", + "type": "", + "value": "er is not a rewardPerBlockSetter" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8059:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8059:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8059:62:39" + }, + { + "nodeType": "YulAssignment", + "src": "8130:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8142:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8153:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8138:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8138:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8130:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_ff1e85932c30521286b05d6756ae02bff4c36af182f9cd76188879e4a82a0ced__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7886:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7900:4:39", + "type": "" + } + ], + "src": "7735:428:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8249:103:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "8295:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8304:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8307:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8297:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8297:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8297:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8270:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8279:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8266:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8266:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8291:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "8262:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8262:32:39" + }, + "nodeType": "YulIf", + "src": "8259:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "8320:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8336:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "8330:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "8330:16:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "8320:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8215:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "8226:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "8238:6:39", + "type": "" + } + ], + "src": "8168:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8486:168:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8496:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8508:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8519:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8504:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8504:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8496:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8538:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "8549:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8531:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8531:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8531:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8576:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8587:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8572:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8572:18:39" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "8596:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8604:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "8592:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8592:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8565:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8565:83:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8565:83:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8447:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "8458:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "8466:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "8477:4:39", + "type": "" + } + ], + "src": "8357:297:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8788:198:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8798:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8810:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8821:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8806:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8806:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8798:4:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8833:52:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8843:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "8837:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8901:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "8916:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "8924:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "8912:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8912:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8894:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8894:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8894:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8948:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8959:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8944:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8944:18:39" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "8968:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "8976:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "8964:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8964:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8937:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8937:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8937:43:39" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8749:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "8760:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "8768:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "8779:4:39", + "type": "" + } + ], + "src": "8659:327:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9165:238:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9182:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9193:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9175:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9175:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9175:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9216:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9227:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9212:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9212:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9232:2:39", + "type": "", + "value": "48" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9205:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9205:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9205:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9255:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9266:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9251:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9251:18:39" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "9271:34:39", + "type": "", + "value": "AccessControl: sender must be an" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9244:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9244:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9244:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9326:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9337:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9322:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9322:18:39" + }, + { + "hexValue": "2061646d696e20746f207265766f6b65", + "kind": "string", + "nodeType": "YulLiteral", + "src": "9342:18:39", + "type": "", + "value": " admin to revoke" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9315:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9315:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9315:46:39" + }, + { + "nodeType": "YulAssignment", + "src": "9370:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9382:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9393:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9378:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9378:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9370:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9142:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "9156:4:39", + "type": "" + } + ], + "src": "8991:412:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9582:224:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9599:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9610:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9592:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9592:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9592:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9633:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9644:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9629:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9629:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9649:2:39", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9622:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9622:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9622:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9672:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9683:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9668:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9668:18:39" + }, + { + "hexValue": "456e756d657261626c655365743a20696e646578206f7574206f6620626f756e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "9688:34:39", + "type": "", + "value": "EnumerableSet: index out of boun" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9661:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9661:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9661:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9743:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9754:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9739:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9739:18:39" + }, + { + "hexValue": "6473", + "kind": "string", + "nodeType": "YulLiteral", + "src": "9759:4:39", + "type": "", + "value": "ds" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9732:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9732:32:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9732:32:39" + }, + { + "nodeType": "YulAssignment", + "src": "9773:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9785:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9796:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9781:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9781:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9773:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9559:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "9573:4:39", + "type": "" + } + ], + "src": "9408:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9843:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9860:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9863:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9853:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9853:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9853:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9957:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9960:4:39", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9950:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9950:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9950:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9981:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9984:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9974:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9974:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9974:15:39" + } + ] + }, + "name": "panic_error_0x32", + "nodeType": "YulFunctionDefinition", + "src": "9811:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10032:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10049:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10052:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10042:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10042:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10042:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10146:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10149:4:39", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10139:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10139:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10139:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10170:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10173:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10163:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10163:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10163:15:39" + } + ] + }, + "name": "panic_error_0x31", + "nodeType": "YulFunctionDefinition", + "src": "10000:184:39" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n let value := calldataload(add(headStart, 32))\n validator_revert_address(value)\n value1 := value\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n }\n function abi_decode_tuple_t_address_payablet_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_stringliteral_587c06f0d14b166595b8869cf26c4fdc33e7631ec90c288431be59fa2bd0d92f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"STAKING:: Caller is not a trusty\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_fc10209334da9e984e6aacdc85fc7b20c056ba7895742868eb7e477d52af7146__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 59)\n mstore(add(headStart, 64), \"STAKING::withdraw: withdraw amou\")\n mstore(add(headStart, 96), \"nt exceeds deposited amount\")\n tail := add(headStart, 128)\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n product := mul(x, y)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"AccessControl: sender must be an\")\n mstore(add(headStart, 96), \" admin to grant\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"AccessControl: can only renounce\")\n mstore(add(headStart, 96), \" roles for self\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_ff1e85932c30521286b05d6756ae02bff4c36af182f9cd76188879e4a82a0ced__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 64)\n mstore(add(headStart, 64), \"STAKING::setRewardPerBlock: Call\")\n mstore(add(headStart, 96), \"er is not a rewardPerBlockSetter\")\n tail := add(headStart, 128)\n }\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_encode_tuple_t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 48)\n mstore(add(headStart, 64), \"AccessControl: sender must be an\")\n mstore(add(headStart, 96), \" admin to revoke\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"EnumerableSet: index out of boun\")\n mstore(add(headStart, 96), \"ds\")\n tail := add(headStart, 128)\n }\n function panic_error_0x32()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function panic_error_0x31()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106102775760003560e01c8063995d9b6011610160578063cc7a262e116100d8578063db2e21bc1161008c578063f51e181a11610071578063f51e181a1461056c578063f7c618c114610575578063f90ce5ba1461059557600080fd5b8063db2e21bc14610551578063f40f0f521461055957600080fd5b8063d3f6a157116100bd578063d3f6a15714610518578063d547741f1461052b578063d79e85671461053e57600080fd5b8063cc7a262e146104e5578063cee66f631461050557600080fd5b8063a87430ba1161012f578063bb872b4a11610114578063bb872b4a146104b6578063ca15c873146104c9578063cb6d8ee6146104dc57600080fd5b8063a87430ba14610467578063b6b55f25146104a357600080fd5b8063995d9b6014610427578063a217fddf14610430578063a2e6204514610438578063a43c7e7e1461044057600080fd5b806352e9c6d4116101f357806388d19f1b116101c25780639010d07c116101a75780639010d07c146103e957806391d14854146103fc5780639378c6d41461041f57600080fd5b806388d19f1b146103d75780638ae39cac146103e057600080fd5b806352e9c6d41461038857806355b8fb811461039b57806360c6cdac146103ae578063698a5897146103b757600080fd5b80632f2ff15d1161024a57806334ddb95d1161022f57806334ddb95d1461034557806336568abe1461036c578063481af4aa1461037f57600080fd5b80632f2ff15d1461031f5780632f4f21e21461033257600080fd5b8063079a57051461027c578063248a9ca3146102c65780632aca3e7d146102f75780632e1a7d4d1461030c575b600080fd5b600a5461029c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6102e96102d4366004611c45565b60009081526020819052604090206002015490565b6040519081526020016102bd565b61030a610305366004611c5e565b61059e565b005b61030a61031a366004611c45565b610683565b61030a61032d366004611ca2565b6108c9565b61030a610340366004611cd2565b61097f565b6102e97f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b61030a61037a366004611ca2565b610b29565b6102e960085481565b61030a610396366004611cfe565b610bd8565b61030a6103a9366004611d22565b610ce1565b6102e960025481565b60095461029c9073ffffffffffffffffffffffffffffffffffffffff1681565b6102e960075481565b6102e960045481565b61029c6103f7366004611c5e565b610e10565b61040f61040a366004611ca2565b610e31565b60405190151581526020016102bd565b61030a610e49565b6102e960065481565b6102e9600081565b61030a610ffc565b6102e97fee33494882c15ef16fd46d90287d1d71c5808d5681b5d0ee0567fbc8f9b0100b81565b61048e610475366004611cfe565b6001602081905260009182526040909120805491015482565b604080519283526020830191909152016102bd565b61030a6104b1366004611c45565b611058565b61030a6104c4366004611c45565b611065565b6102e96104d7366004611c45565b611166565b6102e9600b5481565b600c5461029c9073ffffffffffffffffffffffffffffffffffffffff1681565b61030a610513366004611cfe565b61117d565b61030a610526366004611d63565b611390565b61030a610539366004611ca2565b6114ac565b61030a61054c366004611cd2565b611554565b61030a61162c565b6102e9610567366004611cfe565b611735565b6102e960055481565b600d5461029c9073ffffffffffffffffffffffffffffffffffffffff1681565b6102e960035481565b6105c87f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b610633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f7420612074727573747960448201526064015b60405180910390fd5b61063b610e49565b6007829055600881905560408051838152602081018390527f635fab9ef42704636ceacfc3756d45c820dc77e2b15e0f46d436e9ec6f5a708991015b60405180910390a15050565b3360009081526001602052604090208054821115610723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f5354414b494e473a3a77697468647261773a20776974686472617720616d6f7560448201527f6e742065786365656473206465706f736974656420616d6f756e740000000000606482015260840161062a565b61072b610ffc565b6000816001015460055460025484600001546107479190611dc0565b6107519190611dfd565b61075b9190611e38565b90506107673382611812565b600060055460085460075461077c9190611e4f565b6107869084611dc0565b6107909190611dfd565b9050806006546107a09190611e4f565b600655831561089f5782546107b6908590611e38565b8355600c546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810186905273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb906044016020604051808303816000875af115801561082f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108539190611e67565b5083600b546108629190611e38565b600b5560408051338152602081018690527f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364910160405180910390a15b60055460025484546108b19190611dc0565b6108bb9190611dfd565b836001018190555050505050565b6000828152602081905260409020600201546108e59033610e31565b610971576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e740000000000000000000000000000000000606482015260840161062a565b61097b82826118eb565b5050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090206109ac610ffc565b8054156109f1576000816001015460055460025484600001546109cf9190611dc0565b6109d99190611dfd565b6109e39190611e38565b90506109ef8482611812565b505b80546109fe908390611e4f565b8082556005546002549091610a139190611dc0565b610a1d9190611dfd565b6001820155600c546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810184905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af1158015610a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac39190611e67565b5081600b54610ad29190611e4f565b600b556040805173ffffffffffffffffffffffffffffffffffffffff85168152602081018490527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c910160405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610bce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c660000000000000000000000000000000000606482015260840161062a565b61097b8282611951565b610c027f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b610c68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f74206120747275737479604482015260640161062a565b600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f793c5d6d63836324edea9ae9eb434d37862194427d3060862215257245a0c9299060200160405180910390a150565b610d0b7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b610d71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f74206120747275737479604482015260640161062a565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820183905283169063a9059cbb906044016020604051808303816000875af1158015610de6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0a9190611e67565b50505050565b6000828152602081905260408120610e2890836119b7565b90505b92915050565b6000828152602081905260408120610e2890836119cd565b6000600854600754610e5b9190611e4f565b600754600654610e6b9190611dc0565b610e759190611dfd565b600d546009546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260248101849052929350169063b4f56b2690604401600060405180830381600087803b158015610eed57600080fd5b505af1158015610f01573d6000803e3d6000fd5b505050506000600854600754610f179190611e4f565b600854600654610f279190611dc0565b610f319190611dfd565b600d54600a546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260248101849052929350169063b4f56b2690604401600060405180830381600087803b158015610fa957600080fd5b505af1158015610fbd573d6000803e3d6000fd5b50506000600655505060408051828152602081018490527fd7efc4cdd0ec299514928105db63bae6f4b6734397925b15fe9df3db233ceb519101610677565b600354431161100757565b60006004546003544361101a9190611e38565b6110249190611dc0565b9050600b54600554826110379190611dc0565b6110419190611dfd565b60025461104e9190611e4f565b6002555043600355565b611062338261097f565b50565b61108f7fee33494882c15ef16fd46d90287d1d71c5808d5681b5d0ee0567fbc8f9b0100b33610e31565b61111d57604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f5354414b494e473a3a736574526577617264506572426c6f636b3a2043616c6c60448201527f6572206973206e6f74206120726577617264506572426c6f636b536574746572606482015260840161062a565b611125610ffc565b60045460408051918252602082018390527f79a5349732f93288abbb68e251c3dfc325bf3ee6fde7786d919155d39733e0f5910160405180910390a1600455565b6000818152602081905260408120610e2b90611a0c565b6111a77f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b61120d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f74206120747275737479604482015260640161062a565b600c546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a09190611e89565b6001600b55600c546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015611320573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113449190611e67565b506040805182815273ffffffffffffffffffffffffffffffffffffffff841660208201527f5a13955452e0668a1ad79cebe6a7578b8561b92374f0749286d41c9805b75b429101610677565b6113ba7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b611420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f74206120747275737479604482015260640161062a565b6009805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909355600a80549185169190921681179091556040805192835260208301919091527ff5ce80a04fffb5058766b1d6b907c8b27d37be009f9bd418117cf9fa16dfc9b99101610677565b6000828152602081905260409020600201546114c89033610e31565b610bce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b6500000000000000000000000000000000606482015260840161062a565b61157e7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b6115e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f74206120747275737479604482015260640161062a565b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f19350505050158015611627573d6000803e3d6000fd5b505050565b3360009081526001602052604090208054600b5461164a9190611e38565b600b55600c5481546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481019190915273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb906044016020604051808303816000875af11580156116c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116eb9190611e67565b5080546040805133815260208101929092527f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd9695910160405180910390a16000808255600190910155565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604081206002546003544311156117af5760006004546003544361177a9190611e38565b6117849190611dc0565b9050600b54600554826117979190611dc0565b6117a19190611dfd565b6117ab9083611e4f565b9150505b600182015460055483546117c4908490611dc0565b6117ce9190611dfd565b6117d89190611e38565b949350505050565b6000610e28837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16611a16565b600d546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490529091169063b4f56b2690604401600060405180830381600087803b15801561188657600080fd5b505af115801561189a573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff86168152602081018590527f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f72419350019050610677565b600082815260208190526040902061190390826117e0565b1561097b57604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b60008281526020819052604090206119699082611a65565b1561097b57604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b60006119c38383611a97565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660009081526001830160205260408120541515610e28565b6000610e2b825490565b6000818152600183016020526040812054611a5d57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610e2b565b506000610e2b565b6000610e28837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16611b52565b81546000908210611b2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f6473000000000000000000000000000000000000000000000000000000000000606482015260840161062a565b826000018281548110611b3f57611b3f611ea2565b9060005260206000200154905092915050565b60008181526001830160205260408120548015611c3b576000611b76600183611e38565b8554909150600090611b8a90600190611e38565b90506000866000018281548110611ba357611ba3611ea2565b9060005260206000200154905080876000018481548110611bc657611bc6611ea2565b600091825260209091200155611bdd836001611e4f565b60008281526001890160205260409020558654879080611bff57611bff611ed1565b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610e2b565b6000915050610e2b565b600060208284031215611c5757600080fd5b5035919050565b60008060408385031215611c7157600080fd5b50508035926020909101359150565b73ffffffffffffffffffffffffffffffffffffffff8116811461106257600080fd5b60008060408385031215611cb557600080fd5b823591506020830135611cc781611c80565b809150509250929050565b60008060408385031215611ce557600080fd5b8235611cf081611c80565b946020939093013593505050565b600060208284031215611d1057600080fd5b8135611d1b81611c80565b9392505050565b600080600060608486031215611d3757600080fd5b8335611d4281611c80565b92506020840135611d5281611c80565b929592945050506040919091013590565b60008060408385031215611d7657600080fd5b8235611d8181611c80565b91506020830135611cc781611c80565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611df857611df8611d91565b500290565b600082611e33577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015611e4a57611e4a611d91565b500390565b60008219821115611e6257611e62611d91565b500190565b600060208284031215611e7957600080fd5b81518015158114611d1b57600080fd5b600060208284031215611e9b57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122012956ab11e279b37a46f390efbcb57ea3b3e7d98b6d602a71af5698b75b7d90d64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x277 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x995D9B60 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0xCC7A262E GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xDB2E21BC GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xF51E181A GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xF51E181A EQ PUSH2 0x56C JUMPI DUP1 PUSH4 0xF7C618C1 EQ PUSH2 0x575 JUMPI DUP1 PUSH4 0xF90CE5BA EQ PUSH2 0x595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xDB2E21BC EQ PUSH2 0x551 JUMPI DUP1 PUSH4 0xF40F0F52 EQ PUSH2 0x559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xD3F6A157 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xD3F6A157 EQ PUSH2 0x518 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x52B JUMPI DUP1 PUSH4 0xD79E8567 EQ PUSH2 0x53E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCC7A262E EQ PUSH2 0x4E5 JUMPI DUP1 PUSH4 0xCEE66F63 EQ PUSH2 0x505 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA87430BA GT PUSH2 0x12F JUMPI DUP1 PUSH4 0xBB872B4A GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xBB872B4A EQ PUSH2 0x4B6 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x4C9 JUMPI DUP1 PUSH4 0xCB6D8EE6 EQ PUSH2 0x4DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA87430BA EQ PUSH2 0x467 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x995D9B60 EQ PUSH2 0x427 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x430 JUMPI DUP1 PUSH4 0xA2E62045 EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0xA43C7E7E EQ PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52E9C6D4 GT PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x88D19F1B GT PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x9010D07C GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x3E9 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x3FC JUMPI DUP1 PUSH4 0x9378C6D4 EQ PUSH2 0x41F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x88D19F1B EQ PUSH2 0x3D7 JUMPI DUP1 PUSH4 0x8AE39CAC EQ PUSH2 0x3E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52E9C6D4 EQ PUSH2 0x388 JUMPI DUP1 PUSH4 0x55B8FB81 EQ PUSH2 0x39B JUMPI DUP1 PUSH4 0x60C6CDAC EQ PUSH2 0x3AE JUMPI DUP1 PUSH4 0x698A5897 EQ PUSH2 0x3B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D GT PUSH2 0x24A JUMPI DUP1 PUSH4 0x34DDB95D GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x34DDB95D EQ PUSH2 0x345 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x36C JUMPI DUP1 PUSH4 0x481AF4AA EQ PUSH2 0x37F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x31F JUMPI DUP1 PUSH4 0x2F4F21E2 EQ PUSH2 0x332 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x79A5705 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x2C6 JUMPI DUP1 PUSH4 0x2ACA3E7D EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x30C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xA SLOAD PUSH2 0x29C SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2E9 PUSH2 0x2D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C45 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2BD JUMP JUMPDEST PUSH2 0x30A PUSH2 0x305 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C5E JUMP JUMPDEST PUSH2 0x59E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x30A PUSH2 0x31A CALLDATASIZE PUSH1 0x4 PUSH2 0x1C45 JUMP JUMPDEST PUSH2 0x683 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x32D CALLDATASIZE PUSH1 0x4 PUSH2 0x1CA2 JUMP JUMPDEST PUSH2 0x8C9 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x340 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CD2 JUMP JUMPDEST PUSH2 0x97F JUMP JUMPDEST PUSH2 0x2E9 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C DUP2 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x37A CALLDATASIZE PUSH1 0x4 PUSH2 0x1CA2 JUMP JUMPDEST PUSH2 0xB29 JUMP JUMPDEST PUSH2 0x2E9 PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x396 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CFE JUMP JUMPDEST PUSH2 0xBD8 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x3A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D22 JUMP JUMPDEST PUSH2 0xCE1 JUMP JUMPDEST PUSH2 0x2E9 PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x29C SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x2E9 PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2E9 PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x29C PUSH2 0x3F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C5E JUMP JUMPDEST PUSH2 0xE10 JUMP JUMPDEST PUSH2 0x40F PUSH2 0x40A CALLDATASIZE PUSH1 0x4 PUSH2 0x1CA2 JUMP JUMPDEST PUSH2 0xE31 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2BD JUMP JUMPDEST PUSH2 0x30A PUSH2 0xE49 JUMP JUMPDEST PUSH2 0x2E9 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2E9 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x30A PUSH2 0xFFC JUMP JUMPDEST PUSH2 0x2E9 PUSH32 0xEE33494882C15EF16FD46D90287D1D71C5808D5681B5D0EE0567FBC8F9B0100B DUP2 JUMP JUMPDEST PUSH2 0x48E PUSH2 0x475 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CFE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP2 ADD SLOAD DUP3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x2BD JUMP JUMPDEST PUSH2 0x30A PUSH2 0x4B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C45 JUMP JUMPDEST PUSH2 0x1058 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x4C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C45 JUMP JUMPDEST PUSH2 0x1065 JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0x4D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C45 JUMP JUMPDEST PUSH2 0x1166 JUMP JUMPDEST PUSH2 0x2E9 PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH2 0x29C SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x513 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CFE JUMP JUMPDEST PUSH2 0x117D JUMP JUMPDEST PUSH2 0x30A PUSH2 0x526 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D63 JUMP JUMPDEST PUSH2 0x1390 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x539 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CA2 JUMP JUMPDEST PUSH2 0x14AC JUMP JUMPDEST PUSH2 0x30A PUSH2 0x54C CALLDATASIZE PUSH1 0x4 PUSH2 0x1CD2 JUMP JUMPDEST PUSH2 0x1554 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x162C JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0x567 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CFE JUMP JUMPDEST PUSH2 0x1735 JUMP JUMPDEST PUSH2 0x2E9 PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x29C SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x2E9 PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x5C8 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0xE31 JUMP JUMPDEST PUSH2 0x633 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354414B494E473A3A2043616C6C6572206973206E6F74206120747275737479 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x63B PUSH2 0xE49 JUMP JUMPDEST PUSH1 0x7 DUP3 SWAP1 SSTORE PUSH1 0x8 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH32 0x635FAB9EF42704636CEACFC3756D45C820DC77E2B15E0F46D436E9EC6F5A7089 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 GT ISZERO PUSH2 0x723 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354414B494E473A3A77697468647261773A20776974686472617720616D6F75 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E742065786365656473206465706F736974656420616D6F756E740000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x62A JUMP JUMPDEST PUSH2 0x72B PUSH2 0xFFC JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 ADD SLOAD PUSH1 0x5 SLOAD PUSH1 0x2 SLOAD DUP5 PUSH1 0x0 ADD SLOAD PUSH2 0x747 SWAP2 SWAP1 PUSH2 0x1DC0 JUMP JUMPDEST PUSH2 0x751 SWAP2 SWAP1 PUSH2 0x1DFD JUMP JUMPDEST PUSH2 0x75B SWAP2 SWAP1 PUSH2 0x1E38 JUMP JUMPDEST SWAP1 POP PUSH2 0x767 CALLER DUP3 PUSH2 0x1812 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0x8 SLOAD PUSH1 0x7 SLOAD PUSH2 0x77C SWAP2 SWAP1 PUSH2 0x1E4F JUMP JUMPDEST PUSH2 0x786 SWAP1 DUP5 PUSH2 0x1DC0 JUMP JUMPDEST PUSH2 0x790 SWAP2 SWAP1 PUSH2 0x1DFD JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x6 SLOAD PUSH2 0x7A0 SWAP2 SWAP1 PUSH2 0x1E4F JUMP JUMPDEST PUSH1 0x6 SSTORE DUP4 ISZERO PUSH2 0x89F JUMPI DUP3 SLOAD PUSH2 0x7B6 SWAP1 DUP6 SWAP1 PUSH2 0x1E38 JUMP JUMPDEST DUP4 SSTORE PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x82F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x853 SWAP2 SWAP1 PUSH2 0x1E67 JUMP JUMPDEST POP DUP4 PUSH1 0xB SLOAD PUSH2 0x862 SWAP2 SWAP1 PUSH2 0x1E38 JUMP JUMPDEST PUSH1 0xB SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE PUSH32 0x884EDAD9CE6FA2440D8A54CC123490EB96D2768479D49FF9C7366125A9424364 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x2 SLOAD DUP5 SLOAD PUSH2 0x8B1 SWAP2 SWAP1 PUSH2 0x1DC0 JUMP JUMPDEST PUSH2 0x8BB SWAP2 SWAP1 PUSH2 0x1DFD JUMP JUMPDEST DUP4 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x8E5 SWAP1 CALLER PUSH2 0xE31 JUMP JUMPDEST PUSH2 0x971 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F206772616E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x62A JUMP JUMPDEST PUSH2 0x97B DUP3 DUP3 PUSH2 0x18EB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x9AC PUSH2 0xFFC JUMP JUMPDEST DUP1 SLOAD ISZERO PUSH2 0x9F1 JUMPI PUSH1 0x0 DUP2 PUSH1 0x1 ADD SLOAD PUSH1 0x5 SLOAD PUSH1 0x2 SLOAD DUP5 PUSH1 0x0 ADD SLOAD PUSH2 0x9CF SWAP2 SWAP1 PUSH2 0x1DC0 JUMP JUMPDEST PUSH2 0x9D9 SWAP2 SWAP1 PUSH2 0x1DFD JUMP JUMPDEST PUSH2 0x9E3 SWAP2 SWAP1 PUSH2 0x1E38 JUMP JUMPDEST SWAP1 POP PUSH2 0x9EF DUP5 DUP3 PUSH2 0x1812 JUMP JUMPDEST POP JUMPDEST DUP1 SLOAD PUSH2 0x9FE SWAP1 DUP4 SWAP1 PUSH2 0x1E4F JUMP JUMPDEST DUP1 DUP3 SSTORE PUSH1 0x5 SLOAD PUSH1 0x2 SLOAD SWAP1 SWAP2 PUSH2 0xA13 SWAP2 SWAP1 PUSH2 0x1DC0 JUMP JUMPDEST PUSH2 0xA1D SWAP2 SWAP1 PUSH2 0x1DFD JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA9F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAC3 SWAP2 SWAP1 PUSH2 0x1E67 JUMP JUMPDEST POP DUP2 PUSH1 0xB SLOAD PUSH2 0xAD2 SWAP2 SWAP1 PUSH2 0x1E4F JUMP JUMPDEST PUSH1 0xB SSTORE PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ PUSH2 0xBCE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x62A JUMP JUMPDEST PUSH2 0x97B DUP3 DUP3 PUSH2 0x1951 JUMP JUMPDEST PUSH2 0xC02 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0xE31 JUMP JUMPDEST PUSH2 0xC68 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354414B494E473A3A2043616C6C6572206973206E6F74206120747275737479 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x62A JUMP JUMPDEST PUSH1 0xC DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x793C5D6D63836324EDEA9AE9EB434D37862194427D3060862215257245A0C929 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xD0B PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0xE31 JUMP JUMPDEST PUSH2 0xD71 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354414B494E473A3A2043616C6C6572206973206E6F74206120747275737479 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x62A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE DUP4 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDE6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE0A SWAP2 SWAP1 PUSH2 0x1E67 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xE28 SWAP1 DUP4 PUSH2 0x19B7 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xE28 SWAP1 DUP4 PUSH2 0x19CD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x7 SLOAD PUSH2 0xE5B SWAP2 SWAP1 PUSH2 0x1E4F JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x6 SLOAD PUSH2 0xE6B SWAP2 SWAP1 PUSH2 0x1DC0 JUMP JUMPDEST PUSH2 0xE75 SWAP2 SWAP1 PUSH2 0x1DFD JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE SWAP3 SWAP4 POP AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF01 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x7 SLOAD PUSH2 0xF17 SWAP2 SWAP1 PUSH2 0x1E4F JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x6 SLOAD PUSH2 0xF27 SWAP2 SWAP1 PUSH2 0x1DC0 JUMP JUMPDEST PUSH2 0xF31 SWAP2 SWAP1 PUSH2 0x1DFD JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE SWAP3 SWAP4 POP AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFBD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x0 PUSH1 0x6 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE PUSH32 0xD7EFC4CDD0EC299514928105DB63BAE6F4B6734397925B15FE9DF3DB233CEB51 SWAP2 ADD PUSH2 0x677 JUMP JUMPDEST PUSH1 0x3 SLOAD NUMBER GT PUSH2 0x1007 JUMPI JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0x3 SLOAD NUMBER PUSH2 0x101A SWAP2 SWAP1 PUSH2 0x1E38 JUMP JUMPDEST PUSH2 0x1024 SWAP2 SWAP1 PUSH2 0x1DC0 JUMP JUMPDEST SWAP1 POP PUSH1 0xB SLOAD PUSH1 0x5 SLOAD DUP3 PUSH2 0x1037 SWAP2 SWAP1 PUSH2 0x1DC0 JUMP JUMPDEST PUSH2 0x1041 SWAP2 SWAP1 PUSH2 0x1DFD JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x104E SWAP2 SWAP1 PUSH2 0x1E4F JUMP JUMPDEST PUSH1 0x2 SSTORE POP NUMBER PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH2 0x1062 CALLER DUP3 PUSH2 0x97F JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x108F PUSH32 0xEE33494882C15EF16FD46D90287D1D71C5808D5681B5D0EE0567FBC8F9B0100B CALLER PUSH2 0xE31 JUMP JUMPDEST PUSH2 0x111D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x5354414B494E473A3A736574526577617264506572426C6F636B3A2043616C6C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6572206973206E6F74206120726577617264506572426C6F636B536574746572 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x62A JUMP JUMPDEST PUSH2 0x1125 PUSH2 0xFFC JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x79A5349732F93288ABBB68E251C3DFC325BF3EE6FDE7786D919155D39733E0F5 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xE2B SWAP1 PUSH2 0x1A0C JUMP JUMPDEST PUSH2 0x11A7 PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0xE31 JUMP JUMPDEST PUSH2 0x120D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354414B494E473A3A2043616C6C6572206973206E6F74206120747275737479 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x62A JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x127C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12A0 SWAP2 SWAP1 PUSH2 0x1E89 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xB SSTORE PUSH1 0xC SLOAD PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE SWAP3 SWAP4 POP SWAP2 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1320 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1344 SWAP2 SWAP1 PUSH2 0x1E67 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x5A13955452E0668A1AD79CEBE6A7578B8561B92374F0749286D41C9805B75B42 SWAP2 ADD PUSH2 0x677 JUMP JUMPDEST PUSH2 0x13BA PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0xE31 JUMP JUMPDEST PUSH2 0x1420 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354414B494E473A3A2043616C6C6572206973206E6F74206120747275737479 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x62A JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0xA DUP1 SLOAD SWAP2 DUP6 AND SWAP2 SWAP1 SWAP3 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xF5CE80A04FFFB5058766B1D6B907C8B27D37BE009F9BD418117CF9FA16DFC9B9 SWAP2 ADD PUSH2 0x677 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x14C8 SWAP1 CALLER PUSH2 0xE31 JUMP JUMPDEST PUSH2 0xBCE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2073656E646572206D75737420626520616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2061646D696E20746F207265766F6B6500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x62A JUMP JUMPDEST PUSH2 0x157E PUSH32 0xDB189261133FD7647D3308512B693B47BED44004CAC80FB59AA64B63A231E2C CALLER PUSH2 0xE31 JUMP JUMPDEST PUSH2 0x15E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5354414B494E473A3A2043616C6C6572206973206E6F74206120747275737479 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x62A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP3 ISZERO PUSH2 0x8FC MUL SWAP1 DUP4 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1627 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xB SLOAD PUSH2 0x164A SWAP2 SWAP1 PUSH2 0x1E38 JUMP JUMPDEST PUSH1 0xB SSTORE PUSH1 0xC SLOAD DUP2 SLOAD PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16EB SWAP2 SWAP1 PUSH2 0x1E67 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0x5FAFA99D0643513820BE26656B45130B01E1C03062E1266BF36F88CBD3BD9695 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x0 DUP1 DUP3 SSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 SLOAD PUSH1 0x3 SLOAD NUMBER GT ISZERO PUSH2 0x17AF JUMPI PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0x3 SLOAD NUMBER PUSH2 0x177A SWAP2 SWAP1 PUSH2 0x1E38 JUMP JUMPDEST PUSH2 0x1784 SWAP2 SWAP1 PUSH2 0x1DC0 JUMP JUMPDEST SWAP1 POP PUSH1 0xB SLOAD PUSH1 0x5 SLOAD DUP3 PUSH2 0x1797 SWAP2 SWAP1 PUSH2 0x1DC0 JUMP JUMPDEST PUSH2 0x17A1 SWAP2 SWAP1 PUSH2 0x1DFD JUMP JUMPDEST PUSH2 0x17AB SWAP1 DUP4 PUSH2 0x1E4F JUMP JUMPDEST SWAP2 POP POP JUMPDEST PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x5 SLOAD DUP4 SLOAD PUSH2 0x17C4 SWAP1 DUP5 SWAP1 PUSH2 0x1DC0 JUMP JUMPDEST PUSH2 0x17CE SWAP2 SWAP1 PUSH2 0x1DFD JUMP JUMPDEST PUSH2 0x17D8 SWAP2 SWAP1 PUSH2 0x1E38 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE28 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x1A16 JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4F56B2600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0xB4F56B26 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1886 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x189A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE PUSH32 0x106F923F993C2149D49B4255FF723ACAFA1F2D94393F561D3EDA32AE348F7241 SWAP4 POP ADD SWAP1 POP PUSH2 0x677 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1903 SWAP1 DUP3 PUSH2 0x17E0 JUMP JUMPDEST ISZERO PUSH2 0x97B JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1969 SWAP1 DUP3 PUSH2 0x1A65 JUMP JUMPDEST ISZERO PUSH2 0x97B JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP5 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 PUSH1 0x0 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19C3 DUP4 DUP4 PUSH2 0x1A97 JUMP JUMPDEST PUSH1 0x60 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 SWAP1 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD ISZERO ISZERO PUSH2 0xE28 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE2B DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x1A5D 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 0xE2B JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xE2B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE28 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH2 0x1B52 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x1B2A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456E756D657261626C655365743A20696E646578206F7574206F6620626F756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6473000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x62A JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1B3F JUMPI PUSH2 0x1B3F PUSH2 0x1EA2 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x1C3B JUMPI PUSH1 0x0 PUSH2 0x1B76 PUSH1 0x1 DUP4 PUSH2 0x1E38 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1B8A SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x1E38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1BA3 JUMPI PUSH2 0x1BA3 PUSH2 0x1EA2 JUMP 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 0x1BC6 JUMPI PUSH2 0x1BC6 PUSH2 0x1EA2 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH2 0x1BDD DUP4 PUSH1 0x1 PUSH2 0x1E4F JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x1BFF JUMPI PUSH2 0x1BFF PUSH2 0x1ED1 JUMP 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 0xE2B JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0xE2B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1C71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1062 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1CB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1CC7 DUP2 PUSH2 0x1C80 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1CE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1CF0 DUP2 PUSH2 0x1C80 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1D1B DUP2 PUSH2 0x1C80 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1D37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1D42 DUP2 PUSH2 0x1C80 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1D52 DUP2 PUSH2 0x1C80 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1D76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1D81 DUP2 PUSH2 0x1C80 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1CC7 DUP2 PUSH2 0x1C80 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x1DF8 JUMPI PUSH2 0x1DF8 PUSH2 0x1D91 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1E33 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x1E4A JUMPI PUSH2 0x1E4A PUSH2 0x1D91 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1E62 JUMPI PUSH2 0x1E62 PUSH2 0x1D91 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1E79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1D1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1E9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT SWAP6 PUSH11 0xB11E279B37A46F390EFBCB JUMPI 0xEA EXTCODESIZE RETURNDATACOPY PUSH30 0x98B6D602A71AF5698B75B7D90D64736F6C634300080A0033000000000000 ", + "sourceMap": "1673:7698:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2087:34;;;;;;;;;;;;190:42:39;178:55;;;160:74;;148:2;133:18;2087:34:27;;;;;;;;4347:112:20;;;;;;:::i;:::-;4404:7;4430:12;;;;;;;;;;:22;;;;4347:112;;;;576:25:39;;;564:2;549:18;4347:112:20;430:177:39;8182:241:27;;;;;;:::i;:::-;;:::i;:::-;;5044:806;;;;;;:::i;:::-;;:::i;4709:223:20:-;;;;;;:::i;:::-;;:::i;4480:561:27:-;;;;;;:::i;:::-;;:::i;2366:62::-;;2404:24;2366:62;;5883:205:20;;;;;;:::i;:::-;;:::i;2024:33:27:-;;;;;;7555:138;;;;;;:::i;:::-;;:::i;7696:139::-;;;;;;:::i;:::-;;:::i;1819:40::-;;;;;;2060:24;;;;;;;;;1998:23;;;;;;1896:29;;;;;;4030:136:20;;;;;;:::i;:::-;;:::i;3015:137::-;;;;;;:::i;:::-;;:::i;:::-;;;3162:14:39;;3155:22;3137:41;;3125:2;3110:18;3015:137:20;2997:187:39;5853:476:27;;;:::i;1959:36::-;;;;;;1722:49:20;;1767:4;1722:49;;4101:293:27;;;:::i;2277:86::-;;2327:36;2277:86;;1777:38;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;3363:25:39;;;3419:2;3404:18;;3397:34;;;;3336:18;1777:38:27;3189:248:39;4397:80:27;;;;;;:::i;:::-;;:::i;8426:301::-;;;;;;:::i;:::-;;:::i;3320:125:20:-;;;;;;:::i;:::-;;:::i;2124:35:27:-;;;;;;2218:26;;;;;;;;;7275:277;;;;;;:::i;:::-;;:::i;7959:220::-;;;;;;:::i;:::-;;:::i;5166:226:20:-;;;;;;:::i;:::-;;:::i;7837:119:27:-;;;;;;:::i;:::-;;:::i;6391:317::-;;;:::i;3534:459::-;;;;;;:::i;:::-;;:::i;1928:27::-;;;;;;2247:26;;;;;;;;;1862:31;;;;;;8182:241;3364:32;2404:24;3385:10;3364:7;:32::i;:::-;3356:77;;;;;;;4365:2:39;3356:77:27;;;4347:21:39;;;4384:18;;;4377:30;4443:34;4423:18;;;4416:62;4495:18;;3356:77:27;;;;;;;;;8273:27:::1;:25;:27::i;:::-;8304:8;:20:::0;;;8328:18:::1;:40:::0;;;8378:41:::1;::::0;;3363:25:39;;;3419:2;3404:18;;3397:34;;;8378:41:27::1;::::0;3336:18:39;8378:41:27::1;;;;;;;;8182:241:::0;;:::o;5044:806::-;5117:10;5091:17;5111;;;:5;:17;;;;;5140:18;;:28;-1:-1:-1;5140:28:27;5132:100;;;;;;;4726:2:39;5132:100:27;;;4708:21:39;4765:2;4745:18;;;4738:30;4804:34;4784:18;;;4777:62;4875:29;4855:18;;;4848:57;4922:19;;5132:100:27;4524:423:39;5132:100:27;5236:8;:6;:8::i;:::-;5249:22;5329:4;:15;;;5320:5;;5296:21;;5275:4;:18;;;:42;;;;:::i;:::-;:50;;;;:::i;:::-;5274:70;;;;:::i;:::-;5249:95;;5348:38;5359:10;5371:14;5348:10;:38::i;:::-;5391:30;5475:5;;5453:18;;5442:8;;:29;;;;:::i;:::-;5424:48;;:14;:48;:::i;:::-;:56;;;;:::i;:::-;5391:89;;5524:22;5504:17;;:42;;;;:::i;:::-;5484:17;:62;5555:10;;5551:223;;5593:18;;:27;;5614:6;;5593:27;:::i;:::-;5572:48;;5632:11;;5625:57;;;;;5662:10;5625:57;;;6090:74:39;6180:18;;;6173:34;;;5632:11:27;;;;;5625:28;;6063:18:39;;5625:57:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5725:6;5706:16;;:25;;;;:::i;:::-;5687:16;:44;5741:28;;;5750:10;6090:74:39;;6195:2;6180:18;;6173:34;;;5741:28:27;;6063:18:39;5741:28:27;;;;;;;5551:223;5841:5;;5817:21;;5796:18;;:42;;5817:21;5796:42;:::i;:::-;:50;;;;:::i;:::-;5778:4;:15;;:68;;;;5087:763;;;5044:806;:::o;4709:223:20:-;4800:6;:12;;;;;;;;;;:22;;;4792:45;;686:10:4;3015:137:20;:::i;4792:45::-;4784:105;;;;;;;6702:2:39;4784:105:20;;;6684:21:39;6741:2;6721:18;;;6714:30;6780:34;6760:18;;;6753:62;6851:17;6831:18;;;6824:45;6886:19;;4784:105:20;6500:411:39;4784:105:20;4900:25;4911:4;4917:7;4900:10;:25::i;:::-;4709:223;;:::o;4480:561:27:-;4562:12;;;4542:17;4562:12;;;:5;:12;;;;;4578:8;:6;:8::i;:::-;4595:18;;:22;4591:171;;4624:22;4704:4;:15;;;4695:5;;4671:21;;4650:4;:18;;;:42;;;;:::i;:::-;:50;;;;:::i;:::-;4649:70;;;;:::i;:::-;4624:95;;4724:33;4735:5;4742:14;4724:10;:33::i;:::-;4619:143;4591:171;4787:18;;:27;;4808:6;;4787:27;:::i;:::-;4766:48;;;4881:5;;4857:21;;4881:5;;4836:42;;4857:21;4836:42;:::i;:::-;:50;;;;:::i;:::-;4818:15;;;:68;4898:11;;4891:67;;;;;4924:10;4891:67;;;7179:34:39;4944:4:27;7229:18:39;;;7222:43;7281:18;;;7274:34;;;4898:11:27;;;;;4891:32;;7091:18:39;;4891:67:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5000:6;4981:16;;:25;;;;:::i;:::-;4962:16;:44;5015:22;;;6120:42:39;6108:55;;6090:74;;6195:2;6180:18;;6173:34;;;5015:22:27;;6063:18:39;5015:22:27;;;;;;;4538:503;4480:561;;:::o;5883:205:20:-;5969:23;;;686:10:4;5969:23:20;5961:83;;;;;;;7521:2:39;5961:83:20;;;7503:21:39;7560:2;7540:18;;;7533:30;7599:34;7579:18;;;7572:62;7670:17;7650:18;;;7643:45;7705:19;;5961:83:20;7319:411:39;5961:83:20;6055:26;6067:4;6073:7;6055:11;:26::i;7555:138:27:-;3364:32;2404:24;3385:10;3364:7;:32::i;:::-;3356:77;;;;;;;4365:2:39;3356:77:27;;;4347:21:39;;;4384:18;;;4377:30;4443:34;4423:18;;;4416:62;4495:18;;3356:77:27;4163:356:39;3356:77:27;7625:11:::1;:26:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;7661:28:::1;::::0;160:74:39;;;7661:28:27::1;::::0;148:2:39;133:18;7661:28:27::1;;;;;;;7555:138:::0;:::o;7696:139::-;3364:32;2404:24;3385:10;3364:7;:32::i;:::-;3356:77;;;;;;;4365:2:39;3356:77:27;;;4347:21:39;;;4384:18;;;4377:30;4443:34;4423:18;;;4416:62;4495:18;;3356:77:27;4163:356:39;3356:77:27;7796:35:::1;::::0;;;;:23:::1;6108:55:39::0;;;7796:35:27::1;::::0;::::1;6090:74:39::0;6180:18;;;6173:34;;;7796:23:27;::::1;::::0;::::1;::::0;6063:18:39;;7796:35:27::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7696:139:::0;;;:::o;4030:136:20:-;4103:7;4129:12;;;;;;;;;;:30;;4153:5;4129:23;:30::i;:::-;4122:37;;4030:136;;;;;:::o;3015:137::-;3084:4;3107:12;;;;;;;;;;:38;;3137:7;3107:29;:38::i;5853:476:27:-;5901:17;5964:18;;5953:8;;:29;;;;:::i;:::-;5941:8;;5921:17;;:28;;;;:::i;:::-;:62;;;;:::i;:::-;5997:11;;6020:9;;5987:54;;;;;5997:11;6020:9;;;5987:54;;;6090:74:39;6180:18;;;6173:34;;;5901:82:27;;-1:-1:-1;5997:11:27;;5987:32;;6063:18:39;;5987:54:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6046:27;6129:18;;6118:8;;:29;;;;:::i;:::-;6096:18;;6076:17;;:38;;;;:::i;:::-;:72;;;;:::i;:::-;6162:11;;6185:19;;6152:74;;;;;6162:11;6185:19;;;6152:74;;;6090::39;6180:18;;;6173:34;;;6046:102:27;;-1:-1:-1;6162:11:27;;6152:32;;6063:18:39;;6152:74:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6251:1:27;6231:17;:21;-1:-1:-1;;6262:63:27;;;3363:25:39;;;3419:2;3404:18;;3397:34;;;6262:63:27;;3336:18:39;6262:63:27;3189:248:39;4101:293:27;4150:16;;4134:12;:32;4130:54;;4101:293::o;4130:54::-;4188:20;4247:14;;4227:16;;4212:12;:31;;;;:::i;:::-;4211:50;;;;:::i;:::-;4188:73;;4338:16;;4330:5;;4315:12;:20;;;;:::i;:::-;:39;;;;:::i;:::-;4290:21;;:65;;;;:::i;:::-;4266:21;:89;-1:-1:-1;4378:12:27;4359:16;:31;4101:293::o;4397:80::-;4443:30;4454:10;4466:6;4443:10;:30::i;:::-;4397:80;:::o;8426:301::-;8499:44;2327:36;8532:10;8499:7;:44::i;:::-;8491:121;;;;;;;;7937:2:39;8491:121:27;;;7919:21:39;7956:18;;;7949:30;;;;8015:34;7995:18;;;7988:62;8086:34;8066:18;;;8059:62;8138:19;;8491:121:27;7735:428:39;8491:121:27;8616:8;:6;:8::i;:::-;8655:14;;8633:54;;;3363:25:39;;;3419:2;3404:18;;3397:34;;;8633:54:27;;3336:18:39;8633:54:27;;;;;;;8691:14;:32;8426:301::o;3320:125:20:-;3383:7;3409:12;;;;;;;;;;:29;;:27;:29::i;7275:277:27:-;3364:32;2404:24;3385:10;3364:7;:32::i;:::-;3356:77;;;;;;;4365:2:39;3356:77:27;;;4347:21:39;;;4384:18;;;4377:30;4443:34;4423:18;;;4416:62;4495:18;;3356:77:27;4163:356:39;3356:77:27;7379:11:::1;::::0;7372:44:::1;::::0;;;;7410:4:::1;7372:44;::::0;::::1;160:74:39::0;7344:25:27::1;::::0;7379:11:::1;;::::0;7372:29:::1;::::0;133:18:39;;7372:44:27::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7439:1;7420:16;:20:::0;7451:11:::1;::::0;7444:51:::1;::::0;;;;7451:11:::1;6108:55:39::0;;;7444:51:27::1;::::0;::::1;6090:74:39::0;6180:18;;;6173:34;;;7344:72:27;;-1:-1:-1;7451:11:27;::::1;::::0;7444:28:::1;::::0;6063:18:39;;7444:51:27::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;7505:43:27::1;::::0;;8531:25:39;;;8604:42;8592:55;;8587:2;8572:18;;8565:83;7505:43:27::1;::::0;8504:18:39;7505:43:27::1;8357:297:39::0;7959:220:27;3364:32;2404:24;3385:10;3364:7;:32::i;:::-;3356:77;;;;;;;4365:2:39;3356:77:27;;;4347:21:39;;;4384:18;;;4377:30;4443:34;4423:18;;;4416:62;4495:18;;3356:77:27;4163:356:39;3356:77:27;8053:9:::1;:22:::0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;8079:19:::1;:42:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;8131:44:::1;::::0;;8894:34:39;;;8959:2;8944:18;;8937:43;;;;8131:44:27::1;::::0;8806:18:39;8131:44:27::1;8659:327:39::0;5166:226:20;5258:6;:12;;;;;;;;;;:22;;;5250:45;;686:10:4;3015:137:20;:::i;5250:45::-;5242:106;;;;;;;9193:2:39;5242:106:20;;;9175:21:39;9232:2;9212:18;;;9205:30;9271:34;9251:18;;;9244:62;9342:18;9322;;;9315:46;9378:19;;5242:106:20;8991:412:39;7837:119:27;3364:32;2404:24;3385:10;3364:7;:32::i;:::-;3356:77;;;;;;;4365:2:39;3356:77:27;;;4347:21:39;;;4384:18;;;4377:30;4443:34;4423:18;;;4416:62;4495:18;;3356:77:27;4163:356:39;3356:77:27;7924:28:::1;::::0;:20:::1;::::0;::::1;::::0;:28;::::1;;;::::0;7945:6;;7924:28:::1;::::0;;;7945:6;7924:20;:28;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;7837:119:::0;;:::o;6391:317::-;6459:10;6433:17;6453;;;:5;:17;;;;;6513:18;;6494:16;;:37;;6513:18;6494:37;:::i;:::-;6475:16;:56;6543:11;;6577:18;;6536:60;;;;;6565:10;6536:60;;;6090:74:39;6180:18;;;6173:34;;;;6543:11:27;;;;;6536:28;;6063:18:39;;6536:60:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6635:18:27;;6605:49;;;6623:10;6090:74:39;;6195:2;6180:18;;6173:34;;;;6605:49:27;;6063:18:39;6605:49:27;;;;;;;6680:1;6659:22;;;6685:15;;;;:19;6391:317::o;3534:459::-;3635:12;;;3595:14;3635:12;;;:5;:12;;;;;3679:21;;3724:16;;3709:12;:31;3705:206;;;3747:20;3806:14;;3786:16;;3771:12;:31;;;;:::i;:::-;3770:50;;;;:::i;:::-;3747:73;;3889:16;;3881:5;;3866:12;:20;;;;:::i;:::-;:39;;;;:::i;:::-;3845:61;;:17;:61;:::i;:::-;3825:81;;3742:169;3705:206;3974:15;;;;3965:5;;3924:18;;:38;;3945:17;;3924:38;:::i;:::-;:46;;;;:::i;:::-;3923:66;;;;:::i;:::-;3914:75;3534:459;-1:-1:-1;;;;3534:459:27:o;4866:141:38:-;4936:4;4959:41;4964:3;4976:23;4984:14;;;;4976:23;4959:4;:41::i;6711:331:27:-;6966:11;;6956:46;;;;;6966:11;6108:55:39;;;6956:46:27;;;6090:74:39;6180:18;;;6173:34;;;6966:11:27;;;;6956:32;;6063:18:39;;6956:46:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7011:27:27;;;6120:42:39;6108:55;;6090:74;;6195:2;6180:18;;6173:34;;;7011:27:27;;-1:-1:-1;6063:18:39;;-1:-1:-1;7011:27:27;5916:297:39;7090:184:20;7163:6;:12;;;;;;;;;;:33;;7188:7;7163:24;:33::i;:::-;7159:109;;;7217:40;;686:10:4;;7217:40:20;;;;7229:4;;7217:40;;;;;7090:184;;:::o;7280:188::-;7354:6;:12;;;;;;;;;;:36;;7382:7;7354:27;:36::i;:::-;7350:112;;;7411:40;;686:10:4;;7411:40:20;;;;7423:4;;7411:40;;;;;7280:188;;:::o;6087:147:38:-;6161:7;6203:22;6207:3;6219:5;6203:3;:22::i;:::-;6187:40;;;6087:147;-1:-1:-1;;;6087:147:38:o;5403:156::-;5536:14;;;;5528:23;;5483:4;3874:19;;;:12;;;:19;;;;;;:24;;5506:46;3778:127;5640:115;5703:7;5729:19;5737:3;4068:18;;3986:107;1613:404;1676:4;3874:19;;;:12;;;:19;;;;;;1692:319;;-1:-1:-1;1734:23:38;;;;;;;;:11;:23;;;;;;;;;;;;;1914:18;;1892:19;;;:12;;;:19;;;;;;:40;;;;1946:11;;1692:319;-1:-1:-1;1995:5:38;1988:12;;5175:147;5248:4;5271:44;5279:3;5291:23;5299:14;;;;5291:23;5271:7;:44::i;4425:201::-;4519:18;;4492:7;;4519:26;-1:-1:-1;4511:73:38;;;;;;;9610:2:39;4511:73:38;;;9592:21:39;9649:2;9629:18;;;9622:30;9688:34;9668:18;;;9661:62;9759:4;9739:18;;;9732:32;9781:19;;4511:73:38;9408:398:39;4511:73:38;4601:3;:11;;4613:5;4601:18;;;;;;;;:::i;:::-;;;;;;;;;4594:25;;4425:201;;;;:::o;2185:1512::-;2251:4;2388:19;;;:12;;;:19;;;;;;2422:15;;2418:1273;;2779:21;2803:14;2816:1;2803:10;:14;:::i;:::-;2851:18;;2779:38;;-1:-1:-1;2831:17:38;;2851:22;;2872:1;;2851:22;:::i;:::-;2831:42;;3113:17;3133:3;:11;;3145:9;3133:22;;;;;;;;:::i;:::-;;;;;;;;;3113:42;;3276:9;3247:3;:11;;3259:13;3247:26;;;;;;;;:::i;:::-;;;;;;;;;;:38;3377:17;:13;3393:1;3377:17;:::i;:::-;3351:23;;;;:12;;;:23;;;;;:43;3500:17;;3351:3;;3500:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3592:3;:12;;:19;3605:5;3592:19;;;;;;;;;;;3585:26;;;3633:4;3626:11;;;;;;;;2418:1273;3675:5;3668:12;;;;;245:180:39;304:6;357:2;345:9;336:7;332:23;328:32;325:52;;;373:1;370;363:12;325:52;-1:-1:-1;396:23:39;;245:180;-1:-1:-1;245:180:39:o;612:248::-;680:6;688;741:2;729:9;720:7;716:23;712:32;709:52;;;757:1;754;747:12;709:52;-1:-1:-1;;780:23:39;;;850:2;835:18;;;822:32;;-1:-1:-1;612:248:39:o;1050:154::-;1136:42;1129:5;1125:54;1118:5;1115:65;1105:93;;1194:1;1191;1184:12;1209:315;1277:6;1285;1338:2;1326:9;1317:7;1313:23;1309:32;1306:52;;;1354:1;1351;1344:12;1306:52;1390:9;1377:23;1367:33;;1450:2;1439:9;1435:18;1422:32;1463:31;1488:5;1463:31;:::i;:::-;1513:5;1503:15;;;1209:315;;;;;:::o;1529:::-;1597:6;1605;1658:2;1646:9;1637:7;1633:23;1629:32;1626:52;;;1674:1;1671;1664:12;1626:52;1713:9;1700:23;1732:31;1757:5;1732:31;:::i;:::-;1782:5;1834:2;1819:18;;;;1806:32;;-1:-1:-1;;;1529:315:39:o;2031:247::-;2090:6;2143:2;2131:9;2122:7;2118:23;2114:32;2111:52;;;2159:1;2156;2149:12;2111:52;2198:9;2185:23;2217:31;2242:5;2217:31;:::i;:::-;2267:5;2031:247;-1:-1:-1;;;2031:247:39:o;2283:456::-;2360:6;2368;2376;2429:2;2417:9;2408:7;2404:23;2400:32;2397:52;;;2445:1;2442;2435:12;2397:52;2484:9;2471:23;2503:31;2528:5;2503:31;:::i;:::-;2553:5;-1:-1:-1;2610:2:39;2595:18;;2582:32;2623:33;2582:32;2623:33;:::i;:::-;2283:456;;2675:7;;-1:-1:-1;;;2729:2:39;2714:18;;;;2701:32;;2283:456::o;3442:388::-;3510:6;3518;3571:2;3559:9;3550:7;3546:23;3542:32;3539:52;;;3587:1;3584;3577:12;3539:52;3626:9;3613:23;3645:31;3670:5;3645:31;:::i;:::-;3695:5;-1:-1:-1;3752:2:39;3737:18;;3724:32;3765:33;3724:32;3765:33;:::i;4952:184::-;5004:77;5001:1;4994:88;5101:4;5098:1;5091:15;5125:4;5122:1;5115:15;5141:228;5181:7;5307:1;5239:66;5235:74;5232:1;5229:81;5224:1;5217:9;5210:17;5206:105;5203:131;;;5314:18;;:::i;:::-;-1:-1:-1;5354:9:39;;5141:228::o;5374:274::-;5414:1;5440;5430:189;;5475:77;5472:1;5465:88;5576:4;5573:1;5566:15;5604:4;5601:1;5594:15;5430:189;-1:-1:-1;5633:9:39;;5374:274::o;5653:125::-;5693:4;5721:1;5718;5715:8;5712:34;;;5726:18;;:::i;:::-;-1:-1:-1;5763:9:39;;5653:125::o;5783:128::-;5823:3;5854:1;5850:6;5847:1;5844:13;5841:39;;;5860:18;;:::i;:::-;-1:-1:-1;5896:9:39;;5783:128::o;6218:277::-;6285:6;6338:2;6326:9;6317:7;6313:23;6309:32;6306:52;;;6354:1;6351;6344:12;6306:52;6386:9;6380:16;6439:5;6432:13;6425:21;6418:5;6415:32;6405:60;;6461:1;6458;6451:12;8168:184;8238:6;8291:2;8279:9;8270:7;8266:23;8262:32;8259:52;;;8307:1;8304;8297:12;8259:52;-1:-1:-1;8330:16:39;;8168:184;-1:-1:-1;8168:184:39:o;9811:::-;9863:77;9860:1;9853:88;9960:4;9957:1;9950:15;9984:4;9981:1;9974:15;10000:184;10052:77;10049:1;10042:88;10149:4;10146:1;10139:15;10173:4;10170:1;10163:15" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "1598000", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "DEFAULT_ADMIN_ROLE()": "263", + "REWARD_PER_BLOCK_SETTER()": "307", + "TRUSTY_ROLE()": "263", + "daoShare()": "2363", + "daoWallet()": "2414", + "deposit(uint256)": "infinite", + "depositFor(address,uint256)": "infinite", + "earlyFoundersShare()": "2407", + "earlyFoundersWallet()": "2349", + "emergencyWithdraw()": "infinite", + "emergencyWithdrawERC20(address,address,uint256)": "infinite", + "emergencyWithdrawETH(address,uint256)": "infinite", + "getRoleAdmin(bytes32)": "2516", + "getRoleMember(bytes32,uint256)": "6968", + "getRoleMemberCount(bytes32)": "infinite", + "grantRole(bytes32,address)": "infinite", + "hasRole(bytes32,address)": "infinite", + "lastUpdatedBlock()": "2405", + "particleCollector()": "2341", + "pendingReward(address)": "11284", + "renounceRole(bytes32,address)": "infinite", + "revokeRole(bytes32,address)": "infinite", + "rewardPerBlock()": "2385", + "rewardTillNowPerToken()": "2385", + "rewardToken()": "2390", + "scale()": "2361", + "setRewardPerBlock(uint256)": "infinite", + "setShares(uint256,uint256)": "infinite", + "setStakedToken(address)": "infinite", + "setWallets(address,address)": "infinite", + "stakedToken()": "2370", + "totalStakedToken()": "2406", + "update()": "infinite", + "users(address)": "4711", + "withdraw(uint256)": "infinite", + "withdrawAllStakedtokens(address)": "infinite", + "withdrawParticleCollector()": "infinite" + }, + "internal": { + "sendReward(address,uint256)": "infinite" + } + }, + "methodIdentifiers": { + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "REWARD_PER_BLOCK_SETTER()": "a43c7e7e", + "TRUSTY_ROLE()": "34ddb95d", + "daoShare()": "88d19f1b", + "daoWallet()": "698a5897", + "deposit(uint256)": "b6b55f25", + "depositFor(address,uint256)": "2f4f21e2", + "earlyFoundersShare()": "481af4aa", + "earlyFoundersWallet()": "079a5705", + "emergencyWithdraw()": "db2e21bc", + "emergencyWithdrawERC20(address,address,uint256)": "55b8fb81", + "emergencyWithdrawETH(address,uint256)": "d79e8567", + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "lastUpdatedBlock()": "f90ce5ba", + "particleCollector()": "995d9b60", + "pendingReward(address)": "f40f0f52", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "rewardPerBlock()": "8ae39cac", + "rewardTillNowPerToken()": "60c6cdac", + "rewardToken()": "f7c618c1", + "scale()": "f51e181a", + "setRewardPerBlock(uint256)": "bb872b4a", + "setShares(uint256,uint256)": "2aca3e7d", + "setStakedToken(address)": "52e9c6d4", + "setWallets(address,address)": "d3f6a157", + "stakedToken()": "cc7a262e", + "totalStakedToken()": "cb6d8ee6", + "update()": "a2e62045", + "users(address)": "a87430ba", + "withdraw(uint256)": "2e1a7d4d", + "withdrawAllStakedtokens(address)": "cee66f63", + "withdrawParticleCollector()": "9378c6d4" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_rewardToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_rewardPerBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_daoShare\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_earlyFoundersShare\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_daoWallet\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_earlyFoundersWallet\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_rewardPerBlockSetter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EmergencyWithdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"RewardPerBlockChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_daoShare\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_earlyFoundersShare\",\"type\":\"uint256\"}],\"name\":\"SharesSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_stakedToken\",\"type\":\"address\"}],\"name\":\"StakedTokenSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_daoWallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_earlyFoundersWallet\",\"type\":\"address\"}],\"name\":\"WalletsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_earlyFoundersShare\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_daoShare\",\"type\":\"uint256\"}],\"name\":\"WithdrawParticleCollectorAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalStakedTokens\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawStakedtokens\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REWARD_PER_BLOCK_SETTER\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRUSTY_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"daoShare\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"daoWallet\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"earlyFoundersShare\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"earlyFoundersWallet\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"emergencyWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"emergencyWithdrawERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"emergencyWithdrawETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastUpdatedBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"particleCollector\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"pendingReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardTillNowPerToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"scale\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rewardPerBlock\",\"type\":\"uint256\"}],\"name\":\"setRewardPerBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_daoShare\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_earlyFoundersShare\",\"type\":\"uint256\"}],\"name\":\"setShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakedToken\",\"type\":\"address\"}],\"name\":\"setStakedToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_daoWallet\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_earlyFoundersWallet\",\"type\":\"address\"}],\"name\":\"setWallets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakedToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalStakedToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"update\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"users\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"depositAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"paidReward\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawAllStakedtokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawParticleCollector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Staking/Staking.sol\":\"Staking\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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 payable(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}\",\"keccak256\":\"0x60d51a32063a4975dbf9433d38f5849173527da72f007c38053274e06698cb54\",\"license\":\"MIT\"},\"contracts/Governance/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Utils/EnumerableSet.sol\\\";\\nimport \\\"../Utils/Address.sol\\\";\\nimport \\\"../Common/Context.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it.\\n */\\nabstract contract AccessControl is Context {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n using Address for address;\\n\\n struct RoleData {\\n EnumerableSet.AddressSet members;\\n bytes32 adminRole;\\n }\\n\\n mapping (bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; //bytes32(uint256(0x4B437D01b575618140442A4975db38850e3f8f5f) << 96);\\n\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view returns (bool) {\\n return _roles[role].members.contains(account);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view returns (uint256) {\\n return _roles[role].members.length();\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view returns (address) {\\n return _roles[role].members.at(index);\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to grant\\\");\\n\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) public virtual {\\n require(hasRole(_roles[role].adminRole, _msgSender()), \\\"AccessControl: sender must be an admin to revoke\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) public virtual {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);\\n _roles[role].adminRole = adminRole;\\n }\\n\\n function _grantRole(bytes32 role, address account) private {\\n if (_roles[role].members.add(account)) {\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n function _revokeRole(bytes32 role, address account) private {\\n if (_roles[role].members.remove(account)) {\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x749b2c0e515a59c6d03cf4908a252ebc5d2b482ca3fd7ec997d1143c302f4e89\",\"license\":\"MIT\"},\"contracts/Staking/Staking.sol\":{\"content\":\"// Be name Khoda\\n// Bime Abolfazl\\n\\n// =================================================================================================================\\n// _|_|_| _|_|_|_| _| _| _|_|_| _|_|_|_| _| |\\n// _| _| _| _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| |\\n// _| _| _|_|_| _| _| _|_| _|_|_| _| _| _| _| _| _| _| _| _|_|_|_| |\\n// _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| _| |\\n// _|_|_| _|_|_|_| _|_| _|_|_| _| _| _| _| _|_|_| _| _| _|_|_| _|_|_| |\\n// =================================================================================================================\\n// ======================= STAKING ======================\\n// ======================================================\\n// DEUS Finance: https://github.com/DeusFinance\\n\\n// Primary Author(s)\\n// Vahid: https://github.com/vahid-dev\\n// Hosein: https://github.com/hedzed\\n\\n// Reviewer(s) / Contributor(s)\\n// S.A. Yaghoubnejad: https://github.com/SAYaghoubnejad\\n// Hosein: https://github.com/hedzed\\n\\npragma solidity ^0.8.9;\\n\\nimport \\\"../Governance/AccessControl.sol\\\";\\n\\ninterface IERC20 {\\n\\tfunction balanceOf(address account) external view returns (uint256);\\n\\tfunction transfer(address recipient, uint256 amount) external returns (bool);\\n\\tfunction transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\\n}\\n\\ninterface DEUSToken {\\n\\tfunction pool_mint(address m_address, uint256 m_amount) external;\\n}\\n\\ncontract Staking is AccessControl {\\n\\n\\tstruct User {\\n\\t\\tuint256 depositAmount;\\n\\t\\tuint256 paidReward;\\n\\t}\\n\\n\\tmapping (address => User) public users;\\n\\n\\tuint256 public rewardTillNowPerToken = 0;\\n\\tuint256 public lastUpdatedBlock;\\n\\tuint256 public rewardPerBlock;\\n\\tuint256 public scale = 1e18;\\n\\n\\tuint256 public particleCollector = 0;\\n\\tuint256 public daoShare;\\n\\tuint256 public earlyFoundersShare;\\n\\taddress public daoWallet;\\n\\taddress public earlyFoundersWallet;\\n\\tuint256 public totalStakedToken = 1; // init with 1 instead of 0 to avoid division by zero\\n\\n\\taddress public stakedToken;\\n\\taddress public rewardToken;\\n\\n\\tbytes32 public constant REWARD_PER_BLOCK_SETTER = keccak256(\\\"REWARD_PER_BLOCK_SETTER\\\");\\n\\tbytes32 public constant TRUSTY_ROLE = keccak256(\\\"TRUSTY_ROLE\\\");\\n\\n\\t/* ========== CONSTRUCTOR ========== */\\n\\n\\tconstructor (\\n\\t\\taddress _stakedToken,\\n\\t\\taddress _rewardToken,\\n\\t\\tuint256 _rewardPerBlock,\\n\\t\\tuint256 _daoShare,\\n\\t\\tuint256 _earlyFoundersShare,\\n\\t\\taddress _daoWallet,\\n\\t\\taddress _earlyFoundersWallet,\\n\\t\\taddress _rewardPerBlockSetter)\\n\\t{\\n\\t\\trequire(\\n\\t\\t\\t_stakedToken != address(0) &&\\n\\t\\t\\t_rewardToken != address(0) &&\\n\\t\\t\\t_daoWallet != address(0) &&\\n\\t\\t\\t_earlyFoundersWallet != address(0),\\n\\t\\t\\t\\\"STAKING::constructor: Zero address detected\\\"\\n\\t\\t);\\n\\t\\t_setupRole(DEFAULT_ADMIN_ROLE, msg.sender);\\n\\t\\t_setupRole(REWARD_PER_BLOCK_SETTER, _rewardPerBlockSetter);\\n\\t\\t_setupRole(TRUSTY_ROLE, msg.sender);\\n\\t\\tstakedToken = _stakedToken;\\n\\t\\trewardToken = _rewardToken;\\n\\t\\trewardPerBlock = _rewardPerBlock;\\n\\t\\tdaoShare = _daoShare;\\n\\t\\tearlyFoundersShare = _earlyFoundersShare;\\n\\t\\tlastUpdatedBlock = block.number;\\n\\t\\tdaoWallet = _daoWallet;\\n\\t\\tearlyFoundersWallet = _earlyFoundersWallet;\\n\\t}\\n\\n\\n\\tmodifier onlyTrusty() {\\n\\t\\trequire(hasRole(TRUSTY_ROLE, msg.sender), \\\"STAKING:: Caller is not a trusty\\\");\\n\\t\\t_;\\n\\t}\\n\\n\\t/* ========== VIEWS ========== */\\n\\n\\t// View function to see pending reward on frontend.\\n\\tfunction pendingReward(address _user) external view returns (uint256 reward) {\\n\\t\\tUser storage user = users[_user];\\n\\t\\tuint256 accRewardPerToken = rewardTillNowPerToken;\\n\\n\\t\\tif (block.number > lastUpdatedBlock) {\\n\\t\\t\\tuint256 rewardAmount = (block.number - lastUpdatedBlock) * rewardPerBlock;\\n\\t\\t\\taccRewardPerToken = accRewardPerToken + (rewardAmount * scale / totalStakedToken);\\n\\t\\t}\\n\\t\\treward = (user.depositAmount * accRewardPerToken / scale) - user.paidReward;\\n\\t}\\n\\n\\t/* ========== PUBLIC FUNCTIONS ========== */\\n\\n\\t// Update reward variables of the pool to be up-to-date.\\n\\tfunction update() public {\\n\\t\\tif (block.number <= lastUpdatedBlock) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\tuint256 rewardAmount = (block.number - lastUpdatedBlock) * rewardPerBlock;\\n\\n\\t\\trewardTillNowPerToken = rewardTillNowPerToken + (rewardAmount * scale / totalStakedToken);\\n\\t\\tlastUpdatedBlock = block.number;\\n\\t}\\n\\n\\tfunction deposit(uint256 amount) external {\\n\\t\\tdepositFor(msg.sender, amount);\\n\\t}\\n\\n\\tfunction depositFor(address _user, uint256 amount) public {\\n\\t\\tUser storage user = users[_user];\\n\\t\\tupdate();\\n\\n\\t\\tif (user.depositAmount > 0) {\\n\\t\\t\\tuint256 _pendingReward = (user.depositAmount * rewardTillNowPerToken / scale) - user.paidReward;\\n\\t\\t\\tsendReward(_user, _pendingReward);\\n\\t\\t}\\n\\n\\t\\tuser.depositAmount = user.depositAmount + amount;\\n\\t\\tuser.paidReward = user.depositAmount * rewardTillNowPerToken / scale;\\n\\n\\t\\tIERC20(stakedToken).transferFrom(msg.sender, address(this), amount);\\n\\t\\ttotalStakedToken = totalStakedToken + amount;\\n\\t\\temit Deposit(_user, amount);\\n\\t}\\n\\n\\tfunction withdraw(uint256 amount) external {\\n\\t\\tUser storage user = users[msg.sender];\\n\\t\\trequire(user.depositAmount >= amount, \\\"STAKING::withdraw: withdraw amount exceeds deposited amount\\\");\\n\\t\\tupdate();\\n\\n\\t\\tuint256 _pendingReward = (user.depositAmount * rewardTillNowPerToken / scale) - user.paidReward;\\n\\t\\tsendReward(msg.sender, _pendingReward);\\n\\n\\t\\tuint256 particleCollectorShare = _pendingReward * (daoShare + earlyFoundersShare) / scale;\\n\\t\\tparticleCollector = particleCollector + particleCollectorShare;\\n\\n\\t\\tif (amount > 0) {\\n\\t\\t\\tuser.depositAmount = user.depositAmount - amount;\\n\\t\\t\\tIERC20(stakedToken).transfer(address(msg.sender), amount);\\n\\t\\t\\ttotalStakedToken = totalStakedToken - amount;\\n\\t\\t\\temit Withdraw(msg.sender, amount);\\n\\t\\t}\\n\\n\\t\\tuser.paidReward = user.depositAmount * rewardTillNowPerToken / scale;\\n\\t}\\n\\n\\tfunction withdrawParticleCollector() public {\\n\\t\\tuint256 _daoShare = particleCollector * daoShare / (daoShare + earlyFoundersShare);\\n\\t\\tDEUSToken(rewardToken).pool_mint(daoWallet, _daoShare);\\n\\n\\t\\tuint256 _earlyFoundersShare = particleCollector * earlyFoundersShare / (daoShare + earlyFoundersShare);\\n\\t\\tDEUSToken(rewardToken).pool_mint(earlyFoundersWallet, _earlyFoundersShare);\\n\\n\\t\\tparticleCollector = 0;\\n\\n\\t\\temit WithdrawParticleCollectorAmount(_earlyFoundersShare, _daoShare);\\n\\t}\\n\\n\\t// Withdraw without caring about rewards. EMERGENCY ONLY.\\n\\tfunction emergencyWithdraw() external {\\n\\t\\tUser storage user = users[msg.sender];\\n\\n\\t\\ttotalStakedToken = totalStakedToken - user.depositAmount;\\n\\n\\t\\tIERC20(stakedToken).transfer(msg.sender, user.depositAmount);\\n\\t\\temit EmergencyWithdraw(msg.sender, user.depositAmount);\\n\\n\\t\\tuser.depositAmount = 0;\\n\\t\\tuser.paidReward = 0;\\n\\t}\\n\\n\\tfunction sendReward(address user, uint256 amount) internal {\\n\\t\\t// uint256 _daoShareAndEarlyFoundersShare = amount * (daoShare + earlyFoundersShare) / scale;\\n\\t\\t// DEUSToken(rewardToken).pool_mint(user, amount - _daoShareAndEarlyFoundersShare);\\n\\t\\tDEUSToken(rewardToken).pool_mint(user, amount);\\n\\t\\temit RewardClaimed(user, amount);\\n\\t}\\n\\n\\t/* ========== EMERGENCY FUNCTIONS ========== */\\n\\n\\t// Add temporary withdrawal functionality for owner(DAO) to transfer all tokens to a safe place.\\n\\t// Contract ownership will transfer to address(0x) after full auditing of codes.\\n\\tfunction withdrawAllStakedtokens(address to) external onlyTrusty {\\n\\t\\tuint256 totalStakedTokens = IERC20(stakedToken).balanceOf(address(this));\\n\\t\\ttotalStakedToken = 1;\\n\\t\\tIERC20(stakedToken).transfer(to, totalStakedTokens);\\n\\n\\t\\temit withdrawStakedtokens(totalStakedTokens, to);\\n\\t}\\n\\n\\tfunction setStakedToken(address _stakedToken) external onlyTrusty {\\n\\t\\tstakedToken = _stakedToken;\\n\\n\\t\\temit StakedTokenSet(_stakedToken);\\n\\t}\\n\\n\\tfunction emergencyWithdrawERC20(address to, address _token, uint256 amount) external onlyTrusty {\\n\\t\\tIERC20(_token).transfer(to, amount);\\n\\t}\\n\\tfunction emergencyWithdrawETH(address payable to, uint amount) external onlyTrusty {\\n\\t\\tpayable(to).transfer(amount);\\n\\t}\\n\\n\\tfunction setWallets(address _daoWallet, address _earlyFoundersWallet) external onlyTrusty {\\n\\t\\tdaoWallet = _daoWallet;\\n\\t\\tearlyFoundersWallet = _earlyFoundersWallet;\\n\\n\\t\\temit WalletsSet(_daoWallet, _earlyFoundersWallet);\\n\\t}\\n\\n\\tfunction setShares(uint256 _daoShare, uint256 _earlyFoundersShare) external onlyTrusty {\\n\\t\\twithdrawParticleCollector();\\n\\t\\tdaoShare = _daoShare;\\n\\t\\tearlyFoundersShare = _earlyFoundersShare;\\n\\n\\t\\temit SharesSet(_daoShare, _earlyFoundersShare);\\n\\t}\\n\\n\\tfunction setRewardPerBlock(uint256 _rewardPerBlock) external {\\n\\t\\trequire(hasRole(REWARD_PER_BLOCK_SETTER, msg.sender), \\\"STAKING::setRewardPerBlock: Caller is not a rewardPerBlockSetter\\\");\\n\\t\\tupdate();\\n\\t\\temit RewardPerBlockChanged(rewardPerBlock, _rewardPerBlock);\\n\\t\\trewardPerBlock = _rewardPerBlock;\\n\\t}\\n\\n\\n\\t/* ========== EVENTS ========== */\\n\\n\\tevent withdrawStakedtokens(uint256 totalStakedTokens, address to);\\n\\tevent StakedTokenSet(address _stakedToken);\\n\\tevent SharesSet(uint256 _daoShare, uint256 _earlyFoundersShare);\\n\\tevent WithdrawParticleCollectorAmount(uint256 _earlyFoundersShare, uint256 _daoShare);\\n\\tevent WalletsSet(address _daoWallet, address _earlyFoundersWallet);\\n\\tevent Deposit(address user, uint256 amount);\\n\\tevent Withdraw(address user, uint256 amount);\\n\\tevent EmergencyWithdraw(address user, uint256 amount);\\n\\tevent RewardClaimed(address user, uint256 amount);\\n\\tevent RewardPerBlockChanged(uint256 oldValue, uint256 newValue);\\n}\\n\\n//Dar panah khoda\",\"keccak256\":\"0xe37818c1b616468ce590530455d5565ab89b66053740f2632e2f8ba8f4b4b7a4\"},\"contracts/Utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11 <0.9.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}\",\"keccak256\":\"0xe392046e85c78eea7d4c1237af52a5fc06c097b7a480ea4f20159670b4a582a4\",\"license\":\"MIT\"},\"contracts/Utils/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\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.0.0, only sets of type `address` (`AddressSet`) and `uint256`\\n * (`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 // 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(bytes20(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(bytes20(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(bytes20(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(bytes20(_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\",\"keccak256\":\"0x685f4133ba76f930e3761c1d1414d7f6e55dd40d58b4b210cb392662a6cbd27d\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 6023, + "contract": "contracts/Staking/Staking.sol:Staking", + "label": "_roles", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_bytes32,t_struct(RoleData)6018_storage)" + }, + { + "astId": 7368, + "contract": "contracts/Staking/Staking.sol:Staking", + "label": "users", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_struct(User)7363_storage)" + }, + { + "astId": 7371, + "contract": "contracts/Staking/Staking.sol:Staking", + "label": "rewardTillNowPerToken", + "offset": 0, + "slot": "2", + "type": "t_uint256" + }, + { + "astId": 7373, + "contract": "contracts/Staking/Staking.sol:Staking", + "label": "lastUpdatedBlock", + "offset": 0, + "slot": "3", + "type": "t_uint256" + }, + { + "astId": 7375, + "contract": "contracts/Staking/Staking.sol:Staking", + "label": "rewardPerBlock", + "offset": 0, + "slot": "4", + "type": "t_uint256" + }, + { + "astId": 7378, + "contract": "contracts/Staking/Staking.sol:Staking", + "label": "scale", + "offset": 0, + "slot": "5", + "type": "t_uint256" + }, + { + "astId": 7381, + "contract": "contracts/Staking/Staking.sol:Staking", + "label": "particleCollector", + "offset": 0, + "slot": "6", + "type": "t_uint256" + }, + { + "astId": 7383, + "contract": "contracts/Staking/Staking.sol:Staking", + "label": "daoShare", + "offset": 0, + "slot": "7", + "type": "t_uint256" + }, + { + "astId": 7385, + "contract": "contracts/Staking/Staking.sol:Staking", + "label": "earlyFoundersShare", + "offset": 0, + "slot": "8", + "type": "t_uint256" + }, + { + "astId": 7387, + "contract": "contracts/Staking/Staking.sol:Staking", + "label": "daoWallet", + "offset": 0, + "slot": "9", + "type": "t_address" + }, + { + "astId": 7389, + "contract": "contracts/Staking/Staking.sol:Staking", + "label": "earlyFoundersWallet", + "offset": 0, + "slot": "10", + "type": "t_address" + }, + { + "astId": 7392, + "contract": "contracts/Staking/Staking.sol:Staking", + "label": "totalStakedToken", + "offset": 0, + "slot": "11", + "type": "t_uint256" + }, + { + "astId": 7394, + "contract": "contracts/Staking/Staking.sol:Staking", + "label": "stakedToken", + "offset": 0, + "slot": "12", + "type": "t_address" + }, + { + "astId": 7396, + "contract": "contracts/Staking/Staking.sol:Staking", + "label": "rewardToken", + "offset": 0, + "slot": "13", + "type": "t_address" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_bytes32)dyn_storage": { + "base": "t_bytes32", + "encoding": "dynamic_array", + "label": "bytes32[]", + "numberOfBytes": "32" + }, + "t_bytes32": { + "encoding": "inplace", + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(User)7363_storage)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => struct Staking.User)", + "numberOfBytes": "32", + "value": "t_struct(User)7363_storage" + }, + "t_mapping(t_bytes32,t_struct(RoleData)6018_storage)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => struct AccessControl.RoleData)", + "numberOfBytes": "32", + "value": "t_struct(RoleData)6018_storage" + }, + "t_mapping(t_bytes32,t_uint256)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_struct(AddressSet)11740_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.AddressSet", + "members": [ + { + "astId": 11739, + "contract": "contracts/Staking/Staking.sol:Staking", + "label": "_inner", + "offset": 0, + "slot": "0", + "type": "t_struct(Set)11554_storage" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleData)6018_storage": { + "encoding": "inplace", + "label": "struct AccessControl.RoleData", + "members": [ + { + "astId": 6015, + "contract": "contracts/Staking/Staking.sol:Staking", + "label": "members", + "offset": 0, + "slot": "0", + "type": "t_struct(AddressSet)11740_storage" + }, + { + "astId": 6017, + "contract": "contracts/Staking/Staking.sol:Staking", + "label": "adminRole", + "offset": 0, + "slot": "2", + "type": "t_bytes32" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Set)11554_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.Set", + "members": [ + { + "astId": 11549, + "contract": "contracts/Staking/Staking.sol:Staking", + "label": "_values", + "offset": 0, + "slot": "0", + "type": "t_array(t_bytes32)dyn_storage" + }, + { + "astId": 11553, + "contract": "contracts/Staking/Staking.sol:Staking", + "label": "_indexes", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ], + "numberOfBytes": "64" + }, + "t_struct(User)7363_storage": { + "encoding": "inplace", + "label": "struct Staking.User", + "members": [ + { + "astId": 7360, + "contract": "contracts/Staking/Staking.sol:Staking", + "label": "depositAmount", + "offset": 0, + "slot": "0", + "type": "t_uint256" + }, + { + "astId": 7362, + "contract": "contracts/Staking/Staking.sol:Staking", + "label": "paidReward", + "offset": 0, + "slot": "1", + "type": "t_uint256" + } + ], + "numberOfBytes": "64" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/Uniswap/Interfaces/IUniswapV2Callee.sol": { + "IUniswapV2Callee": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "uniswapV2Call", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "uniswapV2Call(address,uint256,uint256,bytes)": "10d1e85c" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV2Call\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Uniswap/Interfaces/IUniswapV2Callee.sol\":\"IUniswapV2Callee\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Uniswap/Interfaces/IUniswapV2Callee.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ninterface IUniswapV2Callee {\\n function uniswapV2Call(address sender, uint amount0, uint amount1, bytes calldata data) external;\\n}\\n\",\"keccak256\":\"0xe88dddfb2938fe3622b6efea7a2891db071c24c80d42f14e0721c64230bc3932\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol": { + "IUniswapV2ERC20": { + "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": [], + "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": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "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" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "DOMAIN_SEPARATOR()": "3644e515", + "PERMIT_TYPEHASH()": "30adf81f", + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "name()": "06fdde03", + "nonces(address)": "7ecebe00", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"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\":[],\"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\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"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\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol\":\"IUniswapV2ERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ninterface IUniswapV2ERC20 {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external pure returns (string memory);\\n function symbol() external pure returns (string memory);\\n function decimals() external pure returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n function PERMIT_TYPEHASH() external pure returns (bytes32);\\n function nonces(address owner) external view returns (uint);\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\\n}\\n\",\"keccak256\":\"0x9845bf55f69d1f7ce821b95861a78821a118bdb3f1c8997b6bb0c2b6a890901c\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/Uniswap/Interfaces/IUniswapV2Factory.sol": { + "IUniswapV2Factory": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token0", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token1", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "pair", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "PairCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "allPairs", + "outputs": [ + { + "internalType": "address", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "allPairsLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + } + ], + "name": "createPair", + "outputs": [ + { + "internalType": "address", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "feeTo", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "feeToSetter", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + } + ], + "name": "getPair", + "outputs": [ + { + "internalType": "address", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "setFeeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "setFeeToSetter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "allPairs(uint256)": "1e3dd18b", + "allPairsLength()": "574f2ba3", + "createPair(address,address)": "c9c65396", + "feeTo()": "017e7e58", + "feeToSetter()": "094b7415", + "getPair(address,address)": "e6a43905", + "setFeeTo(address)": "f46901ed", + "setFeeToSetter(address)": "a2e74af6" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"createPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeToSetter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeToSetter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Uniswap/Interfaces/IUniswapV2Factory.sol\":\"IUniswapV2Factory\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Uniswap/Interfaces/IUniswapV2Factory.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ninterface IUniswapV2Factory {\\n event PairCreated(address indexed token0, address indexed token1, address pair, uint);\\n\\n function feeTo() external view returns (address);\\n function feeToSetter() external view returns (address);\\n\\n function getPair(address tokenA, address tokenB) external view returns (address pair);\\n function allPairs(uint) external view returns (address pair);\\n function allPairsLength() external view returns (uint);\\n\\n function createPair(address tokenA, address tokenB) external returns (address pair);\\n\\n function setFeeTo(address) external;\\n function setFeeToSetter(address) external;\\n}\\n\",\"keccak256\":\"0x87c74a8e918023f916cdc22f6a1cac447bff16f769828d4aae36876187c6f7d3\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/Uniswap/Interfaces/IUniswapV2Pair.sol": { + "IUniswapV2Pair": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Burn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "Mint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0In", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1In", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0Out", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1Out", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Swap", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint112", + "name": "reserve0", + "type": "uint112" + }, + { + "indexed": false, + "internalType": "uint112", + "name": "reserve1", + "type": "uint112" + } + ], + "name": "Sync", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MINIMUM_LIQUIDITY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "burn", + "outputs": [ + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getReserves", + "outputs": [ + { + "internalType": "uint112", + "name": "reserve0", + "type": "uint112" + }, + { + "internalType": "uint112", + "name": "reserve1", + "type": "uint112" + }, + { + "internalType": "uint32", + "name": "blockTimestampLast", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "kLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "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" + }, + { + "inputs": [], + "name": "price0CumulativeLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "price1CumulativeLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "skim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount0Out", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Out", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "swap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "sync", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "token0", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token1", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "DOMAIN_SEPARATOR()": "3644e515", + "MINIMUM_LIQUIDITY()": "ba9a7a56", + "PERMIT_TYPEHASH()": "30adf81f", + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "burn(address)": "89afcb44", + "decimals()": "313ce567", + "factory()": "c45a0155", + "getReserves()": "0902f1ac", + "initialize(address,address)": "485cc955", + "kLast()": "7464fc3d", + "mint(address)": "6a627842", + "name()": "06fdde03", + "nonces(address)": "7ecebe00", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf", + "price0CumulativeLast()": "5909c0d5", + "price1CumulativeLast()": "5a3d5493", + "skim(address)": "bc25cf77", + "swap(uint256,uint256,address,bytes)": "022c0d9f", + "symbol()": "95d89b41", + "sync()": "fff6cae9", + "token0()": "0dfe1681", + "token1()": "d21220a7", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"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\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Uniswap/Interfaces/IUniswapV2Pair.sol\":\"IUniswapV2Pair\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Uniswap/Interfaces/IUniswapV2Pair.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ninterface IUniswapV2Pair {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external pure returns (string memory);\\n function symbol() external pure returns (string memory);\\n function decimals() external pure returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n function PERMIT_TYPEHASH() external pure returns (bytes32);\\n function nonces(address owner) external view returns (uint);\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\\n\\n event Mint(address indexed sender, uint amount0, uint amount1);\\n event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\\n event Swap(\\n address indexed sender,\\n uint amount0In,\\n uint amount1In,\\n uint amount0Out,\\n uint amount1Out,\\n address indexed to\\n );\\n event Sync(uint112 reserve0, uint112 reserve1);\\n\\n function MINIMUM_LIQUIDITY() external pure returns (uint);\\n function factory() external view returns (address);\\n function token0() external view returns (address);\\n function token1() external view returns (address);\\n function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\\n function price0CumulativeLast() external view returns (uint);\\n function price1CumulativeLast() external view returns (uint);\\n function kLast() external view returns (uint);\\n\\n function mint(address to) external returns (uint liquidity);\\n function burn(address to) external returns (uint amount0, uint amount1);\\n function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;\\n function skim(address to) external;\\n function sync() external;\\n\\n function initialize(address, address) external; \\n}\\n\",\"keccak256\":\"0x2509844ce3a43ce31165e4101700ab13e95f267a2cae4a2a88ea1ebb5a50513d\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/Uniswap/TransferHelper.sol": { + "TransferHelper": { + "abi": [], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a6282b57b9d46c2bec6307bc4197a03af927aea7be9123c0eaeb456dd682b30e64736f6c634300080a0033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA6 0x28 0x2B JUMPI 0xB9 0xD4 PUSH13 0x2BEC6307BC4197A03AF927AEA7 0xBE SWAP2 0x23 0xC0 0xEA 0xEB GASLIMIT PUSH14 0xD682B30E64736F6C634300080A00 CALLER ", + "sourceMap": "170:1350:32:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;170:1350:32;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a6282b57b9d46c2bec6307bc4197a03af927aea7be9123c0eaeb456dd682b30e64736f6c634300080a0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA6 0x28 0x2B JUMPI 0xB9 0xD4 PUSH13 0x2BEC6307BC4197A03AF927AEA7 0xBE SWAP2 0x23 0xC0 0xEA 0xEB GASLIMIT PUSH14 0xD682B30E64736F6C634300080A00 CALLER ", + "sourceMap": "170:1350:32:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17200", + "executionCost": "103", + "totalCost": "17303" + }, + "internal": { + "safeApprove(address,address,uint256)": "infinite", + "safeTransfer(address,address,uint256)": "infinite", + "safeTransferETH(address,uint256)": "infinite", + "safeTransferFrom(address,address,address,uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Uniswap/TransferHelper.sol\":\"TransferHelper\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Uniswap/TransferHelper.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\n// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false\\nlibrary TransferHelper {\\n function safeApprove(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('approve(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');\\n }\\n\\n function safeTransfer(address token, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transfer(address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');\\n }\\n\\n function safeTransferFrom(address token, address from, address to, uint value) internal {\\n // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');\\n }\\n\\n function safeTransferETH(address to, uint value) internal {\\n (bool success,) = to.call{value:value}(new bytes(0));\\n require(success, 'TransferHelper: ETH_TRANSFER_FAILED');\\n }\\n}\",\"keccak256\":\"0x2eb33792741584e83e0794a7493335b5dce9a9b675dda9e647ce29d88a40a196\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/Uniswap/UniswapV2ERC20.sol": { + "UniswapV2ERC20": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "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" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": { + "@_8851": { + "entryPoint": null, + "id": 8851, + "parameterSlots": 0, + "returnSlots": 0 + }, + "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:505:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "227:276:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "237:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "249:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "260:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "245:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "245:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "237:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "280:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "291:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "273:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "273:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "273:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "318:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "329:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "314:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "314:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "334:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "307:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "307:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "307:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "361:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "372:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "357:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "357:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "377:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "350:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "350:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "350:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "404:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "415:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "400:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "400:18:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "420:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "393:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "393:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "393:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "447:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "458:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "443:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "443:19:39" + }, + { + "arguments": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "468:6:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "484:3:39", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "489:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "480:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "480:11:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "493:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "476:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "476:19:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "464:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "464:32:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "436:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "436:61:39" + }, + "nodeType": "YulExpressionStatement", + "src": "436:61:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "164:9:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "175:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "183:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "191:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "199:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "207:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "218:4:39", + "type": "" + } + ], + "src": "14:489:39" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 160)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50604080518082018252600a8152692ab734b9bbb0b8102b1960b11b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fbfcc8ef98ffbf7b6c3fec7bf5185b566b9863e35a9d83acd49ad6824b5969738818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355610b6a806100f16000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461020d578063a9059cbb14610249578063d505accf1461025c578063dd62ed3e1461027157600080fd5b80633644e515146101c457806370a08231146101cd5780637ecebe00146101ed57600080fd5b806323b872dd116100bd57806323b872dd1461017057806330adf81f14610183578063313ce567146101aa57600080fd5b806306fdde03146100e4578063095ea7b31461013657806318160ddd14610159575b600080fd5b6101206040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b60405161012d91906108da565b60405180910390f35b610149610144366004610976565b61029c565b604051901515815260200161012d565b61016260005481565b60405190815260200161012d565b61014961017e3660046109a0565b6102b2565b6101627f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6101b2601281565b60405160ff909116815260200161012d565b61016260035481565b6101626101db3660046109dc565b60016020526000908152604090205481565b6101626101fb3660046109dc565b60046020526000908152604090205481565b6101206040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b610149610257366004610976565b61038b565b61026f61026a3660046109f7565b610398565b005b61016261027f366004610a6a565b600260209081526000928352604080842090915290825290205481565b60006102a9338484610688565b50600192915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146103765773ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832033845290915290205461034490836106f7565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610381848484610740565b5060019392505050565b60006102a9338484610740565b42841015610407576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a2045585049524544000000000000000000000000000060448201526064015b60405180910390fd5b60035473ffffffffffffffffffffffffffffffffffffffff8816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91908761046783610acc565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016105089291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015610591573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061060c57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e41545552450000000060448201526064016103fe565b61067d898989610688565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061073983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061080d565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461077090826106f7565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546107ac9082610861565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106ea9085815260200190565b6000818484111561084b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103fe91906108da565b5060006108588486610b05565b95945050505050565b60008061086e8385610b1c565b905083811015610739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103fe565b600060208083528351808285015260005b81811015610907578581018301518582016040015282016108eb565b81811115610919576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461097157600080fd5b919050565b6000806040838503121561098957600080fd5b6109928361094d565b946020939093013593505050565b6000806000606084860312156109b557600080fd5b6109be8461094d565b92506109cc6020850161094d565b9150604084013590509250925092565b6000602082840312156109ee57600080fd5b6107398261094d565b600080600080600080600060e0888a031215610a1257600080fd5b610a1b8861094d565b9650610a296020890161094d565b95506040880135945060608801359350608088013560ff81168114610a4d57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610a7d57600080fd5b610a868361094d565b9150610a946020840161094d565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610afe57610afe610a9d565b5060010190565b600082821015610b1757610b17610a9d565b500390565b60008219821115610b2f57610b2f610a9d565b50019056fea26469706673582212207d530be318861bbecf7973d3c9c261befd1af1931b347ea8f34df61076ae97bf64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xA DUP2 MSTORE PUSH10 0x2AB734B9BBB0B8102B19 PUSH1 0xB1 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xBFCC8EF98FFBF7B6C3FEC7BF5185B566B9863E35A9D83ACD49AD6824B5969738 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x3 SSTORE PUSH2 0xB6A DUP1 PUSH2 0xF1 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 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3644E515 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x20D JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x1C4 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x183 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x136 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x159 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x120 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x556E697377617020563200000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12D SWAP2 SWAP1 PUSH2 0x8DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x149 PUSH2 0x144 CALLDATASIZE PUSH1 0x4 PUSH2 0x976 JUMP JUMPDEST PUSH2 0x29C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12D JUMP JUMPDEST PUSH2 0x162 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12D JUMP JUMPDEST PUSH2 0x149 PUSH2 0x17E CALLDATASIZE PUSH1 0x4 PUSH2 0x9A0 JUMP JUMPDEST PUSH2 0x2B2 JUMP JUMPDEST PUSH2 0x162 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x1B2 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12D JUMP JUMPDEST PUSH2 0x162 PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x162 PUSH2 0x1DB CALLDATASIZE PUSH1 0x4 PUSH2 0x9DC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x162 PUSH2 0x1FB CALLDATASIZE PUSH1 0x4 PUSH2 0x9DC JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x120 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x554E492D56320000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x149 PUSH2 0x257 CALLDATASIZE PUSH1 0x4 PUSH2 0x976 JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST PUSH2 0x26F PUSH2 0x26A CALLDATASIZE PUSH1 0x4 PUSH2 0x9F7 JUMP JUMPDEST PUSH2 0x398 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x162 PUSH2 0x27F CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A9 CALLER DUP5 DUP5 PUSH2 0x688 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0x376 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x344 SWAP1 DUP4 PUSH2 0x6F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x381 DUP5 DUP5 DUP5 PUSH2 0x740 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A9 CALLER DUP5 DUP5 PUSH2 0x740 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x407 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20455850495245440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SWAP3 SWAP2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP12 SWAP2 SWAP1 DUP8 PUSH2 0x467 DUP4 PUSH2 0xACC JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x508 SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x591 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x60C JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x672 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F5349474E415455524500000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3FE JUMP JUMPDEST PUSH2 0x67D DUP10 DUP10 DUP10 PUSH2 0x688 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x739 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x80D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x770 SWAP1 DUP3 PUSH2 0x6F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x7AC SWAP1 DUP3 PUSH2 0x861 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x6EA SWAP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x84B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3FE SWAP2 SWAP1 PUSH2 0x8DA JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x858 DUP5 DUP7 PUSH2 0xB05 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x86E DUP4 DUP6 PUSH2 0xB1C JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x739 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3FE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x907 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x8EB JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x919 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x971 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x989 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x992 DUP4 PUSH2 0x94D 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 0x9B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9BE DUP5 PUSH2 0x94D JUMP JUMPDEST SWAP3 POP PUSH2 0x9CC PUSH1 0x20 DUP6 ADD PUSH2 0x94D JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x739 DUP3 PUSH2 0x94D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0xA12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA1B DUP9 PUSH2 0x94D JUMP JUMPDEST SWAP7 POP PUSH2 0xA29 PUSH1 0x20 DUP10 ADD PUSH2 0x94D JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xA4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA86 DUP4 PUSH2 0x94D JUMP JUMPDEST SWAP2 POP PUSH2 0xA94 PUSH1 0x20 DUP5 ADD PUSH2 0x94D JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0xAFE JUMPI PUSH2 0xAFE PUSH2 0xA9D JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0xB17 JUMPI PUSH2 0xB17 PUSH2 0xA9D JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xB2F JUMPI PUSH2 0xB2F PUSH2 0xA9D JUMP JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH30 0x530BE318861BBECF7973D3C9C261BEFD1AF1931B347EA8F34DF61076AE97 0xBF PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "134:3453:33:-:0;;;1035:439;;;;;;;;;-1:-1:-1;1342:4:33;;;;;;;;;;;-1:-1:-1;;;1342:4:33;;;;;1376:10;;;;;;;;;;-1:-1:-1;;;1376:10:33;;;;1185:272;;1213:95;1185:272;;;273:25:39;1326:22:33;314:18:39;;;307:34;1366:21:33;357:18:39;;;350:34;1115:9:33;400:18:39;;;393:34;1438:4:33;443:19:39;;;;436:61;;;;1185:272:33;;;;;;;;;;245:19:39;;;;1185:272:33;;;1162:305;;;;;1143:16;:324;134:3453;;;-1:-1:-1;134:3453:33;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@DOMAIN_SEPARATOR_8806": { + "entryPoint": null, + "id": 8806, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@PERMIT_TYPEHASH_8810": { + "entryPoint": null, + "id": 8810, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_approve_8945": { + "entryPoint": 1672, + "id": 8945, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_transfer_8983": { + "entryPoint": 1856, + "id": 8983, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@add_6728": { + "entryPoint": 2145, + "id": 6728, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@allowance_8803": { + "entryPoint": null, + "id": 8803, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@approve_9003": { + "entryPoint": 668, + "id": 9003, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@balanceOf_8796": { + "entryPoint": null, + "id": 8796, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@decimals_8788": { + "entryPoint": null, + "id": 8788, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@name_8780": { + "entryPoint": null, + "id": 8780, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@nonces_8815": { + "entryPoint": null, + "id": 8815, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@permit_9155": { + "entryPoint": 920, + "id": 9155, + "parameterSlots": 7, + "returnSlots": 0 + }, + "@sub_6745": { + "entryPoint": 1783, + "id": 6745, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@sub_6773": { + "entryPoint": 2061, + "id": 6773, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@symbol_8784": { + "entryPoint": null, + "id": 8784, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@totalSupply_8791": { + "entryPoint": null, + "id": 8791, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@transferFrom_9075": { + "entryPoint": 690, + "id": 9075, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@transfer_9023": { + "entryPoint": 907, + "id": 9023, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_address": { + "entryPoint": 2381, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 2524, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 2666, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_addresst_uint256": { + "entryPoint": 2464, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32": { + "entryPoint": 2551, + "id": null, + "parameterSlots": 2, + "returnSlots": 7 + }, + "abi_decode_tuple_t_addresst_uint256": { + "entryPoint": 2422, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 7, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 2266, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_2d893fc9f5fa2494c39ecec82df2778b33226458ccce3b9a56f5372437d54a56__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_47797eaaf6df6dc2efdb1e824209400a8293aff4c1e7f6d90fcc4b3e3ba18a87__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 2844, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 2821, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "increment_t_uint256": { + "entryPoint": 2764, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 2717, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:6547:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "135:535:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "145:12:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "155:2:39", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "149:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "173:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "184:2:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "166:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "166:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "166:21:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "196:27:39", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "216:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "210:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "210:13:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "200:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "243:9:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "254:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "239:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "239:18:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "259:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "232:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "232:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "232:34:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "275:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "284:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "279:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "344:90:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "373:9:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "384:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "369:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "369:17:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "388:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "365:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "365:26:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "407:6:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "415:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "403:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "403:14:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "419:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "399:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "399:23:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "393:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "393:30:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "358:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "358:66:39" + }, + "nodeType": "YulExpressionStatement", + "src": "358:66:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "305:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "308:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "302:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "302:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "316:19:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "318:15:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "327:1:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "330:2:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "323:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "323:10:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "318:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "298:3:39", + "statements": [] + }, + "src": "294:140:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "468:66:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "497:9:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "508:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "493:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "493:22:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "517:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "489:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "489:31:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "522:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "482:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "482:42:39" + }, + "nodeType": "YulExpressionStatement", + "src": "482:42:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "449:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "452:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "446:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "446:13:39" + }, + "nodeType": "YulIf", + "src": "443:91:39" + }, + { + "nodeType": "YulAssignment", + "src": "543:121:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "559:9:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "578:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "586:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "574:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "574:15:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "591:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "570:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "570:88:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "555:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "555:104:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "661:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "551:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "551:113:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "543:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "104:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "115:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "126:4:39", + "type": "" + } + ], + "src": "14:656:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "724:147:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "734:29:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "756:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "743:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "743:20:39" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "734:5:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "849:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "858:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "861:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "851:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "851:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "851:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "785:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "796:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "803:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "792:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "792:54:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "782:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "782:65:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "775:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "775:73:39" + }, + "nodeType": "YulIf", + "src": "772:93:39" + } + ] + }, + "name": "abi_decode_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "703:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "714:5:39", + "type": "" + } + ], + "src": "675:196:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "963:167:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1009:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1018:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1021:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1011:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1011:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1011:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "984:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "993:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "980:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "980:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1005:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "976:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "976:32:39" + }, + "nodeType": "YulIf", + "src": "973:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "1034:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1063:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "1044:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "1044:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1034:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1082:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1109:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1120:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1105:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1105:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1092:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1092:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1082:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "921:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "932:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "944:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "952:6:39", + "type": "" + } + ], + "src": "876:254:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1230:92:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1240:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1252:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1263:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1248:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1248:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1240:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1282:9:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1307:6:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1300:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1300:14:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1293:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1293:22:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1275:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1275:41:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1275:41:39" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1199:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1210:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1221:4:39", + "type": "" + } + ], + "src": "1135:187:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1428:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1438:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1450:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1461:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1446:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1446:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1438:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1480:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1491:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1473:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1473:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1473:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1397:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1408:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1419:4:39", + "type": "" + } + ], + "src": "1327:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1613:224:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1659:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1668:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1671:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1661:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1661:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1661:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1634:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1643:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1630:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1630:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1655:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1626:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1626:32:39" + }, + "nodeType": "YulIf", + "src": "1623:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "1684:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1713:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "1694:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "1694:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1684:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1732:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1765:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1776:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1761:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1761:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "1742:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "1742:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1732:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1789:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1816:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1827:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1812:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1812:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1799:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "1799:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "1789:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1563:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1574:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1586:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1594:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "1602:6:39", + "type": "" + } + ], + "src": "1509:328:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1943:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1953:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1965:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1976:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1961:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1961:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1953:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1995:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2006:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1988:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1988:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1988:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1912:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1923:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1934:4:39", + "type": "" + } + ], + "src": "1842:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2121:87:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2131:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2143:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2154:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2139:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2139:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2131:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2173:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2188:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2196:4:39", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2184:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2184:17:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2166:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2166:36:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2166:36:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2090:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2101:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2112:4:39", + "type": "" + } + ], + "src": "2024:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2283:116:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2329:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2338:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2341:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2331:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2331:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2331:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2304:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2313:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2300:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2300:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2325:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2296:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2296:32:39" + }, + "nodeType": "YulIf", + "src": "2293:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "2354:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2383:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "2364:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "2364:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2354:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2249:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2260:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2272:6:39", + "type": "" + } + ], + "src": "2213:186:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2574:523:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2621:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2630:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2633:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2623:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2623:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2623:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2595:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2604:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2591:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2591:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2616:3:39", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2587:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2587:33:39" + }, + "nodeType": "YulIf", + "src": "2584:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "2646:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2675:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "2656:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "2656:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2646:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2694:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2727:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2738:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2723:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2723:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "2704:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "2704:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2694:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2751:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2778:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2789:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2774:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2774:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2761:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2761:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "2751:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2802:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2829:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2840:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2825:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2825:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2812:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2812:32:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "2802:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2853:46:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2883:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2894:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2879:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2879:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2866:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2866:33:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2857:5:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2947:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2956:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2959:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2949:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2949:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2949:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2921:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2932:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2939:4:39", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2928:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2928:16:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "2918:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "2918:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2911:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2911:35:39" + }, + "nodeType": "YulIf", + "src": "2908:55:39" + }, + { + "nodeType": "YulAssignment", + "src": "2972:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2982:5:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "2972:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2996:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3023:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3034:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3019:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3019:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3006:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "3006:33:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "2996:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3048:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3075:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3086:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3071:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3071:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3058:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "3058:33:39" + }, + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "3048:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2492:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2503:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2515:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2523:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "2531:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "2539:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "2547:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "2555:6:39", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "2563:6:39", + "type": "" + } + ], + "src": "2404:693:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3189:173:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3235:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3244:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3247:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3237:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3237:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3237:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3210:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3219:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3206:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3206:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3231:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3202:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3202:32:39" + }, + "nodeType": "YulIf", + "src": "3199:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "3260:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3289:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "3270:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "3270:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3260:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3308:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3341:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3352:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3337:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3337:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "3318:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "3318:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "3308:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3147:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3158:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3170:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "3178:6:39", + "type": "" + } + ], + "src": "3102:260:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3541:168:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3558:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3569:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3551:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3551:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3551:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3592:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3603:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3588:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3588:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3608:2:39", + "type": "", + "value": "18" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3581:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3581:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3581:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3631:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3642:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3627:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3627:18:39" + }, + { + "hexValue": "556e697377617056323a2045585049524544", + "kind": "string", + "nodeType": "YulLiteral", + "src": "3647:20:39", + "type": "", + "value": "UniswapV2: EXPIRED" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3620:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3620:48:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3620:48:39" + }, + { + "nodeType": "YulAssignment", + "src": "3677:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3689:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3700:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3685:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3685:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3677:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_47797eaaf6df6dc2efdb1e824209400a8293aff4c1e7f6d90fcc4b3e3ba18a87__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3518:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3532:4:39", + "type": "" + } + ], + "src": "3367:342:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3746:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3763:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3766:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3756:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3756:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3756:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3860:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3863:4:39", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3853:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3853:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3853:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3884:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3887:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3877:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3877:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3877:15:39" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "3714:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3950:148:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4041:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "4043:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "4043:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4043:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3966:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3973:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "3963:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "3963:77:39" + }, + "nodeType": "YulIf", + "src": "3960:103:39" + }, + { + "nodeType": "YulAssignment", + "src": "4072:20:39", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4083:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4090:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4079:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4079:13:39" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "4072:3:39" + } + ] + } + ] + }, + "name": "increment_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3932:5:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "3942:3:39", + "type": "" + } + ], + "src": "3903:195:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4344:373:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4354:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4366:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4377:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4362:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4362:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4354:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4397:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4408:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4390:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4390:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4390:25:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4424:52:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4434:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "4428:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4496:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4507:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4492:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4492:18:39" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "4516:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "4524:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "4512:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4512:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4485:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4485:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4485:43:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4548:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4559:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4544:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4544:18:39" + }, + { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "4568:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "4576:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "4564:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4564:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4537:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4537:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4537:43:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4600:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4611:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4596:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4596:18:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "4616:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4589:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4589:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4589:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4643:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4654:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4639:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4639:19:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "4660:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4632:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4632:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4632:35:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4687:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4698:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4683:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4683:19:39" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "4704:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4676:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4676:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4676:35:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4273:9:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "4284:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "4292:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "4300:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "4308:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "4316:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4324:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4335:4:39", + "type": "" + } + ], + "src": "4103:614:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4970:196:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4987:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4992:66:39", + "type": "", + "value": "0x1901000000000000000000000000000000000000000000000000000000000000" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4980:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4980:79:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4980:79:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5079:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5084:1:39", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5075:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5075:11:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5088:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5068:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5068:27:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5068:27:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5115:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5120:2:39", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5111:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5111:12:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "5125:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5104:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5104:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5104:28:39" + }, + { + "nodeType": "YulAssignment", + "src": "5141:19:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5152:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5157:2:39", + "type": "", + "value": "66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5148:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5148:12:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "5141:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "4938:3:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "4943:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4951:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "4962:3:39", + "type": "" + } + ], + "src": "4722:444:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5352:217:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5362:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5374:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5385:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5370:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5370:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5362:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5405:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5416:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5398:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5398:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5398:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5443:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5454:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5439:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5439:18:39" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "5463:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5471:4:39", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5459:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5459:17:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5432:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5432:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5432:45:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5497:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5508:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5493:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5493:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "5513:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5486:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5486:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5486:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5540:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5551:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5536:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5536:18:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "5556:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5529:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5529:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5529:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5297:9:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "5308:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "5316:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "5324:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5332:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5343:4:39", + "type": "" + } + ], + "src": "5171:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5748:178:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5765:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5776:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5758:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5758:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5758:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5799:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5810:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5795:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5795:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5815:2:39", + "type": "", + "value": "28" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5788:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5788:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5788:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5838:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5849:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5834:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5834:18:39" + }, + { + "hexValue": "556e697377617056323a20494e56414c49445f5349474e4154555245", + "kind": "string", + "nodeType": "YulLiteral", + "src": "5854:30:39", + "type": "", + "value": "UniswapV2: INVALID_SIGNATURE" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5827:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5827:58:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5827:58:39" + }, + { + "nodeType": "YulAssignment", + "src": "5894:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5906:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5917:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5902:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5902:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5894:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_2d893fc9f5fa2494c39ecec82df2778b33226458ccce3b9a56f5372437d54a56__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5725:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5739:4:39", + "type": "" + } + ], + "src": "5574:352:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5980:76:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6002:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "6004:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "6004:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6004:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "5996:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "5999:1:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "5993:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "5993:8:39" + }, + "nodeType": "YulIf", + "src": "5990:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "6033:17:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "6045:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "6048:1:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6041:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6041:9:39" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "6033:4:39" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "5962:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "5965:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "5971:4:39", + "type": "" + } + ], + "src": "5931:125:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6109:80:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6136:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "6138:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "6138:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6138:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "6125:1:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "6132:1:39" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "6128:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6128:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "6122:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "6122:13:39" + }, + "nodeType": "YulIf", + "src": "6119:39:39" + }, + { + "nodeType": "YulAssignment", + "src": "6167:16:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "6178:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "6181:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6174:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6174:9:39" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "6167:3:39" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "6092:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "6095:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "6101:3:39", + "type": "" + } + ], + "src": "6061:128:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6368:177:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6385:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6396:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6378:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6378:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6378:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6419:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6430:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6415:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6415:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6435:2:39", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6408:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6408:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6408:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6458:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6469:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6454:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6454:18:39" + }, + { + "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6474:29:39", + "type": "", + "value": "SafeMath: addition overflow" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6447:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6447:57:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6447:57:39" + }, + { + "nodeType": "YulAssignment", + "src": "6513:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6525:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6536:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6521:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6521:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6513:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6345:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6359:4:39", + "type": "" + } + ], + "src": "6194:351:39" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n if gt(i, length)\n {\n mstore(add(add(headStart, length), 64), 0)\n }\n tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let value := calldataload(add(headStart, 128))\n if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n value4 := value\n value5 := calldataload(add(headStart, 160))\n value6 := calldataload(add(headStart, 192))\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_encode_tuple_t_stringliteral_47797eaaf6df6dc2efdb1e824209400a8293aff4c1e7f6d90fcc4b3e3ba18a87__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 18)\n mstore(add(headStart, 64), \"UniswapV2: EXPIRED\")\n tail := add(headStart, 96)\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 192)\n mstore(headStart, value0)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n mstore(add(headStart, 160), value5)\n }\n function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n mstore(pos, 0x1901000000000000000000000000000000000000000000000000000000000000)\n mstore(add(pos, 2), value0)\n mstore(add(pos, 34), value1)\n end := add(pos, 66)\n }\n function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, 0xff))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_stringliteral_2d893fc9f5fa2494c39ecec82df2778b33226458ccce3b9a56f5372437d54a56__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 28)\n mstore(add(headStart, 64), \"UniswapV2: INVALID_SIGNATURE\")\n tail := add(headStart, 96)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"SafeMath: addition overflow\")\n tail := add(headStart, 96)\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461020d578063a9059cbb14610249578063d505accf1461025c578063dd62ed3e1461027157600080fd5b80633644e515146101c457806370a08231146101cd5780637ecebe00146101ed57600080fd5b806323b872dd116100bd57806323b872dd1461017057806330adf81f14610183578063313ce567146101aa57600080fd5b806306fdde03146100e4578063095ea7b31461013657806318160ddd14610159575b600080fd5b6101206040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b60405161012d91906108da565b60405180910390f35b610149610144366004610976565b61029c565b604051901515815260200161012d565b61016260005481565b60405190815260200161012d565b61014961017e3660046109a0565b6102b2565b6101627f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6101b2601281565b60405160ff909116815260200161012d565b61016260035481565b6101626101db3660046109dc565b60016020526000908152604090205481565b6101626101fb3660046109dc565b60046020526000908152604090205481565b6101206040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b610149610257366004610976565b61038b565b61026f61026a3660046109f7565b610398565b005b61016261027f366004610a6a565b600260209081526000928352604080842090915290825290205481565b60006102a9338484610688565b50600192915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146103765773ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832033845290915290205461034490836106f7565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610381848484610740565b5060019392505050565b60006102a9338484610740565b42841015610407576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a2045585049524544000000000000000000000000000060448201526064015b60405180910390fd5b60035473ffffffffffffffffffffffffffffffffffffffff8816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91908761046783610acc565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016105089291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015610591573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061060c57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e41545552450000000060448201526064016103fe565b61067d898989610688565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061073983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061080d565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461077090826106f7565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546107ac9082610861565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106ea9085815260200190565b6000818484111561084b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103fe91906108da565b5060006108588486610b05565b95945050505050565b60008061086e8385610b1c565b905083811015610739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103fe565b600060208083528351808285015260005b81811015610907578581018301518582016040015282016108eb565b81811115610919576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461097157600080fd5b919050565b6000806040838503121561098957600080fd5b6109928361094d565b946020939093013593505050565b6000806000606084860312156109b557600080fd5b6109be8461094d565b92506109cc6020850161094d565b9150604084013590509250925092565b6000602082840312156109ee57600080fd5b6107398261094d565b600080600080600080600060e0888a031215610a1257600080fd5b610a1b8861094d565b9650610a296020890161094d565b95506040880135945060608801359350608088013560ff81168114610a4d57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610a7d57600080fd5b610a868361094d565b9150610a946020840161094d565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610afe57610afe610a9d565b5060010190565b600082821015610b1757610b17610a9d565b500390565b60008219821115610b2f57610b2f610a9d565b50019056fea26469706673582212207d530be318861bbecf7973d3c9c261befd1af1931b347ea8f34df61076ae97bf64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3644E515 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x20D JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x1C4 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x183 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x136 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x159 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x120 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x556E697377617020563200000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12D SWAP2 SWAP1 PUSH2 0x8DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x149 PUSH2 0x144 CALLDATASIZE PUSH1 0x4 PUSH2 0x976 JUMP JUMPDEST PUSH2 0x29C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12D JUMP JUMPDEST PUSH2 0x162 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12D JUMP JUMPDEST PUSH2 0x149 PUSH2 0x17E CALLDATASIZE PUSH1 0x4 PUSH2 0x9A0 JUMP JUMPDEST PUSH2 0x2B2 JUMP JUMPDEST PUSH2 0x162 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x1B2 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12D JUMP JUMPDEST PUSH2 0x162 PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x162 PUSH2 0x1DB CALLDATASIZE PUSH1 0x4 PUSH2 0x9DC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x162 PUSH2 0x1FB CALLDATASIZE PUSH1 0x4 PUSH2 0x9DC JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x120 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x554E492D56320000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x149 PUSH2 0x257 CALLDATASIZE PUSH1 0x4 PUSH2 0x976 JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST PUSH2 0x26F PUSH2 0x26A CALLDATASIZE PUSH1 0x4 PUSH2 0x9F7 JUMP JUMPDEST PUSH2 0x398 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x162 PUSH2 0x27F CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A9 CALLER DUP5 DUP5 PUSH2 0x688 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0x376 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x344 SWAP1 DUP4 PUSH2 0x6F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x381 DUP5 DUP5 DUP5 PUSH2 0x740 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A9 CALLER DUP5 DUP5 PUSH2 0x740 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x407 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20455850495245440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SWAP3 SWAP2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP12 SWAP2 SWAP1 DUP8 PUSH2 0x467 DUP4 PUSH2 0xACC JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x508 SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x591 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x60C JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x672 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F5349474E415455524500000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3FE JUMP JUMPDEST PUSH2 0x67D DUP10 DUP10 DUP10 PUSH2 0x688 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x739 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x80D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x770 SWAP1 DUP3 PUSH2 0x6F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x7AC SWAP1 DUP3 PUSH2 0x861 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x6EA SWAP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x84B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3FE SWAP2 SWAP1 PUSH2 0x8DA JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x858 DUP5 DUP7 PUSH2 0xB05 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x86E DUP4 DUP6 PUSH2 0xB1C JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x739 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3FE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x907 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x8EB JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x919 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x971 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x989 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x992 DUP4 PUSH2 0x94D 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 0x9B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9BE DUP5 PUSH2 0x94D JUMP JUMPDEST SWAP3 POP PUSH2 0x9CC PUSH1 0x20 DUP6 ADD PUSH2 0x94D JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x739 DUP3 PUSH2 0x94D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0xA12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA1B DUP9 PUSH2 0x94D JUMP JUMPDEST SWAP7 POP PUSH2 0xA29 PUSH1 0x20 DUP10 ADD PUSH2 0x94D JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xA4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA86 DUP4 PUSH2 0x94D JUMP JUMPDEST SWAP2 POP PUSH2 0xA94 PUSH1 0x20 DUP5 ADD PUSH2 0x94D JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0xAFE JUMPI PUSH2 0xAFE PUSH2 0xA9D JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0xB17 JUMPI PUSH2 0xB17 PUSH2 0xA9D JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xB2F JUMPI PUSH2 0xB2F PUSH2 0xA9D JUMP JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH30 0x530BE318861BBECF7973D3C9C261BEFD1AF1931B347EA8F34DF61076AE97 0xBF PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "134:3453:33:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;213:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;2288:153;;;;;;:::i;:::-;;:::i;:::-;;;1300:14:39;;1293:22;1275:41;;1263:2;1248:18;2288:153:33;1135:187:39;375:33:33;;;;;;;;;1473:25:39;;;1461:2;1446:18;375:33:33;1327:177:39;2598:310:33;;;;;;:::i;:::-;;:::i;697:117::-;;748:66;697:117;;325:44;;367:2;325:44;;;;;2196:4:39;2184:17;;;2166:36;;2154:2;2139:18;325:44:33;2024:184:39;547:40:33;;;;;;414:50;;;;;;:::i;:::-;;;;;;;;;;;;;;820:47;;;;;;:::i;:::-;;;;;;;;;;;;;;270:49;;;;;;;;;;;;;;;;;;;;;2447:145;;;;;;:::i;:::-;;:::i;2914:671::-;;;;;;:::i;:::-;;:::i;:::-;;470:70;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2288:153;2361:4;2377:36;2386:10;2398:7;2407:5;2377:8;:36::i;:::-;-1:-1:-1;2430:4:33;2288:153;;;;:::o;2598:310::-;2705:15;;;2685:4;2705:15;;;:9;:15;;;;;;;;2721:10;2705:27;;;;;;;;2736:14;2705:45;2701:144;;2796:15;;;;;;;:9;:15;;;;;;;;2812:10;2796:27;;;;;;;;:38;;2828:5;2796:31;:38::i;:::-;2766:15;;;;;;;:9;:15;;;;;;;;2782:10;2766:27;;;;;;;:68;2701:144;2854:26;2864:4;2870:2;2874:5;2854:9;:26::i;:::-;-1:-1:-1;2897:4:33;2598:310;;;;;:::o;2447:145::-;2516:4;2532:32;2542:10;2554:2;2558:5;2532:9;:32::i;2914:671::-;3068:15;3056:8;:27;;3048:58;;;;;;;3569:2:39;3048:58:33;;;3551:21:39;3608:2;3588:18;;;3581:30;3647:20;3627:18;;;3620:48;3685:18;;3048:58:33;;;;;;;;;3218:16;;3313:13;;;3116:14;3313:13;;;:6;:13;;;;;:15;;3116:14;;3218:16;748:66;;3290:5;;3297:7;;3306:5;;3313:15;3116:14;3313:15;;;:::i;:::-;;;;-1:-1:-1;3262:77:33;;;;;;4390:25:39;;;;4434:42;4512:15;;;4492:18;;;4485:43;4564:15;;;;4544:18;;;4537:43;4596:18;;;4589:34;4639:19;;;4632:35;4683:19;;;4676:35;;;4362:19;;3262:77:33;;;;;;;;;;;;3252:88;;;;;;3156:198;;;;;;;;4992:66:39;4980:79;;5084:1;5075:11;;5068:27;;;;5120:2;5111:12;;5104:28;5157:2;5148:12;;4722:444;3156:198:33;;;;;;;;;;;;;;3133:231;;3156:198;3133:231;;;;3374:24;3401:26;;;;;;;;;5398:25:39;;;5471:4;5459:17;;5439:18;;;5432:45;;;;5493:18;;;5486:34;;;5536:18;;;5529:34;;;3133:231:33;;-1:-1:-1;3374:24:33;3401:26;;5370:19:39;;3401:26:33;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3401:26:33;;;;;;-1:-1:-1;;3445:30:33;;;;;;;:59;;;3499:5;3479:25;;:16;:25;;;3445:59;3437:100;;;;;;;5776:2:39;3437:100:33;;;5758:21:39;5815:2;5795:18;;;5788:30;5854;5834:18;;;5827:58;5902:18;;3437:100:33;5574:352:39;3437:100:33;3547:31;3556:5;3563:7;3572:5;3547:8;:31::i;:::-;3038:547;;2914:671;;;;;;;:::o;1894:166::-;1974:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;2022:31;;1473:25:39;;;2022:31:33;;1446:18:39;2022:31:33;;;;;;;;1894:166;;;:::o;1308:134:23:-;1366:7;1392:43;1396:1;1399;1392:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1385:50;1308:134;-1:-1:-1;;;1308:134:23:o;2066:216:33:-;2159:15;;;;;;;:9;:15;;;;;;:26;;2179:5;2159:19;:26::i;:::-;2141:15;;;;;;;;:9;:15;;;;;;:44;;;;2211:13;;;;;;;:24;;2229:5;2211:17;:24::i;:::-;2195:13;;;;;;;;:9;:13;;;;;;;:40;;;;2250:25;;;;;;;;;;2269:5;1473:25:39;;1461:2;1446:18;;1327:177;1766:187:23;1852:7;1887:12;1879:6;;;;1871:29;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1910:9:23;1922:5;1926:1;1922;:5;:::i;:::-;1910:17;1766:187;-1:-1:-1;;;;;1766:187:23:o;868:176::-;926:7;;957:5;961:1;957;:5;:::i;:::-;945:17;;985:1;980;:6;;972:46;;;;;;;6396:2:39;972:46:23;;;6378:21:39;6435:2;6415:18;;;6408:30;6474:29;6454:18;;;6447:57;6521:18;;972:46:23;6194:351:39;14:656;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;586:2:39;574:15;591:66;570:88;555:104;;;;661:2;551:113;;14:656;-1:-1:-1;;;14:656:39:o;675:196::-;743:20;;803:42;792:54;;782:65;;772:93;;861:1;858;851:12;772:93;675:196;;;:::o;876:254::-;944:6;952;1005:2;993:9;984:7;980:23;976:32;973:52;;;1021:1;1018;1011:12;973:52;1044:29;1063:9;1044:29;:::i;:::-;1034:39;1120:2;1105:18;;;;1092:32;;-1:-1:-1;;;876:254:39:o;1509:328::-;1586:6;1594;1602;1655:2;1643:9;1634:7;1630:23;1626:32;1623:52;;;1671:1;1668;1661:12;1623:52;1694:29;1713:9;1694:29;:::i;:::-;1684:39;;1742:38;1776:2;1765:9;1761:18;1742:38;:::i;:::-;1732:48;;1827:2;1816:9;1812:18;1799:32;1789:42;;1509:328;;;;;:::o;2213:186::-;2272:6;2325:2;2313:9;2304:7;2300:23;2296:32;2293:52;;;2341:1;2338;2331:12;2293:52;2364:29;2383:9;2364:29;:::i;2404:693::-;2515:6;2523;2531;2539;2547;2555;2563;2616:3;2604:9;2595:7;2591:23;2587:33;2584:53;;;2633:1;2630;2623:12;2584:53;2656:29;2675:9;2656:29;:::i;:::-;2646:39;;2704:38;2738:2;2727:9;2723:18;2704:38;:::i;:::-;2694:48;;2789:2;2778:9;2774:18;2761:32;2751:42;;2840:2;2829:9;2825:18;2812:32;2802:42;;2894:3;2883:9;2879:19;2866:33;2939:4;2932:5;2928:16;2921:5;2918:27;2908:55;;2959:1;2956;2949:12;2908:55;2404:693;;;;-1:-1:-1;2404:693:39;;;;2982:5;3034:3;3019:19;;3006:33;;-1:-1:-1;3086:3:39;3071:19;;;3058:33;;2404:693;-1:-1:-1;;2404:693:39:o;3102:260::-;3170:6;3178;3231:2;3219:9;3210:7;3206:23;3202:32;3199:52;;;3247:1;3244;3237:12;3199:52;3270:29;3289:9;3270:29;:::i;:::-;3260:39;;3318:38;3352:2;3341:9;3337:18;3318:38;:::i;:::-;3308:48;;3102:260;;;;;:::o;3714:184::-;3766:77;3763:1;3756:88;3863:4;3860:1;3853:15;3887:4;3884:1;3877:15;3903:195;3942:3;3973:66;3966:5;3963:77;3960:103;;;4043:18;;:::i;:::-;-1:-1:-1;4090:1:39;4079:13;;3903:195::o;5931:125::-;5971:4;5999:1;5996;5993:8;5990:34;;;6004:18;;:::i;:::-;-1:-1:-1;6041:9:39;;5931:125::o;6061:128::-;6101:3;6132:1;6128:6;6125:1;6122:13;6119:39;;;6138:18;;:::i;:::-;-1:-1:-1;6174:9:39;;6061:128::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "584400", + "executionCost": "23044", + "totalCost": "607444" + }, + "external": { + "DOMAIN_SEPARATOR()": "2318", + "PERMIT_TYPEHASH()": "240", + "allowance(address,address)": "infinite", + "approve(address,uint256)": "24549", + "balanceOf(address)": "2552", + "decimals()": "271", + "name()": "infinite", + "nonces(address)": "2574", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "infinite", + "symbol()": "infinite", + "totalSupply()": "2363", + "transfer(address,uint256)": "infinite", + "transferFrom(address,address,uint256)": "infinite" + }, + "internal": { + "_approve(address,address,uint256)": "infinite", + "_burn(address,uint256)": "infinite", + "_mint(address,uint256)": "infinite", + "_transfer(address,address,uint256)": "infinite" + } + }, + "methodIdentifiers": { + "DOMAIN_SEPARATOR()": "3644e515", + "PERMIT_TYPEHASH()": "30adf81f", + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "name()": "06fdde03", + "nonces(address)": "7ecebe00", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"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\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Uniswap/UniswapV2ERC20.sol\":\"UniswapV2ERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\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\\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 * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\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 * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\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 * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (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) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts 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 * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts 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 * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\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}\",\"keccak256\":\"0x43a20f7cf4c4319f81450d53779455e88a7ab80bdfc43925156ed4083b74a180\",\"license\":\"MIT\"},\"contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ninterface IUniswapV2ERC20 {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external pure returns (string memory);\\n function symbol() external pure returns (string memory);\\n function decimals() external pure returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n function PERMIT_TYPEHASH() external pure returns (bytes32);\\n function nonces(address owner) external view returns (uint);\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\\n}\\n\",\"keccak256\":\"0x9845bf55f69d1f7ce821b95861a78821a118bdb3f1c8997b6bb0c2b6a890901c\",\"license\":\"MIT\"},\"contracts/Uniswap/UniswapV2ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport './Interfaces/IUniswapV2ERC20.sol';\\nimport '../Math/SafeMath.sol';\\n\\ncontract UniswapV2ERC20 is IUniswapV2ERC20 {\\n using SafeMath for uint;\\n\\n string public override constant name = 'Uniswap V2';\\n string public override constant symbol = 'UNI-V2';\\n uint8 public override constant decimals = 18;\\n uint public override totalSupply;\\n mapping(address => uint) public override balanceOf;\\n mapping(address => mapping(address => uint)) public override allowance;\\n\\n bytes32 public override DOMAIN_SEPARATOR;\\n // keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\");\\n bytes32 public constant override PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;\\n mapping(address => uint) public override nonces;\\n\\n // event Approval(address indexed owner, address indexed spender, uint value);\\n // event Transfer(address indexed from, address indexed to, uint value);\\n\\n constructor() {\\n uint chainId;\\n assembly {\\n chainId := chainid()\\n }\\n DOMAIN_SEPARATOR = keccak256(\\n abi.encode(\\n keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),\\n keccak256(bytes(name)),\\n keccak256(bytes('1')),\\n chainId,\\n address(this)\\n )\\n );\\n }\\n\\n function _mint(address to, uint value) internal {\\n totalSupply = totalSupply.add(value);\\n balanceOf[to] = balanceOf[to].add(value);\\n emit Transfer(address(0), to, value);\\n }\\n\\n function _burn(address from, uint value) internal {\\n balanceOf[from] = balanceOf[from].sub(value);\\n totalSupply = totalSupply.sub(value);\\n emit Transfer(from, address(0), value);\\n }\\n\\n function _approve(address owner, address spender, uint value) private {\\n allowance[owner][spender] = value;\\n emit Approval(owner, spender, value);\\n }\\n\\n function _transfer(address from, address to, uint value) private {\\n balanceOf[from] = balanceOf[from].sub(value);\\n balanceOf[to] = balanceOf[to].add(value);\\n emit Transfer(from, to, value);\\n }\\n\\n function approve(address spender, uint value) external override returns (bool) {\\n _approve(msg.sender, spender, value);\\n return true;\\n }\\n\\n function transfer(address to, uint value) external override returns (bool) {\\n _transfer(msg.sender, to, value);\\n return true;\\n }\\n\\n function transferFrom(address from, address to, uint value) external override returns (bool) {\\n if (allowance[from][msg.sender] != type(uint).max) {\\n allowance[from][msg.sender] = allowance[from][msg.sender].sub(value);\\n }\\n _transfer(from, to, value);\\n return true;\\n }\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external override {\\n require(deadline >= block.timestamp, 'UniswapV2: EXPIRED');\\n bytes32 digest = keccak256(\\n abi.encodePacked(\\n '\\\\x19\\\\x01',\\n DOMAIN_SEPARATOR,\\n keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))\\n )\\n );\\n address recoveredAddress = ecrecover(digest, v, r, s);\\n require(recoveredAddress != address(0) && recoveredAddress == owner, 'UniswapV2: INVALID_SIGNATURE');\\n _approve(owner, spender, value);\\n }\\n}\\n\",\"keccak256\":\"0x7e7e4057f86eed869009463eb8a0895cf6b868494ae3773e12b2ad7c07ff9cb4\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 8791, + "contract": "contracts/Uniswap/UniswapV2ERC20.sol:UniswapV2ERC20", + "label": "totalSupply", + "offset": 0, + "slot": "0", + "type": "t_uint256" + }, + { + "astId": 8796, + "contract": "contracts/Uniswap/UniswapV2ERC20.sol:UniswapV2ERC20", + "label": "balanceOf", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 8803, + "contract": "contracts/Uniswap/UniswapV2ERC20.sol:UniswapV2ERC20", + "label": "allowance", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))" + }, + { + "astId": 8806, + "contract": "contracts/Uniswap/UniswapV2ERC20.sol:UniswapV2ERC20", + "label": "DOMAIN_SEPARATOR", + "offset": 0, + "slot": "3", + "type": "t_bytes32" + }, + { + "astId": 8815, + "contract": "contracts/Uniswap/UniswapV2ERC20.sol:UniswapV2ERC20", + "label": "nonces", + "offset": 0, + "slot": "4", + "type": "t_mapping(t_address,t_uint256)" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_bytes32": { + "encoding": "inplace", + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32", + "value": "t_mapping(t_address,t_uint256)" + }, + "t_mapping(t_address,t_uint256)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/Uniswap/UniswapV2Factory.sol": { + "UniswapV2Factory": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_feeToSetter", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token0", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token1", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "pair", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "PairCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "allPairs", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "allPairsLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + } + ], + "name": "createPair", + "outputs": [ + { + "internalType": "address", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "feeTo", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "feeToSetter", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "getPair", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_feeTo", + "type": "address" + } + ], + "name": "setFeeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_feeToSetter", + "type": "address" + } + ], + "name": "setFeeToSetter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": { + "@_9189": { + "entryPoint": null, + "id": 9189, + "parameterSlots": 1, + "returnSlots": 0 + }, + "abi_decode_tuple_t_address_fromMemory": { + "entryPoint": 84, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:306:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "95:209:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "141:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "150:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "153:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "143:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "143:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "143:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "116:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "125:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "112:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "112:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "137:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "108:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "108:32:39" + }, + "nodeType": "YulIf", + "src": "105:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "166:29:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "185:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "179:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "179:16:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "170:5:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "258:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "267:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "270:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "260:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "260:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "260:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "217:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "228:5:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "243:3:39", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "248:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "239:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "239:11:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "252:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "235:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "235:19:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "224:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "224:31:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "214:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "214:42:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "207:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "207:50:39" + }, + "nodeType": "YulIf", + "src": "204:70:39" + }, + { + "nodeType": "YulAssignment", + "src": "283:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "293:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "283:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "61:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "72:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "84:6:39", + "type": "" + } + ], + "src": "14:290:39" + } + ] + }, + "contents": "{\n { }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506040516136d73803806136d783398101604081905261002f91610054565b600180546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b613644806100936000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063a2e74af61161005b578063a2e74af61461011b578063c9c6539614610130578063e6a4390514610143578063f46901ed1461018457600080fd5b8063017e7e581461008d578063094b7415146100d75780631e3dd18b146100f7578063574f2ba31461010a575b600080fd5b6000546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6001546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100ad61010536600461078e565b610197565b6003546040519081526020016100ce565b61012e6101293660046107d0565b6101ce565b005b6100ad61013e3660046107f2565b61029b565b6100ad6101513660046107f2565b600260209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b61012e6101923660046107d0565b6106b9565b600381815481106101a757600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60015473ffffffffffffffffffffffffffffffffffffffff163314610254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e00000000000000000000000060448201526064015b60405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015260640161024b565b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610610370578385610373565b84845b909250905073ffffffffffffffffffffffffffffffffffffffff82166103f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015260640161024b565b73ffffffffffffffffffffffffffffffffffffffff828116600090815260026020908152604080832085851684529091529020541615610491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f556e697377617056323a20504149525f45584953545300000000000000000000604482015260640161024b565b6000604051806020016104a390610781565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f9091011660408190527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086811b8216602084015285901b166034820152909150600090604801604051602081830303815290604052805190602001209050808251602084016000f56040517f485cc95500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015285811660248301529196509086169063485cc95590604401600060405180830381600087803b1580156105ac57600080fd5b505af11580156105c0573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526002602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff000000000000000000000000000000000000000098891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9095018054909716841790965592548351928352908201527f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9910160405180910390a35050505092915050565b60015473ffffffffffffffffffffffffffffffffffffffff16331461073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015260640161024b565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612de98061082683390190565b6000602082840312156107a057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107cb57600080fd5b919050565b6000602082840312156107e257600080fd5b6107eb826107a7565b9392505050565b6000806040838503121561080557600080fd5b61080e836107a7565b915061081c602084016107a7565b9050925092905056fe60806040526001600c5534801561001557600080fd5b50600580546001600160a01b03191633179055612db2806100376000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a71461049b578063d505accf146104bb578063dd62ed3e146104ce578063fff6cae9146104f957600080fd5b8063ba9a7a561461045f578063bc25cf7714610468578063c45a01551461047b57600080fd5b80637ecebe00116100d35780637ecebe00146103c857806389afcb44146103e857806395d89b4114610410578063a9059cbb1461044c57600080fd5b80636a6278421461038c57806370a082311461039f5780637464fc3d146103bf57600080fd5b806323b872dd116101665780633644e515116101405780633644e5151461035e578063485cc955146103675780635909c0d51461037a5780635a3d54931461038357600080fd5b806323b872dd1461030a57806330adf81f1461031d578063313ce5671461034457600080fd5b8063095ea7b311610197578063095ea7b31461028b5780630dfe1681146102ae57806318160ddd146102f357600080fd5b8063022c0d9f146101be57806306fdde03146101d35780630902f1ac14610225575b600080fd5b6101d16101cc366004612870565b610501565b005b61020f6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b60405161021c9190612936565b60405180910390f35b600854604080516dffffffffffffffffffffffffffff80841682526e01000000000000000000000000000084041660208201527c010000000000000000000000000000000000000000000000000000000090920463ffffffff169082015260600161021c565b61029e610299366004612987565b610c5d565b604051901515815260200161021c565b6006546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021c565b6102fc60005481565b60405190815260200161021c565b61029e6103183660046129b3565b610c74565b6102fc7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61034c601281565b60405160ff909116815260200161021c565b6102fc60035481565b6101d16103753660046129f4565b610d4d565b6102fc60095481565b6102fc600a5481565b6102fc61039a366004612a2d565b610e21565b6102fc6103ad366004612a2d565b60016020526000908152604090205481565b6102fc600b5481565b6102fc6103d6366004612a2d565b60046020526000908152604090205481565b6103fb6103f6366004612a2d565b6111f7565b6040805192835260208301919091520161021c565b61020f6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b61029e61045a366004612987565b6116af565b6102fc6103e881565b6101d1610476366004612a2d565b6116bc565b6005546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b6007546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b6101d16104c9366004612a4a565b61187f565b6102fc6104dc3660046129f4565b600260209081526000928352604080842090915290825290205481565b6101d1611b6a565b600c54600114610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b454400000000000000000000000000000060448201526064015b60405180910390fd5b6000600c55841515806105855750600084115b610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f556e697377617056323a20494e53554646494349454e545f4f55545055545f4160448201527f4d4f554e540000000000000000000000000000000000000000000000000000006064820152608401610569565b60008061066d6008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b5091509150816dffffffffffffffffffffffffffff16871080156106a05750806dffffffffffffffffffffffffffff1686105b61072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f59000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061079157508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6107f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f00000000000000000000006044820152606401610569565b8a1561080857610808828a8d611d36565b891561081957610819818a8c611d36565b86156108ac576040517f10d1e85c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a16906310d1e85c906108799033908f908f908e908e90600401612ac1565b600060405180830381600087803b15801561089357600080fd5b505af11580156108a7573d6000803e3d6000fd5b505050505b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015610916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093a9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290945073ffffffffffffffffffffffffffffffffffffffff8216906370a0823190602401602060405180830381865afa1580156109a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb9190612b39565b92505050600089856dffffffffffffffffffffffffffff166109ed9190612b81565b83116109fa576000610a1e565b610a148a6dffffffffffffffffffffffffffff8716612b81565b610a1e9084612b81565b90506000610a3c8a6dffffffffffffffffffffffffffff8716612b81565b8311610a49576000610a6d565b610a638a6dffffffffffffffffffffffffffff8716612b81565b610a6d9084612b81565b90506000821180610a7e5750600081115b610b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f556e697377617056323a20494e53554646494349454e545f494e5055545f414d60448201527f4f554e54000000000000000000000000000000000000000000000000000000006064820152608401610569565b6000610b2b610b19846003611ed6565b610b25876103e8611ed6565b90611f92565b90506000610b3d610b19846003611ed6565b9050610b69620f4240610b636dffffffffffffffffffffffffffff8b8116908b16611ed6565b90611ed6565b610b738383611ed6565b1015610bdb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b00000000000000000000000000000000000000006044820152606401610569565b5050610be984848888611fd4565b60408051838152602081018390529081018c9052606081018b905273ffffffffffffffffffffffffffffffffffffffff8a169033907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229060800160405180910390a350506001600c55505050505050505050565b6000610c6a3384846122b0565b5060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610d385773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610d069083611f92565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610d4384848461231f565b5060019392505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610dce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e0000000000000000000000006044820152606401610569565b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b6000600c54600114610e8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c819055600854600654604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808516956e01000000000000000000000000000090950416939273ffffffffffffffffffffffffffffffffffffffff16916370a082319160248083019260209291908290030181865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190612b39565b6007546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291925060009173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff19190612b39565b9050600061100f836dffffffffffffffffffffffffffff8716611f92565b9050600061102d836dffffffffffffffffffffffffffff8716611f92565b9050600061103b87876123ec565b600054909150806110725761105e6103e8610b256110598787611ed6565b612557565b985061106d60006103e86125c7565b6110c7565b6110c46dffffffffffffffffffffffffffff89166110908684611ed6565b61109a9190612bc7565b6dffffffffffffffffffffffffffff89166110b58685611ed6565b6110bf9190612bc7565b612670565b98505b60008911611157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f595f4d494e5445440000000000000000000000000000000000000000000000006064820152608401610569565b6111618a8a6125c7565b61116d86868a8a611fd4565b81156111a9576008546111a5906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611ed6565b600b555b604080518581526020810185905233917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a250506001600c5550949695505050505050565b600080600c54600114611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c819055600854600654600754604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808616966e010000000000000000000000000000909604169473ffffffffffffffffffffffffffffffffffffffff94851694909316929184916370a08231916024808201926020929091908290030181865afa158015611318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133c9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa1580156113ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d09190612b39565b306000908152600160205260408120549192506113ed88886123ec565b600054909150806113fe8487611ed6565b6114089190612bc7565b9a50806114158486611ed6565b61141f9190612bc7565b995060008b118015611431575060008a115b6114bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f595f4255524e45440000000000000000000000000000000000000000000000006064820152608401610569565b6114c73084612686565b6114d2878d8d611d36565b6114dd868d8c611d36565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290955073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa1580156115d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fc9190612b39565b935061160a85858b8b611fd4565b811561164657600854611642906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611ed6565b600b555b604080518c8152602081018c905273ffffffffffffffffffffffffffffffffffffffff8e169133917fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496910160405180910390a35050505050505050506001600c81905550915091565b6000610c6a33848461231f565b600c54600114611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c556006546007546008546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff93841693909216916117f091849186916117eb916dffffffffffffffffffffffffffff9091169084906370a08231906024015b602060405180830381865afa1580156117c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b259190612b39565b611d36565b6008546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015261187591839186916117eb916e0100000000000000000000000000009091046dffffffffffffffffffffffffffff169073ffffffffffffffffffffffffffffffffffffffff8516906370a08231906024016117aa565b50506001600c5550565b428410156118e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a204558504952454400000000000000000000000000006044820152606401610569565b60035473ffffffffffffffffffffffffffffffffffffffff8816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91908761194983612bdb565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016119ea9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611a73573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611aee57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e4154555245000000006044820152606401610569565b611b5f8989896122b0565b505050505050505050565b600c54600114611bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c556006546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152611d2f9173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611c4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6f9190612b39565b6007546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015611cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d019190612b39565b6008546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611fd4565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392871691611dfd9190612c14565b6000604051808303816000865af19150503d8060008114611e3a576040519150601f19603f3d011682016040523d82523d6000602084013e611e3f565b606091505b5091509150818015611e69575080511580611e69575080806020019051810190611e699190612c30565b611ecf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c45440000000000006044820152606401610569565b5050505050565b600082611ee557506000610c6e565b6000611ef18385612c52565b905082611efe8583612bc7565b14611f8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b9392505050565b6000611f8b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612737565b6dffffffffffffffffffffffffffff841180159061200057506dffffffffffffffffffffffffffff8311155b612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f57000000000000000000000000006044820152606401610569565b600061207764010000000042612c8f565b6008549091506000906120b0907c0100000000000000000000000000000000000000000000000000000000900463ffffffff1683612ca3565b905060008163ffffffff161180156120d757506dffffffffffffffffffffffffffff841615155b80156120f257506dffffffffffffffffffffffffffff831615155b156121c0578063ffffffff1661212f8561210b8661278b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906127b6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166121579190612c52565b600960008282546121689190612cc8565b909155505063ffffffff81166121818461210b8761278b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166121a99190612c52565b600a60008282546121ba9190612cc8565b90915550505b6008805463ffffffff84167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8981166e0100000000000000000000000000009081027fffffffff000000000000000000000000000000000000000000000000000000009095168c83161794909417918216831794859055604080519382169282169290921783529290930490911660208201527f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1910160405180910390a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461234f9082611f92565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461238b90826127d2565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123129085815260200190565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa15801561245c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124809190612ce0565b600b5473ffffffffffffffffffffffffffffffffffffffff821615801594509192509061254357801561253e5760006124cf6110596dffffffffffffffffffffffffffff888116908816611ed6565b905060006124dc83612557565b90508082111561253b5760006124fe6124f58484611f92565b60005490611ed6565b9050600061251783612511866005611ed6565b906127d2565b905060006125258284612bc7565b905080156125375761253787826125c7565b5050505b50505b61254f565b801561254f576000600b555b505092915050565b600060038211156125b85750806000612571600283612bc7565b61257c906001612cc8565b90505b818110156125b2579050806002816125978186612bc7565b6125a19190612cc8565b6125ab9190612bc7565b905061257f565b50919050565b81156125c2575060015b919050565b6000546125d490826127d2565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461260690826127d2565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126649085815260200190565b60405180910390a35050565b600081831061267f5781611f8b565b5090919050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546126b69082611f92565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040812091909155546126ea9082611f92565b600090815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612664565b60008184841115612775576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105699190612936565b5060006127828486612b81565b95945050505050565b6000610c6e6e0100000000000000000000000000006dffffffffffffffffffffffffffff8416612cfd565b6000611f8b6dffffffffffffffffffffffffffff831684612d41565b6000806127df8385612cc8565b905083811015611f8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8116811461286d57600080fd5b50565b60008060008060006080868803121561288857600080fd5b853594506020860135935060408601356128a18161284b565b9250606086013567ffffffffffffffff808211156128be57600080fd5b818801915088601f8301126128d257600080fd5b8135818111156128e157600080fd5b8960208285010111156128f357600080fd5b9699959850939650602001949392505050565b60005b83811015612921578181015183820152602001612909565b83811115612930576000848401525b50505050565b6020815260008251806020840152612955816040850160208701612906565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806040838503121561299a57600080fd5b82356129a58161284b565b946020939093013593505050565b6000806000606084860312156129c857600080fd5b83356129d38161284b565b925060208401356129e38161284b565b929592945050506040919091013590565b60008060408385031215612a0757600080fd5b8235612a128161284b565b91506020830135612a228161284b565b809150509250929050565b600060208284031215612a3f57600080fd5b8135611f8b8161284b565b600080600080600080600060e0888a031215612a6557600080fd5b8735612a708161284b565b96506020880135612a808161284b565b95506040880135945060608801359350608088013560ff81168114612aa457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015283604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101949350505050565b600060208284031215612b4b57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612b9357612b93612b52565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612bd657612bd6612b98565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612c0d57612c0d612b52565b5060010190565b60008251612c26818460208701612906565b9190910192915050565b600060208284031215612c4257600080fd5b81518015158114611f8b57600080fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c8a57612c8a612b52565b500290565b600082612c9e57612c9e612b98565b500690565b600063ffffffff83811690831681811015612cc057612cc0612b52565b039392505050565b60008219821115612cdb57612cdb612b52565b500190565b600060208284031215612cf257600080fd5b8151611f8b8161284b565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80831681851681830481118215151615612d3857612d38612b52565b02949350505050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80841680612d7057612d70612b98565b9216919091049291505056fea2646970667358221220738f09b9235788d5f6c3ff0250c6b0722c6d84358a084017dffe70343b7c638b64736f6c634300080a0033a26469706673582212204d51ece745f031a009593a07e5bae4f2787ccc9616fb9acf99f5c1f9b75525ce64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x36D7 CODESIZE SUB DUP1 PUSH2 0x36D7 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x54 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x84 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x3644 DUP1 PUSH2 0x93 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 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA2E74AF6 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA2E74AF6 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0xC9C65396 EQ PUSH2 0x130 JUMPI DUP1 PUSH4 0xE6A43905 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0xF46901ED EQ PUSH2 0x184 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x17E7E58 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x94B7415 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x1E3DD18B EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0x574F2BA3 EQ PUSH2 0x10A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x1 SLOAD PUSH2 0xAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0xAD PUSH2 0x105 CALLDATASIZE PUSH1 0x4 PUSH2 0x78E JUMP JUMPDEST PUSH2 0x197 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xCE JUMP JUMPDEST PUSH2 0x12E PUSH2 0x129 CALLDATASIZE PUSH1 0x4 PUSH2 0x7D0 JUMP JUMPDEST PUSH2 0x1CE JUMP JUMPDEST STOP JUMPDEST PUSH2 0xAD PUSH2 0x13E CALLDATASIZE PUSH1 0x4 PUSH2 0x7F2 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST PUSH2 0xAD PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x7F2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x12E PUSH2 0x192 CALLDATASIZE PUSH1 0x4 PUSH2 0x7D0 JUMP JUMPDEST PUSH2 0x6B9 JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x254 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204944454E544943414C5F4144445245535345530000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x24B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x370 JUMPI DUP4 DUP6 PUSH2 0x373 JUMP JUMPDEST DUP5 DUP5 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x3F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A205A45524F5F41444452455353000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x24B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x491 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20504149525F45584953545300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x24B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH2 0x4A3 SWAP1 PUSH2 0x781 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP3 DUP3 SUB DUP2 ADD DUP4 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD AND PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP7 DUP2 SHL DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE DUP6 SWAP1 SHL AND PUSH1 0x34 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x48 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP1 DUP3 MLOAD PUSH1 0x20 DUP5 ADD PUSH1 0x0 CREATE2 PUSH1 0x40 MLOAD PUSH32 0x485CC95500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 SWAP7 POP SWAP1 DUP7 AND SWAP1 PUSH4 0x485CC955 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP10 DUP8 AND DUP1 DUP7 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP6 KECCAK256 DUP1 SLOAD SWAP8 DUP14 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP9 DUP10 AND DUP2 OR SWAP1 SWAP2 SSTORE SWAP4 DUP4 MSTORE DUP2 DUP6 KECCAK256 DUP7 DUP7 MSTORE DUP4 MSTORE DUP2 DUP6 KECCAK256 DUP1 SLOAD DUP9 AND DUP6 OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP6 DUP2 SWAP1 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP1 SWAP6 ADD DUP1 SLOAD SWAP1 SWAP8 AND DUP5 OR SWAP1 SWAP7 SSTORE SWAP3 SLOAD DUP4 MLOAD SWAP3 DUP4 MSTORE SWAP1 DUP3 ADD MSTORE PUSH32 0xD3648BD0F6BA80134A33BA9275AC585D9D315F0AD8355CDDEFDE31AFA28D0E9 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x73A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x24B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2DE9 DUP1 PUSH2 0x826 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x7CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7EB DUP3 PUSH2 0x7A7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x805 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x80E DUP4 PUSH2 0x7A7 JUMP JUMPDEST SWAP2 POP PUSH2 0x81C PUSH1 0x20 DUP5 ADD PUSH2 0x7A7 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0xC SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x2DB2 DUP1 PUSH2 0x37 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 0x1B9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A627842 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xBA9A7A56 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x49B JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x4BB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x4CE JUMPI DUP1 PUSH4 0xFFF6CAE9 EQ PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBA9A7A56 EQ PUSH2 0x45F JUMPI DUP1 PUSH4 0xBC25CF77 EQ PUSH2 0x468 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x47B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x3C8 JUMPI DUP1 PUSH4 0x89AFCB44 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x410 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6A627842 EQ PUSH2 0x38C JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x39F JUMPI DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x3BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x35E JUMPI DUP1 PUSH4 0x485CC955 EQ PUSH2 0x367 JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x37A JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x30A JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x2AE JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x22C0D9F EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x225 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1D1 PUSH2 0x1CC CALLDATASIZE PUSH1 0x4 PUSH2 0x2870 JUMP JUMPDEST PUSH2 0x501 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x556E697377617020563200000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21C SWAP2 SWAP1 PUSH2 0x2936 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND DUP3 MSTORE PUSH15 0x10000000000000000000000000000 DUP5 DIV AND PUSH1 0x20 DUP3 ADD MSTORE PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 DIV PUSH4 0xFFFFFFFF AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x21C JUMP JUMPDEST PUSH2 0x29E PUSH2 0x299 CALLDATASIZE PUSH1 0x4 PUSH2 0x2987 JUMP JUMPDEST PUSH2 0xC5D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x21C JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x2CE SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x21C JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x21C JUMP JUMPDEST PUSH2 0x29E PUSH2 0x318 CALLDATASIZE PUSH1 0x4 PUSH2 0x29B3 JUMP JUMPDEST PUSH2 0xC74 JUMP JUMPDEST PUSH2 0x2FC PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x34C PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x21C JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x375 CALLDATASIZE PUSH1 0x4 PUSH2 0x29F4 JUMP JUMPDEST PUSH2 0xD4D JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2FC PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x39A CALLDATASIZE PUSH1 0x4 PUSH2 0x2A2D JUMP JUMPDEST PUSH2 0xE21 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x3AD CALLDATASIZE PUSH1 0x4 PUSH2 0x2A2D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2FC PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x3D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A2D JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x3FB PUSH2 0x3F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A2D JUMP JUMPDEST PUSH2 0x11F7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x21C JUMP JUMPDEST PUSH2 0x20F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x554E492D56320000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x29E PUSH2 0x45A CALLDATASIZE PUSH1 0x4 PUSH2 0x2987 JUMP JUMPDEST PUSH2 0x16AF JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x3E8 DUP2 JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x476 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A2D JUMP JUMPDEST PUSH2 0x16BC JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x2CE SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH2 0x2CE SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x4C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A4A JUMP JUMPDEST PUSH2 0x187F JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x4DC CALLDATASIZE PUSH1 0x4 PUSH2 0x29F4 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x1B6A JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x572 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE DUP5 ISZERO ISZERO DUP1 PUSH2 0x585 JUMPI POP PUSH1 0x0 DUP5 GT JUMPDEST PUSH2 0x611 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E53554646494349454E545F4F55545055545F41 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x4D4F554E54000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x66D PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 LT DUP1 ISZERO PUSH2 0x6A0 JUMPI POP DUP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 LT JUMPDEST PUSH2 0x72C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E53554646494349454E545F4C49515549444954 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x5900000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 SWAP1 DUP2 AND SWAP1 DUP10 AND DUP3 EQ DUP1 ISZERO SWAP1 PUSH2 0x791 JUMPI POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST PUSH2 0x7F7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F544F0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST DUP11 ISZERO PUSH2 0x808 JUMPI PUSH2 0x808 DUP3 DUP11 DUP14 PUSH2 0x1D36 JUMP JUMPDEST DUP10 ISZERO PUSH2 0x819 JUMPI PUSH2 0x819 DUP2 DUP11 DUP13 PUSH2 0x1D36 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x8AC JUMPI PUSH1 0x40 MLOAD PUSH32 0x10D1E85C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND SWAP1 PUSH4 0x10D1E85C SWAP1 PUSH2 0x879 SWAP1 CALLER SWAP1 DUP16 SWAP1 DUP16 SWAP1 DUP15 SWAP1 DUP15 SWAP1 PUSH1 0x4 ADD PUSH2 0x2AC1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x893 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x916 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x93A SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9CB SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x0 DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x9ED SWAP2 SWAP1 PUSH2 0x2B81 JUMP JUMPDEST DUP4 GT PUSH2 0x9FA JUMPI PUSH1 0x0 PUSH2 0xA1E JUMP JUMPDEST PUSH2 0xA14 DUP11 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x2B81 JUMP JUMPDEST PUSH2 0xA1E SWAP1 DUP5 PUSH2 0x2B81 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xA3C DUP11 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x2B81 JUMP JUMPDEST DUP4 GT PUSH2 0xA49 JUMPI PUSH1 0x0 PUSH2 0xA6D JUMP JUMPDEST PUSH2 0xA63 DUP11 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x2B81 JUMP JUMPDEST PUSH2 0xA6D SWAP1 DUP5 PUSH2 0x2B81 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 GT DUP1 PUSH2 0xA7E JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0xB09 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E53554646494349454E545F494E5055545F414D PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x4F554E5400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB2B PUSH2 0xB19 DUP5 PUSH1 0x3 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0xB25 DUP8 PUSH2 0x3E8 PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 PUSH2 0x1F92 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB3D PUSH2 0xB19 DUP5 PUSH1 0x3 PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 POP PUSH2 0xB69 PUSH3 0xF4240 PUSH2 0xB63 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND SWAP1 DUP12 AND PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0xB73 DUP4 DUP4 PUSH2 0x1ED6 JUMP JUMPDEST LT ISZERO PUSH2 0xBDB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204B0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST POP POP PUSH2 0xBE9 DUP5 DUP5 DUP9 DUP9 PUSH2 0x1FD4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP12 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND SWAP1 CALLER SWAP1 PUSH32 0xD78AD95FA46C994B6551D0DA85FC275FE613CE37657FB8D5E3D130840159D822 SWAP1 PUSH1 0x80 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC6A CALLER DUP5 DUP5 PUSH2 0x22B0 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xD38 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xD06 SWAP1 DUP4 PUSH2 0x1F92 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0xD43 DUP5 DUP5 DUP5 PUSH2 0x231F JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xDCE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x7 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0xE8F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE PUSH1 0x8 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP6 PUSH15 0x10000000000000000000000000000 SWAP1 SWAP6 DIV AND SWAP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF35 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF59 SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFCD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFF1 SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x100F DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x1F92 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x102D DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x1F92 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x103B DUP8 DUP8 PUSH2 0x23EC JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1072 JUMPI PUSH2 0x105E PUSH2 0x3E8 PUSH2 0xB25 PUSH2 0x1059 DUP8 DUP8 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x2557 JUMP JUMPDEST SWAP9 POP PUSH2 0x106D PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x25C7 JUMP JUMPDEST PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0x10C4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x1090 DUP7 DUP5 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x109A SWAP2 SWAP1 PUSH2 0x2BC7 JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x10B5 DUP7 DUP6 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x10BF SWAP2 SWAP1 PUSH2 0x2BC7 JUMP JUMPDEST PUSH2 0x2670 JUMP JUMPDEST SWAP9 POP JUMPDEST PUSH1 0x0 DUP10 GT PUSH2 0x1157 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E53554646494349454E545F4C49515549444954 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x595F4D494E544544000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST PUSH2 0x1161 DUP11 DUP11 PUSH2 0x25C7 JUMP JUMPDEST PUSH2 0x116D DUP7 DUP7 DUP11 DUP11 PUSH2 0x1FD4 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x11A9 JUMPI PUSH1 0x8 SLOAD PUSH2 0x11A5 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x1ED6 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE CALLER SWAP2 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP SWAP5 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x1266 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE PUSH1 0x8 SLOAD PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND SWAP7 PUSH15 0x10000000000000000000000000000 SWAP1 SWAP7 DIV AND SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP5 SWAP1 SWAP4 AND SWAP3 SWAP2 DUP5 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1318 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x133C SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13AC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13D0 SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x13ED DUP9 DUP9 PUSH2 0x23EC JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x13FE DUP5 DUP8 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x1408 SWAP2 SWAP1 PUSH2 0x2BC7 JUMP JUMPDEST SWAP11 POP DUP1 PUSH2 0x1415 DUP5 DUP7 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x141F SWAP2 SWAP1 PUSH2 0x2BC7 JUMP JUMPDEST SWAP10 POP PUSH1 0x0 DUP12 GT DUP1 ISZERO PUSH2 0x1431 JUMPI POP PUSH1 0x0 DUP11 GT JUMPDEST PUSH2 0x14BD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E53554646494349454E545F4C49515549444954 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x595F4255524E4544000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST PUSH2 0x14C7 ADDRESS DUP5 PUSH2 0x2686 JUMP JUMPDEST PUSH2 0x14D2 DUP8 DUP14 DUP14 PUSH2 0x1D36 JUMP JUMPDEST PUSH2 0x14DD DUP7 DUP14 DUP13 PUSH2 0x1D36 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1547 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x156B SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP6 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x15FC SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST SWAP4 POP PUSH2 0x160A DUP6 DUP6 DUP12 DUP12 PUSH2 0x1FD4 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x1646 JUMPI PUSH1 0x8 SLOAD PUSH2 0x1642 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x1ED6 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP13 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP13 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND SWAP2 CALLER SWAP2 PUSH32 0xDCCD412F0B1252819CB1FD330B93224CA42612892BB3F4F789976E6D81936496 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP PUSH1 0x1 PUSH1 0xC DUP2 SWAP1 SSTORE POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC6A CALLER DUP5 DUP5 PUSH2 0x231F JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x1728 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH2 0x17F0 SWAP2 DUP5 SWAP2 DUP7 SWAP2 PUSH2 0x17EB SWAP2 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP5 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB25 SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH2 0x1D36 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x1875 SWAP2 DUP4 SWAP2 DUP7 SWAP2 PUSH2 0x17EB SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 SWAP2 DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH2 0x17AA JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x18E9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20455850495245440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SWAP3 SWAP2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP12 SWAP2 SWAP1 DUP8 PUSH2 0x1949 DUP4 PUSH2 0x2BDB JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x19EA SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A73 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1AEE JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1B54 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F5349474E415455524500000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH2 0x1B5F DUP10 DUP10 DUP10 PUSH2 0x22B0 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x1BD6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x1D2F SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C4B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C6F SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CDD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D01 SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x1FD4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xC SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x7472616E7366657228616464726573732C75696E743235362900000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP7 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP5 MSTORE SWAP2 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP8 AND SWAP2 PUSH2 0x1DFD SWAP2 SWAP1 PUSH2 0x2C14 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E3A 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 0x1E3F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1E69 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1E69 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1E69 SWAP2 SWAP1 PUSH2 0x2C30 JUMP JUMPDEST PUSH2 0x1ECF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A205452414E534645525F4641494C4544000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1EE5 JUMPI POP PUSH1 0x0 PUSH2 0xC6E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EF1 DUP4 DUP6 PUSH2 0x2C52 JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x1EFE DUP6 DUP4 PUSH2 0x2BC7 JUMP JUMPDEST EQ PUSH2 0x1F8B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7700000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F8B DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x2737 JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT DUP1 ISZERO SWAP1 PUSH2 0x2000 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO JUMPDEST PUSH2 0x2066 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204F564552464C4F5700000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2077 PUSH5 0x100000000 TIMESTAMP PUSH2 0x2C8F JUMP JUMPDEST PUSH1 0x8 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x20B0 SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP4 PUSH2 0x2CA3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x20D7 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x20F2 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x21C0 JUMPI DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x212F DUP6 PUSH2 0x210B DUP7 PUSH2 0x278B JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0x27B6 JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2157 SWAP2 SWAP1 PUSH2 0x2C52 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2168 SWAP2 SWAP1 PUSH2 0x2CC8 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x2181 DUP5 PUSH2 0x210B DUP8 PUSH2 0x278B JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x21A9 SWAP2 SWAP1 PUSH2 0x2C52 JUMP JUMPDEST PUSH1 0xA PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x21BA SWAP2 SWAP1 PUSH2 0x2CC8 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH4 0xFFFFFFFF DUP5 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 DUP2 AND PUSH15 0x10000000000000000000000000000 SWAP1 DUP2 MUL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND DUP13 DUP4 AND OR SWAP5 SWAP1 SWAP5 OR SWAP2 DUP3 AND DUP4 OR SWAP5 DUP6 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP4 DUP3 AND SWAP3 DUP3 AND SWAP3 SWAP1 SWAP3 OR DUP4 MSTORE SWAP3 SWAP1 SWAP4 DIV SWAP1 SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x1C411E9A96E071241C2F21F7726B17AE89E3CAB4C78BE50E062B03A9FFFBBAD1 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x234F SWAP1 DUP3 PUSH2 0x1F92 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x238B SWAP1 DUP3 PUSH2 0x27D2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x2312 SWAP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17E7E58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x245C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2480 SWAP2 SWAP1 PUSH2 0x2CE0 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO DUP1 ISZERO SWAP5 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0x2543 JUMPI DUP1 ISZERO PUSH2 0x253E JUMPI PUSH1 0x0 PUSH2 0x24CF PUSH2 0x1059 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP1 DUP9 AND PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x24DC DUP4 PUSH2 0x2557 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x253B JUMPI PUSH1 0x0 PUSH2 0x24FE PUSH2 0x24F5 DUP5 DUP5 PUSH2 0x1F92 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2517 DUP4 PUSH2 0x2511 DUP7 PUSH1 0x5 PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 PUSH2 0x27D2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2525 DUP3 DUP5 PUSH2 0x2BC7 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2537 JUMPI PUSH2 0x2537 DUP8 DUP3 PUSH2 0x25C7 JUMP JUMPDEST POP POP POP JUMPDEST POP POP JUMPDEST PUSH2 0x254F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x254F JUMPI PUSH1 0x0 PUSH1 0xB SSTORE JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0x25B8 JUMPI POP DUP1 PUSH1 0x0 PUSH2 0x2571 PUSH1 0x2 DUP4 PUSH2 0x2BC7 JUMP JUMPDEST PUSH2 0x257C SWAP1 PUSH1 0x1 PUSH2 0x2CC8 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x25B2 JUMPI SWAP1 POP DUP1 PUSH1 0x2 DUP2 PUSH2 0x2597 DUP2 DUP7 PUSH2 0x2BC7 JUMP JUMPDEST PUSH2 0x25A1 SWAP2 SWAP1 PUSH2 0x2CC8 JUMP JUMPDEST PUSH2 0x25AB SWAP2 SWAP1 PUSH2 0x2BC7 JUMP JUMPDEST SWAP1 POP PUSH2 0x257F JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 ISZERO PUSH2 0x25C2 JUMPI POP PUSH1 0x1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x25D4 SWAP1 DUP3 PUSH2 0x27D2 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2606 SWAP1 DUP3 PUSH2 0x27D2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x2664 SWAP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x267F JUMPI DUP2 PUSH2 0x1F8B JUMP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x26B6 SWAP1 DUP3 PUSH2 0x1F92 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x26EA SWAP1 DUP3 PUSH2 0x1F92 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0x2664 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x2775 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x569 SWAP2 SWAP1 PUSH2 0x2936 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x2782 DUP5 DUP7 PUSH2 0x2B81 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC6E PUSH15 0x10000000000000000000000000000 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x2CFD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F8B PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP5 PUSH2 0x2D41 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x27DF DUP4 DUP6 PUSH2 0x2CC8 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x1F8B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x286D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2888 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x28A1 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x28BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x28E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x28F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP PUSH1 0x20 ADD SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2921 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2909 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2930 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2955 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2906 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x299A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x29A5 DUP2 PUSH2 0x284B 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 0x29C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x29D3 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x29E3 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2A12 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2A22 DUP2 PUSH2 0x284B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1F8B DUP2 PUSH2 0x284B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2A65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x2A70 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x2A80 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2AA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP2 MSTORE DUP5 PUSH1 0x20 DUP3 ADD MSTORE DUP4 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x80 DUP3 ADD MSTORE DUP2 DUP4 PUSH1 0xA0 DUP4 ADD CALLDATACOPY PUSH1 0x0 DUP2 DUP4 ADD PUSH1 0xA0 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x2B93 JUMPI PUSH2 0x2B93 PUSH2 0x2B52 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2BD6 JUMPI PUSH2 0x2BD6 PUSH2 0x2B98 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x2C0D JUMPI PUSH2 0x2C0D PUSH2 0x2B52 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2C26 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2906 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1F8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x2C8A JUMPI PUSH2 0x2C8A PUSH2 0x2B52 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2C9E JUMPI PUSH2 0x2C9E PUSH2 0x2B98 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x2CC0 JUMPI PUSH2 0x2CC0 PUSH2 0x2B52 JUMP JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x2CDB JUMPI PUSH2 0x2CDB PUSH2 0x2B52 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2CF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1F8B DUP2 PUSH2 0x284B JUMP JUMPDEST PUSH1 0x0 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP2 DUP4 DIV DUP2 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x2D38 JUMPI PUSH2 0x2D38 PUSH2 0x2B52 JUMP JUMPDEST MUL SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND DUP1 PUSH2 0x2D70 JUMPI PUSH2 0x2D70 PUSH2 0x2B98 JUMP JUMPDEST SWAP3 AND SWAP2 SWAP1 SWAP2 DIV SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH20 0x8F09B9235788D5F6C3FF0250C6B0722C6D84358A ADDMOD BLOCKHASH OR 0xDF INVALID PUSH17 0x343B7C638B64736F6C634300080A0033A2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4D MLOAD 0xEC 0xE7 GASLIMIT CREATE BALANCE LOG0 MULMOD MSIZE GASPRICE SMOD 0xE5 0xBA 0xE4 CALLCODE PUSH25 0x7CCC9616FB9ACF99F5C1F9B75525CE64736F6C634300080A00 CALLER ", + "sourceMap": "135:1879:34:-:0;;;478:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;529:11;:26;;-1:-1:-1;;;;;;529:26:34;-1:-1:-1;;;;;529:26:34;;;;;;;;;;135:1879;;14:290:39;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:39;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:39:o;:::-;135:1879:34;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@allPairsLength_9199": { + "entryPoint": null, + "id": 9199, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@allPairs_9179": { + "entryPoint": 407, + "id": 9179, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@createPair_9312": { + "entryPoint": 667, + "id": 9312, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@feeToSetter_9168": { + "entryPoint": null, + "id": 9168, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@feeTo_9165": { + "entryPoint": null, + "id": 9165, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@getPair_9175": { + "entryPoint": null, + "id": 9175, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@setFeeToSetter_9350": { + "entryPoint": 462, + "id": 9350, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setFeeTo_9331": { + "entryPoint": 1721, + "id": 9331, + "parameterSlots": 1, + "returnSlots": 0 + }, + "abi_decode_address": { + "entryPoint": 1959, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 2000, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 2034, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": 1934, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_address_t_address__to_t_address_t_address__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_1af2ec9097b2f8bc2dcfea53a9ab4b2cdab42fa29e9a9e04dcb14b4efcc8aa70__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_7597a3317d1f47998beb266ffa8b5f1f9be064321f01552ef08c1fe9eeb777db__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_9fd3496d51391106f97d9c12d75d9ef2543a217eeaf4b9c52c6fdbe23f45a5ae__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:3684:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "115:125:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "125:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "137:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "148:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "133:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "133:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "125:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "167:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "182:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "190:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "178:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "178:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "160:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "160:74:39" + }, + "nodeType": "YulExpressionStatement", + "src": "160:74:39" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "84:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "95:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "106:4:39", + "type": "" + } + ], + "src": "14:226:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "315:110:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "361:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "370:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "373:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "363:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "363:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "363:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "336:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "345:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "332:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "332:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "357:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "328:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "328:32:39" + }, + "nodeType": "YulIf", + "src": "325:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "386:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "409:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "396:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "396:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "386:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "281:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "292:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "304:6:39", + "type": "" + } + ], + "src": "245:180:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "531:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "541:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "553:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "564:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "549:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "549:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "541:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "583:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "594:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "576:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "576:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "576:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "500:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "511:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "522:4:39", + "type": "" + } + ], + "src": "430:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "661:147:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "671:29:39", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "693:6:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "680:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "680:20:39" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "671:5:39" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "786:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "795:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "798:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "788:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "788:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "788:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "722:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "733:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "740:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "729:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "729:54:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "719:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "719:65:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "712:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "712:73:39" + }, + "nodeType": "YulIf", + "src": "709:93:39" + } + ] + }, + "name": "abi_decode_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "640:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "651:5:39", + "type": "" + } + ], + "src": "612:196:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "883:116:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "929:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "938:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "941:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "931:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "931:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "931:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "904:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "913:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "900:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "900:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "925:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "896:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "896:32:39" + }, + "nodeType": "YulIf", + "src": "893:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "954:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "983:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "964:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "964:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "954:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "849:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "860:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "872:6:39", + "type": "" + } + ], + "src": "813:186:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1091:173:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1137:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1146:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1149:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1139:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1139:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1139:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1112:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1121:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1108:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1108:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1133:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1104:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1104:32:39" + }, + "nodeType": "YulIf", + "src": "1101:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "1162:39:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1191:9:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "1172:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "1172:29:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1162:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1210:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1243:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1254:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1239:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1239:18:39" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "1220:18:39" + }, + "nodeType": "YulFunctionCall", + "src": "1220:38:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1210:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1049:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1060:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1072:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1080:6:39", + "type": "" + } + ], + "src": "1004:260:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1443:170:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1460:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1471:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1453:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1453:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1453:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1494:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1505:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1490:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1490:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1510:2:39", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1483:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1483:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1483:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1533:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1544:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1529:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1529:18:39" + }, + { + "hexValue": "556e697377617056323a20464f5242494444454e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "1549:22:39", + "type": "", + "value": "UniswapV2: FORBIDDEN" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1522:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1522:50:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1522:50:39" + }, + { + "nodeType": "YulAssignment", + "src": "1581:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1593:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1604:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1589:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1589:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1581:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1420:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1434:4:39", + "type": "" + } + ], + "src": "1269:344:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1792:180:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1809:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1820:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1802:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1802:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1802:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1843:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1854:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1839:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1839:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1859:2:39", + "type": "", + "value": "30" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1832:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1832:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1832:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1882:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1893:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1878:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1878:18:39" + }, + { + "hexValue": "556e697377617056323a204944454e544943414c5f414444524553534553", + "kind": "string", + "nodeType": "YulLiteral", + "src": "1898:32:39", + "type": "", + "value": "UniswapV2: IDENTICAL_ADDRESSES" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1871:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1871:60:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1871:60:39" + }, + { + "nodeType": "YulAssignment", + "src": "1940:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1952:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1963:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1948:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1948:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1940:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_1af2ec9097b2f8bc2dcfea53a9ab4b2cdab42fa29e9a9e04dcb14b4efcc8aa70__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1769:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1783:4:39", + "type": "" + } + ], + "src": "1618:354:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2151:173:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2168:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2179:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2161:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2161:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2161:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2202:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2213:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2198:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2198:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2218:2:39", + "type": "", + "value": "23" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2191:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2191:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2191:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2241:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2252:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2237:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2237:18:39" + }, + { + "hexValue": "556e697377617056323a205a45524f5f41444452455353", + "kind": "string", + "nodeType": "YulLiteral", + "src": "2257:25:39", + "type": "", + "value": "UniswapV2: ZERO_ADDRESS" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2230:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2230:53:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2230:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "2292:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2304:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2315:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2300:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2300:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2292:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_9fd3496d51391106f97d9c12d75d9ef2543a217eeaf4b9c52c6fdbe23f45a5ae__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2128:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2142:4:39", + "type": "" + } + ], + "src": "1977:347:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2503:172:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2520:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2531:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2513:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2513:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2513:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2554:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2565:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2550:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2550:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2570:2:39", + "type": "", + "value": "22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2543:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2543:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2543:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2593:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2604:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2589:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2589:18:39" + }, + { + "hexValue": "556e697377617056323a20504149525f455849535453", + "kind": "string", + "nodeType": "YulLiteral", + "src": "2609:24:39", + "type": "", + "value": "UniswapV2: PAIR_EXISTS" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2582:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2582:52:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2582:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "2643:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2655:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2666:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2651:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2651:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2643:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_7597a3317d1f47998beb266ffa8b5f1f9be064321f01552ef08c1fe9eeb777db__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2480:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2494:4:39", + "type": "" + } + ], + "src": "2329:346:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2827:221:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2837:76:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2847:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "2841:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2929:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2942:2:39", + "type": "", + "value": "96" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2946:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "2938:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2938:15:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "2955:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2934:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2934:24:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2922:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2922:37:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2922:37:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2979:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2984:2:39", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2975:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2975:12:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2997:2:39", + "type": "", + "value": "96" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "3001:6:39" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "2993:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2993:15:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3010:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2989:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2989:24:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2968:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2968:46:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2968:46:39" + }, + { + "nodeType": "YulAssignment", + "src": "3023:19:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3034:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3039:2:39", + "type": "", + "value": "40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3030:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3030:12:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3023:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_address_t_address__to_t_address_t_address__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "2795:3:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2800:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2808:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2819:3:39", + "type": "" + } + ], + "src": "2680:368:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3182:198:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3192:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3204:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3215:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3200:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3200:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3192:4:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3227:52:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3237:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "3231:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3295:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3310:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3318:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "3306:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3306:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3288:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3288:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3288:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3342:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3353:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3338:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3338:18:39" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "3362:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3370:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "3358:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3358:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3331:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3331:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3331:43:39" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3143:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "3154:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3162:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3173:4:39", + "type": "" + } + ], + "src": "3053:327:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3514:168:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3524:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3536:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3547:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3532:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3532:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3524:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3566:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3581:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3589:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "3577:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3577:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3559:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3559:74:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3559:74:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3653:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3664:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3649:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3649:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "3669:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3642:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3642:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3642:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3475:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "3486:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3494:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3505:4:39", + "type": "" + } + ], + "src": "3385:297:39" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_encode_tuple_t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37__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), \"UniswapV2: FORBIDDEN\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_1af2ec9097b2f8bc2dcfea53a9ab4b2cdab42fa29e9a9e04dcb14b4efcc8aa70__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 30)\n mstore(add(headStart, 64), \"UniswapV2: IDENTICAL_ADDRESSES\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_9fd3496d51391106f97d9c12d75d9ef2543a217eeaf4b9c52c6fdbe23f45a5ae__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 23)\n mstore(add(headStart, 64), \"UniswapV2: ZERO_ADDRESS\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_7597a3317d1f47998beb266ffa8b5f1f9be064321f01552ef08c1fe9eeb777db__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 22)\n mstore(add(headStart, 64), \"UniswapV2: PAIR_EXISTS\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_packed_t_address_t_address__to_t_address_t_address__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000\n mstore(pos, and(shl(96, value0), _1))\n mstore(add(pos, 20), and(shl(96, value1), _1))\n end := add(pos, 40)\n }\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_encode_tuple_t_address_t_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}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100885760003560e01c8063a2e74af61161005b578063a2e74af61461011b578063c9c6539614610130578063e6a4390514610143578063f46901ed1461018457600080fd5b8063017e7e581461008d578063094b7415146100d75780631e3dd18b146100f7578063574f2ba31461010a575b600080fd5b6000546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6001546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100ad61010536600461078e565b610197565b6003546040519081526020016100ce565b61012e6101293660046107d0565b6101ce565b005b6100ad61013e3660046107f2565b61029b565b6100ad6101513660046107f2565b600260209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b61012e6101923660046107d0565b6106b9565b600381815481106101a757600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60015473ffffffffffffffffffffffffffffffffffffffff163314610254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e00000000000000000000000060448201526064015b60405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015260640161024b565b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610610370578385610373565b84845b909250905073ffffffffffffffffffffffffffffffffffffffff82166103f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015260640161024b565b73ffffffffffffffffffffffffffffffffffffffff828116600090815260026020908152604080832085851684529091529020541615610491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f556e697377617056323a20504149525f45584953545300000000000000000000604482015260640161024b565b6000604051806020016104a390610781565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f9091011660408190527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086811b8216602084015285901b166034820152909150600090604801604051602081830303815290604052805190602001209050808251602084016000f56040517f485cc95500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015285811660248301529196509086169063485cc95590604401600060405180830381600087803b1580156105ac57600080fd5b505af11580156105c0573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526002602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff000000000000000000000000000000000000000098891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9095018054909716841790965592548351928352908201527f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9910160405180910390a35050505092915050565b60015473ffffffffffffffffffffffffffffffffffffffff16331461073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015260640161024b565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612de98061082683390190565b6000602082840312156107a057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107cb57600080fd5b919050565b6000602082840312156107e257600080fd5b6107eb826107a7565b9392505050565b6000806040838503121561080557600080fd5b61080e836107a7565b915061081c602084016107a7565b9050925092905056fe60806040526001600c5534801561001557600080fd5b50600580546001600160a01b03191633179055612db2806100376000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a71461049b578063d505accf146104bb578063dd62ed3e146104ce578063fff6cae9146104f957600080fd5b8063ba9a7a561461045f578063bc25cf7714610468578063c45a01551461047b57600080fd5b80637ecebe00116100d35780637ecebe00146103c857806389afcb44146103e857806395d89b4114610410578063a9059cbb1461044c57600080fd5b80636a6278421461038c57806370a082311461039f5780637464fc3d146103bf57600080fd5b806323b872dd116101665780633644e515116101405780633644e5151461035e578063485cc955146103675780635909c0d51461037a5780635a3d54931461038357600080fd5b806323b872dd1461030a57806330adf81f1461031d578063313ce5671461034457600080fd5b8063095ea7b311610197578063095ea7b31461028b5780630dfe1681146102ae57806318160ddd146102f357600080fd5b8063022c0d9f146101be57806306fdde03146101d35780630902f1ac14610225575b600080fd5b6101d16101cc366004612870565b610501565b005b61020f6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b60405161021c9190612936565b60405180910390f35b600854604080516dffffffffffffffffffffffffffff80841682526e01000000000000000000000000000084041660208201527c010000000000000000000000000000000000000000000000000000000090920463ffffffff169082015260600161021c565b61029e610299366004612987565b610c5d565b604051901515815260200161021c565b6006546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021c565b6102fc60005481565b60405190815260200161021c565b61029e6103183660046129b3565b610c74565b6102fc7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61034c601281565b60405160ff909116815260200161021c565b6102fc60035481565b6101d16103753660046129f4565b610d4d565b6102fc60095481565b6102fc600a5481565b6102fc61039a366004612a2d565b610e21565b6102fc6103ad366004612a2d565b60016020526000908152604090205481565b6102fc600b5481565b6102fc6103d6366004612a2d565b60046020526000908152604090205481565b6103fb6103f6366004612a2d565b6111f7565b6040805192835260208301919091520161021c565b61020f6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b61029e61045a366004612987565b6116af565b6102fc6103e881565b6101d1610476366004612a2d565b6116bc565b6005546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b6007546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b6101d16104c9366004612a4a565b61187f565b6102fc6104dc3660046129f4565b600260209081526000928352604080842090915290825290205481565b6101d1611b6a565b600c54600114610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b454400000000000000000000000000000060448201526064015b60405180910390fd5b6000600c55841515806105855750600084115b610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f556e697377617056323a20494e53554646494349454e545f4f55545055545f4160448201527f4d4f554e540000000000000000000000000000000000000000000000000000006064820152608401610569565b60008061066d6008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b5091509150816dffffffffffffffffffffffffffff16871080156106a05750806dffffffffffffffffffffffffffff1686105b61072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f59000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061079157508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6107f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f00000000000000000000006044820152606401610569565b8a1561080857610808828a8d611d36565b891561081957610819818a8c611d36565b86156108ac576040517f10d1e85c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a16906310d1e85c906108799033908f908f908e908e90600401612ac1565b600060405180830381600087803b15801561089357600080fd5b505af11580156108a7573d6000803e3d6000fd5b505050505b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015610916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093a9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290945073ffffffffffffffffffffffffffffffffffffffff8216906370a0823190602401602060405180830381865afa1580156109a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb9190612b39565b92505050600089856dffffffffffffffffffffffffffff166109ed9190612b81565b83116109fa576000610a1e565b610a148a6dffffffffffffffffffffffffffff8716612b81565b610a1e9084612b81565b90506000610a3c8a6dffffffffffffffffffffffffffff8716612b81565b8311610a49576000610a6d565b610a638a6dffffffffffffffffffffffffffff8716612b81565b610a6d9084612b81565b90506000821180610a7e5750600081115b610b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f556e697377617056323a20494e53554646494349454e545f494e5055545f414d60448201527f4f554e54000000000000000000000000000000000000000000000000000000006064820152608401610569565b6000610b2b610b19846003611ed6565b610b25876103e8611ed6565b90611f92565b90506000610b3d610b19846003611ed6565b9050610b69620f4240610b636dffffffffffffffffffffffffffff8b8116908b16611ed6565b90611ed6565b610b738383611ed6565b1015610bdb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b00000000000000000000000000000000000000006044820152606401610569565b5050610be984848888611fd4565b60408051838152602081018390529081018c9052606081018b905273ffffffffffffffffffffffffffffffffffffffff8a169033907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229060800160405180910390a350506001600c55505050505050505050565b6000610c6a3384846122b0565b5060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610d385773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610d069083611f92565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610d4384848461231f565b5060019392505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610dce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e0000000000000000000000006044820152606401610569565b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b6000600c54600114610e8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c819055600854600654604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808516956e01000000000000000000000000000090950416939273ffffffffffffffffffffffffffffffffffffffff16916370a082319160248083019260209291908290030181865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190612b39565b6007546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291925060009173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff19190612b39565b9050600061100f836dffffffffffffffffffffffffffff8716611f92565b9050600061102d836dffffffffffffffffffffffffffff8716611f92565b9050600061103b87876123ec565b600054909150806110725761105e6103e8610b256110598787611ed6565b612557565b985061106d60006103e86125c7565b6110c7565b6110c46dffffffffffffffffffffffffffff89166110908684611ed6565b61109a9190612bc7565b6dffffffffffffffffffffffffffff89166110b58685611ed6565b6110bf9190612bc7565b612670565b98505b60008911611157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f595f4d494e5445440000000000000000000000000000000000000000000000006064820152608401610569565b6111618a8a6125c7565b61116d86868a8a611fd4565b81156111a9576008546111a5906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611ed6565b600b555b604080518581526020810185905233917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a250506001600c5550949695505050505050565b600080600c54600114611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c819055600854600654600754604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808616966e010000000000000000000000000000909604169473ffffffffffffffffffffffffffffffffffffffff94851694909316929184916370a08231916024808201926020929091908290030181865afa158015611318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133c9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa1580156113ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d09190612b39565b306000908152600160205260408120549192506113ed88886123ec565b600054909150806113fe8487611ed6565b6114089190612bc7565b9a50806114158486611ed6565b61141f9190612bc7565b995060008b118015611431575060008a115b6114bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f595f4255524e45440000000000000000000000000000000000000000000000006064820152608401610569565b6114c73084612686565b6114d2878d8d611d36565b6114dd868d8c611d36565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290955073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa1580156115d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fc9190612b39565b935061160a85858b8b611fd4565b811561164657600854611642906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611ed6565b600b555b604080518c8152602081018c905273ffffffffffffffffffffffffffffffffffffffff8e169133917fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496910160405180910390a35050505050505050506001600c81905550915091565b6000610c6a33848461231f565b600c54600114611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c556006546007546008546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff93841693909216916117f091849186916117eb916dffffffffffffffffffffffffffff9091169084906370a08231906024015b602060405180830381865afa1580156117c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b259190612b39565b611d36565b6008546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015261187591839186916117eb916e0100000000000000000000000000009091046dffffffffffffffffffffffffffff169073ffffffffffffffffffffffffffffffffffffffff8516906370a08231906024016117aa565b50506001600c5550565b428410156118e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a204558504952454400000000000000000000000000006044820152606401610569565b60035473ffffffffffffffffffffffffffffffffffffffff8816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91908761194983612bdb565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016119ea9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611a73573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611aee57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e4154555245000000006044820152606401610569565b611b5f8989896122b0565b505050505050505050565b600c54600114611bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c556006546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152611d2f9173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611c4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6f9190612b39565b6007546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015611cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d019190612b39565b6008546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611fd4565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392871691611dfd9190612c14565b6000604051808303816000865af19150503d8060008114611e3a576040519150601f19603f3d011682016040523d82523d6000602084013e611e3f565b606091505b5091509150818015611e69575080511580611e69575080806020019051810190611e699190612c30565b611ecf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c45440000000000006044820152606401610569565b5050505050565b600082611ee557506000610c6e565b6000611ef18385612c52565b905082611efe8583612bc7565b14611f8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b9392505050565b6000611f8b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612737565b6dffffffffffffffffffffffffffff841180159061200057506dffffffffffffffffffffffffffff8311155b612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f57000000000000000000000000006044820152606401610569565b600061207764010000000042612c8f565b6008549091506000906120b0907c0100000000000000000000000000000000000000000000000000000000900463ffffffff1683612ca3565b905060008163ffffffff161180156120d757506dffffffffffffffffffffffffffff841615155b80156120f257506dffffffffffffffffffffffffffff831615155b156121c0578063ffffffff1661212f8561210b8661278b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906127b6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166121579190612c52565b600960008282546121689190612cc8565b909155505063ffffffff81166121818461210b8761278b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166121a99190612c52565b600a60008282546121ba9190612cc8565b90915550505b6008805463ffffffff84167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8981166e0100000000000000000000000000009081027fffffffff000000000000000000000000000000000000000000000000000000009095168c83161794909417918216831794859055604080519382169282169290921783529290930490911660208201527f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1910160405180910390a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461234f9082611f92565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461238b90826127d2565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123129085815260200190565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa15801561245c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124809190612ce0565b600b5473ffffffffffffffffffffffffffffffffffffffff821615801594509192509061254357801561253e5760006124cf6110596dffffffffffffffffffffffffffff888116908816611ed6565b905060006124dc83612557565b90508082111561253b5760006124fe6124f58484611f92565b60005490611ed6565b9050600061251783612511866005611ed6565b906127d2565b905060006125258284612bc7565b905080156125375761253787826125c7565b5050505b50505b61254f565b801561254f576000600b555b505092915050565b600060038211156125b85750806000612571600283612bc7565b61257c906001612cc8565b90505b818110156125b2579050806002816125978186612bc7565b6125a19190612cc8565b6125ab9190612bc7565b905061257f565b50919050565b81156125c2575060015b919050565b6000546125d490826127d2565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461260690826127d2565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126649085815260200190565b60405180910390a35050565b600081831061267f5781611f8b565b5090919050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546126b69082611f92565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040812091909155546126ea9082611f92565b600090815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612664565b60008184841115612775576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105699190612936565b5060006127828486612b81565b95945050505050565b6000610c6e6e0100000000000000000000000000006dffffffffffffffffffffffffffff8416612cfd565b6000611f8b6dffffffffffffffffffffffffffff831684612d41565b6000806127df8385612cc8565b905083811015611f8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8116811461286d57600080fd5b50565b60008060008060006080868803121561288857600080fd5b853594506020860135935060408601356128a18161284b565b9250606086013567ffffffffffffffff808211156128be57600080fd5b818801915088601f8301126128d257600080fd5b8135818111156128e157600080fd5b8960208285010111156128f357600080fd5b9699959850939650602001949392505050565b60005b83811015612921578181015183820152602001612909565b83811115612930576000848401525b50505050565b6020815260008251806020840152612955816040850160208701612906565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806040838503121561299a57600080fd5b82356129a58161284b565b946020939093013593505050565b6000806000606084860312156129c857600080fd5b83356129d38161284b565b925060208401356129e38161284b565b929592945050506040919091013590565b60008060408385031215612a0757600080fd5b8235612a128161284b565b91506020830135612a228161284b565b809150509250929050565b600060208284031215612a3f57600080fd5b8135611f8b8161284b565b600080600080600080600060e0888a031215612a6557600080fd5b8735612a708161284b565b96506020880135612a808161284b565b95506040880135945060608801359350608088013560ff81168114612aa457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015283604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101949350505050565b600060208284031215612b4b57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612b9357612b93612b52565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612bd657612bd6612b98565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612c0d57612c0d612b52565b5060010190565b60008251612c26818460208701612906565b9190910192915050565b600060208284031215612c4257600080fd5b81518015158114611f8b57600080fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c8a57612c8a612b52565b500290565b600082612c9e57612c9e612b98565b500690565b600063ffffffff83811690831681811015612cc057612cc0612b52565b039392505050565b60008219821115612cdb57612cdb612b52565b500190565b600060208284031215612cf257600080fd5b8151611f8b8161284b565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80831681851681830481118215151615612d3857612d38612b52565b02949350505050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80841680612d7057612d70612b98565b9216919091049291505056fea2646970667358221220738f09b9235788d5f6c3ff0250c6b0722c6d84358a084017dffe70343b7c638b64736f6c634300080a0033a26469706673582212204d51ece745f031a009593a07e5bae4f2787ccc9616fb9acf99f5c1f9b75525ce64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA2E74AF6 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA2E74AF6 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0xC9C65396 EQ PUSH2 0x130 JUMPI DUP1 PUSH4 0xE6A43905 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0xF46901ED EQ PUSH2 0x184 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x17E7E58 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x94B7415 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x1E3DD18B EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0x574F2BA3 EQ PUSH2 0x10A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x1 SLOAD PUSH2 0xAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0xAD PUSH2 0x105 CALLDATASIZE PUSH1 0x4 PUSH2 0x78E JUMP JUMPDEST PUSH2 0x197 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xCE JUMP JUMPDEST PUSH2 0x12E PUSH2 0x129 CALLDATASIZE PUSH1 0x4 PUSH2 0x7D0 JUMP JUMPDEST PUSH2 0x1CE JUMP JUMPDEST STOP JUMPDEST PUSH2 0xAD PUSH2 0x13E CALLDATASIZE PUSH1 0x4 PUSH2 0x7F2 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST PUSH2 0xAD PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x7F2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x12E PUSH2 0x192 CALLDATASIZE PUSH1 0x4 PUSH2 0x7D0 JUMP JUMPDEST PUSH2 0x6B9 JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x254 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204944454E544943414C5F4144445245535345530000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x24B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x370 JUMPI DUP4 DUP6 PUSH2 0x373 JUMP JUMPDEST DUP5 DUP5 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x3F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A205A45524F5F41444452455353000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x24B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x491 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20504149525F45584953545300000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x24B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH2 0x4A3 SWAP1 PUSH2 0x781 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP3 DUP3 SUB DUP2 ADD DUP4 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD AND PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP7 DUP2 SHL DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE DUP6 SWAP1 SHL AND PUSH1 0x34 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x48 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP1 DUP3 MLOAD PUSH1 0x20 DUP5 ADD PUSH1 0x0 CREATE2 PUSH1 0x40 MLOAD PUSH32 0x485CC95500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 SWAP7 POP SWAP1 DUP7 AND SWAP1 PUSH4 0x485CC955 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP10 DUP8 AND DUP1 DUP7 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP6 KECCAK256 DUP1 SLOAD SWAP8 DUP14 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP9 DUP10 AND DUP2 OR SWAP1 SWAP2 SSTORE SWAP4 DUP4 MSTORE DUP2 DUP6 KECCAK256 DUP7 DUP7 MSTORE DUP4 MSTORE DUP2 DUP6 KECCAK256 DUP1 SLOAD DUP9 AND DUP6 OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP6 DUP2 SWAP1 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP1 SWAP6 ADD DUP1 SLOAD SWAP1 SWAP8 AND DUP5 OR SWAP1 SWAP7 SSTORE SWAP3 SLOAD DUP4 MLOAD SWAP3 DUP4 MSTORE SWAP1 DUP3 ADD MSTORE PUSH32 0xD3648BD0F6BA80134A33BA9275AC585D9D315F0AD8355CDDEFDE31AFA28D0E9 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x73A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x24B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2DE9 DUP1 PUSH2 0x826 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x7CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7EB DUP3 PUSH2 0x7A7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x805 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x80E DUP4 PUSH2 0x7A7 JUMP JUMPDEST SWAP2 POP PUSH2 0x81C PUSH1 0x20 DUP5 ADD PUSH2 0x7A7 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0xC SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x2DB2 DUP1 PUSH2 0x37 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 0x1B9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A627842 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xBA9A7A56 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x49B JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x4BB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x4CE JUMPI DUP1 PUSH4 0xFFF6CAE9 EQ PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBA9A7A56 EQ PUSH2 0x45F JUMPI DUP1 PUSH4 0xBC25CF77 EQ PUSH2 0x468 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x47B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x3C8 JUMPI DUP1 PUSH4 0x89AFCB44 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x410 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6A627842 EQ PUSH2 0x38C JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x39F JUMPI DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x3BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x35E JUMPI DUP1 PUSH4 0x485CC955 EQ PUSH2 0x367 JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x37A JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x30A JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x2AE JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x22C0D9F EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x225 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1D1 PUSH2 0x1CC CALLDATASIZE PUSH1 0x4 PUSH2 0x2870 JUMP JUMPDEST PUSH2 0x501 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x556E697377617020563200000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21C SWAP2 SWAP1 PUSH2 0x2936 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND DUP3 MSTORE PUSH15 0x10000000000000000000000000000 DUP5 DIV AND PUSH1 0x20 DUP3 ADD MSTORE PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 DIV PUSH4 0xFFFFFFFF AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x21C JUMP JUMPDEST PUSH2 0x29E PUSH2 0x299 CALLDATASIZE PUSH1 0x4 PUSH2 0x2987 JUMP JUMPDEST PUSH2 0xC5D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x21C JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x2CE SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x21C JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x21C JUMP JUMPDEST PUSH2 0x29E PUSH2 0x318 CALLDATASIZE PUSH1 0x4 PUSH2 0x29B3 JUMP JUMPDEST PUSH2 0xC74 JUMP JUMPDEST PUSH2 0x2FC PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x34C PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x21C JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x375 CALLDATASIZE PUSH1 0x4 PUSH2 0x29F4 JUMP JUMPDEST PUSH2 0xD4D JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2FC PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x39A CALLDATASIZE PUSH1 0x4 PUSH2 0x2A2D JUMP JUMPDEST PUSH2 0xE21 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x3AD CALLDATASIZE PUSH1 0x4 PUSH2 0x2A2D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2FC PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x3D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A2D JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x3FB PUSH2 0x3F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A2D JUMP JUMPDEST PUSH2 0x11F7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x21C JUMP JUMPDEST PUSH2 0x20F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x554E492D56320000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x29E PUSH2 0x45A CALLDATASIZE PUSH1 0x4 PUSH2 0x2987 JUMP JUMPDEST PUSH2 0x16AF JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x3E8 DUP2 JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x476 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A2D JUMP JUMPDEST PUSH2 0x16BC JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x2CE SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH2 0x2CE SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x4C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A4A JUMP JUMPDEST PUSH2 0x187F JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x4DC CALLDATASIZE PUSH1 0x4 PUSH2 0x29F4 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x1B6A JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x572 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE DUP5 ISZERO ISZERO DUP1 PUSH2 0x585 JUMPI POP PUSH1 0x0 DUP5 GT JUMPDEST PUSH2 0x611 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E53554646494349454E545F4F55545055545F41 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x4D4F554E54000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x66D PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 LT DUP1 ISZERO PUSH2 0x6A0 JUMPI POP DUP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 LT JUMPDEST PUSH2 0x72C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E53554646494349454E545F4C49515549444954 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x5900000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 SWAP1 DUP2 AND SWAP1 DUP10 AND DUP3 EQ DUP1 ISZERO SWAP1 PUSH2 0x791 JUMPI POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST PUSH2 0x7F7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F544F0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST DUP11 ISZERO PUSH2 0x808 JUMPI PUSH2 0x808 DUP3 DUP11 DUP14 PUSH2 0x1D36 JUMP JUMPDEST DUP10 ISZERO PUSH2 0x819 JUMPI PUSH2 0x819 DUP2 DUP11 DUP13 PUSH2 0x1D36 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x8AC JUMPI PUSH1 0x40 MLOAD PUSH32 0x10D1E85C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND SWAP1 PUSH4 0x10D1E85C SWAP1 PUSH2 0x879 SWAP1 CALLER SWAP1 DUP16 SWAP1 DUP16 SWAP1 DUP15 SWAP1 DUP15 SWAP1 PUSH1 0x4 ADD PUSH2 0x2AC1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x893 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x916 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x93A SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9CB SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x0 DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x9ED SWAP2 SWAP1 PUSH2 0x2B81 JUMP JUMPDEST DUP4 GT PUSH2 0x9FA JUMPI PUSH1 0x0 PUSH2 0xA1E JUMP JUMPDEST PUSH2 0xA14 DUP11 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x2B81 JUMP JUMPDEST PUSH2 0xA1E SWAP1 DUP5 PUSH2 0x2B81 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xA3C DUP11 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x2B81 JUMP JUMPDEST DUP4 GT PUSH2 0xA49 JUMPI PUSH1 0x0 PUSH2 0xA6D JUMP JUMPDEST PUSH2 0xA63 DUP11 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x2B81 JUMP JUMPDEST PUSH2 0xA6D SWAP1 DUP5 PUSH2 0x2B81 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 GT DUP1 PUSH2 0xA7E JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0xB09 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E53554646494349454E545F494E5055545F414D PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x4F554E5400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB2B PUSH2 0xB19 DUP5 PUSH1 0x3 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0xB25 DUP8 PUSH2 0x3E8 PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 PUSH2 0x1F92 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB3D PUSH2 0xB19 DUP5 PUSH1 0x3 PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 POP PUSH2 0xB69 PUSH3 0xF4240 PUSH2 0xB63 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND SWAP1 DUP12 AND PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0xB73 DUP4 DUP4 PUSH2 0x1ED6 JUMP JUMPDEST LT ISZERO PUSH2 0xBDB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204B0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST POP POP PUSH2 0xBE9 DUP5 DUP5 DUP9 DUP9 PUSH2 0x1FD4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP12 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND SWAP1 CALLER SWAP1 PUSH32 0xD78AD95FA46C994B6551D0DA85FC275FE613CE37657FB8D5E3D130840159D822 SWAP1 PUSH1 0x80 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC6A CALLER DUP5 DUP5 PUSH2 0x22B0 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xD38 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xD06 SWAP1 DUP4 PUSH2 0x1F92 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0xD43 DUP5 DUP5 DUP5 PUSH2 0x231F JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xDCE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x7 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0xE8F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE PUSH1 0x8 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP6 PUSH15 0x10000000000000000000000000000 SWAP1 SWAP6 DIV AND SWAP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF35 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF59 SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFCD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFF1 SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x100F DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x1F92 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x102D DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x1F92 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x103B DUP8 DUP8 PUSH2 0x23EC JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1072 JUMPI PUSH2 0x105E PUSH2 0x3E8 PUSH2 0xB25 PUSH2 0x1059 DUP8 DUP8 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x2557 JUMP JUMPDEST SWAP9 POP PUSH2 0x106D PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x25C7 JUMP JUMPDEST PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0x10C4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x1090 DUP7 DUP5 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x109A SWAP2 SWAP1 PUSH2 0x2BC7 JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x10B5 DUP7 DUP6 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x10BF SWAP2 SWAP1 PUSH2 0x2BC7 JUMP JUMPDEST PUSH2 0x2670 JUMP JUMPDEST SWAP9 POP JUMPDEST PUSH1 0x0 DUP10 GT PUSH2 0x1157 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E53554646494349454E545F4C49515549444954 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x595F4D494E544544000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST PUSH2 0x1161 DUP11 DUP11 PUSH2 0x25C7 JUMP JUMPDEST PUSH2 0x116D DUP7 DUP7 DUP11 DUP11 PUSH2 0x1FD4 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x11A9 JUMPI PUSH1 0x8 SLOAD PUSH2 0x11A5 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x1ED6 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE CALLER SWAP2 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP SWAP5 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x1266 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE PUSH1 0x8 SLOAD PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND SWAP7 PUSH15 0x10000000000000000000000000000 SWAP1 SWAP7 DIV AND SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP5 SWAP1 SWAP4 AND SWAP3 SWAP2 DUP5 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1318 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x133C SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13AC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13D0 SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x13ED DUP9 DUP9 PUSH2 0x23EC JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x13FE DUP5 DUP8 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x1408 SWAP2 SWAP1 PUSH2 0x2BC7 JUMP JUMPDEST SWAP11 POP DUP1 PUSH2 0x1415 DUP5 DUP7 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x141F SWAP2 SWAP1 PUSH2 0x2BC7 JUMP JUMPDEST SWAP10 POP PUSH1 0x0 DUP12 GT DUP1 ISZERO PUSH2 0x1431 JUMPI POP PUSH1 0x0 DUP11 GT JUMPDEST PUSH2 0x14BD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E53554646494349454E545F4C49515549444954 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x595F4255524E4544000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST PUSH2 0x14C7 ADDRESS DUP5 PUSH2 0x2686 JUMP JUMPDEST PUSH2 0x14D2 DUP8 DUP14 DUP14 PUSH2 0x1D36 JUMP JUMPDEST PUSH2 0x14DD DUP7 DUP14 DUP13 PUSH2 0x1D36 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1547 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x156B SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP6 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x15FC SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST SWAP4 POP PUSH2 0x160A DUP6 DUP6 DUP12 DUP12 PUSH2 0x1FD4 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x1646 JUMPI PUSH1 0x8 SLOAD PUSH2 0x1642 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x1ED6 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP13 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP13 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND SWAP2 CALLER SWAP2 PUSH32 0xDCCD412F0B1252819CB1FD330B93224CA42612892BB3F4F789976E6D81936496 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP PUSH1 0x1 PUSH1 0xC DUP2 SWAP1 SSTORE POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC6A CALLER DUP5 DUP5 PUSH2 0x231F JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x1728 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH2 0x17F0 SWAP2 DUP5 SWAP2 DUP7 SWAP2 PUSH2 0x17EB SWAP2 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP5 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB25 SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH2 0x1D36 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x1875 SWAP2 DUP4 SWAP2 DUP7 SWAP2 PUSH2 0x17EB SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 SWAP2 DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH2 0x17AA JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x18E9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20455850495245440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SWAP3 SWAP2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP12 SWAP2 SWAP1 DUP8 PUSH2 0x1949 DUP4 PUSH2 0x2BDB JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x19EA SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A73 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1AEE JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1B54 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F5349474E415455524500000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH2 0x1B5F DUP10 DUP10 DUP10 PUSH2 0x22B0 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x1BD6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x1D2F SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C4B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C6F SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CDD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D01 SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x1FD4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xC SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x7472616E7366657228616464726573732C75696E743235362900000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP7 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP5 MSTORE SWAP2 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP8 AND SWAP2 PUSH2 0x1DFD SWAP2 SWAP1 PUSH2 0x2C14 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E3A 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 0x1E3F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1E69 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1E69 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1E69 SWAP2 SWAP1 PUSH2 0x2C30 JUMP JUMPDEST PUSH2 0x1ECF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A205452414E534645525F4641494C4544000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1EE5 JUMPI POP PUSH1 0x0 PUSH2 0xC6E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EF1 DUP4 DUP6 PUSH2 0x2C52 JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x1EFE DUP6 DUP4 PUSH2 0x2BC7 JUMP JUMPDEST EQ PUSH2 0x1F8B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7700000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F8B DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x2737 JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT DUP1 ISZERO SWAP1 PUSH2 0x2000 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO JUMPDEST PUSH2 0x2066 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204F564552464C4F5700000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2077 PUSH5 0x100000000 TIMESTAMP PUSH2 0x2C8F JUMP JUMPDEST PUSH1 0x8 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x20B0 SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP4 PUSH2 0x2CA3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x20D7 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x20F2 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x21C0 JUMPI DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x212F DUP6 PUSH2 0x210B DUP7 PUSH2 0x278B JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0x27B6 JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2157 SWAP2 SWAP1 PUSH2 0x2C52 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2168 SWAP2 SWAP1 PUSH2 0x2CC8 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x2181 DUP5 PUSH2 0x210B DUP8 PUSH2 0x278B JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x21A9 SWAP2 SWAP1 PUSH2 0x2C52 JUMP JUMPDEST PUSH1 0xA PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x21BA SWAP2 SWAP1 PUSH2 0x2CC8 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH4 0xFFFFFFFF DUP5 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 DUP2 AND PUSH15 0x10000000000000000000000000000 SWAP1 DUP2 MUL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND DUP13 DUP4 AND OR SWAP5 SWAP1 SWAP5 OR SWAP2 DUP3 AND DUP4 OR SWAP5 DUP6 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP4 DUP3 AND SWAP3 DUP3 AND SWAP3 SWAP1 SWAP3 OR DUP4 MSTORE SWAP3 SWAP1 SWAP4 DIV SWAP1 SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x1C411E9A96E071241C2F21F7726B17AE89E3CAB4C78BE50E062B03A9FFFBBAD1 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x234F SWAP1 DUP3 PUSH2 0x1F92 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x238B SWAP1 DUP3 PUSH2 0x27D2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x2312 SWAP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17E7E58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x245C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2480 SWAP2 SWAP1 PUSH2 0x2CE0 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO DUP1 ISZERO SWAP5 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0x2543 JUMPI DUP1 ISZERO PUSH2 0x253E JUMPI PUSH1 0x0 PUSH2 0x24CF PUSH2 0x1059 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP1 DUP9 AND PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x24DC DUP4 PUSH2 0x2557 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x253B JUMPI PUSH1 0x0 PUSH2 0x24FE PUSH2 0x24F5 DUP5 DUP5 PUSH2 0x1F92 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2517 DUP4 PUSH2 0x2511 DUP7 PUSH1 0x5 PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 PUSH2 0x27D2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2525 DUP3 DUP5 PUSH2 0x2BC7 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2537 JUMPI PUSH2 0x2537 DUP8 DUP3 PUSH2 0x25C7 JUMP JUMPDEST POP POP POP JUMPDEST POP POP JUMPDEST PUSH2 0x254F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x254F JUMPI PUSH1 0x0 PUSH1 0xB SSTORE JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0x25B8 JUMPI POP DUP1 PUSH1 0x0 PUSH2 0x2571 PUSH1 0x2 DUP4 PUSH2 0x2BC7 JUMP JUMPDEST PUSH2 0x257C SWAP1 PUSH1 0x1 PUSH2 0x2CC8 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x25B2 JUMPI SWAP1 POP DUP1 PUSH1 0x2 DUP2 PUSH2 0x2597 DUP2 DUP7 PUSH2 0x2BC7 JUMP JUMPDEST PUSH2 0x25A1 SWAP2 SWAP1 PUSH2 0x2CC8 JUMP JUMPDEST PUSH2 0x25AB SWAP2 SWAP1 PUSH2 0x2BC7 JUMP JUMPDEST SWAP1 POP PUSH2 0x257F JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 ISZERO PUSH2 0x25C2 JUMPI POP PUSH1 0x1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x25D4 SWAP1 DUP3 PUSH2 0x27D2 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2606 SWAP1 DUP3 PUSH2 0x27D2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x2664 SWAP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x267F JUMPI DUP2 PUSH2 0x1F8B JUMP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x26B6 SWAP1 DUP3 PUSH2 0x1F92 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x26EA SWAP1 DUP3 PUSH2 0x1F92 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0x2664 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x2775 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x569 SWAP2 SWAP1 PUSH2 0x2936 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x2782 DUP5 DUP7 PUSH2 0x2B81 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC6E PUSH15 0x10000000000000000000000000000 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x2CFD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F8B PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP5 PUSH2 0x2D41 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x27DF DUP4 DUP6 PUSH2 0x2CC8 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x1F8B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x286D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2888 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x28A1 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x28BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x28E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x28F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP PUSH1 0x20 ADD SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2921 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2909 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2930 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2955 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2906 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x299A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x29A5 DUP2 PUSH2 0x284B 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 0x29C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x29D3 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x29E3 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2A12 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2A22 DUP2 PUSH2 0x284B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1F8B DUP2 PUSH2 0x284B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2A65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x2A70 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x2A80 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2AA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP2 MSTORE DUP5 PUSH1 0x20 DUP3 ADD MSTORE DUP4 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x80 DUP3 ADD MSTORE DUP2 DUP4 PUSH1 0xA0 DUP4 ADD CALLDATACOPY PUSH1 0x0 DUP2 DUP4 ADD PUSH1 0xA0 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x2B93 JUMPI PUSH2 0x2B93 PUSH2 0x2B52 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2BD6 JUMPI PUSH2 0x2BD6 PUSH2 0x2B98 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x2C0D JUMPI PUSH2 0x2C0D PUSH2 0x2B52 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2C26 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2906 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1F8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x2C8A JUMPI PUSH2 0x2C8A PUSH2 0x2B52 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2C9E JUMPI PUSH2 0x2C9E PUSH2 0x2B98 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x2CC0 JUMPI PUSH2 0x2CC0 PUSH2 0x2B52 JUMP JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x2CDB JUMPI PUSH2 0x2CDB PUSH2 0x2B52 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2CF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1F8B DUP2 PUSH2 0x284B JUMP JUMPDEST PUSH1 0x0 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP2 DUP4 DIV DUP2 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x2D38 JUMPI PUSH2 0x2D38 PUSH2 0x2B52 JUMP JUMPDEST MUL SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND DUP1 PUSH2 0x2D70 JUMPI PUSH2 0x2D70 PUSH2 0x2B98 JUMP JUMPDEST SWAP3 AND SWAP2 SWAP1 SWAP2 DIV SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH20 0x8F09B9235788D5F6C3FF0250C6B0722C6D84358A ADDMOD BLOCKHASH OR 0xDF INVALID PUSH17 0x343B7C638B64736F6C634300080A0033A2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4D MLOAD 0xEC 0xE7 GASLIMIT CREATE BALANCE LOG0 MULMOD MSIZE GASPRICE SMOD 0xE5 0xBA 0xE4 CALLCODE PUSH25 0x7CCC9616FB9ACF99F5C1F9B75525CE64736F6C634300080A00 CALLER ", + "sourceMap": "135:1879:34:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;188:29;;;;;;;;;;;;190:42:39;178:55;;;160:74;;148:2;133:18;188:29:34;;;;;;;;223:35;;;;;;;;;342:34;;;;;;:::i;:::-;;:::i;568:103::-;649:8;:15;568:103;;576:25:39;;;564:2;549:18;568:103:34;430:177:39;1837:175:34;;;;;;:::i;:::-;;:::i;:::-;;677:997;;;;;;:::i;:::-;;:::i;265:71::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;1680:151;;;;;;:::i;:::-;;:::i;342:34::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;342:34:34;:::o;1837:175::-;1933:11;;;;1919:10;:25;1911:58;;;;;;;1471:2:39;1911:58:34;;;1453:21:39;1510:2;1490:18;;;1483:30;1549:22;1529:18;;;1522:50;1589:18;;1911:58:34;;;;;;;;;1979:11;:26;;;;;;;;;;;;;;;1837:175::o;677:997::-;756:12;798:6;788:16;;:6;:16;;;;780:59;;;;;;;1820:2:39;780:59:34;;;1802:21:39;1859:2;1839:18;;;1832:30;1898:32;1878:18;;;1871:60;1948:18;;780:59:34;1618:354:39;780:59:34;850:14;866;893:6;884:15;;:6;:15;;;:53;;922:6;930;884:53;;;903:6;911;884:53;849:88;;-1:-1:-1;849:88:34;-1:-1:-1;955:20:34;;;947:56;;;;;;;2179:2:39;947:56:34;;;2161:21:39;2218:2;2198:18;;;2191:30;2257:25;2237:18;;;2230:53;2300:18;;947:56:34;1977:347:39;947:56:34;1021:37;:15;;;1056:1;1021:15;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:37;1013:72;;;;;;;2531:2:39;1013:72:34;;;2513:21:39;2570:2;2550:18;;;2543:30;2609:24;2589:18;;;2582:52;2651:18;;1013:72:34;2329:346:39;1013:72:34;1125:21;1149:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2847:66:39;2942:2;2938:15;;;2934:24;;1149:32:34;1216;;2922:37:39;2993:15;;;2989:24;2975:12;;;2968:46;1149:32:34;;-1:-1:-1;1191:12:34;;3030::39;;1216:32:34;;;;;;;;;;;;1206:43;;;;;;1191:58;;1377:4;1366:8;1360:15;1355:2;1345:8;1341:17;1338:1;1330:52;1401:47;;;;;:31;3306:15:39;;;1401:47:34;;;3288:34:39;3358:15;;;3338:18;;;3331:43;1322:60:34;;-1:-1:-1;1401:31:34;;;;;;3200:18:39;;1401:47:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1458:15:34;;;;;;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:30;;;;;;;;;;;;;;1498:15;;;;;;:23;;;;;;;;:30;;;;;;;;1583:8;:19;;-1:-1:-1;1583:19:34;;;;;;;;;;;;;;;;;;;;;;1651:15;;1617:50;;3559:74:39;;;3649:18;;;3642:34;1617:50:34;;3532:18:39;1617:50:34;;;;;;;770:904;;;;677:997;;;;:::o;1680:151::-;1764:11;;;;1750:10;:25;1742:58;;;;;;;1471:2:39;1742:58:34;;;1453:21:39;1510:2;1490:18;;;1483:30;1549:22;1529:18;;;1522:50;1589:18;;1742:58:34;1269:344:39;1742:58:34;1810:5;:14;;;;;;;;;;;;;;;1680:151::o;-1:-1:-1:-;;;;;;;;:::o;245:180:39:-;304:6;357:2;345:9;336:7;332:23;328:32;325:52;;;373:1;370;363:12;325:52;-1:-1:-1;396:23:39;;245:180;-1:-1:-1;245:180:39:o;612:196::-;680:20;;740:42;729:54;;719:65;;709:93;;798:1;795;788:12;709:93;612:196;;;:::o;813:186::-;872:6;925:2;913:9;904:7;900:23;896:32;893:52;;;941:1;938;931:12;893:52;964:29;983:9;964:29;:::i;:::-;954:39;813:186;-1:-1:-1;;;813:186:39:o;1004:260::-;1072:6;1080;1133:2;1121:9;1112:7;1108:23;1104:32;1101:52;;;1149:1;1146;1139:12;1101:52;1172:29;1191:9;1172:29;:::i;:::-;1162:39;;1220:38;1254:2;1243:9;1239:18;1220:38;:::i;:::-;1210:48;;1004:260;;;;;:::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "2778400", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "allPairs(uint256)": "4624", + "allPairsLength()": "2347", + "createPair(address,address)": "infinite", + "feeTo()": "2303", + "feeToSetter()": "2325", + "getPair(address,address)": "infinite", + "setFeeTo(address)": "26726", + "setFeeToSetter(address)": "26660" + } + }, + "methodIdentifiers": { + "allPairs(uint256)": "1e3dd18b", + "allPairsLength()": "574f2ba3", + "createPair(address,address)": "c9c65396", + "feeTo()": "017e7e58", + "feeToSetter()": "094b7415", + "getPair(address,address)": "e6a43905", + "setFeeTo(address)": "f46901ed", + "setFeeToSetter(address)": "a2e74af6" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeToSetter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"createPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeToSetter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeTo\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeToSetter\",\"type\":\"address\"}],\"name\":\"setFeeToSetter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Uniswap/UniswapV2Factory.sol\":\"UniswapV2Factory\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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 payable(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}\",\"keccak256\":\"0x60d51a32063a4975dbf9433d38f5849173527da72f007c38053274e06698cb54\",\"license\":\"MIT\"},\"contracts/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {ERC20Detailed}.\\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\\n\",\"keccak256\":\"0x057bec1fafd7ca222117f41fcfb9c8dc1f61aa30e5a0222c981196e9113de7e6\",\"license\":\"MIT\"},\"contracts/Math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a >= b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow, so we distribute\\n return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);\\n }\\n\\n // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)\\n function sqrt(uint y) internal pure returns (uint z) {\\n if (y > 3) {\\n z = y;\\n uint x = y / 2 + 1;\\n while (x < z) {\\n z = x;\\n x = (y / x + x) / 2;\\n }\\n } else if (y != 0) {\\n z = 1;\\n }\\n }\\n}\",\"keccak256\":\"0x62bc6e8ee2764351c70251d50f023f15a87b6e9e31fe64e344c33a2580982dda\",\"license\":\"MIT\"},\"contracts/Math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\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\\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 * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\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 * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\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 * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (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) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts 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 * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts 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 * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\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}\",\"keccak256\":\"0x43a20f7cf4c4319f81450d53779455e88a7ab80bdfc43925156ed4083b74a180\",\"license\":\"MIT\"},\"contracts/Math/UQ112x112.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\n// a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format))\\n\\n// range: [0, 2**112 - 1]\\n// resolution: 1 / 2**112\\n\\nlibrary UQ112x112 {\\n uint224 constant Q112 = 2**112;\\n\\n // encode a uint112 as a UQ112x112\\n function encode(uint112 y) internal pure returns (uint224 z) {\\n z = uint224(y) * Q112; // never overflows\\n }\\n\\n // divide a UQ112x112 by a uint112, returning a UQ112x112\\n function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) {\\n z = x / uint224(y);\\n }\\n}\",\"keccak256\":\"0xf96670ceb7698871af8201df1bb4d9273c1d3b8defc63de942f9e1466b508608\",\"license\":\"MIT\"},\"contracts/Uniswap/Interfaces/IUniswapV2Callee.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ninterface IUniswapV2Callee {\\n function uniswapV2Call(address sender, uint amount0, uint amount1, bytes calldata data) external;\\n}\\n\",\"keccak256\":\"0xe88dddfb2938fe3622b6efea7a2891db071c24c80d42f14e0721c64230bc3932\",\"license\":\"MIT\"},\"contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ninterface IUniswapV2ERC20 {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external pure returns (string memory);\\n function symbol() external pure returns (string memory);\\n function decimals() external pure returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n function PERMIT_TYPEHASH() external pure returns (bytes32);\\n function nonces(address owner) external view returns (uint);\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\\n}\\n\",\"keccak256\":\"0x9845bf55f69d1f7ce821b95861a78821a118bdb3f1c8997b6bb0c2b6a890901c\",\"license\":\"MIT\"},\"contracts/Uniswap/Interfaces/IUniswapV2Factory.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ninterface IUniswapV2Factory {\\n event PairCreated(address indexed token0, address indexed token1, address pair, uint);\\n\\n function feeTo() external view returns (address);\\n function feeToSetter() external view returns (address);\\n\\n function getPair(address tokenA, address tokenB) external view returns (address pair);\\n function allPairs(uint) external view returns (address pair);\\n function allPairsLength() external view returns (uint);\\n\\n function createPair(address tokenA, address tokenB) external returns (address pair);\\n\\n function setFeeTo(address) external;\\n function setFeeToSetter(address) external;\\n}\\n\",\"keccak256\":\"0x87c74a8e918023f916cdc22f6a1cac447bff16f769828d4aae36876187c6f7d3\",\"license\":\"MIT\"},\"contracts/Uniswap/Interfaces/IUniswapV2Pair.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ninterface IUniswapV2Pair {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external pure returns (string memory);\\n function symbol() external pure returns (string memory);\\n function decimals() external pure returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n function PERMIT_TYPEHASH() external pure returns (bytes32);\\n function nonces(address owner) external view returns (uint);\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\\n\\n event Mint(address indexed sender, uint amount0, uint amount1);\\n event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\\n event Swap(\\n address indexed sender,\\n uint amount0In,\\n uint amount1In,\\n uint amount0Out,\\n uint amount1Out,\\n address indexed to\\n );\\n event Sync(uint112 reserve0, uint112 reserve1);\\n\\n function MINIMUM_LIQUIDITY() external pure returns (uint);\\n function factory() external view returns (address);\\n function token0() external view returns (address);\\n function token1() external view returns (address);\\n function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\\n function price0CumulativeLast() external view returns (uint);\\n function price1CumulativeLast() external view returns (uint);\\n function kLast() external view returns (uint);\\n\\n function mint(address to) external returns (uint liquidity);\\n function burn(address to) external returns (uint amount0, uint amount1);\\n function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;\\n function skim(address to) external;\\n function sync() external;\\n\\n function initialize(address, address) external; \\n}\\n\",\"keccak256\":\"0x2509844ce3a43ce31165e4101700ab13e95f267a2cae4a2a88ea1ebb5a50513d\",\"license\":\"MIT\"},\"contracts/Uniswap/UniswapV2ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport './Interfaces/IUniswapV2ERC20.sol';\\nimport '../Math/SafeMath.sol';\\n\\ncontract UniswapV2ERC20 is IUniswapV2ERC20 {\\n using SafeMath for uint;\\n\\n string public override constant name = 'Uniswap V2';\\n string public override constant symbol = 'UNI-V2';\\n uint8 public override constant decimals = 18;\\n uint public override totalSupply;\\n mapping(address => uint) public override balanceOf;\\n mapping(address => mapping(address => uint)) public override allowance;\\n\\n bytes32 public override DOMAIN_SEPARATOR;\\n // keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\");\\n bytes32 public constant override PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;\\n mapping(address => uint) public override nonces;\\n\\n // event Approval(address indexed owner, address indexed spender, uint value);\\n // event Transfer(address indexed from, address indexed to, uint value);\\n\\n constructor() {\\n uint chainId;\\n assembly {\\n chainId := chainid()\\n }\\n DOMAIN_SEPARATOR = keccak256(\\n abi.encode(\\n keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),\\n keccak256(bytes(name)),\\n keccak256(bytes('1')),\\n chainId,\\n address(this)\\n )\\n );\\n }\\n\\n function _mint(address to, uint value) internal {\\n totalSupply = totalSupply.add(value);\\n balanceOf[to] = balanceOf[to].add(value);\\n emit Transfer(address(0), to, value);\\n }\\n\\n function _burn(address from, uint value) internal {\\n balanceOf[from] = balanceOf[from].sub(value);\\n totalSupply = totalSupply.sub(value);\\n emit Transfer(from, address(0), value);\\n }\\n\\n function _approve(address owner, address spender, uint value) private {\\n allowance[owner][spender] = value;\\n emit Approval(owner, spender, value);\\n }\\n\\n function _transfer(address from, address to, uint value) private {\\n balanceOf[from] = balanceOf[from].sub(value);\\n balanceOf[to] = balanceOf[to].add(value);\\n emit Transfer(from, to, value);\\n }\\n\\n function approve(address spender, uint value) external override returns (bool) {\\n _approve(msg.sender, spender, value);\\n return true;\\n }\\n\\n function transfer(address to, uint value) external override returns (bool) {\\n _transfer(msg.sender, to, value);\\n return true;\\n }\\n\\n function transferFrom(address from, address to, uint value) external override returns (bool) {\\n if (allowance[from][msg.sender] != type(uint).max) {\\n allowance[from][msg.sender] = allowance[from][msg.sender].sub(value);\\n }\\n _transfer(from, to, value);\\n return true;\\n }\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external override {\\n require(deadline >= block.timestamp, 'UniswapV2: EXPIRED');\\n bytes32 digest = keccak256(\\n abi.encodePacked(\\n '\\\\x19\\\\x01',\\n DOMAIN_SEPARATOR,\\n keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))\\n )\\n );\\n address recoveredAddress = ecrecover(digest, v, r, s);\\n require(recoveredAddress != address(0) && recoveredAddress == owner, 'UniswapV2: INVALID_SIGNATURE');\\n _approve(owner, spender, value);\\n }\\n}\\n\",\"keccak256\":\"0x7e7e4057f86eed869009463eb8a0895cf6b868494ae3773e12b2ad7c07ff9cb4\",\"license\":\"MIT\"},\"contracts/Uniswap/UniswapV2Factory.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport './Interfaces/IUniswapV2Factory.sol';\\nimport './UniswapV2Pair.sol';\\n\\ncontract UniswapV2Factory is IUniswapV2Factory {\\n address public override feeTo;\\n address public override feeToSetter;\\n\\n mapping(address => mapping(address => address)) public override getPair;\\n address[] public override allPairs;\\n\\n // event PairCreated(address indexed token0, address indexed token1, address pair, uint);\\n\\n constructor(address _feeToSetter) public {\\n feeToSetter = _feeToSetter;\\n }\\n\\n function allPairsLength() external override view returns (uint) {\\n return allPairs.length;\\n }\\n\\n function createPair(address tokenA, address tokenB) external override returns (address pair) {\\n require(tokenA != tokenB, 'UniswapV2: IDENTICAL_ADDRESSES');\\n (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);\\n require(token0 != address(0), 'UniswapV2: ZERO_ADDRESS');\\n require(getPair[token0][token1] == address(0), 'UniswapV2: PAIR_EXISTS'); // single check is sufficient\\n bytes memory bytecode = type(UniswapV2Pair).creationCode;\\n bytes32 salt = keccak256(abi.encodePacked(token0, token1));\\n\\n // This creates a new contract\\n assembly {\\n pair := create2(0, add(bytecode, 32), mload(bytecode), salt)\\n }\\n IUniswapV2Pair(pair).initialize(token0, token1);\\n getPair[token0][token1] = pair;\\n getPair[token1][token0] = pair; // populate mapping in the reverse direction\\n allPairs.push(pair);\\n emit PairCreated(token0, token1, pair, allPairs.length);\\n }\\n\\n function setFeeTo(address _feeTo) external override {\\n require(msg.sender == feeToSetter, 'UniswapV2: FORBIDDEN');\\n feeTo = _feeTo;\\n }\\n\\n function setFeeToSetter(address _feeToSetter) external override {\\n require(msg.sender == feeToSetter, 'UniswapV2: FORBIDDEN');\\n feeToSetter = _feeToSetter;\\n }\\n}\\n\",\"keccak256\":\"0x8d31225c9809575015ebe064ac2630c2c42b49b035fb41e78125c35ef34345d3\",\"license\":\"MIT\"},\"contracts/Uniswap/UniswapV2Pair.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\n\\nimport './Interfaces/IUniswapV2Pair.sol';\\nimport './UniswapV2ERC20.sol';\\nimport '../Math/Math.sol';\\nimport '../Math/UQ112x112.sol';\\nimport '../ERC20/IERC20.sol';\\nimport './Interfaces/IUniswapV2Factory.sol';\\nimport './Interfaces/IUniswapV2Callee.sol';\\n\\ncontract UniswapV2Pair is IUniswapV2Pair {\\n using SafeMath for uint;\\n using UQ112x112 for uint224;\\n\\n string public override constant name = 'Uniswap V2';\\n string public override constant symbol = 'UNI-V2';\\n uint8 public override constant decimals = 18;\\n uint public override totalSupply;\\n mapping(address => uint) public override balanceOf;\\n mapping(address => mapping(address => uint)) public override allowance;\\n\\n uint public override constant MINIMUM_LIQUIDITY = 10**3;\\n bytes4 private constant SELECTOR = bytes4(keccak256(bytes('transfer(address,uint256)')));\\n bytes32 public override DOMAIN_SEPARATOR;\\n // keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\");\\n bytes32 public constant override PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;\\n mapping(address => uint) public override nonces;\\n\\n\\n \\n\\n address public override factory;\\n address public override token0;\\n address public override token1;\\n\\n uint112 private reserve0; // uses single storage slot, accessible via getReserves\\n uint112 private reserve1; // uses single storage slot, accessible via getReserves\\n uint32 private blockTimestampLast; // uses single storage slot, accessible via getReserves\\n\\n uint public override price0CumulativeLast;\\n uint public override price1CumulativeLast;\\n uint public override kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event\\n\\n uint private unlocked = 1;\\n modifier lock() {\\n require(unlocked == 1, 'UniswapV2: LOCKED');\\n unlocked = 0;\\n _;\\n unlocked = 1;\\n }\\n\\n function getReserves() public override view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) {\\n _reserve0 = reserve0;\\n _reserve1 = reserve1;\\n _blockTimestampLast = blockTimestampLast;\\n }\\n\\n function _safeTransfer(address token, address to, uint value) private {\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'UniswapV2: TRANSFER_FAILED');\\n }\\n\\n // event Mint(address indexed sender, uint amount0, uint amount1);\\n // event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\\n // event Swap(\\n // address indexed sender,\\n // uint amount0In,\\n // uint amount1In,\\n // uint amount0Out,\\n // uint amount1Out,\\n // address indexed to\\n // );\\n // event Sync(uint112 reserve0, uint112 reserve1);\\n\\n constructor() {\\n factory = msg.sender;\\n }\\n\\n // called once by the factory at time of deployment\\n function initialize(address _token0, address _token1) external override {\\n require(msg.sender == factory, 'UniswapV2: FORBIDDEN'); // sufficient check\\n token0 = _token0;\\n token1 = _token1;\\n }\\n\\n // update reserves and, on the first call per block, price accumulators\\n function _update(uint balance0, uint balance1, uint112 _reserve0, uint112 _reserve1) private {\\n require(balance0 <= type(uint112).max && balance1 <= type(uint112).max, 'UniswapV2: OVERFLOW');\\n uint32 blockTimestamp = uint32(block.timestamp % 2**32);\\n uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired\\n if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) {\\n // * never overflows, and + overflow is desired\\n price0CumulativeLast += uint(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed;\\n price1CumulativeLast += uint(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed;\\n }\\n reserve0 = uint112(balance0);\\n reserve1 = uint112(balance1);\\n blockTimestampLast = blockTimestamp;\\n emit Sync(reserve0, reserve1);\\n }\\n\\n // if fee is on, mint liquidity equivalent to 1/6th of the growth in sqrt(k)\\n function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {\\n address feeTo = IUniswapV2Factory(factory).feeTo();\\n feeOn = feeTo != address(0);\\n uint _kLast = kLast; // gas savings\\n if (feeOn) {\\n if (_kLast != 0) {\\n uint rootK = Math.sqrt(uint(_reserve0).mul(_reserve1));\\n uint rootKLast = Math.sqrt(_kLast);\\n if (rootK > rootKLast) {\\n uint numerator = totalSupply.mul(rootK.sub(rootKLast));\\n uint denominator = rootK.mul(5).add(rootKLast);\\n uint liquidity = numerator / denominator;\\n if (liquidity > 0) _mint(feeTo, liquidity);\\n }\\n }\\n } else if (_kLast != 0) {\\n kLast = 0;\\n }\\n }\\n\\n // this low-level function should be called from a contract which performs important safety checks\\n function mint(address to) external override lock returns (uint liquidity) {\\n (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings\\n uint balance0 = IERC20(token0).balanceOf(address(this));\\n uint balance1 = IERC20(token1).balanceOf(address(this));\\n uint amount0 = balance0.sub(_reserve0);\\n uint amount1 = balance1.sub(_reserve1);\\n bool feeOn = _mintFee(_reserve0, _reserve1);\\n uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee\\n\\n if (_totalSupply == 0) {\\n liquidity = Math.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY);\\n _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock the first MINIMUM_LIQUIDITY tokens\\n } else {\\n liquidity = Math.min(amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1);\\n }\\n\\n require(liquidity > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_MINTED');\\n _mint(to, liquidity);\\n\\n _update(balance0, balance1, _reserve0, _reserve1);\\n if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date\\n emit Mint(msg.sender, amount0, amount1);\\n }\\n\\n // this low-level function should be called from a contract which performs important safety checks\\n function burn(address to) external override lock returns (uint amount0, uint amount1) {\\n (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings\\n address _token0 = token0; // gas savings\\n address _token1 = token1; // gas savings\\n uint balance0 = IERC20(_token0).balanceOf(address(this));\\n uint balance1 = IERC20(_token1).balanceOf(address(this));\\n uint liquidity = balanceOf[address(this)];\\n\\n bool feeOn = _mintFee(_reserve0, _reserve1);\\n uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee\\n amount0 = liquidity.mul(balance0) / _totalSupply; // using balances ensures pro-rata distribution\\n amount1 = liquidity.mul(balance1) / _totalSupply; // using balances ensures pro-rata distribution\\n require(amount0 > 0 && amount1 > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED');\\n _burn(address(this), liquidity);\\n _safeTransfer(_token0, to, amount0);\\n _safeTransfer(_token1, to, amount1);\\n balance0 = IERC20(_token0).balanceOf(address(this));\\n balance1 = IERC20(_token1).balanceOf(address(this));\\n\\n _update(balance0, balance1, _reserve0, _reserve1);\\n if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date\\n emit Burn(msg.sender, amount0, amount1, to);\\n }\\n\\n // this low-level function should be called from a contract which performs important safety checks\\n function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external override lock {\\n require(amount0Out > 0 || amount1Out > 0, 'UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT');\\n (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings\\n require(amount0Out < _reserve0 && amount1Out < _reserve1, 'UniswapV2: INSUFFICIENT_LIQUIDITY');\\n\\n uint balance0;\\n uint balance1;\\n { // scope for _token{0,1}, avoids stack too deep errors\\n address _token0 = token0;\\n address _token1 = token1;\\n require(to != _token0 && to != _token1, 'UniswapV2: INVALID_TO');\\n if (amount0Out > 0) _safeTransfer(_token0, to, amount0Out); // optimistically transfer tokens\\n if (amount1Out > 0) _safeTransfer(_token1, to, amount1Out); // optimistically transfer tokens\\n if (data.length > 0) IUniswapV2Callee(to).uniswapV2Call(msg.sender, amount0Out, amount1Out, data);\\n balance0 = IERC20(_token0).balanceOf(address(this));\\n balance1 = IERC20(_token1).balanceOf(address(this));\\n }\\n uint amount0In = balance0 > _reserve0 - amount0Out ? balance0 - (_reserve0 - amount0Out) : 0;\\n uint amount1In = balance1 > _reserve1 - amount1Out ? balance1 - (_reserve1 - amount1Out) : 0;\\n require(amount0In > 0 || amount1In > 0, 'UniswapV2: INSUFFICIENT_INPUT_AMOUNT');\\n { // scope for reserve{0,1}Adjusted, avoids stack too deep errors\\n uint balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(3));\\n uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(3));\\n require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'UniswapV2: K');\\n }\\n\\n _update(balance0, balance1, _reserve0, _reserve1);\\n emit Swap(msg.sender, amount0In, amount1In, amount0Out, amount1Out, to);\\n }\\n\\n // force balances to match reserves\\n function skim(address to) external override lock {\\n address _token0 = token0; // gas savings\\n address _token1 = token1; // gas savings\\n _safeTransfer(_token0, to, IERC20(_token0).balanceOf(address(this)).sub(reserve0));\\n _safeTransfer(_token1, to, IERC20(_token1).balanceOf(address(this)).sub(reserve1));\\n }\\n\\n // force reserves to match balances\\n function sync() external override lock {\\n _update(IERC20(token0).balanceOf(address(this)), IERC20(token1).balanceOf(address(this)), reserve0, reserve1);\\n }\\n\\n\\n\\n // Migrated over from UniswapV2ERC20. Needed for ^0.6.0\\n // ===============================================\\n\\n function _mint(address to, uint value) internal {\\n totalSupply = totalSupply.add(value);\\n balanceOf[to] = balanceOf[to].add(value);\\n emit Transfer(address(0), to, value);\\n }\\n\\n function _burn(address from, uint value) internal {\\n balanceOf[from] = balanceOf[from].sub(value);\\n totalSupply = totalSupply.sub(value);\\n emit Transfer(from, address(0), value);\\n }\\n\\n function _approve(address owner, address spender, uint value) private {\\n allowance[owner][spender] = value;\\n emit Approval(owner, spender, value);\\n }\\n\\n function _transfer(address from, address to, uint value) private {\\n balanceOf[from] = balanceOf[from].sub(value);\\n balanceOf[to] = balanceOf[to].add(value);\\n emit Transfer(from, to, value);\\n }\\n\\n function approve(address spender, uint value) external override returns (bool) {\\n _approve(msg.sender, spender, value);\\n return true;\\n }\\n\\n function transfer(address to, uint value) external override returns (bool) {\\n _transfer(msg.sender, to, value);\\n return true;\\n }\\n\\n function transferFrom(address from, address to, uint value) external override returns (bool) {\\n if (allowance[from][msg.sender] != type(uint).max) {\\n allowance[from][msg.sender] = allowance[from][msg.sender].sub(value);\\n }\\n _transfer(from, to, value);\\n return true;\\n }\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external override {\\n require(deadline >= block.timestamp, 'UniswapV2: EXPIRED');\\n bytes32 digest = keccak256(\\n abi.encodePacked(\\n '\\\\x19\\\\x01',\\n DOMAIN_SEPARATOR,\\n keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))\\n )\\n );\\n address recoveredAddress = ecrecover(digest, v, r, s);\\n require(recoveredAddress != address(0) && recoveredAddress == owner, 'UniswapV2: INVALID_SIGNATURE');\\n _approve(owner, spender, value);\\n }\\n\\n\\n\\n}\",\"keccak256\":\"0xb55806dad20e322f970729de7959ff7bb6b86eb0d11b7b504f07412203d40f5e\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 9165, + "contract": "contracts/Uniswap/UniswapV2Factory.sol:UniswapV2Factory", + "label": "feeTo", + "offset": 0, + "slot": "0", + "type": "t_address" + }, + { + "astId": 9168, + "contract": "contracts/Uniswap/UniswapV2Factory.sol:UniswapV2Factory", + "label": "feeToSetter", + "offset": 0, + "slot": "1", + "type": "t_address" + }, + { + "astId": 9175, + "contract": "contracts/Uniswap/UniswapV2Factory.sol:UniswapV2Factory", + "label": "getPair", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_address,t_mapping(t_address,t_address))" + }, + { + "astId": 9179, + "contract": "contracts/Uniswap/UniswapV2Factory.sol:UniswapV2Factory", + "label": "allPairs", + "offset": 0, + "slot": "3", + "type": "t_array(t_address)dyn_storage" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "base": "t_address", + "encoding": "dynamic_array", + "label": "address[]", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_address)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => address)", + "numberOfBytes": "32", + "value": "t_address" + }, + "t_mapping(t_address,t_mapping(t_address,t_address))": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => mapping(address => address))", + "numberOfBytes": "32", + "value": "t_mapping(t_address,t_address)" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/Uniswap/UniswapV2Library.sol": { + "UniswapV2Library": { + "abi": [], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204fba4b079fca9165b84325ebb9a7b540237d3f4a63f7cb4b9f342b8fb9941d0364736f6c634300080a0033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4F 0xBA 0x4B SMOD SWAP16 0xCA SWAP2 PUSH6 0xB84325EBB9A7 0xB5 BLOCKHASH 0x23 PUSH30 0x3F4A63F7CB4B9F342B8FB9941D0364736F6C634300080A00330000000000 ", + "sourceMap": "179:4721:35:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;179:4721:35;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204fba4b079fca9165b84325ebb9a7b540237d3f4a63f7cb4b9f342b8fb9941d0364736f6c634300080a0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4F 0xBA 0x4B SMOD SWAP16 0xCA SWAP2 PUSH6 0xB84325EBB9A7 0xB5 BLOCKHASH 0x23 PUSH30 0x3F4A63F7CB4B9F342B8FB9941D0364736F6C634300080A00330000000000 ", + "sourceMap": "179:4721:35:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17200", + "executionCost": "103", + "totalCost": "17303" + }, + "internal": { + "getAmountIn(uint256,uint256,uint256)": "infinite", + "getAmountOut(uint256,uint256,uint256)": "infinite", + "getAmountsIn(address,uint256,address[] memory)": "infinite", + "getAmountsOut(address,uint256,address[] memory)": "infinite", + "getReserves(address,address,address)": "infinite", + "pairFor(address,address,address)": "infinite", + "pairForCreate2(address,address,address)": "infinite", + "quote(uint256,uint256,uint256)": "infinite", + "sortTokens(address,address)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Uniswap/UniswapV2Library.sol\":\"UniswapV2Library\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\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\\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 * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\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 * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\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 * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (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) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts 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 * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts 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 * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\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}\",\"keccak256\":\"0x43a20f7cf4c4319f81450d53779455e88a7ab80bdfc43925156ed4083b74a180\",\"license\":\"MIT\"},\"contracts/Uniswap/Interfaces/IUniswapV2Factory.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ninterface IUniswapV2Factory {\\n event PairCreated(address indexed token0, address indexed token1, address pair, uint);\\n\\n function feeTo() external view returns (address);\\n function feeToSetter() external view returns (address);\\n\\n function getPair(address tokenA, address tokenB) external view returns (address pair);\\n function allPairs(uint) external view returns (address pair);\\n function allPairsLength() external view returns (uint);\\n\\n function createPair(address tokenA, address tokenB) external returns (address pair);\\n\\n function setFeeTo(address) external;\\n function setFeeToSetter(address) external;\\n}\\n\",\"keccak256\":\"0x87c74a8e918023f916cdc22f6a1cac447bff16f769828d4aae36876187c6f7d3\",\"license\":\"MIT\"},\"contracts/Uniswap/Interfaces/IUniswapV2Pair.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ninterface IUniswapV2Pair {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external pure returns (string memory);\\n function symbol() external pure returns (string memory);\\n function decimals() external pure returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n function PERMIT_TYPEHASH() external pure returns (bytes32);\\n function nonces(address owner) external view returns (uint);\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\\n\\n event Mint(address indexed sender, uint amount0, uint amount1);\\n event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\\n event Swap(\\n address indexed sender,\\n uint amount0In,\\n uint amount1In,\\n uint amount0Out,\\n uint amount1Out,\\n address indexed to\\n );\\n event Sync(uint112 reserve0, uint112 reserve1);\\n\\n function MINIMUM_LIQUIDITY() external pure returns (uint);\\n function factory() external view returns (address);\\n function token0() external view returns (address);\\n function token1() external view returns (address);\\n function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\\n function price0CumulativeLast() external view returns (uint);\\n function price1CumulativeLast() external view returns (uint);\\n function kLast() external view returns (uint);\\n\\n function mint(address to) external returns (uint liquidity);\\n function burn(address to) external returns (uint amount0, uint amount1);\\n function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;\\n function skim(address to) external;\\n function sync() external;\\n\\n function initialize(address, address) external; \\n}\\n\",\"keccak256\":\"0x2509844ce3a43ce31165e4101700ab13e95f267a2cae4a2a88ea1ebb5a50513d\",\"license\":\"MIT\"},\"contracts/Uniswap/UniswapV2Library.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport './Interfaces/IUniswapV2Pair.sol';\\nimport './Interfaces/IUniswapV2Factory.sol';\\n\\nimport \\\"../Math/SafeMath.sol\\\";\\n\\nlibrary UniswapV2Library {\\n using SafeMath for uint;\\n\\n // returns sorted token addresses, used to handle return values from pairs sorted in this order\\n function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {\\n require(tokenA != tokenB, 'UniswapV2Library: IDENTICAL_ADDRESSES');\\n (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);\\n require(token0 != address(0), 'UniswapV2Library: ZERO_ADDRESS');\\n }\\n\\n // Less efficient than the CREATE2 method below\\n function pairFor(address factory, address tokenA, address tokenB) internal view returns (address pair) {\\n (address token0, address token1) = sortTokens(tokenA, tokenB);\\n pair = IUniswapV2Factory(factory).getPair(token0, token1);\\n }\\n\\n // calculates the CREATE2 address for a pair without making any external calls\\n function pairForCreate2(address factory, address tokenA, address tokenB) internal pure returns (address pair) {\\n (address token0, address token1) = sortTokens(tokenA, tokenB);\\n pair = address(uint160(bytes20(keccak256(abi.encodePacked(\\n hex'ff',\\n factory,\\n keccak256(abi.encodePacked(token0, token1)),\\n hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // init code hash\\n ))))); // this matches the CREATE2 in UniswapV2Factory.createPair\\n }\\n\\n // fetches and sorts the reserves for a pair\\n function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {\\n (address token0,) = sortTokens(tokenA, tokenB);\\n (uint reserve0, uint reserve1,) = IUniswapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves();\\n (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\\n }\\n\\n // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset\\n function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {\\n require(amountA > 0, 'UniswapV2Library: INSUFFICIENT_AMOUNT');\\n require(reserveA > 0 && reserveB > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n amountB = amountA.mul(reserveB) / reserveA;\\n }\\n\\n // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {\\n require(amountIn > 0, 'UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT');\\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n uint amountInWithFee = amountIn.mul(997);\\n uint numerator = amountInWithFee.mul(reserveOut);\\n uint denominator = reserveIn.mul(1000).add(amountInWithFee);\\n amountOut = numerator / denominator;\\n }\\n\\n // given an output amount of an asset and pair reserves, returns a required input amount of the other asset\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {\\n require(amountOut > 0, 'UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT');\\n require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');\\n uint numerator = reserveIn.mul(amountOut).mul(1000);\\n uint denominator = reserveOut.sub(amountOut).mul(997);\\n amountIn = (numerator / denominator).add(1);\\n }\\n\\n // performs chained getAmountOut calculations on any number of pairs\\n function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {\\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\\n amounts = new uint[](path.length);\\n amounts[0] = amountIn;\\n for (uint i = 0; i < path.length - 1; i++) {\\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]);\\n amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);\\n }\\n }\\n\\n // performs chained getAmountIn calculations on any number of pairs\\n function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {\\n require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');\\n amounts = new uint[](path.length);\\n amounts[amounts.length - 1] = amountOut;\\n for (uint i = path.length - 1; i > 0; i--) {\\n (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);\\n amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);\\n }\\n }\\n}\",\"keccak256\":\"0x80e0745c3e97d42bf75ab8b2dde5c6d7b042fa3e6ce23acf25b8d9000913e65b\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/Uniswap/UniswapV2Pair.sol": { + "UniswapV2Pair": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Burn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "Mint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0In", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1In", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0Out", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1Out", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Swap", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint112", + "name": "reserve0", + "type": "uint112" + }, + { + "indexed": false, + "internalType": "uint112", + "name": "reserve1", + "type": "uint112" + } + ], + "name": "Sync", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MINIMUM_LIQUIDITY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "burn", + "outputs": [ + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getReserves", + "outputs": [ + { + "internalType": "uint112", + "name": "_reserve0", + "type": "uint112" + }, + { + "internalType": "uint112", + "name": "_reserve1", + "type": "uint112" + }, + { + "internalType": "uint32", + "name": "_blockTimestampLast", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_token0", + "type": "address" + }, + { + "internalType": "address", + "name": "_token1", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "kLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "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" + }, + { + "inputs": [], + "name": "price0CumulativeLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "price1CumulativeLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "skim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount0Out", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Out", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "swap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "sync", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "token0", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token1", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": { + "@_10053": { + "entryPoint": null, + "id": 10053, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [], + "linkReferences": {}, + "object": "60806040526001600c5534801561001557600080fd5b50600580546001600160a01b03191633179055612db2806100376000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a71461049b578063d505accf146104bb578063dd62ed3e146104ce578063fff6cae9146104f957600080fd5b8063ba9a7a561461045f578063bc25cf7714610468578063c45a01551461047b57600080fd5b80637ecebe00116100d35780637ecebe00146103c857806389afcb44146103e857806395d89b4114610410578063a9059cbb1461044c57600080fd5b80636a6278421461038c57806370a082311461039f5780637464fc3d146103bf57600080fd5b806323b872dd116101665780633644e515116101405780633644e5151461035e578063485cc955146103675780635909c0d51461037a5780635a3d54931461038357600080fd5b806323b872dd1461030a57806330adf81f1461031d578063313ce5671461034457600080fd5b8063095ea7b311610197578063095ea7b31461028b5780630dfe1681146102ae57806318160ddd146102f357600080fd5b8063022c0d9f146101be57806306fdde03146101d35780630902f1ac14610225575b600080fd5b6101d16101cc366004612870565b610501565b005b61020f6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b60405161021c9190612936565b60405180910390f35b600854604080516dffffffffffffffffffffffffffff80841682526e01000000000000000000000000000084041660208201527c010000000000000000000000000000000000000000000000000000000090920463ffffffff169082015260600161021c565b61029e610299366004612987565b610c5d565b604051901515815260200161021c565b6006546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021c565b6102fc60005481565b60405190815260200161021c565b61029e6103183660046129b3565b610c74565b6102fc7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61034c601281565b60405160ff909116815260200161021c565b6102fc60035481565b6101d16103753660046129f4565b610d4d565b6102fc60095481565b6102fc600a5481565b6102fc61039a366004612a2d565b610e21565b6102fc6103ad366004612a2d565b60016020526000908152604090205481565b6102fc600b5481565b6102fc6103d6366004612a2d565b60046020526000908152604090205481565b6103fb6103f6366004612a2d565b6111f7565b6040805192835260208301919091520161021c565b61020f6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b61029e61045a366004612987565b6116af565b6102fc6103e881565b6101d1610476366004612a2d565b6116bc565b6005546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b6007546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b6101d16104c9366004612a4a565b61187f565b6102fc6104dc3660046129f4565b600260209081526000928352604080842090915290825290205481565b6101d1611b6a565b600c54600114610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b454400000000000000000000000000000060448201526064015b60405180910390fd5b6000600c55841515806105855750600084115b610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f556e697377617056323a20494e53554646494349454e545f4f55545055545f4160448201527f4d4f554e540000000000000000000000000000000000000000000000000000006064820152608401610569565b60008061066d6008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b5091509150816dffffffffffffffffffffffffffff16871080156106a05750806dffffffffffffffffffffffffffff1686105b61072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f59000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061079157508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6107f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f00000000000000000000006044820152606401610569565b8a1561080857610808828a8d611d36565b891561081957610819818a8c611d36565b86156108ac576040517f10d1e85c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a16906310d1e85c906108799033908f908f908e908e90600401612ac1565b600060405180830381600087803b15801561089357600080fd5b505af11580156108a7573d6000803e3d6000fd5b505050505b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015610916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093a9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290945073ffffffffffffffffffffffffffffffffffffffff8216906370a0823190602401602060405180830381865afa1580156109a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb9190612b39565b92505050600089856dffffffffffffffffffffffffffff166109ed9190612b81565b83116109fa576000610a1e565b610a148a6dffffffffffffffffffffffffffff8716612b81565b610a1e9084612b81565b90506000610a3c8a6dffffffffffffffffffffffffffff8716612b81565b8311610a49576000610a6d565b610a638a6dffffffffffffffffffffffffffff8716612b81565b610a6d9084612b81565b90506000821180610a7e5750600081115b610b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f556e697377617056323a20494e53554646494349454e545f494e5055545f414d60448201527f4f554e54000000000000000000000000000000000000000000000000000000006064820152608401610569565b6000610b2b610b19846003611ed6565b610b25876103e8611ed6565b90611f92565b90506000610b3d610b19846003611ed6565b9050610b69620f4240610b636dffffffffffffffffffffffffffff8b8116908b16611ed6565b90611ed6565b610b738383611ed6565b1015610bdb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b00000000000000000000000000000000000000006044820152606401610569565b5050610be984848888611fd4565b60408051838152602081018390529081018c9052606081018b905273ffffffffffffffffffffffffffffffffffffffff8a169033907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229060800160405180910390a350506001600c55505050505050505050565b6000610c6a3384846122b0565b5060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610d385773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610d069083611f92565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610d4384848461231f565b5060019392505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610dce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e0000000000000000000000006044820152606401610569565b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b6000600c54600114610e8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c819055600854600654604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808516956e01000000000000000000000000000090950416939273ffffffffffffffffffffffffffffffffffffffff16916370a082319160248083019260209291908290030181865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190612b39565b6007546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291925060009173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff19190612b39565b9050600061100f836dffffffffffffffffffffffffffff8716611f92565b9050600061102d836dffffffffffffffffffffffffffff8716611f92565b9050600061103b87876123ec565b600054909150806110725761105e6103e8610b256110598787611ed6565b612557565b985061106d60006103e86125c7565b6110c7565b6110c46dffffffffffffffffffffffffffff89166110908684611ed6565b61109a9190612bc7565b6dffffffffffffffffffffffffffff89166110b58685611ed6565b6110bf9190612bc7565b612670565b98505b60008911611157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f595f4d494e5445440000000000000000000000000000000000000000000000006064820152608401610569565b6111618a8a6125c7565b61116d86868a8a611fd4565b81156111a9576008546111a5906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611ed6565b600b555b604080518581526020810185905233917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a250506001600c5550949695505050505050565b600080600c54600114611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c819055600854600654600754604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808616966e010000000000000000000000000000909604169473ffffffffffffffffffffffffffffffffffffffff94851694909316929184916370a08231916024808201926020929091908290030181865afa158015611318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133c9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa1580156113ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d09190612b39565b306000908152600160205260408120549192506113ed88886123ec565b600054909150806113fe8487611ed6565b6114089190612bc7565b9a50806114158486611ed6565b61141f9190612bc7565b995060008b118015611431575060008a115b6114bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f595f4255524e45440000000000000000000000000000000000000000000000006064820152608401610569565b6114c73084612686565b6114d2878d8d611d36565b6114dd868d8c611d36565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290955073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa1580156115d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fc9190612b39565b935061160a85858b8b611fd4565b811561164657600854611642906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611ed6565b600b555b604080518c8152602081018c905273ffffffffffffffffffffffffffffffffffffffff8e169133917fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496910160405180910390a35050505050505050506001600c81905550915091565b6000610c6a33848461231f565b600c54600114611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c556006546007546008546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff93841693909216916117f091849186916117eb916dffffffffffffffffffffffffffff9091169084906370a08231906024015b602060405180830381865afa1580156117c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b259190612b39565b611d36565b6008546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015261187591839186916117eb916e0100000000000000000000000000009091046dffffffffffffffffffffffffffff169073ffffffffffffffffffffffffffffffffffffffff8516906370a08231906024016117aa565b50506001600c5550565b428410156118e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a204558504952454400000000000000000000000000006044820152606401610569565b60035473ffffffffffffffffffffffffffffffffffffffff8816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91908761194983612bdb565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016119ea9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611a73573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611aee57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e4154555245000000006044820152606401610569565b611b5f8989896122b0565b505050505050505050565b600c54600114611bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c556006546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152611d2f9173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611c4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6f9190612b39565b6007546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015611cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d019190612b39565b6008546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611fd4565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392871691611dfd9190612c14565b6000604051808303816000865af19150503d8060008114611e3a576040519150601f19603f3d011682016040523d82523d6000602084013e611e3f565b606091505b5091509150818015611e69575080511580611e69575080806020019051810190611e699190612c30565b611ecf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c45440000000000006044820152606401610569565b5050505050565b600082611ee557506000610c6e565b6000611ef18385612c52565b905082611efe8583612bc7565b14611f8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b9392505050565b6000611f8b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612737565b6dffffffffffffffffffffffffffff841180159061200057506dffffffffffffffffffffffffffff8311155b612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f57000000000000000000000000006044820152606401610569565b600061207764010000000042612c8f565b6008549091506000906120b0907c0100000000000000000000000000000000000000000000000000000000900463ffffffff1683612ca3565b905060008163ffffffff161180156120d757506dffffffffffffffffffffffffffff841615155b80156120f257506dffffffffffffffffffffffffffff831615155b156121c0578063ffffffff1661212f8561210b8661278b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906127b6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166121579190612c52565b600960008282546121689190612cc8565b909155505063ffffffff81166121818461210b8761278b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166121a99190612c52565b600a60008282546121ba9190612cc8565b90915550505b6008805463ffffffff84167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8981166e0100000000000000000000000000009081027fffffffff000000000000000000000000000000000000000000000000000000009095168c83161794909417918216831794859055604080519382169282169290921783529290930490911660208201527f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1910160405180910390a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461234f9082611f92565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461238b90826127d2565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123129085815260200190565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa15801561245c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124809190612ce0565b600b5473ffffffffffffffffffffffffffffffffffffffff821615801594509192509061254357801561253e5760006124cf6110596dffffffffffffffffffffffffffff888116908816611ed6565b905060006124dc83612557565b90508082111561253b5760006124fe6124f58484611f92565b60005490611ed6565b9050600061251783612511866005611ed6565b906127d2565b905060006125258284612bc7565b905080156125375761253787826125c7565b5050505b50505b61254f565b801561254f576000600b555b505092915050565b600060038211156125b85750806000612571600283612bc7565b61257c906001612cc8565b90505b818110156125b2579050806002816125978186612bc7565b6125a19190612cc8565b6125ab9190612bc7565b905061257f565b50919050565b81156125c2575060015b919050565b6000546125d490826127d2565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461260690826127d2565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126649085815260200190565b60405180910390a35050565b600081831061267f5781611f8b565b5090919050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546126b69082611f92565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040812091909155546126ea9082611f92565b600090815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612664565b60008184841115612775576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105699190612936565b5060006127828486612b81565b95945050505050565b6000610c6e6e0100000000000000000000000000006dffffffffffffffffffffffffffff8416612cfd565b6000611f8b6dffffffffffffffffffffffffffff831684612d41565b6000806127df8385612cc8565b905083811015611f8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8116811461286d57600080fd5b50565b60008060008060006080868803121561288857600080fd5b853594506020860135935060408601356128a18161284b565b9250606086013567ffffffffffffffff808211156128be57600080fd5b818801915088601f8301126128d257600080fd5b8135818111156128e157600080fd5b8960208285010111156128f357600080fd5b9699959850939650602001949392505050565b60005b83811015612921578181015183820152602001612909565b83811115612930576000848401525b50505050565b6020815260008251806020840152612955816040850160208701612906565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806040838503121561299a57600080fd5b82356129a58161284b565b946020939093013593505050565b6000806000606084860312156129c857600080fd5b83356129d38161284b565b925060208401356129e38161284b565b929592945050506040919091013590565b60008060408385031215612a0757600080fd5b8235612a128161284b565b91506020830135612a228161284b565b809150509250929050565b600060208284031215612a3f57600080fd5b8135611f8b8161284b565b600080600080600080600060e0888a031215612a6557600080fd5b8735612a708161284b565b96506020880135612a808161284b565b95506040880135945060608801359350608088013560ff81168114612aa457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015283604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101949350505050565b600060208284031215612b4b57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612b9357612b93612b52565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612bd657612bd6612b98565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612c0d57612c0d612b52565b5060010190565b60008251612c26818460208701612906565b9190910192915050565b600060208284031215612c4257600080fd5b81518015158114611f8b57600080fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c8a57612c8a612b52565b500290565b600082612c9e57612c9e612b98565b500690565b600063ffffffff83811690831681811015612cc057612cc0612b52565b039392505050565b60008219821115612cdb57612cdb612b52565b500190565b600060208284031215612cf257600080fd5b8151611f8b8161284b565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80831681851681830481118215151615612d3857612d38612b52565b02949350505050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80841680612d7057612d70612b98565b9216919091049291505056fea2646970667358221220738f09b9235788d5f6c3ff0250c6b0722c6d84358a084017dffe70343b7c638b64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0xC SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x2DB2 DUP1 PUSH2 0x37 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 0x1B9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A627842 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xBA9A7A56 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x49B JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x4BB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x4CE JUMPI DUP1 PUSH4 0xFFF6CAE9 EQ PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBA9A7A56 EQ PUSH2 0x45F JUMPI DUP1 PUSH4 0xBC25CF77 EQ PUSH2 0x468 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x47B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x3C8 JUMPI DUP1 PUSH4 0x89AFCB44 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x410 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6A627842 EQ PUSH2 0x38C JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x39F JUMPI DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x3BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x35E JUMPI DUP1 PUSH4 0x485CC955 EQ PUSH2 0x367 JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x37A JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x30A JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x2AE JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x22C0D9F EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x225 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1D1 PUSH2 0x1CC CALLDATASIZE PUSH1 0x4 PUSH2 0x2870 JUMP JUMPDEST PUSH2 0x501 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x556E697377617020563200000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21C SWAP2 SWAP1 PUSH2 0x2936 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND DUP3 MSTORE PUSH15 0x10000000000000000000000000000 DUP5 DIV AND PUSH1 0x20 DUP3 ADD MSTORE PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 DIV PUSH4 0xFFFFFFFF AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x21C JUMP JUMPDEST PUSH2 0x29E PUSH2 0x299 CALLDATASIZE PUSH1 0x4 PUSH2 0x2987 JUMP JUMPDEST PUSH2 0xC5D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x21C JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x2CE SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x21C JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x21C JUMP JUMPDEST PUSH2 0x29E PUSH2 0x318 CALLDATASIZE PUSH1 0x4 PUSH2 0x29B3 JUMP JUMPDEST PUSH2 0xC74 JUMP JUMPDEST PUSH2 0x2FC PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x34C PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x21C JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x375 CALLDATASIZE PUSH1 0x4 PUSH2 0x29F4 JUMP JUMPDEST PUSH2 0xD4D JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2FC PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x39A CALLDATASIZE PUSH1 0x4 PUSH2 0x2A2D JUMP JUMPDEST PUSH2 0xE21 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x3AD CALLDATASIZE PUSH1 0x4 PUSH2 0x2A2D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2FC PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x3D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A2D JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x3FB PUSH2 0x3F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A2D JUMP JUMPDEST PUSH2 0x11F7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x21C JUMP JUMPDEST PUSH2 0x20F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x554E492D56320000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x29E PUSH2 0x45A CALLDATASIZE PUSH1 0x4 PUSH2 0x2987 JUMP JUMPDEST PUSH2 0x16AF JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x3E8 DUP2 JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x476 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A2D JUMP JUMPDEST PUSH2 0x16BC JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x2CE SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH2 0x2CE SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x4C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A4A JUMP JUMPDEST PUSH2 0x187F JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x4DC CALLDATASIZE PUSH1 0x4 PUSH2 0x29F4 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x1B6A JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x572 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE DUP5 ISZERO ISZERO DUP1 PUSH2 0x585 JUMPI POP PUSH1 0x0 DUP5 GT JUMPDEST PUSH2 0x611 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E53554646494349454E545F4F55545055545F41 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x4D4F554E54000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x66D PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 LT DUP1 ISZERO PUSH2 0x6A0 JUMPI POP DUP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 LT JUMPDEST PUSH2 0x72C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E53554646494349454E545F4C49515549444954 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x5900000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 SWAP1 DUP2 AND SWAP1 DUP10 AND DUP3 EQ DUP1 ISZERO SWAP1 PUSH2 0x791 JUMPI POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST PUSH2 0x7F7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F544F0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST DUP11 ISZERO PUSH2 0x808 JUMPI PUSH2 0x808 DUP3 DUP11 DUP14 PUSH2 0x1D36 JUMP JUMPDEST DUP10 ISZERO PUSH2 0x819 JUMPI PUSH2 0x819 DUP2 DUP11 DUP13 PUSH2 0x1D36 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x8AC JUMPI PUSH1 0x40 MLOAD PUSH32 0x10D1E85C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND SWAP1 PUSH4 0x10D1E85C SWAP1 PUSH2 0x879 SWAP1 CALLER SWAP1 DUP16 SWAP1 DUP16 SWAP1 DUP15 SWAP1 DUP15 SWAP1 PUSH1 0x4 ADD PUSH2 0x2AC1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x893 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x916 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x93A SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9CB SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x0 DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x9ED SWAP2 SWAP1 PUSH2 0x2B81 JUMP JUMPDEST DUP4 GT PUSH2 0x9FA JUMPI PUSH1 0x0 PUSH2 0xA1E JUMP JUMPDEST PUSH2 0xA14 DUP11 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x2B81 JUMP JUMPDEST PUSH2 0xA1E SWAP1 DUP5 PUSH2 0x2B81 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xA3C DUP11 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x2B81 JUMP JUMPDEST DUP4 GT PUSH2 0xA49 JUMPI PUSH1 0x0 PUSH2 0xA6D JUMP JUMPDEST PUSH2 0xA63 DUP11 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x2B81 JUMP JUMPDEST PUSH2 0xA6D SWAP1 DUP5 PUSH2 0x2B81 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 GT DUP1 PUSH2 0xA7E JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0xB09 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E53554646494349454E545F494E5055545F414D PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x4F554E5400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB2B PUSH2 0xB19 DUP5 PUSH1 0x3 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0xB25 DUP8 PUSH2 0x3E8 PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 PUSH2 0x1F92 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB3D PUSH2 0xB19 DUP5 PUSH1 0x3 PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 POP PUSH2 0xB69 PUSH3 0xF4240 PUSH2 0xB63 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND SWAP1 DUP12 AND PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0xB73 DUP4 DUP4 PUSH2 0x1ED6 JUMP JUMPDEST LT ISZERO PUSH2 0xBDB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204B0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST POP POP PUSH2 0xBE9 DUP5 DUP5 DUP9 DUP9 PUSH2 0x1FD4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP12 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND SWAP1 CALLER SWAP1 PUSH32 0xD78AD95FA46C994B6551D0DA85FC275FE613CE37657FB8D5E3D130840159D822 SWAP1 PUSH1 0x80 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC6A CALLER DUP5 DUP5 PUSH2 0x22B0 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xD38 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xD06 SWAP1 DUP4 PUSH2 0x1F92 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0xD43 DUP5 DUP5 DUP5 PUSH2 0x231F JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xDCE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x7 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0xE8F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE PUSH1 0x8 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP6 PUSH15 0x10000000000000000000000000000 SWAP1 SWAP6 DIV AND SWAP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF35 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF59 SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFCD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFF1 SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x100F DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x1F92 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x102D DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x1F92 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x103B DUP8 DUP8 PUSH2 0x23EC JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1072 JUMPI PUSH2 0x105E PUSH2 0x3E8 PUSH2 0xB25 PUSH2 0x1059 DUP8 DUP8 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x2557 JUMP JUMPDEST SWAP9 POP PUSH2 0x106D PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x25C7 JUMP JUMPDEST PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0x10C4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x1090 DUP7 DUP5 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x109A SWAP2 SWAP1 PUSH2 0x2BC7 JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x10B5 DUP7 DUP6 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x10BF SWAP2 SWAP1 PUSH2 0x2BC7 JUMP JUMPDEST PUSH2 0x2670 JUMP JUMPDEST SWAP9 POP JUMPDEST PUSH1 0x0 DUP10 GT PUSH2 0x1157 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E53554646494349454E545F4C49515549444954 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x595F4D494E544544000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST PUSH2 0x1161 DUP11 DUP11 PUSH2 0x25C7 JUMP JUMPDEST PUSH2 0x116D DUP7 DUP7 DUP11 DUP11 PUSH2 0x1FD4 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x11A9 JUMPI PUSH1 0x8 SLOAD PUSH2 0x11A5 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x1ED6 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE CALLER SWAP2 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP SWAP5 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x1266 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE PUSH1 0x8 SLOAD PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND SWAP7 PUSH15 0x10000000000000000000000000000 SWAP1 SWAP7 DIV AND SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP5 SWAP1 SWAP4 AND SWAP3 SWAP2 DUP5 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1318 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x133C SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13AC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13D0 SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x13ED DUP9 DUP9 PUSH2 0x23EC JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x13FE DUP5 DUP8 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x1408 SWAP2 SWAP1 PUSH2 0x2BC7 JUMP JUMPDEST SWAP11 POP DUP1 PUSH2 0x1415 DUP5 DUP7 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x141F SWAP2 SWAP1 PUSH2 0x2BC7 JUMP JUMPDEST SWAP10 POP PUSH1 0x0 DUP12 GT DUP1 ISZERO PUSH2 0x1431 JUMPI POP PUSH1 0x0 DUP11 GT JUMPDEST PUSH2 0x14BD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E53554646494349454E545F4C49515549444954 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x595F4255524E4544000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST PUSH2 0x14C7 ADDRESS DUP5 PUSH2 0x2686 JUMP JUMPDEST PUSH2 0x14D2 DUP8 DUP14 DUP14 PUSH2 0x1D36 JUMP JUMPDEST PUSH2 0x14DD DUP7 DUP14 DUP13 PUSH2 0x1D36 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1547 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x156B SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP6 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x15FC SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST SWAP4 POP PUSH2 0x160A DUP6 DUP6 DUP12 DUP12 PUSH2 0x1FD4 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x1646 JUMPI PUSH1 0x8 SLOAD PUSH2 0x1642 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x1ED6 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP13 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP13 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND SWAP2 CALLER SWAP2 PUSH32 0xDCCD412F0B1252819CB1FD330B93224CA42612892BB3F4F789976E6D81936496 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP PUSH1 0x1 PUSH1 0xC DUP2 SWAP1 SSTORE POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC6A CALLER DUP5 DUP5 PUSH2 0x231F JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x1728 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH2 0x17F0 SWAP2 DUP5 SWAP2 DUP7 SWAP2 PUSH2 0x17EB SWAP2 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP5 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB25 SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH2 0x1D36 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x1875 SWAP2 DUP4 SWAP2 DUP7 SWAP2 PUSH2 0x17EB SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 SWAP2 DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH2 0x17AA JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x18E9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20455850495245440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SWAP3 SWAP2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP12 SWAP2 SWAP1 DUP8 PUSH2 0x1949 DUP4 PUSH2 0x2BDB JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x19EA SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A73 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1AEE JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1B54 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F5349474E415455524500000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH2 0x1B5F DUP10 DUP10 DUP10 PUSH2 0x22B0 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x1BD6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x1D2F SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C4B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C6F SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CDD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D01 SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x1FD4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xC SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x7472616E7366657228616464726573732C75696E743235362900000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP7 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP5 MSTORE SWAP2 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP8 AND SWAP2 PUSH2 0x1DFD SWAP2 SWAP1 PUSH2 0x2C14 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E3A 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 0x1E3F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1E69 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1E69 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1E69 SWAP2 SWAP1 PUSH2 0x2C30 JUMP JUMPDEST PUSH2 0x1ECF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A205452414E534645525F4641494C4544000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1EE5 JUMPI POP PUSH1 0x0 PUSH2 0xC6E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EF1 DUP4 DUP6 PUSH2 0x2C52 JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x1EFE DUP6 DUP4 PUSH2 0x2BC7 JUMP JUMPDEST EQ PUSH2 0x1F8B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7700000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F8B DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x2737 JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT DUP1 ISZERO SWAP1 PUSH2 0x2000 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO JUMPDEST PUSH2 0x2066 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204F564552464C4F5700000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2077 PUSH5 0x100000000 TIMESTAMP PUSH2 0x2C8F JUMP JUMPDEST PUSH1 0x8 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x20B0 SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP4 PUSH2 0x2CA3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x20D7 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x20F2 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x21C0 JUMPI DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x212F DUP6 PUSH2 0x210B DUP7 PUSH2 0x278B JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0x27B6 JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2157 SWAP2 SWAP1 PUSH2 0x2C52 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2168 SWAP2 SWAP1 PUSH2 0x2CC8 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x2181 DUP5 PUSH2 0x210B DUP8 PUSH2 0x278B JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x21A9 SWAP2 SWAP1 PUSH2 0x2C52 JUMP JUMPDEST PUSH1 0xA PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x21BA SWAP2 SWAP1 PUSH2 0x2CC8 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH4 0xFFFFFFFF DUP5 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 DUP2 AND PUSH15 0x10000000000000000000000000000 SWAP1 DUP2 MUL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND DUP13 DUP4 AND OR SWAP5 SWAP1 SWAP5 OR SWAP2 DUP3 AND DUP4 OR SWAP5 DUP6 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP4 DUP3 AND SWAP3 DUP3 AND SWAP3 SWAP1 SWAP3 OR DUP4 MSTORE SWAP3 SWAP1 SWAP4 DIV SWAP1 SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x1C411E9A96E071241C2F21F7726B17AE89E3CAB4C78BE50E062B03A9FFFBBAD1 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x234F SWAP1 DUP3 PUSH2 0x1F92 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x238B SWAP1 DUP3 PUSH2 0x27D2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x2312 SWAP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17E7E58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x245C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2480 SWAP2 SWAP1 PUSH2 0x2CE0 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO DUP1 ISZERO SWAP5 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0x2543 JUMPI DUP1 ISZERO PUSH2 0x253E JUMPI PUSH1 0x0 PUSH2 0x24CF PUSH2 0x1059 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP1 DUP9 AND PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x24DC DUP4 PUSH2 0x2557 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x253B JUMPI PUSH1 0x0 PUSH2 0x24FE PUSH2 0x24F5 DUP5 DUP5 PUSH2 0x1F92 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2517 DUP4 PUSH2 0x2511 DUP7 PUSH1 0x5 PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 PUSH2 0x27D2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2525 DUP3 DUP5 PUSH2 0x2BC7 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2537 JUMPI PUSH2 0x2537 DUP8 DUP3 PUSH2 0x25C7 JUMP JUMPDEST POP POP POP JUMPDEST POP POP JUMPDEST PUSH2 0x254F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x254F JUMPI PUSH1 0x0 PUSH1 0xB SSTORE JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0x25B8 JUMPI POP DUP1 PUSH1 0x0 PUSH2 0x2571 PUSH1 0x2 DUP4 PUSH2 0x2BC7 JUMP JUMPDEST PUSH2 0x257C SWAP1 PUSH1 0x1 PUSH2 0x2CC8 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x25B2 JUMPI SWAP1 POP DUP1 PUSH1 0x2 DUP2 PUSH2 0x2597 DUP2 DUP7 PUSH2 0x2BC7 JUMP JUMPDEST PUSH2 0x25A1 SWAP2 SWAP1 PUSH2 0x2CC8 JUMP JUMPDEST PUSH2 0x25AB SWAP2 SWAP1 PUSH2 0x2BC7 JUMP JUMPDEST SWAP1 POP PUSH2 0x257F JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 ISZERO PUSH2 0x25C2 JUMPI POP PUSH1 0x1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x25D4 SWAP1 DUP3 PUSH2 0x27D2 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2606 SWAP1 DUP3 PUSH2 0x27D2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x2664 SWAP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x267F JUMPI DUP2 PUSH2 0x1F8B JUMP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x26B6 SWAP1 DUP3 PUSH2 0x1F92 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x26EA SWAP1 DUP3 PUSH2 0x1F92 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0x2664 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x2775 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x569 SWAP2 SWAP1 PUSH2 0x2936 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x2782 DUP5 DUP7 PUSH2 0x2B81 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC6E PUSH15 0x10000000000000000000000000000 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x2CFD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F8B PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP5 PUSH2 0x2D41 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x27DF DUP4 DUP6 PUSH2 0x2CC8 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x1F8B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x286D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2888 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x28A1 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x28BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x28E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x28F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP PUSH1 0x20 ADD SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2921 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2909 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2930 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2955 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2906 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x299A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x29A5 DUP2 PUSH2 0x284B 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 0x29C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x29D3 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x29E3 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2A12 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2A22 DUP2 PUSH2 0x284B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1F8B DUP2 PUSH2 0x284B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2A65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x2A70 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x2A80 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2AA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP2 MSTORE DUP5 PUSH1 0x20 DUP3 ADD MSTORE DUP4 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x80 DUP3 ADD MSTORE DUP2 DUP4 PUSH1 0xA0 DUP4 ADD CALLDATACOPY PUSH1 0x0 DUP2 DUP4 ADD PUSH1 0xA0 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x2B93 JUMPI PUSH2 0x2B93 PUSH2 0x2B52 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2BD6 JUMPI PUSH2 0x2BD6 PUSH2 0x2B98 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x2C0D JUMPI PUSH2 0x2C0D PUSH2 0x2B52 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2C26 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2906 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1F8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x2C8A JUMPI PUSH2 0x2C8A PUSH2 0x2B52 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2C9E JUMPI PUSH2 0x2C9E PUSH2 0x2B98 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x2CC0 JUMPI PUSH2 0x2CC0 PUSH2 0x2B52 JUMP JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x2CDB JUMPI PUSH2 0x2CDB PUSH2 0x2B52 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2CF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1F8B DUP2 PUSH2 0x284B JUMP JUMPDEST PUSH1 0x0 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP2 DUP4 DIV DUP2 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x2D38 JUMPI PUSH2 0x2D38 PUSH2 0x2B52 JUMP JUMPDEST MUL SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND DUP1 PUSH2 0x2D70 JUMPI PUSH2 0x2D70 PUSH2 0x2B98 JUMP JUMPDEST SWAP3 AND SWAP2 SWAP1 SWAP2 DIV SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH20 0x8F09B9235788D5F6C3FF0250C6B0722C6D84358A ADDMOD BLOCKHASH OR 0xDF INVALID PUSH17 0x343B7C638B64736F6C634300080A003300 ", + "sourceMap": "312:12544:36:-:0;;;1875:1;1851:25;;2973:51;;;;;;;;;-1:-1:-1;2997:7:36;:20;;-1:-1:-1;;;;;;2997:20:36;3007:10;2997:20;;;312:12544;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@DOMAIN_SEPARATOR_9923": { + "entryPoint": null, + "id": 9923, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@MINIMUM_LIQUIDITY_9909": { + "entryPoint": null, + "id": 9909, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@PERMIT_TYPEHASH_9927": { + "entryPoint": null, + "id": 9927, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_approve_11036": { + "entryPoint": 8880, + "id": 11036, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_burn_11012": { + "entryPoint": 9862, + "id": 11012, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_mintFee_10301": { + "entryPoint": 9196, + "id": 10301, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_mint_10977": { + "entryPoint": 9671, + "id": 10977, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_safeTransfer_10044": { + "entryPoint": 7478, + "id": 10044, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_transfer_11074": { + "entryPoint": 8991, + "id": 11074, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_update_10193": { + "entryPoint": 8148, + "id": 10193, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@add_6728": { + "entryPoint": 10194, + "id": 6728, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@allowance_9903": { + "entryPoint": null, + "id": 9903, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@approve_11094": { + "entryPoint": 3165, + "id": 11094, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@balanceOf_9896": { + "entryPoint": null, + "id": 9896, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@burn_10623": { + "entryPoint": 4599, + "id": 10623, + "parameterSlots": 1, + "returnSlots": 2 + }, + "@decimals_9888": { + "entryPoint": null, + "id": 9888, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@encode_6919": { + "entryPoint": 10123, + "id": 6919, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@factory_9935": { + "entryPoint": null, + "id": 9935, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@getReserves_10001": { + "entryPoint": null, + "id": 10001, + "parameterSlots": 0, + "returnSlots": 3 + }, + "@initialize_10078": { + "entryPoint": 3405, + "id": 10078, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@kLast_9956": { + "entryPoint": null, + "id": 9956, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@min_6322": { + "entryPoint": 9840, + "id": 6322, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@mint_10451": { + "entryPoint": 3617, + "id": 10451, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@mul_6808": { + "entryPoint": 7894, + "id": 6808, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@name_9880": { + "entryPoint": null, + "id": 9880, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@nonces_9932": { + "entryPoint": null, + "id": 9932, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@permit_11246": { + "entryPoint": 6271, + "id": 11246, + "parameterSlots": 7, + "returnSlots": 0 + }, + "@price0CumulativeLast_9950": { + "entryPoint": null, + "id": 9950, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@price1CumulativeLast_9953": { + "entryPoint": null, + "id": 9953, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@skim_10912": { + "entryPoint": 5820, + "id": 10912, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@sqrt_6409": { + "entryPoint": 9559, + "id": 6409, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@sub_6745": { + "entryPoint": 8082, + "id": 6745, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@sub_6773": { + "entryPoint": 10039, + "id": 6773, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@swap_10861": { + "entryPoint": 1281, + "id": 10861, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@symbol_9884": { + "entryPoint": null, + "id": 9884, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@sync_10942": { + "entryPoint": 7018, + "id": 10942, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@token0_9938": { + "entryPoint": null, + "id": 9938, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@token1_9941": { + "entryPoint": null, + "id": 9941, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@totalSupply_9891": { + "entryPoint": null, + "id": 9891, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@transferFrom_11166": { + "entryPoint": 3188, + "id": 11166, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@transfer_11114": { + "entryPoint": 5807, + "id": 11114, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@uqdiv_6938": { + "entryPoint": 10166, + "id": 6938, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 10797, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address_fromMemory": { + "entryPoint": 11488, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 10740, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_addresst_uint256": { + "entryPoint": 10675, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32": { + "entryPoint": 10826, + "id": null, + "parameterSlots": 2, + "returnSlots": 7 + }, + "abi_decode_tuple_t_addresst_uint256": { + "entryPoint": 10631, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bool_fromMemory": { + "entryPoint": 11312, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256_fromMemory": { + "entryPoint": 11065, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256t_uint256t_addresst_bytes_calldata_ptr": { + "entryPoint": 10352, + "id": null, + "parameterSlots": 2, + "returnSlots": 5 + }, + "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 11284, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256_t_uint256_t_bytes_calldata_ptr__to_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed": { + "entryPoint": 10945, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 7, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 10550, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_05339493da7e2cbe77e17beadf6b91132eb307939495f5f1797bf88d95539e83__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_10e2efc32d8a31d3b2c11a545b3ed09c2dbabc58ef6de4033929d0002e425b67__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_25d395026e6e4dd4e9808c7d6d3dd1f45abaf4874ae71f7161fff58de03154d3__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_2d893fc9f5fa2494c39ecec82df2778b33226458ccce3b9a56f5372437d54a56__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3f354ef449b2a9b081220ce21f57691008110b653edc191d8288e60cef58bb5f__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_47797eaaf6df6dc2efdb1e824209400a8293aff4c1e7f6d90fcc4b3e3ba18a87__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_4cc87f075f04bdfaccb0dc54ec0b98f9169b1507a7e83ec8ee97e34d6a77db4a__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_50b159bbb975f5448705db79eafd212ba91c20fe5a110a13759239545d3339af__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_57ebfb4dd8b5082cdba0f23c17077e3b0ecb9782a51e0e9a15e9bc8c4b30c562__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_6591c9f5bf1fefaad109b76a20e25c857b696080c952191f86220f001a83663e__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_a5d1f08cd66a1a59e841a286c7f2c877311b5d331d2315cd2fe3c5f05e833928__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_d8733df98393ec23d211b1de22ecb14bb9ce352e147cbbbe19c11e12e90b7ff2__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint112_t_uint112__to_t_uint112_t_uint112__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint112_t_uint112_t_uint32__to_t_uint112_t_uint112_t_uint32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 11464, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_div_t_uint224": { + "entryPoint": 11585, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_div_t_uint256": { + "entryPoint": 11207, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_mul_t_uint224": { + "entryPoint": 11517, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_mul_t_uint256": { + "entryPoint": 11346, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 11137, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint32": { + "entryPoint": 11427, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "copy_memory_to_memory": { + "entryPoint": 10502, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "increment_t_uint256": { + "entryPoint": 11227, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "mod_t_uint256": { + "entryPoint": 11407, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 11090, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x12": { + "entryPoint": 11160, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_address": { + "entryPoint": 10315, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:17542:39", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:39", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "59:109:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "146:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "155:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "158:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "148:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "148:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "148:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "82:5:39" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "93:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "100:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "89:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "89:54:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "79:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "79:65:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "72:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "72:73:39" + }, + "nodeType": "YulIf", + "src": "69:93:39" + } + ] + }, + "name": "validator_revert_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "48:5:39", + "type": "" + } + ], + "src": "14:154:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "313:723:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "360:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "369:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "372:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "362:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "362:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "362:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "334:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "343:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "330:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "330:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "355:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "326:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "326:33:39" + }, + "nodeType": "YulIf", + "src": "323:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "385:33:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "408:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "395:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "395:23:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "385:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "427:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "454:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "465:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "450:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "450:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "437:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "437:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "427:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "478:45:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "508:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "519:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "504:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "504:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "491:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "491:32:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "482:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "557:5:39" + } + ], + "functionName": { + "name": "validator_revert_address", + "nodeType": "YulIdentifier", + "src": "532:24:39" + }, + "nodeType": "YulFunctionCall", + "src": "532:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "532:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "572:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "582:5:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "572:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "596:46:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "627:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "638:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "623:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "623:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "610:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "610:32:39" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "600:6:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "651:28:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "661:18:39", + "type": "", + "value": "0xffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "655:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "706:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "715:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "718:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "708:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "708:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "708:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "694:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "702:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "691:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "691:14:39" + }, + "nodeType": "YulIf", + "src": "688:34:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "731:32:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "745:9:39" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "756:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "741:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "741:22:39" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "735:2:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "811:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "820:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "823:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "813:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "813:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "813:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "790:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "794:4:39", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "786:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "786:13:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "801:7:39" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "782:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "782:27:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "775:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "775:35:39" + }, + "nodeType": "YulIf", + "src": "772:55:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "836:30:39", + "value": { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "863:2:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "850:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "850:16:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "840:6:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "893:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "902:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "905:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "895:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "895:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "895:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "881:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "889:2:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "878:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "878:14:39" + }, + "nodeType": "YulIf", + "src": "875:34:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "959:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "968:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "971:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "961:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "961:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "961:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "932:2:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "936:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "928:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "928:15:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "945:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "924:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "924:24:39" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "950:7:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "921:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "921:37:39" + }, + "nodeType": "YulIf", + "src": "918:57:39" + }, + { + "nodeType": "YulAssignment", + "src": "984:21:39", + "value": { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "998:2:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1002:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "994:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "994:11:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "984:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1014:16:39", + "value": { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1024:6:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "1014:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_addresst_bytes_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "247:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "258:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "270:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "278:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "286:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "294:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "302:6:39", + "type": "" + } + ], + "src": "173:863:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1094:205:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1104:10:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1113:1:39", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "1108:1:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1173:63:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "1198:3:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "1203:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1194:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1194:11:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "1217:3:39" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "1222:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1213:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1213:11:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1207:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "1207:18:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1187:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1187:39:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1187:39:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "1134:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1137:6:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1131:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1131:13:39" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "1145:19:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1147:15:39", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "1156:1:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1159:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1152:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1152:10:39" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "1147:1:39" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "1127:3:39", + "statements": [] + }, + "src": "1123:113:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1262:31:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "1275:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1280:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1271:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1271:16:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1289:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1264:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1264:27:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1264:27:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "1251:1:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1254:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1248:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "1248:13:39" + }, + "nodeType": "YulIf", + "src": "1245:48:39" + } + ] + }, + "name": "copy_memory_to_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "1072:3:39", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "1077:3:39", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1082:6:39", + "type": "" + } + ], + "src": "1041:258:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1425:321:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1442:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1453:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1435:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1435:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1435:21:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1465:27:39", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1485:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1479:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "1479:13:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1469:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1512:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1523:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1508:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1508:18:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1528:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1501:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "1501:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1501:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1570:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1578:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1566:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1566:15:39" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1587:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1598:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1583:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1583:18:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1603:6:39" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "1544:21:39" + }, + "nodeType": "YulFunctionCall", + "src": "1544:66:39" + }, + "nodeType": "YulExpressionStatement", + "src": "1544:66:39" + }, + { + "nodeType": "YulAssignment", + "src": "1619:121:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1635:9:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1654:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1662:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1650:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1650:15:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1667:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1646:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1646:88:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1631:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1631:104:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1737:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1627:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1627:113:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1619:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1394:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1405:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1416:4:39", + "type": "" + } + ], + "src": "1304:442:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1906:246:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1916:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1928:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1939:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1924:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "1924:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1916:4:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1951:40:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1961:30:39", + "type": "", + "value": "0xffffffffffffffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "1955:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2007:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2022:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "2030:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2018:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2018:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2000:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2000:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2000:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2054:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2065:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2050:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2050:18:39" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2074:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "2082:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2070:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2070:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2043:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2043:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2043:43:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2106:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2117:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2102:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2102:18:39" + }, + { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "2126:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2134:10:39", + "type": "", + "value": "0xffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2122:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2122:23:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2095:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2095:51:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2095:51:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint112_t_uint112_t_uint32__to_t_uint112_t_uint112_t_uint32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1859:9:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "1870:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1878:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1886:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1897:4:39", + "type": "" + } + ], + "src": "1751:401:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2244:228:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2290:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2299:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2302:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2292:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2292:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2292:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2265:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2274:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2261:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2261:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2286:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2257:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2257:32:39" + }, + "nodeType": "YulIf", + "src": "2254:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2315:36:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2341:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2328:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2328:23:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2319:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2385:5:39" + } + ], + "functionName": { + "name": "validator_revert_address", + "nodeType": "YulIdentifier", + "src": "2360:24:39" + }, + "nodeType": "YulFunctionCall", + "src": "2360:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2360:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "2400:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2410:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2400:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2424:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2451:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2462:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2447:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2447:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2434:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "2434:32:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2424:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2202:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2213:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2225:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2233:6:39", + "type": "" + } + ], + "src": "2157:315:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2572:92:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2582:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2594:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2605:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2590:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2590:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2582:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2624:9:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2649:6:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2642:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2642:14:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2635:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2635:22:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2617:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2617:41:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2617:41:39" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2541:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2552:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2563:4:39", + "type": "" + } + ], + "src": "2477:187:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2770:125:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2780:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2792:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2803:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2788:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2788:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2780:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2822:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2837:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2845:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2833:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "2833:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2815:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "2815:74:39" + }, + "nodeType": "YulExpressionStatement", + "src": "2815:74:39" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2739:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2750:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2761:4:39", + "type": "" + } + ], + "src": "2669:226:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3001:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3011:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3023:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3034:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3019:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3019:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3011:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3053:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3064:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3046:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3046:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3046:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2970:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2981:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2992:4:39", + "type": "" + } + ], + "src": "2900:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3186:352:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3232:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3241:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3244:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3234:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3234:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3234:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3207:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3216:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3203:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3203:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3228:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3199:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3199:32:39" + }, + "nodeType": "YulIf", + "src": "3196:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3257:36:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3283:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3270:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "3270:23:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3261:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3327:5:39" + } + ], + "functionName": { + "name": "validator_revert_address", + "nodeType": "YulIdentifier", + "src": "3302:24:39" + }, + "nodeType": "YulFunctionCall", + "src": "3302:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3302:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "3342:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3352:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3342:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3366:47:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3398:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3409:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3394:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3394:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3381:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "3381:32:39" + }, + "variables": [ + { + "name": "value_1", + "nodeType": "YulTypedName", + "src": "3370:7:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nodeType": "YulIdentifier", + "src": "3447:7:39" + } + ], + "functionName": { + "name": "validator_revert_address", + "nodeType": "YulIdentifier", + "src": "3422:24:39" + }, + "nodeType": "YulFunctionCall", + "src": "3422:33:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3422:33:39" + }, + { + "nodeType": "YulAssignment", + "src": "3464:17:39", + "value": { + "name": "value_1", + "nodeType": "YulIdentifier", + "src": "3474:7:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "3464:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3490:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3517:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3528:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3513:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3513:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3500:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "3500:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "3490:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3136:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3147:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3159:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "3167:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "3175:6:39", + "type": "" + } + ], + "src": "3082:456:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3644:76:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3654:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3666:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3677:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3662:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3662:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3654:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3696:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3707:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3689:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3689:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3689:25:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3613:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3624:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3635:4:39", + "type": "" + } + ], + "src": "3543:177:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3822:87:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3832:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3844:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3855:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3840:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3840:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3832:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3874:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3889:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3897:4:39", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "3885:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "3885:17:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3867:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "3867:36:39" + }, + "nodeType": "YulExpressionStatement", + "src": "3867:36:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3791:9:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3802:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3813:4:39", + "type": "" + } + ], + "src": "3725:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4001:301:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4047:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4056:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4059:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4049:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4049:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4049:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4022:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4031:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4018:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4018:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4043:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4014:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4014:32:39" + }, + "nodeType": "YulIf", + "src": "4011:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4072:36:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4098:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4085:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4085:23:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4076:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4142:5:39" + } + ], + "functionName": { + "name": "validator_revert_address", + "nodeType": "YulIdentifier", + "src": "4117:24:39" + }, + "nodeType": "YulFunctionCall", + "src": "4117:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4117:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "4157:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4167:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4157:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4181:47:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4213:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4224:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4209:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4209:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4196:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4196:32:39" + }, + "variables": [ + { + "name": "value_1", + "nodeType": "YulTypedName", + "src": "4185:7:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nodeType": "YulIdentifier", + "src": "4262:7:39" + } + ], + "functionName": { + "name": "validator_revert_address", + "nodeType": "YulIdentifier", + "src": "4237:24:39" + }, + "nodeType": "YulFunctionCall", + "src": "4237:33:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4237:33:39" + }, + { + "nodeType": "YulAssignment", + "src": "4279:17:39", + "value": { + "name": "value_1", + "nodeType": "YulIdentifier", + "src": "4289:7:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "4279:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3959:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3970:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3982:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "3990:6:39", + "type": "" + } + ], + "src": "3914:388:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4377:177:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4423:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4432:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4435:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4425:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4425:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4425:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4398:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4407:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4394:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4394:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4419:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4390:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4390:32:39" + }, + "nodeType": "YulIf", + "src": "4387:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4448:36:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4474:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4461:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "4461:23:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4452:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4518:5:39" + } + ], + "functionName": { + "name": "validator_revert_address", + "nodeType": "YulIdentifier", + "src": "4493:24:39" + }, + "nodeType": "YulFunctionCall", + "src": "4493:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4493:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "4533:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4543:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4533:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4343:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "4354:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4366:6:39", + "type": "" + } + ], + "src": "4307:247:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4688:119:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4698:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4710:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4721:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4706:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4706:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4698:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4740:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4751:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4733:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4733:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4733:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4778:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4789:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4774:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4774:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "4794:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4767:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "4767:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "4767:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4649:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "4660:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4668:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4679:4:39", + "type": "" + } + ], + "src": "4559:248:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4982:659:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5029:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5038:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5041:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5031:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5031:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5031:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5003:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5012:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4999:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4999:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5024:3:39", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4995:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "4995:33:39" + }, + "nodeType": "YulIf", + "src": "4992:53:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5054:36:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5080:9:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5067:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5067:23:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5058:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5124:5:39" + } + ], + "functionName": { + "name": "validator_revert_address", + "nodeType": "YulIdentifier", + "src": "5099:24:39" + }, + "nodeType": "YulFunctionCall", + "src": "5099:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5099:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "5139:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5149:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5139:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5163:47:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5195:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5206:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5191:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5191:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5178:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5178:32:39" + }, + "variables": [ + { + "name": "value_1", + "nodeType": "YulTypedName", + "src": "5167:7:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nodeType": "YulIdentifier", + "src": "5244:7:39" + } + ], + "functionName": { + "name": "validator_revert_address", + "nodeType": "YulIdentifier", + "src": "5219:24:39" + }, + "nodeType": "YulFunctionCall", + "src": "5219:33:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5219:33:39" + }, + { + "nodeType": "YulAssignment", + "src": "5261:17:39", + "value": { + "name": "value_1", + "nodeType": "YulIdentifier", + "src": "5271:7:39" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "5261:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5287:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5314:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5325:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5310:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5310:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5297:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5297:32:39" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "5287:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5338:42:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5365:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5376:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5361:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5361:18:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5348:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5348:32:39" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "5338:6:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5389:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5421:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5432:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5417:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5417:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5404:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5404:33:39" + }, + "variables": [ + { + "name": "value_2", + "nodeType": "YulTypedName", + "src": "5393:7:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5489:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5498:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5501:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5491:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5491:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5491:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value_2", + "nodeType": "YulIdentifier", + "src": "5459:7:39" + }, + { + "arguments": [ + { + "name": "value_2", + "nodeType": "YulIdentifier", + "src": "5472:7:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5481:4:39", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5468:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5468:18:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "5456:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "5456:31:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5449:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5449:39:39" + }, + "nodeType": "YulIf", + "src": "5446:59:39" + }, + { + "nodeType": "YulAssignment", + "src": "5514:17:39", + "value": { + "name": "value_2", + "nodeType": "YulIdentifier", + "src": "5524:7:39" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "5514:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5540:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5567:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5578:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5563:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5563:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5550:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5550:33:39" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "5540:6:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5592:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5619:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5630:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5615:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5615:19:39" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5602:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "5602:33:39" + }, + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "5592:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4900:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "4911:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4923:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "4931:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "4939:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "4947:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "4955:6:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "4963:6:39", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "4971:6:39", + "type": "" + } + ], + "src": "4812:829:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5820:167:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5837:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5848:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5830:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5830:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5830:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5871:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5882:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5867:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5867:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5887:2:39", + "type": "", + "value": "17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5860:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5860:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5860:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5910:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5921:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5906:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5906:18:39" + }, + { + "hexValue": "556e697377617056323a204c4f434b4544", + "kind": "string", + "nodeType": "YulLiteral", + "src": "5926:19:39", + "type": "", + "value": "UniswapV2: LOCKED" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5899:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "5899:47:39" + }, + "nodeType": "YulExpressionStatement", + "src": "5899:47:39" + }, + { + "nodeType": "YulAssignment", + "src": "5955:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5967:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5978:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5963:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "5963:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5955:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_4cc87f075f04bdfaccb0dc54ec0b98f9169b1507a7e83ec8ee97e34d6a77db4a__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5797:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5811:4:39", + "type": "" + } + ], + "src": "5646:341:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6166:227:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6183:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6194:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6176:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6176:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6176:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6217:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6228:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6213:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6213:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6233:2:39", + "type": "", + "value": "37" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6206:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6206:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6206:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6256:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6267:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6252:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6252:18:39" + }, + { + "hexValue": "556e697377617056323a20494e53554646494349454e545f4f55545055545f41", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6272:34:39", + "type": "", + "value": "UniswapV2: INSUFFICIENT_OUTPUT_A" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6245:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6245:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6245:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6327:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6338:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6323:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6323:18:39" + }, + { + "hexValue": "4d4f554e54", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6343:7:39", + "type": "", + "value": "MOUNT" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6316:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6316:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6316:35:39" + }, + { + "nodeType": "YulAssignment", + "src": "6360:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6372:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6383:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6368:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6368:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6360:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_05339493da7e2cbe77e17beadf6b91132eb307939495f5f1797bf88d95539e83__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6143:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6157:4:39", + "type": "" + } + ], + "src": "5992:401:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6572:223:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6589:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6600:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6582:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6582:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6582:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6623:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6634:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6619:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6619:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6639:2:39", + "type": "", + "value": "33" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6612:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6612:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6612:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6662:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6673:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6658:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6658:18:39" + }, + { + "hexValue": "556e697377617056323a20494e53554646494349454e545f4c49515549444954", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6678:34:39", + "type": "", + "value": "UniswapV2: INSUFFICIENT_LIQUIDIT" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6651:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6651:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6651:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6733:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6744:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6729:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6729:18:39" + }, + { + "hexValue": "59", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6749:3:39", + "type": "", + "value": "Y" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6722:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6722:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6722:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "6762:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6774:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6785:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6770:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6770:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6762:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3f354ef449b2a9b081220ce21f57691008110b653edc191d8288e60cef58bb5f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6549:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6563:4:39", + "type": "" + } + ], + "src": "6398:397:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6974:171:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6991:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7002:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6984:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6984:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "6984:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7025:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7036:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7021:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7021:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7041:2:39", + "type": "", + "value": "21" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7014:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7014:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7014:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7064:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7075:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7060:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7060:18:39" + }, + { + "hexValue": "556e697377617056323a20494e56414c49445f544f", + "kind": "string", + "nodeType": "YulLiteral", + "src": "7080:23:39", + "type": "", + "value": "UniswapV2: INVALID_TO" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7053:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7053:51:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7053:51:39" + }, + { + "nodeType": "YulAssignment", + "src": "7113:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7125:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7136:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7121:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7121:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7113:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_25d395026e6e4dd4e9808c7d6d3dd1f45abaf4874ae71f7161fff58de03154d3__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6951:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6965:4:39", + "type": "" + } + ], + "src": "6800:345:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7363:501:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7380:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7395:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7403:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "7391:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7391:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7373:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7373:74:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7373:74:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7467:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7478:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7463:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7463:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "7483:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7456:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7456:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7456:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7510:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7521:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7506:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7506:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "7526:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7499:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7499:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7499:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7553:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7564:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7549:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7549:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7569:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7542:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7542:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7542:31:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7593:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7604:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7589:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7589:19:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "7610:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7582:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7582:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7582:35:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7643:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7654:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7639:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7639:19:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "7660:6:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "7668:6:39" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "7626:12:39" + }, + "nodeType": "YulFunctionCall", + "src": "7626:49:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7626:49:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7699:9:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "7710:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7695:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7695:22:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7719:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7691:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7691:32:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7725:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7684:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7684:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7684:43:39" + }, + { + "nodeType": "YulAssignment", + "src": "7736:122:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7752:9:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "7771:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7779:2:39", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7767:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7767:15:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7784:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "7763:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7763:88:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7748:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7748:104:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7854:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7744:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7744:114:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7736:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256_t_uint256_t_bytes_calldata_ptr__to_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7300:9:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "7311:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "7319:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "7327:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "7335:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "7343:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7354:4:39", + "type": "" + } + ], + "src": "7150:714:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7950:103:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "7996:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8005:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8008:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7998:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7998:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "7998:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7971:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7980:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7967:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7967:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7992:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "7963:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "7963:32:39" + }, + "nodeType": "YulIf", + "src": "7960:52:39" + }, + { + "nodeType": "YulAssignment", + "src": "8021:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8037:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "8031:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "8031:16:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "8021:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7916:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "7927:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "7939:6:39", + "type": "" + } + ], + "src": "7869:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8090:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8107:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8110:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8100:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8100:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8100:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8204:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8207:4:39", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8197:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8197:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8197:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8228:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8231:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8221:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8221:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8221:15:39" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "8058:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8296:76:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "8318:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "8320:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "8320:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8320:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "8312:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "8315:1:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "8309:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "8309:8:39" + }, + "nodeType": "YulIf", + "src": "8306:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "8349:17:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "8361:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "8364:1:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8357:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8357:9:39" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "8349:4:39" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "8278:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "8281:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "8287:4:39", + "type": "" + } + ], + "src": "8247:125:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8551:226:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8568:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8579:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8561:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8561:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8561:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8602:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8613:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8598:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8598:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8618:2:39", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8591:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8591:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8591:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8641:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8652:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8637:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8637:18:39" + }, + { + "hexValue": "556e697377617056323a20494e53554646494349454e545f494e5055545f414d", + "kind": "string", + "nodeType": "YulLiteral", + "src": "8657:34:39", + "type": "", + "value": "UniswapV2: INSUFFICIENT_INPUT_AM" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8630:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8630:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8630:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8712:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8723:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8708:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8708:18:39" + }, + { + "hexValue": "4f554e54", + "kind": "string", + "nodeType": "YulLiteral", + "src": "8728:6:39", + "type": "", + "value": "OUNT" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8701:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8701:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8701:34:39" + }, + { + "nodeType": "YulAssignment", + "src": "8744:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8756:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8767:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8752:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8752:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8744:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_10e2efc32d8a31d3b2c11a545b3ed09c2dbabc58ef6de4033929d0002e425b67__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8528:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "8542:4:39", + "type": "" + } + ], + "src": "8377:400:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8956:162:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8973:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8984:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8966:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8966:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8966:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9007:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9018:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9003:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9003:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9023:2:39", + "type": "", + "value": "12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8996:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "8996:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "8996:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9046:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9057:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9042:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9042:18:39" + }, + { + "hexValue": "556e697377617056323a204b", + "kind": "string", + "nodeType": "YulLiteral", + "src": "9062:14:39", + "type": "", + "value": "UniswapV2: K" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9035:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9035:42:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9035:42:39" + }, + { + "nodeType": "YulAssignment", + "src": "9086:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9098:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9109:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9094:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9094:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9086:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_50b159bbb975f5448705db79eafd212ba91c20fe5a110a13759239545d3339af__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8933:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "8947:4:39", + "type": "" + } + ], + "src": "8782:336:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9308:206:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9318:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9330:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9341:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9326:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9326:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9318:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9361:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9372:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9354:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9354:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9354:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9399:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9410:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9395:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9395:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "9415:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9388:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9388:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9388:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9442:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9453:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9438:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9438:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "9458:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9431:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9431:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9431:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9485:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9496:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9481:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9481:18:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "9501:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9474:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9474:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9474:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9253:9:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "9264:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "9272:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "9280:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9288:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "9299:4:39", + "type": "" + } + ], + "src": "9123:391:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9693:170:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9710:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9721:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9703:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9703:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9703:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9744:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9755:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9740:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9740:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9760:2:39", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9733:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9733:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9733:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9783:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9794:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9779:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9779:18:39" + }, + { + "hexValue": "556e697377617056323a20464f5242494444454e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "9799:22:39", + "type": "", + "value": "UniswapV2: FORBIDDEN" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9772:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9772:50:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9772:50:39" + }, + { + "nodeType": "YulAssignment", + "src": "9831:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9843:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9854:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9839:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "9839:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9831:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9670:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "9684:4:39", + "type": "" + } + ], + "src": "9519:344:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9900:152:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9917:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9920:77:39", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9910:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "9910:88:39" + }, + "nodeType": "YulExpressionStatement", + "src": "9910:88:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10014:1:39", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10017:4:39", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10007:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10007:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10007:15:39" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10038:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10041:4:39", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10031:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10031:15:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10031:15:39" + } + ] + }, + "name": "panic_error_0x12", + "nodeType": "YulFunctionDefinition", + "src": "9868:184:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10103:74:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "10126:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x12", + "nodeType": "YulIdentifier", + "src": "10128:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "10128:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10128:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "10123:1:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "10116:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10116:9:39" + }, + "nodeType": "YulIf", + "src": "10113:35:39" + }, + { + "nodeType": "YulAssignment", + "src": "10157:14:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "10166:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "10169:1:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "10162:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10162:9:39" + }, + "variableNames": [ + { + "name": "r", + "nodeType": "YulIdentifier", + "src": "10157:1:39" + } + ] + } + ] + }, + "name": "checked_div_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "10088:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "10091:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "r", + "nodeType": "YulTypedName", + "src": "10097:1:39", + "type": "" + } + ], + "src": "10057:120:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10356:230:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10373:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10384:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10366:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10366:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10366:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10407:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10418:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10403:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10403:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10423:2:39", + "type": "", + "value": "40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10396:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10396:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10396:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10446:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10457:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10442:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10442:18:39" + }, + { + "hexValue": "556e697377617056323a20494e53554646494349454e545f4c49515549444954", + "kind": "string", + "nodeType": "YulLiteral", + "src": "10462:34:39", + "type": "", + "value": "UniswapV2: INSUFFICIENT_LIQUIDIT" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10435:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10435:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10435:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10517:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10528:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10513:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10513:18:39" + }, + { + "hexValue": "595f4d494e544544", + "kind": "string", + "nodeType": "YulLiteral", + "src": "10533:10:39", + "type": "", + "value": "Y_MINTED" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10506:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10506:38:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10506:38:39" + }, + { + "nodeType": "YulAssignment", + "src": "10553:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10565:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10576:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10561:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10561:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10553:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_6591c9f5bf1fefaad109b76a20e25c857b696080c952191f86220f001a83663e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10333:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "10347:4:39", + "type": "" + } + ], + "src": "10182:404:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10765:230:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10782:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10793:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10775:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10775:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10775:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10816:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10827:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10812:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10812:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10832:2:39", + "type": "", + "value": "40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10805:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10805:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10805:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10855:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10866:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10851:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10851:18:39" + }, + { + "hexValue": "556e697377617056323a20494e53554646494349454e545f4c49515549444954", + "kind": "string", + "nodeType": "YulLiteral", + "src": "10871:34:39", + "type": "", + "value": "UniswapV2: INSUFFICIENT_LIQUIDIT" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10844:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10844:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10844:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10926:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10937:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10922:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10922:18:39" + }, + { + "hexValue": "595f4255524e4544", + "kind": "string", + "nodeType": "YulLiteral", + "src": "10942:10:39", + "type": "", + "value": "Y_BURNED" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10915:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "10915:38:39" + }, + "nodeType": "YulExpressionStatement", + "src": "10915:38:39" + }, + { + "nodeType": "YulAssignment", + "src": "10962:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10974:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10985:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10970:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10970:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10962:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_57ebfb4dd8b5082cdba0f23c17077e3b0ecb9782a51e0e9a15e9bc8c4b30c562__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10742:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "10756:4:39", + "type": "" + } + ], + "src": "10591:404:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11174:168:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11191:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11202:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11184:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11184:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11184:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11225:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11236:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11221:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11221:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11241:2:39", + "type": "", + "value": "18" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11214:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11214:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11214:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11264:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11275:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11260:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11260:18:39" + }, + { + "hexValue": "556e697377617056323a2045585049524544", + "kind": "string", + "nodeType": "YulLiteral", + "src": "11280:20:39", + "type": "", + "value": "UniswapV2: EXPIRED" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11253:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11253:48:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11253:48:39" + }, + { + "nodeType": "YulAssignment", + "src": "11310:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11322:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11333:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11318:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11318:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "11310:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_47797eaaf6df6dc2efdb1e824209400a8293aff4c1e7f6d90fcc4b3e3ba18a87__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "11151:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "11165:4:39", + "type": "" + } + ], + "src": "11000:342:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11394:148:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "11485:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "11487:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "11487:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11487:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11410:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11417:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "11407:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "11407:77:39" + }, + "nodeType": "YulIf", + "src": "11404:103:39" + }, + { + "nodeType": "YulAssignment", + "src": "11516:20:39", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11527:5:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11534:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11523:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11523:13:39" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "11516:3:39" + } + ] + } + ] + }, + "name": "increment_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "11376:5:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "11386:3:39", + "type": "" + } + ], + "src": "11347:195:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11788:373:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11798:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11810:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11821:3:39", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11806:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11806:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "11798:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11841:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "11852:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11834:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11834:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11834:25:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "11868:52:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11878:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "11872:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11940:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11951:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11936:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11936:18:39" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "11960:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "11968:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "11956:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11956:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11929:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11929:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11929:43:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11992:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12003:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11988:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11988:18:39" + }, + { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "12012:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "12020:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "12008:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12008:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11981:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "11981:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "11981:43:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12044:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12055:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12040:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12040:18:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "12060:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12033:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12033:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12033:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12087:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12098:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12083:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12083:19:39" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "12104:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12076:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12076:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12076:35:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12131:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12142:3:39", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12127:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12127:19:39" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "12148:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12120:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12120:35:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12120:35:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "11717:9:39", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "11728:6:39", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "11736:6:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "11744:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "11752:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "11760:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "11768:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "11779:4:39", + "type": "" + } + ], + "src": "11547:614:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12414:196:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12431:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12436:66:39", + "type": "", + "value": "0x1901000000000000000000000000000000000000000000000000000000000000" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12424:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12424:79:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12424:79:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12523:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12528:1:39", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12519:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12519:11:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "12532:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12512:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12512:27:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12512:27:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12559:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12564:2:39", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12555:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12555:12:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "12569:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12548:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12548:28:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12548:28:39" + }, + { + "nodeType": "YulAssignment", + "src": "12585:19:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12596:3:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12601:2:39", + "type": "", + "value": "66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12592:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12592:12:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "12585:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "12382:3:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "12387:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "12395:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "12406:3:39", + "type": "" + } + ], + "src": "12166:444:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12796:217:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12806:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12818:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12829:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12814:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12814:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12806:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12849:9:39" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "12860:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12842:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12842:25:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12842:25:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12887:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12898:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12883:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12883:18:39" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "12907:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12915:4:39", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "12903:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12903:17:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12876:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12876:45:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12876:45:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12941:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12952:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12937:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12937:18:39" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "12957:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12930:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12930:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12930:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12984:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12995:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12980:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "12980:18:39" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "13000:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12973:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "12973:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "12973:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12741:9:39", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "12752:6:39", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "12760:6:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "12768:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "12776:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "12787:4:39", + "type": "" + } + ], + "src": "12615:398:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13192:178:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13209:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13220:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13202:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13202:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13202:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13243:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13254:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13239:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13239:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13259:2:39", + "type": "", + "value": "28" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13232:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13232:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13232:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13282:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13293:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13278:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13278:18:39" + }, + { + "hexValue": "556e697377617056323a20494e56414c49445f5349474e4154555245", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13298:30:39", + "type": "", + "value": "UniswapV2: INVALID_SIGNATURE" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13271:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13271:58:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13271:58:39" + }, + { + "nodeType": "YulAssignment", + "src": "13338:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13350:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13361:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13346:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13346:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13338:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_2d893fc9f5fa2494c39ecec82df2778b33226458ccce3b9a56f5372437d54a56__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13169:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13183:4:39", + "type": "" + } + ], + "src": "13018:352:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13504:168:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13514:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13526:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13537:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13522:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13522:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13514:4:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13556:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13571:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13579:42:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "13567:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13567:55:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13549:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13549:74:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13549:74:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13643:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13654:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13639:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13639:18:39" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "13659:6:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13632:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "13632:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13632:34:39" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13465:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "13476:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13484:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13495:4:39", + "type": "" + } + ], + "src": "13375:297:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13814:137:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "13824:27:39", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13844:6:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "13838:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "13838:13:39" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "13828:6:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13886:6:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13894:4:39", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13882:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13882:17:39" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13901:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "13906:6:39" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "13860:21:39" + }, + "nodeType": "YulFunctionCall", + "src": "13860:53:39" + }, + "nodeType": "YulExpressionStatement", + "src": "13860:53:39" + }, + { + "nodeType": "YulAssignment", + "src": "13922:23:39", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13933:3:39" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "13938:6:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13929:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "13929:16:39" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "13922:3:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "13790:3:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13795:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "13806:3:39", + "type": "" + } + ], + "src": "13677:274:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14034:199:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "14080:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14089:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14092:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "14082:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14082:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14082:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "14055:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14064:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "14051:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14051:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14076:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "14047:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14047:32:39" + }, + "nodeType": "YulIf", + "src": "14044:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "14105:29:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14124:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "14118:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "14118:16:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "14109:5:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14187:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14196:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14199:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "14189:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14189:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14189:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "14156:5:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "14177:5:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "14170:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14170:13:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "14163:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14163:21:39" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "14153:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "14153:32:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "14146:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14146:40:39" + }, + "nodeType": "YulIf", + "src": "14143:60:39" + }, + { + "nodeType": "YulAssignment", + "src": "14212:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "14222:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "14212:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bool_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "14000:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "14011:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "14023:6:39", + "type": "" + } + ], + "src": "13956:277:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14412:176:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14429:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14440:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14422:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14422:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14422:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14463:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14474:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14459:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14459:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14479:2:39", + "type": "", + "value": "26" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14452:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14452:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14452:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14502:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14513:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14498:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14498:18:39" + }, + { + "hexValue": "556e697377617056323a205452414e534645525f4641494c4544", + "kind": "string", + "nodeType": "YulLiteral", + "src": "14518:28:39", + "type": "", + "value": "UniswapV2: TRANSFER_FAILED" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14491:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14491:56:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14491:56:39" + }, + { + "nodeType": "YulAssignment", + "src": "14556:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14568:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14579:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14564:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14564:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "14556:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_d8733df98393ec23d211b1de22ecb14bb9ce352e147cbbbe19c11e12e90b7ff2__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "14389:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "14403:4:39", + "type": "" + } + ], + "src": "14238:350:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14645:176:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "14764:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "14766:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "14766:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "14766:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "14676:1:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "14669:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14669:9:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "14662:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "14662:17:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "14684:1:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14691:66:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "14759:1:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "14687:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14687:74:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "14681:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "14681:81:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "14658:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14658:105:39" + }, + "nodeType": "YulIf", + "src": "14655:131:39" + }, + { + "nodeType": "YulAssignment", + "src": "14795:20:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "14810:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "14813:1:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "14806:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "14806:9:39" + }, + "variableNames": [ + { + "name": "product", + "nodeType": "YulIdentifier", + "src": "14795:7:39" + } + ] + } + ] + }, + "name": "checked_mul_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "14624:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "14627:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nodeType": "YulTypedName", + "src": "14633:7:39", + "type": "" + } + ], + "src": "14593:228:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15000:223:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15017:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15028:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15010:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15010:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15010:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15051:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15062:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15047:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15047:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15067:2:39", + "type": "", + "value": "33" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15040:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15040:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15040:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15090:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15101:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15086:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15086:18:39" + }, + { + "hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f", + "kind": "string", + "nodeType": "YulLiteral", + "src": "15106:34:39", + "type": "", + "value": "SafeMath: multiplication overflo" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15079:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15079:62:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15079:62:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15161:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15172:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15157:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15157:18:39" + }, + { + "hexValue": "77", + "kind": "string", + "nodeType": "YulLiteral", + "src": "15177:3:39", + "type": "", + "value": "w" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15150:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15150:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15150:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "15190:27:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15202:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15213:3:39", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15198:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15198:19:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15190:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "14977:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "14991:4:39", + "type": "" + } + ], + "src": "14826:397:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15402:169:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15419:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15430:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15412:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15412:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15412:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15453:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15464:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15449:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15449:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15469:2:39", + "type": "", + "value": "19" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15442:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15442:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15442:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15492:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15503:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15488:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15488:18:39" + }, + { + "hexValue": "556e697377617056323a204f564552464c4f57", + "kind": "string", + "nodeType": "YulLiteral", + "src": "15508:21:39", + "type": "", + "value": "UniswapV2: OVERFLOW" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15481:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15481:49:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15481:49:39" + }, + { + "nodeType": "YulAssignment", + "src": "15539:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15551:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15562:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15547:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15547:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15539:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_a5d1f08cd66a1a59e841a286c7f2c877311b5d331d2315cd2fe3c5f05e833928__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15379:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "15393:4:39", + "type": "" + } + ], + "src": "15228:343:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15614:74:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "15637:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x12", + "nodeType": "YulIdentifier", + "src": "15639:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "15639:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15639:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "15634:1:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "15627:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "15627:9:39" + }, + "nodeType": "YulIf", + "src": "15624:35:39" + }, + { + "nodeType": "YulAssignment", + "src": "15668:14:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "15677:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "15680:1:39" + } + ], + "functionName": { + "name": "mod", + "nodeType": "YulIdentifier", + "src": "15673:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15673:9:39" + }, + "variableNames": [ + { + "name": "r", + "nodeType": "YulIdentifier", + "src": "15668:1:39" + } + ] + } + ] + }, + "name": "mod_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "15599:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "15602:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "r", + "nodeType": "YulTypedName", + "src": "15608:1:39", + "type": "" + } + ], + "src": "15576:112:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15741:173:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "15751:20:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15761:10:39", + "type": "", + "value": "0xffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "15755:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15780:21:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "15795:1:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "15798:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "15791:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15791:10:39" + }, + "variables": [ + { + "name": "x_1", + "nodeType": "YulTypedName", + "src": "15784:3:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15810:21:39", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "15825:1:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "15828:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "15821:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15821:10:39" + }, + "variables": [ + { + "name": "y_1", + "nodeType": "YulTypedName", + "src": "15814:3:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15856:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "15858:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "15858:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15858:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x_1", + "nodeType": "YulIdentifier", + "src": "15846:3:39" + }, + { + "name": "y_1", + "nodeType": "YulIdentifier", + "src": "15851:3:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "15843:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "15843:12:39" + }, + "nodeType": "YulIf", + "src": "15840:38:39" + }, + { + "nodeType": "YulAssignment", + "src": "15887:21:39", + "value": { + "arguments": [ + { + "name": "x_1", + "nodeType": "YulIdentifier", + "src": "15899:3:39" + }, + { + "name": "y_1", + "nodeType": "YulIdentifier", + "src": "15904:3:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15895:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15895:13:39" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "15887:4:39" + } + ] + } + ] + }, + "name": "checked_sub_t_uint32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "15723:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "15726:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "15732:4:39", + "type": "" + } + ], + "src": "15693:221:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15967:80:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "15994:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "15996:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "15996:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "15996:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "15983:1:39" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "15990:1:39" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "15986:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "15986:6:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "15980:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "15980:13:39" + }, + "nodeType": "YulIf", + "src": "15977:39:39" + }, + { + "nodeType": "YulAssignment", + "src": "16025:16:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "16036:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "16039:1:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16032:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16032:9:39" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "16025:3:39" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "15950:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "15953:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "15959:3:39", + "type": "" + } + ], + "src": "15919:128:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16181:186:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16191:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16203:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16214:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16199:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16199:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "16191:4:39" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "16226:40:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16236:30:39", + "type": "", + "value": "0xffffffffffffffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "16230:2:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16282:9:39" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "16297:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "16305:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "16293:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16293:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16275:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16275:34:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16275:34:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16329:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16340:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16325:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16325:18:39" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "16349:6:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "16357:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "16345:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16345:15:39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16318:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16318:43:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16318:43:39" + } + ] + }, + "name": "abi_encode_tuple_t_uint112_t_uint112__to_t_uint112_t_uint112__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "16142:9:39", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "16153:6:39", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "16161:6:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "16172:4:39", + "type": "" + } + ], + "src": "16052:315:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16453:170:39", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "16499:16:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16508:1:39", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16511:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "16501:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16501:12:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16501:12:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "16474:7:39" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16483:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "16470:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16470:23:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16495:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "16466:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16466:32:39" + }, + "nodeType": "YulIf", + "src": "16463:52:39" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "16524:29:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16543:9:39" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "16537:5:39" + }, + "nodeType": "YulFunctionCall", + "src": "16537:16:39" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16528:5:39", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16587:5:39" + } + ], + "functionName": { + "name": "validator_revert_address", + "nodeType": "YulIdentifier", + "src": "16562:24:39" + }, + "nodeType": "YulFunctionCall", + "src": "16562:31:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16562:31:39" + }, + { + "nodeType": "YulAssignment", + "src": "16602:15:39", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16612:5:39" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "16602:6:39" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "16419:9:39", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "16430:7:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "16442:6:39", + "type": "" + } + ], + "src": "16372:251:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16680:259:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16690:68:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16700:58:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "16694:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "16767:21:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "16782:1:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "16785:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "16778:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16778:10:39" + }, + "variables": [ + { + "name": "x_1", + "nodeType": "YulTypedName", + "src": "16771:3:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "16797:21:39", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "16812:1:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "16815:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "16808:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16808:10:39" + }, + "variables": [ + { + "name": "y_1", + "nodeType": "YulTypedName", + "src": "16801:3:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16878:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "16880:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "16880:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "16880:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x_1", + "nodeType": "YulIdentifier", + "src": "16848:3:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "16841:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16841:11:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "16834:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "16834:19:39" + }, + { + "arguments": [ + { + "name": "y_1", + "nodeType": "YulIdentifier", + "src": "16858:3:39" + }, + { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "16867:2:39" + }, + { + "name": "x_1", + "nodeType": "YulIdentifier", + "src": "16871:3:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "16863:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16863:12:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "16855:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "16855:21:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "16830:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16830:47:39" + }, + "nodeType": "YulIf", + "src": "16827:73:39" + }, + { + "nodeType": "YulAssignment", + "src": "16909:24:39", + "value": { + "arguments": [ + { + "name": "x_1", + "nodeType": "YulIdentifier", + "src": "16924:3:39" + }, + { + "name": "y_1", + "nodeType": "YulIdentifier", + "src": "16929:3:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "16920:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "16920:13:39" + }, + "variableNames": [ + { + "name": "product", + "nodeType": "YulIdentifier", + "src": "16909:7:39" + } + ] + } + ] + }, + "name": "checked_mul_t_uint224", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "16659:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "16662:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nodeType": "YulTypedName", + "src": "16668:7:39", + "type": "" + } + ], + "src": "16628:311:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16990:194:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "17000:68:39", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17010:58:39", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "17004:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "17077:21:39", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "17092:1:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "17095:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "17088:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17088:10:39" + }, + "variables": [ + { + "name": "y_1", + "nodeType": "YulTypedName", + "src": "17081:3:39", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17122:22:39", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x12", + "nodeType": "YulIdentifier", + "src": "17124:16:39" + }, + "nodeType": "YulFunctionCall", + "src": "17124:18:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17124:18:39" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y_1", + "nodeType": "YulIdentifier", + "src": "17117:3:39" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "17110:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17110:11:39" + }, + "nodeType": "YulIf", + "src": "17107:37:39" + }, + { + "nodeType": "YulAssignment", + "src": "17153:25:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "17166:1:39" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "17169:2:39" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "17162:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17162:10:39" + }, + { + "name": "y_1", + "nodeType": "YulIdentifier", + "src": "17174:3:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "17158:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17158:20:39" + }, + "variableNames": [ + { + "name": "r", + "nodeType": "YulIdentifier", + "src": "17153:1:39" + } + ] + } + ] + }, + "name": "checked_div_t_uint224", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "16975:1:39", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "16978:1:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "r", + "nodeType": "YulTypedName", + "src": "16984:1:39", + "type": "" + } + ], + "src": "16944:240:39" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17363:177:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17380:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17391:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17373:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17373:21:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17373:21:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17414:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17425:2:39", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17410:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17410:18:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17430:2:39", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17403:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17403:30:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17403:30:39" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17453:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17464:2:39", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17449:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17449:18:39" + }, + { + "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77", + "kind": "string", + "nodeType": "YulLiteral", + "src": "17469:29:39", + "type": "", + "value": "SafeMath: addition overflow" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17442:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "17442:57:39" + }, + "nodeType": "YulExpressionStatement", + "src": "17442:57:39" + }, + { + "nodeType": "YulAssignment", + "src": "17508:26:39", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17520:9:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17531:2:39", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17516:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "17516:18:39" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "17508:4:39" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "17340:9:39", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "17354:4:39", + "type": "" + } + ], + "src": "17189:351:39" + } + ] + }, + "contents": "{\n { }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_uint256t_uint256t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n let value := calldataload(add(headStart, 64))\n validator_revert_address(value)\n value2 := value\n let offset := calldataload(add(headStart, 96))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_2)\n if gt(length, _1) { revert(0, 0) }\n if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n value3 := add(_2, 32)\n value4 := length\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 abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n }\n function abi_encode_tuple_t_uint112_t_uint112_t_uint32__to_t_uint112_t_uint112_t_uint32__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := 0xffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, 0xffffffff))\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function abi_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_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n }\n function abi_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_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let value_2 := calldataload(add(headStart, 128))\n if iszero(eq(value_2, and(value_2, 0xff))) { revert(0, 0) }\n value4 := value_2\n value5 := calldataload(add(headStart, 160))\n value6 := calldataload(add(headStart, 192))\n }\n function abi_encode_tuple_t_stringliteral_4cc87f075f04bdfaccb0dc54ec0b98f9169b1507a7e83ec8ee97e34d6a77db4a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 17)\n mstore(add(headStart, 64), \"UniswapV2: LOCKED\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_05339493da7e2cbe77e17beadf6b91132eb307939495f5f1797bf88d95539e83__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"UniswapV2: INSUFFICIENT_OUTPUT_A\")\n mstore(add(headStart, 96), \"MOUNT\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_3f354ef449b2a9b081220ce21f57691008110b653edc191d8288e60cef58bb5f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"UniswapV2: INSUFFICIENT_LIQUIDIT\")\n mstore(add(headStart, 96), \"Y\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_25d395026e6e4dd4e9808c7d6d3dd1f45abaf4874ae71f7161fff58de03154d3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 21)\n mstore(add(headStart, 64), \"UniswapV2: INVALID_TO\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_uint256_t_uint256_t_bytes_calldata_ptr__to_t_address_t_uint256_t_uint256_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), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n mstore(add(headStart, 128), value4)\n calldatacopy(add(headStart, 160), value3, value4)\n mstore(add(add(headStart, value4), 160), 0)\n tail := add(add(headStart, and(add(value4, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 160)\n }\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function abi_encode_tuple_t_stringliteral_10e2efc32d8a31d3b2c11a545b3ed09c2dbabc58ef6de4033929d0002e425b67__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"UniswapV2: INSUFFICIENT_INPUT_AM\")\n mstore(add(headStart, 96), \"OUNT\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_50b159bbb975f5448705db79eafd212ba91c20fe5a110a13759239545d3339af__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), \"UniswapV2: K\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37__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), \"UniswapV2: FORBIDDEN\")\n tail := add(headStart, 96)\n }\n function panic_error_0x12()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y) { panic_error_0x12() }\n r := div(x, y)\n }\n function abi_encode_tuple_t_stringliteral_6591c9f5bf1fefaad109b76a20e25c857b696080c952191f86220f001a83663e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 40)\n mstore(add(headStart, 64), \"UniswapV2: INSUFFICIENT_LIQUIDIT\")\n mstore(add(headStart, 96), \"Y_MINTED\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_57ebfb4dd8b5082cdba0f23c17077e3b0ecb9782a51e0e9a15e9bc8c4b30c562__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 40)\n mstore(add(headStart, 64), \"UniswapV2: INSUFFICIENT_LIQUIDIT\")\n mstore(add(headStart, 96), \"Y_BURNED\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_47797eaaf6df6dc2efdb1e824209400a8293aff4c1e7f6d90fcc4b3e3ba18a87__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 18)\n mstore(add(headStart, 64), \"UniswapV2: EXPIRED\")\n tail := add(headStart, 96)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 192)\n mstore(headStart, value0)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n mstore(add(headStart, 160), value5)\n }\n function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n mstore(pos, 0x1901000000000000000000000000000000000000000000000000000000000000)\n mstore(add(pos, 2), value0)\n mstore(add(pos, 34), value1)\n end := add(pos, 66)\n }\n function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, 0xff))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_stringliteral_2d893fc9f5fa2494c39ecec82df2778b33226458ccce3b9a56f5372437d54a56__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 28)\n mstore(add(headStart, 64), \"UniswapV2: INVALID_SIGNATURE\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_d8733df98393ec23d211b1de22ecb14bb9ce352e147cbbbe19c11e12e90b7ff2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 26)\n mstore(add(headStart, 64), \"UniswapV2: TRANSFER_FAILED\")\n tail := add(headStart, 96)\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n product := mul(x, y)\n }\n function abi_encode_tuple_t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"SafeMath: multiplication overflo\")\n mstore(add(headStart, 96), \"w\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_a5d1f08cd66a1a59e841a286c7f2c877311b5d331d2315cd2fe3c5f05e833928__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 19)\n mstore(add(headStart, 64), \"UniswapV2: OVERFLOW\")\n tail := add(headStart, 96)\n }\n function mod_t_uint256(x, y) -> r\n {\n if iszero(y) { panic_error_0x12() }\n r := mod(x, y)\n }\n function checked_sub_t_uint32(x, y) -> diff\n {\n let _1 := 0xffffffff\n let x_1 := and(x, _1)\n let y_1 := and(y, _1)\n if lt(x_1, y_1) { panic_error_0x11() }\n diff := sub(x_1, y_1)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function abi_encode_tuple_t_uint112_t_uint112__to_t_uint112_t_uint112__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := 0xffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function checked_mul_t_uint224(x, y) -> product\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n let x_1 := and(x, _1)\n let y_1 := and(y, _1)\n if and(iszero(iszero(x_1)), gt(y_1, div(_1, x_1))) { panic_error_0x11() }\n product := mul(x_1, y_1)\n }\n function checked_div_t_uint224(x, y) -> r\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n let y_1 := and(y, _1)\n if iszero(y_1) { panic_error_0x12() }\n r := div(and(x, _1), y_1)\n }\n function abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"SafeMath: addition overflow\")\n tail := add(headStart, 96)\n }\n}", + "id": 39, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a71461049b578063d505accf146104bb578063dd62ed3e146104ce578063fff6cae9146104f957600080fd5b8063ba9a7a561461045f578063bc25cf7714610468578063c45a01551461047b57600080fd5b80637ecebe00116100d35780637ecebe00146103c857806389afcb44146103e857806395d89b4114610410578063a9059cbb1461044c57600080fd5b80636a6278421461038c57806370a082311461039f5780637464fc3d146103bf57600080fd5b806323b872dd116101665780633644e515116101405780633644e5151461035e578063485cc955146103675780635909c0d51461037a5780635a3d54931461038357600080fd5b806323b872dd1461030a57806330adf81f1461031d578063313ce5671461034457600080fd5b8063095ea7b311610197578063095ea7b31461028b5780630dfe1681146102ae57806318160ddd146102f357600080fd5b8063022c0d9f146101be57806306fdde03146101d35780630902f1ac14610225575b600080fd5b6101d16101cc366004612870565b610501565b005b61020f6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b60405161021c9190612936565b60405180910390f35b600854604080516dffffffffffffffffffffffffffff80841682526e01000000000000000000000000000084041660208201527c010000000000000000000000000000000000000000000000000000000090920463ffffffff169082015260600161021c565b61029e610299366004612987565b610c5d565b604051901515815260200161021c565b6006546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021c565b6102fc60005481565b60405190815260200161021c565b61029e6103183660046129b3565b610c74565b6102fc7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61034c601281565b60405160ff909116815260200161021c565b6102fc60035481565b6101d16103753660046129f4565b610d4d565b6102fc60095481565b6102fc600a5481565b6102fc61039a366004612a2d565b610e21565b6102fc6103ad366004612a2d565b60016020526000908152604090205481565b6102fc600b5481565b6102fc6103d6366004612a2d565b60046020526000908152604090205481565b6103fb6103f6366004612a2d565b6111f7565b6040805192835260208301919091520161021c565b61020f6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b61029e61045a366004612987565b6116af565b6102fc6103e881565b6101d1610476366004612a2d565b6116bc565b6005546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b6007546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b6101d16104c9366004612a4a565b61187f565b6102fc6104dc3660046129f4565b600260209081526000928352604080842090915290825290205481565b6101d1611b6a565b600c54600114610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b454400000000000000000000000000000060448201526064015b60405180910390fd5b6000600c55841515806105855750600084115b610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f556e697377617056323a20494e53554646494349454e545f4f55545055545f4160448201527f4d4f554e540000000000000000000000000000000000000000000000000000006064820152608401610569565b60008061066d6008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b5091509150816dffffffffffffffffffffffffffff16871080156106a05750806dffffffffffffffffffffffffffff1686105b61072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f59000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061079157508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6107f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f00000000000000000000006044820152606401610569565b8a1561080857610808828a8d611d36565b891561081957610819818a8c611d36565b86156108ac576040517f10d1e85c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a16906310d1e85c906108799033908f908f908e908e90600401612ac1565b600060405180830381600087803b15801561089357600080fd5b505af11580156108a7573d6000803e3d6000fd5b505050505b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015610916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093a9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290945073ffffffffffffffffffffffffffffffffffffffff8216906370a0823190602401602060405180830381865afa1580156109a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb9190612b39565b92505050600089856dffffffffffffffffffffffffffff166109ed9190612b81565b83116109fa576000610a1e565b610a148a6dffffffffffffffffffffffffffff8716612b81565b610a1e9084612b81565b90506000610a3c8a6dffffffffffffffffffffffffffff8716612b81565b8311610a49576000610a6d565b610a638a6dffffffffffffffffffffffffffff8716612b81565b610a6d9084612b81565b90506000821180610a7e5750600081115b610b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f556e697377617056323a20494e53554646494349454e545f494e5055545f414d60448201527f4f554e54000000000000000000000000000000000000000000000000000000006064820152608401610569565b6000610b2b610b19846003611ed6565b610b25876103e8611ed6565b90611f92565b90506000610b3d610b19846003611ed6565b9050610b69620f4240610b636dffffffffffffffffffffffffffff8b8116908b16611ed6565b90611ed6565b610b738383611ed6565b1015610bdb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b00000000000000000000000000000000000000006044820152606401610569565b5050610be984848888611fd4565b60408051838152602081018390529081018c9052606081018b905273ffffffffffffffffffffffffffffffffffffffff8a169033907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229060800160405180910390a350506001600c55505050505050505050565b6000610c6a3384846122b0565b5060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610d385773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610d069083611f92565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610d4384848461231f565b5060019392505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610dce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e0000000000000000000000006044820152606401610569565b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b6000600c54600114610e8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c819055600854600654604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808516956e01000000000000000000000000000090950416939273ffffffffffffffffffffffffffffffffffffffff16916370a082319160248083019260209291908290030181865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190612b39565b6007546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291925060009173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff19190612b39565b9050600061100f836dffffffffffffffffffffffffffff8716611f92565b9050600061102d836dffffffffffffffffffffffffffff8716611f92565b9050600061103b87876123ec565b600054909150806110725761105e6103e8610b256110598787611ed6565b612557565b985061106d60006103e86125c7565b6110c7565b6110c46dffffffffffffffffffffffffffff89166110908684611ed6565b61109a9190612bc7565b6dffffffffffffffffffffffffffff89166110b58685611ed6565b6110bf9190612bc7565b612670565b98505b60008911611157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f595f4d494e5445440000000000000000000000000000000000000000000000006064820152608401610569565b6111618a8a6125c7565b61116d86868a8a611fd4565b81156111a9576008546111a5906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611ed6565b600b555b604080518581526020810185905233917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a250506001600c5550949695505050505050565b600080600c54600114611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c819055600854600654600754604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808616966e010000000000000000000000000000909604169473ffffffffffffffffffffffffffffffffffffffff94851694909316929184916370a08231916024808201926020929091908290030181865afa158015611318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133c9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa1580156113ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d09190612b39565b306000908152600160205260408120549192506113ed88886123ec565b600054909150806113fe8487611ed6565b6114089190612bc7565b9a50806114158486611ed6565b61141f9190612bc7565b995060008b118015611431575060008a115b6114bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f595f4255524e45440000000000000000000000000000000000000000000000006064820152608401610569565b6114c73084612686565b6114d2878d8d611d36565b6114dd868d8c611d36565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290955073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa1580156115d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fc9190612b39565b935061160a85858b8b611fd4565b811561164657600854611642906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611ed6565b600b555b604080518c8152602081018c905273ffffffffffffffffffffffffffffffffffffffff8e169133917fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496910160405180910390a35050505050505050506001600c81905550915091565b6000610c6a33848461231f565b600c54600114611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c556006546007546008546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff93841693909216916117f091849186916117eb916dffffffffffffffffffffffffffff9091169084906370a08231906024015b602060405180830381865afa1580156117c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b259190612b39565b611d36565b6008546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015261187591839186916117eb916e0100000000000000000000000000009091046dffffffffffffffffffffffffffff169073ffffffffffffffffffffffffffffffffffffffff8516906370a08231906024016117aa565b50506001600c5550565b428410156118e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a204558504952454400000000000000000000000000006044820152606401610569565b60035473ffffffffffffffffffffffffffffffffffffffff8816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91908761194983612bdb565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016119ea9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611a73573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611aee57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e4154555245000000006044820152606401610569565b611b5f8989896122b0565b505050505050505050565b600c54600114611bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c556006546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152611d2f9173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611c4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6f9190612b39565b6007546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015611cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d019190612b39565b6008546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611fd4565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392871691611dfd9190612c14565b6000604051808303816000865af19150503d8060008114611e3a576040519150601f19603f3d011682016040523d82523d6000602084013e611e3f565b606091505b5091509150818015611e69575080511580611e69575080806020019051810190611e699190612c30565b611ecf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c45440000000000006044820152606401610569565b5050505050565b600082611ee557506000610c6e565b6000611ef18385612c52565b905082611efe8583612bc7565b14611f8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b9392505050565b6000611f8b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612737565b6dffffffffffffffffffffffffffff841180159061200057506dffffffffffffffffffffffffffff8311155b612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f57000000000000000000000000006044820152606401610569565b600061207764010000000042612c8f565b6008549091506000906120b0907c0100000000000000000000000000000000000000000000000000000000900463ffffffff1683612ca3565b905060008163ffffffff161180156120d757506dffffffffffffffffffffffffffff841615155b80156120f257506dffffffffffffffffffffffffffff831615155b156121c0578063ffffffff1661212f8561210b8661278b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906127b6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166121579190612c52565b600960008282546121689190612cc8565b909155505063ffffffff81166121818461210b8761278b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166121a99190612c52565b600a60008282546121ba9190612cc8565b90915550505b6008805463ffffffff84167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8981166e0100000000000000000000000000009081027fffffffff000000000000000000000000000000000000000000000000000000009095168c83161794909417918216831794859055604080519382169282169290921783529290930490911660208201527f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1910160405180910390a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461234f9082611f92565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461238b90826127d2565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123129085815260200190565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa15801561245c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124809190612ce0565b600b5473ffffffffffffffffffffffffffffffffffffffff821615801594509192509061254357801561253e5760006124cf6110596dffffffffffffffffffffffffffff888116908816611ed6565b905060006124dc83612557565b90508082111561253b5760006124fe6124f58484611f92565b60005490611ed6565b9050600061251783612511866005611ed6565b906127d2565b905060006125258284612bc7565b905080156125375761253787826125c7565b5050505b50505b61254f565b801561254f576000600b555b505092915050565b600060038211156125b85750806000612571600283612bc7565b61257c906001612cc8565b90505b818110156125b2579050806002816125978186612bc7565b6125a19190612cc8565b6125ab9190612bc7565b905061257f565b50919050565b81156125c2575060015b919050565b6000546125d490826127d2565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461260690826127d2565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126649085815260200190565b60405180910390a35050565b600081831061267f5781611f8b565b5090919050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546126b69082611f92565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040812091909155546126ea9082611f92565b600090815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612664565b60008184841115612775576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105699190612936565b5060006127828486612b81565b95945050505050565b6000610c6e6e0100000000000000000000000000006dffffffffffffffffffffffffffff8416612cfd565b6000611f8b6dffffffffffffffffffffffffffff831684612d41565b6000806127df8385612cc8565b905083811015611f8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8116811461286d57600080fd5b50565b60008060008060006080868803121561288857600080fd5b853594506020860135935060408601356128a18161284b565b9250606086013567ffffffffffffffff808211156128be57600080fd5b818801915088601f8301126128d257600080fd5b8135818111156128e157600080fd5b8960208285010111156128f357600080fd5b9699959850939650602001949392505050565b60005b83811015612921578181015183820152602001612909565b83811115612930576000848401525b50505050565b6020815260008251806020840152612955816040850160208701612906565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806040838503121561299a57600080fd5b82356129a58161284b565b946020939093013593505050565b6000806000606084860312156129c857600080fd5b83356129d38161284b565b925060208401356129e38161284b565b929592945050506040919091013590565b60008060408385031215612a0757600080fd5b8235612a128161284b565b91506020830135612a228161284b565b809150509250929050565b600060208284031215612a3f57600080fd5b8135611f8b8161284b565b600080600080600080600060e0888a031215612a6557600080fd5b8735612a708161284b565b96506020880135612a808161284b565b95506040880135945060608801359350608088013560ff81168114612aa457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015283604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101949350505050565b600060208284031215612b4b57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612b9357612b93612b52565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612bd657612bd6612b98565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612c0d57612c0d612b52565b5060010190565b60008251612c26818460208701612906565b9190910192915050565b600060208284031215612c4257600080fd5b81518015158114611f8b57600080fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c8a57612c8a612b52565b500290565b600082612c9e57612c9e612b98565b500690565b600063ffffffff83811690831681811015612cc057612cc0612b52565b039392505050565b60008219821115612cdb57612cdb612b52565b500190565b600060208284031215612cf257600080fd5b8151611f8b8161284b565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80831681851681830481118215151615612d3857612d38612b52565b02949350505050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80841680612d7057612d70612b98565b9216919091049291505056fea2646970667358221220738f09b9235788d5f6c3ff0250c6b0722c6d84358a084017dffe70343b7c638b64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A627842 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xBA9A7A56 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x49B JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x4BB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x4CE JUMPI DUP1 PUSH4 0xFFF6CAE9 EQ PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBA9A7A56 EQ PUSH2 0x45F JUMPI DUP1 PUSH4 0xBC25CF77 EQ PUSH2 0x468 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x47B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x3C8 JUMPI DUP1 PUSH4 0x89AFCB44 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x410 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6A627842 EQ PUSH2 0x38C JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x39F JUMPI DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x3BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x35E JUMPI DUP1 PUSH4 0x485CC955 EQ PUSH2 0x367 JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x37A JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x30A JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x2AE JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x22C0D9F EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x225 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1D1 PUSH2 0x1CC CALLDATASIZE PUSH1 0x4 PUSH2 0x2870 JUMP JUMPDEST PUSH2 0x501 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x556E697377617020563200000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21C SWAP2 SWAP1 PUSH2 0x2936 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND DUP3 MSTORE PUSH15 0x10000000000000000000000000000 DUP5 DIV AND PUSH1 0x20 DUP3 ADD MSTORE PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 DIV PUSH4 0xFFFFFFFF AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x21C JUMP JUMPDEST PUSH2 0x29E PUSH2 0x299 CALLDATASIZE PUSH1 0x4 PUSH2 0x2987 JUMP JUMPDEST PUSH2 0xC5D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x21C JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x2CE SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x21C JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x21C JUMP JUMPDEST PUSH2 0x29E PUSH2 0x318 CALLDATASIZE PUSH1 0x4 PUSH2 0x29B3 JUMP JUMPDEST PUSH2 0xC74 JUMP JUMPDEST PUSH2 0x2FC PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x34C PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x21C JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x375 CALLDATASIZE PUSH1 0x4 PUSH2 0x29F4 JUMP JUMPDEST PUSH2 0xD4D JUMP JUMPDEST PUSH2 0x2FC PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2FC PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x39A CALLDATASIZE PUSH1 0x4 PUSH2 0x2A2D JUMP JUMPDEST PUSH2 0xE21 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x3AD CALLDATASIZE PUSH1 0x4 PUSH2 0x2A2D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2FC PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x3D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A2D JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x3FB PUSH2 0x3F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A2D JUMP JUMPDEST PUSH2 0x11F7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x21C JUMP JUMPDEST PUSH2 0x20F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x554E492D56320000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x29E PUSH2 0x45A CALLDATASIZE PUSH1 0x4 PUSH2 0x2987 JUMP JUMPDEST PUSH2 0x16AF JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x3E8 DUP2 JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x476 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A2D JUMP JUMPDEST PUSH2 0x16BC JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x2CE SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH2 0x2CE SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x4C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A4A JUMP JUMPDEST PUSH2 0x187F JUMP JUMPDEST PUSH2 0x2FC PUSH2 0x4DC CALLDATASIZE PUSH1 0x4 PUSH2 0x29F4 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x1B6A JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x572 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE DUP5 ISZERO ISZERO DUP1 PUSH2 0x585 JUMPI POP PUSH1 0x0 DUP5 GT JUMPDEST PUSH2 0x611 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E53554646494349454E545F4F55545055545F41 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x4D4F554E54000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x66D PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 LT DUP1 ISZERO PUSH2 0x6A0 JUMPI POP DUP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 LT JUMPDEST PUSH2 0x72C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E53554646494349454E545F4C49515549444954 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x5900000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 SWAP1 DUP2 AND SWAP1 DUP10 AND DUP3 EQ DUP1 ISZERO SWAP1 PUSH2 0x791 JUMPI POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST PUSH2 0x7F7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F544F0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST DUP11 ISZERO PUSH2 0x808 JUMPI PUSH2 0x808 DUP3 DUP11 DUP14 PUSH2 0x1D36 JUMP JUMPDEST DUP10 ISZERO PUSH2 0x819 JUMPI PUSH2 0x819 DUP2 DUP11 DUP13 PUSH2 0x1D36 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x8AC JUMPI PUSH1 0x40 MLOAD PUSH32 0x10D1E85C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND SWAP1 PUSH4 0x10D1E85C SWAP1 PUSH2 0x879 SWAP1 CALLER SWAP1 DUP16 SWAP1 DUP16 SWAP1 DUP15 SWAP1 DUP15 SWAP1 PUSH1 0x4 ADD PUSH2 0x2AC1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x893 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x916 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x93A SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9CB SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x0 DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x9ED SWAP2 SWAP1 PUSH2 0x2B81 JUMP JUMPDEST DUP4 GT PUSH2 0x9FA JUMPI PUSH1 0x0 PUSH2 0xA1E JUMP JUMPDEST PUSH2 0xA14 DUP11 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x2B81 JUMP JUMPDEST PUSH2 0xA1E SWAP1 DUP5 PUSH2 0x2B81 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xA3C DUP11 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x2B81 JUMP JUMPDEST DUP4 GT PUSH2 0xA49 JUMPI PUSH1 0x0 PUSH2 0xA6D JUMP JUMPDEST PUSH2 0xA63 DUP11 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x2B81 JUMP JUMPDEST PUSH2 0xA6D SWAP1 DUP5 PUSH2 0x2B81 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 GT DUP1 PUSH2 0xA7E JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0xB09 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E53554646494349454E545F494E5055545F414D PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x4F554E5400000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB2B PUSH2 0xB19 DUP5 PUSH1 0x3 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0xB25 DUP8 PUSH2 0x3E8 PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 PUSH2 0x1F92 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB3D PUSH2 0xB19 DUP5 PUSH1 0x3 PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 POP PUSH2 0xB69 PUSH3 0xF4240 PUSH2 0xB63 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND SWAP1 DUP12 AND PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0xB73 DUP4 DUP4 PUSH2 0x1ED6 JUMP JUMPDEST LT ISZERO PUSH2 0xBDB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204B0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST POP POP PUSH2 0xBE9 DUP5 DUP5 DUP9 DUP9 PUSH2 0x1FD4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP12 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND SWAP1 CALLER SWAP1 PUSH32 0xD78AD95FA46C994B6551D0DA85FC275FE613CE37657FB8D5E3D130840159D822 SWAP1 PUSH1 0x80 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC6A CALLER DUP5 DUP5 PUSH2 0x22B0 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xD38 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xD06 SWAP1 DUP4 PUSH2 0x1F92 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0xD43 DUP5 DUP5 DUP5 PUSH2 0x231F JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xDCE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20464F5242494444454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x7 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0xE8F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE PUSH1 0x8 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP6 PUSH15 0x10000000000000000000000000000 SWAP1 SWAP6 DIV AND SWAP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF35 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF59 SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFCD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFF1 SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x100F DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x1F92 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x102D DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x1F92 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x103B DUP8 DUP8 PUSH2 0x23EC JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1072 JUMPI PUSH2 0x105E PUSH2 0x3E8 PUSH2 0xB25 PUSH2 0x1059 DUP8 DUP8 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x2557 JUMP JUMPDEST SWAP9 POP PUSH2 0x106D PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x25C7 JUMP JUMPDEST PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0x10C4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x1090 DUP7 DUP5 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x109A SWAP2 SWAP1 PUSH2 0x2BC7 JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x10B5 DUP7 DUP6 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x10BF SWAP2 SWAP1 PUSH2 0x2BC7 JUMP JUMPDEST PUSH2 0x2670 JUMP JUMPDEST SWAP9 POP JUMPDEST PUSH1 0x0 DUP10 GT PUSH2 0x1157 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E53554646494349454E545F4C49515549444954 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x595F4D494E544544000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST PUSH2 0x1161 DUP11 DUP11 PUSH2 0x25C7 JUMP JUMPDEST PUSH2 0x116D DUP7 DUP7 DUP11 DUP11 PUSH2 0x1FD4 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x11A9 JUMPI PUSH1 0x8 SLOAD PUSH2 0x11A5 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x1ED6 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE CALLER SWAP2 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP SWAP5 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x1266 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE PUSH1 0x8 SLOAD PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND SWAP7 PUSH15 0x10000000000000000000000000000 SWAP1 SWAP7 DIV AND SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP5 SWAP1 SWAP4 AND SWAP3 SWAP2 DUP5 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1318 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x133C SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13AC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13D0 SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x13ED DUP9 DUP9 PUSH2 0x23EC JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x13FE DUP5 DUP8 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x1408 SWAP2 SWAP1 PUSH2 0x2BC7 JUMP JUMPDEST SWAP11 POP DUP1 PUSH2 0x1415 DUP5 DUP7 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x141F SWAP2 SWAP1 PUSH2 0x2BC7 JUMP JUMPDEST SWAP10 POP PUSH1 0x0 DUP12 GT DUP1 ISZERO PUSH2 0x1431 JUMPI POP PUSH1 0x0 DUP11 GT JUMPDEST PUSH2 0x14BD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E53554646494349454E545F4C49515549444954 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x595F4255524E4544000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST PUSH2 0x14C7 ADDRESS DUP5 PUSH2 0x2686 JUMP JUMPDEST PUSH2 0x14D2 DUP8 DUP14 DUP14 PUSH2 0x1D36 JUMP JUMPDEST PUSH2 0x14DD DUP7 DUP14 DUP13 PUSH2 0x1D36 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1547 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x156B SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP6 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x15FC SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST SWAP4 POP PUSH2 0x160A DUP6 DUP6 DUP12 DUP12 PUSH2 0x1FD4 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x1646 JUMPI PUSH1 0x8 SLOAD PUSH2 0x1642 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x1ED6 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP13 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP13 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND SWAP2 CALLER SWAP2 PUSH32 0xDCCD412F0B1252819CB1FD330B93224CA42612892BB3F4F789976E6D81936496 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP PUSH1 0x1 PUSH1 0xC DUP2 SWAP1 SSTORE POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC6A CALLER DUP5 DUP5 PUSH2 0x231F JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x1728 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH2 0x17F0 SWAP2 DUP5 SWAP2 DUP7 SWAP2 PUSH2 0x17EB SWAP2 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP5 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB25 SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH2 0x1D36 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x1875 SWAP2 DUP4 SWAP2 DUP7 SWAP2 PUSH2 0x17EB SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 SWAP2 DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH2 0x17AA JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x18E9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20455850495245440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SWAP3 SWAP2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP12 SWAP2 SWAP1 DUP8 PUSH2 0x1949 DUP4 PUSH2 0x2BDB JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x19EA SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A73 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1AEE JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1B54 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F5349474E415455524500000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH2 0x1B5F DUP10 DUP10 DUP10 PUSH2 0x22B0 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x1BD6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204C4F434B4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x1D2F SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C4B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C6F SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CDD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D01 SWAP2 SWAP1 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x1FD4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xC SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x7472616E7366657228616464726573732C75696E743235362900000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP7 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP5 MSTORE SWAP2 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP8 AND SWAP2 PUSH2 0x1DFD SWAP2 SWAP1 PUSH2 0x2C14 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E3A 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 0x1E3F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x1E69 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x1E69 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1E69 SWAP2 SWAP1 PUSH2 0x2C30 JUMP JUMPDEST PUSH2 0x1ECF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A205452414E534645525F4641494C4544000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1EE5 JUMPI POP PUSH1 0x0 PUSH2 0xC6E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EF1 DUP4 DUP6 PUSH2 0x2C52 JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x1EFE DUP6 DUP4 PUSH2 0x2BC7 JUMP JUMPDEST EQ PUSH2 0x1F8B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7700000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x569 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F8B DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x2737 JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT DUP1 ISZERO SWAP1 PUSH2 0x2000 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO JUMPDEST PUSH2 0x2066 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204F564552464C4F5700000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2077 PUSH5 0x100000000 TIMESTAMP PUSH2 0x2C8F JUMP JUMPDEST PUSH1 0x8 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x20B0 SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP4 PUSH2 0x2CA3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x20D7 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x20F2 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x21C0 JUMPI DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x212F DUP6 PUSH2 0x210B DUP7 PUSH2 0x278B JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0x27B6 JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2157 SWAP2 SWAP1 PUSH2 0x2C52 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2168 SWAP2 SWAP1 PUSH2 0x2CC8 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x2181 DUP5 PUSH2 0x210B DUP8 PUSH2 0x278B JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x21A9 SWAP2 SWAP1 PUSH2 0x2C52 JUMP JUMPDEST PUSH1 0xA PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x21BA SWAP2 SWAP1 PUSH2 0x2CC8 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH4 0xFFFFFFFF DUP5 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 DUP2 AND PUSH15 0x10000000000000000000000000000 SWAP1 DUP2 MUL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND DUP13 DUP4 AND OR SWAP5 SWAP1 SWAP5 OR SWAP2 DUP3 AND DUP4 OR SWAP5 DUP6 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP4 DUP3 AND SWAP3 DUP3 AND SWAP3 SWAP1 SWAP3 OR DUP4 MSTORE SWAP3 SWAP1 SWAP4 DIV SWAP1 SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x1C411E9A96E071241C2F21F7726B17AE89E3CAB4C78BE50E062B03A9FFFBBAD1 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x234F SWAP1 DUP3 PUSH2 0x1F92 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x238B SWAP1 DUP3 PUSH2 0x27D2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x2312 SWAP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17E7E58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x245C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2480 SWAP2 SWAP1 PUSH2 0x2CE0 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO DUP1 ISZERO SWAP5 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0x2543 JUMPI DUP1 ISZERO PUSH2 0x253E JUMPI PUSH1 0x0 PUSH2 0x24CF PUSH2 0x1059 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP1 DUP9 AND PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x24DC DUP4 PUSH2 0x2557 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x253B JUMPI PUSH1 0x0 PUSH2 0x24FE PUSH2 0x24F5 DUP5 DUP5 PUSH2 0x1F92 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2517 DUP4 PUSH2 0x2511 DUP7 PUSH1 0x5 PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 PUSH2 0x27D2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2525 DUP3 DUP5 PUSH2 0x2BC7 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2537 JUMPI PUSH2 0x2537 DUP8 DUP3 PUSH2 0x25C7 JUMP JUMPDEST POP POP POP JUMPDEST POP POP JUMPDEST PUSH2 0x254F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x254F JUMPI PUSH1 0x0 PUSH1 0xB SSTORE JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0x25B8 JUMPI POP DUP1 PUSH1 0x0 PUSH2 0x2571 PUSH1 0x2 DUP4 PUSH2 0x2BC7 JUMP JUMPDEST PUSH2 0x257C SWAP1 PUSH1 0x1 PUSH2 0x2CC8 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x25B2 JUMPI SWAP1 POP DUP1 PUSH1 0x2 DUP2 PUSH2 0x2597 DUP2 DUP7 PUSH2 0x2BC7 JUMP JUMPDEST PUSH2 0x25A1 SWAP2 SWAP1 PUSH2 0x2CC8 JUMP JUMPDEST PUSH2 0x25AB SWAP2 SWAP1 PUSH2 0x2BC7 JUMP JUMPDEST SWAP1 POP PUSH2 0x257F JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 ISZERO PUSH2 0x25C2 JUMPI POP PUSH1 0x1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x25D4 SWAP1 DUP3 PUSH2 0x27D2 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2606 SWAP1 DUP3 PUSH2 0x27D2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x2664 SWAP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x267F JUMPI DUP2 PUSH2 0x1F8B JUMP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x26B6 SWAP1 DUP3 PUSH2 0x1F92 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x26EA SWAP1 DUP3 PUSH2 0x1F92 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0x2664 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x2775 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x569 SWAP2 SWAP1 PUSH2 0x2936 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x2782 DUP5 DUP7 PUSH2 0x2B81 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC6E PUSH15 0x10000000000000000000000000000 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x2CFD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F8B PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP5 PUSH2 0x2D41 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x27DF DUP4 DUP6 PUSH2 0x2CC8 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x1F8B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x569 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x286D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2888 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x28A1 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x28BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x28E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x28F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP PUSH1 0x20 ADD SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2921 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2909 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2930 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2955 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2906 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x299A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x29A5 DUP2 PUSH2 0x284B 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 0x29C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x29D3 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x29E3 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2A12 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2A22 DUP2 PUSH2 0x284B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1F8B DUP2 PUSH2 0x284B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2A65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x2A70 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x2A80 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2AA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP2 MSTORE DUP5 PUSH1 0x20 DUP3 ADD MSTORE DUP4 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x80 DUP3 ADD MSTORE DUP2 DUP4 PUSH1 0xA0 DUP4 ADD CALLDATACOPY PUSH1 0x0 DUP2 DUP4 ADD PUSH1 0xA0 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x2B93 JUMPI PUSH2 0x2B93 PUSH2 0x2B52 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2BD6 JUMPI PUSH2 0x2BD6 PUSH2 0x2B98 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x2C0D JUMPI PUSH2 0x2C0D PUSH2 0x2B52 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2C26 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2906 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1F8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x2C8A JUMPI PUSH2 0x2C8A PUSH2 0x2B52 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2C9E JUMPI PUSH2 0x2C9E PUSH2 0x2B98 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x2CC0 JUMPI PUSH2 0x2CC0 PUSH2 0x2B52 JUMP JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x2CDB JUMPI PUSH2 0x2CDB PUSH2 0x2B52 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2CF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1F8B DUP2 PUSH2 0x284B JUMP JUMPDEST PUSH1 0x0 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP2 DUP4 DIV DUP2 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x2D38 JUMPI PUSH2 0x2D38 PUSH2 0x2B52 JUMP JUMPDEST MUL SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND DUP1 PUSH2 0x2D70 JUMPI PUSH2 0x2D70 PUSH2 0x2B98 JUMP JUMPDEST SWAP3 AND SWAP2 SWAP1 SWAP2 DIV SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH20 0x8F09B9235788D5F6C3FF0250C6B0722C6D84358A ADDMOD BLOCKHASH OR 0xDF INVALID PUSH17 0x343B7C638B64736F6C634300080A003300 ", + "sourceMap": "312:12544:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8157:1870;;;;;;:::i;:::-;;:::i;:::-;;422:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;2019:236;2160:8;;2019:236;;;2160:8;;;;2000:34:39;;2190:8:36;;;;2065:2:39;2050:18;;2043:43;2230:18:36;;;;;;2102::39;;;2095:51;1939:2;1924:18;2019:236:36;1751:401:39;11554:153:36;;;;;;:::i;:::-;;:::i;:::-;;;2642:14:39;;2635:22;2617:41;;2605:2;2590:18;11554:153:36;2477:187:39;1282:30:36;;;;;;;;;;;;2845:42:39;2833:55;;;2815:74;;2803:2;2788:18;1282:30:36;2669:226:39;584:33:36;;;;;;;;;3046:25:39;;;3034:2;3019:18;584:33:36;2900:177:39;11864:310:36;;;;;;:::i;:::-;;:::i;1061:117::-;;1112:66;1061:117;;534:44;;576:2;534:44;;;;;3897:4:39;3885:17;;;3867:36;;3855:2;3840:18;534:44:36;3725:184:39;911:40:36;;;;;;3086:215;;;;;;:::i;:::-;;:::i;1644:41::-;;;;;;1691;;;;;;5257:1229;;;;;;:::i;:::-;;:::i;623:50::-;;;;;;:::i;:::-;;;;;;;;;;;;;;1738:26;;;;;;1184:47;;;;;;:::i;:::-;;;;;;;;;;;;;;6595:1453;;;;;;:::i;:::-;;:::i;:::-;;;;4733:25:39;;;4789:2;4774:18;;4767:34;;;;4706:18;6595:1453:36;4559:248:39;479:49:36;;;;;;;;;;;;;;;;;;;;;11713:145;;;;;;:::i;:::-;;:::i;756:55::-;;806:5;756:55;;10073:338;;;;;;:::i;:::-;;:::i;1245:31::-;;;;;;;;;1318:30;;;;;;;;;12180:671;;;;;;:::i;:::-;;:::i;679:70::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;10457:165;;;:::i;8157:1870::-;1916:8;;1928:1;1916:13;1908:43;;;;;;;5848:2:39;1908:43:36;;;5830:21:39;5887:2;5867:18;;;5860:30;5926:19;5906:18;;;5899:47;5963:18;;1908:43:36;;;;;;;;;1972:1;1961:8;:12;8279:14;;;;:32:::1;;;8310:1;8297:10;:14;8279:32;8271:82;;;::::0;::::1;::::0;;6194:2:39;8271:82:36::1;::::0;::::1;6176:21:39::0;6233:2;6213:18;;;6206:30;6272:34;6252:18;;;6245:62;6343:7;6323:18;;;6316:35;6368:19;;8271:82:36::1;5992:401:39::0;8271:82:36::1;8364:17;8383::::0;8405:13:::1;2160:8:::0;;;;;;;2190;;;;;;;2230:18;;;;;;;2019:236;8405:13:::1;8363:55;;;;;8464:9;8451:22;;:10;:22;:48;;;;;8490:9;8477:22;;:10;:22;8451:48;8443:94;;;::::0;::::1;::::0;;6600:2:39;8443:94:36::1;::::0;::::1;6582:21:39::0;6639:2;6619:18;;;6612:30;6678:34;6658:18;;;6651:62;6749:3;6729:18;;;6722:31;6770:19;;8443:94:36::1;6398:397:39::0;8443:94:36::1;8677:6;::::0;8711::::1;::::0;8548:13:::1;::::0;;;8677:6:::1;::::0;;::::1;::::0;8711;;::::1;::::0;8735:13;::::1;::::0;::::1;::::0;::::1;::::0;:30:::1;;;8758:7;8752:13;;:2;:13;;;;8735:30;8727:64;;;::::0;::::1;::::0;;7002:2:39;8727:64:36::1;::::0;::::1;6984:21:39::0;7041:2;7021:18;;;7014:30;7080:23;7060:18;;;7053:51;7121:18;;8727:64:36::1;6800:345:39::0;8727:64:36::1;8805:14:::0;;8801:58:::1;;8821:38;8835:7;8844:2;8848:10;8821:13;:38::i;:::-;8907:14:::0;;8903:58:::1;;8923:38;8937:7;8946:2;8950:10;8923:13;:38::i;:::-;9009:15:::0;;9005:97:::1;;9026:76;::::0;;;;:34:::1;::::0;::::1;::::0;::::1;::::0;:76:::1;::::0;9061:10:::1;::::0;9073;;9085;;9097:4;;;;9026:76:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9005:97;9123:40;::::0;;;;9157:4:::1;9123:40;::::0;::::1;2815:74:39::0;9123:25:36::1;::::0;::::1;::::0;::::1;::::0;2788:18:39;;9123:40:36::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9184;::::0;;;;9218:4:::1;9184:40;::::0;::::1;2815:74:39::0;9112:51:36;;-1:-1:-1;9184:25:36::1;::::0;::::1;::::0;::::1;::::0;2788:18:39;;9184:40:36::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9173:51;;8594:641;;9244:14;9284:10;9272:9;:22;;;;;;:::i;:::-;9261:8;:33;:75;;9335:1;9261:75;;;9309:22;9321:10:::0;9309:22:::1;::::0;::::1;;:::i;:::-;9297:35;::::0;:8;:35:::1;:::i;:::-;9244:92:::0;-1:-1:-1;9346:14:36::1;9374:22;9386:10:::0;9374:22:::1;::::0;::::1;;:::i;:::-;9363:8;:33;:75;;9437:1;9363:75;;;9411:22;9423:10:::0;9411:22:::1;::::0;::::1;;:::i;:::-;9399:35;::::0;:8;:35:::1;:::i;:::-;9346:92;;9468:1;9456:9;:13;:30;;;;9485:1;9473:9;:13;9456:30;9448:79;;;::::0;::::1;::::0;;8579:2:39;9448:79:36::1;::::0;::::1;8561:21:39::0;8618:2;8598:18;;;8591:30;8657:34;8637:18;;;8630:62;8728:6;8708:18;;;8701:34;8752:19;;9448:79:36::1;8377:400:39::0;9448:79:36::1;9611:21;9635:40;9658:16;:9:::0;9672:1:::1;9658:13;:16::i;:::-;9635:18;:8:::0;9648:4:::1;9635:12;:18::i;:::-;:22:::0;::::1;:40::i;:::-;9611:64:::0;-1:-1:-1;9685:21:36::1;9709:40;9732:16;:9:::0;9746:1:::1;9732:13;:16::i;9709:40::-;9685:64:::0;-1:-1:-1;9809:43:36::1;9844:7;9809:30;;:15:::0;;::::1;::::0;:30;::::1;:19;:30::i;:::-;:34:::0;::::1;:43::i;:::-;9767:38;:16:::0;9788;9767:20:::1;:38::i;:::-;:85;;9759:110;;;::::0;::::1;::::0;;8984:2:39;9759:110:36::1;::::0;::::1;8966:21:39::0;9023:2;9003:18;;;8996:30;9062:14;9042:18;;;9035:42;9094:18;;9759:110:36::1;8782:336:39::0;9759:110:36::1;9537:343;;9890:49;9898:8;9908;9918:9;9929;9890:7;:49::i;:::-;9954:66;::::0;;9354:25:39;;;9410:2;9395:18;;9388:34;;;9438:18;;;9431:34;;;9496:2;9481:18;;9474:34;;;9954:66:36::1;::::0;::::1;::::0;9959:10:::1;::::0;9954:66:::1;::::0;9341:3:39;9326:19;9954:66:36::1;;;;;;;-1:-1:-1::0;;2005:1:36;1994:8;:12;-1:-1:-1;;;;;;;;;8157:1870:36:o;11554:153::-;11627:4;11643:36;11652:10;11664:7;11673:5;11643:8;:36::i;:::-;-1:-1:-1;11696:4:36;11554:153;;;;;:::o;11864:310::-;11971:15;;;11951:4;11971:15;;;:9;:15;;;;;;;;11987:10;11971:27;;;;;;;;12002:14;11971:45;11967:144;;12062:15;;;;;;;:9;:15;;;;;;;;12078:10;12062:27;;;;;;;;:38;;12094:5;12062:31;:38::i;:::-;12032:15;;;;;;;:9;:15;;;;;;;;12048:10;12032:27;;;;;;;:68;11967:144;12120:26;12130:4;12136:2;12140:5;12120:9;:26::i;:::-;-1:-1:-1;12163:4:36;11864:310;;;;;:::o;3086:215::-;3190:7;;;;3176:10;:21;3168:54;;;;;;;9721:2:39;3168:54:36;;;9703:21:39;9760:2;9740:18;;;9733:30;9799:22;9779:18;;;9772:50;9839:18;;3168:54:36;9519:344:39;3168:54:36;3252:6;:16;;;;;;;;;;;;;;3278:6;:16;;;;;;;;;;;3086:215::o;5257:1229::-;5315:14;1916:8;;1928:1;1916:13;1908:43;;;;;;;5848:2:39;1908:43:36;;;5830:21:39;5887:2;5867:18;;;5860:30;5926:19;5906:18;;;5899:47;5963:18;;1908:43:36;5646:341:39;1908:43:36;1972:1;1961:8;:12;;;2160:8;;5444:6:::1;::::0;5437:39:::1;::::0;;;;;5470:4:::1;5437:39;::::0;::::1;2815:74:39::0;5437:39:36;;2160:8;;;;;2190;;;;;;1972:1;5444:6:::1;;::::0;5437:24:::1;::::0;2788:18:39;;;;;5437:39:36::1;::::0;;;;;;;;5444:6;5437:39:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5509:6;::::0;5502:39:::1;::::0;;;;5535:4:::1;5502:39;::::0;::::1;2815:74:39::0;5421:55:36;;-1:-1:-1;5486:13:36::1;::::0;5509:6:::1;::::0;;::::1;::::0;5502:24:::1;::::0;2788:18:39;;5502:39:36::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5486:55:::0;-1:-1:-1;5551:12:36::1;5566:23;:8:::0;:23:::1;::::0;::::1;:12;:23::i;:::-;5551:38:::0;-1:-1:-1;5599:12:36::1;5614:23;:8:::0;:23:::1;::::0;::::1;:12;:23::i;:::-;5599:38;;5647:10;5660:30;5669:9;5680;5660:8;:30::i;:::-;5700:17;5720:11:::0;5647:43;;-1:-1:-1;5824:17:36;5820:347:::1;;5869:54;806:5;5869:31;5879:20;:7:::0;5891;5879:11:::1;:20::i;:::-;5869:9;:31::i;:54::-;5857:66;;5936:36;5950:1;806:5;5936;:36::i;:::-;5820:347;;;6070:86;6079:37;::::0;::::1;:25;:7:::0;6091:12;6079:11:::1;:25::i;:::-;:37;;;;:::i;:::-;6118;::::0;::::1;:25;:7:::0;6130:12;6118:11:::1;:25::i;:::-;:37;;;;:::i;:::-;6070:8;:86::i;:::-;6058:98;;5820:347;6197:1;6185:9;:13;6177:66;;;::::0;::::1;::::0;;10384:2:39;6177:66:36::1;::::0;::::1;10366:21:39::0;10423:2;10403:18;;;10396:30;10462:34;10442:18;;;10435:62;10533:10;10513:18;;;10506:38;10561:19;;6177:66:36::1;10182:404:39::0;6177:66:36::1;6253:20;6259:2;6263:9;6253:5;:20::i;:::-;6284:49;6292:8;6302;6312:9;6323;6284:7;:49::i;:::-;6347:5;6343:47;;;6381:8;::::0;6362:28:::1;::::0;6381:8:::1;6367::::0;;::::1;::::0;6381;;::::1;;6362:18;:28::i;:::-;6354:5;:36:::0;6343:47:::1;6445:34;::::0;;4733:25:39;;;4789:2;4774:18;;4767:34;;;6450:10:36::1;::::0;6445:34:::1;::::0;4706:18:39;6445:34:36::1;;;;;;;-1:-1:-1::0;;2005:1:36;1994:8;:12;-1:-1:-1;5257:1229:36;;;-1:-1:-1;;;;;;5257:1229:36:o;6595:1453::-;6653:12;6667;1916:8;;1928:1;1916:13;1908:43;;;;;;;5848:2:39;1908:43:36;;;5830:21:39;5887:2;5867:18;;;5860:30;5926:19;5906:18;;;5899:47;5963:18;;1908:43:36;5646:341:39;1908:43:36;1972:1;1961:8;:12;;;2160:8;;6789:6:::1;::::0;6869::::1;::::0;6947:40:::1;::::0;;;;;6981:4:::1;6947:40;::::0;::::1;2815:74:39::0;6947:40:36;;2160:8;;;;;2190;;;;;;6789:6:::1;::::0;;::::1;::::0;6869;;::::1;::::0;1972:1;6789:6;;6947:25:::1;::::0;2788:18:39;;;;;6947:40:36::1;::::0;;;;;;;;;6789:6;6947:40:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7013;::::0;;;;7047:4:::1;7013:40;::::0;::::1;2815:74:39::0;6931:56:36;;-1:-1:-1;6997:13:36::1;::::0;7013:25:::1;::::0;::::1;::::0;::::1;::::0;2788:18:39;;7013:40:36::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7098:4;7063:14;7080:24:::0;;;:9:::1;:24;::::0;;;;;6997:56;;-1:-1:-1;7128:30:36::1;7137:9:::0;7148;7128:8:::1;:30::i;:::-;7168:17;7188:11:::0;7115:43;;-1:-1:-1;7188:11:36;7297:23:::1;:9:::0;7311:8;7297:13:::1;:23::i;:::-;:38;;;;:::i;:::-;7287:48:::0;-1:-1:-1;7429:12:36;7403:23:::1;:9:::0;7417:8;7403:13:::1;:23::i;:::-;:38;;;;:::i;:::-;7393:48;;7517:1;7507:7;:11;:26;;;;;7532:1;7522:7;:11;7507:26;7499:79;;;::::0;::::1;::::0;;10793:2:39;7499:79:36::1;::::0;::::1;10775:21:39::0;10832:2;10812:18;;;10805:30;10871:34;10851:18;;;10844:62;10942:10;10922:18;;;10915:38;10970:19;;7499:79:36::1;10591:404:39::0;7499:79:36::1;7588:31;7602:4;7609:9;7588:5;:31::i;:::-;7629:35;7643:7;7652:2;7656:7;7629:13;:35::i;:::-;7674;7688:7;7697:2;7701:7;7674:13;:35::i;:::-;7730:40;::::0;;;;7764:4:::1;7730:40;::::0;::::1;2815:74:39::0;7730:25:36::1;::::0;::::1;::::0;::::1;::::0;2788:18:39;;7730:40:36::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7791;::::0;;;;7825:4:::1;7791:40;::::0;::::1;2815:74:39::0;7719:51:36;;-1:-1:-1;7791:25:36::1;::::0;::::1;::::0;::::1;::::0;2788:18:39;;7791:40:36::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7780:51;;7842:49;7850:8;7860;7870:9;7881;7842:7;:49::i;:::-;7905:5;7901:47;;;7939:8;::::0;7920:28:::1;::::0;7939:8:::1;7925::::0;;::::1;::::0;7939;;::::1;;7920:18;:28::i;:::-;7912:5;:36:::0;7901:47:::1;8003:38;::::0;;4733:25:39;;;4789:2;4774:18;;4767:34;;;8003:38:36::1;::::0;::::1;::::0;8008:10:::1;::::0;8003:38:::1;::::0;4706:18:39;8003:38:36::1;;;;;;;6681:1367;;;;;;;;;2005:1:::0;1994:8;:12;;;;6595:1453;;;:::o;11713:145::-;11782:4;11798:32;11808:10;11820:2;11824:5;11798:9;:32::i;10073:338::-;1916:8;;1928:1;1916:13;1908:43;;;;;;;5848:2:39;1908:43:36;;;5830:21:39;5887:2;5867:18;;;5860:30;5926:19;5906:18;;;5899:47;5963:18;;1908:43:36;5646:341:39;1908:43:36;1972:1;1961:8;:12;10150:6:::1;::::0;10199::::1;::::0;10302:8:::1;::::0;10257:40:::1;::::0;;;;10291:4:::1;10257:40;::::0;::::1;2815:74:39::0;10150:6:36::1;::::0;;::::1;::::0;10199;;::::1;::::0;10230:82:::1;::::0;10150:6;;10253:2;;10257:54:::1;::::0;10302:8:::1;::::0;;::::1;::::0;10150:6;;10257:25:::1;::::0;2788:18:39;;10257:40:36::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:54::-;10230:13;:82::i;:::-;10394:8;::::0;10349:40:::1;::::0;;;;10383:4:::1;10349:40;::::0;::::1;2815:74:39::0;10322:82:36::1;::::0;10336:7;;10345:2;;10349:54:::1;::::0;10394:8;;;::::1;;;::::0;10349:25:::1;::::0;::::1;::::0;::::1;::::0;2788:18:39;;10349:40:36::1;2669:226:39::0;10322:82:36::1;-1:-1:-1::0;;2005:1:36;1994:8;:12;-1:-1:-1;10073:338:36:o;12180:671::-;12334:15;12322:8;:27;;12314:58;;;;;;;11202:2:39;12314:58:36;;;11184:21:39;11241:2;11221:18;;;11214:30;11280:20;11260:18;;;11253:48;11318:18;;12314:58:36;11000:342:39;12314:58:36;12484:16;;12579:13;;;12382:14;12579:13;;;:6;:13;;;;;:15;;12382:14;;12484:16;1112:66;;12556:5;;12563:7;;12572:5;;12579:15;12382:14;12579:15;;;:::i;:::-;;;;-1:-1:-1;12528:77:36;;;;;;11834:25:39;;;;11878:42;11956:15;;;11936:18;;;11929:43;12008:15;;;;11988:18;;;11981:43;12040:18;;;12033:34;12083:19;;;12076:35;12127:19;;;12120:35;;;11806:19;;12528:77:36;;;;;;;;;;;;12518:88;;;;;;12422:198;;;;;;;;12436:66:39;12424:79;;12528:1;12519:11;;12512:27;;;;12564:2;12555:12;;12548:28;12601:2;12592:12;;12166:444;12422:198:36;;;;;;;;;;;;;;12399:231;;12422:198;12399:231;;;;12640:24;12667:26;;;;;;;;;12842:25:39;;;12915:4;12903:17;;12883:18;;;12876:45;;;;12937:18;;;12930:34;;;12980:18;;;12973:34;;;12399:231:36;;-1:-1:-1;12640:24:36;12667:26;;12814:19:39;;12667:26:36;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12667:26:36;;;;;;-1:-1:-1;;12711:30:36;;;;;;;:59;;;12765:5;12745:25;;:16;:25;;;12711:59;12703:100;;;;;;;13220:2:39;12703:100:36;;;13202:21:39;13259:2;13239:18;;;13232:30;13298;13278:18;;;13271:58;13346:18;;12703:100:36;13018:352:39;12703:100:36;12813:31;12822:5;12829:7;12838:5;12813:8;:31::i;:::-;12304:547;;12180:671;;;;;;;:::o;10457:165::-;1916:8;;1928:1;1916:13;1908:43;;;;;;;5848:2:39;1908:43:36;;;5830:21:39;5887:2;5867:18;;;5860:30;5926:19;5906:18;;;5899:47;5963:18;;1908:43:36;5646:341:39;1908:43:36;1972:1;1961:8;:12;10521:6:::1;::::0;10514:39:::1;::::0;;;;10547:4:::1;10514:39;::::0;::::1;2815:74:39::0;10506:109:36::1;::::0;10521:6:::1;;::::0;10514:24:::1;::::0;2788:18:39;;10514:39:36::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10562:6;::::0;10555:39:::1;::::0;;;;10588:4:::1;10555:39;::::0;::::1;2815:74:39::0;10562:6:36::1;::::0;;::::1;::::0;10555:24:::1;::::0;2788:18:39;;10555:39:36::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10596:8;::::0;::::1;::::0;;::::1;::::0;10606;;::::1;;10506:7;:109::i;:::-;2005:1:::0;1994:8;:12;10457:165::o;2261:284::-;869:34;;;;;;;;;;;;;;;;;2388:43;;2377:10;13567:55:39;;;2388:43:36;;;13549:74:39;13639:18;;;;13632:34;;;2388:43:36;;;;;;;;;;13522:18:39;;;;2388:43:36;;;;;;;;;;;;;2377:55;;-1:-1:-1;;;;2377:10:36;;;:55;;2388:43;2377:55;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2341:91;;;;2450:7;:57;;;;-1:-1:-1;2462:11:36;;:16;;:44;;;2493:4;2482:24;;;;;;;;;;;;:::i;:::-;2442:96;;;;;;;14440:2:39;2442:96:36;;;14422:21:39;14479:2;14459:18;;;14452:30;14518:28;14498:18;;;14491:56;14564:18;;2442:96:36;14238:350:39;2442:96:36;2331:214;;2261:284;;;:::o;2193:459:23:-;2251:7;2492:6;2488:45;;-1:-1:-1;2521:1:23;2514:8;;2488:45;2543:9;2555:5;2559:1;2555;:5;:::i;:::-;2543:17;-1:-1:-1;2587:1:23;2578:5;2582:1;2543:17;2578:5;:::i;:::-;:10;2570:56;;;;;;;15028:2:39;2570:56:23;;;15010:21:39;15067:2;15047:18;;;15040:30;15106:34;15086:18;;;15079:62;15177:3;15157:18;;;15150:31;15198:19;;2570:56:23;14826:397:39;2570:56:23;2644:1;2193:459;-1:-1:-1;;;2193:459:23:o;1308:134::-;1366:7;1392:43;1396:1;1399;1392:43;;;;;;;;;;;;;;;;;:3;:43::i;3383:859:36:-;3506:17;3494:29;;;;;:62;;-1:-1:-1;3539:17:36;3527:29;;;3494:62;3486:94;;;;;;;15430:2:39;3486:94:36;;;15412:21:39;15469:2;15449:18;;;15442:30;15508:21;15488:18;;;15481:49;15547:18;;3486:94:36;15228:343:39;3486:94:36;3590:21;3621:23;3639:5;3621:15;:23;:::i;:::-;3693:18;;3590:55;;-1:-1:-1;3655:18:36;;3676:35;;3693:18;;;;;3590:55;3676:35;:::i;:::-;3655:56;;3762:1;3748:11;:15;;;:33;;;;-1:-1:-1;3767:14:36;;;;;3748:33;:51;;;;-1:-1:-1;3785:14:36;;;;;3748:51;3744:332;;;3952:11;3899:64;;3904:44;3938:9;3904:27;3921:9;3904:16;:27::i;:::-;:33;;;;:44::i;:::-;3899:50;;:64;;;;:::i;:::-;3875:20;;:88;;;;;;;:::i;:::-;;;;-1:-1:-1;;4001:64:36;;;4006:44;4040:9;4006:27;4023:9;4006:16;:27::i;:44::-;4001:50;;:64;;;;:::i;:::-;3977:20;;:88;;;;;;;:::i;:::-;;;;-1:-1:-1;;3744:332:36;4085:8;:28;;4161:35;;;;;;4085:28;4123;;;;;;;;;;;4085;;;4123;;;;;4161:35;;;;;;;;;4211:24;;;4216:8;;;;;;;;;;16275:34:39;;4226:8:36;;;;;;;16340:2:39;16325:18;;16318:43;4211:24:36;;16199:18:39;4211:24:36;;;;;;;3476:766;;3383:859;;;;:::o;11160:166::-;11240:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;11288:31;;3046:25:39;;;11288:31:36;;3019:18:39;11288:31:36;;;;;;;;11160:166;;;:::o;11332:216::-;11425:15;;;;;;;:9;:15;;;;;;:26;;11445:5;11425:19;:26::i;:::-;11407:15;;;;;;;;:9;:15;;;;;;:44;;;;11477:13;;;;;;;:24;;11495:5;11477:17;:24::i;:::-;11461:13;;;;;;;;:9;:13;;;;;;;:40;;;;11516:25;;;;;;;;;;11535:5;3046:25:39;;3034:2;3019:18;;2900:177;4329:819:36;4402:10;4424:13;4458:7;;;;;;;;;;;4440:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4535:5;;4492:19;;;;;;;-1:-1:-1;4424:50:36;;-1:-1:-1;4535:5:36;4565:577;;4594:11;;4590:485;;4625:10;4638:41;4648:30;;:15;;;;:30;;:19;:30::i;4638:41::-;4625:54;;4697:14;4714:17;4724:6;4714:9;:17::i;:::-;4697:34;;4761:9;4753:5;:17;4749:312;;;4794:14;4811:37;4827:20;:5;4837:9;4827;:20::i;:::-;4811:11;;;:15;:37::i;:::-;4794:54;-1:-1:-1;4870:16:36;4889:27;4906:9;4889:12;:5;4899:1;4889:9;:12::i;:::-;:16;;:27::i;:::-;4870:46;-1:-1:-1;4938:14:36;4955:23;4870:46;4955:9;:23;:::i;:::-;4938:40;-1:-1:-1;5004:13:36;;5000:42;;5019:23;5025:5;5032:9;5019:5;:23::i;:::-;4772:289;;;4749:312;4607:468;;4590:485;4565:577;;;5095:11;;5091:51;;5130:1;5122:5;:9;5091:51;4414:734;;4329:819;;;;:::o;914:292:21:-;959:6;985:1;981;:5;977:223;;;-1:-1:-1;1006:1:21;1021:6;1030:5;1034:1;1006;1030:5;:::i;:::-;:9;;1038:1;1030:9;:::i;:::-;1021:18;;1053:89;1064:1;1060;:5;1053:89;;;1089:1;-1:-1:-1;1089:1:21;1126;1089;1113:5;1089:1;1113;:5;:::i;:::-;:9;;;;:::i;:::-;1112:15;;;;:::i;:::-;1108:19;;1053:89;;;988:164;914:292;;;:::o;977:223::-;1162:6;;1158:42;;-1:-1:-1;1188:1:21;1158:42;914:292;;;:::o;10746:197:36:-;10818:11;;:22;;10834:5;10818:15;:22::i;:::-;10804:11;:36;;;10866:13;;;;;:9;:13;;;;;;:24;;10884:5;10866:17;:24::i;:::-;10850:13;;;;;;;:9;:13;;;;;;:40;;;;10905:31;;10850:13;;;10905:31;;;;10930:5;3046:25:39;;3034:2;3019:18;;2900:177;10905:31:36;;;;;;;;10746:197;;:::o;392:104:21:-;450:7;480:1;476;:5;:13;;488:1;476:13;;;-1:-1:-1;484:1:21;;392:104;-1:-1:-1;392:104:21:o;10949:205:36:-;11027:15;;;;;;;:9;:15;;;;;;:26;;11047:5;11027:19;:26::i;:::-;11009:15;;;;;;;:9;:15;;;;;:44;;;;11077:11;:22;;11093:5;11077:15;:22::i;:::-;11063:11;:36;;;11114:33;;3046:25:39;;;11114:33:36;;;;;;3034:2:39;3019:18;11114:33:36;2900:177:39;1766:187:23;1852:7;1887:12;1879:6;;;;1871:29;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1910:9:23;1922:5;1926:1;1922;:5;:::i;:::-;1910:17;1766:187;-1:-1:-1;;;;;1766:187:23:o;316:118:24:-;366:9;391:17;264:6;391:10;;;:17;:::i;502:106::-;562:9;587:14;591:10;;;587:1;:14;:::i;868:176:23:-;926:7;;957:5;961:1;957;:5;:::i;:::-;945:17;;985:1;980;:6;;972:46;;;;;;;17391:2:39;972:46:23;;;17373:21:39;17430:2;17410:18;;;17403:30;17469:29;17449:18;;;17442:57;17516:18;;972:46:23;17189:351:39;14:154;100:42;93:5;89:54;82:5;79:65;69:93;;158:1;155;148:12;69:93;14:154;:::o;173:863::-;270:6;278;286;294;302;355:3;343:9;334:7;330:23;326:33;323:53;;;372:1;369;362:12;323:53;408:9;395:23;385:33;;465:2;454:9;450:18;437:32;427:42;;519:2;508:9;504:18;491:32;532:31;557:5;532:31;:::i;:::-;582:5;-1:-1:-1;638:2:39;623:18;;610:32;661:18;691:14;;;688:34;;;718:1;715;708:12;688:34;756:6;745:9;741:22;731:32;;801:7;794:4;790:2;786:13;782:27;772:55;;823:1;820;813:12;772:55;863:2;850:16;889:2;881:6;878:14;875:34;;;905:1;902;895:12;875:34;950:7;945:2;936:6;932:2;928:15;924:24;921:37;918:57;;;971:1;968;961:12;918:57;173:863;;;;-1:-1:-1;173:863:39;;-1:-1:-1;1002:2:39;994:11;;1024:6;173:863;-1:-1:-1;;;173:863:39:o;1041:258::-;1113:1;1123:113;1137:6;1134:1;1131:13;1123:113;;;1213:11;;;1207:18;1194:11;;;1187:39;1159:2;1152:10;1123:113;;;1254:6;1251:1;1248:13;1245:48;;;1289:1;1280:6;1275:3;1271:16;1264:27;1245:48;;1041:258;;;:::o;1304:442::-;1453:2;1442:9;1435:21;1416:4;1485:6;1479:13;1528:6;1523:2;1512:9;1508:18;1501:34;1544:66;1603:6;1598:2;1587:9;1583:18;1578:2;1570:6;1566:15;1544:66;:::i;:::-;1662:2;1650:15;1667:66;1646:88;1631:104;;;;1737:2;1627:113;;1304:442;-1:-1:-1;;1304:442:39:o;2157:315::-;2225:6;2233;2286:2;2274:9;2265:7;2261:23;2257:32;2254:52;;;2302:1;2299;2292:12;2254:52;2341:9;2328:23;2360:31;2385:5;2360:31;:::i;:::-;2410:5;2462:2;2447:18;;;;2434:32;;-1:-1:-1;;;2157:315:39:o;3082:456::-;3159:6;3167;3175;3228:2;3216:9;3207:7;3203:23;3199:32;3196:52;;;3244:1;3241;3234:12;3196:52;3283:9;3270:23;3302:31;3327:5;3302:31;:::i;:::-;3352:5;-1:-1:-1;3409:2:39;3394:18;;3381:32;3422:33;3381:32;3422:33;:::i;:::-;3082:456;;3474:7;;-1:-1:-1;;;3528:2:39;3513:18;;;;3500:32;;3082:456::o;3914:388::-;3982:6;3990;4043:2;4031:9;4022:7;4018:23;4014:32;4011:52;;;4059:1;4056;4049:12;4011:52;4098:9;4085:23;4117:31;4142:5;4117:31;:::i;:::-;4167:5;-1:-1:-1;4224:2:39;4209:18;;4196:32;4237:33;4196:32;4237:33;:::i;:::-;4289:7;4279:17;;;3914:388;;;;;:::o;4307:247::-;4366:6;4419:2;4407:9;4398:7;4394:23;4390:32;4387:52;;;4435:1;4432;4425:12;4387:52;4474:9;4461:23;4493:31;4518:5;4493:31;:::i;4812:829::-;4923:6;4931;4939;4947;4955;4963;4971;5024:3;5012:9;5003:7;4999:23;4995:33;4992:53;;;5041:1;5038;5031:12;4992:53;5080:9;5067:23;5099:31;5124:5;5099:31;:::i;:::-;5149:5;-1:-1:-1;5206:2:39;5191:18;;5178:32;5219:33;5178:32;5219:33;:::i;:::-;5271:7;-1:-1:-1;5325:2:39;5310:18;;5297:32;;-1:-1:-1;5376:2:39;5361:18;;5348:32;;-1:-1:-1;5432:3:39;5417:19;;5404:33;5481:4;5468:18;;5456:31;;5446:59;;5501:1;5498;5491:12;5446:59;4812:829;;;;-1:-1:-1;4812:829:39;;;;5524:7;5578:3;5563:19;;5550:33;;-1:-1:-1;5630:3:39;5615:19;;;5602:33;;4812:829;-1:-1:-1;;4812:829:39:o;7150:714::-;7403:42;7395:6;7391:55;7380:9;7373:74;7483:6;7478:2;7467:9;7463:18;7456:34;7526:6;7521:2;7510:9;7506:18;7499:34;7569:3;7564:2;7553:9;7549:18;7542:31;7610:6;7604:3;7593:9;7589:19;7582:35;7668:6;7660;7654:3;7643:9;7639:19;7626:49;7725:1;7695:22;;;7719:3;7691:32;;;7684:43;;;;7779:2;7767:15;;;7784:66;7763:88;7748:104;7744:114;;7150:714;-1:-1:-1;;;;7150:714:39:o;7869:184::-;7939:6;7992:2;7980:9;7971:7;7967:23;7963:32;7960:52;;;8008:1;8005;7998:12;7960:52;-1:-1:-1;8031:16:39;;7869:184;-1:-1:-1;7869:184:39:o;8058:::-;8110:77;8107:1;8100:88;8207:4;8204:1;8197:15;8231:4;8228:1;8221:15;8247:125;8287:4;8315:1;8312;8309:8;8306:34;;;8320:18;;:::i;:::-;-1:-1:-1;8357:9:39;;8247:125::o;9868:184::-;9920:77;9917:1;9910:88;10017:4;10014:1;10007:15;10041:4;10038:1;10031:15;10057:120;10097:1;10123;10113:35;;10128:18;;:::i;:::-;-1:-1:-1;10162:9:39;;10057:120::o;11347:195::-;11386:3;11417:66;11410:5;11407:77;11404:103;;;11487:18;;:::i;:::-;-1:-1:-1;11534:1:39;11523:13;;11347:195::o;13677:274::-;13806:3;13844:6;13838:13;13860:53;13906:6;13901:3;13894:4;13886:6;13882:17;13860:53;:::i;:::-;13929:16;;;;;13677:274;-1:-1:-1;;13677:274:39:o;13956:277::-;14023:6;14076:2;14064:9;14055:7;14051:23;14047:32;14044:52;;;14092:1;14089;14082:12;14044:52;14124:9;14118:16;14177:5;14170:13;14163:21;14156:5;14153:32;14143:60;;14199:1;14196;14189:12;14593:228;14633:7;14759:1;14691:66;14687:74;14684:1;14681:81;14676:1;14669:9;14662:17;14658:105;14655:131;;;14766:18;;:::i;:::-;-1:-1:-1;14806:9:39;;14593:228::o;15576:112::-;15608:1;15634;15624:35;;15639:18;;:::i;:::-;-1:-1:-1;15673:9:39;;15576:112::o;15693:221::-;15732:4;15761:10;15821;;;;15791;;15843:12;;;15840:38;;;15858:18;;:::i;:::-;15895:13;;15693:221;-1:-1:-1;;;15693:221:39:o;15919:128::-;15959:3;15990:1;15986:6;15983:1;15980:13;15977:39;;;15996:18;;:::i;:::-;-1:-1:-1;16032:9:39;;15919:128::o;16372:251::-;16442:6;16495:2;16483:9;16474:7;16470:23;16466:32;16463:52;;;16511:1;16508;16501:12;16463:52;16543:9;16537:16;16562:31;16587:5;16562:31;:::i;16628:311::-;16668:7;16700:58;16785:2;16782:1;16778:10;16815:2;16812:1;16808:10;16871:3;16867:2;16863:12;16858:3;16855:21;16848:3;16841:11;16834:19;16830:47;16827:73;;;16880:18;;:::i;:::-;16920:13;;16628:311;-1:-1:-1;;;;16628:311:39:o;16944:240::-;16984:1;17010:58;17095:2;17092:1;17088:10;17117:3;17107:37;;17124:18;;:::i;:::-;17162:10;;17158:20;;;;;16944:240;-1:-1:-1;;16944:240:39:o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "2339600", + "executionCost": "48849", + "totalCost": "2388449" + }, + "external": { + "DOMAIN_SEPARATOR()": "2340", + "MINIMUM_LIQUIDITY()": "240", + "PERMIT_TYPEHASH()": "263", + "allowance(address,address)": "infinite", + "approve(address,uint256)": "24544", + "balanceOf(address)": "2569", + "burn(address)": "infinite", + "decimals()": "294", + "factory()": "2402", + "getReserves()": "2447", + "initialize(address,address)": "infinite", + "kLast()": "2385", + "mint(address)": "infinite", + "name()": "infinite", + "nonces(address)": "2546", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "infinite", + "price0CumulativeLast()": "2384", + "price1CumulativeLast()": "2406", + "skim(address)": "infinite", + "swap(uint256,uint256,address,bytes)": "infinite", + "symbol()": "infinite", + "sync()": "infinite", + "token0()": "2381", + "token1()": "2357", + "totalSupply()": "2385", + "transfer(address,uint256)": "infinite", + "transferFrom(address,address,uint256)": "infinite" + }, + "internal": { + "_approve(address,address,uint256)": "infinite", + "_burn(address,uint256)": "infinite", + "_mint(address,uint256)": "infinite", + "_mintFee(uint112,uint112)": "infinite", + "_safeTransfer(address,address,uint256)": "infinite", + "_transfer(address,address,uint256)": "infinite", + "_update(uint256,uint256,uint112,uint112)": "infinite" + } + }, + "methodIdentifiers": { + "DOMAIN_SEPARATOR()": "3644e515", + "MINIMUM_LIQUIDITY()": "ba9a7a56", + "PERMIT_TYPEHASH()": "30adf81f", + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "burn(address)": "89afcb44", + "decimals()": "313ce567", + "factory()": "c45a0155", + "getReserves()": "0902f1ac", + "initialize(address,address)": "485cc955", + "kLast()": "7464fc3d", + "mint(address)": "6a627842", + "name()": "06fdde03", + "nonces(address)": "7ecebe00", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf", + "price0CumulativeLast()": "5909c0d5", + "price1CumulativeLast()": "5a3d5493", + "skim(address)": "bc25cf77", + "swap(uint256,uint256,address,bytes)": "022c0d9f", + "symbol()": "95d89b41", + "sync()": "fff6cae9", + "token0()": "0dfe1681", + "token1()": "d21220a7", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"_reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"_reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"_blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"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\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Uniswap/UniswapV2Pair.sol\":\"UniswapV2Pair\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Common/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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 payable(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}\",\"keccak256\":\"0x60d51a32063a4975dbf9433d38f5849173527da72f007c38053274e06698cb54\",\"license\":\"MIT\"},\"contracts/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport \\\"../Common/Context.sol\\\";\\nimport \\\"../Math/SafeMath.sol\\\";\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {ERC20Detailed}.\\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\\n\",\"keccak256\":\"0x057bec1fafd7ca222117f41fcfb9c8dc1f61aa30e5a0222c981196e9113de7e6\",\"license\":\"MIT\"},\"contracts/Math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a >= b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow, so we distribute\\n return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);\\n }\\n\\n // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)\\n function sqrt(uint y) internal pure returns (uint z) {\\n if (y > 3) {\\n z = y;\\n uint x = y / 2 + 1;\\n while (x < z) {\\n z = x;\\n x = (y / x + x) / 2;\\n }\\n } else if (y != 0) {\\n z = 1;\\n }\\n }\\n}\",\"keccak256\":\"0x62bc6e8ee2764351c70251d50f023f15a87b6e9e31fe64e344c33a2580982dda\",\"license\":\"MIT\"},\"contracts/Math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\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, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\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\\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 * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\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 * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\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 * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (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) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts 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 * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts 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 * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message 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 * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\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}\",\"keccak256\":\"0x43a20f7cf4c4319f81450d53779455e88a7ab80bdfc43925156ed4083b74a180\",\"license\":\"MIT\"},\"contracts/Math/UQ112x112.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\n// a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format))\\n\\n// range: [0, 2**112 - 1]\\n// resolution: 1 / 2**112\\n\\nlibrary UQ112x112 {\\n uint224 constant Q112 = 2**112;\\n\\n // encode a uint112 as a UQ112x112\\n function encode(uint112 y) internal pure returns (uint224 z) {\\n z = uint224(y) * Q112; // never overflows\\n }\\n\\n // divide a UQ112x112 by a uint112, returning a UQ112x112\\n function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) {\\n z = x / uint224(y);\\n }\\n}\",\"keccak256\":\"0xf96670ceb7698871af8201df1bb4d9273c1d3b8defc63de942f9e1466b508608\",\"license\":\"MIT\"},\"contracts/Uniswap/Interfaces/IUniswapV2Callee.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ninterface IUniswapV2Callee {\\n function uniswapV2Call(address sender, uint amount0, uint amount1, bytes calldata data) external;\\n}\\n\",\"keccak256\":\"0xe88dddfb2938fe3622b6efea7a2891db071c24c80d42f14e0721c64230bc3932\",\"license\":\"MIT\"},\"contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ninterface IUniswapV2ERC20 {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external pure returns (string memory);\\n function symbol() external pure returns (string memory);\\n function decimals() external pure returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n function PERMIT_TYPEHASH() external pure returns (bytes32);\\n function nonces(address owner) external view returns (uint);\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\\n}\\n\",\"keccak256\":\"0x9845bf55f69d1f7ce821b95861a78821a118bdb3f1c8997b6bb0c2b6a890901c\",\"license\":\"MIT\"},\"contracts/Uniswap/Interfaces/IUniswapV2Factory.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ninterface IUniswapV2Factory {\\n event PairCreated(address indexed token0, address indexed token1, address pair, uint);\\n\\n function feeTo() external view returns (address);\\n function feeToSetter() external view returns (address);\\n\\n function getPair(address tokenA, address tokenB) external view returns (address pair);\\n function allPairs(uint) external view returns (address pair);\\n function allPairsLength() external view returns (uint);\\n\\n function createPair(address tokenA, address tokenB) external returns (address pair);\\n\\n function setFeeTo(address) external;\\n function setFeeToSetter(address) external;\\n}\\n\",\"keccak256\":\"0x87c74a8e918023f916cdc22f6a1cac447bff16f769828d4aae36876187c6f7d3\",\"license\":\"MIT\"},\"contracts/Uniswap/Interfaces/IUniswapV2Pair.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ninterface IUniswapV2Pair {\\n event Approval(address indexed owner, address indexed spender, uint value);\\n event Transfer(address indexed from, address indexed to, uint value);\\n\\n function name() external pure returns (string memory);\\n function symbol() external pure returns (string memory);\\n function decimals() external pure returns (uint8);\\n function totalSupply() external view returns (uint);\\n function balanceOf(address owner) external view returns (uint);\\n function allowance(address owner, address spender) external view returns (uint);\\n\\n function approve(address spender, uint value) external returns (bool);\\n function transfer(address to, uint value) external returns (bool);\\n function transferFrom(address from, address to, uint value) external returns (bool);\\n\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n function PERMIT_TYPEHASH() external pure returns (bytes32);\\n function nonces(address owner) external view returns (uint);\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\\n\\n event Mint(address indexed sender, uint amount0, uint amount1);\\n event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\\n event Swap(\\n address indexed sender,\\n uint amount0In,\\n uint amount1In,\\n uint amount0Out,\\n uint amount1Out,\\n address indexed to\\n );\\n event Sync(uint112 reserve0, uint112 reserve1);\\n\\n function MINIMUM_LIQUIDITY() external pure returns (uint);\\n function factory() external view returns (address);\\n function token0() external view returns (address);\\n function token1() external view returns (address);\\n function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\\n function price0CumulativeLast() external view returns (uint);\\n function price1CumulativeLast() external view returns (uint);\\n function kLast() external view returns (uint);\\n\\n function mint(address to) external returns (uint liquidity);\\n function burn(address to) external returns (uint amount0, uint amount1);\\n function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;\\n function skim(address to) external;\\n function sync() external;\\n\\n function initialize(address, address) external; \\n}\\n\",\"keccak256\":\"0x2509844ce3a43ce31165e4101700ab13e95f267a2cae4a2a88ea1ebb5a50513d\",\"license\":\"MIT\"},\"contracts/Uniswap/UniswapV2ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport './Interfaces/IUniswapV2ERC20.sol';\\nimport '../Math/SafeMath.sol';\\n\\ncontract UniswapV2ERC20 is IUniswapV2ERC20 {\\n using SafeMath for uint;\\n\\n string public override constant name = 'Uniswap V2';\\n string public override constant symbol = 'UNI-V2';\\n uint8 public override constant decimals = 18;\\n uint public override totalSupply;\\n mapping(address => uint) public override balanceOf;\\n mapping(address => mapping(address => uint)) public override allowance;\\n\\n bytes32 public override DOMAIN_SEPARATOR;\\n // keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\");\\n bytes32 public constant override PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;\\n mapping(address => uint) public override nonces;\\n\\n // event Approval(address indexed owner, address indexed spender, uint value);\\n // event Transfer(address indexed from, address indexed to, uint value);\\n\\n constructor() {\\n uint chainId;\\n assembly {\\n chainId := chainid()\\n }\\n DOMAIN_SEPARATOR = keccak256(\\n abi.encode(\\n keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),\\n keccak256(bytes(name)),\\n keccak256(bytes('1')),\\n chainId,\\n address(this)\\n )\\n );\\n }\\n\\n function _mint(address to, uint value) internal {\\n totalSupply = totalSupply.add(value);\\n balanceOf[to] = balanceOf[to].add(value);\\n emit Transfer(address(0), to, value);\\n }\\n\\n function _burn(address from, uint value) internal {\\n balanceOf[from] = balanceOf[from].sub(value);\\n totalSupply = totalSupply.sub(value);\\n emit Transfer(from, address(0), value);\\n }\\n\\n function _approve(address owner, address spender, uint value) private {\\n allowance[owner][spender] = value;\\n emit Approval(owner, spender, value);\\n }\\n\\n function _transfer(address from, address to, uint value) private {\\n balanceOf[from] = balanceOf[from].sub(value);\\n balanceOf[to] = balanceOf[to].add(value);\\n emit Transfer(from, to, value);\\n }\\n\\n function approve(address spender, uint value) external override returns (bool) {\\n _approve(msg.sender, spender, value);\\n return true;\\n }\\n\\n function transfer(address to, uint value) external override returns (bool) {\\n _transfer(msg.sender, to, value);\\n return true;\\n }\\n\\n function transferFrom(address from, address to, uint value) external override returns (bool) {\\n if (allowance[from][msg.sender] != type(uint).max) {\\n allowance[from][msg.sender] = allowance[from][msg.sender].sub(value);\\n }\\n _transfer(from, to, value);\\n return true;\\n }\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external override {\\n require(deadline >= block.timestamp, 'UniswapV2: EXPIRED');\\n bytes32 digest = keccak256(\\n abi.encodePacked(\\n '\\\\x19\\\\x01',\\n DOMAIN_SEPARATOR,\\n keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))\\n )\\n );\\n address recoveredAddress = ecrecover(digest, v, r, s);\\n require(recoveredAddress != address(0) && recoveredAddress == owner, 'UniswapV2: INVALID_SIGNATURE');\\n _approve(owner, spender, value);\\n }\\n}\\n\",\"keccak256\":\"0x7e7e4057f86eed869009463eb8a0895cf6b868494ae3773e12b2ad7c07ff9cb4\",\"license\":\"MIT\"},\"contracts/Uniswap/UniswapV2Pair.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\n\\nimport './Interfaces/IUniswapV2Pair.sol';\\nimport './UniswapV2ERC20.sol';\\nimport '../Math/Math.sol';\\nimport '../Math/UQ112x112.sol';\\nimport '../ERC20/IERC20.sol';\\nimport './Interfaces/IUniswapV2Factory.sol';\\nimport './Interfaces/IUniswapV2Callee.sol';\\n\\ncontract UniswapV2Pair is IUniswapV2Pair {\\n using SafeMath for uint;\\n using UQ112x112 for uint224;\\n\\n string public override constant name = 'Uniswap V2';\\n string public override constant symbol = 'UNI-V2';\\n uint8 public override constant decimals = 18;\\n uint public override totalSupply;\\n mapping(address => uint) public override balanceOf;\\n mapping(address => mapping(address => uint)) public override allowance;\\n\\n uint public override constant MINIMUM_LIQUIDITY = 10**3;\\n bytes4 private constant SELECTOR = bytes4(keccak256(bytes('transfer(address,uint256)')));\\n bytes32 public override DOMAIN_SEPARATOR;\\n // keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\");\\n bytes32 public constant override PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;\\n mapping(address => uint) public override nonces;\\n\\n\\n \\n\\n address public override factory;\\n address public override token0;\\n address public override token1;\\n\\n uint112 private reserve0; // uses single storage slot, accessible via getReserves\\n uint112 private reserve1; // uses single storage slot, accessible via getReserves\\n uint32 private blockTimestampLast; // uses single storage slot, accessible via getReserves\\n\\n uint public override price0CumulativeLast;\\n uint public override price1CumulativeLast;\\n uint public override kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event\\n\\n uint private unlocked = 1;\\n modifier lock() {\\n require(unlocked == 1, 'UniswapV2: LOCKED');\\n unlocked = 0;\\n _;\\n unlocked = 1;\\n }\\n\\n function getReserves() public override view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) {\\n _reserve0 = reserve0;\\n _reserve1 = reserve1;\\n _blockTimestampLast = blockTimestampLast;\\n }\\n\\n function _safeTransfer(address token, address to, uint value) private {\\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, to, value));\\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'UniswapV2: TRANSFER_FAILED');\\n }\\n\\n // event Mint(address indexed sender, uint amount0, uint amount1);\\n // event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\\n // event Swap(\\n // address indexed sender,\\n // uint amount0In,\\n // uint amount1In,\\n // uint amount0Out,\\n // uint amount1Out,\\n // address indexed to\\n // );\\n // event Sync(uint112 reserve0, uint112 reserve1);\\n\\n constructor() {\\n factory = msg.sender;\\n }\\n\\n // called once by the factory at time of deployment\\n function initialize(address _token0, address _token1) external override {\\n require(msg.sender == factory, 'UniswapV2: FORBIDDEN'); // sufficient check\\n token0 = _token0;\\n token1 = _token1;\\n }\\n\\n // update reserves and, on the first call per block, price accumulators\\n function _update(uint balance0, uint balance1, uint112 _reserve0, uint112 _reserve1) private {\\n require(balance0 <= type(uint112).max && balance1 <= type(uint112).max, 'UniswapV2: OVERFLOW');\\n uint32 blockTimestamp = uint32(block.timestamp % 2**32);\\n uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired\\n if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) {\\n // * never overflows, and + overflow is desired\\n price0CumulativeLast += uint(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed;\\n price1CumulativeLast += uint(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed;\\n }\\n reserve0 = uint112(balance0);\\n reserve1 = uint112(balance1);\\n blockTimestampLast = blockTimestamp;\\n emit Sync(reserve0, reserve1);\\n }\\n\\n // if fee is on, mint liquidity equivalent to 1/6th of the growth in sqrt(k)\\n function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {\\n address feeTo = IUniswapV2Factory(factory).feeTo();\\n feeOn = feeTo != address(0);\\n uint _kLast = kLast; // gas savings\\n if (feeOn) {\\n if (_kLast != 0) {\\n uint rootK = Math.sqrt(uint(_reserve0).mul(_reserve1));\\n uint rootKLast = Math.sqrt(_kLast);\\n if (rootK > rootKLast) {\\n uint numerator = totalSupply.mul(rootK.sub(rootKLast));\\n uint denominator = rootK.mul(5).add(rootKLast);\\n uint liquidity = numerator / denominator;\\n if (liquidity > 0) _mint(feeTo, liquidity);\\n }\\n }\\n } else if (_kLast != 0) {\\n kLast = 0;\\n }\\n }\\n\\n // this low-level function should be called from a contract which performs important safety checks\\n function mint(address to) external override lock returns (uint liquidity) {\\n (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings\\n uint balance0 = IERC20(token0).balanceOf(address(this));\\n uint balance1 = IERC20(token1).balanceOf(address(this));\\n uint amount0 = balance0.sub(_reserve0);\\n uint amount1 = balance1.sub(_reserve1);\\n bool feeOn = _mintFee(_reserve0, _reserve1);\\n uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee\\n\\n if (_totalSupply == 0) {\\n liquidity = Math.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY);\\n _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock the first MINIMUM_LIQUIDITY tokens\\n } else {\\n liquidity = Math.min(amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1);\\n }\\n\\n require(liquidity > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_MINTED');\\n _mint(to, liquidity);\\n\\n _update(balance0, balance1, _reserve0, _reserve1);\\n if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date\\n emit Mint(msg.sender, amount0, amount1);\\n }\\n\\n // this low-level function should be called from a contract which performs important safety checks\\n function burn(address to) external override lock returns (uint amount0, uint amount1) {\\n (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings\\n address _token0 = token0; // gas savings\\n address _token1 = token1; // gas savings\\n uint balance0 = IERC20(_token0).balanceOf(address(this));\\n uint balance1 = IERC20(_token1).balanceOf(address(this));\\n uint liquidity = balanceOf[address(this)];\\n\\n bool feeOn = _mintFee(_reserve0, _reserve1);\\n uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee\\n amount0 = liquidity.mul(balance0) / _totalSupply; // using balances ensures pro-rata distribution\\n amount1 = liquidity.mul(balance1) / _totalSupply; // using balances ensures pro-rata distribution\\n require(amount0 > 0 && amount1 > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED');\\n _burn(address(this), liquidity);\\n _safeTransfer(_token0, to, amount0);\\n _safeTransfer(_token1, to, amount1);\\n balance0 = IERC20(_token0).balanceOf(address(this));\\n balance1 = IERC20(_token1).balanceOf(address(this));\\n\\n _update(balance0, balance1, _reserve0, _reserve1);\\n if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date\\n emit Burn(msg.sender, amount0, amount1, to);\\n }\\n\\n // this low-level function should be called from a contract which performs important safety checks\\n function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external override lock {\\n require(amount0Out > 0 || amount1Out > 0, 'UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT');\\n (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings\\n require(amount0Out < _reserve0 && amount1Out < _reserve1, 'UniswapV2: INSUFFICIENT_LIQUIDITY');\\n\\n uint balance0;\\n uint balance1;\\n { // scope for _token{0,1}, avoids stack too deep errors\\n address _token0 = token0;\\n address _token1 = token1;\\n require(to != _token0 && to != _token1, 'UniswapV2: INVALID_TO');\\n if (amount0Out > 0) _safeTransfer(_token0, to, amount0Out); // optimistically transfer tokens\\n if (amount1Out > 0) _safeTransfer(_token1, to, amount1Out); // optimistically transfer tokens\\n if (data.length > 0) IUniswapV2Callee(to).uniswapV2Call(msg.sender, amount0Out, amount1Out, data);\\n balance0 = IERC20(_token0).balanceOf(address(this));\\n balance1 = IERC20(_token1).balanceOf(address(this));\\n }\\n uint amount0In = balance0 > _reserve0 - amount0Out ? balance0 - (_reserve0 - amount0Out) : 0;\\n uint amount1In = balance1 > _reserve1 - amount1Out ? balance1 - (_reserve1 - amount1Out) : 0;\\n require(amount0In > 0 || amount1In > 0, 'UniswapV2: INSUFFICIENT_INPUT_AMOUNT');\\n { // scope for reserve{0,1}Adjusted, avoids stack too deep errors\\n uint balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(3));\\n uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(3));\\n require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'UniswapV2: K');\\n }\\n\\n _update(balance0, balance1, _reserve0, _reserve1);\\n emit Swap(msg.sender, amount0In, amount1In, amount0Out, amount1Out, to);\\n }\\n\\n // force balances to match reserves\\n function skim(address to) external override lock {\\n address _token0 = token0; // gas savings\\n address _token1 = token1; // gas savings\\n _safeTransfer(_token0, to, IERC20(_token0).balanceOf(address(this)).sub(reserve0));\\n _safeTransfer(_token1, to, IERC20(_token1).balanceOf(address(this)).sub(reserve1));\\n }\\n\\n // force reserves to match balances\\n function sync() external override lock {\\n _update(IERC20(token0).balanceOf(address(this)), IERC20(token1).balanceOf(address(this)), reserve0, reserve1);\\n }\\n\\n\\n\\n // Migrated over from UniswapV2ERC20. Needed for ^0.6.0\\n // ===============================================\\n\\n function _mint(address to, uint value) internal {\\n totalSupply = totalSupply.add(value);\\n balanceOf[to] = balanceOf[to].add(value);\\n emit Transfer(address(0), to, value);\\n }\\n\\n function _burn(address from, uint value) internal {\\n balanceOf[from] = balanceOf[from].sub(value);\\n totalSupply = totalSupply.sub(value);\\n emit Transfer(from, address(0), value);\\n }\\n\\n function _approve(address owner, address spender, uint value) private {\\n allowance[owner][spender] = value;\\n emit Approval(owner, spender, value);\\n }\\n\\n function _transfer(address from, address to, uint value) private {\\n balanceOf[from] = balanceOf[from].sub(value);\\n balanceOf[to] = balanceOf[to].add(value);\\n emit Transfer(from, to, value);\\n }\\n\\n function approve(address spender, uint value) external override returns (bool) {\\n _approve(msg.sender, spender, value);\\n return true;\\n }\\n\\n function transfer(address to, uint value) external override returns (bool) {\\n _transfer(msg.sender, to, value);\\n return true;\\n }\\n\\n function transferFrom(address from, address to, uint value) external override returns (bool) {\\n if (allowance[from][msg.sender] != type(uint).max) {\\n allowance[from][msg.sender] = allowance[from][msg.sender].sub(value);\\n }\\n _transfer(from, to, value);\\n return true;\\n }\\n\\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external override {\\n require(deadline >= block.timestamp, 'UniswapV2: EXPIRED');\\n bytes32 digest = keccak256(\\n abi.encodePacked(\\n '\\\\x19\\\\x01',\\n DOMAIN_SEPARATOR,\\n keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))\\n )\\n );\\n address recoveredAddress = ecrecover(digest, v, r, s);\\n require(recoveredAddress != address(0) && recoveredAddress == owner, 'UniswapV2: INVALID_SIGNATURE');\\n _approve(owner, spender, value);\\n }\\n\\n\\n\\n}\",\"keccak256\":\"0xb55806dad20e322f970729de7959ff7bb6b86eb0d11b7b504f07412203d40f5e\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 9891, + "contract": "contracts/Uniswap/UniswapV2Pair.sol:UniswapV2Pair", + "label": "totalSupply", + "offset": 0, + "slot": "0", + "type": "t_uint256" + }, + { + "astId": 9896, + "contract": "contracts/Uniswap/UniswapV2Pair.sol:UniswapV2Pair", + "label": "balanceOf", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 9903, + "contract": "contracts/Uniswap/UniswapV2Pair.sol:UniswapV2Pair", + "label": "allowance", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))" + }, + { + "astId": 9923, + "contract": "contracts/Uniswap/UniswapV2Pair.sol:UniswapV2Pair", + "label": "DOMAIN_SEPARATOR", + "offset": 0, + "slot": "3", + "type": "t_bytes32" + }, + { + "astId": 9932, + "contract": "contracts/Uniswap/UniswapV2Pair.sol:UniswapV2Pair", + "label": "nonces", + "offset": 0, + "slot": "4", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 9935, + "contract": "contracts/Uniswap/UniswapV2Pair.sol:UniswapV2Pair", + "label": "factory", + "offset": 0, + "slot": "5", + "type": "t_address" + }, + { + "astId": 9938, + "contract": "contracts/Uniswap/UniswapV2Pair.sol:UniswapV2Pair", + "label": "token0", + "offset": 0, + "slot": "6", + "type": "t_address" + }, + { + "astId": 9941, + "contract": "contracts/Uniswap/UniswapV2Pair.sol:UniswapV2Pair", + "label": "token1", + "offset": 0, + "slot": "7", + "type": "t_address" + }, + { + "astId": 9943, + "contract": "contracts/Uniswap/UniswapV2Pair.sol:UniswapV2Pair", + "label": "reserve0", + "offset": 0, + "slot": "8", + "type": "t_uint112" + }, + { + "astId": 9945, + "contract": "contracts/Uniswap/UniswapV2Pair.sol:UniswapV2Pair", + "label": "reserve1", + "offset": 14, + "slot": "8", + "type": "t_uint112" + }, + { + "astId": 9947, + "contract": "contracts/Uniswap/UniswapV2Pair.sol:UniswapV2Pair", + "label": "blockTimestampLast", + "offset": 28, + "slot": "8", + "type": "t_uint32" + }, + { + "astId": 9950, + "contract": "contracts/Uniswap/UniswapV2Pair.sol:UniswapV2Pair", + "label": "price0CumulativeLast", + "offset": 0, + "slot": "9", + "type": "t_uint256" + }, + { + "astId": 9953, + "contract": "contracts/Uniswap/UniswapV2Pair.sol:UniswapV2Pair", + "label": "price1CumulativeLast", + "offset": 0, + "slot": "10", + "type": "t_uint256" + }, + { + "astId": 9956, + "contract": "contracts/Uniswap/UniswapV2Pair.sol:UniswapV2Pair", + "label": "kLast", + "offset": 0, + "slot": "11", + "type": "t_uint256" + }, + { + "astId": 9959, + "contract": "contracts/Uniswap/UniswapV2Pair.sol:UniswapV2Pair", + "label": "unlocked", + "offset": 0, + "slot": "12", + "type": "t_uint256" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_bytes32": { + "encoding": "inplace", + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32", + "value": "t_mapping(t_address,t_uint256)" + }, + "t_mapping(t_address,t_uint256)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_uint112": { + "encoding": "inplace", + "label": "uint112", + "numberOfBytes": "14" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint32": { + "encoding": "inplace", + "label": "uint32", + "numberOfBytes": "4" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/Utils/Address.sol": { + "Address": { + "abi": [], + "devdoc": { + "details": "Collection of functions related to the address type", + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b07e2b842d23154292b6693ef26c9ada9d7711c6c05e794c4a0e1da45b0229a764736f6c634300080a0033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB0 PUSH31 0x2B842D23154292B6693EF26C9ADA9D7711C6C05E794C4A0E1DA45B0229A764 PUSH20 0x6F6C634300080A00330000000000000000000000 ", + "sourceMap": "134:7684:37:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;134:7684:37;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b07e2b842d23154292b6693ef26c9ada9d7711c6c05e794c4a0e1da45b0229a764736f6c634300080a0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB0 PUSH31 0x2B842D23154292B6693EF26C9ADA9D7711C6C05E794C4A0E1DA45B0229A764 PUSH20 0x6F6C634300080A00330000000000000000000000 ", + "sourceMap": "134:7684:37:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17200", + "executionCost": "103", + "totalCost": "17303" + }, + "internal": { + "_verifyCallResult(bool,bytes memory,string memory)": "infinite", + "functionCall(address,bytes memory)": "infinite", + "functionCall(address,bytes memory,string memory)": "infinite", + "functionCallWithValue(address,bytes memory,uint256)": "infinite", + "functionCallWithValue(address,bytes memory,uint256,string memory)": "infinite", + "functionDelegateCall(address,bytes memory)": "infinite", + "functionDelegateCall(address,bytes memory,string memory)": "infinite", + "functionStaticCall(address,bytes memory)": "infinite", + "functionStaticCall(address,bytes memory,string memory)": "infinite", + "isContract(address)": "infinite", + "sendValue(address payable,uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"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\":{\"contracts/Utils/Address.sol\":\"Address\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11 <0.9.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}\",\"keccak256\":\"0xe392046e85c78eea7d4c1237af52a5fc06c097b7a480ea4f20159670b4a582a4\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/Utils/EnumerableSet.sol": { + "EnumerableSet": { + "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.0.0, only sets of type `address` (`AddressSet`) and `uint256` (`UintSet`) are supported.", + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205dfa9ea66c5892e2fda9d9ba1edb1c5a38f3deb78aa2abba2a7d560fb22124d064736f6c634300080a0033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5D STATICCALL SWAP15 0xA6 PUSH13 0x5892E2FDA9D9BA1EDB1C5A38F3 0xDE 0xB7 DUP11 LOG2 0xAB 0xBA 0x2A PUSH30 0x560FB22124D064736F6C634300080A003300000000000000000000000000 ", + "sourceMap": "726:7062:38:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;726:7062:38;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205dfa9ea66c5892e2fda9d9ba1edb1c5a38f3deb78aa2abba2a7d560fb22124d064736f6c634300080a0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5D STATICCALL SWAP15 0xA6 PUSH13 0x5892E2FDA9D9BA1EDB1C5A38F3 0xDE 0xB7 DUP11 LOG2 0xAB 0xBA 0x2A PUSH30 0x560FB22124D064736F6C634300080A003300000000000000000000000000 ", + "sourceMap": "726:7062:38:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17200", + "executionCost": "103", + "totalCost": "17303" + }, + "internal": { + "_add(struct EnumerableSet.Set storage pointer,bytes32)": "infinite", + "_at(struct EnumerableSet.Set storage pointer,uint256)": "infinite", + "_contains(struct EnumerableSet.Set storage pointer,bytes32)": "infinite", + "_length(struct EnumerableSet.Set storage pointer)": "infinite", + "_remove(struct EnumerableSet.Set storage pointer,bytes32)": "infinite", + "add(struct EnumerableSet.AddressSet storage pointer,address)": "infinite", + "add(struct EnumerableSet.UintSet storage pointer,uint256)": "infinite", + "at(struct EnumerableSet.AddressSet storage pointer,uint256)": "infinite", + "at(struct EnumerableSet.UintSet storage pointer,uint256)": "infinite", + "contains(struct EnumerableSet.AddressSet storage pointer,address)": "infinite", + "contains(struct EnumerableSet.UintSet storage pointer,uint256)": "infinite", + "length(struct EnumerableSet.AddressSet storage pointer)": "infinite", + "length(struct EnumerableSet.UintSet storage pointer)": "infinite", + "remove(struct EnumerableSet.AddressSet storage pointer,address)": "infinite", + "remove(struct EnumerableSet.UintSet storage pointer,uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"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.0.0, only sets of type `address` (`AddressSet`) and `uint256` (`UintSet`) are supported.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Utils/EnumerableSet.sol\":\"EnumerableSet\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Utils/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.11;\\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.0.0, only sets of type `address` (`AddressSet`) and `uint256`\\n * (`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 // 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(bytes20(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(bytes20(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(bytes20(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(bytes20(_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\",\"keccak256\":\"0x685f4133ba76f930e3761c1d1414d7f6e55dd40d58b4b210cb392662a6cbd27d\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "errors": [ + { + "component": "general", + "errorCode": "1878", + "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: \" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/Oracle/Oracle.sol\n\n", + "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: \" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.", + "severity": "warning", + "sourceLocation": { + "end": -1, + "file": "contracts/Oracle/Oracle.sol", + "start": -1 + }, + "type": "Warning" + }, + { + "component": "general", + "errorCode": "1878", + "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: \" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/Staking/Staking.sol\n\n", + "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: \" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.", + "severity": "warning", + "sourceLocation": { + "end": -1, + "file": "contracts/Staking/Staking.sol", + "start": -1 + }, + "type": "Warning" + }, + { + "component": "general", + "errorCode": "3420", + "formattedMessage": "Warning: Source file does not specify required compiler version! Consider adding \"pragma solidity ^0.8.10;\"\n--> contracts/DEUS/IDEUS.sol\n\n", + "message": "Source file does not specify required compiler version! Consider adding \"pragma solidity ^0.8.10;\"", + "severity": "warning", + "sourceLocation": { + "end": -1, + "file": "contracts/DEUS/IDEUS.sol", + "start": -1 + }, + "type": "Warning" + }, + { + "component": "general", + "errorCode": "3420", + "formattedMessage": "Warning: Source file does not specify required compiler version! Consider adding \"pragma solidity ^0.8.10;\"\n--> contracts/DEI/IDEI.sol\n\n", + "message": "Source file does not specify required compiler version! Consider adding \"pragma solidity ^0.8.10;\"", + "severity": "warning", + "sourceLocation": { + "end": -1, + "file": "contracts/DEI/IDEI.sol", + "start": -1 + }, + "type": "Warning" + }, + { + "component": "general", + "errorCode": "2462", + "formattedMessage": "Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n --> contracts/ERC20/ERC20.sol:57:5:\n |\n57 | constructor (string memory __name, string memory __symbol) public {\n | ^ (Relevant source part starts here and spans across multiple lines).\n\n", + "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.", + "severity": "warning", + "sourceLocation": { + "end": 2123, + "file": "contracts/ERC20/ERC20.sol", + "start": 1974 + }, + "type": "Warning" + }, + { + "component": "general", + "errorCode": "2462", + "formattedMessage": "Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n --> contracts/DEI/Pools/Pool_DAI.sol:11:5:\n |\n11 | constructor(\n | ^ (Relevant source part starts here and spans across multiple lines).\n\n", + "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.", + "severity": "warning", + "sourceLocation": { + "end": 787, + "file": "contracts/DEI/Pools/Pool_DAI.sol", + "start": 199 + }, + "type": "Warning" + }, + { + "component": "general", + "errorCode": "2462", + "formattedMessage": "Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n --> contracts/DEI/Pools/Pool_HUSD.sol:11:5:\n |\n11 | constructor(\n | ^ (Relevant source part starts here and spans across multiple lines).\n\n", + "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.", + "severity": "warning", + "sourceLocation": { + "end": 790, + "file": "contracts/DEI/Pools/Pool_HUSD.sol", + "start": 201 + }, + "type": "Warning" + }, + { + "component": "general", + "errorCode": "2462", + "formattedMessage": "Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n --> contracts/DEI/Pools/Pool_USDC.sol:11:5:\n |\n11 | constructor(\n | ^ (Relevant source part starts here and spans across multiple lines).\n\n", + "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.", + "severity": "warning", + "sourceLocation": { + "end": 790, + "file": "contracts/DEI/Pools/Pool_USDC.sol", + "start": 201 + }, + "type": "Warning" + }, + { + "component": "general", + "errorCode": "2462", + "formattedMessage": "Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n --> contracts/Uniswap/UniswapV2Factory.sol:16:5:\n |\n16 | constructor(address _feeToSetter) public {\n | ^ (Relevant source part starts here and spans across multiple lines).\n\n", + "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.", + "severity": "warning", + "sourceLocation": { + "end": 562, + "file": "contracts/Uniswap/UniswapV2Factory.sol", + "start": 478 + }, + "type": "Warning" + } + ], + "sources": { + "@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "exportedSymbols": { + "IERC20Permit": [ + 35 + ] + }, + "id": 36, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC20Permit", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 2, + "nodeType": "StructuredDocumentation", + "src": "58:480:0", + "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": 35, + "linearizedBaseContracts": [ + 35 + ], + "name": "IERC20Permit", + "nameLocation": "549:12:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 3, + "nodeType": "StructuredDocumentation", + "src": "568:792:0", + "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": 20, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "permit", + "nameLocation": "1374:6:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 18, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1398:5:0", + "nodeType": "VariableDeclaration", + "scope": 20, + "src": "1390:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1390:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1421:7:0", + "nodeType": "VariableDeclaration", + "scope": 20, + "src": "1413:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1413:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9, + "mutability": "mutable", + "name": "value", + "nameLocation": "1446:5:0", + "nodeType": "VariableDeclaration", + "scope": 20, + "src": "1438:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1438:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "1469:8:0", + "nodeType": "VariableDeclaration", + "scope": 20, + "src": "1461:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1461:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13, + "mutability": "mutable", + "name": "v", + "nameLocation": "1493:1:0", + "nodeType": "VariableDeclaration", + "scope": 20, + "src": "1487:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 12, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1487:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15, + "mutability": "mutable", + "name": "r", + "nameLocation": "1512:1:0", + "nodeType": "VariableDeclaration", + "scope": 20, + "src": "1504:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 14, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1504:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 17, + "mutability": "mutable", + "name": "s", + "nameLocation": "1531:1:0", + "nodeType": "VariableDeclaration", + "scope": 20, + "src": "1523:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 16, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1523:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1380:158:0" + }, + "returnParameters": { + "id": 19, + "nodeType": "ParameterList", + "parameters": [], + "src": "1547:0:0" + }, + "scope": 35, + "src": "1365:183:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 21, + "nodeType": "StructuredDocumentation", + "src": "1554:294:0", + "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": 28, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "nonces", + "nameLocation": "1862:6:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 24, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1877:5:0", + "nodeType": "VariableDeclaration", + "scope": 28, + "src": "1869:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 22, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1869:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1868:15:0" + }, + "returnParameters": { + "id": 27, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 26, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 28, + "src": "1907:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 25, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1907:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1906:9:0" + }, + "scope": 35, + "src": "1853:63:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 29, + "nodeType": "StructuredDocumentation", + "src": "1922:128:0", + "text": " @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}." + }, + "functionSelector": "3644e515", + "id": 34, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "DOMAIN_SEPARATOR", + "nameLocation": "2117:16:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 30, + "nodeType": "ParameterList", + "parameters": [], + "src": "2133:2:0" + }, + "returnParameters": { + "id": 33, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 34, + "src": "2159:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 31, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2159:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2158:9:0" + }, + "scope": 35, + "src": "2108:60:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 36, + "src": "539:1631:0", + "usedErrors": [] + } + ], + "src": "33:2138:0" + }, + "id": 0 + }, + "@openzeppelin/contracts/utils/Counters.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/Counters.sol", + "exportedSymbols": { + "Counters": [ + 109 + ] + }, + "id": 110, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 37, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:1" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Counters", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 38, + "nodeType": "StructuredDocumentation", + "src": "58:311:1", + "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`" + }, + "fullyImplemented": true, + "id": 109, + "linearizedBaseContracts": [ + 109 + ], + "name": "Counters", + "nameLocation": "378:8:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Counters.Counter", + "id": 41, + "members": [ + { + "constant": false, + "id": 40, + "mutability": "mutable", + "name": "_value", + "nameLocation": "740:6:1", + "nodeType": "VariableDeclaration", + "scope": 41, + "src": "732:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 39, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "732:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "Counter", + "nameLocation": "400:7:1", + "nodeType": "StructDefinition", + "scope": 109, + "src": "393:374:1", + "visibility": "public" + }, + { + "body": { + "id": 52, + "nodeType": "Block", + "src": "847:38:1", + "statements": [ + { + "expression": { + "expression": { + "id": 49, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44, + "src": "864:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$41_storage_ptr", + "typeString": "struct Counters.Counter storage pointer" + } + }, + "id": 50, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_value", + "nodeType": "MemberAccess", + "referencedDeclaration": 40, + "src": "864:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 48, + "id": 51, + "nodeType": "Return", + "src": "857:21:1" + } + ] + }, + "id": 53, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "current", + "nameLocation": "782:7:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 45, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 44, + "mutability": "mutable", + "name": "counter", + "nameLocation": "806:7:1", + "nodeType": "VariableDeclaration", + "scope": 53, + "src": "790:23:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$41_storage_ptr", + "typeString": "struct Counters.Counter" + }, + "typeName": { + "id": 43, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 42, + "name": "Counter", + "nodeType": "IdentifierPath", + "referencedDeclaration": 41, + "src": "790:7:1" + }, + "referencedDeclaration": 41, + "src": "790:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$41_storage_ptr", + "typeString": "struct Counters.Counter" + } + }, + "visibility": "internal" + } + ], + "src": "789:25:1" + }, + "returnParameters": { + "id": 48, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 47, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 53, + "src": "838:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 46, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "838:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "837:9:1" + }, + "scope": 109, + "src": "773:112:1", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 66, + "nodeType": "Block", + "src": "944:70:1", + "statements": [ + { + "id": 65, + "nodeType": "UncheckedBlock", + "src": "954:54:1", + "statements": [ + { + "expression": { + "id": 63, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 59, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 56, + "src": "978:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$41_storage_ptr", + "typeString": "struct Counters.Counter storage pointer" + } + }, + "id": 61, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_value", + "nodeType": "MemberAccess", + "referencedDeclaration": 40, + "src": "978:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "31", + "id": 62, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "996:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "978:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 64, + "nodeType": "ExpressionStatement", + "src": "978:19:1" + } + ] + } + ] + }, + "id": 67, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "increment", + "nameLocation": "900:9:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 57, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 56, + "mutability": "mutable", + "name": "counter", + "nameLocation": "926:7:1", + "nodeType": "VariableDeclaration", + "scope": 67, + "src": "910:23:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$41_storage_ptr", + "typeString": "struct Counters.Counter" + }, + "typeName": { + "id": 55, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 54, + "name": "Counter", + "nodeType": "IdentifierPath", + "referencedDeclaration": 41, + "src": "910:7:1" + }, + "referencedDeclaration": 41, + "src": "910:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$41_storage_ptr", + "typeString": "struct Counters.Counter" + } + }, + "visibility": "internal" + } + ], + "src": "909:25:1" + }, + "returnParameters": { + "id": 58, + "nodeType": "ParameterList", + "parameters": [], + "src": "944:0:1" + }, + "scope": 109, + "src": "891:123:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 94, + "nodeType": "Block", + "src": "1073:176:1", + "statements": [ + { + "assignments": [ + 74 + ], + "declarations": [ + { + "constant": false, + "id": 74, + "mutability": "mutable", + "name": "value", + "nameLocation": "1091:5:1", + "nodeType": "VariableDeclaration", + "scope": 94, + "src": "1083:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 73, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1083:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 77, + "initialValue": { + "expression": { + "id": 75, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 70, + "src": "1099:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$41_storage_ptr", + "typeString": "struct Counters.Counter storage pointer" + } + }, + "id": 76, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_value", + "nodeType": "MemberAccess", + "referencedDeclaration": 40, + "src": "1099:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1083:30:1" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 81, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 79, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "1131:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 80, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1139:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1131:9:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1142:29:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", + "typeString": "literal_string \"Counter: decrement overflow\"" + }, + "value": "Counter: decrement overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", + "typeString": "literal_string \"Counter: decrement overflow\"" + } + ], + "id": 78, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1123:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 83, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1123:49:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 84, + "nodeType": "ExpressionStatement", + "src": "1123:49:1" + }, + { + "id": 93, + "nodeType": "UncheckedBlock", + "src": "1182:61:1", + "statements": [ + { + "expression": { + "id": 91, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 85, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 70, + "src": "1206:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$41_storage_ptr", + "typeString": "struct Counters.Counter storage pointer" + } + }, + "id": 87, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_value", + "nodeType": "MemberAccess", + "referencedDeclaration": 40, + "src": "1206:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 90, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 88, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "1223:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 89, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1231:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1223:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1206:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 92, + "nodeType": "ExpressionStatement", + "src": "1206:26:1" + } + ] + } + ] + }, + "id": 95, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decrement", + "nameLocation": "1029:9:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 71, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 70, + "mutability": "mutable", + "name": "counter", + "nameLocation": "1055:7:1", + "nodeType": "VariableDeclaration", + "scope": 95, + "src": "1039:23:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$41_storage_ptr", + "typeString": "struct Counters.Counter" + }, + "typeName": { + "id": 69, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 68, + "name": "Counter", + "nodeType": "IdentifierPath", + "referencedDeclaration": 41, + "src": "1039:7:1" + }, + "referencedDeclaration": 41, + "src": "1039:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$41_storage_ptr", + "typeString": "struct Counters.Counter" + } + }, + "visibility": "internal" + } + ], + "src": "1038:25:1" + }, + "returnParameters": { + "id": 72, + "nodeType": "ParameterList", + "parameters": [], + "src": "1073:0:1" + }, + "scope": 109, + "src": "1020:229:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 107, + "nodeType": "Block", + "src": "1304:35:1", + "statements": [ + { + "expression": { + "id": 105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 101, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 98, + "src": "1314:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$41_storage_ptr", + "typeString": "struct Counters.Counter storage pointer" + } + }, + "id": 103, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_value", + "nodeType": "MemberAccess", + "referencedDeclaration": 40, + "src": "1314:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 104, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1331:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1314:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 106, + "nodeType": "ExpressionStatement", + "src": "1314:18:1" + } + ] + }, + "id": 108, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "reset", + "nameLocation": "1264:5:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 99, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 98, + "mutability": "mutable", + "name": "counter", + "nameLocation": "1286:7:1", + "nodeType": "VariableDeclaration", + "scope": 108, + "src": "1270:23:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$41_storage_ptr", + "typeString": "struct Counters.Counter" + }, + "typeName": { + "id": 97, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 96, + "name": "Counter", + "nodeType": "IdentifierPath", + "referencedDeclaration": 41, + "src": "1270:7:1" + }, + "referencedDeclaration": 41, + "src": "1270:7:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$41_storage_ptr", + "typeString": "struct Counters.Counter" + } + }, + "visibility": "internal" + } + ], + "src": "1269:25:1" + }, + "returnParameters": { + "id": 100, + "nodeType": "ParameterList", + "parameters": [], + "src": "1304:0:1" + }, + "scope": 109, + "src": "1255:84:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 110, + "src": "370:971:1", + "usedErrors": [] + } + ], + "src": "33:1309:1" + }, + "id": 1 + }, + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", + "exportedSymbols": { + "ECDSA": [ + 292 + ] + }, + "id": 293, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 111, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:2" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ECDSA", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 112, + "nodeType": "StructuredDocumentation", + "src": "58:205:2", + "text": " @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n These functions can be used to verify that a message was signed by the holder\n of the private keys of a given address." + }, + "fullyImplemented": true, + "id": 292, + "linearizedBaseContracts": [ + 292 + ], + "name": "ECDSA", + "nameLocation": "272:5:2", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 169, + "nodeType": "Block", + "src": "1375:1154:2", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 122, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 117, + "src": "1582:9:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1582:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "3635", + "id": 124, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1602:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_65_by_1", + "typeString": "int_const 65" + }, + "value": "65" + }, + "src": "1582:22:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 144, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 117, + "src": "2061:9:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2061:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "3634", + "id": 146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2081:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "2061:22:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 166, + "nodeType": "Block", + "src": "2457:66:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "45434453413a20696e76616c6964207369676e6174757265206c656e677468", + "id": 163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2478:33:2", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77", + "typeString": "literal_string \"ECDSA: invalid signature length\"" + }, + "value": "ECDSA: invalid signature length" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77", + "typeString": "literal_string \"ECDSA: invalid signature length\"" + } + ], + "id": 162, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "2471:6:2", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2471:41:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 165, + "nodeType": "ExpressionStatement", + "src": "2471:41:2" + } + ] + }, + "id": 167, + "nodeType": "IfStatement", + "src": "2057:466:2", + "trueBody": { + "id": 161, + "nodeType": "Block", + "src": "2085:366:2", + "statements": [ + { + "assignments": [ + 149 + ], + "declarations": [ + { + "constant": false, + "id": 149, + "mutability": "mutable", + "name": "r", + "nameLocation": "2107:1:2", + "nodeType": "VariableDeclaration", + "scope": 161, + "src": "2099:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 148, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2099:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 150, + "nodeType": "VariableDeclarationStatement", + "src": "2099:9:2" + }, + { + "assignments": [ + 152 + ], + "declarations": [ + { + "constant": false, + "id": 152, + "mutability": "mutable", + "name": "vs", + "nameLocation": "2130:2:2", + "nodeType": "VariableDeclaration", + "scope": 161, + "src": "2122:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 151, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2122:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 153, + "nodeType": "VariableDeclarationStatement", + "src": "2122:10:2" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "2286:114:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2304:32:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nodeType": "YulIdentifier", + "src": "2319:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2330:4:2", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2315:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "2315:20:2" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2309:5:2" + }, + "nodeType": "YulFunctionCall", + "src": "2309:27:2" + }, + "variableNames": [ + { + "name": "r", + "nodeType": "YulIdentifier", + "src": "2304:1:2" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2353:33:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nodeType": "YulIdentifier", + "src": "2369:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2380:4:2", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2365:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "2365:20:2" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2359:5:2" + }, + "nodeType": "YulFunctionCall", + "src": "2359:27:2" + }, + "variableNames": [ + { + "name": "vs", + "nodeType": "YulIdentifier", + "src": "2353:2:2" + } + ] + } + ] + }, + "evmVersion": "london", + "externalReferences": [ + { + "declaration": 149, + "isOffset": false, + "isSlot": false, + "src": "2304:1:2", + "valueSize": 1 + }, + { + "declaration": 117, + "isOffset": false, + "isSlot": false, + "src": "2319:9:2", + "valueSize": 1 + }, + { + "declaration": 117, + "isOffset": false, + "isSlot": false, + "src": "2369:9:2", + "valueSize": 1 + }, + { + "declaration": 152, + "isOffset": false, + "isSlot": false, + "src": "2353:2:2", + "valueSize": 1 + } + ], + "id": 154, + "nodeType": "InlineAssembly", + "src": "2277:123:2" + }, + { + "expression": { + "arguments": [ + { + "id": 156, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 115, + "src": "2428:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 157, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "2434:1:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 158, + "name": "vs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 152, + "src": "2437:2:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 155, + "name": "recover", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 170, + 197, + 254 + ], + "referencedDeclaration": 197, + "src": "2420:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,bytes32) pure returns (address)" + } + }, + "id": 159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2420:20:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 121, + "id": 160, + "nodeType": "Return", + "src": "2413:27:2" + } + ] + } + }, + "id": 168, + "nodeType": "IfStatement", + "src": "1578:945:2", + "trueBody": { + "id": 143, + "nodeType": "Block", + "src": "1606:445:2", + "statements": [ + { + "assignments": [ + 127 + ], + "declarations": [ + { + "constant": false, + "id": 127, + "mutability": "mutable", + "name": "r", + "nameLocation": "1628:1:2", + "nodeType": "VariableDeclaration", + "scope": 143, + "src": "1620:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 126, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1620:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 128, + "nodeType": "VariableDeclarationStatement", + "src": "1620:9:2" + }, + { + "assignments": [ + 130 + ], + "declarations": [ + { + "constant": false, + "id": 130, + "mutability": "mutable", + "name": "s", + "nameLocation": "1651:1:2", + "nodeType": "VariableDeclaration", + "scope": 143, + "src": "1643:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 129, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1643:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 131, + "nodeType": "VariableDeclarationStatement", + "src": "1643:9:2" + }, + { + "assignments": [ + 133 + ], + "declarations": [ + { + "constant": false, + "id": 133, + "mutability": "mutable", + "name": "v", + "nameLocation": "1672:1:2", + "nodeType": "VariableDeclaration", + "scope": 143, + "src": "1666:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 132, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1666:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "id": 134, + "nodeType": "VariableDeclarationStatement", + "src": "1666:7:2" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "1827:171:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1845:32:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nodeType": "YulIdentifier", + "src": "1860:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1871:4:2", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1856:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1856:20:2" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1850:5:2" + }, + "nodeType": "YulFunctionCall", + "src": "1850:27:2" + }, + "variableNames": [ + { + "name": "r", + "nodeType": "YulIdentifier", + "src": "1845:1:2" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1894:32:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nodeType": "YulIdentifier", + "src": "1909:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1920:4:2", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1905:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1905:20:2" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1899:5:2" + }, + "nodeType": "YulFunctionCall", + "src": "1899:27:2" + }, + "variableNames": [ + { + "name": "s", + "nodeType": "YulIdentifier", + "src": "1894:1:2" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1943:41:2", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1953:1:2", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nodeType": "YulIdentifier", + "src": "1966:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1977:4:2", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1962:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1962:20:2" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1956:5:2" + }, + "nodeType": "YulFunctionCall", + "src": "1956:27:2" + } + ], + "functionName": { + "name": "byte", + "nodeType": "YulIdentifier", + "src": "1948:4:2" + }, + "nodeType": "YulFunctionCall", + "src": "1948:36:2" + }, + "variableNames": [ + { + "name": "v", + "nodeType": "YulIdentifier", + "src": "1943:1:2" + } + ] + } + ] + }, + "evmVersion": "london", + "externalReferences": [ + { + "declaration": 127, + "isOffset": false, + "isSlot": false, + "src": "1845:1:2", + "valueSize": 1 + }, + { + "declaration": 130, + "isOffset": false, + "isSlot": false, + "src": "1894:1:2", + "valueSize": 1 + }, + { + "declaration": 117, + "isOffset": false, + "isSlot": false, + "src": "1860:9:2", + "valueSize": 1 + }, + { + "declaration": 117, + "isOffset": false, + "isSlot": false, + "src": "1909:9:2", + "valueSize": 1 + }, + { + "declaration": 117, + "isOffset": false, + "isSlot": false, + "src": "1966:9:2", + "valueSize": 1 + }, + { + "declaration": 133, + "isOffset": false, + "isSlot": false, + "src": "1943:1:2", + "valueSize": 1 + } + ], + "id": 135, + "nodeType": "InlineAssembly", + "src": "1818:180:2" + }, + { + "expression": { + "arguments": [ + { + "id": 137, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 115, + "src": "2026:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 138, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 133, + "src": "2032:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 139, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "2035:1:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 140, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "2038:1:2", + "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": 136, + "name": "recover", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 170, + 197, + 254 + ], + "referencedDeclaration": 254, + "src": "2018:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2018:22:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 121, + "id": 142, + "nodeType": "Return", + "src": "2011:29:2" + } + ] + } + } + ] + }, + "documentation": { + "id": 113, + "nodeType": "StructuredDocumentation", + "src": "284:999:2", + "text": " @dev Returns the address that signed a hashed message (`hash`) with\n `signature`. This address can then be used for verification purposes.\n The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {toEthSignedMessageHash} on it.\n Documentation for signature generation:\n - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]" + }, + "id": 170, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recover", + "nameLocation": "1297:7:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 118, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 115, + "mutability": "mutable", + "name": "hash", + "nameLocation": "1313:4:2", + "nodeType": "VariableDeclaration", + "scope": 170, + "src": "1305:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 114, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1305:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 117, + "mutability": "mutable", + "name": "signature", + "nameLocation": "1332:9:2", + "nodeType": "VariableDeclaration", + "scope": 170, + "src": "1319:22:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 116, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1319:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1304:38:2" + }, + "returnParameters": { + "id": 121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 120, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 170, + "src": "1366:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 119, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1366:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1365:9:2" + }, + "scope": 292, + "src": "1288:1241:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 196, + "nodeType": "Block", + "src": "2896:243:2", + "statements": [ + { + "assignments": [ + 183 + ], + "declarations": [ + { + "constant": false, + "id": 183, + "mutability": "mutable", + "name": "s", + "nameLocation": "2914:1:2", + "nodeType": "VariableDeclaration", + "scope": 196, + "src": "2906:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 182, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2906:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 184, + "nodeType": "VariableDeclarationStatement", + "src": "2906:9:2" + }, + { + "assignments": [ + 186 + ], + "declarations": [ + { + "constant": false, + "id": 186, + "mutability": "mutable", + "name": "v", + "nameLocation": "2931:1:2", + "nodeType": "VariableDeclaration", + "scope": 196, + "src": "2925:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 185, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2925:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "id": 187, + "nodeType": "VariableDeclarationStatement", + "src": "2925:7:2" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "2951:143:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2965:80:2", + "value": { + "arguments": [ + { + "name": "vs", + "nodeType": "YulIdentifier", + "src": "2974:2:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2978:66:2", + "type": "", + "value": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2970:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "2970:75:2" + }, + "variableNames": [ + { + "name": "s", + "nodeType": "YulIdentifier", + "src": "2965:1:2" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3058:26:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3071:3:2", + "type": "", + "value": "255" + }, + { + "name": "vs", + "nodeType": "YulIdentifier", + "src": "3076:2:2" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "3067:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "3067:12:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3081:2:2", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3063:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "3063:21:2" + }, + "variableNames": [ + { + "name": "v", + "nodeType": "YulIdentifier", + "src": "3058:1:2" + } + ] + } + ] + }, + "evmVersion": "london", + "externalReferences": [ + { + "declaration": 183, + "isOffset": false, + "isSlot": false, + "src": "2965:1:2", + "valueSize": 1 + }, + { + "declaration": 186, + "isOffset": false, + "isSlot": false, + "src": "3058:1:2", + "valueSize": 1 + }, + { + "declaration": 177, + "isOffset": false, + "isSlot": false, + "src": "2974:2:2", + "valueSize": 1 + }, + { + "declaration": 177, + "isOffset": false, + "isSlot": false, + "src": "3076:2:2", + "valueSize": 1 + } + ], + "id": 188, + "nodeType": "InlineAssembly", + "src": "2942:152:2" + }, + { + "expression": { + "arguments": [ + { + "id": 190, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 173, + "src": "3118:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 191, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "3124:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 192, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 175, + "src": "3127:1:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 193, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 183, + "src": "3130:1:2", + "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": 189, + "name": "recover", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 170, + 197, + 254 + ], + "referencedDeclaration": 254, + "src": "3110:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3110:22:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 181, + "id": 195, + "nodeType": "Return", + "src": "3103:29:2" + } + ] + }, + "documentation": { + "id": 171, + "nodeType": "StructuredDocumentation", + "src": "2535:240:2", + "text": " @dev Overload of {ECDSA-recover} that receives the `r` and `vs` short-signature fields separately.\n See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n _Available since v4.2._" + }, + "id": 197, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recover", + "nameLocation": "2789:7:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 178, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 173, + "mutability": "mutable", + "name": "hash", + "nameLocation": "2814:4:2", + "nodeType": "VariableDeclaration", + "scope": 197, + "src": "2806:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 172, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2806:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 175, + "mutability": "mutable", + "name": "r", + "nameLocation": "2836:1:2", + "nodeType": "VariableDeclaration", + "scope": 197, + "src": "2828:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 174, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2828:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 177, + "mutability": "mutable", + "name": "vs", + "nameLocation": "2855:2:2", + "nodeType": "VariableDeclaration", + "scope": 197, + "src": "2847:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 176, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2847:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2796:67:2" + }, + "returnParameters": { + "id": 181, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 180, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 197, + "src": "2887:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 179, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2887:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2886:9:2" + }, + "scope": 292, + "src": "2780:359:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 253, + "nodeType": "Block", + "src": "3397:1354:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 214, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 206, + "src": "4310:1:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4302:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 212, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4302:7:2", + "typeDescriptions": {} + } + }, + "id": 215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4302:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "hexValue": "307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130", + "id": 216, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4316:66:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1", + "typeString": "int_const 5789...(69 digits omitted)...7168" + }, + "value": "0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0" + }, + "src": "4302:80:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45434453413a20696e76616c6964207369676e6174757265202773272076616c7565", + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4396:36:2", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd", + "typeString": "literal_string \"ECDSA: invalid signature 's' value\"" + }, + "value": "ECDSA: invalid signature 's' value" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd", + "typeString": "literal_string \"ECDSA: invalid signature 's' value\"" + } + ], + "id": 211, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4281:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4281:161:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 220, + "nodeType": "ExpressionStatement", + "src": "4281:161:2" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 222, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "4460:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "3237", + "id": 223, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4465:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "src": "4460:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 225, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "4471:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "3238", + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4476:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_28_by_1", + "typeString": "int_const 28" + }, + "value": "28" + }, + "src": "4471:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4460:18:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45434453413a20696e76616c6964207369676e6174757265202776272076616c7565", + "id": 229, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4480:36:2", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4", + "typeString": "literal_string \"ECDSA: invalid signature 'v' value\"" + }, + "value": "ECDSA: invalid signature 'v' value" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4", + "typeString": "literal_string \"ECDSA: invalid signature 'v' value\"" + } + ], + "id": 221, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4452:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4452:65:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 231, + "nodeType": "ExpressionStatement", + "src": "4452:65:2" + }, + { + "assignments": [ + 233 + ], + "declarations": [ + { + "constant": false, + "id": 233, + "mutability": "mutable", + "name": "signer", + "nameLocation": "4620:6:2", + "nodeType": "VariableDeclaration", + "scope": 253, + "src": "4612:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 232, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4612:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 240, + "initialValue": { + "arguments": [ + { + "id": 235, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 200, + "src": "4639:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 236, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "4645:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 237, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 204, + "src": "4648:1:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 238, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 206, + "src": "4651:1:2", + "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": 234, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -6, + "src": "4629:9:2", + "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": 239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4629:24:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4612:41:2" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 242, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 233, + "src": "4671:6:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 245, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4689:1:2", + "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": 244, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4681:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 243, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4681:7:2", + "typeDescriptions": {} + } + }, + "id": 246, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4681:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4671:20:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45434453413a20696e76616c6964207369676e6174757265", + "id": 248, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4693:26:2", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be", + "typeString": "literal_string \"ECDSA: invalid signature\"" + }, + "value": "ECDSA: invalid signature" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be", + "typeString": "literal_string \"ECDSA: invalid signature\"" + } + ], + "id": 241, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4663:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4663:57:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 250, + "nodeType": "ExpressionStatement", + "src": "4663:57:2" + }, + { + "expression": { + "id": 251, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 233, + "src": "4738:6:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 210, + "id": 252, + "nodeType": "Return", + "src": "4731:13:2" + } + ] + }, + "documentation": { + "id": 198, + "nodeType": "StructuredDocumentation", + "src": "3145:115:2", + "text": " @dev Overload of {ECDSA-recover} that receives the `v`, `r` and `s` signature fields separately." + }, + "id": 254, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recover", + "nameLocation": "3274:7:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 207, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 200, + "mutability": "mutable", + "name": "hash", + "nameLocation": "3299:4:2", + "nodeType": "VariableDeclaration", + "scope": 254, + "src": "3291:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 199, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3291:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 202, + "mutability": "mutable", + "name": "v", + "nameLocation": "3319:1:2", + "nodeType": "VariableDeclaration", + "scope": 254, + "src": "3313:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 201, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3313:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 204, + "mutability": "mutable", + "name": "r", + "nameLocation": "3338:1:2", + "nodeType": "VariableDeclaration", + "scope": 254, + "src": "3330:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 203, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3330:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 206, + "mutability": "mutable", + "name": "s", + "nameLocation": "3357:1:2", + "nodeType": "VariableDeclaration", + "scope": 254, + "src": "3349:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 205, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3349:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3281:83:2" + }, + "returnParameters": { + "id": 210, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 209, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 254, + "src": "3388:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 208, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3388:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3387:9:2" + }, + "scope": 292, + "src": "3265:1486:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 270, + "nodeType": "Block", + "src": "5119:187:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "19457468657265756d205369676e6564204d6573736167653a0a3332", + "id": 265, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5257:34:2", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73", + "typeString": "literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a3332\"" + }, + "value": "\u0019Ethereum Signed Message:\n32" + }, + { + "id": 266, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 257, + "src": "5293:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73", + "typeString": "literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a3332\"" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 263, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5240:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 264, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "5240:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5240:58:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 262, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "5230:9:2", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5230:69:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 261, + "id": 269, + "nodeType": "Return", + "src": "5223:76:2" + } + ] + }, + "documentation": { + "id": 255, + "nodeType": "StructuredDocumentation", + "src": "4757:279:2", + "text": " @dev Returns an Ethereum Signed Message, created from a `hash`. This\n produces hash corresponding to the one signed with the\n https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n JSON-RPC method as part of EIP-191.\n See {recover}." + }, + "id": 271, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toEthSignedMessageHash", + "nameLocation": "5050:22:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 258, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 257, + "mutability": "mutable", + "name": "hash", + "nameLocation": "5081:4:2", + "nodeType": "VariableDeclaration", + "scope": 271, + "src": "5073:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 256, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5073:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5072:14:2" + }, + "returnParameters": { + "id": 261, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 260, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 271, + "src": "5110:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 259, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5110:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5109:9:2" + }, + "scope": 292, + "src": "5041:265:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 290, + "nodeType": "Block", + "src": "5747:92:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "1901", + "id": 284, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5791:10:2", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string hex\"1901\"" + }, + "value": "\u0019\u0001" + }, + { + "id": 285, + "name": "domainSeparator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "5803:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 286, + "name": "structHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 276, + "src": "5820:10:2", + "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": 282, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5774:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 283, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "5774:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5774:57:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 281, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "5764:9:2", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5764:68:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 280, + "id": 289, + "nodeType": "Return", + "src": "5757:75:2" + } + ] + }, + "documentation": { + "id": 272, + "nodeType": "StructuredDocumentation", + "src": "5312:328:2", + "text": " @dev Returns an Ethereum Signed Typed Data, created from a\n `domainSeparator` and a `structHash`. This produces hash corresponding\n to the one signed with the\n https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\n JSON-RPC method as part of EIP-712.\n See {recover}." + }, + "id": 291, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toTypedDataHash", + "nameLocation": "5654:15:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 277, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 274, + "mutability": "mutable", + "name": "domainSeparator", + "nameLocation": "5678:15:2", + "nodeType": "VariableDeclaration", + "scope": 291, + "src": "5670:23:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 273, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5670:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 276, + "mutability": "mutable", + "name": "structHash", + "nameLocation": "5703:10:2", + "nodeType": "VariableDeclaration", + "scope": 291, + "src": "5695:18:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 275, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5695:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5669:45:2" + }, + "returnParameters": { + "id": 280, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 279, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 291, + "src": "5738:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 278, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5738:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5737:9:2" + }, + "scope": 292, + "src": "5645:194:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 293, + "src": "264:5577:2", + "usedErrors": [] + } + ], + "src": "33:5809:2" + }, + "id": 2 + }, + "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol", + "exportedSymbols": { + "ECDSA": [ + 292 + ], + "EIP712": [ + 430 + ] + }, + "id": 431, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 294, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:3" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", + "file": "./ECDSA.sol", + "id": 295, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 431, + "sourceUnit": 293, + "src": "58:21:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "EIP712", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 296, + "nodeType": "StructuredDocumentation", + "src": "81:1142:3", + "text": " @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n they need in their contracts using a combination of `abi.encode` and `keccak256`.\n This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n ({_hashTypedDataV4}).\n The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n the chain id to protect against replay attacks on an eventual fork of the chain.\n NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n _Available since v3.4._" + }, + "fullyImplemented": true, + "id": 430, + "linearizedBaseContracts": [ + 430 + ], + "name": "EIP712", + "nameLocation": "1242:6:3", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 298, + "mutability": "immutable", + "name": "_CACHED_DOMAIN_SEPARATOR", + "nameLocation": "1518:24:3", + "nodeType": "VariableDeclaration", + "scope": 430, + "src": "1492:50:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 297, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1492:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 300, + "mutability": "immutable", + "name": "_CACHED_CHAIN_ID", + "nameLocation": "1574:16:3", + "nodeType": "VariableDeclaration", + "scope": 430, + "src": "1548:42:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 299, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1548:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 302, + "mutability": "immutable", + "name": "_HASHED_NAME", + "nameLocation": "1623:12:3", + "nodeType": "VariableDeclaration", + "scope": 430, + "src": "1597:38:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 301, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1597:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 304, + "mutability": "immutable", + "name": "_HASHED_VERSION", + "nameLocation": "1667:15:3", + "nodeType": "VariableDeclaration", + "scope": 430, + "src": "1641:41:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 303, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1641:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 306, + "mutability": "immutable", + "name": "_TYPE_HASH", + "nameLocation": "1714:10:3", + "nodeType": "VariableDeclaration", + "scope": 430, + "src": "1688:36:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 305, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1688:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 363, + "nodeType": "Block", + "src": "2395:509:3", + "statements": [ + { + "assignments": [ + 315 + ], + "declarations": [ + { + "constant": false, + "id": 315, + "mutability": "mutable", + "name": "hashedName", + "nameLocation": "2413:10:3", + "nodeType": "VariableDeclaration", + "scope": 363, + "src": "2405:18:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 314, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2405:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 322, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 319, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 309, + "src": "2442:4:3", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 318, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2436:5:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 317, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2436:5:3", + "typeDescriptions": {} + } + }, + "id": 320, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2436:11:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 316, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2426:9:3", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2426:22:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2405:43:3" + }, + { + "assignments": [ + 324 + ], + "declarations": [ + { + "constant": false, + "id": 324, + "mutability": "mutable", + "name": "hashedVersion", + "nameLocation": "2466:13:3", + "nodeType": "VariableDeclaration", + "scope": 363, + "src": "2458:21:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 323, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2458:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 331, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 328, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 311, + "src": "2498:7:3", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 327, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2492:5:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 326, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2492:5:3", + "typeDescriptions": {} + } + }, + "id": 329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2492:14:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 325, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2482:9:3", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2482:25:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2458:49:3" + }, + { + "assignments": [ + 333 + ], + "declarations": [ + { + "constant": false, + "id": 333, + "mutability": "mutable", + "name": "typeHash", + "nameLocation": "2525:8:3", + "nodeType": "VariableDeclaration", + "scope": 363, + "src": "2517:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 332, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2517:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 337, + "initialValue": { + "arguments": [ + { + "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429", + "id": 335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2559:84:3", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"" + }, + "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"" + } + ], + "id": 334, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2536:9:3", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 336, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2536:117:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2517:136:3" + }, + { + "expression": { + "id": 340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 338, + "name": "_HASHED_NAME", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "2663:12:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 339, + "name": "hashedName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "2678:10:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2663:25:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 341, + "nodeType": "ExpressionStatement", + "src": "2663:25:3" + }, + { + "expression": { + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 342, + "name": "_HASHED_VERSION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 304, + "src": "2698:15:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 343, + "name": "hashedVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 324, + "src": "2716:13:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2698:31:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 345, + "nodeType": "ExpressionStatement", + "src": "2698:31:3" + }, + { + "expression": { + "id": 349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 346, + "name": "_CACHED_CHAIN_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 300, + "src": "2739:16:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 347, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "2758:5:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "2758:13:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2739:32:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 350, + "nodeType": "ExpressionStatement", + "src": "2739:32:3" + }, + { + "expression": { + "id": 357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 351, + "name": "_CACHED_DOMAIN_SEPARATOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "2781:24:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 353, + "name": "typeHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 333, + "src": "2830:8:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 354, + "name": "hashedName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "2840:10:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 355, + "name": "hashedVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 324, + "src": "2852:13:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 352, + "name": "_buildDomainSeparator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 413, + "src": "2808:21:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32,bytes32,bytes32) view returns (bytes32)" + } + }, + "id": 356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2808:58:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2781:85:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 358, + "nodeType": "ExpressionStatement", + "src": "2781:85:3" + }, + { + "expression": { + "id": 361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 359, + "name": "_TYPE_HASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 306, + "src": "2876:10:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 360, + "name": "typeHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 333, + "src": "2889:8:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2876:21:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 362, + "nodeType": "ExpressionStatement", + "src": "2876:21:3" + } + ] + }, + "documentation": { + "id": 307, + "nodeType": "StructuredDocumentation", + "src": "1776:559:3", + "text": " @dev Initializes the domain separator and parameter caches.\n The meaning of `name` and `version` is specified in\n https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n - `version`: the current major version of the signing domain.\n NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n contract upgrade]." + }, + "id": 364, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 312, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 309, + "mutability": "mutable", + "name": "name", + "nameLocation": "2366:4:3", + "nodeType": "VariableDeclaration", + "scope": 364, + "src": "2352:18:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 308, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2352:6:3", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 311, + "mutability": "mutable", + "name": "version", + "nameLocation": "2386:7:3", + "nodeType": "VariableDeclaration", + "scope": 364, + "src": "2372:21:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 310, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2372:6:3", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2351:43:3" + }, + "returnParameters": { + "id": 313, + "nodeType": "ParameterList", + "parameters": [], + "src": "2395:0:3" + }, + "scope": 430, + "src": "2340:564:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 385, + "nodeType": "Block", + "src": "3052:213:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 370, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "3066:5:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "3066:13:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 372, + "name": "_CACHED_CHAIN_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 300, + "src": "3083:16:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3066:33:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 383, + "nodeType": "Block", + "src": "3163:96:3", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 378, + "name": "_TYPE_HASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 306, + "src": "3206:10:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 379, + "name": "_HASHED_NAME", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "3218:12:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 380, + "name": "_HASHED_VERSION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 304, + "src": "3232:15:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 377, + "name": "_buildDomainSeparator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 413, + "src": "3184:21:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32,bytes32,bytes32) view returns (bytes32)" + } + }, + "id": 381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3184:64:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 369, + "id": 382, + "nodeType": "Return", + "src": "3177:71:3" + } + ] + }, + "id": 384, + "nodeType": "IfStatement", + "src": "3062:197:3", + "trueBody": { + "id": 376, + "nodeType": "Block", + "src": "3101:56:3", + "statements": [ + { + "expression": { + "id": 374, + "name": "_CACHED_DOMAIN_SEPARATOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "3122:24:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 369, + "id": 375, + "nodeType": "Return", + "src": "3115:31:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 365, + "nodeType": "StructuredDocumentation", + "src": "2910:75:3", + "text": " @dev Returns the domain separator for the current chain." + }, + "id": 386, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_domainSeparatorV4", + "nameLocation": "2999:18:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 366, + "nodeType": "ParameterList", + "parameters": [], + "src": "3017:2:3" + }, + "returnParameters": { + "id": 369, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 368, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 386, + "src": "3043:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 367, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3043:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3042:9:3" + }, + "scope": 430, + "src": "2990:275:3", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 412, + "nodeType": "Block", + "src": "3420:108:3", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 400, + "name": "typeHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 388, + "src": "3458:8:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 401, + "name": "nameHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 390, + "src": "3468:8:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 402, + "name": "versionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 392, + "src": "3478:11:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 403, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "3491:5:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "3491:13:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 407, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3514:4:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_EIP712_$430", + "typeString": "contract EIP712" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_EIP712_$430", + "typeString": "contract EIP712" + } + ], + "id": 406, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3506:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 405, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3506:7:3", + "typeDescriptions": {} + } + }, + "id": 408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3506:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 398, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3447:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 399, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "3447:10:3", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3447:73:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 397, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3437:9:3", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3437:84:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 396, + "id": 411, + "nodeType": "Return", + "src": "3430:91:3" + } + ] + }, + "id": 413, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_buildDomainSeparator", + "nameLocation": "3280:21:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 393, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 388, + "mutability": "mutable", + "name": "typeHash", + "nameLocation": "3319:8:3", + "nodeType": "VariableDeclaration", + "scope": 413, + "src": "3311:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 387, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3311:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 390, + "mutability": "mutable", + "name": "nameHash", + "nameLocation": "3345:8:3", + "nodeType": "VariableDeclaration", + "scope": 413, + "src": "3337:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 389, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3337:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 392, + "mutability": "mutable", + "name": "versionHash", + "nameLocation": "3371:11:3", + "nodeType": "VariableDeclaration", + "scope": 413, + "src": "3363:19:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 391, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3363:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3301:87:3" + }, + "returnParameters": { + "id": 396, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 395, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 413, + "src": "3411:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 394, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3411:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3410:9:3" + }, + "scope": 430, + "src": "3271:257:3", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 428, + "nodeType": "Block", + "src": "4239:79:3", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 423, + "name": "_domainSeparatorV4", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 386, + "src": "4278:18:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$", + "typeString": "function () view returns (bytes32)" + } + }, + "id": 424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4278:20:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 425, + "name": "structHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "4300:10:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 421, + "name": "ECDSA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 292, + "src": "4256:5:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ECDSA_$292_$", + "typeString": "type(library ECDSA)" + } + }, + "id": 422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toTypedDataHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "4256:21:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32,bytes32) pure returns (bytes32)" + } + }, + "id": 426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4256:55:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 420, + "id": 427, + "nodeType": "Return", + "src": "4249:62:3" + } + ] + }, + "documentation": { + "id": 414, + "nodeType": "StructuredDocumentation", + "src": "3534:614:3", + "text": " @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n function returns the hash of the fully encoded EIP712 message for this domain.\n This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n ```solidity\n bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n keccak256(\"Mail(address to,string contents)\"),\n mailTo,\n keccak256(bytes(mailContents))\n )));\n address signer = ECDSA.recover(digest, signature);\n ```" + }, + "id": 429, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_hashTypedDataV4", + "nameLocation": "4162:16:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 417, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 416, + "mutability": "mutable", + "name": "structHash", + "nameLocation": "4187:10:3", + "nodeType": "VariableDeclaration", + "scope": 429, + "src": "4179:18:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 415, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4179:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4178:20:3" + }, + "returnParameters": { + "id": 420, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 419, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 429, + "src": "4230:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 418, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4230:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4229:9:3" + }, + "scope": 430, + "src": "4153:165:3", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 431, + "src": "1224:3096:3", + "usedErrors": [] + } + ], + "src": "33:4288:3" + }, + "id": 3 + }, + "contracts/Common/Context.sol": { + "ast": { + "absolutePath": "contracts/Common/Context.sol", + "exportedSymbols": { + "Context": [ + 456 + ] + }, + "id": 457, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 432, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:4" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "Context", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 456, + "linearizedBaseContracts": [ + 456 + ], + "name": "Context", + "nameLocation": "577:7:4", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 443, + "nodeType": "Block", + "src": "661:43:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 439, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "686:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "686:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 438, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "678:8:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 437, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "678:8:4", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "678:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 436, + "id": 442, + "nodeType": "Return", + "src": "671:26:4" + } + ] + }, + "id": 444, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nameLocation": "600:10:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 433, + "nodeType": "ParameterList", + "parameters": [], + "src": "610:2:4" + }, + "returnParameters": { + "id": 436, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 435, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 444, + "src": "644:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 434, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "644:15:4", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + } + ], + "src": "643:17:4" + }, + "scope": 456, + "src": "591:113:4", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 454, + "nodeType": "Block", + "src": "775:165:4", + "statements": [ + { + "expression": { + "id": 449, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "785:4:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$456", + "typeString": "contract Context" + } + }, + "id": 450, + "nodeType": "ExpressionStatement", + "src": "785:4:4" + }, + { + "expression": { + "expression": { + "id": 451, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "925:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "src": "925:8:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "functionReturnParameters": 448, + "id": 453, + "nodeType": "Return", + "src": "918:15:4" + } + ] + }, + "id": 455, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nameLocation": "719:8:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 445, + "nodeType": "ParameterList", + "parameters": [], + "src": "727:2:4" + }, + "returnParameters": { + "id": 448, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 447, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 455, + "src": "761:12:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 446, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "761:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "760:14:4" + }, + "scope": 456, + "src": "710:230:4", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 457, + "src": "559:383:4", + "usedErrors": [] + } + ], + "src": "32:910:4" + }, + "id": 4 + }, + "contracts/DEI/DEI.sol": { + "ast": { + "absolutePath": "contracts/DEI/DEI.sol", + "exportedSymbols": { + "AccessControl": [ + 6283 + ], + "Address": [ + 11543 + ], + "Context": [ + 456 + ], + "Counters": [ + 109 + ], + "DEIPool": [ + 3582 + ], + "DEIPoolLibrary": [ + 3879 + ], + "DEIStablecoin": [ + 1365 + ], + "ECDSA": [ + 292 + ], + "EIP712": [ + 430 + ], + "ERC20": [ + 4919 + ], + "ERC20Custom": [ + 5434 + ], + "ERC20Permit": [ + 5997 + ], + "EnumerableSet": [ + 11955 + ], + "IDEIStablecoin": [ + 1530 + ], + "IDEUSToken": [ + 4350 + ], + "IERC20": [ + 5514 + ], + "IERC20Permit": [ + 35 + ], + "IUniswapV2Pair": [ + 8607 + ], + "Math": [ + 6410 + ], + "Oracle": [ + 7078 + ], + "ReserveTracker": [ + 7317 + ], + "SafeMath": [ + 6895 + ], + "TransferHelper": [ + 8767 + ] + }, + "id": 1366, + "license": "GPL-2.0-or-later", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 458, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "80:23:5" + }, + { + "absolutePath": "contracts/DEI/Pools/DEIPool.sol", + "file": "./Pools/DEIPool.sol", + "id": 459, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1366, + "sourceUnit": 3583, + "src": "1442:29:5", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Oracle/Oracle.sol", + "file": "../Oracle/Oracle.sol", + "id": 460, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1366, + "sourceUnit": 7079, + "src": "1472:30:5", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Oracle/ReserveTracker.sol", + "file": "../Oracle/ReserveTracker.sol", + "id": 461, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1366, + "sourceUnit": 7318, + "src": "1503:38:5", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/ERC20/draft-ERC20Permit.sol", + "file": "../ERC20/draft-ERC20Permit.sol", + "id": 462, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1366, + "sourceUnit": 5998, + "src": "1542:40:5", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Governance/AccessControl.sol", + "file": "../Governance/AccessControl.sol", + "id": 463, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1366, + "sourceUnit": 6284, + "src": "1583:41:5", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 464, + "name": "ERC20Permit", + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "1652:11:5" + }, + "id": 465, + "nodeType": "InheritanceSpecifier", + "src": "1652:11:5" + }, + { + "baseName": { + "id": 466, + "name": "AccessControl", + "nodeType": "IdentifierPath", + "referencedDeclaration": 6283, + "src": "1665:13:5" + }, + "id": 467, + "nodeType": "InheritanceSpecifier", + "src": "1665:13:5" + } + ], + "canonicalName": "DEIStablecoin", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 1365, + "linearizedBaseContracts": [ + 1365, + 6283, + 5997, + 430, + 35, + 5434, + 5514, + 456 + ], + "name": "DEIStablecoin", + "nameLocation": "1635:13:5", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 470, + "libraryName": { + "id": 468, + "name": "ECDSA", + "nodeType": "IdentifierPath", + "referencedDeclaration": 292, + "src": "1688:5:5" + }, + "nodeType": "UsingForDirective", + "src": "1682:24:5", + "typeName": { + "id": 469, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1698:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + { + "constant": false, + "functionSelector": "95d89b41", + "id": 472, + "mutability": "mutable", + "name": "symbol", + "nameLocation": "1768:6:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "1754:20:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 471, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1754:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "06fdde03", + "id": 474, + "mutability": "mutable", + "name": "name", + "nameLocation": "1791:4:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "1777:18:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 473, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1777:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "313ce567", + "id": 477, + "mutability": "constant", + "name": "decimals", + "nameLocation": "1820:8:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "1798:35:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 475, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1798:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "hexValue": "3138", + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1831:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "7dc0d1d0", + "id": 479, + "mutability": "mutable", + "name": "oracle", + "nameLocation": "1851:6:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "1836:21:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 478, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1836:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "27daf4f8", + "id": 481, + "mutability": "mutable", + "name": "deus_address", + "nameLocation": "1875:12:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "1860:27:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 480, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1860:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "51e238e3", + "id": 484, + "mutability": "constant", + "name": "genesis_supply", + "nameLocation": "1914:14:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "1890:49:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 482, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1890:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3130303030653138", + "id": 483, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1931:8:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000000000000000000000_by_1", + "typeString": "int_const 10000000000000000000000" + }, + "value": "10000e18" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "4d97897b", + "id": 486, + "mutability": "mutable", + "name": "reserve_tracker_address", + "nameLocation": "2059:23:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "2044:38:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2044:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "d01dd162", + "id": 489, + "mutability": "mutable", + "name": "dei_pools_array", + "nameLocation": "2200:15:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "2183:32:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 487, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2183:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 488, + "nodeType": "ArrayTypeName", + "src": "2183:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "15ea919c", + "id": 493, + "mutability": "mutable", + "name": "dei_pools", + "nameLocation": "2300:9:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "2268:41:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 492, + "keyType": { + "id": 490, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2276:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2268:24:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 491, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2287:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 496, + "mutability": "constant", + "name": "PRICE_PRECISION", + "nameLocation": "2375:15:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "2350:46:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 494, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2350:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "316536", + "id": 495, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2393:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + }, + "visibility": "private" + }, + { + "constant": false, + "functionSelector": "2eb9771b", + "id": 498, + "mutability": "mutable", + "name": "global_collateral_ratio", + "nameLocation": "2415:23:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "2400:38:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 497, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2400:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "f1fc1fff", + "id": 500, + "mutability": "mutable", + "name": "dei_step", + "nameLocation": "2507:8:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "2492:23:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 499, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2492:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "c03f7be3", + "id": 502, + "mutability": "mutable", + "name": "refresh_cooldown", + "nameLocation": "2614:16:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "2599:31:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 501, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2599:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "54505517", + "id": 507, + "mutability": "constant", + "name": "COLLATERAL_RATIO_PAUSER", + "nameLocation": "2733:23:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "2709:86:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 503, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2709:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "434f4c4c41544552414c5f524154494f5f504155534552", + "id": 505, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2769:25:5", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b25402418ad555013210365a422f9f1206b2dd00719998db06f8a1fbe014641b", + "typeString": "literal_string \"COLLATERAL_RATIO_PAUSER\"" + }, + "value": "COLLATERAL_RATIO_PAUSER" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_b25402418ad555013210365a422f9f1206b2dd00719998db06f8a1fbe014641b", + "typeString": "literal_string \"COLLATERAL_RATIO_PAUSER\"" + } + ], + "id": 504, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2759:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2759:36:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "34ddb95d", + "id": 512, + "mutability": "constant", + "name": "TRUSTY_ROLE", + "nameLocation": "2822:11:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "2798:62:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 508, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2798:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "5452555354595f524f4c45", + "id": 510, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2846:13:5", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c", + "typeString": "literal_string \"TRUSTY_ROLE\"" + }, + "value": "TRUSTY_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c", + "typeString": "literal_string \"TRUSTY_ROLE\"" + } + ], + "id": 509, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2836:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 511, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2836:24:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "87a140c3", + "id": 515, + "mutability": "mutable", + "name": "collateral_ratio_paused", + "nameLocation": "2875:23:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "2863:43:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 513, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2863:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": { + "hexValue": "66616c7365", + "id": 514, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2901:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "16b0c846", + "id": 517, + "mutability": "mutable", + "name": "growth_ratio", + "nameLocation": "2954:12:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "2939:27:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 516, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2939:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "f72bd4f0", + "id": 519, + "mutability": "mutable", + "name": "GR_top_band", + "nameLocation": "2984:11:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "2969:26:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 518, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2969:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "349432d9", + "id": 521, + "mutability": "mutable", + "name": "GR_bottom_band", + "nameLocation": "3013:14:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "2998:29:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 520, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2998:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "19d05d09", + "id": 523, + "mutability": "mutable", + "name": "DEI_top_band", + "nameLocation": "3056:12:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "3041:27:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 522, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3041:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "c1e2785b", + "id": 525, + "mutability": "mutable", + "name": "DEI_bottom_band", + "nameLocation": "3086:15:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "3071:30:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 524, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3071:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "c2593c27", + "id": 527, + "mutability": "mutable", + "name": "use_growth_ratio", + "nameLocation": "3130:16:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "3118:28:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 526, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3118:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "9a6f978d", + "id": 529, + "mutability": "mutable", + "name": "DIP", + "nameLocation": "3161:3:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "3149:15:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 528, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3149:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 542, + "nodeType": "Block", + "src": "3230:107:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 532, + "name": "dei_pools", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "3246:9:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 535, + "indexExpression": { + "expression": { + "id": 533, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3256:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3256:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3246:21:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "74727565", + "id": 536, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3271:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "3246:29:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4445493a206f6e6c792064656920706f6f6c732063616e2063616c6c20746869732066756e6374696f6e", + "id": 538, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3280:44:5", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cd3981bc95962e0a9b20d76af41ca9bc6eca9273045b5feb5b9ab06e8f37766c", + "typeString": "literal_string \"DEI: only dei pools can call this function\"" + }, + "value": "DEI: only dei pools can call this function" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cd3981bc95962e0a9b20d76af41ca9bc6eca9273045b5feb5b9ab06e8f37766c", + "typeString": "literal_string \"DEI: only dei pools can call this function\"" + } + ], + "id": 531, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3234:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3234:94:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 540, + "nodeType": "ExpressionStatement", + "src": "3234:94:5" + }, + { + "id": 541, + "nodeType": "PlaceholderStatement", + "src": "3332:1:5" + } + ] + }, + "id": 543, + "name": "onlyPools", + "nameLocation": "3218:9:5", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 530, + "nodeType": "ParameterList", + "parameters": [], + "src": "3227:2:5" + }, + "src": "3209:128:5", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 555, + "nodeType": "Block", + "src": "3362:94:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 547, + "name": "TRUSTY_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 512, + "src": "3386:11:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 548, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3399:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3399:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 546, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6072, + "src": "3378:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3378:32:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4445493a20796f7520617265206e6f7420746865206f776e6572", + "id": 551, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3415:28:5", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_31b4913319800bc14f3ac10959626412727e6e236f8f0f67dfae737e33f2a9ea", + "typeString": "literal_string \"DEI: you are not the owner\"" + }, + "value": "DEI: you are not the owner" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_31b4913319800bc14f3ac10959626412727e6e236f8f0f67dfae737e33f2a9ea", + "typeString": "literal_string \"DEI: you are not the owner\"" + } + ], + "id": 545, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3366:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3366:81:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 553, + "nodeType": "ExpressionStatement", + "src": "3366:81:5" + }, + { + "id": 554, + "nodeType": "PlaceholderStatement", + "src": "3451:1:5" + } + ] + }, + "id": 556, + "name": "onlyTrusty", + "nameLocation": "3349:10:5", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 544, + "nodeType": "ParameterList", + "parameters": [], + "src": "3359:2:5" + }, + "src": "3340:116:5", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 626, + "nodeType": "Block", + "src": "3609:725:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 569, + "name": "_trusty_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 562, + "src": "3625:15:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 572, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3652:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 571, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3644:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 570, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3644:7:5", + "typeDescriptions": {} + } + }, + "id": 573, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3644:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3625:29:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4445493a207a65726f20616464726573732064657465637465642e", + "id": 575, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3659:29:5", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fd12587f28f7579f9edc9dfa9f560dc6a63e780125a45e58a8d654bac967dbf7", + "typeString": "literal_string \"DEI: zero address detected.\"" + }, + "value": "DEI: zero address detected." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fd12587f28f7579f9edc9dfa9f560dc6a63e780125a45e58a8d654bac967dbf7", + "typeString": "literal_string \"DEI: zero address detected.\"" + } + ], + "id": 568, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3613:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3613:79:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 577, + "nodeType": "ExpressionStatement", + "src": "3613:79:5" + }, + { + "expression": { + "id": 580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 578, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 474, + "src": "3696:4:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 579, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 558, + "src": "3703:5:5", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "3696:12:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 581, + "nodeType": "ExpressionStatement", + "src": "3696:12:5" + }, + { + "expression": { + "id": 584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 582, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 472, + "src": "3712:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 583, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 560, + "src": "3721:7:5", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "3712:16:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 585, + "nodeType": "ExpressionStatement", + "src": "3712:16:5" + }, + { + "expression": { + "id": 588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 586, + "name": "dei_step", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 500, + "src": "3732:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "32353030", + "id": 587, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3743:4:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_2500_by_1", + "typeString": "int_const 2500" + }, + "value": "2500" + }, + "src": "3732:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 589, + "nodeType": "ExpressionStatement", + "src": "3732:15:5" + }, + { + "expression": { + "id": 592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 590, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "3794:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "383030303030", + "id": 591, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3820:6:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_800000_by_1", + "typeString": "int_const 800000" + }, + "value": "800000" + }, + "src": "3794:32:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 593, + "nodeType": "ExpressionStatement", + "src": "3794:32:5" + }, + { + "expression": { + "id": 596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 594, + "name": "refresh_cooldown", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 502, + "src": "3902:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "333030", + "id": 595, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3921:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_300_by_1", + "typeString": "int_const 300" + }, + "value": "300" + }, + "src": "3902:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 597, + "nodeType": "ExpressionStatement", + "src": "3902:22:5" + }, + { + "expression": { + "arguments": [ + { + "id": 599, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6026, + "src": "4011:18:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 600, + "name": "_trusty_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 562, + "src": "4031:15:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 598, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6209, + "src": "4000:10:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4000:47:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 602, + "nodeType": "ExpressionStatement", + "src": "4000:47:5" + }, + { + "expression": { + "arguments": [ + { + "id": 604, + "name": "COLLATERAL_RATIO_PAUSER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 507, + "src": "4062:23:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 605, + "name": "_trusty_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 562, + "src": "4087:15:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 603, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6209, + "src": "4051:10:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4051:52:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 607, + "nodeType": "ExpressionStatement", + "src": "4051:52:5" + }, + { + "expression": { + "arguments": [ + { + "id": 609, + "name": "TRUSTY_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 512, + "src": "4118:11:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 610, + "name": "_trusty_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 562, + "src": "4131:15:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 608, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6209, + "src": "4107:10:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4107:40:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 612, + "nodeType": "ExpressionStatement", + "src": "4107:40:5" + }, + { + "expression": { + "arguments": [ + { + "id": 614, + "name": "_trusty_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 562, + "src": "4157:15:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 615, + "name": "genesis_supply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 484, + "src": "4174:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 613, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5245, + "src": "4151:5:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4151:38:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 617, + "nodeType": "ExpressionStatement", + "src": "4151:38:5" + }, + { + "expression": { + "id": 620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 618, + "name": "GR_top_band", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 519, + "src": "4286:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31303030", + "id": 619, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4300:4:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + }, + "value": "1000" + }, + "src": "4286:18:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 621, + "nodeType": "ExpressionStatement", + "src": "4286:18:5" + }, + { + "expression": { + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 622, + "name": "GR_bottom_band", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 521, + "src": "4308:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31303030", + "id": 623, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4325:4:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + }, + "value": "1000" + }, + "src": "4308:21:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 625, + "nodeType": "ExpressionStatement", + "src": "4308:21:5" + } + ] + }, + "id": 627, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 565, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 474, + "src": "3603:4:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + } + ], + "id": 566, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 564, + "name": "ERC20Permit", + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "3591:11:5" + }, + "nodeType": "ModifierInvocation", + "src": "3591:17:5" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 563, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 558, + "mutability": "mutable", + "name": "_name", + "nameLocation": "3530:5:5", + "nodeType": "VariableDeclaration", + "scope": 627, + "src": "3516:19:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 557, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3516:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 560, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "3553:7:5", + "nodeType": "VariableDeclaration", + "scope": 627, + "src": "3539:21:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 559, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3539:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 562, + "mutability": "mutable", + "name": "_trusty_address", + "nameLocation": "3572:15:5", + "nodeType": "VariableDeclaration", + "scope": 627, + "src": "3564:23:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 561, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3564:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3512:78:5" + }, + "returnParameters": { + "id": 567, + "nodeType": "ParameterList", + "parameters": [], + "src": "3609:0:5" + }, + "scope": 1365, + "src": "3501:833:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 647, + "nodeType": "Block", + "src": "4511:76:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 641, + "name": "sighash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 629, + "src": "4544:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toEthSignedMessageHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 271, + "src": "4544:30:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (bytes32)" + } + }, + "id": 643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4544:32:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 644, + "name": "sigs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 632, + "src": "4578:4:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + ], + "expression": { + "arguments": [ + { + "id": 638, + "name": "oracle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "4529:6:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 637, + "name": "Oracle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7078, + "src": "4522:6:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Oracle_$7078_$", + "typeString": "type(contract Oracle)" + } + }, + "id": 639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4522:14:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_Oracle_$7078", + "typeString": "contract Oracle" + } + }, + "id": 640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "verify", + "nodeType": "MemberAccess", + "referencedDeclaration": 7054, + "src": "4522:21:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes memory[] memory) view external returns (bool)" + } + }, + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4522:61:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 636, + "id": 646, + "nodeType": "Return", + "src": "4515:68:5" + } + ] + }, + "functionSelector": "6793f0ac", + "id": 648, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verify_price", + "nameLocation": "4424:12:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 633, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 629, + "mutability": "mutable", + "name": "sighash", + "nameLocation": "4445:7:5", + "nodeType": "VariableDeclaration", + "scope": 648, + "src": "4437:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 628, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4437:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 632, + "mutability": "mutable", + "name": "sigs", + "nameLocation": "4471:4:5", + "nodeType": "VariableDeclaration", + "scope": 648, + "src": "4454:21:5", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 630, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4454:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 631, + "nodeType": "ArrayTypeName", + "src": "4454:7:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "4436:40:5" + }, + "returnParameters": { + "id": 636, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 635, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 648, + "src": "4504:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 634, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4504:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4503:6:5" + }, + "scope": 1365, + "src": "4415:172:5", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 668, + "nodeType": "Block", + "src": "4870:180:5", + "statements": [ + { + "expression": { + "components": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 660, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4955, + "src": "4886:11:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4886:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 662, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "4921:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 664, + "name": "collat_usd_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 651, + "src": "5000:16:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + ], + "id": 663, + "name": "globalCollateralValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 722, + "src": "4978:21:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (uint256[] memory) view returns (uint256)" + } + }, + "id": 665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4978:39:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 666, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4881:165:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256)" + } + }, + "functionReturnParameters": 659, + "id": 667, + "nodeType": "Return", + "src": "4874:172:5" + } + ] + }, + "functionSelector": "ae773029", + "id": 669, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "dei_info", + "nameLocation": "4758:8:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 652, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 651, + "mutability": "mutable", + "name": "collat_usd_price", + "nameLocation": "4784:16:5", + "nodeType": "VariableDeclaration", + "scope": 669, + "src": "4767:33:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 649, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4767:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 650, + "nodeType": "ArrayTypeName", + "src": "4767:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "4766:35:5" + }, + "returnParameters": { + "id": 659, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 654, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 669, + "src": "4833:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 653, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4833:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 656, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 669, + "src": "4845:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 655, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4845:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 658, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 669, + "src": "4857:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 657, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4857:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4828:40:5" + }, + "scope": 1365, + "src": "4749:301:5", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 721, + "nodeType": "Block", + "src": "5243:354:5", + "statements": [ + { + "assignments": [ + 678 + ], + "declarations": [ + { + "constant": false, + "id": 678, + "mutability": "mutable", + "name": "total_collateral_value_d18", + "nameLocation": "5255:26:5", + "nodeType": "VariableDeclaration", + "scope": 721, + "src": "5247:34:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 677, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5247:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 680, + "initialValue": { + "hexValue": "30", + "id": 679, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5284:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "5247:38:5" + }, + { + "body": { + "id": 717, + "nodeType": "Block", + "src": "5343:214:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 692, + "name": "dei_pools_array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "5381:15:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 694, + "indexExpression": { + "id": 693, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "5397:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5381:18:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 697, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5411:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5403:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 695, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5403:7:5", + "typeDescriptions": {} + } + }, + "id": 698, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5403:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5381:32:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 716, + "nodeType": "IfStatement", + "src": "5377:176:5", + "trueBody": { + "id": 715, + "nodeType": "Block", + "src": "5415:138:5", + "statements": [ + { + "expression": { + "id": 713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 700, + "name": "total_collateral_value_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 678, + "src": "5421:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 701, + "name": "total_collateral_value_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 678, + "src": "5450:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "arguments": [ + { + "baseExpression": { + "id": 708, + "name": "collat_usd_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 672, + "src": "5527:16:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 710, + "indexExpression": { + "id": 709, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "5544:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5527:19:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 703, + "name": "dei_pools_array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "5487:15:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 705, + "indexExpression": { + "id": 704, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "5503:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5487:18:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 702, + "name": "DEIPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3582, + "src": "5479:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_DEIPool_$3582_$", + "typeString": "type(contract DEIPool)" + } + }, + "id": 706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5479:27:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEIPool_$3582", + "typeString": "contract DEIPool" + } + }, + "id": 707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "collatDollarBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 1873, + "src": "5479:47:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view external returns (uint256)" + } + }, + "id": 711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5479:68:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5450:97:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5421:126:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 714, + "nodeType": "ExpressionStatement", + "src": "5421:126:5" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 685, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "5310:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 686, + "name": "dei_pools_array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "5314:15:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5314:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5310:26:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 718, + "initializationExpression": { + "assignments": [ + 682 + ], + "declarations": [ + { + "constant": false, + "id": 682, + "mutability": "mutable", + "name": "i", + "nameLocation": "5303:1:5", + "nodeType": "VariableDeclaration", + "scope": 718, + "src": "5295:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 681, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5295:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 684, + "initialValue": { + "hexValue": "30", + "id": 683, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5307:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "5295:13:5" + }, + "loopExpression": { + "expression": { + "id": 690, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "5338:3:5", + "subExpression": { + "id": 689, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "5338:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 691, + "nodeType": "ExpressionStatement", + "src": "5338:3:5" + }, + "nodeType": "ForStatement", + "src": "5290:267:5" + }, + { + "expression": { + "id": 719, + "name": "total_collateral_value_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 678, + "src": "5567:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 676, + "id": 720, + "nodeType": "Return", + "src": "5560:33:5" + } + ] + }, + "functionSelector": "2480fcea", + "id": 722, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "globalCollateralValue", + "nameLocation": "5156:21:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 673, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 672, + "mutability": "mutable", + "name": "collat_usd_price", + "nameLocation": "5195:16:5", + "nodeType": "VariableDeclaration", + "scope": 722, + "src": "5178:33:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 670, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5178:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 671, + "nodeType": "ArrayTypeName", + "src": "5178:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "5177:35:5" + }, + "returnParameters": { + "id": 676, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 675, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 722, + "src": "5234:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 674, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5234:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5233:9:5" + }, + "scope": 1365, + "src": "5147:450:5", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 733, + "nodeType": "Block", + "src": "5652:67:5", + "statements": [ + { + "assignments": [ + 728 + ], + "declarations": [ + { + "constant": false, + "id": 728, + "mutability": "mutable", + "name": "id", + "nameLocation": "5664:2:5", + "nodeType": "VariableDeclaration", + "scope": 733, + "src": "5656:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 727, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5656:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 729, + "nodeType": "VariableDeclarationStatement", + "src": "5656:10:5" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "5679:24:5", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5684:15:5", + "value": { + "arguments": [], + "functionName": { + "name": "chainid", + "nodeType": "YulIdentifier", + "src": "5690:7:5" + }, + "nodeType": "YulFunctionCall", + "src": "5690:9:5" + }, + "variableNames": [ + { + "name": "id", + "nodeType": "YulIdentifier", + "src": "5684:2:5" + } + ] + } + ] + }, + "evmVersion": "london", + "externalReferences": [ + { + "declaration": 728, + "isOffset": false, + "isSlot": false, + "src": "5684:2:5", + "valueSize": 1 + } + ], + "id": 730, + "nodeType": "InlineAssembly", + "src": "5670:33:5" + }, + { + "expression": { + "id": 731, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 728, + "src": "5713:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 726, + "id": 732, + "nodeType": "Return", + "src": "5706:9:5" + } + ] + }, + "functionSelector": "564b81ef", + "id": 734, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getChainID", + "nameLocation": "5609:10:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 723, + "nodeType": "ParameterList", + "parameters": [], + "src": "5619:2:5" + }, + "returnParameters": { + "id": 726, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 725, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 734, + "src": "5643:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 724, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5643:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5642:9:5" + }, + "scope": 1365, + "src": "5600:119:5", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "2258750a", + "id": 736, + "mutability": "mutable", + "name": "last_call_time", + "nameLocation": "5904:14:5", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "5889:29:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 735, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5889:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 915, + "nodeType": "Block", + "src": "6152:1894:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 749, + "name": "collateral_ratio_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "6164:23:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "66616c7365", + "id": 750, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6191:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "6164:32:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4445493a3a436f6c6c61746572616c20526174696f20686173206265656e20706175736564", + "id": 752, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6198:39:5", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d7b768e1373234e0883c129bd428f5c8535c242446bb3a854d95826c27f5ad93", + "typeString": "literal_string \"DEI::Collateral Ratio has been paused\"" + }, + "value": "DEI::Collateral Ratio has been paused" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d7b768e1373234e0883c129bd428f5c8535c242446bb3a854d95826c27f5ad93", + "typeString": "literal_string \"DEI::Collateral Ratio has been paused\"" + } + ], + "id": 748, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6156:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6156:82:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 754, + "nodeType": "ExpressionStatement", + "src": "6156:82:5" + }, + { + "assignments": [ + 756 + ], + "declarations": [ + { + "constant": false, + "id": 756, + "mutability": "mutable", + "name": "time_elapsed", + "nameLocation": "6250:12:5", + "nodeType": "VariableDeclaration", + "scope": 915, + "src": "6242:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 755, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6242:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 762, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "expression": { + "id": 757, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "6266:5:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "6266:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 759, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6265:17:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 760, + "name": "last_call_time", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 736, + "src": "6285:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6265:34:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6242:57:5" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 764, + "name": "time_elapsed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 756, + "src": "6311:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 765, + "name": "refresh_cooldown", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 502, + "src": "6327:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6311:32:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4445493a3a496e7465726e616c20636f6f6c646f776e206e6f7420706173736564", + "id": 767, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6345:35:5", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2c2a9a3e1243d1c4990a92a49185c5301054f4ed462802e7413e97975991ef03", + "typeString": "literal_string \"DEI::Internal cooldown not passed\"" + }, + "value": "DEI::Internal cooldown not passed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2c2a9a3e1243d1c4990a92a49185c5301054f4ed462802e7413e97975991ef03", + "typeString": "literal_string \"DEI::Internal cooldown not passed\"" + } + ], + "id": 763, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6303:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6303:78:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 769, + "nodeType": "ExpressionStatement", + "src": "6303:78:5" + }, + { + "assignments": [ + 771 + ], + "declarations": [ + { + "constant": false, + "id": 771, + "mutability": "mutable", + "name": "deus_reserves", + "nameLocation": "6393:13:5", + "nodeType": "VariableDeclaration", + "scope": 915, + "src": "6385:21:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 770, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6385:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 777, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 773, + "name": "reserve_tracker_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 486, + "src": "6424:23:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 772, + "name": "ReserveTracker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7317, + "src": "6409:14:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ReserveTracker_$7317_$", + "typeString": "type(contract ReserveTracker)" + } + }, + "id": 774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6409:39:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ReserveTracker_$7317", + "typeString": "contract ReserveTracker" + } + }, + "id": 775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getDEUSReserves", + "nodeType": "MemberAccess", + "referencedDeclaration": 7235, + "src": "6409:55:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6409:57:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6385:81:5" + }, + { + "assignments": [ + 779 + ], + "declarations": [ + { + "constant": false, + "id": 779, + "mutability": "mutable", + "name": "sighash", + "nameLocation": "6479:7:5", + "nodeType": "VariableDeclaration", + "scope": 915, + "src": "6471:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 778, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6471:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 795, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 783, + "name": "deus_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 481, + "src": "6527:12:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 784, + "name": "deus_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 738, + "src": "6551:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 787, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "6581:4:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEIStablecoin_$1365", + "typeString": "contract DEIStablecoin" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_DEIStablecoin_$1365", + "typeString": "contract DEIStablecoin" + } + ], + "id": 786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6573:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 785, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6573:7:5", + "typeDescriptions": {} + } + }, + "id": 788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6573:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 789, + "name": "dei_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 740, + "src": "6598:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 790, + "name": "expire_block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 742, + "src": "6619:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 791, + "name": "getChainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 734, + "src": "6643:10:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6643:12:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 781, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "6499:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 782, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "6499:16:5", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6499:167:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 780, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "6489:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6489:178:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6471:196:5" + }, + { + "expression": { + "arguments": [ + { + "id": 797, + "name": "sighash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 779, + "src": "6685:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 798, + "name": "sigs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 745, + "src": "6694:4:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + ], + "id": 796, + "name": "verify_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 648, + "src": "6672:12:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes calldata[] calldata) view returns (bool)" + } + }, + "id": 799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6672:27:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 800, + "nodeType": "ExpressionStatement", + "src": "6672:27:5" + }, + { + "assignments": [ + 802 + ], + "declarations": [ + { + "constant": false, + "id": 802, + "mutability": "mutable", + "name": "deus_liquidity", + "nameLocation": "6712:14:5", + "nodeType": "VariableDeclaration", + "scope": 915, + "src": "6704:22:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 801, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6704:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 806, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 803, + "name": "deus_reserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 771, + "src": "6729:13:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 804, + "name": "deus_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 738, + "src": "6745:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6729:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6704:51:5" + }, + { + "assignments": [ + 808 + ], + "declarations": [ + { + "constant": false, + "id": 808, + "mutability": "mutable", + "name": "dei_supply", + "nameLocation": "6799:10:5", + "nodeType": "VariableDeclaration", + "scope": 915, + "src": "6791:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 807, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6791:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 811, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 809, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4955, + "src": "6812:11:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 810, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6812:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6791:34:5" + }, + { + "assignments": [ + 813 + ], + "declarations": [ + { + "constant": false, + "id": 813, + "mutability": "mutable", + "name": "new_growth_ratio", + "nameLocation": "6838:16:5", + "nodeType": "VariableDeclaration", + "scope": 915, + "src": "6830:24:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 812, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6830:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 817, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 814, + "name": "deus_liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 802, + "src": "6857:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 815, + "name": "dei_supply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 808, + "src": "6874:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6857:27:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6830:54:5" + }, + { + "condition": { + "id": 818, + "name": "DIP", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "6912:3:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 831, + "nodeType": "IfStatement", + "src": "6909:143:5", + "trueBody": { + "id": 830, + "nodeType": "Block", + "src": "6916:136:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 820, + "name": "dei_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 740, + "src": "6929:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 821, + "name": "DEI_top_band", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 523, + "src": "6941:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6929:24:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 825, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 823, + "name": "dei_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 740, + "src": "6957:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 824, + "name": "DEI_bottom_band", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 525, + "src": "6969:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6957:27:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6929:55:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4445493a3a5573652072656672657368436f6c6c61746572616c526174696f207768656e20444549206973206f757473696465206f6620706567", + "id": 827, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6986:60:5", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f1302f3464c1aea577cd673876485194e38e4985225906230482083933ea77bf", + "typeString": "literal_string \"DEI::Use refreshCollateralRatio when DEI is outside of peg\"" + }, + "value": "DEI::Use refreshCollateralRatio when DEI is outside of peg" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f1302f3464c1aea577cd673876485194e38e4985225906230482083933ea77bf", + "typeString": "literal_string \"DEI::Use refreshCollateralRatio when DEI is outside of peg\"" + } + ], + "id": 819, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6921:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6921:126:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 829, + "nodeType": "ExpressionStatement", + "src": "6921:126:5" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 832, + "name": "dei_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 740, + "src": "7109:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 833, + "name": "DEI_top_band", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 523, + "src": "7121:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7109:24:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 842, + "name": "dei_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 740, + "src": "7214:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 843, + "name": "DEI_bottom_band", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 525, + "src": "7226:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7214:27:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "id": 852, + "name": "use_growth_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 527, + "src": "7404:16:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 890, + "nodeType": "IfStatement", + "src": "7401:309:5", + "trueBody": { + "id": 889, + "nodeType": "Block", + "src": "7421:289:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 853, + "name": "new_growth_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 813, + "src": "7429:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 854, + "name": "growth_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 517, + "src": "7448:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "316536", + "id": 855, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7464:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 856, + "name": "GR_top_band", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 519, + "src": "7470:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7464:17:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 858, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7463:19:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7448:34:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "316536", + "id": 860, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7485:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + }, + "src": "7448:40:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7429:59:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 870, + "name": "new_growth_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 813, + "src": "7571:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 878, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 871, + "name": "growth_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 517, + "src": "7590:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "316536", + "id": 872, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7606:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 873, + "name": "GR_bottom_band", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 521, + "src": "7612:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7606:20:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 875, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7605:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7590:37:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "316536", + "id": 877, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7630:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + }, + "src": "7590:43:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7571:62:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 887, + "nodeType": "IfStatement", + "src": "7567:139:5", + "trueBody": { + "id": 886, + "nodeType": "Block", + "src": "7634:72:5", + "statements": [ + { + "expression": { + "id": 884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 880, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "7640:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 881, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "7666:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 882, + "name": "dei_step", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 500, + "src": "7692:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7666:34:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7640:60:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 885, + "nodeType": "ExpressionStatement", + "src": "7640:60:5" + } + ] + } + }, + "id": 888, + "nodeType": "IfStatement", + "src": "7426:280:5", + "trueBody": { + "id": 869, + "nodeType": "Block", + "src": "7489:72:5", + "statements": [ + { + "expression": { + "id": 867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 863, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "7495:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 864, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "7521:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 865, + "name": "dei_step", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 500, + "src": "7547:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7521:34:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7495:60:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 868, + "nodeType": "ExpressionStatement", + "src": "7495:60:5" + } + ] + } + } + ] + } + }, + "id": 891, + "nodeType": "IfStatement", + "src": "7210:500:5", + "trueBody": { + "id": 851, + "nodeType": "Block", + "src": "7242:153:5", + "statements": [ + { + "expression": { + "id": 849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 845, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "7247:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 846, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "7273:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 847, + "name": "dei_step", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 500, + "src": "7299:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7273:34:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7247:60:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 850, + "nodeType": "ExpressionStatement", + "src": "7247:60:5" + } + ] + } + }, + "id": 892, + "nodeType": "IfStatement", + "src": "7106:604:5", + "trueBody": { + "id": 841, + "nodeType": "Block", + "src": "7134:70:5", + "statements": [ + { + "expression": { + "id": 839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 835, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "7139:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 836, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "7165:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 837, + "name": "dei_step", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 500, + "src": "7191:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7165:34:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7139:60:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 840, + "nodeType": "ExpressionStatement", + "src": "7139:60:5" + } + ] + } + }, + { + "expression": { + "id": 895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 893, + "name": "growth_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 517, + "src": "7714:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 894, + "name": "new_growth_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 813, + "src": "7729:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7714:31:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 896, + "nodeType": "ExpressionStatement", + "src": "7714:31:5" + }, + { + "expression": { + "id": 900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 897, + "name": "last_call_time", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 736, + "src": "7749:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 898, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "7766:5:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "7766:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7749:32:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 901, + "nodeType": "ExpressionStatement", + "src": "7749:32:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 902, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "7914:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "316536", + "id": 903, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7940:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + }, + "src": "7914:29:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 910, + "nodeType": "IfStatement", + "src": "7911:72:5", + "trueBody": { + "id": 909, + "nodeType": "Block", + "src": "7944:39:5", + "statements": [ + { + "expression": { + "id": 907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 905, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "7949:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "316536", + "id": 906, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7975:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + }, + "src": "7949:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 908, + "nodeType": "ExpressionStatement", + "src": "7949:29:5" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 912, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "8017:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 911, + "name": "CollateralRatioRefreshed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1306, + "src": "7992:24:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 913, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7992:49:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 914, + "nodeType": "EmitStatement", + "src": "7987:54:5" + } + ] + }, + "functionSelector": "ab3d1bb6", + "id": 916, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "refreshCollateralRatio", + "nameLocation": "6042:22:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 746, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 738, + "mutability": "mutable", + "name": "deus_price", + "nameLocation": "6070:10:5", + "nodeType": "VariableDeclaration", + "scope": 916, + "src": "6065:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 737, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6065:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 740, + "mutability": "mutable", + "name": "dei_price", + "nameLocation": "6087:9:5", + "nodeType": "VariableDeclaration", + "scope": 916, + "src": "6082:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 739, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6082:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 742, + "mutability": "mutable", + "name": "expire_block", + "nameLocation": "6106:12:5", + "nodeType": "VariableDeclaration", + "scope": 916, + "src": "6098:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 741, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6098:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 745, + "mutability": "mutable", + "name": "sigs", + "nameLocation": "6137:4:5", + "nodeType": "VariableDeclaration", + "scope": 916, + "src": "6120:21:5", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 743, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6120:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 744, + "nodeType": "ArrayTypeName", + "src": "6120:7:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "6064:78:5" + }, + "returnParameters": { + "id": 747, + "nodeType": "ParameterList", + "parameters": [], + "src": "6152:0:5" + }, + "scope": 1365, + "src": "6033:2013:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 931, + "nodeType": "Block", + "src": "8120:90:5", + "statements": [ + { + "expression": { + "id": 925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 923, + "name": "use_growth_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 527, + "src": "8124:16:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 924, + "name": "_use_growth_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 918, + "src": "8143:17:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8124:36:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 926, + "nodeType": "ExpressionStatement", + "src": "8124:36:5" + }, + { + "eventCall": { + "arguments": [ + { + "id": 928, + "name": "_use_growth_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 918, + "src": "8188:17:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 927, + "name": "UseGrowthRatioSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1348, + "src": "8170:17:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool)" + } + }, + "id": 929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8170:36:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 930, + "nodeType": "EmitStatement", + "src": "8165:41:5" + } + ] + }, + "functionSelector": "e6344628", + "id": 932, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 921, + "kind": "modifierInvocation", + "modifierName": { + "id": 920, + "name": "onlyTrusty", + "nodeType": "IdentifierPath", + "referencedDeclaration": 556, + "src": "8109:10:5" + }, + "nodeType": "ModifierInvocation", + "src": "8109:10:5" + } + ], + "name": "setUseGrowthRatio", + "nameLocation": "8058:17:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 919, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 918, + "mutability": "mutable", + "name": "_use_growth_ratio", + "nameLocation": "8081:17:5", + "nodeType": "VariableDeclaration", + "scope": 932, + "src": "8076:22:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 917, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8076:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8075:24:5" + }, + "returnParameters": { + "id": 922, + "nodeType": "ParameterList", + "parameters": [], + "src": "8120:0:5" + }, + "scope": 1365, + "src": "8049:161:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 954, + "nodeType": "Block", + "src": "8309:129:5", + "statements": [ + { + "expression": { + "id": 943, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 941, + "name": "GR_top_band", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 519, + "src": "8313:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 942, + "name": "_GR_top_band", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 934, + "src": "8327:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8313:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 944, + "nodeType": "ExpressionStatement", + "src": "8313:26:5" + }, + { + "expression": { + "id": 947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 945, + "name": "GR_bottom_band", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 521, + "src": "8343:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 946, + "name": "_GR_bottom_band", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 936, + "src": "8360:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8343:32:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 948, + "nodeType": "ExpressionStatement", + "src": "8343:32:5" + }, + { + "eventCall": { + "arguments": [ + { + "id": 950, + "name": "_GR_top_band", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 934, + "src": "8404:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 951, + "name": "_GR_bottom_band", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 936, + "src": "8418:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 949, + "name": "GrowthRatioBandSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "8384:18:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8384:50:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 953, + "nodeType": "EmitStatement", + "src": "8379:55:5" + } + ] + }, + "functionSelector": "a085ea7c", + "id": 955, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 939, + "kind": "modifierInvocation", + "modifierName": { + "id": 938, + "name": "onlyTrusty", + "nodeType": "IdentifierPath", + "referencedDeclaration": 556, + "src": "8298:10:5" + }, + "nodeType": "ModifierInvocation", + "src": "8298:10:5" + } + ], + "name": "setGrowthRatioBands", + "nameLocation": "8222:19:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 937, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 934, + "mutability": "mutable", + "name": "_GR_top_band", + "nameLocation": "8250:12:5", + "nodeType": "VariableDeclaration", + "scope": 955, + "src": "8242:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 933, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8242:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 936, + "mutability": "mutable", + "name": "_GR_bottom_band", + "nameLocation": "8272:15:5", + "nodeType": "VariableDeclaration", + "scope": 955, + "src": "8264:23:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 935, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8264:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8241:47:5" + }, + "returnParameters": { + "id": 940, + "nodeType": "ParameterList", + "parameters": [], + "src": "8309:0:5" + }, + "scope": 1365, + "src": "8213:225:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 977, + "nodeType": "Block", + "src": "8525:113:5", + "statements": [ + { + "expression": { + "id": 966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 964, + "name": "DEI_top_band", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 523, + "src": "8529:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 965, + "name": "_top_band", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 957, + "src": "8544:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8529:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 967, + "nodeType": "ExpressionStatement", + "src": "8529:24:5" + }, + { + "expression": { + "id": 970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 968, + "name": "DEI_bottom_band", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 525, + "src": "8557:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 969, + "name": "_bottom_band", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 959, + "src": "8575:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8557:30:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 971, + "nodeType": "ExpressionStatement", + "src": "8557:30:5" + }, + { + "eventCall": { + "arguments": [ + { + "id": 973, + "name": "_top_band", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 957, + "src": "8610:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 974, + "name": "_bottom_band", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 959, + "src": "8621:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 972, + "name": "PriceBandSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1332, + "src": "8597:12:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8597:37:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 976, + "nodeType": "EmitStatement", + "src": "8592:42:5" + } + ] + }, + "functionSelector": "a6959f0f", + "id": 978, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 962, + "kind": "modifierInvocation", + "modifierName": { + "id": 961, + "name": "onlyTrusty", + "nodeType": "IdentifierPath", + "referencedDeclaration": 556, + "src": "8514:10:5" + }, + "nodeType": "ModifierInvocation", + "src": "8514:10:5" + } + ], + "name": "setPriceBands", + "nameLocation": "8450:13:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 960, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 957, + "mutability": "mutable", + "name": "_top_band", + "nameLocation": "8472:9:5", + "nodeType": "VariableDeclaration", + "scope": 978, + "src": "8464:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 956, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8464:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 959, + "mutability": "mutable", + "name": "_bottom_band", + "nameLocation": "8491:12:5", + "nodeType": "VariableDeclaration", + "scope": 978, + "src": "8483:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 958, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8483:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8463:41:5" + }, + "returnParameters": { + "id": 963, + "nodeType": "ParameterList", + "parameters": [], + "src": "8525:0:5" + }, + "scope": 1365, + "src": "8441:197:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 993, + "nodeType": "Block", + "src": "8698:50:5", + "statements": [ + { + "expression": { + "id": 987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 985, + "name": "DIP", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "8702:3:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 986, + "name": "_activate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 980, + "src": "8708:9:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8702:15:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 988, + "nodeType": "ExpressionStatement", + "src": "8702:15:5" + }, + { + "eventCall": { + "arguments": [ + { + "id": 990, + "name": "_activate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 980, + "src": "8734:9:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 989, + "name": "DIPSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1352, + "src": "8727:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool)" + } + }, + "id": 991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8727:17:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 992, + "nodeType": "EmitStatement", + "src": "8722:22:5" + } + ] + }, + "functionSelector": "0c0a25aa", + "id": 994, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 983, + "kind": "modifierInvocation", + "modifierName": { + "id": 982, + "name": "onlyTrusty", + "nodeType": "IdentifierPath", + "referencedDeclaration": 556, + "src": "8687:10:5" + }, + "nodeType": "ModifierInvocation", + "src": "8687:10:5" + } + ], + "name": "activateDIP", + "nameLocation": "8650:11:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 981, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 980, + "mutability": "mutable", + "name": "_activate", + "nameLocation": "8667:9:5", + "nodeType": "VariableDeclaration", + "scope": 994, + "src": "8662:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 979, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8662:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8661:16:5" + }, + "returnParameters": { + "id": 984, + "nodeType": "ParameterList", + "parameters": [], + "src": "8698:0:5" + }, + "scope": 1365, + "src": "8641:107:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1017, + "nodeType": "Block", + "src": "8865:95:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1006, + "name": "b_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 996, + "src": "8885:9:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1007, + "name": "b_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 998, + "src": "8896:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 1003, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "8869:5:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_DEIStablecoin_$1365_$", + "typeString": "type(contract super DEIStablecoin)" + } + }, + "id": 1005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_burnFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 5422, + "src": "8869:15:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8869:36:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1009, + "nodeType": "ExpressionStatement", + "src": "8869:36:5" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1011, + "name": "b_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 996, + "src": "8924:9:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 1012, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "8935:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "8935:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1014, + "name": "b_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 998, + "src": "8947:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1010, + "name": "DEIBurned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1294, + "src": "8914:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8914:42:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1016, + "nodeType": "EmitStatement", + "src": "8909:47:5" + } + ] + }, + "functionSelector": "a8a778ae", + "id": 1018, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1001, + "kind": "modifierInvocation", + "modifierName": { + "id": 1000, + "name": "onlyPools", + "nodeType": "IdentifierPath", + "referencedDeclaration": 543, + "src": "8855:9:5" + }, + "nodeType": "ModifierInvocation", + "src": "8855:9:5" + } + ], + "name": "pool_burn_from", + "nameLocation": "8796:14:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 999, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 996, + "mutability": "mutable", + "name": "b_address", + "nameLocation": "8819:9:5", + "nodeType": "VariableDeclaration", + "scope": 1018, + "src": "8811:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 995, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8811:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 998, + "mutability": "mutable", + "name": "b_amount", + "nameLocation": "8838:8:5", + "nodeType": "VariableDeclaration", + "scope": 1018, + "src": "8830:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 997, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8830:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8810:37:5" + }, + "returnParameters": { + "id": 1002, + "nodeType": "ParameterList", + "parameters": [], + "src": "8865:0:5" + }, + "scope": 1365, + "src": "8787:173:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1041, + "nodeType": "Block", + "src": "9104:91:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1030, + "name": "m_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "9120:9:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1031, + "name": "m_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1022, + "src": "9131:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 1027, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "9108:5:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_DEIStablecoin_$1365_$", + "typeString": "type(contract super DEIStablecoin)" + } + }, + "id": 1029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 5245, + "src": "9108:11:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9108:32:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1033, + "nodeType": "ExpressionStatement", + "src": "9108:32:5" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 1035, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "9159:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1036, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "9159:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1037, + "name": "m_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "9171:9:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1038, + "name": "m_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1022, + "src": "9182:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1034, + "name": "DEIMinted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1302, + "src": "9149:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1039, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9149:42:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1040, + "nodeType": "EmitStatement", + "src": "9144:47:5" + } + ] + }, + "functionSelector": "b4f56b26", + "id": 1042, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1025, + "kind": "modifierInvocation", + "modifierName": { + "id": 1024, + "name": "onlyPools", + "nodeType": "IdentifierPath", + "referencedDeclaration": 543, + "src": "9094:9:5" + }, + "nodeType": "ModifierInvocation", + "src": "9094:9:5" + } + ], + "name": "pool_mint", + "nameLocation": "9040:9:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1023, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1020, + "mutability": "mutable", + "name": "m_address", + "nameLocation": "9058:9:5", + "nodeType": "VariableDeclaration", + "scope": 1042, + "src": "9050:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1019, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9050:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1022, + "mutability": "mutable", + "name": "m_amount", + "nameLocation": "9077:8:5", + "nodeType": "VariableDeclaration", + "scope": 1042, + "src": "9069:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1021, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9069:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9049:37:5" + }, + "returnParameters": { + "id": 1026, + "nodeType": "ParameterList", + "parameters": [], + "src": "9104:0:5" + }, + "scope": 1365, + "src": "9031:164:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1084, + "nodeType": "Block", + "src": "9393:273:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1050, + "name": "pool_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1044, + "src": "9405:12:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1053, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9429:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1052, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9421:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1051, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9421:7:5", + "typeDescriptions": {} + } + }, + "id": 1054, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9421:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9405:26:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4445493a3a616464506f6f6c3a205a65726f2061646472657373206465746563746564", + "id": 1056, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9433:37:5", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_79790c34889f935f8f9c1f9e95159c47311bbacd30b96ce8eb641f4da4a41ea5", + "typeString": "literal_string \"DEI::addPool: Zero address detected\"" + }, + "value": "DEI::addPool: Zero address detected" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_79790c34889f935f8f9c1f9e95159c47311bbacd30b96ce8eb641f4da4a41ea5", + "typeString": "literal_string \"DEI::addPool: Zero address detected\"" + } + ], + "id": 1049, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9397:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9397:74:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1058, + "nodeType": "ExpressionStatement", + "src": "9397:74:5" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 1060, + "name": "dei_pools", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "9483:9:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1062, + "indexExpression": { + "id": 1061, + "name": "pool_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1044, + "src": "9493:12:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9483:23:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "66616c7365", + "id": 1063, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9510:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "9483:32:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4445493a3a616464506f6f6c3a204164647265737320616c726561647920657869737473", + "id": 1065, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9517:38:5", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_135752039067ec9728ec6cc2401f2209e0aa44d6599e067098e5282676485de6", + "typeString": "literal_string \"DEI::addPool: Address already exists\"" + }, + "value": "DEI::addPool: Address already exists" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_135752039067ec9728ec6cc2401f2209e0aa44d6599e067098e5282676485de6", + "typeString": "literal_string \"DEI::addPool: Address already exists\"" + } + ], + "id": 1059, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9475:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9475:81:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1067, + "nodeType": "ExpressionStatement", + "src": "9475:81:5" + }, + { + "expression": { + "id": 1072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1068, + "name": "dei_pools", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "9561:9:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1070, + "indexExpression": { + "id": 1069, + "name": "pool_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1044, + "src": "9571:12:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9561:23:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 1071, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9587:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "9561:30:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1073, + "nodeType": "ExpressionStatement", + "src": "9561:30:5" + }, + { + "expression": { + "arguments": [ + { + "id": 1077, + "name": "pool_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1044, + "src": "9616:12:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 1074, + "name": "dei_pools_array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "9595:15:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1076, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "src": "9595:20:5", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$bound_to$_t_array$_t_address_$dyn_storage_ptr_$", + "typeString": "function (address[] storage pointer,address)" + } + }, + "id": 1078, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9595:34:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1079, + "nodeType": "ExpressionStatement", + "src": "9595:34:5" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1081, + "name": "pool_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1044, + "src": "9649:12:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1080, + "name": "PoolAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1310, + "src": "9639:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9639:23:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1083, + "nodeType": "EmitStatement", + "src": "9634:28:5" + } + ] + }, + "functionSelector": "d914cd4b", + "id": 1085, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1047, + "kind": "modifierInvocation", + "modifierName": { + "id": 1046, + "name": "onlyTrusty", + "nodeType": "IdentifierPath", + "referencedDeclaration": 556, + "src": "9381:10:5" + }, + "nodeType": "ModifierInvocation", + "src": "9381:10:5" + } + ], + "name": "addPool", + "nameLocation": "9338:7:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1045, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1044, + "mutability": "mutable", + "name": "pool_address", + "nameLocation": "9354:12:5", + "nodeType": "VariableDeclaration", + "scope": 1085, + "src": "9346:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1043, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9346:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "9345:22:5" + }, + "returnParameters": { + "id": 1048, + "nodeType": "ParameterList", + "parameters": [], + "src": "9393:0:5" + }, + "scope": 1365, + "src": "9329:337:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1150, + "nodeType": "Block", + "src": "9754:556:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1093, + "name": "pool_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1087, + "src": "9766:12:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1096, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9790:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1095, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9782:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1094, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9782:7:5", + "typeDescriptions": {} + } + }, + "id": 1097, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9782:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9766:26:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4445493a3a72656d6f7665506f6f6c3a205a65726f2061646472657373206465746563746564", + "id": 1099, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9794:40:5", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5d76525ad886bfae65df1a2a4093e79ca5549605e2e56b119fbbd06a964cb1c1", + "typeString": "literal_string \"DEI::removePool: Zero address detected\"" + }, + "value": "DEI::removePool: Zero address detected" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5d76525ad886bfae65df1a2a4093e79ca5549605e2e56b119fbbd06a964cb1c1", + "typeString": "literal_string \"DEI::removePool: Zero address detected\"" + } + ], + "id": 1092, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9758:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9758:77:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1101, + "nodeType": "ExpressionStatement", + "src": "9758:77:5" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 1103, + "name": "dei_pools", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "9847:9:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1105, + "indexExpression": { + "id": 1104, + "name": "pool_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1087, + "src": "9857:12:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9847:23:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "74727565", + "id": 1106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9874:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "9847:31:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4445493a3a72656d6f7665506f6f6c3a2041646472657373206e6f6e6578697374616e74", + "id": 1108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9880:38:5", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ad6015c13a0e63f548d13ba3fdb3fd25b250b515fed8d06aa09cb97bfbd3a2ad", + "typeString": "literal_string \"DEI::removePool: Address nonexistant\"" + }, + "value": "DEI::removePool: Address nonexistant" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ad6015c13a0e63f548d13ba3fdb3fd25b250b515fed8d06aa09cb97bfbd3a2ad", + "typeString": "literal_string \"DEI::removePool: Address nonexistant\"" + } + ], + "id": 1102, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9839:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9839:80:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1110, + "nodeType": "ExpressionStatement", + "src": "9839:80:5" + }, + { + "expression": { + "id": 1114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "9953:30:5", + "subExpression": { + "baseExpression": { + "id": 1111, + "name": "dei_pools", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "9960:9:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1113, + "indexExpression": { + "id": 1112, + "name": "pool_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1087, + "src": "9970:12:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9960:23:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1115, + "nodeType": "ExpressionStatement", + "src": "9953:30:5" + }, + { + "body": { + "id": 1144, + "nodeType": "Block", + "src": "10100:172:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 1127, + "name": "dei_pools_array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "10109:15:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1129, + "indexExpression": { + "id": 1128, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1117, + "src": "10125:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10109:18:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1130, + "name": "pool_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1087, + "src": "10131:12:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10109:34:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1143, + "nodeType": "IfStatement", + "src": "10105:163:5", + "trueBody": { + "id": 1142, + "nodeType": "Block", + "src": "10145:123:5", + "statements": [ + { + "expression": { + "id": 1139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1132, + "name": "dei_pools_array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "10151:15:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1134, + "indexExpression": { + "id": 1133, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1117, + "src": "10167:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10151:18:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 1137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10180:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1136, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10172:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1135, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10172:7:5", + "typeDescriptions": {} + } + }, + "id": 1138, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10172:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10151:31:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1140, + "nodeType": "ExpressionStatement", + "src": "10151:31:5" + }, + { + "id": 1141, + "nodeType": "Break", + "src": "10257:5:5" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1120, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1117, + "src": "10067:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 1121, + "name": "dei_pools_array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "10071:15:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "10071:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10067:26:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1145, + "initializationExpression": { + "assignments": [ + 1117 + ], + "declarations": [ + { + "constant": false, + "id": 1117, + "mutability": "mutable", + "name": "i", + "nameLocation": "10060:1:5", + "nodeType": "VariableDeclaration", + "scope": 1145, + "src": "10052:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1116, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10052:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1119, + "initialValue": { + "hexValue": "30", + "id": 1118, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10064:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "10052:13:5" + }, + "loopExpression": { + "expression": { + "id": 1125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "10095:3:5", + "subExpression": { + "id": 1124, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1117, + "src": "10095:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1126, + "nodeType": "ExpressionStatement", + "src": "10095:3:5" + }, + "nodeType": "ForStatement", + "src": "10047:225:5" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1147, + "name": "pool_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1087, + "src": "10293:12:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1146, + "name": "PoolRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1314, + "src": "10281:11:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10281:25:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1149, + "nodeType": "EmitStatement", + "src": "10276:30:5" + } + ] + }, + "functionSelector": "3b7d0946", + "id": 1151, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1090, + "kind": "modifierInvocation", + "modifierName": { + "id": 1089, + "name": "onlyTrusty", + "nodeType": "IdentifierPath", + "referencedDeclaration": 556, + "src": "9742:10:5" + }, + "nodeType": "ModifierInvocation", + "src": "9742:10:5" + } + ], + "name": "removePool", + "nameLocation": "9696:10:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1088, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1087, + "mutability": "mutable", + "name": "pool_address", + "nameLocation": "9715:12:5", + "nodeType": "VariableDeclaration", + "scope": 1151, + "src": "9707:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1086, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9707:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "9706:22:5" + }, + "returnParameters": { + "id": 1091, + "nodeType": "ParameterList", + "parameters": [], + "src": "9754:0:5" + }, + "scope": 1365, + "src": "9687:623:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1173, + "nodeType": "Block", + "src": "10403:80:5", + "statements": [ + { + "expression": { + "id": 1162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1160, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 474, + "src": "10407:4:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1161, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1153, + "src": "10414:5:5", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "10407:12:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 1163, + "nodeType": "ExpressionStatement", + "src": "10407:12:5" + }, + { + "expression": { + "id": 1166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1164, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 472, + "src": "10423:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1165, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1155, + "src": "10432:7:5", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "10423:16:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 1167, + "nodeType": "ExpressionStatement", + "src": "10423:16:5" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1169, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 474, + "src": "10466:4:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + { + "id": 1170, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 472, + "src": "10472:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + }, + { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + ], + "id": 1168, + "name": "NameAndSymbolSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1364, + "src": "10449:16:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory,string memory)" + } + }, + "id": 1171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10449:30:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1172, + "nodeType": "EmitStatement", + "src": "10444:35:5" + } + ] + }, + "functionSelector": "5a446215", + "id": 1174, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1158, + "kind": "modifierInvocation", + "modifierName": { + "id": 1157, + "name": "onlyTrusty", + "nodeType": "IdentifierPath", + "referencedDeclaration": 556, + "src": "10392:10:5" + }, + "nodeType": "ModifierInvocation", + "src": "10392:10:5" + } + ], + "name": "setNameAndSymbol", + "nameLocation": "10322:16:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1156, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1153, + "mutability": "mutable", + "name": "_name", + "nameLocation": "10353:5:5", + "nodeType": "VariableDeclaration", + "scope": 1174, + "src": "10339:19:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1152, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "10339:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1155, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "10374:7:5", + "nodeType": "VariableDeclaration", + "scope": 1174, + "src": "10360:21:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1154, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "10360:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "10338:44:5" + }, + "returnParameters": { + "id": 1159, + "nodeType": "ParameterList", + "parameters": [], + "src": "10403:0:5" + }, + "scope": 1365, + "src": "10313:170:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1189, + "nodeType": "Block", + "src": "10542:52:5", + "statements": [ + { + "expression": { + "id": 1183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1181, + "name": "oracle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "10546:6:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1182, + "name": "_oracle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1176, + "src": "10555:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10546:16:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1184, + "nodeType": "ExpressionStatement", + "src": "10546:16:5" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1186, + "name": "_oracle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1176, + "src": "10582:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1185, + "name": "OracleSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1340, + "src": "10572:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10572:18:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1188, + "nodeType": "EmitStatement", + "src": "10567:23:5" + } + ] + }, + "functionSelector": "7adbf973", + "id": 1190, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1179, + "kind": "modifierInvocation", + "modifierName": { + "id": 1178, + "name": "onlyTrusty", + "nodeType": "IdentifierPath", + "referencedDeclaration": 556, + "src": "10531:10:5" + }, + "nodeType": "ModifierInvocation", + "src": "10531:10:5" + } + ], + "name": "setOracle", + "nameLocation": "10495:9:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1177, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1176, + "mutability": "mutable", + "name": "_oracle", + "nameLocation": "10513:7:5", + "nodeType": "VariableDeclaration", + "scope": 1190, + "src": "10505:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1175, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10505:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "10504:17:5" + }, + "returnParameters": { + "id": 1180, + "nodeType": "ParameterList", + "parameters": [], + "src": "10542:0:5" + }, + "scope": 1365, + "src": "10486:108:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1205, + "nodeType": "Block", + "src": "10656:59:5", + "statements": [ + { + "expression": { + "id": 1199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1197, + "name": "dei_step", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 500, + "src": "10660:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1198, + "name": "_new_step", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1192, + "src": "10671:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10660:20:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1200, + "nodeType": "ExpressionStatement", + "src": "10660:20:5" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1202, + "name": "_new_step", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1192, + "src": "10701:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1201, + "name": "DEIStepSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1318, + "src": "10690:10:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10690:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1204, + "nodeType": "EmitStatement", + "src": "10685:26:5" + } + ] + }, + "functionSelector": "597bf738", + "id": 1206, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1195, + "kind": "modifierInvocation", + "modifierName": { + "id": 1194, + "name": "onlyTrusty", + "nodeType": "IdentifierPath", + "referencedDeclaration": 556, + "src": "10645:10:5" + }, + "nodeType": "ModifierInvocation", + "src": "10645:10:5" + } + ], + "name": "setDEIStep", + "nameLocation": "10606:10:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1193, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1192, + "mutability": "mutable", + "name": "_new_step", + "nameLocation": "10625:9:5", + "nodeType": "VariableDeclaration", + "scope": 1206, + "src": "10617:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1191, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10617:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10616:19:5" + }, + "returnParameters": { + "id": 1196, + "nodeType": "ParameterList", + "parameters": [], + "src": "10656:0:5" + }, + "scope": 1365, + "src": "10597:118:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1221, + "nodeType": "Block", + "src": "10799:111:5", + "statements": [ + { + "expression": { + "id": 1215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1213, + "name": "reserve_tracker_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 486, + "src": "10803:23:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1214, + "name": "_reserve_tracker_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1208, + "src": "10829:24:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10803:50:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1216, + "nodeType": "ExpressionStatement", + "src": "10803:50:5" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1218, + "name": "_reserve_tracker_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1208, + "src": "10881:24:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1217, + "name": "ReserveTrackerSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1344, + "src": "10863:17:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10863:43:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1220, + "nodeType": "EmitStatement", + "src": "10858:48:5" + } + ] + }, + "functionSelector": "11af9a4b", + "id": 1222, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1211, + "kind": "modifierInvocation", + "modifierName": { + "id": 1210, + "name": "onlyTrusty", + "nodeType": "IdentifierPath", + "referencedDeclaration": 556, + "src": "10788:10:5" + }, + "nodeType": "ModifierInvocation", + "src": "10788:10:5" + } + ], + "name": "setReserveTracker", + "nameLocation": "10727:17:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1209, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1208, + "mutability": "mutable", + "name": "_reserve_tracker_address", + "nameLocation": "10753:24:5", + "nodeType": "VariableDeclaration", + "scope": 1222, + "src": "10745:32:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1207, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10745:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "10744:34:5" + }, + "returnParameters": { + "id": 1212, + "nodeType": "ParameterList", + "parameters": [], + "src": "10799:0:5" + }, + "scope": 1365, + "src": "10718:192:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1237, + "nodeType": "Block", + "src": "10984:83:5", + "statements": [ + { + "expression": { + "id": 1231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1229, + "name": "refresh_cooldown", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 502, + "src": "10988:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1230, + "name": "_new_cooldown", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1224, + "src": "11007:13:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10988:32:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1232, + "nodeType": "ExpressionStatement", + "src": "10988:32:5" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1234, + "name": "_new_cooldown", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1224, + "src": "11049:13:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1233, + "name": "RefreshCooldownSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1322, + "src": "11030:18:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11030:33:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1236, + "nodeType": "EmitStatement", + "src": "11025:38:5" + } + ] + }, + "functionSelector": "1c5df1e5", + "id": 1238, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1227, + "kind": "modifierInvocation", + "modifierName": { + "id": 1226, + "name": "onlyTrusty", + "nodeType": "IdentifierPath", + "referencedDeclaration": 556, + "src": "10973:10:5" + }, + "nodeType": "ModifierInvocation", + "src": "10973:10:5" + } + ], + "name": "setRefreshCooldown", + "nameLocation": "10922:18:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1225, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1224, + "mutability": "mutable", + "name": "_new_cooldown", + "nameLocation": "10949:13:5", + "nodeType": "VariableDeclaration", + "scope": 1238, + "src": "10941:21:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1223, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10941:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10940:23:5" + }, + "returnParameters": { + "id": 1228, + "nodeType": "ParameterList", + "parameters": [], + "src": "10984:0:5" + }, + "scope": 1365, + "src": "10913:154:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1263, + "nodeType": "Block", + "src": "11137:162:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1246, + "name": "_deus_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1240, + "src": "11149:13:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1249, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11174:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1248, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11166:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1247, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11166:7:5", + "typeDescriptions": {} + } + }, + "id": 1250, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11166:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11149:27:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4445493a3a73657444455553416464726573733a205a65726f2061646472657373206465746563746564", + "id": 1252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11178:44:5", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_12ac24c3ffefd74f53fba28db5a84496d08720f6235d7115ecc606be7567fe10", + "typeString": "literal_string \"DEI::setDEUSAddress: Zero address detected\"" + }, + "value": "DEI::setDEUSAddress: Zero address detected" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_12ac24c3ffefd74f53fba28db5a84496d08720f6235d7115ecc606be7567fe10", + "typeString": "literal_string \"DEI::setDEUSAddress: Zero address detected\"" + } + ], + "id": 1245, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "11141:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11141:82:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1254, + "nodeType": "ExpressionStatement", + "src": "11141:82:5" + }, + { + "expression": { + "id": 1257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1255, + "name": "deus_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 481, + "src": "11228:12:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1256, + "name": "_deus_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1240, + "src": "11243:13:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11228:28:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1258, + "nodeType": "ExpressionStatement", + "src": "11228:28:5" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1260, + "name": "_deus_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1240, + "src": "11281:13:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1259, + "name": "DEUSAddressSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1326, + "src": "11266:14:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11266:29:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1262, + "nodeType": "EmitStatement", + "src": "11261:34:5" + } + ] + }, + "functionSelector": "aee06a5e", + "id": 1264, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1243, + "kind": "modifierInvocation", + "modifierName": { + "id": 1242, + "name": "onlyTrusty", + "nodeType": "IdentifierPath", + "referencedDeclaration": 556, + "src": "11126:10:5" + }, + "nodeType": "ModifierInvocation", + "src": "11126:10:5" + } + ], + "name": "setDEUSAddress", + "nameLocation": "11079:14:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1241, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1240, + "mutability": "mutable", + "name": "_deus_address", + "nameLocation": "11102:13:5", + "nodeType": "VariableDeclaration", + "scope": 1264, + "src": "11094:21:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1239, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11094:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "11093:23:5" + }, + "returnParameters": { + "id": 1244, + "nodeType": "ParameterList", + "parameters": [], + "src": "11137:0:5" + }, + "scope": 1365, + "src": "11070:229:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1285, + "nodeType": "Block", + "src": "11344:220:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 1269, + "name": "COLLATERAL_RATIO_PAUSER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 507, + "src": "11364:23:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 1270, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11389:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "11389:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1268, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6072, + "src": "11356:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 1272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11356:44:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4445493a20796f7520617265206e6f742074686520636f6c6c61746572616c20726174696f20706175736572", + "id": 1273, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11402:46:5", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c446382fb772bec07e0925670c9a4b988b44e71ae32f6ec0b51063257cb4a352", + "typeString": "literal_string \"DEI: you are not the collateral ratio pauser\"" + }, + "value": "DEI: you are not the collateral ratio pauser" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c446382fb772bec07e0925670c9a4b988b44e71ae32f6ec0b51063257cb4a352", + "typeString": "literal_string \"DEI: you are not the collateral ratio pauser\"" + } + ], + "id": 1267, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "11348:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11348:101:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1275, + "nodeType": "ExpressionStatement", + "src": "11348:101:5" + }, + { + "expression": { + "id": 1279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1276, + "name": "collateral_ratio_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "11453:23:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "11479:24:5", + "subExpression": { + "id": 1277, + "name": "collateral_ratio_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "11480:23:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "11453:50:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1280, + "nodeType": "ExpressionStatement", + "src": "11453:50:5" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1282, + "name": "collateral_ratio_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "11536:23:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1281, + "name": "CollateralRatioToggled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1336, + "src": "11513:22:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool)" + } + }, + "id": 1283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11513:47:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1284, + "nodeType": "EmitStatement", + "src": "11508:52:5" + } + ] + }, + "functionSelector": "bef40ec8", + "id": 1286, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toggleCollateralRatio", + "nameLocation": "11311:21:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1265, + "nodeType": "ParameterList", + "parameters": [], + "src": "11332:2:5" + }, + "returnParameters": { + "id": 1266, + "nodeType": "ParameterList", + "parameters": [], + "src": "11344:0:5" + }, + "scope": 1365, + "src": "11302:262:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "id": 1294, + "name": "DEIBurned", + "nameLocation": "11631:9:5", + "nodeType": "EventDefinition", + "parameters": { + "id": 1293, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1288, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "11657:4:5", + "nodeType": "VariableDeclaration", + "scope": 1294, + "src": "11641:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1287, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11641:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1290, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "11679:2:5", + "nodeType": "VariableDeclaration", + "scope": 1294, + "src": "11663:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1289, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11663:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1292, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "11691:6:5", + "nodeType": "VariableDeclaration", + "scope": 1294, + "src": "11683:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1291, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11683:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11640:58:5" + }, + "src": "11625:74:5" + }, + { + "anonymous": false, + "id": 1302, + "name": "DEIMinted", + "nameLocation": "11728:9:5", + "nodeType": "EventDefinition", + "parameters": { + "id": 1301, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1296, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "11754:4:5", + "nodeType": "VariableDeclaration", + "scope": 1302, + "src": "11738:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1295, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11738:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1298, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "11776:2:5", + "nodeType": "VariableDeclaration", + "scope": 1302, + "src": "11760:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1297, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11760:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1300, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "11788:6:5", + "nodeType": "VariableDeclaration", + "scope": 1302, + "src": "11780:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1299, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11780:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11737:58:5" + }, + "src": "11722:74:5" + }, + { + "anonymous": false, + "id": 1306, + "name": "CollateralRatioRefreshed", + "nameLocation": "11804:24:5", + "nodeType": "EventDefinition", + "parameters": { + "id": 1305, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1304, + "indexed": false, + "mutability": "mutable", + "name": "global_collateral_ratio", + "nameLocation": "11837:23:5", + "nodeType": "VariableDeclaration", + "scope": 1306, + "src": "11829:31:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1303, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11829:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11828:33:5" + }, + "src": "11798:64:5" + }, + { + "anonymous": false, + "id": 1310, + "name": "PoolAdded", + "nameLocation": "11870:9:5", + "nodeType": "EventDefinition", + "parameters": { + "id": 1309, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1308, + "indexed": false, + "mutability": "mutable", + "name": "pool_address", + "nameLocation": "11888:12:5", + "nodeType": "VariableDeclaration", + "scope": 1310, + "src": "11880:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1307, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11880:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "11879:22:5" + }, + "src": "11864:38:5" + }, + { + "anonymous": false, + "id": 1314, + "name": "PoolRemoved", + "nameLocation": "11910:11:5", + "nodeType": "EventDefinition", + "parameters": { + "id": 1313, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1312, + "indexed": false, + "mutability": "mutable", + "name": "pool_address", + "nameLocation": "11930:12:5", + "nodeType": "VariableDeclaration", + "scope": 1314, + "src": "11922:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1311, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11922:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "11921:22:5" + }, + "src": "11904:40:5" + }, + { + "anonymous": false, + "id": 1318, + "name": "DEIStepSet", + "nameLocation": "11952:10:5", + "nodeType": "EventDefinition", + "parameters": { + "id": 1317, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1316, + "indexed": false, + "mutability": "mutable", + "name": "new_step", + "nameLocation": "11971:8:5", + "nodeType": "VariableDeclaration", + "scope": 1318, + "src": "11963:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1315, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11963:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11962:18:5" + }, + "src": "11946:35:5" + }, + { + "anonymous": false, + "id": 1322, + "name": "RefreshCooldownSet", + "nameLocation": "11989:18:5", + "nodeType": "EventDefinition", + "parameters": { + "id": 1321, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1320, + "indexed": false, + "mutability": "mutable", + "name": "new_cooldown", + "nameLocation": "12016:12:5", + "nodeType": "VariableDeclaration", + "scope": 1322, + "src": "12008:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1319, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12008:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12007:22:5" + }, + "src": "11983:47:5" + }, + { + "anonymous": false, + "id": 1326, + "name": "DEUSAddressSet", + "nameLocation": "12038:14:5", + "nodeType": "EventDefinition", + "parameters": { + "id": 1325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1324, + "indexed": false, + "mutability": "mutable", + "name": "deus_address", + "nameLocation": "12061:12:5", + "nodeType": "VariableDeclaration", + "scope": 1326, + "src": "12053:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1323, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12053:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "12052:22:5" + }, + "src": "12032:43:5" + }, + { + "anonymous": false, + "id": 1332, + "name": "PriceBandSet", + "nameLocation": "12083:12:5", + "nodeType": "EventDefinition", + "parameters": { + "id": 1331, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1328, + "indexed": false, + "mutability": "mutable", + "name": "top_band", + "nameLocation": "12104:8:5", + "nodeType": "VariableDeclaration", + "scope": 1332, + "src": "12096:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1327, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12096:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1330, + "indexed": false, + "mutability": "mutable", + "name": "bottom_band", + "nameLocation": "12122:11:5", + "nodeType": "VariableDeclaration", + "scope": 1332, + "src": "12114:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1329, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12114:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12095:39:5" + }, + "src": "12077:58:5" + }, + { + "anonymous": false, + "id": 1336, + "name": "CollateralRatioToggled", + "nameLocation": "12143:22:5", + "nodeType": "EventDefinition", + "parameters": { + "id": 1335, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1334, + "indexed": false, + "mutability": "mutable", + "name": "collateral_ratio_paused", + "nameLocation": "12171:23:5", + "nodeType": "VariableDeclaration", + "scope": 1336, + "src": "12166:28:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1333, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12166:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "12165:30:5" + }, + "src": "12137:59:5" + }, + { + "anonymous": false, + "id": 1340, + "name": "OracleSet", + "nameLocation": "12204:9:5", + "nodeType": "EventDefinition", + "parameters": { + "id": 1339, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1338, + "indexed": false, + "mutability": "mutable", + "name": "oracle", + "nameLocation": "12222:6:5", + "nodeType": "VariableDeclaration", + "scope": 1340, + "src": "12214:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1337, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12214:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "12213:16:5" + }, + "src": "12198:32:5" + }, + { + "anonymous": false, + "id": 1344, + "name": "ReserveTrackerSet", + "nameLocation": "12238:17:5", + "nodeType": "EventDefinition", + "parameters": { + "id": 1343, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1342, + "indexed": false, + "mutability": "mutable", + "name": "reserve_tracker_address", + "nameLocation": "12264:23:5", + "nodeType": "VariableDeclaration", + "scope": 1344, + "src": "12256:31:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1341, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12256:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "12255:33:5" + }, + "src": "12232:57:5" + }, + { + "anonymous": false, + "id": 1348, + "name": "UseGrowthRatioSet", + "nameLocation": "12297:17:5", + "nodeType": "EventDefinition", + "parameters": { + "id": 1347, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1346, + "indexed": false, + "mutability": "mutable", + "name": "use_growth_ratio", + "nameLocation": "12321:16:5", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "12316:21:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1345, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12316:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "12314:24:5" + }, + "src": "12291:48:5" + }, + { + "anonymous": false, + "id": 1352, + "name": "DIPSet", + "nameLocation": "12347:6:5", + "nodeType": "EventDefinition", + "parameters": { + "id": 1351, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1350, + "indexed": false, + "mutability": "mutable", + "name": "activate", + "nameLocation": "12359:8:5", + "nodeType": "VariableDeclaration", + "scope": 1352, + "src": "12354:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1349, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12354:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "12353:15:5" + }, + "src": "12341:28:5" + }, + { + "anonymous": false, + "id": 1358, + "name": "GrowthRatioBandSet", + "nameLocation": "12377:18:5", + "nodeType": "EventDefinition", + "parameters": { + "id": 1357, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1354, + "indexed": false, + "mutability": "mutable", + "name": "GR_top_band", + "nameLocation": "12404:11:5", + "nodeType": "VariableDeclaration", + "scope": 1358, + "src": "12396:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1353, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12396:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1356, + "indexed": false, + "mutability": "mutable", + "name": "GR_bottom_band", + "nameLocation": "12425:14:5", + "nodeType": "VariableDeclaration", + "scope": 1358, + "src": "12417:22:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1355, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12417:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12395:45:5" + }, + "src": "12371:70:5" + }, + { + "anonymous": false, + "id": 1364, + "name": "NameAndSymbolSet", + "nameLocation": "12449:16:5", + "nodeType": "EventDefinition", + "parameters": { + "id": 1363, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1360, + "indexed": false, + "mutability": "mutable", + "name": "name", + "nameLocation": "12473:4:5", + "nodeType": "VariableDeclaration", + "scope": 1364, + "src": "12466:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1359, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "12466:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1362, + "indexed": false, + "mutability": "mutable", + "name": "symbol", + "nameLocation": "12486:6:5", + "nodeType": "VariableDeclaration", + "scope": 1364, + "src": "12479:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1361, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "12479:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "12465:28:5" + }, + "src": "12443:51:5" + } + ], + "scope": 1366, + "src": "1626:10870:5", + "usedErrors": [] + } + ], + "src": "80:12436:5" + }, + "id": 5 + }, + "contracts/DEI/IDEI.sol": { + "ast": { + "absolutePath": "contracts/DEI/IDEI.sol", + "exportedSymbols": { + "IDEIStablecoin": [ + 1530 + ] + }, + "id": 1531, + "license": "GPL-2.0-or-later", + "nodeType": "SourceUnit", + "nodes": [ + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IDEIStablecoin", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 1530, + "linearizedBaseContracts": [ + 1530 + ], + "name": "IDEIStablecoin", + "nameLocation": "91:14:6", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "06fdde03", + "id": 1371, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "121:4:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1367, + "nodeType": "ParameterList", + "parameters": [], + "src": "125:2:6" + }, + "returnParameters": { + "id": 1370, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1369, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1371, + "src": "151:13:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1368, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "151:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "150:15:6" + }, + "scope": 1530, + "src": "112:54:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "95d89b41", + "id": 1376, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "180:6:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1372, + "nodeType": "ParameterList", + "parameters": [], + "src": "186:2:6" + }, + "returnParameters": { + "id": 1375, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1374, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1376, + "src": "212:13:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1373, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "212:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "211:15:6" + }, + "scope": 1530, + "src": "171:56:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "18160ddd", + "id": 1381, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "241:11:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1377, + "nodeType": "ParameterList", + "parameters": [], + "src": "252:2:6" + }, + "returnParameters": { + "id": 1380, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1379, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1381, + "src": "278:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1378, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "278:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "277:9:6" + }, + "scope": 1530, + "src": "232:55:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "2eb9771b", + "id": 1386, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "global_collateral_ratio", + "nameLocation": "301:23:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1382, + "nodeType": "ParameterList", + "parameters": [], + "src": "324:2:6" + }, + "returnParameters": { + "id": 1385, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1384, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1386, + "src": "350:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1383, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "350:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "349:9:6" + }, + "scope": 1530, + "src": "292:67:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "15ea919c", + "id": 1393, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "dei_pools", + "nameLocation": "373:9:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1389, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1388, + "mutability": "mutable", + "name": "_address", + "nameLocation": "391:8:6", + "nodeType": "VariableDeclaration", + "scope": 1393, + "src": "383:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1387, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "383:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "382:18:6" + }, + "returnParameters": { + "id": 1392, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1391, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1393, + "src": "424:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1390, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "424:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "423:6:6" + }, + "scope": 1530, + "src": "364:66:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "ee74e473", + "id": 1399, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "dei_pools_array", + "nameLocation": "444:15:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1394, + "nodeType": "ParameterList", + "parameters": [], + "src": "459:2:6" + }, + "returnParameters": { + "id": 1398, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1397, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1399, + "src": "485:16:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1395, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "485:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1396, + "nodeType": "ArrayTypeName", + "src": "485:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "484:18:6" + }, + "scope": 1530, + "src": "435:68:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "6793f0ac", + "id": 1409, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "verify_price", + "nameLocation": "517:12:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1405, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1401, + "mutability": "mutable", + "name": "sighash", + "nameLocation": "538:7:6", + "nodeType": "VariableDeclaration", + "scope": 1409, + "src": "530:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1400, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "530:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1404, + "mutability": "mutable", + "name": "sigs", + "nameLocation": "564:4:6", + "nodeType": "VariableDeclaration", + "scope": 1409, + "src": "547:21:6", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 1402, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "547:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 1403, + "nodeType": "ArrayTypeName", + "src": "547:7:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "529:40:6" + }, + "returnParameters": { + "id": 1408, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1407, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1409, + "src": "593:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1406, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "593:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "592:6:6" + }, + "scope": 1530, + "src": "508:91:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "ae773029", + "id": 1421, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "dei_info", + "nameLocation": "613:8:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1413, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1412, + "mutability": "mutable", + "name": "collat_usd_price", + "nameLocation": "639:16:6", + "nodeType": "VariableDeclaration", + "scope": 1421, + "src": "622:33:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1410, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "622:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1411, + "nodeType": "ArrayTypeName", + "src": "622:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "621:35:6" + }, + "returnParameters": { + "id": 1420, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1415, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1421, + "src": "680:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1414, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "680:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1417, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1421, + "src": "689:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1416, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "689:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1419, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1421, + "src": "698:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1418, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "698:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "679:27:6" + }, + "scope": 1530, + "src": "604:103:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "564b81ef", + "id": 1426, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getChainID", + "nameLocation": "721:10:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1422, + "nodeType": "ParameterList", + "parameters": [], + "src": "731:2:6" + }, + "returnParameters": { + "id": 1425, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1424, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1426, + "src": "757:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1423, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "757:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "756:9:6" + }, + "scope": 1530, + "src": "712:54:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "2480fcea", + "id": 1434, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "globalCollateralValue", + "nameLocation": "780:21:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1430, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1429, + "mutability": "mutable", + "name": "collat_usd_price", + "nameLocation": "819:16:6", + "nodeType": "VariableDeclaration", + "scope": 1434, + "src": "802:33:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1427, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "802:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1428, + "nodeType": "ArrayTypeName", + "src": "802:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "801:35:6" + }, + "returnParameters": { + "id": 1433, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1432, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1434, + "src": "860:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1431, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "860:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "859:9:6" + }, + "scope": 1530, + "src": "771:98:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "ab3d1bb6", + "id": 1446, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "refreshCollateralRatio", + "nameLocation": "883:22:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1444, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1436, + "mutability": "mutable", + "name": "deus_price", + "nameLocation": "911:10:6", + "nodeType": "VariableDeclaration", + "scope": 1446, + "src": "906:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1435, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "906:4:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1438, + "mutability": "mutable", + "name": "dei_price", + "nameLocation": "928:9:6", + "nodeType": "VariableDeclaration", + "scope": 1446, + "src": "923:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1437, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "923:4:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1440, + "mutability": "mutable", + "name": "expire_block", + "nameLocation": "947:12:6", + "nodeType": "VariableDeclaration", + "scope": 1446, + "src": "939:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1439, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "939:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1443, + "mutability": "mutable", + "name": "sigs", + "nameLocation": "978:4:6", + "nodeType": "VariableDeclaration", + "scope": 1446, + "src": "961:21:6", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 1441, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "961:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 1442, + "nodeType": "ArrayTypeName", + "src": "961:7:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "905:78:6" + }, + "returnParameters": { + "id": 1445, + "nodeType": "ParameterList", + "parameters": [], + "src": "992:0:6" + }, + "scope": 1530, + "src": "874:119:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "2b75ab08", + "id": 1451, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "useGrowthRatio", + "nameLocation": "1007:14:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1449, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1448, + "mutability": "mutable", + "name": "_use_growth_ratio", + "nameLocation": "1027:17:6", + "nodeType": "VariableDeclaration", + "scope": 1451, + "src": "1022:22:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1447, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1022:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1021:24:6" + }, + "returnParameters": { + "id": 1450, + "nodeType": "ParameterList", + "parameters": [], + "src": "1054:0:6" + }, + "scope": 1530, + "src": "998:57:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a085ea7c", + "id": 1458, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setGrowthRatioBands", + "nameLocation": "1069:19:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1456, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1453, + "mutability": "mutable", + "name": "_GR_top_band", + "nameLocation": "1097:12:6", + "nodeType": "VariableDeclaration", + "scope": 1458, + "src": "1089:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1452, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1089:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1455, + "mutability": "mutable", + "name": "_GR_bottom_band", + "nameLocation": "1119:15:6", + "nodeType": "VariableDeclaration", + "scope": 1458, + "src": "1111:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1454, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1111:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1088:47:6" + }, + "returnParameters": { + "id": 1457, + "nodeType": "ParameterList", + "parameters": [], + "src": "1144:0:6" + }, + "scope": 1530, + "src": "1060:85:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a6959f0f", + "id": 1465, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setPriceBands", + "nameLocation": "1159:13:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1463, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1460, + "mutability": "mutable", + "name": "_top_band", + "nameLocation": "1181:9:6", + "nodeType": "VariableDeclaration", + "scope": 1465, + "src": "1173:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1459, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1173:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1462, + "mutability": "mutable", + "name": "_bottom_band", + "nameLocation": "1200:12:6", + "nodeType": "VariableDeclaration", + "scope": 1465, + "src": "1192:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1461, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1192:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1172:41:6" + }, + "returnParameters": { + "id": 1464, + "nodeType": "ParameterList", + "parameters": [], + "src": "1222:0:6" + }, + "scope": 1530, + "src": "1150:73:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0c0a25aa", + "id": 1470, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "activateDIP", + "nameLocation": "1237:11:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1468, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1467, + "mutability": "mutable", + "name": "_activate", + "nameLocation": "1254:9:6", + "nodeType": "VariableDeclaration", + "scope": 1470, + "src": "1249:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1466, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1249:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1248:16:6" + }, + "returnParameters": { + "id": 1469, + "nodeType": "ParameterList", + "parameters": [], + "src": "1273:0:6" + }, + "scope": 1530, + "src": "1228:46:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a8a778ae", + "id": 1477, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "pool_burn_from", + "nameLocation": "1288:14:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1475, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1472, + "mutability": "mutable", + "name": "b_address", + "nameLocation": "1311:9:6", + "nodeType": "VariableDeclaration", + "scope": 1477, + "src": "1303:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1471, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1303:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1474, + "mutability": "mutable", + "name": "b_amount", + "nameLocation": "1330:8:6", + "nodeType": "VariableDeclaration", + "scope": 1477, + "src": "1322:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1473, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1322:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1302:37:6" + }, + "returnParameters": { + "id": 1476, + "nodeType": "ParameterList", + "parameters": [], + "src": "1348:0:6" + }, + "scope": 1530, + "src": "1279:70:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "b4f56b26", + "id": 1484, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "pool_mint", + "nameLocation": "1363:9:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1482, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1479, + "mutability": "mutable", + "name": "m_address", + "nameLocation": "1381:9:6", + "nodeType": "VariableDeclaration", + "scope": 1484, + "src": "1373:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1478, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1373:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1481, + "mutability": "mutable", + "name": "m_amount", + "nameLocation": "1400:8:6", + "nodeType": "VariableDeclaration", + "scope": 1484, + "src": "1392:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1480, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1392:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1372:37:6" + }, + "returnParameters": { + "id": 1483, + "nodeType": "ParameterList", + "parameters": [], + "src": "1418:0:6" + }, + "scope": 1530, + "src": "1354:65:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "d914cd4b", + "id": 1489, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "addPool", + "nameLocation": "1433:7:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1487, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1486, + "mutability": "mutable", + "name": "pool_address", + "nameLocation": "1449:12:6", + "nodeType": "VariableDeclaration", + "scope": 1489, + "src": "1441:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1441:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1440:22:6" + }, + "returnParameters": { + "id": 1488, + "nodeType": "ParameterList", + "parameters": [], + "src": "1471:0:6" + }, + "scope": 1530, + "src": "1424:48:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "3b7d0946", + "id": 1494, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removePool", + "nameLocation": "1486:10:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1491, + "mutability": "mutable", + "name": "pool_address", + "nameLocation": "1505:12:6", + "nodeType": "VariableDeclaration", + "scope": 1494, + "src": "1497:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1490, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1497:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1496:22:6" + }, + "returnParameters": { + "id": 1493, + "nodeType": "ParameterList", + "parameters": [], + "src": "1527:0:6" + }, + "scope": 1530, + "src": "1477:51:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "5a446215", + "id": 1501, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setNameAndSymbol", + "nameLocation": "1542:16:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1499, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1496, + "mutability": "mutable", + "name": "_name", + "nameLocation": "1573:5:6", + "nodeType": "VariableDeclaration", + "scope": 1501, + "src": "1559:19:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1495, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1559:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1498, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "1594:7:6", + "nodeType": "VariableDeclaration", + "scope": 1501, + "src": "1580:21:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1497, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1580:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1558:44:6" + }, + "returnParameters": { + "id": 1500, + "nodeType": "ParameterList", + "parameters": [], + "src": "1611:0:6" + }, + "scope": 1530, + "src": "1533:79:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "7adbf973", + "id": 1506, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setOracle", + "nameLocation": "1626:9:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1504, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1503, + "mutability": "mutable", + "name": "_oracle", + "nameLocation": "1644:7:6", + "nodeType": "VariableDeclaration", + "scope": 1506, + "src": "1636:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1502, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1636:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1635:17:6" + }, + "returnParameters": { + "id": 1505, + "nodeType": "ParameterList", + "parameters": [], + "src": "1661:0:6" + }, + "scope": 1530, + "src": "1617:45:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "597bf738", + "id": 1511, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setDEIStep", + "nameLocation": "1676:10:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1509, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1508, + "mutability": "mutable", + "name": "_new_step", + "nameLocation": "1695:9:6", + "nodeType": "VariableDeclaration", + "scope": 1511, + "src": "1687:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1507, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1687:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1686:19:6" + }, + "returnParameters": { + "id": 1510, + "nodeType": "ParameterList", + "parameters": [], + "src": "1714:0:6" + }, + "scope": 1530, + "src": "1667:48:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "11af9a4b", + "id": 1516, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setReserveTracker", + "nameLocation": "1729:17:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1514, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1513, + "mutability": "mutable", + "name": "_reserve_tracker_address", + "nameLocation": "1755:24:6", + "nodeType": "VariableDeclaration", + "scope": 1516, + "src": "1747:32:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1512, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1747:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1746:34:6" + }, + "returnParameters": { + "id": 1515, + "nodeType": "ParameterList", + "parameters": [], + "src": "1789:0:6" + }, + "scope": 1530, + "src": "1720:70:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "1c5df1e5", + "id": 1521, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setRefreshCooldown", + "nameLocation": "1804:18:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1519, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1518, + "mutability": "mutable", + "name": "_new_cooldown", + "nameLocation": "1831:13:6", + "nodeType": "VariableDeclaration", + "scope": 1521, + "src": "1823:21:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1517, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1823:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1822:23:6" + }, + "returnParameters": { + "id": 1520, + "nodeType": "ParameterList", + "parameters": [], + "src": "1854:0:6" + }, + "scope": 1530, + "src": "1795:60:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "aee06a5e", + "id": 1526, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setDEUSAddress", + "nameLocation": "1869:14:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1524, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1523, + "mutability": "mutable", + "name": "_deus_address", + "nameLocation": "1892:13:6", + "nodeType": "VariableDeclaration", + "scope": 1526, + "src": "1884:21:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1522, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1884:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1883:23:6" + }, + "returnParameters": { + "id": 1525, + "nodeType": "ParameterList", + "parameters": [], + "src": "1915:0:6" + }, + "scope": 1530, + "src": "1860:56:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "bef40ec8", + "id": 1529, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "toggleCollateralRatio", + "nameLocation": "1930:21:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1527, + "nodeType": "ParameterList", + "parameters": [], + "src": "1951:2:6" + }, + "returnParameters": { + "id": 1528, + "nodeType": "ParameterList", + "parameters": [], + "src": "1962:0:6" + }, + "scope": 1530, + "src": "1921:42:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1531, + "src": "81:1884:6", + "usedErrors": [] + } + ], + "src": "81:1903:6" + }, + "id": 6 + }, + "contracts/DEI/Pools/DEIPool.sol": { + "ast": { + "absolutePath": "contracts/DEI/Pools/DEIPool.sol", + "exportedSymbols": { + "AccessControl": [ + 6283 + ], + "Address": [ + 11543 + ], + "Context": [ + 456 + ], + "DEIPool": [ + 3582 + ], + "DEIPoolLibrary": [ + 3879 + ], + "ERC20": [ + 4919 + ], + "EnumerableSet": [ + 11955 + ], + "IDEIStablecoin": [ + 1530 + ], + "IDEUSToken": [ + 4350 + ], + "IERC20": [ + 5514 + ], + "SafeMath": [ + 6895 + ], + "TransferHelper": [ + 8767 + ] + }, + "id": 3583, + "license": "GPL-2.0-or-later", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1532, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "80:23:7" + }, + { + "id": 1533, + "literals": [ + "abicoder", + "v2" + ], + "nodeType": "PragmaDirective", + "src": "104:19:7" + }, + { + "absolutePath": "contracts/Uniswap/TransferHelper.sol", + "file": "../../Uniswap/TransferHelper.sol", + "id": 1534, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3583, + "sourceUnit": 8768, + "src": "1467:42:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/DEUS/IDEUS.sol", + "file": "../../DEUS/IDEUS.sol", + "id": 1535, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3583, + "sourceUnit": 4351, + "src": "1510:30:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/DEI/IDEI.sol", + "file": "../../DEI/IDEI.sol", + "id": 1536, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3583, + "sourceUnit": 1531, + "src": "1541:28:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/ERC20/ERC20.sol", + "file": "../../ERC20/ERC20.sol", + "id": 1537, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3583, + "sourceUnit": 4920, + "src": "1570:31:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Governance/AccessControl.sol", + "file": "../../Governance/AccessControl.sol", + "id": 1538, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3583, + "sourceUnit": 6284, + "src": "1602:44:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/DEI/Pools/DEIPoolLibrary.sol", + "file": "./DEIPoolLibrary.sol", + "id": 1539, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3583, + "sourceUnit": 3880, + "src": "1647:30:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 1540, + "name": "AccessControl", + "nodeType": "IdentifierPath", + "referencedDeclaration": 6283, + "src": "1699:13:7" + }, + "id": 1541, + "nodeType": "InheritanceSpecifier", + "src": "1699:13:7" + } + ], + "canonicalName": "DEIPool", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 3582, + "linearizedBaseContracts": [ + 3582, + 6283, + 456 + ], + "name": "DEIPool", + "nameLocation": "1688:7:7", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "DEIPool.RecollateralizeDEI", + "id": 1556, + "members": [ + { + "constant": false, + "id": 1543, + "mutability": "mutable", + "name": "collateral_amount", + "nameLocation": "1755:17:7", + "nodeType": "VariableDeclaration", + "scope": 1556, + "src": "1747:25:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1542, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1747:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1545, + "mutability": "mutable", + "name": "pool_collateral_price", + "nameLocation": "1784:21:7", + "nodeType": "VariableDeclaration", + "scope": 1556, + "src": "1776:29:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1544, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1776:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1548, + "mutability": "mutable", + "name": "collateral_price", + "nameLocation": "1819:16:7", + "nodeType": "VariableDeclaration", + "scope": 1556, + "src": "1809:26:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1546, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1809:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1547, + "nodeType": "ArrayTypeName", + "src": "1809:9:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1550, + "mutability": "mutable", + "name": "deus_current_price", + "nameLocation": "1847:18:7", + "nodeType": "VariableDeclaration", + "scope": 1556, + "src": "1839:26:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1549, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1839:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1552, + "mutability": "mutable", + "name": "expireBlock", + "nameLocation": "1877:11:7", + "nodeType": "VariableDeclaration", + "scope": 1556, + "src": "1869:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1551, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1869:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1555, + "mutability": "mutable", + "name": "sigs", + "nameLocation": "1900:4:7", + "nodeType": "VariableDeclaration", + "scope": 1556, + "src": "1892:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 1553, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1892:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 1554, + "nodeType": "ArrayTypeName", + "src": "1892:7:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "name": "RecollateralizeDEI", + "nameLocation": "1724:18:7", + "nodeType": "StructDefinition", + "scope": 3582, + "src": "1717:191:7", + "visibility": "public" + }, + { + "constant": false, + "id": 1559, + "mutability": "mutable", + "name": "collateral_token", + "nameLocation": "1971:16:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "1957:30:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$4919", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 1558, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1557, + "name": "ERC20", + "nodeType": "IdentifierPath", + "referencedDeclaration": 4919, + "src": "1957:5:7" + }, + "referencedDeclaration": 4919, + "src": "1957:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$4919", + "typeString": "contract ERC20" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 1561, + "mutability": "mutable", + "name": "collateral_address", + "nameLocation": "2006:18:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "1990:34:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1560, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1990:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 1563, + "mutability": "mutable", + "name": "dei_contract_address", + "nameLocation": "2044:20:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "2028:36:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1562, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2028:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 1565, + "mutability": "mutable", + "name": "deus_contract_address", + "nameLocation": "2083:21:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "2067:37:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1564, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2067:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "private" + }, + { + "constant": false, + "functionSelector": "c3355b8d", + "id": 1567, + "mutability": "mutable", + "name": "minting_fee", + "nameLocation": "2123:11:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "2108:26:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1566, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2108:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "cb73999f", + "id": 1569, + "mutability": "mutable", + "name": "redemption_fee", + "nameLocation": "2152:14:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "2137:29:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1568, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2137:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "101197c7", + "id": 1571, + "mutability": "mutable", + "name": "buyback_fee", + "nameLocation": "2184:11:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "2169:26:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1570, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2169:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "fede5c9c", + "id": 1573, + "mutability": "mutable", + "name": "recollat_fee", + "nameLocation": "2213:12:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "2198:27:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1572, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2198:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "3b92da47", + "id": 1577, + "mutability": "mutable", + "name": "redeemDEUSBalances", + "nameLocation": "2264:18:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "2229:53:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 1576, + "keyType": { + "id": 1574, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2237:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2229:27:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 1575, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2248:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "08a7493d", + "id": 1581, + "mutability": "mutable", + "name": "redeemCollateralBalances", + "nameLocation": "2320:24:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "2285:59:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 1580, + "keyType": { + "id": 1578, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2293:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2285:27:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 1579, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2304:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "7b0461e9", + "id": 1583, + "mutability": "mutable", + "name": "unclaimedPoolCollateral", + "nameLocation": "2362:23:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "2347:38:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1582, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2347:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "3648b7dc", + "id": 1585, + "mutability": "mutable", + "name": "unclaimedPoolDEUS", + "nameLocation": "2403:17:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "2388:32:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1584, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2388:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "abae2c4c", + "id": 1589, + "mutability": "mutable", + "name": "lastRedeemed", + "nameLocation": "2458:12:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "2423:47:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 1588, + "keyType": { + "id": 1586, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2431:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2423:27:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 1587, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2442:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 1592, + "mutability": "constant", + "name": "PRICE_PRECISION", + "nameLocation": "2536:15:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "2511:46:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1590, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2511:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "316536", + "id": 1591, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2554:3:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 1595, + "mutability": "constant", + "name": "COLLATERAL_RATIO_PRECISION", + "nameLocation": "2585:26:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "2560:57:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1593, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2560:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "316536", + "id": 1594, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2614:3:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 1598, + "mutability": "constant", + "name": "COLLATERAL_RATIO_MAX", + "nameLocation": "2645:20:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "2620:51:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1596, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2620:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "316536", + "id": 1597, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2668:3:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + }, + "visibility": "private" + }, + { + "constant": false, + "id": 1600, + "mutability": "immutable", + "name": "missing_decimals", + "nameLocation": "2744:16:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "2718:42:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1599, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2718:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "constant": false, + "functionSelector": "6526a12a", + "id": 1603, + "mutability": "mutable", + "name": "pool_ceiling", + "nameLocation": "2859:12:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "2844:31:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1601, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2844:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30", + "id": 1602, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2874:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "c74ec56a", + "id": 1606, + "mutability": "mutable", + "name": "pausedPrice", + "nameLocation": "2949:11:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "2934:30:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1604, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2934:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30", + "id": 1605, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2963:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "4c634934", + "id": 1609, + "mutability": "mutable", + "name": "bonus_rate", + "nameLocation": "3091:10:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "3076:32:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1607, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3076:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "37353030", + "id": 1608, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3104:4:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_7500_by_1", + "typeString": "int_const 7500" + }, + "value": "7500" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "15128425", + "id": 1612, + "mutability": "mutable", + "name": "redemption_delay", + "nameLocation": "3197:16:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "3182:35:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1610, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3182:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "32", + "id": 1611, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3216:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "88d19f1b", + "id": 1615, + "mutability": "mutable", + "name": "daoShare", + "nameLocation": "3281:8:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "3266:27:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1613, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3266:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30", + "id": 1614, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3292:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "visibility": "public" + }, + { + "constant": false, + "id": 1618, + "mutability": "mutable", + "name": "poolLibrary", + "nameLocation": "3312:11:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "3297:26:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEIPoolLibrary_$3879", + "typeString": "contract DEIPoolLibrary" + }, + "typeName": { + "id": 1617, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1616, + "name": "DEIPoolLibrary", + "nodeType": "IdentifierPath", + "referencedDeclaration": 3879, + "src": "3297:14:7" + }, + "referencedDeclaration": 3879, + "src": "3297:14:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEIPoolLibrary_$3879", + "typeString": "contract DEIPoolLibrary" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 1623, + "mutability": "constant", + "name": "MINT_PAUSER", + "nameLocation": "3376:11:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "3351:63:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1619, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3351:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "4d494e545f504155534552", + "id": 1621, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3400:13:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b", + "typeString": "literal_string \"MINT_PAUSER\"" + }, + "value": "MINT_PAUSER" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b", + "typeString": "literal_string \"MINT_PAUSER\"" + } + ], + "id": 1620, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3390:9:7", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 1622, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3390:24:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "private" + }, + { + "constant": true, + "id": 1628, + "mutability": "constant", + "name": "REDEEM_PAUSER", + "nameLocation": "3442:13:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "3417:67:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1624, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3417:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "52454445454d5f504155534552", + "id": 1626, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3468:15:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c3857", + "typeString": "literal_string \"REDEEM_PAUSER\"" + }, + "value": "REDEEM_PAUSER" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_a84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c3857", + "typeString": "literal_string \"REDEEM_PAUSER\"" + } + ], + "id": 1625, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3458:9:7", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 1627, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3458:26:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "private" + }, + { + "constant": true, + "id": 1633, + "mutability": "constant", + "name": "BUYBACK_PAUSER", + "nameLocation": "3512:14:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "3487:69:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1629, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3487:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "4255594241434b5f504155534552", + "id": 1631, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3539:16:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf", + "typeString": "literal_string \"BUYBACK_PAUSER\"" + }, + "value": "BUYBACK_PAUSER" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf", + "typeString": "literal_string \"BUYBACK_PAUSER\"" + } + ], + "id": 1630, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3529:9:7", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 1632, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3529:27:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "private" + }, + { + "constant": true, + "id": 1638, + "mutability": "constant", + "name": "RECOLLATERALIZE_PAUSER", + "nameLocation": "3584:22:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "3559:85:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1634, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3559:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "5245434f4c4c41544552414c495a455f504155534552", + "id": 1636, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3619:24:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f", + "typeString": "literal_string \"RECOLLATERALIZE_PAUSER\"" + }, + "value": "RECOLLATERALIZE_PAUSER" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f", + "typeString": "literal_string \"RECOLLATERALIZE_PAUSER\"" + } + ], + "id": 1635, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3609:9:7", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 1637, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3609:35:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "private" + }, + { + "constant": true, + "functionSelector": "34ddb95d", + "id": 1643, + "mutability": "constant", + "name": "TRUSTY_ROLE", + "nameLocation": "3671:11:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "3647:62:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1639, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3647:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "5452555354595f524f4c45", + "id": 1641, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3695:13:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c", + "typeString": "literal_string \"TRUSTY_ROLE\"" + }, + "value": "TRUSTY_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c", + "typeString": "literal_string \"TRUSTY_ROLE\"" + } + ], + "id": 1640, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3685:9:7", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 1642, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3685:24:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "6d82e314", + "id": 1648, + "mutability": "constant", + "name": "DAO_SHARE_COLLECTOR", + "nameLocation": "3736:19:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "3712:78:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1644, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3712:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "44414f5f53484152455f434f4c4c4543544f52", + "id": 1646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3768:21:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e530", + "typeString": "literal_string \"DAO_SHARE_COLLECTOR\"" + }, + "value": "DAO_SHARE_COLLECTOR" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e530", + "typeString": "literal_string \"DAO_SHARE_COLLECTOR\"" + } + ], + "id": 1645, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3758:9:7", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 1647, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3758:32:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "5de207cc", + "id": 1653, + "mutability": "constant", + "name": "PARAMETER_SETTER_ROLE", + "nameLocation": "3817:21:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "3793:82:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1649, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3793:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "504152414d455445525f5345545445525f524f4c45", + "id": 1651, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3851:23:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f240509", + "typeString": "literal_string \"PARAMETER_SETTER_ROLE\"" + }, + "value": "PARAMETER_SETTER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_e08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f240509", + "typeString": "literal_string \"PARAMETER_SETTER_ROLE\"" + } + ], + "id": 1650, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3841:9:7", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 1652, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3841:34:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "7e4831d3", + "id": 1656, + "mutability": "mutable", + "name": "mintPaused", + "nameLocation": "3925:10:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "3913:30:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1654, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3913:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": { + "hexValue": "66616c7365", + "id": 1655, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3938:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "b235d468", + "id": 1659, + "mutability": "mutable", + "name": "redeemPaused", + "nameLocation": "3958:12:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "3946:32:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1657, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3946:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": { + "hexValue": "66616c7365", + "id": 1658, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3973:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "6d2c5615", + "id": 1662, + "mutability": "mutable", + "name": "recollateralizePaused", + "nameLocation": "3993:21:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "3981:41:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1660, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3981:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": { + "hexValue": "66616c7365", + "id": 1661, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4017:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "7f877f85", + "id": 1665, + "mutability": "mutable", + "name": "buyBackPaused", + "nameLocation": "4037:13:7", + "nodeType": "VariableDeclaration", + "scope": 3582, + "src": "4025:33:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1663, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4025:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": { + "hexValue": "66616c7365", + "id": 1664, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4053:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "visibility": "public" + }, + { + "body": { + "id": 1677, + "nodeType": "Block", + "src": "4124:92:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 1669, + "name": "TRUSTY_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1643, + "src": "4148:11:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 1670, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4161:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1671, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4161:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1668, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6072, + "src": "4140:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 1672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4140:32:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "504f4f4c3a3a796f7520617265206e6f7420747275737479", + "id": 1673, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4177:26:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7b7d20f9ca6e9adc6378137dbeda8a962bb9bf07440b2b9db28bb53f4e464fce", + "typeString": "literal_string \"POOL::you are not trusty\"" + }, + "value": "POOL::you are not trusty" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7b7d20f9ca6e9adc6378137dbeda8a962bb9bf07440b2b9db28bb53f4e464fce", + "typeString": "literal_string \"POOL::you are not trusty\"" + } + ], + "id": 1667, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4128:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4128:79:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1675, + "nodeType": "ExpressionStatement", + "src": "4128:79:7" + }, + { + "id": 1676, + "nodeType": "PlaceholderStatement", + "src": "4211:1:7" + } + ] + }, + "id": 1678, + "name": "onlyTrusty", + "nameLocation": "4111:10:7", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1666, + "nodeType": "ParameterList", + "parameters": [], + "src": "4121:2:7" + }, + "src": "4102:114:7", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1688, + "nodeType": "Block", + "src": "4246:72:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1681, + "name": "redeemPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1659, + "src": "4258:12:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "66616c7365", + "id": 1682, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4274:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "4258:21:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "504f4f4c3a3a52656465656d696e6720697320706175736564", + "id": 1684, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4281:27:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_de458c40ee20c89c9807b7a8a5908e3319b480e8b007f55d3d683bc68bb7186e", + "typeString": "literal_string \"POOL::Redeeming is paused\"" + }, + "value": "POOL::Redeeming is paused" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_de458c40ee20c89c9807b7a8a5908e3319b480e8b007f55d3d683bc68bb7186e", + "typeString": "literal_string \"POOL::Redeeming is paused\"" + } + ], + "id": 1680, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4250:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4250:59:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1686, + "nodeType": "ExpressionStatement", + "src": "4250:59:7" + }, + { + "id": 1687, + "nodeType": "PlaceholderStatement", + "src": "4313:1:7" + } + ] + }, + "id": 1689, + "name": "notRedeemPaused", + "nameLocation": "4228:15:7", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1679, + "nodeType": "ParameterList", + "parameters": [], + "src": "4243:2:7" + }, + "src": "4219:99:7", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1699, + "nodeType": "Block", + "src": "4346:68:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1692, + "name": "mintPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1656, + "src": "4358:10:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "66616c7365", + "id": 1693, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4372:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "4358:19:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "504f4f4c3a3a4d696e74696e6720697320706175736564", + "id": 1695, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4379:25:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_98984f103b51115a1419edfc23f41285c32977e7b02cc32e067bba007d26b4f9", + "typeString": "literal_string \"POOL::Minting is paused\"" + }, + "value": "POOL::Minting is paused" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_98984f103b51115a1419edfc23f41285c32977e7b02cc32e067bba007d26b4f9", + "typeString": "literal_string \"POOL::Minting is paused\"" + } + ], + "id": 1691, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4350:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4350:55:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1697, + "nodeType": "ExpressionStatement", + "src": "4350:55:7" + }, + { + "id": 1698, + "nodeType": "PlaceholderStatement", + "src": "4409:1:7" + } + ] + }, + "id": 1700, + "name": "notMintPaused", + "nameLocation": "4330:13:7", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1690, + "nodeType": "ParameterList", + "parameters": [], + "src": "4343:2:7" + }, + "src": "4321:93:7", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1842, + "nodeType": "Block", + "src": "4670:963:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1718, + "name": "_dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1702, + "src": "4687:21:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4720:1:7", + "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": 1720, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4712:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1719, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4712:7:7", + "typeDescriptions": {} + } + }, + "id": 1722, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4712:10:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4687:35:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1724, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4686:37:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1725, + "name": "_deus_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1704, + "src": "4732:22:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1728, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4766:1:7", + "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": 1727, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4758:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1726, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4758:7:7", + "typeDescriptions": {} + } + }, + "id": 1729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4758:10:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4732:36:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1731, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4731:38:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4686:83:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1733, + "name": "_collateral_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1706, + "src": "4778:19:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1736, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4809:1:7", + "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": 1735, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4801:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1734, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4801:7:7", + "typeDescriptions": {} + } + }, + "id": 1737, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4801:10:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4778:33:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1739, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4777:35:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4686:126:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1741, + "name": "_trusty_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1708, + "src": "4821:15:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1744, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4848:1:7", + "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": 1743, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4840:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1742, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4840:7:7", + "typeDescriptions": {} + } + }, + "id": 1745, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4840:10:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4821:29:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1747, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4820:31:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4686:165:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1749, + "name": "_admin_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1710, + "src": "4860:14:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1752, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4886:1:7", + "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": 1751, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4878:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1750, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4878:7:7", + "typeDescriptions": {} + } + }, + "id": 1753, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4878:10:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4860:28:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1755, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4859:30:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4686:203:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1757, + "name": "_library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1714, + "src": "4898:8:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1760, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4918:1:7", + "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": 1759, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4910:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1758, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4910:7:7", + "typeDescriptions": {} + } + }, + "id": 1761, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4910:10:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4898:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1763, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4897:24:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4686:235:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "504f4f4c3a3a5a65726f2061646472657373206465746563746564", + "id": 1765, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4926:29:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_088ae2e6daf22183595f1e6a5f7779d3f2c298acab226e55240662c2e1b8abe6", + "typeString": "literal_string \"POOL::Zero address detected\"" + }, + "value": "POOL::Zero address detected" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_088ae2e6daf22183595f1e6a5f7779d3f2c298acab226e55240662c2e1b8abe6", + "typeString": "literal_string \"POOL::Zero address detected\"" + } + ], + "id": 1717, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4674:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4674:285:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1767, + "nodeType": "ExpressionStatement", + "src": "4674:285:7" + }, + { + "expression": { + "id": 1772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1768, + "name": "poolLibrary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1618, + "src": "4963:11:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEIPoolLibrary_$3879", + "typeString": "contract DEIPoolLibrary" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1770, + "name": "_library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1714, + "src": "4992:8:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1769, + "name": "DEIPoolLibrary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3879, + "src": "4977:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_DEIPoolLibrary_$3879_$", + "typeString": "type(contract DEIPoolLibrary)" + } + }, + "id": 1771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4977:24:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEIPoolLibrary_$3879", + "typeString": "contract DEIPoolLibrary" + } + }, + "src": "4963:38:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEIPoolLibrary_$3879", + "typeString": "contract DEIPoolLibrary" + } + }, + "id": 1773, + "nodeType": "ExpressionStatement", + "src": "4963:38:7" + }, + { + "expression": { + "id": 1776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1774, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "5005:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1775, + "name": "_dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1702, + "src": "5028:21:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5005:44:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1777, + "nodeType": "ExpressionStatement", + "src": "5005:44:7" + }, + { + "expression": { + "id": 1780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1778, + "name": "deus_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "5053:21:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1779, + "name": "_deus_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1704, + "src": "5077:22:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5053:46:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1781, + "nodeType": "ExpressionStatement", + "src": "5053:46:7" + }, + { + "expression": { + "id": 1784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1782, + "name": "collateral_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1561, + "src": "5103:18:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1783, + "name": "_collateral_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1706, + "src": "5124:19:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5103:40:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1785, + "nodeType": "ExpressionStatement", + "src": "5103:40:7" + }, + { + "expression": { + "id": 1790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1786, + "name": "collateral_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1559, + "src": "5147:16:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$4919", + "typeString": "contract ERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1788, + "name": "_collateral_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1706, + "src": "5172:19:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1787, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4919, + "src": "5166:5:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$4919_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 1789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5166:26:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$4919", + "typeString": "contract ERC20" + } + }, + "src": "5147:45:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$4919", + "typeString": "contract ERC20" + } + }, + "id": 1791, + "nodeType": "ExpressionStatement", + "src": "5147:45:7" + }, + { + "expression": { + "id": 1794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1792, + "name": "pool_ceiling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1603, + "src": "5196:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1793, + "name": "_pool_ceiling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1712, + "src": "5211:13:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5196:28:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1795, + "nodeType": "ExpressionStatement", + "src": "5196:28:7" + }, + { + "expression": { + "id": 1805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1796, + "name": "missing_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1600, + "src": "5228:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "hexValue": "3138", + "id": 1799, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5255:2:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + } + ], + "id": 1798, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5247:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1797, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5247:7:7", + "typeDescriptions": {} + } + }, + "id": 1800, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5247:11:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 1801, + "name": "collateral_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1559, + "src": "5261:16:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$4919", + "typeString": "contract ERC20" + } + }, + "id": 1802, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "decimals", + "nodeType": "MemberAccess", + "referencedDeclaration": 4430, + "src": "5261:25:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", + "typeString": "function () view external returns (uint8)" + } + }, + "id": 1803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5261:27:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "5247:41:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5228:60:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1806, + "nodeType": "ExpressionStatement", + "src": "5228:60:7" + }, + { + "expression": { + "arguments": [ + { + "id": 1808, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6026, + "src": "5304:18:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 1809, + "name": "_admin_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1710, + "src": "5324:14:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1807, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6209, + "src": "5293:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1810, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5293:46:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1811, + "nodeType": "ExpressionStatement", + "src": "5293:46:7" + }, + { + "expression": { + "arguments": [ + { + "id": 1813, + "name": "MINT_PAUSER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1623, + "src": "5354:11:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 1814, + "name": "_trusty_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1708, + "src": "5367:15:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1812, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6209, + "src": "5343:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5343:40:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1816, + "nodeType": "ExpressionStatement", + "src": "5343:40:7" + }, + { + "expression": { + "arguments": [ + { + "id": 1818, + "name": "REDEEM_PAUSER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1628, + "src": "5398:13:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 1819, + "name": "_trusty_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1708, + "src": "5413:15:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1817, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6209, + "src": "5387:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5387:42:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1821, + "nodeType": "ExpressionStatement", + "src": "5387:42:7" + }, + { + "expression": { + "arguments": [ + { + "id": 1823, + "name": "RECOLLATERALIZE_PAUSER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1638, + "src": "5444:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 1824, + "name": "_trusty_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1708, + "src": "5468:15:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1822, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6209, + "src": "5433:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1825, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5433:51:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1826, + "nodeType": "ExpressionStatement", + "src": "5433:51:7" + }, + { + "expression": { + "arguments": [ + { + "id": 1828, + "name": "BUYBACK_PAUSER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1633, + "src": "5499:14:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 1829, + "name": "_trusty_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1708, + "src": "5515:15:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1827, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6209, + "src": "5488:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5488:43:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1831, + "nodeType": "ExpressionStatement", + "src": "5488:43:7" + }, + { + "expression": { + "arguments": [ + { + "id": 1833, + "name": "TRUSTY_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1643, + "src": "5546:11:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 1834, + "name": "_trusty_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1708, + "src": "5559:15:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1832, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6209, + "src": "5535:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5535:40:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1836, + "nodeType": "ExpressionStatement", + "src": "5535:40:7" + }, + { + "expression": { + "arguments": [ + { + "id": 1838, + "name": "PARAMETER_SETTER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1653, + "src": "5590:21:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 1839, + "name": "_trusty_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1708, + "src": "5613:15:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1837, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6209, + "src": "5579:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5579:50:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1841, + "nodeType": "ExpressionStatement", + "src": "5579:50:7" + } + ] + }, + "id": 1843, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1715, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1702, + "mutability": "mutable", + "name": "_dei_contract_address", + "nameLocation": "4482:21:7", + "nodeType": "VariableDeclaration", + "scope": 1843, + "src": "4474:29:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1701, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4474:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1704, + "mutability": "mutable", + "name": "_deus_contract_address", + "nameLocation": "4515:22:7", + "nodeType": "VariableDeclaration", + "scope": 1843, + "src": "4507:30:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1703, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4507:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1706, + "mutability": "mutable", + "name": "_collateral_address", + "nameLocation": "4549:19:7", + "nodeType": "VariableDeclaration", + "scope": 1843, + "src": "4541:27:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1705, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4541:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1708, + "mutability": "mutable", + "name": "_trusty_address", + "nameLocation": "4580:15:7", + "nodeType": "VariableDeclaration", + "scope": 1843, + "src": "4572:23:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1707, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4572:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1710, + "mutability": "mutable", + "name": "_admin_address", + "nameLocation": "4607:14:7", + "nodeType": "VariableDeclaration", + "scope": 1843, + "src": "4599:22:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1709, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4599:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1712, + "mutability": "mutable", + "name": "_pool_ceiling", + "nameLocation": "4633:13:7", + "nodeType": "VariableDeclaration", + "scope": 1843, + "src": "4625:21:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1711, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4625:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1714, + "mutability": "mutable", + "name": "_library", + "nameLocation": "4658:8:7", + "nodeType": "VariableDeclaration", + "scope": 1843, + "src": "4650:16:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1713, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4650:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4470:199:7" + }, + "returnParameters": { + "id": 1716, + "nodeType": "ParameterList", + "parameters": [], + "src": "4670:0:7" + }, + "scope": 3582, + "src": "4459:1174:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1872, + "nodeType": "Block", + "src": "5818:150:7", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 1854, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "5866:4:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEIPool_$3582", + "typeString": "contract DEIPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_DEIPool_$3582", + "typeString": "contract DEIPool" + } + ], + "id": 1853, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5858:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1852, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5858:7:7", + "typeDescriptions": {} + } + }, + "id": 1855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5858:13:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 1850, + "name": "collateral_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1559, + "src": "5831:16:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$4919", + "typeString": "contract ERC20" + } + }, + "id": 1851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 4454, + "src": "5831:26:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 1856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5831:41:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1857, + "name": "unclaimedPoolCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1583, + "src": "5875:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5831:67:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1859, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5830:69:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 1860, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5903:2:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "id": 1861, + "name": "missing_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1600, + "src": "5907:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5903:20:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1863, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5902:22:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5830:94:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 1865, + "name": "collat_usd_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1845, + "src": "5927:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5830:113:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1867, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5829:115:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "id": 1868, + "name": "PRICE_PRECISION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1592, + "src": "5948:15:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1869, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5947:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5829:135:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1849, + "id": 1871, + "nodeType": "Return", + "src": "5822:142:7" + } + ] + }, + "functionSelector": "b6258aaa", + "id": 1873, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "collatDollarBalance", + "nameLocation": "5742:19:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1846, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1845, + "mutability": "mutable", + "name": "collat_usd_price", + "nameLocation": "5770:16:7", + "nodeType": "VariableDeclaration", + "scope": 1873, + "src": "5762:24:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1844, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5762:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5761:26:7" + }, + "returnParameters": { + "id": 1849, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1848, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1873, + "src": "5809:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1847, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5809:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5808:9:7" + }, + "scope": 3582, + "src": "5733:235:7", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1934, + "nodeType": "Block", + "src": "6202:823:7", + "statements": [ + { + "assignments": [ + 1882 + ], + "declarations": [ + { + "constant": false, + "id": 1882, + "mutability": "mutable", + "name": "total_supply", + "nameLocation": "6214:12:7", + "nodeType": "VariableDeclaration", + "scope": 1934, + "src": "6206:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1881, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6206:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1888, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 1884, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "6244:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1883, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "6229:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 1885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6229:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 1886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "totalSupply", + "nodeType": "MemberAccess", + "referencedDeclaration": 1381, + "src": "6229:48:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 1887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6229:50:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6206:73:7" + }, + { + "assignments": [ + 1890 + ], + "declarations": [ + { + "constant": false, + "id": 1890, + "mutability": "mutable", + "name": "global_collateral_ratio", + "nameLocation": "6291:23:7", + "nodeType": "VariableDeclaration", + "scope": 1934, + "src": "6283:31:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1889, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6283:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1896, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 1892, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "6332:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1891, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "6317:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 1893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6317:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 1894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "global_collateral_ratio", + "nodeType": "MemberAccess", + "referencedDeclaration": 1386, + "src": "6317:60:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 1895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6317:62:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6283:96:7" + }, + { + "assignments": [ + 1898 + ], + "declarations": [ + { + "constant": false, + "id": 1898, + "mutability": "mutable", + "name": "global_collat_value", + "nameLocation": "6391:19:7", + "nodeType": "VariableDeclaration", + "scope": 1934, + "src": "6383:27:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1897, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6383:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1905, + "initialValue": { + "arguments": [ + { + "id": 1903, + "name": "collat_usd_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1876, + "src": "6472:16:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + ], + "expression": { + "arguments": [ + { + "id": 1900, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "6428:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1899, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "6413:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 1901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6413:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 1902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "globalCollateralValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 1434, + "src": "6413:58:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (uint256[] memory) view external returns (uint256)" + } + }, + "id": 1904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6413:76:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6383:106:7" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1906, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1890, + "src": "6498:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 1907, + "name": "COLLATERAL_RATIO_PRECISION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1595, + "src": "6524:26:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6498:52:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1913, + "nodeType": "IfStatement", + "src": "6494:113:7", + "trueBody": { + "expression": { + "id": 1911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1909, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1890, + "src": "6555:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1910, + "name": "COLLATERAL_RATIO_PRECISION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1595, + "src": "6581:26:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6555:52:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1912, + "nodeType": "ExpressionStatement", + "src": "6555:52:7" + } + }, + { + "assignments": [ + 1915 + ], + "declarations": [ + { + "constant": false, + "id": 1915, + "mutability": "mutable", + "name": "required_collat_dollar_value_d18", + "nameLocation": "6673:32:7", + "nodeType": "VariableDeclaration", + "scope": 1934, + "src": "6665:40:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1914, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6665:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1923, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1916, + "name": "total_supply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1882, + "src": "6709:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 1917, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1890, + "src": "6724:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6709:38:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1919, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6708:40:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "id": 1920, + "name": "COLLATERAL_RATIO_PRECISION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1595, + "src": "6752:26:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1921, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6751:28:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6708:71:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6665:114:7" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1924, + "name": "global_collat_value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1898, + "src": "6884:19:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 1925, + "name": "required_collat_dollar_value_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1915, + "src": "6906:32:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6884:54:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "expression": { + "hexValue": "30", + "id": 1931, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7020:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 1880, + "id": 1932, + "nodeType": "Return", + "src": "7013:8:7" + }, + "id": 1933, + "nodeType": "IfStatement", + "src": "6880:141:7", + "trueBody": { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1927, + "name": "global_collat_value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1898, + "src": "6950:19:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1928, + "name": "required_collat_dollar_value_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1915, + "src": "6972:32:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6950:54:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1880, + "id": 1930, + "nodeType": "Return", + "src": "6943:61:7" + } + } + ] + }, + "functionSelector": "40e14b78", + "id": 1935, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "availableExcessCollatDV", + "nameLocation": "6113:23:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1877, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1876, + "mutability": "mutable", + "name": "collat_usd_price", + "nameLocation": "6154:16:7", + "nodeType": "VariableDeclaration", + "scope": 1935, + "src": "6137:33:7", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1874, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6137:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1875, + "nodeType": "ArrayTypeName", + "src": "6137:9:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "6136:35:7" + }, + "returnParameters": { + "id": 1880, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1879, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1935, + "src": "6193:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1878, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6193:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6192:9:7" + }, + "scope": 3582, + "src": "6104:921:7", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1946, + "nodeType": "Block", + "src": "7080:67:7", + "statements": [ + { + "assignments": [ + 1941 + ], + "declarations": [ + { + "constant": false, + "id": 1941, + "mutability": "mutable", + "name": "id", + "nameLocation": "7092:2:7", + "nodeType": "VariableDeclaration", + "scope": 1946, + "src": "7084:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1940, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7084:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1942, + "nodeType": "VariableDeclarationStatement", + "src": "7084:10:7" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "7107:24:7", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7112:15:7", + "value": { + "arguments": [], + "functionName": { + "name": "chainid", + "nodeType": "YulIdentifier", + "src": "7118:7:7" + }, + "nodeType": "YulFunctionCall", + "src": "7118:9:7" + }, + "variableNames": [ + { + "name": "id", + "nodeType": "YulIdentifier", + "src": "7112:2:7" + } + ] + } + ] + }, + "evmVersion": "london", + "externalReferences": [ + { + "declaration": 1941, + "isOffset": false, + "isSlot": false, + "src": "7112:2:7", + "valueSize": 1 + } + ], + "id": 1943, + "nodeType": "InlineAssembly", + "src": "7098:33:7" + }, + { + "expression": { + "id": 1944, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1941, + "src": "7141:2:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1939, + "id": 1945, + "nodeType": "Return", + "src": "7134:9:7" + } + ] + }, + "functionSelector": "564b81ef", + "id": 1947, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getChainID", + "nameLocation": "7037:10:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1936, + "nodeType": "ParameterList", + "parameters": [], + "src": "7047:2:7" + }, + "returnParameters": { + "id": 1939, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1938, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1947, + "src": "7071:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1937, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7071:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7070:9:7" + }, + "scope": 3582, + "src": "7028:119:7", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 2088, + "nodeType": "Block", + "src": "7470:1201:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 1965, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "7502:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1964, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "7487:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 1966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7487:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 1967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "global_collateral_ratio", + "nodeType": "MemberAccess", + "referencedDeclaration": 1386, + "src": "7487:60:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 1968, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7487:62:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 1969, + "name": "COLLATERAL_RATIO_MAX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1598, + "src": "7553:20:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7487:86:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "436f6c6c61746572616c20726174696f206d757374206265203e3d2031", + "id": 1971, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7578:31:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2b6a8f4152754b6a991bf1b0a666b82b00923d2fd769bf1e3367643b70f91813", + "typeString": "literal_string \"Collateral ratio must be >= 1\"" + }, + "value": "Collateral ratio must be >= 1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2b6a8f4152754b6a991bf1b0a666b82b00923d2fd769bf1e3367643b70f91813", + "typeString": "literal_string \"Collateral ratio must be >= 1\"" + } + ], + "id": 1963, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7475:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7475:138:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1973, + "nodeType": "ExpressionStatement", + "src": "7475:138:7" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 1979, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "7664:4:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEIPool_$3582", + "typeString": "contract DEIPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_DEIPool_$3582", + "typeString": "contract DEIPool" + } + ], + "id": 1978, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7656:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1977, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7656:7:7", + "typeDescriptions": {} + } + }, + "id": 1980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7656:13:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 1975, + "name": "collateral_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1559, + "src": "7629:16:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$4919", + "typeString": "contract ERC20" + } + }, + "id": 1976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 4454, + "src": "7629:26:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 1981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7629:41:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1982, + "name": "unclaimedPoolCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1583, + "src": "7673:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7629:67:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 1984, + "name": "collateral_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1949, + "src": "7700:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7629:88:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 1986, + "name": "pool_ceiling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1603, + "src": "7721:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7629:104:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5b506f6f6c277320436c6f7365645d3a204365696c696e672072656163686564", + "id": 1988, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7738:34:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cff49a4dc330adf1553dee705fac7862f639b33b74fda177589900b9506a9737", + "typeString": "literal_string \"[Pool's Closed]: Ceiling reached\"" + }, + "value": "[Pool's Closed]: Ceiling reached" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cff49a4dc330adf1553dee705fac7862f639b33b74fda177589900b9506a9737", + "typeString": "literal_string \"[Pool's Closed]: Ceiling reached\"" + } + ], + "id": 1974, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7617:7:7", + "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": "7617:159:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1990, + "nodeType": "ExpressionStatement", + "src": "7617:159:7" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1992, + "name": "expireBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "7789:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 1993, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "7804:5:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "src": "7804:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7789:27:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "504f4f4c3a3a6d696e743174314445493a207369676e61747572652069732065787069726564", + "id": 1996, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7818:40:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f836b804fb91fcbb3dafb5e724f5eeb776ededc2eaf47030c5f454694abcbafe", + "typeString": "literal_string \"POOL::mint1t1DEI: signature is expired\"" + }, + "value": "POOL::mint1t1DEI: signature is expired" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f836b804fb91fcbb3dafb5e724f5eeb776ededc2eaf47030c5f454694abcbafe", + "typeString": "literal_string \"POOL::mint1t1DEI: signature is expired\"" + } + ], + "id": 1991, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7781:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7781:78:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1998, + "nodeType": "ExpressionStatement", + "src": "7781:78:7" + }, + { + "assignments": [ + 2000 + ], + "declarations": [ + { + "constant": false, + "id": 2000, + "mutability": "mutable", + "name": "sighash", + "nameLocation": "7871:7:7", + "nodeType": "VariableDeclaration", + "scope": 2088, + "src": "7863:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1999, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7863:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2011, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 2004, + "name": "collateral_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1561, + "src": "7908:18:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2005, + "name": "collateral_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1951, + "src": "7928:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2006, + "name": "expireBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "7946:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2007, + "name": "getChainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1947, + "src": "7959:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 2008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7959:12:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2002, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "7891:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2003, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "7891:16:7", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7891:81:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2001, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "7881:9:7", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7881:92:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7863:110:7" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 2017, + "name": "sighash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2000, + "src": "8035:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2018, + "name": "sigs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1956, + "src": "8044:4:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + ], + "expression": { + "arguments": [ + { + "id": 2014, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "8000:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2013, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "7985:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 2015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7985:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 2016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "verify_price", + "nodeType": "MemberAccess", + "referencedDeclaration": 1409, + "src": "7985:49:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes memory[] memory) view external returns (bool)" + } + }, + "id": 2019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7985:64:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "504f4f4c3a3a6d696e743174314445493a20696e76616c6964207369676e617475726573", + "id": 2020, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8051:38:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3871818a433a796d8749bf69d3757469c36cba69a6da101f4f86b64a03c25fdf", + "typeString": "literal_string \"POOL::mint1t1DEI: invalid signatures\"" + }, + "value": "POOL::mint1t1DEI: invalid signatures" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3871818a433a796d8749bf69d3757469c36cba69a6da101f4f86b64a03c25fdf", + "typeString": "literal_string \"POOL::mint1t1DEI: invalid signatures\"" + } + ], + "id": 2012, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7977:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7977:113:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2022, + "nodeType": "ExpressionStatement", + "src": "7977:113:7" + }, + { + "assignments": [ + 2024 + ], + "declarations": [ + { + "constant": false, + "id": 2024, + "mutability": "mutable", + "name": "collateral_amount_d18", + "nameLocation": "8103:21:7", + "nodeType": "VariableDeclaration", + "scope": 2088, + "src": "8095:29:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2023, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8095:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2031, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2025, + "name": "collateral_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1949, + "src": "8127:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 2026, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8148:2:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "id": 2027, + "name": "missing_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1600, + "src": "8152:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8148:20:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2029, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8147:22:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8127:42:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8095:74:7" + }, + { + "expression": { + "id": 2038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2032, + "name": "dei_amount_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1961, + "src": "8173:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 2035, + "name": "collateral_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1951, + "src": "8221:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2036, + "name": "collateral_amount_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2024, + "src": "8242:21:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2033, + "name": "poolLibrary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1618, + "src": "8190:11:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEIPoolLibrary_$3879", + "typeString": "contract DEIPoolLibrary" + } + }, + "id": 2034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "calcMint1t1DEI", + "nodeType": "MemberAccess", + "referencedDeclaration": 3627, + "src": "8190:26:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure external returns (uint256)" + } + }, + "id": 2037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8190:77:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8173:94:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2039, + "nodeType": "ExpressionStatement", + "src": "8173:94:7" + }, + { + "expression": { + "id": 2053, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2040, + "name": "dei_amount_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1961, + "src": "8312:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2052, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2049, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2041, + "name": "dei_amount_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1961, + "src": "8330:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "hexValue": "316536", + "id": 2044, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8356:3:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + ], + "id": 2043, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8348:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2042, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8348:7:7", + "typeDescriptions": {} + } + }, + "id": 2045, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8348:12:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 2046, + "name": "minting_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1567, + "src": "8363:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8348:26:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2048, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8347:28:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8330:45:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2050, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8329:47:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "316536", + "id": 2051, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8379:3:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + }, + "src": "8329:53:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8312:70:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2054, + "nodeType": "ExpressionStatement", + "src": "8312:70:7" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 2060, + "name": "collateral_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1559, + "src": "8461:16:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$4919", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$4919", + "typeString": "contract ERC20" + } + ], + "id": 2059, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8453:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2058, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8453:7:7", + "typeDescriptions": {} + } + }, + "id": 2061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8453:25:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 2062, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "8483:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "8483:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 2066, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "8506:4:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEIPool_$3582", + "typeString": "contract DEIPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_DEIPool_$3582", + "typeString": "contract DEIPool" + } + ], + "id": 2065, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8498:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2064, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8498:7:7", + "typeDescriptions": {} + } + }, + "id": 2067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8498:13:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2068, + "name": "collateral_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1949, + "src": "8516:17:7", + "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": 2055, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8767, + "src": "8417:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$8767_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 2057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 8741, + "src": "8417:31:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256)" + } + }, + "id": 2069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8417:120:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2070, + "nodeType": "ExpressionStatement", + "src": "8417:120:7" + }, + { + "expression": { + "id": 2077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2071, + "name": "daoShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1615, + "src": "8542:8:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2076, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2072, + "name": "dei_amount_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1961, + "src": "8554:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2073, + "name": "minting_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1567, + "src": "8572:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8554:29:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "316536", + "id": 2075, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8586:3:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + }, + "src": "8554:35:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8542:47:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2078, + "nodeType": "ExpressionStatement", + "src": "8542:47:7" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2083, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "8640:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "8640:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2085, + "name": "dei_amount_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1961, + "src": "8652:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2080, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "8608:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2079, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "8593:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 2081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8593:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 2082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pool_mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 1484, + "src": "8593:46:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 2086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8593:74:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2087, + "nodeType": "ExpressionStatement", + "src": "8593:74:7" + } + ] + }, + "functionSelector": "32ad1ee4", + "id": 2089, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1959, + "kind": "modifierInvocation", + "modifierName": { + "id": 1958, + "name": "notMintPaused", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1700, + "src": "7420:13:7" + }, + "nodeType": "ModifierInvocation", + "src": "7420:13:7" + } + ], + "name": "mint1t1DEI", + "nameLocation": "7299:10:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1957, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1949, + "mutability": "mutable", + "name": "collateral_amount", + "nameLocation": "7318:17:7", + "nodeType": "VariableDeclaration", + "scope": 2089, + "src": "7310:25:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1948, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7310:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1951, + "mutability": "mutable", + "name": "collateral_price", + "nameLocation": "7345:16:7", + "nodeType": "VariableDeclaration", + "scope": 2089, + "src": "7337:24:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1950, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7337:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1953, + "mutability": "mutable", + "name": "expireBlock", + "nameLocation": "7371:11:7", + "nodeType": "VariableDeclaration", + "scope": 2089, + "src": "7363:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1952, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7363:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1956, + "mutability": "mutable", + "name": "sigs", + "nameLocation": "7401:4:7", + "nodeType": "VariableDeclaration", + "scope": 2089, + "src": "7384:21:7", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 1954, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7384:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 1955, + "nodeType": "ArrayTypeName", + "src": "7384:7:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "7309:97:7" + }, + "returnParameters": { + "id": 1962, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1961, + "mutability": "mutable", + "name": "dei_amount_d18", + "nameLocation": "7453:14:7", + "nodeType": "VariableDeclaration", + "scope": 2089, + "src": "7445:22:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1960, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7445:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7444:24:7" + }, + "scope": 3582, + "src": "7290:1381:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 2199, + "nodeType": "Block", + "src": "8891:870:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 2107, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "8922:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2106, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "8907:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 2108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8907:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 2109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "global_collateral_ratio", + "nodeType": "MemberAccess", + "referencedDeclaration": 1386, + "src": "8907:60:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 2110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8907:62:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2111, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8973:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8907:67:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "436f6c6c61746572616c20726174696f206d7573742062652030", + "id": 2113, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8979:28:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f64a17d208f26e05f2312b5ee80f462bf5bab19979dfd330950359be93bd2d66", + "typeString": "literal_string \"Collateral ratio must be 0\"" + }, + "value": "Collateral ratio must be 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f64a17d208f26e05f2312b5ee80f462bf5bab19979dfd330950359be93bd2d66", + "typeString": "literal_string \"Collateral ratio must be 0\"" + } + ], + "id": 2105, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8895:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8895:116:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2115, + "nodeType": "ExpressionStatement", + "src": "8895:116:7" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2117, + "name": "expireBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2095, + "src": "9023:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 2118, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "9038:5:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "src": "9038:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9023:27:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617475726520697320657870697265642e", + "id": 2121, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9052:49:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0553f3220b1c65f13a1a0bcfbae12cc9d57080d375095d8011e479f9a164d51f", + "typeString": "literal_string \"POOL::mintAlgorithmicDEI: signature is expired.\"" + }, + "value": "POOL::mintAlgorithmicDEI: signature is expired." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0553f3220b1c65f13a1a0bcfbae12cc9d57080d375095d8011e479f9a164d51f", + "typeString": "literal_string \"POOL::mintAlgorithmicDEI: signature is expired.\"" + } + ], + "id": 2116, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9015:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9015:87:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2123, + "nodeType": "ExpressionStatement", + "src": "9015:87:7" + }, + { + "assignments": [ + 2125 + ], + "declarations": [ + { + "constant": false, + "id": 2125, + "mutability": "mutable", + "name": "sighash", + "nameLocation": "9114:7:7", + "nodeType": "VariableDeclaration", + "scope": 2199, + "src": "9106:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2124, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9106:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2136, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 2129, + "name": "deus_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "9151:21:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2130, + "name": "deus_current_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2093, + "src": "9174:18:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2131, + "name": "expireBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2095, + "src": "9194:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2132, + "name": "getChainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1947, + "src": "9207:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 2133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9207:12:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2127, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "9134:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2128, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "9134:16:7", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9134:86:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2126, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "9124:9:7", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9124:97:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9106:115:7" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 2142, + "name": "sighash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2125, + "src": "9283:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2143, + "name": "sigs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2098, + "src": "9292:4:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + ], + "expression": { + "arguments": [ + { + "id": 2139, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "9248:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2138, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "9233:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 2140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9233:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 2141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "verify_price", + "nodeType": "MemberAccess", + "referencedDeclaration": 1409, + "src": "9233:49:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes memory[] memory) view external returns (bool)" + } + }, + "id": 2144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9233:64:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "504f4f4c3a3a6d696e74416c676f726974686d69634445493a20696e76616c6964207369676e617475726573", + "id": 2145, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9299:46:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5a2d3f9bcb3c5bd0b1926b1856db5dd186810b6e73d5cb9f87ee953c4da7fee2", + "typeString": "literal_string \"POOL::mintAlgorithmicDEI: invalid signatures\"" + }, + "value": "POOL::mintAlgorithmicDEI: invalid signatures" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5a2d3f9bcb3c5bd0b1926b1856db5dd186810b6e73d5cb9f87ee953c4da7fee2", + "typeString": "literal_string \"POOL::mintAlgorithmicDEI: invalid signatures\"" + } + ], + "id": 2137, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9225:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9225:121:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2147, + "nodeType": "ExpressionStatement", + "src": "9225:121:7" + }, + { + "expression": { + "id": 2154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2148, + "name": "dei_amount_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2103, + "src": "9351:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 2151, + "name": "deus_current_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2093, + "src": "9407:18:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2152, + "name": "deus_amount_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2091, + "src": "9448:15:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2149, + "name": "poolLibrary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1618, + "src": "9368:11:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEIPoolLibrary_$3879", + "typeString": "contract DEIPoolLibrary" + } + }, + "id": 2150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "calcMintAlgorithmicDEI", + "nodeType": "MemberAccess", + "referencedDeclaration": 3645, + "src": "9368:34:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure external returns (uint256)" + } + }, + "id": 2153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9368:99:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9351:116:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2155, + "nodeType": "ExpressionStatement", + "src": "9351:116:7" + }, + { + "expression": { + "id": 2171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2156, + "name": "dei_amount_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2103, + "src": "9472:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2157, + "name": "dei_amount_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2103, + "src": "9490:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "hexValue": "316536", + "id": 2160, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9516:3:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + ], + "id": 2159, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9508:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2158, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9508:7:7", + "typeDescriptions": {} + } + }, + "id": 2161, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9508:12:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "components": [ + { + "id": 2162, + "name": "minting_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1567, + "src": "9524:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2163, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9523:13:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9508:28:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2165, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9507:30:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9490:47:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2167, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9489:49:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "hexValue": "316536", + "id": 2168, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9542:3:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "id": 2169, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9541:5:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + }, + "src": "9489:57:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9472:74:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2172, + "nodeType": "ExpressionStatement", + "src": "9472:74:7" + }, + { + "expression": { + "id": 2179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2173, + "name": "daoShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1615, + "src": "9550:8:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2174, + "name": "dei_amount_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2103, + "src": "9562:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2175, + "name": "minting_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1567, + "src": "9580:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9562:29:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "316536", + "id": 2177, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9594:3:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + }, + "src": "9562:35:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9550:47:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2180, + "nodeType": "ExpressionStatement", + "src": "9550:47:7" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2185, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "9651:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "9651:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2187, + "name": "deus_amount_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2091, + "src": "9663:15:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2182, + "name": "deus_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "9613:21:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2181, + "name": "IDEUSToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4350, + "src": "9602:10:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEUSToken_$4350_$", + "typeString": "type(contract IDEUSToken)" + } + }, + "id": 2183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9602:33:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEUSToken_$4350", + "typeString": "contract IDEUSToken" + } + }, + "id": 2184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pool_burn_from", + "nodeType": "MemberAccess", + "referencedDeclaration": 4323, + "src": "9602:48:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 2188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9602:77:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2189, + "nodeType": "ExpressionStatement", + "src": "9602:77:7" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2194, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "9730:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "9730:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2196, + "name": "dei_amount_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2103, + "src": "9742:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2191, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "9698:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2190, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "9683:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 2192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9683:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 2193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pool_mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 1484, + "src": "9683:46:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 2197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9683:74:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2198, + "nodeType": "ExpressionStatement", + "src": "9683:74:7" + } + ] + }, + "functionSelector": "c6301e5d", + "id": 2200, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2101, + "kind": "modifierInvocation", + "modifierName": { + "id": 2100, + "name": "notMintPaused", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1700, + "src": "8844:13:7" + }, + "nodeType": "ModifierInvocation", + "src": "8844:13:7" + } + ], + "name": "mintAlgorithmicDEI", + "nameLocation": "8708:18:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2099, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2091, + "mutability": "mutable", + "name": "deus_amount_d18", + "nameLocation": "8738:15:7", + "nodeType": "VariableDeclaration", + "scope": 2200, + "src": "8730:23:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2090, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8730:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2093, + "mutability": "mutable", + "name": "deus_current_price", + "nameLocation": "8765:18:7", + "nodeType": "VariableDeclaration", + "scope": 2200, + "src": "8757:26:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2092, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8757:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2095, + "mutability": "mutable", + "name": "expireBlock", + "nameLocation": "8795:11:7", + "nodeType": "VariableDeclaration", + "scope": 2200, + "src": "8787:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2094, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8787:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2098, + "mutability": "mutable", + "name": "sigs", + "nameLocation": "8827:4:7", + "nodeType": "VariableDeclaration", + "scope": 2200, + "src": "8810:21:7", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 2096, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8810:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 2097, + "nodeType": "ArrayTypeName", + "src": "8810:7:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "8726:108:7" + }, + "returnParameters": { + "id": 2104, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2103, + "mutability": "mutable", + "name": "dei_amount_d18", + "nameLocation": "8875:14:7", + "nodeType": "VariableDeclaration", + "scope": 2200, + "src": "8867:22:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2102, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8867:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8866:24:7" + }, + "scope": 3582, + "src": "8699:1062:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 2393, + "nodeType": "Block", + "src": "10102:1795:7", + "statements": [ + { + "assignments": [ + 2221 + ], + "declarations": [ + { + "constant": false, + "id": 2221, + "mutability": "mutable", + "name": "global_collateral_ratio", + "nameLocation": "10114:23:7", + "nodeType": "VariableDeclaration", + "scope": 2393, + "src": "10106:31:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2220, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10106:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2227, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 2223, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "10155:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2222, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "10140:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 2224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10140:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 2225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "global_collateral_ratio", + "nodeType": "MemberAccess", + "referencedDeclaration": 1386, + "src": "10140:60:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 2226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10140:62:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10106:96:7" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2229, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2221, + "src": "10218:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 2230, + "name": "COLLATERAL_RATIO_MAX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1598, + "src": "10244:20:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10218:46:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2232, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2221, + "src": "10268:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2233, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10294:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10268:27:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10218:77:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "436f6c6c61746572616c20726174696f206e6565647320746f206265206265747765656e202e30303030303120616e64202e393939393939", + "id": 2236, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10300:58:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3a4aaa4225031aefd603a0181e03bfba377ad02f3a40d8d4ff79e4b75af91117", + "typeString": "literal_string \"Collateral ratio needs to be between .000001 and .999999\"" + }, + "value": "Collateral ratio needs to be between .000001 and .999999" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3a4aaa4225031aefd603a0181e03bfba377ad02f3a40d8d4ff79e4b75af91117", + "typeString": "literal_string \"Collateral ratio needs to be between .000001 and .999999\"" + } + ], + "id": 2228, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "10206:7:7", + "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": "10206:156:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2238, + "nodeType": "ExpressionStatement", + "src": "10206:156:7" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 2244, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "10413:4:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEIPool_$3582", + "typeString": "contract DEIPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_DEIPool_$3582", + "typeString": "contract DEIPool" + } + ], + "id": 2243, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10405:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2242, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10405:7:7", + "typeDescriptions": {} + } + }, + "id": 2245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10405:13:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 2240, + "name": "collateral_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1559, + "src": "10378:16:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$4919", + "typeString": "contract ERC20" + } + }, + "id": 2241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 4454, + "src": "10378:26:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10378:41:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 2247, + "name": "unclaimedPoolCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1583, + "src": "10422:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10378:67:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2249, + "name": "collateral_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2202, + "src": "10448:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10378:87:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 2251, + "name": "pool_ceiling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1603, + "src": "10469:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10378:103:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "506f6f6c206365696c696e6720726561636865642c206e6f206d6f7265204445492063616e206265206d696e7465642077697468207468697320636f6c6c61746572616c", + "id": 2253, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10486:70:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_415add743154eebc1c14f0dcbb6d42364bd9228c5bfab92187476352ba4cf3a4", + "typeString": "literal_string \"Pool ceiling reached, no more DEI can be minted with this collateral\"" + }, + "value": "Pool ceiling reached, no more DEI can be minted with this collateral" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_415add743154eebc1c14f0dcbb6d42364bd9228c5bfab92187476352ba4cf3a4", + "typeString": "literal_string \"Pool ceiling reached, no more DEI can be minted with this collateral\"" + } + ], + "id": 2239, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "10366:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10366:194:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2255, + "nodeType": "ExpressionStatement", + "src": "10366:194:7" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2257, + "name": "expireBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2210, + "src": "10573:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 2258, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "10588:5:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "src": "10588:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10573:27:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "504f4f4c3a3a6d696e744672616374696f6e616c4445493a207369676e617475726520697320657870697265642e", + "id": 2261, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10602:48:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3517d2a2517b8811826efd915add7c546f6c6059a93aba596e992ef7ede2c237", + "typeString": "literal_string \"POOL::mintFractionalDEI: signature is expired.\"" + }, + "value": "POOL::mintFractionalDEI: signature is expired." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3517d2a2517b8811826efd915add7c546f6c6059a93aba596e992ef7ede2c237", + "typeString": "literal_string \"POOL::mintFractionalDEI: signature is expired.\"" + } + ], + "id": 2256, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "10565:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10565:86:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2263, + "nodeType": "ExpressionStatement", + "src": "10565:86:7" + }, + { + "assignments": [ + 2265 + ], + "declarations": [ + { + "constant": false, + "id": 2265, + "mutability": "mutable", + "name": "sighash", + "nameLocation": "10663:7:7", + "nodeType": "VariableDeclaration", + "scope": 2393, + "src": "10655:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2264, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10655:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2278, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 2269, + "name": "collateral_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1561, + "src": "10700:18:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2270, + "name": "collateral_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2206, + "src": "10720:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2271, + "name": "deus_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "10738:21:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2272, + "name": "deus_current_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2208, + "src": "10761:18:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2273, + "name": "expireBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2210, + "src": "10781:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2274, + "name": "getChainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1947, + "src": "10794:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 2275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10794:12:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2267, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "10683:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2268, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "10683:16:7", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10683:124:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2266, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "10673:9:7", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10673:135:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10655:153:7" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 2284, + "name": "sighash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2265, + "src": "10870:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2285, + "name": "sigs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2213, + "src": "10879:4:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + ], + "expression": { + "arguments": [ + { + "id": 2281, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "10835:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2280, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "10820:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 2282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10820:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 2283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "verify_price", + "nodeType": "MemberAccess", + "referencedDeclaration": 1409, + "src": "10820:49:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes memory[] memory) view external returns (bool)" + } + }, + "id": 2286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10820:64:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "504f4f4c3a3a6d696e744672616374696f6e616c4445493a20696e76616c6964207369676e617475726573", + "id": 2287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10886:45:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_70791a0be90f5705149d45e0236213cb0328457b5d86e6288006e4f6774b09e7", + "typeString": "literal_string \"POOL::mintFractionalDEI: invalid signatures\"" + }, + "value": "POOL::mintFractionalDEI: invalid signatures" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_70791a0be90f5705149d45e0236213cb0328457b5d86e6288006e4f6774b09e7", + "typeString": "literal_string \"POOL::mintFractionalDEI: invalid signatures\"" + } + ], + "id": 2279, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "10812:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10812:120:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2289, + "nodeType": "ExpressionStatement", + "src": "10812:120:7" + }, + { + "assignments": [ + 2294 + ], + "declarations": [ + { + "constant": false, + "id": 2294, + "mutability": "mutable", + "name": "input_params", + "nameLocation": "10973:12:7", + "nodeType": "VariableDeclaration", + "scope": 2393, + "src": "10937:48:7", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintFD_Params_$3600_memory_ptr", + "typeString": "struct DEIPoolLibrary.MintFD_Params" + }, + "typeName": { + "id": 2293, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2292, + "name": "DEIPoolLibrary.MintFD_Params", + "nodeType": "IdentifierPath", + "referencedDeclaration": 3600, + "src": "10937:28:7" + }, + "referencedDeclaration": 3600, + "src": "10937:28:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintFD_Params_$3600_storage_ptr", + "typeString": "struct DEIPoolLibrary.MintFD_Params" + } + }, + "visibility": "internal" + } + ], + "id": 2295, + "nodeType": "VariableDeclarationStatement", + "src": "10937:48:7" + }, + { + "id": 2315, + "nodeType": "Block", + "src": "11044:274:7", + "statements": [ + { + "assignments": [ + 2297 + ], + "declarations": [ + { + "constant": false, + "id": 2297, + "mutability": "mutable", + "name": "collateral_amount_d18", + "nameLocation": "11057:21:7", + "nodeType": "VariableDeclaration", + "scope": 2315, + "src": "11049:29:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2296, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11049:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2304, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2298, + "name": "collateral_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2202, + "src": "11081:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 2299, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11102:2:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "id": 2300, + "name": "missing_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1600, + "src": "11106:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11102:20:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2302, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11101:22:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11081:42:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11049:74:7" + }, + { + "expression": { + "id": 2313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2305, + "name": "input_params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2294, + "src": "11128:12:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintFD_Params_$3600_memory_ptr", + "typeString": "struct DEIPoolLibrary.MintFD_Params memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 2308, + "name": "deus_current_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2208, + "src": "11184:18:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2309, + "name": "collateral_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2206, + "src": "11215:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2310, + "name": "collateral_amount_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2297, + "src": "11244:21:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2311, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2221, + "src": "11278:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2306, + "name": "DEIPoolLibrary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3879, + "src": "11143:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_DEIPoolLibrary_$3879_$", + "typeString": "type(contract DEIPoolLibrary)" + } + }, + "id": 2307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MintFD_Params", + "nodeType": "MemberAccess", + "referencedDeclaration": 3600, + "src": "11143:28:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_MintFD_Params_$3600_storage_ptr_$", + "typeString": "type(struct DEIPoolLibrary.MintFD_Params storage pointer)" + } + }, + "id": 2312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11143:170:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintFD_Params_$3600_memory_ptr", + "typeString": "struct DEIPoolLibrary.MintFD_Params memory" + } + }, + "src": "11128:185:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintFD_Params_$3600_memory_ptr", + "typeString": "struct DEIPoolLibrary.MintFD_Params memory" + } + }, + "id": 2314, + "nodeType": "ExpressionStatement", + "src": "11128:185:7" + } + ] + }, + { + "assignments": [ + 2317 + ], + "declarations": [ + { + "constant": false, + "id": 2317, + "mutability": "mutable", + "name": "deus_needed", + "nameLocation": "11336:11:7", + "nodeType": "VariableDeclaration", + "scope": 2393, + "src": "11328:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2316, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11328:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2318, + "nodeType": "VariableDeclarationStatement", + "src": "11328:19:7" + }, + { + "expression": { + "id": 2326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 2319, + "name": "mint_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2218, + "src": "11352:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2320, + "name": "deus_needed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2317, + "src": "11365:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2321, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "11351:26:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 2324, + "name": "input_params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2294, + "src": "11414:12:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintFD_Params_$3600_memory_ptr", + "typeString": "struct DEIPoolLibrary.MintFD_Params memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_MintFD_Params_$3600_memory_ptr", + "typeString": "struct DEIPoolLibrary.MintFD_Params memory" + } + ], + "expression": { + "id": 2322, + "name": "poolLibrary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1618, + "src": "11380:11:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEIPoolLibrary_$3879", + "typeString": "contract DEIPoolLibrary" + } + }, + "id": 2323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "calcMintFractionalDEI", + "nodeType": "MemberAccess", + "referencedDeclaration": 3703, + "src": "11380:33:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$_t_struct$_MintFD_Params_$3600_memory_ptr_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (struct DEIPoolLibrary.MintFD_Params memory) pure external returns (uint256,uint256)" + } + }, + "id": 2325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11380:47:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "11351:76:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2327, + "nodeType": "ExpressionStatement", + "src": "11351:76:7" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2329, + "name": "deus_needed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2317, + "src": "11439:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 2330, + "name": "deus_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2204, + "src": "11454:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11439:26:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4e6f7420656e6f756768204445555320696e707574746564", + "id": 2332, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11467:26:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_32c377f750f3acdff4f31738199007cf625ea4cb5a4b65f0253238ad0d6fe603", + "typeString": "literal_string \"Not enough DEUS inputted\"" + }, + "value": "Not enough DEUS inputted" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_32c377f750f3acdff4f31738199007cf625ea4cb5a4b65f0253238ad0d6fe603", + "typeString": "literal_string \"Not enough DEUS inputted\"" + } + ], + "id": 2328, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "11431:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11431:63:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2334, + "nodeType": "ExpressionStatement", + "src": "11431:63:7" + }, + { + "expression": { + "id": 2349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2335, + "name": "mint_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2218, + "src": "11501:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2336, + "name": "mint_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2218, + "src": "11516:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "hexValue": "316536", + "id": 2339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11539:3:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + ], + "id": 2338, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11531:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2337, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11531:7:7", + "typeDescriptions": {} + } + }, + "id": 2340, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11531:12:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 2341, + "name": "minting_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1567, + "src": "11546:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11531:26:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2343, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11530:28:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11516:42:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2345, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11515:44:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "hexValue": "316536", + "id": 2346, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11563:3:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "id": 2347, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11562:5:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + }, + "src": "11515:52:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11501:66:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2350, + "nodeType": "ExpressionStatement", + "src": "11501:66:7" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2355, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11621:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "11621:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2357, + "name": "deus_needed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2317, + "src": "11633:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2352, + "name": "deus_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "11583:21:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2351, + "name": "IDEUSToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4350, + "src": "11572:10:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEUSToken_$4350_$", + "typeString": "type(contract IDEUSToken)" + } + }, + "id": 2353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11572:33:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEUSToken_$4350", + "typeString": "contract IDEUSToken" + } + }, + "id": 2354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pool_burn_from", + "nodeType": "MemberAccess", + "referencedDeclaration": 4323, + "src": "11572:48:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 2358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11572:73:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2359, + "nodeType": "ExpressionStatement", + "src": "11572:73:7" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 2365, + "name": "collateral_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1559, + "src": "11693:16:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$4919", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$4919", + "typeString": "contract ERC20" + } + ], + "id": 2364, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11685:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2363, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11685:7:7", + "typeDescriptions": {} + } + }, + "id": 2366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11685:25:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 2367, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11715:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "11715:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 2371, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "11738:4:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEIPool_$3582", + "typeString": "contract DEIPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_DEIPool_$3582", + "typeString": "contract DEIPool" + } + ], + "id": 2370, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11730:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2369, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11730:7:7", + "typeDescriptions": {} + } + }, + "id": 2372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11730:13:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2373, + "name": "collateral_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2202, + "src": "11748:17:7", + "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": 2360, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8767, + "src": "11649:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$8767_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 2362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 8741, + "src": "11649:31:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256)" + } + }, + "id": 2374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11649:120:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2375, + "nodeType": "ExpressionStatement", + "src": "11649:120:7" + }, + { + "expression": { + "id": 2382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2376, + "name": "daoShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1615, + "src": "11774:8:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2377, + "name": "mint_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2218, + "src": "11786:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2378, + "name": "minting_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1567, + "src": "11801:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11786:26:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "316536", + "id": 2380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11815:3:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + }, + "src": "11786:32:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11774:44:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2383, + "nodeType": "ExpressionStatement", + "src": "11774:44:7" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2388, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11869:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "11869:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2390, + "name": "mint_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2218, + "src": "11881:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2385, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "11837:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2384, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "11822:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 2386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11822:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 2387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pool_mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 1484, + "src": "11822:46:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 2391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11822:71:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2392, + "nodeType": "ExpressionStatement", + "src": "11822:71:7" + } + ] + }, + "functionSelector": "54f9769d", + "id": 2394, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2216, + "kind": "modifierInvocation", + "modifierName": { + "id": 2215, + "name": "notMintPaused", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1700, + "src": "10058:13:7" + }, + "nodeType": "ModifierInvocation", + "src": "10058:13:7" + } + ], + "name": "mintFractionalDEI", + "nameLocation": "9870:17:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2214, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2202, + "mutability": "mutable", + "name": "collateral_amount", + "nameLocation": "9899:17:7", + "nodeType": "VariableDeclaration", + "scope": 2394, + "src": "9891:25:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2201, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9891:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2204, + "mutability": "mutable", + "name": "deus_amount", + "nameLocation": "9928:11:7", + "nodeType": "VariableDeclaration", + "scope": 2394, + "src": "9920:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2203, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9920:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2206, + "mutability": "mutable", + "name": "collateral_price", + "nameLocation": "9951:16:7", + "nodeType": "VariableDeclaration", + "scope": 2394, + "src": "9943:24:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2205, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9943:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2208, + "mutability": "mutable", + "name": "deus_current_price", + "nameLocation": "9979:18:7", + "nodeType": "VariableDeclaration", + "scope": 2394, + "src": "9971:26:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2207, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9971:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2210, + "mutability": "mutable", + "name": "expireBlock", + "nameLocation": "10009:11:7", + "nodeType": "VariableDeclaration", + "scope": 2394, + "src": "10001:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2209, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10001:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2213, + "mutability": "mutable", + "name": "sigs", + "nameLocation": "10041:4:7", + "nodeType": "VariableDeclaration", + "scope": 2394, + "src": "10024:21:7", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 2211, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10024:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 2212, + "nodeType": "ArrayTypeName", + "src": "10024:7:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "9887:161:7" + }, + "returnParameters": { + "id": 2219, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2218, + "mutability": "mutable", + "name": "mint_amount", + "nameLocation": "10089:11:7", + "nodeType": "VariableDeclaration", + "scope": 2394, + "src": "10081:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2217, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10081:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10080:21:7" + }, + "scope": 3582, + "src": "9861:2036:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 2542, + "nodeType": "Block", + "src": "12088:1318:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 2410, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "12119:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2409, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "12104:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 2411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12104:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 2412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "global_collateral_ratio", + "nodeType": "MemberAccess", + "referencedDeclaration": 1386, + "src": "12104:60:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 2413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12104:62:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 2414, + "name": "COLLATERAL_RATIO_MAX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1598, + "src": "12170:20:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12104:86:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "436f6c6c61746572616c20726174696f206d757374206265203d3d2031", + "id": 2416, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12195:31:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c70433350355bf0543fc06a466fe44bcb01281d5a63b8bb87c74c17650f3e4c7", + "typeString": "literal_string \"Collateral ratio must be == 1\"" + }, + "value": "Collateral ratio must be == 1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c70433350355bf0543fc06a466fe44bcb01281d5a63b8bb87c74c17650f3e4c7", + "typeString": "literal_string \"Collateral ratio must be == 1\"" + } + ], + "id": 2408, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "12092:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12092:138:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2418, + "nodeType": "ExpressionStatement", + "src": "12092:138:7" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2420, + "name": "expireBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "12243:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 2421, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "12258:5:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "src": "12258:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12243:27:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617475726520697320657870697265642e", + "id": 2424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12272:49:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0553f3220b1c65f13a1a0bcfbae12cc9d57080d375095d8011e479f9a164d51f", + "typeString": "literal_string \"POOL::mintAlgorithmicDEI: signature is expired.\"" + }, + "value": "POOL::mintAlgorithmicDEI: signature is expired." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0553f3220b1c65f13a1a0bcfbae12cc9d57080d375095d8011e479f9a164d51f", + "typeString": "literal_string \"POOL::mintAlgorithmicDEI: signature is expired.\"" + } + ], + "id": 2419, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "12235:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12235:87:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2426, + "nodeType": "ExpressionStatement", + "src": "12235:87:7" + }, + { + "assignments": [ + 2428 + ], + "declarations": [ + { + "constant": false, + "id": 2428, + "mutability": "mutable", + "name": "sighash", + "nameLocation": "12334:7:7", + "nodeType": "VariableDeclaration", + "scope": 2542, + "src": "12326:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2427, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12326:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2439, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 2432, + "name": "collateral_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1561, + "src": "12371:18:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2433, + "name": "collateral_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2398, + "src": "12391:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2434, + "name": "expireBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "12409:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2435, + "name": "getChainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1947, + "src": "12422:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 2436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12422:12:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2430, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "12354:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2431, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "12354:16:7", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12354:81:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2429, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "12344:9:7", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2438, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12344:92:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12326:110:7" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 2445, + "name": "sighash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2428, + "src": "12498:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2446, + "name": "sigs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "12507:4:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + ], + "expression": { + "arguments": [ + { + "id": 2442, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "12463:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2441, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "12448:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 2443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12448:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 2444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "verify_price", + "nodeType": "MemberAccess", + "referencedDeclaration": 1409, + "src": "12448:49:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes memory[] memory) view external returns (bool)" + } + }, + "id": 2447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12448:64:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "504f4f4c3a3a72656465656d3174314445493a20696e76616c6964207369676e617475726573", + "id": 2448, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12514:40:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3b8d4b54db08ed890798fdc55ba1c410b1b90a23a79193c7486d04051b31717b", + "typeString": "literal_string \"POOL::redeem1t1DEI: invalid signatures\"" + }, + "value": "POOL::redeem1t1DEI: invalid signatures" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3b8d4b54db08ed890798fdc55ba1c410b1b90a23a79193c7486d04051b31717b", + "typeString": "literal_string \"POOL::redeem1t1DEI: invalid signatures\"" + } + ], + "id": 2440, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "12440:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12440:115:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2450, + "nodeType": "ExpressionStatement", + "src": "12440:115:7" + }, + { + "assignments": [ + 2452 + ], + "declarations": [ + { + "constant": false, + "id": 2452, + "mutability": "mutable", + "name": "DEI_amount_precision", + "nameLocation": "12615:20:7", + "nodeType": "VariableDeclaration", + "scope": 2542, + "src": "12607:28:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2451, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12607:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2459, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2458, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2453, + "name": "DEI_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2396, + "src": "12638:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 2454, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12652:2:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "id": 2455, + "name": "missing_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1600, + "src": "12656:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12652:20:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2457, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12651:22:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12638:35:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12607:66:7" + }, + { + "assignments": [ + 2461 + ], + "declarations": [ + { + "constant": false, + "id": 2461, + "mutability": "mutable", + "name": "collateral_needed", + "nameLocation": "12685:17:7", + "nodeType": "VariableDeclaration", + "scope": 2542, + "src": "12677:25:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2460, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12677:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2467, + "initialValue": { + "arguments": [ + { + "id": 2464, + "name": "collateral_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2398, + "src": "12738:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2465, + "name": "DEI_amount_precision", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2452, + "src": "12759:20:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2462, + "name": "poolLibrary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1618, + "src": "12705:11:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEIPoolLibrary_$3879", + "typeString": "contract DEIPoolLibrary" + } + }, + "id": 2463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "calcRedeem1t1DEI", + "nodeType": "MemberAccess", + "referencedDeclaration": 3721, + "src": "12705:28:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure external returns (uint256)" + } + }, + "id": 2466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12705:78:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12677:106:7" + }, + { + "expression": { + "id": 2482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2468, + "name": "collateral_needed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2461, + "src": "12788:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2469, + "name": "collateral_needed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2461, + "src": "12809:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "hexValue": "316536", + "id": 2472, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12838:3:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + ], + "id": 2471, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12830:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2470, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12830:7:7", + "typeDescriptions": {} + } + }, + "id": 2473, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12830:12:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 2474, + "name": "redemption_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1569, + "src": "12845:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12830:29:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2476, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12829:31:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12809:51:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2478, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12808:53:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "hexValue": "316536", + "id": 2479, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12865:3:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "id": 2480, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12864:5:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + }, + "src": "12808:61:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12788:81:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2483, + "nodeType": "ExpressionStatement", + "src": "12788:81:7" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2485, + "name": "collateral_needed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2461, + "src": "12885:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 2490, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "12941:4:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEIPool_$3582", + "typeString": "contract DEIPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_DEIPool_$3582", + "typeString": "contract DEIPool" + } + ], + "id": 2489, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12933:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2488, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12933:7:7", + "typeDescriptions": {} + } + }, + "id": 2491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12933:13:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 2486, + "name": "collateral_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1559, + "src": "12906:16:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$4919", + "typeString": "contract ERC20" + } + }, + "id": 2487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 4454, + "src": "12906:26:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12906:41:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 2493, + "name": "unclaimedPoolCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1583, + "src": "12950:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12906:67:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12885:88:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c", + "id": 2496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12978:31:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f52391ebd610d5d9d518357ceeaf45367429ac1fd3150210dcaba2450d5bcce8", + "typeString": "literal_string \"Not enough collateral in pool\"" + }, + "value": "Not enough collateral in pool" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f52391ebd610d5d9d518357ceeaf45367429ac1fd3150210dcaba2450d5bcce8", + "typeString": "literal_string \"Not enough collateral in pool\"" + } + ], + "id": 2484, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "12873:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12873:140:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2498, + "nodeType": "ExpressionStatement", + "src": "12873:140:7" + }, + { + "expression": { + "id": 2509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2499, + "name": "redeemCollateralBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1581, + "src": "13018:24:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2502, + "indexExpression": { + "expression": { + "id": 2500, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "13043:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "13043:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "13018:36:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 2503, + "name": "redeemCollateralBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1581, + "src": "13057:24:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2506, + "indexExpression": { + "expression": { + "id": 2504, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "13082:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "13082:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13057:36:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2507, + "name": "collateral_needed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2461, + "src": "13096:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13057:56:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13018:95:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2510, + "nodeType": "ExpressionStatement", + "src": "13018:95:7" + }, + { + "expression": { + "id": 2515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2511, + "name": "unclaimedPoolCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1583, + "src": "13117:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2512, + "name": "unclaimedPoolCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1583, + "src": "13143:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2513, + "name": "collateral_needed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2461, + "src": "13169:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13143:43:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13117:69:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2516, + "nodeType": "ExpressionStatement", + "src": "13117:69:7" + }, + { + "expression": { + "id": 2523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2517, + "name": "lastRedeemed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1589, + "src": "13190:12:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2520, + "indexExpression": { + "expression": { + "id": 2518, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "13203:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "13203:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "13190:24:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 2521, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "13217:5:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "src": "13217:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13190:39:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2524, + "nodeType": "ExpressionStatement", + "src": "13190:39:7" + }, + { + "expression": { + "id": 2531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2525, + "name": "daoShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1615, + "src": "13234:8:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2526, + "name": "DEI_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2396, + "src": "13246:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2527, + "name": "redemption_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1569, + "src": "13259:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13246:27:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "316536", + "id": 2529, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13276:3:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + }, + "src": "13246:33:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13234:45:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2532, + "nodeType": "ExpressionStatement", + "src": "13234:45:7" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2537, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "13379:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "13379:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2539, + "name": "DEI_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2396, + "src": "13391:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2534, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "13342:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2533, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "13327:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 2535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13327:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 2536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pool_burn_from", + "nodeType": "MemberAccess", + "referencedDeclaration": 1477, + "src": "13327:51:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 2540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13327:75:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2541, + "nodeType": "ExpressionStatement", + "src": "13327:75:7" + } + ] + }, + "functionSelector": "254cd2bd", + "id": 2543, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2406, + "kind": "modifierInvocation", + "modifierName": { + "id": 2405, + "name": "notRedeemPaused", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1689, + "src": "12071:15:7" + }, + "nodeType": "ModifierInvocation", + "src": "12071:15:7" + } + ], + "name": "redeem1t1DEI", + "nameLocation": "11955:12:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2404, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2396, + "mutability": "mutable", + "name": "DEI_amount", + "nameLocation": "11976:10:7", + "nodeType": "VariableDeclaration", + "scope": 2543, + "src": "11968:18:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2395, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11968:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2398, + "mutability": "mutable", + "name": "collateral_price", + "nameLocation": "11996:16:7", + "nodeType": "VariableDeclaration", + "scope": 2543, + "src": "11988:24:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2397, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11988:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2400, + "mutability": "mutable", + "name": "expireBlock", + "nameLocation": "12022:11:7", + "nodeType": "VariableDeclaration", + "scope": 2543, + "src": "12014:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2399, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12014:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2403, + "mutability": "mutable", + "name": "sigs", + "nameLocation": "12052:4:7", + "nodeType": "VariableDeclaration", + "scope": 2543, + "src": "12035:21:7", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 2401, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12035:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 2402, + "nodeType": "ArrayTypeName", + "src": "12035:7:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "11967:90:7" + }, + "returnParameters": { + "id": 2407, + "nodeType": "ParameterList", + "parameters": [], + "src": "12088:0:7" + }, + "scope": 3582, + "src": "11946:1460:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 2777, + "nodeType": "Block", + "src": "13722:2205:7", + "statements": [ + { + "assignments": [ + 2560 + ], + "declarations": [ + { + "constant": false, + "id": 2560, + "mutability": "mutable", + "name": "global_collateral_ratio", + "nameLocation": "13734:23:7", + "nodeType": "VariableDeclaration", + "scope": 2777, + "src": "13726:31:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2559, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13726:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2566, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 2562, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "13775:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2561, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "13760:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 2563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13760:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 2564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "global_collateral_ratio", + "nodeType": "MemberAccess", + "referencedDeclaration": 1386, + "src": "13760:60:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 2565, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13760:62:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13726:96:7" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2568, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2560, + "src": "13838:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 2569, + "name": "COLLATERAL_RATIO_MAX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1598, + "src": "13864:20:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13838:46:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2571, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2560, + "src": "13888:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2572, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13914:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "13888:27:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "13838:77:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20436f6c6c61746572616c20726174696f206e6565647320746f206265206265747765656e202e30303030303120616e64202e393939393939", + "id": 2575, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13920:85:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1eb003467dd04b32fe18359370bc0d0e41e237ed2bf1be23765de9081983dd0d", + "typeString": "literal_string \"POOL::redeemFractionalDEI: Collateral ratio needs to be between .000001 and .999999\"" + }, + "value": "POOL::redeemFractionalDEI: Collateral ratio needs to be between .000001 and .999999" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1eb003467dd04b32fe18359370bc0d0e41e237ed2bf1be23765de9081983dd0d", + "typeString": "literal_string \"POOL::redeemFractionalDEI: Collateral ratio needs to be between .000001 and .999999\"" + } + ], + "id": 2567, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "13826:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13826:183:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2577, + "nodeType": "ExpressionStatement", + "src": "13826:183:7" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2579, + "name": "expireBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2551, + "src": "14022:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 2580, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "14037:5:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "src": "14037:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14022:27:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4445493a3a72656465656d4672616374696f6e616c4445493a207369676e61747572652069732065787069726564", + "id": 2583, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14051:48:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d441a1ecab801b1c575c77e3c185431fd7b0029d666fc7417a9f7556b3f83d6f", + "typeString": "literal_string \"DEI::redeemFractionalDEI: signature is expired\"" + }, + "value": "DEI::redeemFractionalDEI: signature is expired" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d441a1ecab801b1c575c77e3c185431fd7b0029d666fc7417a9f7556b3f83d6f", + "typeString": "literal_string \"DEI::redeemFractionalDEI: signature is expired\"" + } + ], + "id": 2578, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "14014:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14014:86:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2585, + "nodeType": "ExpressionStatement", + "src": "14014:86:7" + }, + { + "assignments": [ + 2587 + ], + "declarations": [ + { + "constant": false, + "id": 2587, + "mutability": "mutable", + "name": "sighash", + "nameLocation": "14112:7:7", + "nodeType": "VariableDeclaration", + "scope": 2777, + "src": "14104:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2586, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14104:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2600, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 2591, + "name": "collateral_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1561, + "src": "14149:18:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2592, + "name": "collateral_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2547, + "src": "14169:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2593, + "name": "deus_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "14187:21:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2594, + "name": "deus_current_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2549, + "src": "14210:18:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2595, + "name": "expireBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2551, + "src": "14230:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2596, + "name": "getChainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1947, + "src": "14243:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 2597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14243:12:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2589, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "14132:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2590, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "14132:16:7", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14132:124:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2588, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "14122:9:7", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14122:135:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14104:153:7" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 2606, + "name": "sighash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2587, + "src": "14319:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2607, + "name": "sigs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2554, + "src": "14328:4:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + ], + "expression": { + "arguments": [ + { + "id": 2603, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "14284:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2602, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "14269:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 2604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14269:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 2605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "verify_price", + "nodeType": "MemberAccess", + "referencedDeclaration": 1409, + "src": "14269:49:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes memory[] memory) view external returns (bool)" + } + }, + "id": 2608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14269:64:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20696e76616c6964207369676e617475726573", + "id": 2609, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14335:47:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3cf3652b2acfb73942e459b043ef1100fffabb4093e48d3162412f77ff7ce9c4", + "typeString": "literal_string \"POOL::redeemFractionalDEI: invalid signatures\"" + }, + "value": "POOL::redeemFractionalDEI: invalid signatures" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3cf3652b2acfb73942e459b043ef1100fffabb4093e48d3162412f77ff7ce9c4", + "typeString": "literal_string \"POOL::redeemFractionalDEI: invalid signatures\"" + } + ], + "id": 2601, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "14261:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14261:122:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2611, + "nodeType": "ExpressionStatement", + "src": "14261:122:7" + }, + { + "assignments": [ + 2613 + ], + "declarations": [ + { + "constant": false, + "id": 2613, + "mutability": "mutable", + "name": "deus_amount", + "nameLocation": "14450:11:7", + "nodeType": "VariableDeclaration", + "scope": 2777, + "src": "14442:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2612, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14442:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2614, + "nodeType": "VariableDeclarationStatement", + "src": "14442:19:7" + }, + { + "assignments": [ + 2616 + ], + "declarations": [ + { + "constant": false, + "id": 2616, + "mutability": "mutable", + "name": "collateral_amount", + "nameLocation": "14473:17:7", + "nodeType": "VariableDeclaration", + "scope": 2777, + "src": "14465:25:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2615, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14465:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2617, + "nodeType": "VariableDeclarationStatement", + "src": "14465:25:7" + }, + { + "id": 2689, + "nodeType": "Block", + "src": "14494:684:7", + "statements": [ + { + "assignments": [ + 2619 + ], + "declarations": [ + { + "constant": false, + "id": 2619, + "mutability": "mutable", + "name": "col_price_usd", + "nameLocation": "14507:13:7", + "nodeType": "VariableDeclaration", + "scope": 2689, + "src": "14499:21:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2618, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14499:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2621, + "initialValue": { + "id": 2620, + "name": "collateral_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2547, + "src": "14523:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14499:40:7" + }, + { + "assignments": [ + 2623 + ], + "declarations": [ + { + "constant": false, + "id": 2623, + "mutability": "mutable", + "name": "DEI_amount_post_fee", + "nameLocation": "14553:19:7", + "nodeType": "VariableDeclaration", + "scope": 2689, + "src": "14545:27:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2622, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14545:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2637, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2624, + "name": "DEI_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2545, + "src": "14576:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "hexValue": "316536", + "id": 2627, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14598:3:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + ], + "id": 2626, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14590:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2625, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14590:7:7", + "typeDescriptions": {} + } + }, + "id": 2628, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14590:12:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 2629, + "name": "redemption_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1569, + "src": "14605:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14590:29:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2631, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14589:31:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14576:44:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2633, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14575:46:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "id": 2634, + "name": "PRICE_PRECISION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1592, + "src": "14625:15:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2635, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14624:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14575:66:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14545:96:7" + }, + { + "assignments": [ + 2639 + ], + "declarations": [ + { + "constant": false, + "id": 2639, + "mutability": "mutable", + "name": "deus_dollar_value_d18", + "nameLocation": "14655:21:7", + "nodeType": "VariableDeclaration", + "scope": 2689, + "src": "14647:29:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2638, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14647:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2650, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2640, + "name": "DEI_amount_post_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2623, + "src": "14679:19:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2641, + "name": "DEI_amount_post_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2623, + "src": "14703:19:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2642, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2560, + "src": "14725:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14703:45:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2644, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14702:47:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "id": 2645, + "name": "PRICE_PRECISION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1592, + "src": "14753:15:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2646, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14752:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14702:67:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2648, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14701:69:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14679:91:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14647:123:7" + }, + { + "expression": { + "id": 2659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2651, + "name": "deus_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2613, + "src": "14775:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2652, + "name": "deus_dollar_value_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2639, + "src": "14789:21:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "id": 2653, + "name": "PRICE_PRECISION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1592, + "src": "14814:15:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2654, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14813:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14789:41:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "id": 2656, + "name": "deus_current_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2549, + "src": "14834:18:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2657, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14833:20:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14789:64:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14775:78:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2660, + "nodeType": "ExpressionStatement", + "src": "14775:78:7" + }, + { + "assignments": [ + 2662 + ], + "declarations": [ + { + "constant": false, + "id": 2662, + "mutability": "mutable", + "name": "DEI_amount_precision", + "nameLocation": "14915:20:7", + "nodeType": "VariableDeclaration", + "scope": 2689, + "src": "14907:28:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2661, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14907:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2669, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2663, + "name": "DEI_amount_post_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2623, + "src": "14938:19:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 2664, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14961:2:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "id": 2665, + "name": "missing_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1600, + "src": "14965:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14961:20:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2667, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14960:22:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14938:44:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14907:75:7" + }, + { + "assignments": [ + 2671 + ], + "declarations": [ + { + "constant": false, + "id": 2671, + "mutability": "mutable", + "name": "collateral_dollar_value", + "nameLocation": "14995:23:7", + "nodeType": "VariableDeclaration", + "scope": 2689, + "src": "14987:31:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2670, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14987:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2678, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2672, + "name": "DEI_amount_precision", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2662, + "src": "15022:20:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2673, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2560, + "src": "15045:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15022:46:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2675, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "15021:48:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 2676, + "name": "PRICE_PRECISION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1592, + "src": "15072:15:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15021:66:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14987:100:7" + }, + { + "expression": { + "id": 2687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2679, + "name": "collateral_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2616, + "src": "15092:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2680, + "name": "collateral_dollar_value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2671, + "src": "15113:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2681, + "name": "PRICE_PRECISION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1592, + "src": "15139:15:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15113:41:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2683, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "15112:43:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "id": 2684, + "name": "col_price_usd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2619, + "src": "15159:13:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2685, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "15158:15:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15112:61:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15092:81:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2688, + "nodeType": "ExpressionStatement", + "src": "15092:81:7" + } + ] + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2691, + "name": "collateral_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2616, + "src": "15193:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 2696, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "15249:4:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEIPool_$3582", + "typeString": "contract DEIPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_DEIPool_$3582", + "typeString": "contract DEIPool" + } + ], + "id": 2695, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15241:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2694, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15241:7:7", + "typeDescriptions": {} + } + }, + "id": 2697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15241:13:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 2692, + "name": "collateral_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1559, + "src": "15214:16:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$4919", + "typeString": "contract ERC20" + } + }, + "id": 2693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 4454, + "src": "15214:26:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15214:41:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 2699, + "name": "unclaimedPoolCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1583, + "src": "15258:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15214:67:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15193:88:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c", + "id": 2702, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15286:31:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f52391ebd610d5d9d518357ceeaf45367429ac1fd3150210dcaba2450d5bcce8", + "typeString": "literal_string \"Not enough collateral in pool\"" + }, + "value": "Not enough collateral in pool" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f52391ebd610d5d9d518357ceeaf45367429ac1fd3150210dcaba2450d5bcce8", + "typeString": "literal_string \"Not enough collateral in pool\"" + } + ], + "id": 2690, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "15181:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15181:140:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2704, + "nodeType": "ExpressionStatement", + "src": "15181:140:7" + }, + { + "expression": { + "id": 2715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2705, + "name": "redeemCollateralBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1581, + "src": "15326:24:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2708, + "indexExpression": { + "expression": { + "id": 2706, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "15351:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "15351:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "15326:36:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 2709, + "name": "redeemCollateralBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1581, + "src": "15365:24:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2712, + "indexExpression": { + "expression": { + "id": 2710, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "15390:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "15390:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15365:36:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2713, + "name": "collateral_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2616, + "src": "15404:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15365:56:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15326:95:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2716, + "nodeType": "ExpressionStatement", + "src": "15326:95:7" + }, + { + "expression": { + "id": 2721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2717, + "name": "unclaimedPoolCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1583, + "src": "15425:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2718, + "name": "unclaimedPoolCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1583, + "src": "15451:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2719, + "name": "collateral_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2616, + "src": "15477:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15451:43:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15425:69:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2722, + "nodeType": "ExpressionStatement", + "src": "15425:69:7" + }, + { + "expression": { + "id": 2733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2723, + "name": "redeemDEUSBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1577, + "src": "15499:18:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2726, + "indexExpression": { + "expression": { + "id": 2724, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "15518:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "15518:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "15499:30:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 2727, + "name": "redeemDEUSBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1577, + "src": "15532:18:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2730, + "indexExpression": { + "expression": { + "id": 2728, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "15551:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "15551:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15532:30:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2731, + "name": "deus_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2613, + "src": "15565:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15532:44:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15499:77:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2734, + "nodeType": "ExpressionStatement", + "src": "15499:77:7" + }, + { + "expression": { + "id": 2739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2735, + "name": "unclaimedPoolDEUS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1585, + "src": "15580:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2736, + "name": "unclaimedPoolDEUS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1585, + "src": "15600:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2737, + "name": "deus_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2613, + "src": "15620:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15600:31:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15580:51:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2740, + "nodeType": "ExpressionStatement", + "src": "15580:51:7" + }, + { + "expression": { + "id": 2747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2741, + "name": "lastRedeemed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1589, + "src": "15636:12:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2744, + "indexExpression": { + "expression": { + "id": 2742, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "15649:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "15649:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "15636:24:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 2745, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "15663:5:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "src": "15663:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15636:39:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2748, + "nodeType": "ExpressionStatement", + "src": "15636:39:7" + }, + { + "expression": { + "id": 2755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2749, + "name": "daoShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1615, + "src": "15680:8:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2750, + "name": "DEI_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2545, + "src": "15692:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2751, + "name": "redemption_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1569, + "src": "15705:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15692:27:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "316536", + "id": 2753, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15722:3:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + }, + "src": "15692:33:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15680:45:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2756, + "nodeType": "ExpressionStatement", + "src": "15680:45:7" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2761, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "15825:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "15825:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2763, + "name": "DEI_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2545, + "src": "15837:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2758, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "15788:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2757, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "15773:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 2759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15773:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 2760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pool_burn_from", + "nodeType": "MemberAccess", + "referencedDeclaration": 1477, + "src": "15773:51:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 2764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15773:75:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2765, + "nodeType": "ExpressionStatement", + "src": "15773:75:7" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 2772, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "15904:4:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEIPool_$3582", + "typeString": "contract DEIPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_DEIPool_$3582", + "typeString": "contract DEIPool" + } + ], + "id": 2771, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15896:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2770, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15896:7:7", + "typeDescriptions": {} + } + }, + "id": 2773, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15896:13:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2774, + "name": "deus_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2613, + "src": "15911:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2767, + "name": "deus_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "15863:21:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2766, + "name": "IDEUSToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4350, + "src": "15852:10:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEUSToken_$4350_$", + "typeString": "type(contract IDEUSToken)" + } + }, + "id": 2768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15852:33:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEUSToken_$4350", + "typeString": "contract IDEUSToken" + } + }, + "id": 2769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pool_mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4330, + "src": "15852:43:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 2775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15852:71:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2776, + "nodeType": "ExpressionStatement", + "src": "15852:71:7" + } + ] + }, + "functionSelector": "eb2d7461", + "id": 2778, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2557, + "kind": "modifierInvocation", + "modifierName": { + "id": 2556, + "name": "notRedeemPaused", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1689, + "src": "13706:15:7" + }, + "nodeType": "ModifierInvocation", + "src": "13706:15:7" + } + ], + "name": "redeemFractionalDEI", + "nameLocation": "13545:19:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2555, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2545, + "mutability": "mutable", + "name": "DEI_amount", + "nameLocation": "13576:10:7", + "nodeType": "VariableDeclaration", + "scope": 2778, + "src": "13568:18:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2544, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13568:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2547, + "mutability": "mutable", + "name": "collateral_price", + "nameLocation": "13598:16:7", + "nodeType": "VariableDeclaration", + "scope": 2778, + "src": "13590:24:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2546, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13590:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2549, + "mutability": "mutable", + "name": "deus_current_price", + "nameLocation": "13627:18:7", + "nodeType": "VariableDeclaration", + "scope": 2778, + "src": "13619:26:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2548, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13619:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2551, + "mutability": "mutable", + "name": "expireBlock", + "nameLocation": "13657:11:7", + "nodeType": "VariableDeclaration", + "scope": 2778, + "src": "13649:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2550, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13649:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2554, + "mutability": "mutable", + "name": "sigs", + "nameLocation": "13689:4:7", + "nodeType": "VariableDeclaration", + "scope": 2778, + "src": "13672:21:7", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 2552, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13672:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 2553, + "nodeType": "ArrayTypeName", + "src": "13672:7:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "13564:132:7" + }, + "returnParameters": { + "id": 2558, + "nodeType": "ParameterList", + "parameters": [], + "src": "13722:0:7" + }, + "scope": 3582, + "src": "13536:2391:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 2918, + "nodeType": "Block", + "src": "16134:1153:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 2794, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "16161:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2793, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "16146:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 2795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16146:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 2796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "global_collateral_ratio", + "nodeType": "MemberAccess", + "referencedDeclaration": 1386, + "src": "16146:60:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 2797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16146:62:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2798, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16212:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16146:67:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "504f4f4c3a3a72656465656d416c676f726974686d69634445493a20436f6c6c61746572616c20726174696f206d7573742062652030", + "id": 2800, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16215:56:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_219e324e833041c644ccb1dd3dba73aaa878497ddb310916decd8247cfffb1bd", + "typeString": "literal_string \"POOL::redeemAlgorithmicDEI: Collateral ratio must be 0\"" + }, + "value": "POOL::redeemAlgorithmicDEI: Collateral ratio must be 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_219e324e833041c644ccb1dd3dba73aaa878497ddb310916decd8247cfffb1bd", + "typeString": "literal_string \"POOL::redeemAlgorithmicDEI: Collateral ratio must be 0\"" + } + ], + "id": 2792, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "16138:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16138:134:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2802, + "nodeType": "ExpressionStatement", + "src": "16138:134:7" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2804, + "name": "expireBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2784, + "src": "16285:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 2805, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "16300:5:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "src": "16300:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16285:27:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4445493a3a72656465656d416c676f726974686d69634445493a207369676e617475726520697320657870697265642e", + "id": 2808, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16314:50:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_af86e93bd0220a55e8ca62f5f35862820e5999de1371ac209bb45c45b39ee5de", + "typeString": "literal_string \"DEI::redeemAlgorithmicDEI: signature is expired.\"" + }, + "value": "DEI::redeemAlgorithmicDEI: signature is expired." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_af86e93bd0220a55e8ca62f5f35862820e5999de1371ac209bb45c45b39ee5de", + "typeString": "literal_string \"DEI::redeemAlgorithmicDEI: signature is expired.\"" + } + ], + "id": 2803, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "16277:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16277:88:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2810, + "nodeType": "ExpressionStatement", + "src": "16277:88:7" + }, + { + "assignments": [ + 2812 + ], + "declarations": [ + { + "constant": false, + "id": 2812, + "mutability": "mutable", + "name": "sighash", + "nameLocation": "16377:7:7", + "nodeType": "VariableDeclaration", + "scope": 2918, + "src": "16369:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2811, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16369:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2823, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 2816, + "name": "deus_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "16414:21:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2817, + "name": "deus_current_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2782, + "src": "16437:18:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2818, + "name": "expireBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2784, + "src": "16457:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2819, + "name": "getChainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1947, + "src": "16470:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 2820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16470:12:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2814, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "16397:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2815, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "16397:16:7", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16397:86:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2813, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "16387:9:7", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16387:97:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16369:115:7" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 2829, + "name": "sighash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2812, + "src": "16546:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2830, + "name": "sigs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2787, + "src": "16555:4:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + ], + "expression": { + "arguments": [ + { + "id": 2826, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "16511:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2825, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "16496:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 2827, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16496:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 2828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "verify_price", + "nodeType": "MemberAccess", + "referencedDeclaration": 1409, + "src": "16496:49:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes memory[] memory) view external returns (bool)" + } + }, + "id": 2831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16496:64:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "504f4f4c3a3a72656465656d416c676f726974686d69634445493a20696e76616c6964207369676e617475726573", + "id": 2832, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16562:48:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_bff4c2607c2670a7edf36f88b5d5987db2ccc6a59b36f486c4c57f193ba00833", + "typeString": "literal_string \"POOL::redeemAlgorithmicDEI: invalid signatures\"" + }, + "value": "POOL::redeemAlgorithmicDEI: invalid signatures" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_bff4c2607c2670a7edf36f88b5d5987db2ccc6a59b36f486c4c57f193ba00833", + "typeString": "literal_string \"POOL::redeemAlgorithmicDEI: invalid signatures\"" + } + ], + "id": 2824, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "16488:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16488:123:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2834, + "nodeType": "ExpressionStatement", + "src": "16488:123:7" + }, + { + "assignments": [ + 2836 + ], + "declarations": [ + { + "constant": false, + "id": 2836, + "mutability": "mutable", + "name": "deus_dollar_value_d18", + "nameLocation": "16624:21:7", + "nodeType": "VariableDeclaration", + "scope": 2918, + "src": "16616:29:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2835, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16616:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2838, + "initialValue": { + "id": 2837, + "name": "DEI_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2780, + "src": "16648:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16616:42:7" + }, + { + "expression": { + "id": 2852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2839, + "name": "deus_dollar_value_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2836, + "src": "16663:21:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2840, + "name": "deus_dollar_value_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2836, + "src": "16688:21:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "hexValue": "316536", + "id": 2843, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16721:3:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + ], + "id": 2842, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16713:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2841, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16713:7:7", + "typeDescriptions": {} + } + }, + "id": 2844, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16713:12:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 2845, + "name": "redemption_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1569, + "src": "16728:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16713:29:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2847, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "16712:31:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16688:55:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2849, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "16687:57:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "316536", + "id": 2850, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16747:3:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + }, + "src": "16687:63:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16663:87:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2853, + "nodeType": "ExpressionStatement", + "src": "16663:87:7" + }, + { + "assignments": [ + 2855 + ], + "declarations": [ + { + "constant": false, + "id": 2855, + "mutability": "mutable", + "name": "deus_amount", + "nameLocation": "16776:11:7", + "nodeType": "VariableDeclaration", + "scope": 2918, + "src": "16768:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2854, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16768:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2863, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2856, + "name": "deus_dollar_value_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2836, + "src": "16791:21:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "id": 2857, + "name": "PRICE_PRECISION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1592, + "src": "16816:15:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2858, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "16815:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16791:41:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2860, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "16790:43:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 2861, + "name": "deus_current_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2782, + "src": "16836:18:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16790:64:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16768:86:7" + }, + { + "expression": { + "id": 2874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2864, + "name": "redeemDEUSBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1577, + "src": "16859:18:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2867, + "indexExpression": { + "expression": { + "id": 2865, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "16878:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "16878:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "16859:30:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 2868, + "name": "redeemDEUSBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1577, + "src": "16892:18:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2871, + "indexExpression": { + "expression": { + "id": 2869, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "16911:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "16911:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16892:30:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2872, + "name": "deus_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2855, + "src": "16925:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16892:44:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16859:77:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2875, + "nodeType": "ExpressionStatement", + "src": "16859:77:7" + }, + { + "expression": { + "id": 2880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2876, + "name": "unclaimedPoolDEUS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1585, + "src": "16940:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2877, + "name": "unclaimedPoolDEUS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1585, + "src": "16960:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2878, + "name": "deus_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2855, + "src": "16980:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16960:31:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16940:51:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2881, + "nodeType": "ExpressionStatement", + "src": "16940:51:7" + }, + { + "expression": { + "id": 2888, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2882, + "name": "lastRedeemed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1589, + "src": "16996:12:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2885, + "indexExpression": { + "expression": { + "id": 2883, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "17009:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "17009:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "16996:24:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 2886, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "17023:5:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "src": "17023:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16996:39:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2889, + "nodeType": "ExpressionStatement", + "src": "16996:39:7" + }, + { + "expression": { + "id": 2896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2890, + "name": "daoShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1615, + "src": "17040:8:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2891, + "name": "DEI_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2780, + "src": "17052:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2892, + "name": "redemption_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1569, + "src": "17065:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17052:27:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "316536", + "id": 2894, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17082:3:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + }, + "src": "17052:33:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17040:45:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2897, + "nodeType": "ExpressionStatement", + "src": "17040:45:7" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2902, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "17185:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "17185:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2904, + "name": "DEI_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2780, + "src": "17197:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2899, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "17148:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2898, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "17133:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 2900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17133:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 2901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pool_burn_from", + "nodeType": "MemberAccess", + "referencedDeclaration": 1477, + "src": "17133:51:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 2905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17133:75:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2906, + "nodeType": "ExpressionStatement", + "src": "17133:75:7" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 2913, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "17264:4:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEIPool_$3582", + "typeString": "contract DEIPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_DEIPool_$3582", + "typeString": "contract DEIPool" + } + ], + "id": 2912, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17256:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2911, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17256:7:7", + "typeDescriptions": {} + } + }, + "id": 2914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17256:13:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2915, + "name": "deus_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2855, + "src": "17271:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2908, + "name": "deus_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "17223:21:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2907, + "name": "IDEUSToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4350, + "src": "17212:10:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEUSToken_$4350_$", + "typeString": "type(contract IDEUSToken)" + } + }, + "id": 2909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17212:33:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEUSToken_$4350", + "typeString": "contract IDEUSToken" + } + }, + "id": 2910, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pool_mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4330, + "src": "17212:43:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 2916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17212:71:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2917, + "nodeType": "ExpressionStatement", + "src": "17212:71:7" + } + ] + }, + "functionSelector": "978b73b5", + "id": 2919, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2790, + "kind": "modifierInvocation", + "modifierName": { + "id": 2789, + "name": "notRedeemPaused", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1689, + "src": "16118:15:7" + }, + "nodeType": "ModifierInvocation", + "src": "16118:15:7" + } + ], + "name": "redeemAlgorithmicDEI", + "nameLocation": "15985:20:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2788, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2780, + "mutability": "mutable", + "name": "DEI_amount", + "nameLocation": "16017:10:7", + "nodeType": "VariableDeclaration", + "scope": 2919, + "src": "16009:18:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2779, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16009:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2782, + "mutability": "mutable", + "name": "deus_current_price", + "nameLocation": "16039:18:7", + "nodeType": "VariableDeclaration", + "scope": 2919, + "src": "16031:26:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2781, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16031:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2784, + "mutability": "mutable", + "name": "expireBlock", + "nameLocation": "16069:11:7", + "nodeType": "VariableDeclaration", + "scope": 2919, + "src": "16061:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2783, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16061:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2787, + "mutability": "mutable", + "name": "sigs", + "nameLocation": "16101:4:7", + "nodeType": "VariableDeclaration", + "scope": 2919, + "src": "16084:21:7", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 2785, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "16084:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 2786, + "nodeType": "ArrayTypeName", + "src": "16084:7:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "16005:103:7" + }, + "returnParameters": { + "id": 2791, + "nodeType": "ParameterList", + "parameters": [], + "src": "16134:0:7" + }, + "scope": 3582, + "src": "15976:1311:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 3046, + "nodeType": "Block", + "src": "17649:1058:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 2923, + "name": "lastRedeemed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1589, + "src": "17666:12:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2926, + "indexExpression": { + "expression": { + "id": 2924, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "17679:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "17679:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17666:24:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2927, + "name": "redemption_delay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1612, + "src": "17693:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17666:43:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2929, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "17665:45:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "expression": { + "id": 2930, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "17714:5:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "src": "17714:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17665:61:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "504f4f4c3a3a636f6c6c656374526564656d7074696f6e3a204d757374207761697420666f7220726564656d7074696f6e5f64656c617920626c6f636b73206265666f726520636f6c6c656374696e6720726564656d7074696f6e", + "id": 2933, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17731:93:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_38c9fd1b67df6e999cac6aaf315cc13e0fa4fc296b57f92466d27a378c17f081", + "typeString": "literal_string \"POOL::collectRedemption: Must wait for redemption_delay blocks before collecting redemption\"" + }, + "value": "POOL::collectRedemption: Must wait for redemption_delay blocks before collecting redemption" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_38c9fd1b67df6e999cac6aaf315cc13e0fa4fc296b57f92466d27a378c17f081", + "typeString": "literal_string \"POOL::collectRedemption: Must wait for redemption_delay blocks before collecting redemption\"" + } + ], + "id": 2922, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "17653:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17653:175:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2935, + "nodeType": "ExpressionStatement", + "src": "17653:175:7" + }, + { + "assignments": [ + 2937 + ], + "declarations": [ + { + "constant": false, + "id": 2937, + "mutability": "mutable", + "name": "sendDEUS", + "nameLocation": "17837:8:7", + "nodeType": "VariableDeclaration", + "scope": 3046, + "src": "17832:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2936, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17832:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 2939, + "initialValue": { + "hexValue": "66616c7365", + "id": 2938, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17848:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "nodeType": "VariableDeclarationStatement", + "src": "17832:21:7" + }, + { + "assignments": [ + 2941 + ], + "declarations": [ + { + "constant": false, + "id": 2941, + "mutability": "mutable", + "name": "sendCollateral", + "nameLocation": "17862:14:7", + "nodeType": "VariableDeclaration", + "scope": 3046, + "src": "17857:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2940, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17857:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 2943, + "initialValue": { + "hexValue": "66616c7365", + "id": 2942, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17879:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "nodeType": "VariableDeclarationStatement", + "src": "17857:27:7" + }, + { + "assignments": [ + 2945 + ], + "declarations": [ + { + "constant": false, + "id": 2945, + "mutability": "mutable", + "name": "DEUSAmount", + "nameLocation": "17896:10:7", + "nodeType": "VariableDeclaration", + "scope": 3046, + "src": "17888:18:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2944, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17888:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2947, + "initialValue": { + "hexValue": "30", + "id": 2946, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17909:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "17888:22:7" + }, + { + "assignments": [ + 2949 + ], + "declarations": [ + { + "constant": false, + "id": 2949, + "mutability": "mutable", + "name": "CollateralAmount", + "nameLocation": "17922:16:7", + "nodeType": "VariableDeclaration", + "scope": 3046, + "src": "17914:24:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2948, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17914:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2951, + "initialValue": { + "hexValue": "30", + "id": 2950, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17941:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "17914:28:7" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 2952, + "name": "redeemDEUSBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1577, + "src": "17996:18:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2955, + "indexExpression": { + "expression": { + "id": 2953, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "18015:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "18015:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17996:30:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2956, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18029:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "17996:34:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2983, + "nodeType": "IfStatement", + "src": "17992:208:7", + "trueBody": { + "id": 2982, + "nodeType": "Block", + "src": "18032:168:7", + "statements": [ + { + "expression": { + "id": 2963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2958, + "name": "DEUSAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2945, + "src": "18037:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 2959, + "name": "redeemDEUSBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1577, + "src": "18050:18:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2962, + "indexExpression": { + "expression": { + "id": 2960, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "18069:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "18069:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18050:30:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18037:43:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2964, + "nodeType": "ExpressionStatement", + "src": "18037:43:7" + }, + { + "expression": { + "id": 2970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2965, + "name": "redeemDEUSBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1577, + "src": "18085:18:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2968, + "indexExpression": { + "expression": { + "id": 2966, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "18104:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "18104:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "18085:30:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 2969, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18118:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "18085:34:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2971, + "nodeType": "ExpressionStatement", + "src": "18085:34:7" + }, + { + "expression": { + "id": 2976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2972, + "name": "unclaimedPoolDEUS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1585, + "src": "18124:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2973, + "name": "unclaimedPoolDEUS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1585, + "src": "18144:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 2974, + "name": "DEUSAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2945, + "src": "18164:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18144:30:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18124:50:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2977, + "nodeType": "ExpressionStatement", + "src": "18124:50:7" + }, + { + "expression": { + "id": 2980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2978, + "name": "sendDEUS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2937, + "src": "18180:8:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 2979, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18191:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "18180:15:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2981, + "nodeType": "ExpressionStatement", + "src": "18180:15:7" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 2984, + "name": "redeemCollateralBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1581, + "src": "18208:24:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2987, + "indexExpression": { + "expression": { + "id": 2985, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "18233:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2986, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "18233:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18208:36:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2988, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18247:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "18208:40:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3015, + "nodeType": "IfStatement", + "src": "18204:255:7", + "trueBody": { + "id": 3014, + "nodeType": "Block", + "src": "18250:209:7", + "statements": [ + { + "expression": { + "id": 2995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2990, + "name": "CollateralAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2949, + "src": "18255:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 2991, + "name": "redeemCollateralBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1581, + "src": "18274:24:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2994, + "indexExpression": { + "expression": { + "id": 2992, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "18299:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "18299:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18274:36:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18255:55:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2996, + "nodeType": "ExpressionStatement", + "src": "18255:55:7" + }, + { + "expression": { + "id": 3002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2997, + "name": "redeemCollateralBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1581, + "src": "18315:24:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3000, + "indexExpression": { + "expression": { + "id": 2998, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "18340:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "18340:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "18315:36:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 3001, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18354:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "18315:40:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3003, + "nodeType": "ExpressionStatement", + "src": "18315:40:7" + }, + { + "expression": { + "id": 3008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3004, + "name": "unclaimedPoolCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1583, + "src": "18360:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3005, + "name": "unclaimedPoolCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1583, + "src": "18386:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 3006, + "name": "CollateralAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2949, + "src": "18412:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18386:42:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18360:68:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3009, + "nodeType": "ExpressionStatement", + "src": "18360:68:7" + }, + { + "expression": { + "id": 3012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3010, + "name": "sendCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2941, + "src": "18433:14:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 3011, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18450:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "18433:21:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3013, + "nodeType": "ExpressionStatement", + "src": "18433:21:7" + } + ] + } + }, + { + "condition": { + "id": 3016, + "name": "sendDEUS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2937, + "src": "18467:8:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3030, + "nodeType": "IfStatement", + "src": "18463:107:7", + "trueBody": { + "id": 3029, + "nodeType": "Block", + "src": "18477:93:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 3022, + "name": "deus_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "18518:21:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3021, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18510:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3020, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18510:7:7", + "typeDescriptions": {} + } + }, + "id": 3023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18510:30:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 3024, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "18542:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "18542:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3026, + "name": "DEUSAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2945, + "src": "18554:10:7", + "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": 3017, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8767, + "src": "18482:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$8767_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 3019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 8695, + "src": "18482:27:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 3027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18482:83:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3028, + "nodeType": "ExpressionStatement", + "src": "18482:83:7" + } + ] + } + }, + { + "condition": { + "id": 3031, + "name": "sendCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2941, + "src": "18577:14:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3045, + "nodeType": "IfStatement", + "src": "18573:131:7", + "trueBody": { + "id": 3044, + "nodeType": "Block", + "src": "18593:111:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 3037, + "name": "collateral_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1559, + "src": "18639:16:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$4919", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$4919", + "typeString": "contract ERC20" + } + ], + "id": 3036, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18631:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3035, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18631:7:7", + "typeDescriptions": {} + } + }, + "id": 3038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18631:25:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 3039, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "18662:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "18662:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3041, + "name": "CollateralAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2949, + "src": "18678:16:7", + "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": 3032, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8767, + "src": "18598:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$8767_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 3034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 8695, + "src": "18598:27:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 3042, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18598:101:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3043, + "nodeType": "ExpressionStatement", + "src": "18598:101:7" + } + ] + } + } + ] + }, + "functionSelector": "12ace5a2", + "id": 3047, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "collectRedemption", + "nameLocation": "17620:17:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2920, + "nodeType": "ParameterList", + "parameters": [], + "src": "17637:2:7" + }, + "returnParameters": { + "id": 2921, + "nodeType": "ParameterList", + "parameters": [], + "src": "17649:0:7" + }, + "scope": 3582, + "src": "17611:1096:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 3207, + "nodeType": "Block", + "src": "19268:1800:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3056, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3054, + "name": "recollateralizePaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1662, + "src": "19280:21:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "66616c7365", + "id": 3055, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19305:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "19280:30:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "504f4f4c3a3a7265636f6c6c61746572616c697a654445493a205265636f6c6c61746572616c697a6520697320706175736564", + "id": 3057, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19312:53:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_565f0845894e0f662254a5093763af0fee3605d54c84edbcf11c672de6a88543", + "typeString": "literal_string \"POOL::recollateralizeDEI: Recollateralize is paused\"" + }, + "value": "POOL::recollateralizeDEI: Recollateralize is paused" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_565f0845894e0f662254a5093763af0fee3605d54c84edbcf11c672de6a88543", + "typeString": "literal_string \"POOL::recollateralizeDEI: Recollateralize is paused\"" + } + ], + "id": 3053, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "19272:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19272:94:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3059, + "nodeType": "ExpressionStatement", + "src": "19272:94:7" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3065, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3061, + "name": "inputs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3050, + "src": "19379:6:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RecollateralizeDEI_$1556_memory_ptr", + "typeString": "struct DEIPool.RecollateralizeDEI memory" + } + }, + "id": 3062, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expireBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 1552, + "src": "19379:18:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 3063, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "19401:5:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 3064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "src": "19401:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "19379:34:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "504f4f4c3a3a7265636f6c6c61746572616c697a654445493a207369676e617475726520697320657870697265642e", + "id": 3066, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19415:49:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_43ec8f409eb317e256e176d402e36ec6af276af1f8f749e4d9fbe21bcd7bc664", + "typeString": "literal_string \"POOL::recollateralizeDEI: signature is expired.\"" + }, + "value": "POOL::recollateralizeDEI: signature is expired." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_43ec8f409eb317e256e176d402e36ec6af276af1f8f749e4d9fbe21bcd7bc664", + "typeString": "literal_string \"POOL::recollateralizeDEI: signature is expired.\"" + } + ], + "id": 3060, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "19371:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19371:94:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3068, + "nodeType": "ExpressionStatement", + "src": "19371:94:7" + }, + { + "assignments": [ + 3070 + ], + "declarations": [ + { + "constant": false, + "id": 3070, + "mutability": "mutable", + "name": "sighash", + "nameLocation": "19477:7:7", + "nodeType": "VariableDeclaration", + "scope": 3207, + "src": "19469:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3069, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "19469:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 3086, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 3074, + "name": "collateral_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1561, + "src": "19525:18:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 3075, + "name": "inputs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3050, + "src": "19556:6:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RecollateralizeDEI_$1556_memory_ptr", + "typeString": "struct DEIPool.RecollateralizeDEI memory" + } + }, + "id": 3076, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral_price", + "nodeType": "MemberAccess", + "referencedDeclaration": 1548, + "src": "19556:23:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "id": 3077, + "name": "deus_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "19591:21:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 3078, + "name": "inputs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3050, + "src": "19625:6:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RecollateralizeDEI_$1556_memory_ptr", + "typeString": "struct DEIPool.RecollateralizeDEI memory" + } + }, + "id": 3079, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "deus_current_price", + "nodeType": "MemberAccess", + "referencedDeclaration": 1550, + "src": "19625:25:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 3080, + "name": "inputs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3050, + "src": "19663:6:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RecollateralizeDEI_$1556_memory_ptr", + "typeString": "struct DEIPool.RecollateralizeDEI memory" + } + }, + "id": 3081, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expireBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 1552, + "src": "19663:18:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3082, + "name": "getChainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1947, + "src": "19693:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 3083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19693:12:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 3072, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "19497:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 3073, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "19497:16:7", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 3084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19497:219:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 3071, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "19487:9:7", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 3085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19487:230:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19469:248:7" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 3092, + "name": "sighash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3070, + "src": "19779:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 3093, + "name": "inputs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3050, + "src": "19788:6:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RecollateralizeDEI_$1556_memory_ptr", + "typeString": "struct DEIPool.RecollateralizeDEI memory" + } + }, + "id": 3094, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "sigs", + "nodeType": "MemberAccess", + "referencedDeclaration": 1555, + "src": "19788:11:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + ], + "expression": { + "arguments": [ + { + "id": 3089, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "19744:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3088, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "19729:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 3090, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19729:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 3091, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "verify_price", + "nodeType": "MemberAccess", + "referencedDeclaration": 1409, + "src": "19729:49:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes memory[] memory) view external returns (bool)" + } + }, + "id": 3095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19729:71:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "504f4f4c3a3a7265636f6c6c61746572616c697a654445493a20696e76616c6964207369676e617475726573", + "id": 3096, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19802:46:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f8eb31fdc269657c54ee10149955fecbcb75254d3eeec631bdecc57de525010b", + "typeString": "literal_string \"POOL::recollateralizeDEI: invalid signatures\"" + }, + "value": "POOL::recollateralizeDEI: invalid signatures" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f8eb31fdc269657c54ee10149955fecbcb75254d3eeec631bdecc57de525010b", + "typeString": "literal_string \"POOL::recollateralizeDEI: invalid signatures\"" + } + ], + "id": 3087, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "19721:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3097, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19721:128:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3098, + "nodeType": "ExpressionStatement", + "src": "19721:128:7" + }, + { + "assignments": [ + 3100 + ], + "declarations": [ + { + "constant": false, + "id": 3100, + "mutability": "mutable", + "name": "collateral_amount_d18", + "nameLocation": "19862:21:7", + "nodeType": "VariableDeclaration", + "scope": 3207, + "src": "19854:29:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3099, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19854:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3108, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3101, + "name": "inputs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3050, + "src": "19886:6:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RecollateralizeDEI_$1556_memory_ptr", + "typeString": "struct DEIPool.RecollateralizeDEI memory" + } + }, + "id": 3102, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral_amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 1543, + "src": "19886:24:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 3103, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19914:2:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "id": 3104, + "name": "missing_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1600, + "src": "19918:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "19914:20:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3106, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "19913:22:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "19886:49:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19854:81:7" + }, + { + "assignments": [ + 3110 + ], + "declarations": [ + { + "constant": false, + "id": 3110, + "mutability": "mutable", + "name": "dei_total_supply", + "nameLocation": "19948:16:7", + "nodeType": "VariableDeclaration", + "scope": 3207, + "src": "19940:24:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3109, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19940:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3116, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 3112, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "19982:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3111, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "19967:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 3113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19967:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 3114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "totalSupply", + "nodeType": "MemberAccess", + "referencedDeclaration": 1381, + "src": "19967:48:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 3115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19967:50:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19940:77:7" + }, + { + "assignments": [ + 3118 + ], + "declarations": [ + { + "constant": false, + "id": 3118, + "mutability": "mutable", + "name": "global_collateral_ratio", + "nameLocation": "20029:23:7", + "nodeType": "VariableDeclaration", + "scope": 3207, + "src": "20021:31:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3117, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20021:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3124, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 3120, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "20070:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3119, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "20055:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 3121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20055:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 3122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "global_collateral_ratio", + "nodeType": "MemberAccess", + "referencedDeclaration": 1386, + "src": "20055:60:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 3123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20055:62:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20021:96:7" + }, + { + "assignments": [ + 3126 + ], + "declarations": [ + { + "constant": false, + "id": 3126, + "mutability": "mutable", + "name": "global_collat_value", + "nameLocation": "20129:19:7", + "nodeType": "VariableDeclaration", + "scope": 3207, + "src": "20121:27:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3125, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20121:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3134, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 3131, + "name": "inputs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3050, + "src": "20210:6:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RecollateralizeDEI_$1556_memory_ptr", + "typeString": "struct DEIPool.RecollateralizeDEI memory" + } + }, + "id": 3132, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral_price", + "nodeType": "MemberAccess", + "referencedDeclaration": 1548, + "src": "20210:23:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + ], + "expression": { + "arguments": [ + { + "id": 3128, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "20166:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3127, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "20151:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 3129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20151:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 3130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "globalCollateralValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 1434, + "src": "20151:58:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (uint256[] memory) view external returns (uint256)" + } + }, + "id": 3133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20151:83:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20121:113:7" + }, + { + "assignments": [ + 3136, + 3138 + ], + "declarations": [ + { + "constant": false, + "id": 3136, + "mutability": "mutable", + "name": "collateral_units", + "nameLocation": "20248:16:7", + "nodeType": "VariableDeclaration", + "scope": 3207, + "src": "20240:24:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3135, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20240:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3138, + "mutability": "mutable", + "name": "amount_to_recollat", + "nameLocation": "20274:18:7", + "nodeType": "VariableDeclaration", + "scope": 3207, + "src": "20266:26:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3137, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20266:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3154, + "initialValue": { + "arguments": [ + { + "id": 3141, + "name": "collateral_amount_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3100, + "src": "20357:21:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "expression": { + "id": 3142, + "name": "inputs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3050, + "src": "20400:6:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RecollateralizeDEI_$1556_memory_ptr", + "typeString": "struct DEIPool.RecollateralizeDEI memory" + } + }, + "id": 3143, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral_price", + "nodeType": "MemberAccess", + "referencedDeclaration": 1548, + "src": "20400:23:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3149, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 3144, + "name": "inputs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3050, + "src": "20424:6:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RecollateralizeDEI_$1556_memory_ptr", + "typeString": "struct DEIPool.RecollateralizeDEI memory" + } + }, + "id": 3145, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral_price", + "nodeType": "MemberAccess", + "referencedDeclaration": 1548, + "src": "20424:23:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "20424:30:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 3147, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20457:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "20424:34:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20400:59:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3150, + "name": "global_collat_value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3126, + "src": "20526:19:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3151, + "name": "dei_total_supply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3110, + "src": "20567:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3152, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3118, + "src": "20605:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 3139, + "name": "poolLibrary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1618, + "src": "20296:11:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEIPoolLibrary_$3879", + "typeString": "contract DEIPoolLibrary" + } + }, + "id": 3140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "calcRecollateralizeDEIInner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3878, + "src": "20296:39:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256,uint256,uint256) pure external returns (uint256,uint256)" + } + }, + "id": 3153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20296:353:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20239:410:7" + }, + { + "assignments": [ + 3156 + ], + "declarations": [ + { + "constant": false, + "id": 3156, + "mutability": "mutable", + "name": "collateral_units_precision", + "nameLocation": "20662:26:7", + "nodeType": "VariableDeclaration", + "scope": 3207, + "src": "20654:34:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3155, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20654:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3163, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3157, + "name": "collateral_units", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3136, + "src": "20691:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 3158, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20711:2:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "id": 3159, + "name": "missing_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1600, + "src": "20715:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20711:20:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3161, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "20710:22:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20691:41:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20654:78:7" + }, + { + "assignments": [ + 3165 + ], + "declarations": [ + { + "constant": false, + "id": 3165, + "mutability": "mutable", + "name": "deus_paid_back", + "nameLocation": "20745:14:7", + "nodeType": "VariableDeclaration", + "scope": 3207, + "src": "20737:22:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3164, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20737:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3181, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3166, + "name": "amount_to_recollat", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3138, + "src": "20763:18:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "hexValue": "316536", + "id": 3169, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20793:3:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + ], + "id": 3168, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "20785:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3167, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20785:7:7", + "typeDescriptions": {} + } + }, + "id": 3170, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20785:12:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 3171, + "name": "bonus_rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1609, + "src": "20800:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20785:25:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 3173, + "name": "recollat_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1573, + "src": "20813:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20785:40:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3175, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "20784:42:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20763:63:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3177, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "20762:65:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "expression": { + "id": 3178, + "name": "inputs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3050, + "src": "20830:6:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RecollateralizeDEI_$1556_memory_ptr", + "typeString": "struct DEIPool.RecollateralizeDEI memory" + } + }, + "id": 3179, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "deus_current_price", + "nodeType": "MemberAccess", + "referencedDeclaration": 1550, + "src": "20830:25:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20762:93:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20737:118:7" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 3187, + "name": "collateral_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1559, + "src": "20904:16:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$4919", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$4919", + "typeString": "contract ERC20" + } + ], + "id": 3186, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "20896:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3185, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20896:7:7", + "typeDescriptions": {} + } + }, + "id": 3188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20896:25:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 3189, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "20926:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "20926:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 3193, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "20949:4:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEIPool_$3582", + "typeString": "contract DEIPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_DEIPool_$3582", + "typeString": "contract DEIPool" + } + ], + "id": 3192, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "20941:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3191, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20941:7:7", + "typeDescriptions": {} + } + }, + "id": 3194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20941:13:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3195, + "name": "collateral_units_precision", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3156, + "src": "20959:26:7", + "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": 3182, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8767, + "src": "20860:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$8767_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 3184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 8741, + "src": "20860:31:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256)" + } + }, + "id": 3196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20860:129:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3197, + "nodeType": "ExpressionStatement", + "src": "20860:129:7" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3202, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "21037:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "21037:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3204, + "name": "deus_paid_back", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3165, + "src": "21049:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 3199, + "name": "deus_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "21004:21:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3198, + "name": "IDEUSToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4350, + "src": "20993:10:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEUSToken_$4350_$", + "typeString": "type(contract IDEUSToken)" + } + }, + "id": 3200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20993:33:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEUSToken_$4350", + "typeString": "contract IDEUSToken" + } + }, + "id": 3201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pool_mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4330, + "src": "20993:43:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 3205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20993:71:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3206, + "nodeType": "ExpressionStatement", + "src": "20993:71:7" + } + ] + }, + "functionSelector": "928d2b31", + "id": 3208, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recollateralizeDEI", + "nameLocation": "19206:18:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3050, + "mutability": "mutable", + "name": "inputs", + "nameLocation": "19251:6:7", + "nodeType": "VariableDeclaration", + "scope": 3208, + "src": "19225:32:7", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RecollateralizeDEI_$1556_memory_ptr", + "typeString": "struct DEIPool.RecollateralizeDEI" + }, + "typeName": { + "id": 3049, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3048, + "name": "RecollateralizeDEI", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1556, + "src": "19225:18:7" + }, + "referencedDeclaration": 1556, + "src": "19225:18:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RecollateralizeDEI_$1556_storage_ptr", + "typeString": "struct DEIPool.RecollateralizeDEI" + } + }, + "visibility": "internal" + } + ], + "src": "19224:34:7" + }, + "returnParameters": { + "id": 3052, + "nodeType": "ParameterList", + "parameters": [], + "src": "19268:0:7" + }, + "scope": 3582, + "src": "19197:1871:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 3333, + "nodeType": "Block", + "src": "21435:1281:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3224, + "name": "buyBackPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1665, + "src": "21447:13:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "66616c7365", + "id": 3225, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21464:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "21447:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "504f4f4c3a3a6275794261636b444555533a204275796261636b20697320706175736564", + "id": 3227, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21471:38:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0f701899e5d254af158b94e181e8c864fa1fa8407b8e83a84b212f1856c034bb", + "typeString": "literal_string \"POOL::buyBackDEUS: Buyback is paused\"" + }, + "value": "POOL::buyBackDEUS: Buyback is paused" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0f701899e5d254af158b94e181e8c864fa1fa8407b8e83a84b212f1856c034bb", + "typeString": "literal_string \"POOL::buyBackDEUS: Buyback is paused\"" + } + ], + "id": 3223, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "21439:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21439:71:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3229, + "nodeType": "ExpressionStatement", + "src": "21439:71:7" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3231, + "name": "expireBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3217, + "src": "21522:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 3232, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "21537:5:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 3233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "src": "21537:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21522:27:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4445493a3a6275794261636b444555533a207369676e617475726520697320657870697265642e", + "id": 3235, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21551:41:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_74a9279f050c6419792bc3daa57da050d8e2f426f944681941d34e8909be7eac", + "typeString": "literal_string \"DEI::buyBackDEUS: signature is expired.\"" + }, + "value": "DEI::buyBackDEUS: signature is expired." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_74a9279f050c6419792bc3daa57da050d8e2f426f944681941d34e8909be7eac", + "typeString": "literal_string \"DEI::buyBackDEUS: signature is expired.\"" + } + ], + "id": 3230, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "21514:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21514:79:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3237, + "nodeType": "ExpressionStatement", + "src": "21514:79:7" + }, + { + "assignments": [ + 3239 + ], + "declarations": [ + { + "constant": false, + "id": 3239, + "mutability": "mutable", + "name": "sighash", + "nameLocation": "21605:7:7", + "nodeType": "VariableDeclaration", + "scope": 3333, + "src": "21597:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3238, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21597:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 3252, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 3243, + "name": "collateral_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1561, + "src": "21653:18:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3244, + "name": "collateral_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3213, + "src": "21683:16:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "id": 3245, + "name": "deus_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "21711:21:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3246, + "name": "deus_current_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3215, + "src": "21744:18:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3247, + "name": "expireBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3217, + "src": "21774:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3248, + "name": "getChainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1947, + "src": "21797:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 3249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21797:12:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 3241, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "21625:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 3242, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "21625:16:7", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 3250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21625:185:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 3240, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "21615:9:7", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 3251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21615:196:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21597:214:7" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 3258, + "name": "sighash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3239, + "src": "21873:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3259, + "name": "sigs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3220, + "src": "21882:4:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + ], + "expression": { + "arguments": [ + { + "id": 3255, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "21838:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3254, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "21823:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 3256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21823:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 3257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "verify_price", + "nodeType": "MemberAccess", + "referencedDeclaration": 1409, + "src": "21823:49:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes memory[] memory) view external returns (bool)" + } + }, + "id": 3260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21823:64:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "504f4f4c3a3a6275794261636b444555533a20696e76616c6964207369676e617475726573", + "id": 3261, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21889:39:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c668331e1a5c68ea41572b6fbf581e9b4ce7392915c1ff6a6872ae765618f9ee", + "typeString": "literal_string \"POOL::buyBackDEUS: invalid signatures\"" + }, + "value": "POOL::buyBackDEUS: invalid signatures" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c668331e1a5c68ea41572b6fbf581e9b4ce7392915c1ff6a6872ae765618f9ee", + "typeString": "literal_string \"POOL::buyBackDEUS: invalid signatures\"" + } + ], + "id": 3253, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "21815:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21815:114:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3263, + "nodeType": "ExpressionStatement", + "src": "21815:114:7" + }, + { + "assignments": [ + 3268 + ], + "declarations": [ + { + "constant": false, + "id": 3268, + "mutability": "mutable", + "name": "input_params", + "nameLocation": "21975:12:7", + "nodeType": "VariableDeclaration", + "scope": 3333, + "src": "21934:53:7", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BuybackDEUS_Params_$3609_memory_ptr", + "typeString": "struct DEIPoolLibrary.BuybackDEUS_Params" + }, + "typeName": { + "id": 3267, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3266, + "name": "DEIPoolLibrary.BuybackDEUS_Params", + "nodeType": "IdentifierPath", + "referencedDeclaration": 3609, + "src": "21934:33:7" + }, + "referencedDeclaration": 3609, + "src": "21934:33:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BuybackDEUS_Params_$3609_storage_ptr", + "typeString": "struct DEIPoolLibrary.BuybackDEUS_Params" + } + }, + "visibility": "internal" + } + ], + "id": 3283, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 3272, + "name": "collateral_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3213, + "src": "22062:16:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + ], + "id": 3271, + "name": "availableExcessCollatDV", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1935, + "src": "22038:23:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (uint256[] memory) view returns (uint256)" + } + }, + "id": 3273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22038:41:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3274, + "name": "deus_current_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3215, + "src": "22094:18:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "id": 3275, + "name": "collateral_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3213, + "src": "22127:16:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3280, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3276, + "name": "collateral_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3213, + "src": "22144:16:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "22144:23:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 3278, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22170:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "22144:27:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22127:45:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3281, + "name": "DEUS_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3210, + "src": "22232:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 3269, + "name": "DEIPoolLibrary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3879, + "src": "21990:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_DEIPoolLibrary_$3879_$", + "typeString": "type(contract DEIPoolLibrary)" + } + }, + "id": 3270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "BuybackDEUS_Params", + "nodeType": "MemberAccess", + "referencedDeclaration": 3609, + "src": "21990:33:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_BuybackDEUS_Params_$3609_storage_ptr_$", + "typeString": "type(struct DEIPoolLibrary.BuybackDEUS_Params storage pointer)" + } + }, + "id": 3282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21990:267:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BuybackDEUS_Params_$3609_memory_ptr", + "typeString": "struct DEIPoolLibrary.BuybackDEUS_Params memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21934:323:7" + }, + { + "assignments": [ + 3285 + ], + "declarations": [ + { + "constant": false, + "id": 3285, + "mutability": "mutable", + "name": "collateral_equivalent_d18", + "nameLocation": "22270:25:7", + "nodeType": "VariableDeclaration", + "scope": 3333, + "src": "22262:33:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3284, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22262:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3302, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 3288, + "name": "input_params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3268, + "src": "22327:12:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BuybackDEUS_Params_$3609_memory_ptr", + "typeString": "struct DEIPoolLibrary.BuybackDEUS_Params memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_BuybackDEUS_Params_$3609_memory_ptr", + "typeString": "struct DEIPoolLibrary.BuybackDEUS_Params memory" + } + ], + "expression": { + "id": 3286, + "name": "poolLibrary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1618, + "src": "22299:11:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEIPoolLibrary_$3879", + "typeString": "contract DEIPoolLibrary" + } + }, + "id": 3287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "calcBuyBackDEUS", + "nodeType": "MemberAccess", + "referencedDeclaration": 3772, + "src": "22299:27:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$_t_struct$_BuybackDEUS_Params_$3609_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (struct DEIPoolLibrary.BuybackDEUS_Params memory) pure external returns (uint256)" + } + }, + "id": 3289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22299:41:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "hexValue": "316536", + "id": 3292, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22352:3:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + ], + "id": 3291, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "22344:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3290, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22344:7:7", + "typeDescriptions": {} + } + }, + "id": 3293, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22344:12:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 3294, + "name": "buyback_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1571, + "src": "22359:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22344:26:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3296, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "22343:28:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22299:72:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3298, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "22298:74:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "hexValue": "316536", + "id": 3299, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22376:3:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "id": 3300, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "22375:5:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + }, + "src": "22298:82:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22262:118:7" + }, + { + "assignments": [ + 3304 + ], + "declarations": [ + { + "constant": false, + "id": 3304, + "mutability": "mutable", + "name": "collateral_precision", + "nameLocation": "22392:20:7", + "nodeType": "VariableDeclaration", + "scope": 3333, + "src": "22384:28:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3303, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22384:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3311, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3305, + "name": "collateral_equivalent_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3285, + "src": "22415:25:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 3306, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22444:2:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "id": 3307, + "name": "missing_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1600, + "src": "22448:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22444:20:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3309, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "22443:22:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22415:50:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22384:81:7" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3316, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "22583:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "22583:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3318, + "name": "DEUS_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3210, + "src": "22595:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 3313, + "name": "deus_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "22545:21:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3312, + "name": "IDEUSToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4350, + "src": "22534:10:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEUSToken_$4350_$", + "typeString": "type(contract IDEUSToken)" + } + }, + "id": 3314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22534:33:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEUSToken_$4350", + "typeString": "contract IDEUSToken" + } + }, + "id": 3315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pool_burn_from", + "nodeType": "MemberAccess", + "referencedDeclaration": 4323, + "src": "22534:48:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 3319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22534:73:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3320, + "nodeType": "ExpressionStatement", + "src": "22534:73:7" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 3326, + "name": "collateral_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1559, + "src": "22651:16:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$4919", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$4919", + "typeString": "contract ERC20" + } + ], + "id": 3325, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "22643:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3324, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22643:7:7", + "typeDescriptions": {} + } + }, + "id": 3327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22643:25:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 3328, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "22673:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "22673:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3330, + "name": "collateral_precision", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3304, + "src": "22688:20:7", + "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": 3321, + "name": "TransferHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8767, + "src": "22611:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TransferHelper_$8767_$", + "typeString": "type(library TransferHelper)" + } + }, + "id": 3323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 8695, + "src": "22611:27:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 3331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22611:101:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3332, + "nodeType": "ExpressionStatement", + "src": "22611:101:7" + } + ] + }, + "functionSelector": "c410ca1b", + "id": 3334, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "buyBackDEUS", + "nameLocation": "21273:11:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3221, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3210, + "mutability": "mutable", + "name": "DEUS_amount", + "nameLocation": "21296:11:7", + "nodeType": "VariableDeclaration", + "scope": 3334, + "src": "21288:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3209, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21288:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3213, + "mutability": "mutable", + "name": "collateral_price", + "nameLocation": "21328:16:7", + "nodeType": "VariableDeclaration", + "scope": 3334, + "src": "21311:33:7", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 3211, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21311:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3212, + "nodeType": "ArrayTypeName", + "src": "21311:9:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3215, + "mutability": "mutable", + "name": "deus_current_price", + "nameLocation": "21356:18:7", + "nodeType": "VariableDeclaration", + "scope": 3334, + "src": "21348:26:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3214, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21348:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3217, + "mutability": "mutable", + "name": "expireBlock", + "nameLocation": "21386:11:7", + "nodeType": "VariableDeclaration", + "scope": 3334, + "src": "21378:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3216, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21378:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3220, + "mutability": "mutable", + "name": "sigs", + "nameLocation": "21418:4:7", + "nodeType": "VariableDeclaration", + "scope": 3334, + "src": "21401:21:7", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 3218, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "21401:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 3219, + "nodeType": "ArrayTypeName", + "src": "21401:7:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "21284:141:7" + }, + "returnParameters": { + "id": 3222, + "nodeType": "ParameterList", + "parameters": [], + "src": "21435:0:7" + }, + "scope": 3582, + "src": "21264:1452:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 3373, + "nodeType": "Block", + "src": "22832:231:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 3343, + "name": "DAO_SHARE_COLLECTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1648, + "src": "22852:19:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 3344, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "22873:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "22873:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3342, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6072, + "src": "22844:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 3346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22844:40:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3341, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "22836:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22836:49:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3348, + "nodeType": "ExpressionStatement", + "src": "22836:49:7" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3350, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3336, + "src": "22897:6:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 3351, + "name": "daoShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1615, + "src": "22907:8:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22897:18:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "616d6f756e743c3d64616f5368617265", + "id": 3353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22917:18:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ffc61d1a84775e893520fbdfe0ea8909f9284081f97dd4e8ed1bc343abeb295e", + "typeString": "literal_string \"amount<=daoShare\"" + }, + "value": "amount<=daoShare" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ffc61d1a84775e893520fbdfe0ea8909f9284081f97dd4e8ed1bc343abeb295e", + "typeString": "literal_string \"amount<=daoShare\"" + } + ], + "id": 3349, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "22889:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22889:47:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3355, + "nodeType": "ExpressionStatement", + "src": "22889:47:7" + }, + { + "expression": { + "arguments": [ + { + "id": 3360, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3338, + "src": "22987:2:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3361, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3336, + "src": "22991:6:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 3357, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1563, + "src": "22955:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3356, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "22940:14:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 3358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22940:36:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 3359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pool_mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 1484, + "src": "22940:46:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 3362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22940:58:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3363, + "nodeType": "ExpressionStatement", + "src": "22940:58:7" + }, + { + "expression": { + "id": 3366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3364, + "name": "daoShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1615, + "src": "23002:8:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 3365, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3336, + "src": "23014:6:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23002:18:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3367, + "nodeType": "ExpressionStatement", + "src": "23002:18:7" + }, + { + "eventCall": { + "arguments": [ + { + "id": 3369, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3336, + "src": "23048:6:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3370, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3338, + "src": "23056:2:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3368, + "name": "daoShareCollected", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3565, + "src": "23030:17:7", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (uint256,address)" + } + }, + "id": 3371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23030:29:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3372, + "nodeType": "EmitStatement", + "src": "23025:34:7" + } + ] + }, + "functionSelector": "7901330b", + "id": 3374, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "collectDaoShare", + "nameLocation": "22779:15:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3339, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3336, + "mutability": "mutable", + "name": "amount", + "nameLocation": "22803:6:7", + "nodeType": "VariableDeclaration", + "scope": 3374, + "src": "22795:14:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3335, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22795:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3338, + "mutability": "mutable", + "name": "to", + "nameLocation": "22819:2:7", + "nodeType": "VariableDeclaration", + "scope": 3374, + "src": "22811:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3337, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22811:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "22794:28:7" + }, + "returnParameters": { + "id": 3340, + "nodeType": "ParameterList", + "parameters": [], + "src": "22832:0:7" + }, + "scope": 3582, + "src": "22770:293:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 3393, + "nodeType": "Block", + "src": "23158:42:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 3389, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3380, + "src": "23185:2:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3390, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3378, + "src": "23189:6:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 3386, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3376, + "src": "23169:5:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3385, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5514, + "src": "23162:6:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$5514_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 3387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23162:13:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "id": 3388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 5463, + "src": "23162:22:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 3391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23162:34:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3392, + "nodeType": "ExpressionStatement", + "src": "23162:34:7" + } + ] + }, + "functionSelector": "e3d84d5e", + "id": 3394, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 3383, + "kind": "modifierInvocation", + "modifierName": { + "id": 3382, + "name": "onlyTrusty", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1678, + "src": "23147:10:7" + }, + "nodeType": "ModifierInvocation", + "src": "23147:10:7" + } + ], + "name": "emergencyWithdrawERC20", + "nameLocation": "23075:22:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3381, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3376, + "mutability": "mutable", + "name": "token", + "nameLocation": "23106:5:7", + "nodeType": "VariableDeclaration", + "scope": 3394, + "src": "23098:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3375, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23098:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3378, + "mutability": "mutable", + "name": "amount", + "nameLocation": "23118:6:7", + "nodeType": "VariableDeclaration", + "scope": 3394, + "src": "23113:11:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3377, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23113:4:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3380, + "mutability": "mutable", + "name": "to", + "nameLocation": "23134:2:7", + "nodeType": "VariableDeclaration", + "scope": 3394, + "src": "23126:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3379, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23126:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "23097:40:7" + }, + "returnParameters": { + "id": 3384, + "nodeType": "ParameterList", + "parameters": [], + "src": "23158:0:7" + }, + "scope": 3582, + "src": "23066:134:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 3414, + "nodeType": "Block", + "src": "23237:113:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 3399, + "name": "MINT_PAUSER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1623, + "src": "23257:11:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 3400, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "23270:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "23270:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3398, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6072, + "src": "23249:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 3402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23249:32:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3397, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "23241:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23241:41:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3404, + "nodeType": "ExpressionStatement", + "src": "23241:41:7" + }, + { + "expression": { + "id": 3408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3405, + "name": "mintPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1656, + "src": "23286:10:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "23299:11:7", + "subExpression": { + "id": 3406, + "name": "mintPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1656, + "src": "23300:10:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "23286:24:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3409, + "nodeType": "ExpressionStatement", + "src": "23286:24:7" + }, + { + "eventCall": { + "arguments": [ + { + "id": 3411, + "name": "mintPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1656, + "src": "23335:10:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3410, + "name": "MintingToggled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3569, + "src": "23320:14:7", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool)" + } + }, + "id": 3412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23320:26:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3413, + "nodeType": "EmitStatement", + "src": "23315:31:7" + } + ] + }, + "functionSelector": "7d55094d", + "id": 3415, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toggleMinting", + "nameLocation": "23212:13:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3395, + "nodeType": "ParameterList", + "parameters": [], + "src": "23225:2:7" + }, + "returnParameters": { + "id": 3396, + "nodeType": "ParameterList", + "parameters": [], + "src": "23237:0:7" + }, + "scope": 3582, + "src": "23203:147:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 3435, + "nodeType": "Block", + "src": "23389:123:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 3420, + "name": "REDEEM_PAUSER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1628, + "src": "23409:13:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 3421, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "23424:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "23424:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3419, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6072, + "src": "23401:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 3423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23401:34:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3418, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "23393:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23393:43:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3425, + "nodeType": "ExpressionStatement", + "src": "23393:43:7" + }, + { + "expression": { + "id": 3429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3426, + "name": "redeemPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1659, + "src": "23440:12:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "23455:13:7", + "subExpression": { + "id": 3427, + "name": "redeemPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1659, + "src": "23456:12:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "23440:28:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3430, + "nodeType": "ExpressionStatement", + "src": "23440:28:7" + }, + { + "eventCall": { + "arguments": [ + { + "id": 3432, + "name": "redeemPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1659, + "src": "23495:12:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3431, + "name": "RedeemingToggled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3573, + "src": "23478:16:7", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool)" + } + }, + "id": 3433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23478:30:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3434, + "nodeType": "EmitStatement", + "src": "23473:35:7" + } + ] + }, + "functionSelector": "daa50485", + "id": 3436, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toggleRedeeming", + "nameLocation": "23362:15:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3416, + "nodeType": "ParameterList", + "parameters": [], + "src": "23377:2:7" + }, + "returnParameters": { + "id": 3417, + "nodeType": "ParameterList", + "parameters": [], + "src": "23389:0:7" + }, + "scope": 3582, + "src": "23353:159:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 3456, + "nodeType": "Block", + "src": "23557:165:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 3441, + "name": "RECOLLATERALIZE_PAUSER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1638, + "src": "23577:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 3442, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "23601:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "23601:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3440, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6072, + "src": "23569:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 3444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23569:43:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3439, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "23561:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23561:52:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3446, + "nodeType": "ExpressionStatement", + "src": "23561:52:7" + }, + { + "expression": { + "id": 3450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3447, + "name": "recollateralizePaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1662, + "src": "23617:21:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "23641:22:7", + "subExpression": { + "id": 3448, + "name": "recollateralizePaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1662, + "src": "23642:21:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "23617:46:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3451, + "nodeType": "ExpressionStatement", + "src": "23617:46:7" + }, + { + "eventCall": { + "arguments": [ + { + "id": 3453, + "name": "recollateralizePaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1662, + "src": "23696:21:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3452, + "name": "RecollateralizeToggled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3577, + "src": "23673:22:7", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool)" + } + }, + "id": 3454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23673:45:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3455, + "nodeType": "EmitStatement", + "src": "23668:50:7" + } + ] + }, + "functionSelector": "42d15aec", + "id": 3457, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toggleRecollateralize", + "nameLocation": "23524:21:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3437, + "nodeType": "ParameterList", + "parameters": [], + "src": "23545:2:7" + }, + "returnParameters": { + "id": 3438, + "nodeType": "ParameterList", + "parameters": [], + "src": "23557:0:7" + }, + "scope": 3582, + "src": "23515:207:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 3477, + "nodeType": "Block", + "src": "23759:125:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 3462, + "name": "BUYBACK_PAUSER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1633, + "src": "23779:14:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 3463, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "23795:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "23795:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3461, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6072, + "src": "23771:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 3465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23771:35:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3460, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "23763:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23763:44:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3467, + "nodeType": "ExpressionStatement", + "src": "23763:44:7" + }, + { + "expression": { + "id": 3471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3468, + "name": "buyBackPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1665, + "src": "23811:13:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "23827:14:7", + "subExpression": { + "id": 3469, + "name": "buyBackPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1665, + "src": "23828:13:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "23811:30:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3472, + "nodeType": "ExpressionStatement", + "src": "23811:30:7" + }, + { + "eventCall": { + "arguments": [ + { + "id": 3474, + "name": "buyBackPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1665, + "src": "23866:13:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3473, + "name": "BuybackToggled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3581, + "src": "23851:14:7", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool)" + } + }, + "id": 3475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23851:29:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3476, + "nodeType": "EmitStatement", + "src": "23846:34:7" + } + ] + }, + "functionSelector": "50c9ecd9", + "id": 3478, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toggleBuyBack", + "nameLocation": "23734:13:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3458, + "nodeType": "ParameterList", + "parameters": [], + "src": "23747:2:7" + }, + "returnParameters": { + "id": 3459, + "nodeType": "ParameterList", + "parameters": [], + "src": "23759:0:7" + }, + "scope": 3582, + "src": "23725:159:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 3542, + "nodeType": "Block", + "src": "24178:509:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 3497, + "name": "PARAMETER_SETTER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1653, + "src": "24198:21:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 3498, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "24221:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "24221:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3496, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6072, + "src": "24190:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 3500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24190:42:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "504f4f4c3a2043616c6c6572206973206e6f7420504152414d455445525f5345545445525f524f4c45", + "id": 3501, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24234:43:7", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_76b82cf0f5d67f7f31fa6377a21018dea36302e26d7842fad5ba832c330157dd", + "typeString": "literal_string \"POOL: Caller is not PARAMETER_SETTER_ROLE\"" + }, + "value": "POOL: Caller is not PARAMETER_SETTER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_76b82cf0f5d67f7f31fa6377a21018dea36302e26d7842fad5ba832c330157dd", + "typeString": "literal_string \"POOL: Caller is not PARAMETER_SETTER_ROLE\"" + } + ], + "id": 3495, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "24182:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24182:96:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3503, + "nodeType": "ExpressionStatement", + "src": "24182:96:7" + }, + { + "expression": { + "id": 3506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3504, + "name": "pool_ceiling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1603, + "src": "24282:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3505, + "name": "new_ceiling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3480, + "src": "24297:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24282:26:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3507, + "nodeType": "ExpressionStatement", + "src": "24282:26:7" + }, + { + "expression": { + "id": 3510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3508, + "name": "bonus_rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1609, + "src": "24312:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3509, + "name": "new_bonus_rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3482, + "src": "24325:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24312:27:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3511, + "nodeType": "ExpressionStatement", + "src": "24312:27:7" + }, + { + "expression": { + "id": 3514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3512, + "name": "redemption_delay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1612, + "src": "24343:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3513, + "name": "new_redemption_delay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3484, + "src": "24362:20:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24343:39:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3515, + "nodeType": "ExpressionStatement", + "src": "24343:39:7" + }, + { + "expression": { + "id": 3518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3516, + "name": "minting_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1567, + "src": "24386:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3517, + "name": "new_mint_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3486, + "src": "24400:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24386:26:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3519, + "nodeType": "ExpressionStatement", + "src": "24386:26:7" + }, + { + "expression": { + "id": 3522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3520, + "name": "redemption_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1569, + "src": "24416:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3521, + "name": "new_redeem_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3488, + "src": "24433:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24416:31:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3523, + "nodeType": "ExpressionStatement", + "src": "24416:31:7" + }, + { + "expression": { + "id": 3526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3524, + "name": "buyback_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1571, + "src": "24451:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3525, + "name": "new_buyback_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3490, + "src": "24465:15:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24451:29:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3527, + "nodeType": "ExpressionStatement", + "src": "24451:29:7" + }, + { + "expression": { + "id": 3530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3528, + "name": "recollat_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1573, + "src": "24484:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3529, + "name": "new_recollat_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3492, + "src": "24499:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24484:31:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3531, + "nodeType": "ExpressionStatement", + "src": "24484:31:7" + }, + { + "eventCall": { + "arguments": [ + { + "id": 3533, + "name": "new_ceiling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3480, + "src": "24547:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3534, + "name": "new_bonus_rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3482, + "src": "24563:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3535, + "name": "new_redemption_delay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3484, + "src": "24582:20:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3536, + "name": "new_mint_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3486, + "src": "24607:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3537, + "name": "new_redeem_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3488, + "src": "24624:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3538, + "name": "new_buyback_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3490, + "src": "24643:15:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3539, + "name": "new_recollat_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3492, + "src": "24663:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3532, + "name": "PoolParametersSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3559, + "src": "24525:17:7", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256,uint256)" + } + }, + "id": 3540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24525:158:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3541, + "nodeType": "EmitStatement", + "src": "24520:163:7" + } + ] + }, + "functionSelector": "4ebbe762", + "id": 3543, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setPoolParameters", + "nameLocation": "23962:17:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3493, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3480, + "mutability": "mutable", + "name": "new_ceiling", + "nameLocation": "23991:11:7", + "nodeType": "VariableDeclaration", + "scope": 3543, + "src": "23983:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3479, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23983:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3482, + "mutability": "mutable", + "name": "new_bonus_rate", + "nameLocation": "24014:14:7", + "nodeType": "VariableDeclaration", + "scope": 3543, + "src": "24006:22:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3481, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24006:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3484, + "mutability": "mutable", + "name": "new_redemption_delay", + "nameLocation": "24040:20:7", + "nodeType": "VariableDeclaration", + "scope": 3543, + "src": "24032:28:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3483, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24032:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3486, + "mutability": "mutable", + "name": "new_mint_fee", + "nameLocation": "24072:12:7", + "nodeType": "VariableDeclaration", + "scope": 3543, + "src": "24064:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3485, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24064:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3488, + "mutability": "mutable", + "name": "new_redeem_fee", + "nameLocation": "24096:14:7", + "nodeType": "VariableDeclaration", + "scope": 3543, + "src": "24088:22:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3487, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24088:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3490, + "mutability": "mutable", + "name": "new_buyback_fee", + "nameLocation": "24122:15:7", + "nodeType": "VariableDeclaration", + "scope": 3543, + "src": "24114:23:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3489, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24114:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3492, + "mutability": "mutable", + "name": "new_recollat_fee", + "nameLocation": "24149:16:7", + "nodeType": "VariableDeclaration", + "scope": 3543, + "src": "24141:24:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3491, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24141:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "23979:189:7" + }, + "returnParameters": { + "id": 3494, + "nodeType": "ParameterList", + "parameters": [], + "src": "24178:0:7" + }, + "scope": 3582, + "src": "23953:734:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "id": 3559, + "name": "PoolParametersSet", + "nameLocation": "24733:17:7", + "nodeType": "EventDefinition", + "parameters": { + "id": 3558, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3545, + "indexed": false, + "mutability": "mutable", + "name": "new_ceiling", + "nameLocation": "24762:11:7", + "nodeType": "VariableDeclaration", + "scope": 3559, + "src": "24754:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3544, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24754:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3547, + "indexed": false, + "mutability": "mutable", + "name": "new_bonus_rate", + "nameLocation": "24785:14:7", + "nodeType": "VariableDeclaration", + "scope": 3559, + "src": "24777:22:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3546, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24777:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3549, + "indexed": false, + "mutability": "mutable", + "name": "new_redemption_delay", + "nameLocation": "24811:20:7", + "nodeType": "VariableDeclaration", + "scope": 3559, + "src": "24803:28:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3548, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24803:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3551, + "indexed": false, + "mutability": "mutable", + "name": "new_mint_fee", + "nameLocation": "24843:12:7", + "nodeType": "VariableDeclaration", + "scope": 3559, + "src": "24835:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3550, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24835:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3553, + "indexed": false, + "mutability": "mutable", + "name": "new_redeem_fee", + "nameLocation": "24867:14:7", + "nodeType": "VariableDeclaration", + "scope": 3559, + "src": "24859:22:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3552, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24859:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3555, + "indexed": false, + "mutability": "mutable", + "name": "new_buyback_fee", + "nameLocation": "24893:15:7", + "nodeType": "VariableDeclaration", + "scope": 3559, + "src": "24885:23:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3554, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24885:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3557, + "indexed": false, + "mutability": "mutable", + "name": "new_recollat_fee", + "nameLocation": "24920:16:7", + "nodeType": "VariableDeclaration", + "scope": 3559, + "src": "24912:24:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3556, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24912:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "24750:189:7" + }, + "src": "24727:213:7" + }, + { + "anonymous": false, + "id": 3565, + "name": "daoShareCollected", + "nameLocation": "24948:17:7", + "nodeType": "EventDefinition", + "parameters": { + "id": 3564, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3561, + "indexed": false, + "mutability": "mutable", + "name": "daoShare", + "nameLocation": "24974:8:7", + "nodeType": "VariableDeclaration", + "scope": 3565, + "src": "24966:16:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3560, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24966:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3563, + "indexed": false, + "mutability": "mutable", + "name": "to", + "nameLocation": "24992:2:7", + "nodeType": "VariableDeclaration", + "scope": 3565, + "src": "24984:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3562, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24984:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "24965:30:7" + }, + "src": "24942:54:7" + }, + { + "anonymous": false, + "id": 3569, + "name": "MintingToggled", + "nameLocation": "25004:14:7", + "nodeType": "EventDefinition", + "parameters": { + "id": 3568, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3567, + "indexed": false, + "mutability": "mutable", + "name": "toggled", + "nameLocation": "25024:7:7", + "nodeType": "VariableDeclaration", + "scope": 3569, + "src": "25019:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3566, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "25019:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "25018:14:7" + }, + "src": "24998:35:7" + }, + { + "anonymous": false, + "id": 3573, + "name": "RedeemingToggled", + "nameLocation": "25041:16:7", + "nodeType": "EventDefinition", + "parameters": { + "id": 3572, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3571, + "indexed": false, + "mutability": "mutable", + "name": "toggled", + "nameLocation": "25063:7:7", + "nodeType": "VariableDeclaration", + "scope": 3573, + "src": "25058:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3570, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "25058:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "25057:14:7" + }, + "src": "25035:37:7" + }, + { + "anonymous": false, + "id": 3577, + "name": "RecollateralizeToggled", + "nameLocation": "25080:22:7", + "nodeType": "EventDefinition", + "parameters": { + "id": 3576, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3575, + "indexed": false, + "mutability": "mutable", + "name": "toggled", + "nameLocation": "25108:7:7", + "nodeType": "VariableDeclaration", + "scope": 3577, + "src": "25103:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3574, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "25103:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "25102:14:7" + }, + "src": "25074:43:7" + }, + { + "anonymous": false, + "id": 3581, + "name": "BuybackToggled", + "nameLocation": "25125:14:7", + "nodeType": "EventDefinition", + "parameters": { + "id": 3580, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3579, + "indexed": false, + "mutability": "mutable", + "name": "toggled", + "nameLocation": "25145:7:7", + "nodeType": "VariableDeclaration", + "scope": 3581, + "src": "25140:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3578, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "25140:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "25139:14:7" + }, + "src": "25119:35:7" + } + ], + "scope": 3583, + "src": "1679:23477:7", + "usedErrors": [] + } + ], + "src": "80:25095:7" + }, + "id": 7 + }, + "contracts/DEI/Pools/DEIPoolLibrary.sol": { + "ast": { + "absolutePath": "contracts/DEI/Pools/DEIPoolLibrary.sol", + "exportedSymbols": { + "DEIPoolLibrary": [ + 3879 + ] + }, + "id": 3880, + "license": "GPL-2.0-or-later", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3584, + "literals": [ + "solidity", + ">=", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "80:24:8" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "DEIPoolLibrary", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 3879, + "linearizedBaseContracts": [ + 3879 + ], + "name": "DEIPoolLibrary", + "nameLocation": "115:14:8", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 3587, + "mutability": "constant", + "name": "PRICE_PRECISION", + "nameLocation": "202:15:8", + "nodeType": "VariableDeclaration", + "scope": 3879, + "src": "177:46:8", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3585, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "177:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "316536", + "id": 3586, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "220:3:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + }, + "visibility": "private" + }, + { + "body": { + "id": 3590, + "nodeType": "Block", + "src": "244:2:8", + "statements": [] + }, + "id": 3591, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3588, + "nodeType": "ParameterList", + "parameters": [], + "src": "241:2:8" + }, + "returnParameters": { + "id": 3589, + "nodeType": "ParameterList", + "parameters": [], + "src": "244:0:8" + }, + "scope": 3879, + "src": "230:16:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "canonicalName": "DEIPoolLibrary.MintFD_Params", + "id": 3600, + "members": [ + { + "constant": false, + "id": 3593, + "mutability": "mutable", + "name": "deus_price_usd", + "nameLocation": "374:14:8", + "nodeType": "VariableDeclaration", + "scope": 3600, + "src": "366:22:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3592, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "366:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3595, + "mutability": "mutable", + "name": "col_price_usd", + "nameLocation": "407:13:8", + "nodeType": "VariableDeclaration", + "scope": 3600, + "src": "399:21:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3594, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "399:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3597, + "mutability": "mutable", + "name": "collateral_amount", + "nameLocation": "438:17:8", + "nodeType": "VariableDeclaration", + "scope": 3600, + "src": "430:25:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3596, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "430:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3599, + "mutability": "mutable", + "name": "col_ratio", + "nameLocation": "473:9:8", + "nodeType": "VariableDeclaration", + "scope": 3600, + "src": "465:17:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3598, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "465:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "MintFD_Params", + "nameLocation": "342:13:8", + "nodeType": "StructDefinition", + "scope": 3879, + "src": "335:154:8", + "visibility": "public" + }, + { + "canonicalName": "DEIPoolLibrary.BuybackDEUS_Params", + "id": 3609, + "members": [ + { + "constant": false, + "id": 3602, + "mutability": "mutable", + "name": "excess_collateral_dollar_value_d18", + "nameLocation": "539:34:8", + "nodeType": "VariableDeclaration", + "scope": 3609, + "src": "531:42:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3601, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "531:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3604, + "mutability": "mutable", + "name": "deus_price_usd", + "nameLocation": "591:14:8", + "nodeType": "VariableDeclaration", + "scope": 3609, + "src": "583:22:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3603, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "583:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3606, + "mutability": "mutable", + "name": "col_price_usd", + "nameLocation": "623:13:8", + "nodeType": "VariableDeclaration", + "scope": 3609, + "src": "615:21:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3605, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "615:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3608, + "mutability": "mutable", + "name": "DEUS_amount", + "nameLocation": "654:11:8", + "nodeType": "VariableDeclaration", + "scope": 3609, + "src": "646:19:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3607, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "646:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "BuybackDEUS_Params", + "nameLocation": "502:18:8", + "nodeType": "StructDefinition", + "scope": 3879, + "src": "495:177:8", + "visibility": "public" + }, + { + "body": { + "id": 3626, + "nodeType": "Block", + "src": "834:67:8", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3618, + "name": "collateral_amount_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3613, + "src": "852:21:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 3619, + "name": "col_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3611, + "src": "876:9:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "852:33:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3621, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "851:35:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "hexValue": "316536", + "id": 3622, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "890:3:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "id": 3623, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "889:5:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + }, + "src": "851:43:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3617, + "id": 3625, + "nodeType": "Return", + "src": "844:50:8" + } + ] + }, + "functionSelector": "882ab63a", + "id": 3627, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "calcMint1t1DEI", + "nameLocation": "739:14:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3614, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3611, + "mutability": "mutable", + "name": "col_price", + "nameLocation": "762:9:8", + "nodeType": "VariableDeclaration", + "scope": 3627, + "src": "754:17:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3610, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "754:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3613, + "mutability": "mutable", + "name": "collateral_amount_d18", + "nameLocation": "781:21:8", + "nodeType": "VariableDeclaration", + "scope": 3627, + "src": "773:29:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3612, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "773:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "753:50:8" + }, + "returnParameters": { + "id": 3617, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3616, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3627, + "src": "825:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3615, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "825:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "824:9:8" + }, + "scope": 3879, + "src": "730:171:8", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3644, + "nodeType": "Block", + "src": "1018:66:8", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3636, + "name": "deus_amount_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3631, + "src": "1036:15:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 3637, + "name": "deus_price_usd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3629, + "src": "1054:14:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1036:32:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3639, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1035:34:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "hexValue": "316536", + "id": 3640, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1073:3:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "id": 3641, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1072:5:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + }, + "src": "1035:42:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3635, + "id": 3643, + "nodeType": "Return", + "src": "1028:49:8" + } + ] + }, + "functionSelector": "14da4ee1", + "id": 3645, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "calcMintAlgorithmicDEI", + "nameLocation": "916:22:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3632, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3629, + "mutability": "mutable", + "name": "deus_price_usd", + "nameLocation": "947:14:8", + "nodeType": "VariableDeclaration", + "scope": 3645, + "src": "939:22:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3628, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "939:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3631, + "mutability": "mutable", + "name": "deus_amount_d18", + "nameLocation": "971:15:8", + "nodeType": "VariableDeclaration", + "scope": 3645, + "src": "963:23:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3630, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "963:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "938:49:8" + }, + "returnParameters": { + "id": 3635, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3634, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3645, + "src": "1009:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3633, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1009:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1008:9:8" + }, + "scope": 3879, + "src": "907:177:8", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3702, + "nodeType": "Block", + "src": "1189:903:8", + "statements": [ + { + "assignments": [ + 3656 + ], + "declarations": [ + { + "constant": false, + "id": 3656, + "mutability": "mutable", + "name": "c_dollar_value_d18", + "nameLocation": "1487:18:8", + "nodeType": "VariableDeclaration", + "scope": 3702, + "src": "1479:26:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3655, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1479:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3657, + "nodeType": "VariableDeclarationStatement", + "src": "1479:26:8" + }, + { + "id": 3670, + "nodeType": "Block", + "src": "1562:166:8", + "statements": [ + { + "expression": { + "id": 3668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3658, + "name": "c_dollar_value_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3656, + "src": "1638:18:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3659, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3648, + "src": "1660:6:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintFD_Params_$3600_memory_ptr", + "typeString": "struct DEIPoolLibrary.MintFD_Params memory" + } + }, + "id": 3660, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral_amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 3597, + "src": "1660:24:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "expression": { + "id": 3661, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3648, + "src": "1687:6:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintFD_Params_$3600_memory_ptr", + "typeString": "struct DEIPoolLibrary.MintFD_Params memory" + } + }, + "id": 3662, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "col_price_usd", + "nodeType": "MemberAccess", + "referencedDeclaration": 3595, + "src": "1687:20:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1660:47:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3664, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1659:49:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "hexValue": "316536", + "id": 3665, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1712:3:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "id": 3666, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1711:5:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + }, + "src": "1659:57:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1638:78:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3669, + "nodeType": "ExpressionStatement", + "src": "1638:78:8" + } + ] + }, + { + "assignments": [ + 3672 + ], + "declarations": [ + { + "constant": false, + "id": 3672, + "mutability": "mutable", + "name": "calculated_deus_dollar_value_d18", + "nameLocation": "1742:32:8", + "nodeType": "VariableDeclaration", + "scope": 3702, + "src": "1737:37:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3671, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1737:4:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3684, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3673, + "name": "c_dollar_value_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3656, + "src": "1779:18:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "hexValue": "316536", + "id": 3674, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1801:3:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "id": 3675, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1800:5:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + }, + "src": "1779:26:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3677, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1778:28:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "expression": { + "id": 3678, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3648, + "src": "1809:6:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintFD_Params_$3600_memory_ptr", + "typeString": "struct DEIPoolLibrary.MintFD_Params memory" + } + }, + "id": 3679, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "col_ratio", + "nodeType": "MemberAccess", + "referencedDeclaration": 3599, + "src": "1809:16:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1778:47:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3681, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1777:49:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 3682, + "name": "c_dollar_value_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3656, + "src": "1829:18:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1777:70:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1737:110:8" + }, + { + "assignments": [ + 3686 + ], + "declarations": [ + { + "constant": false, + "id": 3686, + "mutability": "mutable", + "name": "calculated_deus_needed", + "nameLocation": "1863:22:8", + "nodeType": "VariableDeclaration", + "scope": 3702, + "src": "1858:27:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3685, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1858:4:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3695, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3690, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3687, + "name": "calculated_deus_dollar_value_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3672, + "src": "1889:32:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "hexValue": "316536", + "id": 3688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1925:3:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "id": 3689, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1924:5:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + }, + "src": "1889:40:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3691, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1888:42:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "expression": { + "id": 3692, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3648, + "src": "1933:6:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintFD_Params_$3600_memory_ptr", + "typeString": "struct DEIPoolLibrary.MintFD_Params memory" + } + }, + "id": 3693, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "deus_price_usd", + "nodeType": "MemberAccess", + "referencedDeclaration": 3593, + "src": "1933:21:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1888:66:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1858:96:8" + }, + { + "expression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3696, + "name": "c_dollar_value_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3656, + "src": "1986:18:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 3697, + "name": "calculated_deus_dollar_value_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3672, + "src": "2007:32:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1986:53:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3699, + "name": "calculated_deus_needed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3686, + "src": "2053:22:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3700, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1972:113:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "functionReturnParameters": 3654, + "id": 3701, + "nodeType": "Return", + "src": "1965:120:8" + } + ] + }, + "functionSelector": "537a30a7", + "id": 3703, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "calcMintFractionalDEI", + "nameLocation": "1099:21:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3649, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3648, + "mutability": "mutable", + "name": "params", + "nameLocation": "1142:6:8", + "nodeType": "VariableDeclaration", + "scope": 3703, + "src": "1121:27:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintFD_Params_$3600_memory_ptr", + "typeString": "struct DEIPoolLibrary.MintFD_Params" + }, + "typeName": { + "id": 3647, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3646, + "name": "MintFD_Params", + "nodeType": "IdentifierPath", + "referencedDeclaration": 3600, + "src": "1121:13:8" + }, + "referencedDeclaration": 3600, + "src": "1121:13:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintFD_Params_$3600_storage_ptr", + "typeString": "struct DEIPoolLibrary.MintFD_Params" + } + }, + "visibility": "internal" + } + ], + "src": "1120:29:8" + }, + "returnParameters": { + "id": 3654, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3651, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3703, + "src": "1171:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3650, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1171:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3653, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3703, + "src": "1180:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3652, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1180:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1170:18:8" + }, + "scope": 3879, + "src": "1090:1002:8", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3720, + "nodeType": "Block", + "src": "2197:60:8", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3712, + "name": "DEI_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3707, + "src": "2215:10:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "hexValue": "316536", + "id": 3713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2229:3:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "id": 3714, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2228:5:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + }, + "src": "2215:18:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3716, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2214:20:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 3717, + "name": "col_price_usd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3705, + "src": "2237:13:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2214:36:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3711, + "id": 3719, + "nodeType": "Return", + "src": "2207:43:8" + } + ] + }, + "functionSelector": "068d54aa", + "id": 3721, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "calcRedeem1t1DEI", + "nameLocation": "2107:16:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3708, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3705, + "mutability": "mutable", + "name": "col_price_usd", + "nameLocation": "2132:13:8", + "nodeType": "VariableDeclaration", + "scope": 3721, + "src": "2124:21:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3704, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2124:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3707, + "mutability": "mutable", + "name": "DEI_amount", + "nameLocation": "2155:10:8", + "nodeType": "VariableDeclaration", + "scope": 3721, + "src": "2147:18:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3706, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2147:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2123:43:8" + }, + "returnParameters": { + "id": 3711, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3710, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3721, + "src": "2188:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3709, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2188:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2187:9:8" + }, + "scope": 3879, + "src": "2098:159:8", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3771, + "nodeType": "Block", + "src": "2352:943:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3730, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3724, + "src": "2544:6:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BuybackDEUS_Params_$3609_memory_ptr", + "typeString": "struct DEIPoolLibrary.BuybackDEUS_Params memory" + } + }, + "id": 3731, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "excess_collateral_dollar_value_d18", + "nodeType": "MemberAccess", + "referencedDeclaration": 3602, + "src": "2544:41:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 3732, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2588:1:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2544:45:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4e6f2065786365737320636f6c6c61746572616c20746f20627579206261636b21", + "id": 3734, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2591:35:8", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_62be30ad51f587419028108adbc87cc9e2c30cf8732921ae68682f0edb95ba89", + "typeString": "literal_string \"No excess collateral to buy back!\"" + }, + "value": "No excess collateral to buy back!" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_62be30ad51f587419028108adbc87cc9e2c30cf8732921ae68682f0edb95ba89", + "typeString": "literal_string \"No excess collateral to buy back!\"" + } + ], + "id": 3729, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2536:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2536:91:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3736, + "nodeType": "ExpressionStatement", + "src": "2536:91:8" + }, + { + "assignments": [ + 3738 + ], + "declarations": [ + { + "constant": false, + "id": 3738, + "mutability": "mutable", + "name": "deus_dollar_value_d18", + "nameLocation": "2702:21:8", + "nodeType": "VariableDeclaration", + "scope": 3771, + "src": "2694:29:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3737, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2694:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3749, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3744, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3739, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3724, + "src": "2727:6:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BuybackDEUS_Params_$3609_memory_ptr", + "typeString": "struct DEIPoolLibrary.BuybackDEUS_Params memory" + } + }, + "id": 3740, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "DEUS_amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 3608, + "src": "2727:18:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "expression": { + "id": 3741, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3724, + "src": "2749:6:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BuybackDEUS_Params_$3609_memory_ptr", + "typeString": "struct DEIPoolLibrary.BuybackDEUS_Params memory" + } + }, + "id": 3742, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "deus_price_usd", + "nodeType": "MemberAccess", + "referencedDeclaration": 3604, + "src": "2749:21:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3743, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2748:23:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2727:44:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3745, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2726:46:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "hexValue": "316536", + "id": 3746, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2776:3:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "id": 3747, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2775:5:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + }, + "src": "2726:54:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2694:86:8" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3751, + "name": "deus_dollar_value_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3738, + "src": "2798:21:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "expression": { + "id": 3752, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3724, + "src": "2823:6:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BuybackDEUS_Params_$3609_memory_ptr", + "typeString": "struct DEIPoolLibrary.BuybackDEUS_Params memory" + } + }, + "id": 3753, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "excess_collateral_dollar_value_d18", + "nodeType": "MemberAccess", + "referencedDeclaration": 3602, + "src": "2823:41:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2798:66:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "596f752061726520747279696e6720746f20627579206261636b206d6f7265207468616e207468652065786365737321", + "id": 3755, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2866:50:8", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_20cee5f8efce895d1238c3d0c37f314fe6844bbbe5c581850efd4e66f70f37eb", + "typeString": "literal_string \"You are trying to buy back more than the excess!\"" + }, + "value": "You are trying to buy back more than the excess!" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_20cee5f8efce895d1238c3d0c37f314fe6844bbbe5c581850efd4e66f70f37eb", + "typeString": "literal_string \"You are trying to buy back more than the excess!\"" + } + ], + "id": 3750, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2790:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2790:127:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3757, + "nodeType": "ExpressionStatement", + "src": "2790:127:8" + }, + { + "assignments": [ + 3759 + ], + "declarations": [ + { + "constant": false, + "id": 3759, + "mutability": "mutable", + "name": "collateral_equivalent_d18", + "nameLocation": "3031:25:8", + "nodeType": "VariableDeclaration", + "scope": 3771, + "src": "3023:33:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3758, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3023:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3768, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3760, + "name": "deus_dollar_value_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3738, + "src": "3060:21:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "hexValue": "316536", + "id": 3761, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3085:3:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "id": 3762, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3084:5:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + }, + "src": "3060:29:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3764, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3059:31:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "expression": { + "id": 3765, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3724, + "src": "3093:6:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BuybackDEUS_Params_$3609_memory_ptr", + "typeString": "struct DEIPoolLibrary.BuybackDEUS_Params memory" + } + }, + "id": 3766, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "col_price_usd", + "nodeType": "MemberAccess", + "referencedDeclaration": 3606, + "src": "3093:20:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3059:54:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3023:90:8" + }, + { + "expression": { + "id": 3769, + "name": "collateral_equivalent_d18", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3759, + "src": "3262:25:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3728, + "id": 3770, + "nodeType": "Return", + "src": "3255:32:8" + } + ] + }, + "functionSelector": "3c04af9f", + "id": 3772, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "calcBuyBackDEUS", + "nameLocation": "2272:15:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3725, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3724, + "mutability": "mutable", + "name": "params", + "nameLocation": "2314:6:8", + "nodeType": "VariableDeclaration", + "scope": 3772, + "src": "2288:32:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BuybackDEUS_Params_$3609_memory_ptr", + "typeString": "struct DEIPoolLibrary.BuybackDEUS_Params" + }, + "typeName": { + "id": 3723, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3722, + "name": "BuybackDEUS_Params", + "nodeType": "IdentifierPath", + "referencedDeclaration": 3609, + "src": "2288:18:8" + }, + "referencedDeclaration": 3609, + "src": "2288:18:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BuybackDEUS_Params_$3609_storage_ptr", + "typeString": "struct DEIPoolLibrary.BuybackDEUS_Params" + } + }, + "visibility": "internal" + } + ], + "src": "2287:34:8" + }, + "returnParameters": { + "id": 3728, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3727, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3772, + "src": "2343:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3726, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2343:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2342:9:8" + }, + "scope": 3879, + "src": "2263:1032:8", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3797, + "nodeType": "Block", + "src": "3573:471:8", + "statements": [ + { + "assignments": [ + 3784 + ], + "declarations": [ + { + "constant": false, + "id": 3784, + "mutability": "mutable", + "name": "target_collat_value", + "nameLocation": "3591:19:8", + "nodeType": "VariableDeclaration", + "scope": 3797, + "src": "3583:27:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3783, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3583:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3792, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3785, + "name": "total_supply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3774, + "src": "3614:12:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 3786, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3776, + "src": "3629:23:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3614:38:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3788, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3613:40:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "hexValue": "316536", + "id": 3789, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3657:3:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "id": 3790, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3656:5:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + }, + "src": "3613:48:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3583:78:8" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3793, + "name": "target_collat_value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3784, + "src": "3924:19:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 3794, + "name": "global_collat_value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3778, + "src": "3946:19:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3924:41:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3782, + "id": 3796, + "nodeType": "Return", + "src": "3917:48:8" + } + ] + }, + "functionSelector": "0ff24ec1", + "id": 3798, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recollateralizeAmount", + "nameLocation": "3437:21:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3779, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3774, + "mutability": "mutable", + "name": "total_supply", + "nameLocation": "3467:12:8", + "nodeType": "VariableDeclaration", + "scope": 3798, + "src": "3459:20:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3773, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3459:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3776, + "mutability": "mutable", + "name": "global_collateral_ratio", + "nameLocation": "3489:23:8", + "nodeType": "VariableDeclaration", + "scope": 3798, + "src": "3481:31:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3775, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3481:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3778, + "mutability": "mutable", + "name": "global_collat_value", + "nameLocation": "3522:19:8", + "nodeType": "VariableDeclaration", + "scope": 3798, + "src": "3514:27:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3777, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3514:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3458:84:8" + }, + "returnParameters": { + "id": 3782, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3781, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3798, + "src": "3564:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3780, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3564:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3563:9:8" + }, + "scope": 3879, + "src": "3428:616:8", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3877, + "nodeType": "Block", + "src": "4307:655:8", + "statements": [ + { + "assignments": [ + 3816 + ], + "declarations": [ + { + "constant": false, + "id": 3816, + "mutability": "mutable", + "name": "collat_value_attempted", + "nameLocation": "4325:22:8", + "nodeType": "VariableDeclaration", + "scope": 3877, + "src": "4317:30:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3815, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4317:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3824, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3817, + "name": "collateral_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3800, + "src": "4351:17:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 3818, + "name": "col_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3802, + "src": "4371:9:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4351:29:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3820, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4350:31:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "hexValue": "316536", + "id": 3821, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4385:3:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "id": 3822, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4384:5:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + }, + "src": "4350:39:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4317:72:8" + }, + { + "assignments": [ + 3826 + ], + "declarations": [ + { + "constant": false, + "id": 3826, + "mutability": "mutable", + "name": "effective_collateral_ratio", + "nameLocation": "4407:26:8", + "nodeType": "VariableDeclaration", + "scope": 3877, + "src": "4399:34:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3825, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4399:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3834, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3827, + "name": "global_collat_value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3804, + "src": "4437:19:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "hexValue": "316536", + "id": 3828, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4460:3:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "id": 3829, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4459:5:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + }, + "src": "4437:27:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3831, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4436:29:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 3832, + "name": "dei_total_supply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3806, + "src": "4468:16:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4436:48:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4399:85:8" + }, + { + "assignments": [ + 3836 + ], + "declarations": [ + { + "constant": false, + "id": 3836, + "mutability": "mutable", + "name": "recollat_possible", + "nameLocation": "4522:17:8", + "nodeType": "VariableDeclaration", + "scope": 3877, + "src": "4514:25:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3835, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4514:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3849, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3837, + "name": "global_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3808, + "src": "4543:23:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 3838, + "name": "dei_total_supply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3806, + "src": "4569:16:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4543:42:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3840, + "name": "dei_total_supply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3806, + "src": "4589:16:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 3841, + "name": "effective_collateral_ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3826, + "src": "4608:26:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4589:45:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3843, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4588:47:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4543:92:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3845, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4542:94:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "hexValue": "316536", + "id": 3846, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4640:3:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "id": 3847, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4639:5:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + }, + "src": "4542:102:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4514:130:8" + }, + { + "assignments": [ + 3851 + ], + "declarations": [ + { + "constant": false, + "id": 3851, + "mutability": "mutable", + "name": "amount_to_recollat", + "nameLocation": "4663:18:8", + "nodeType": "VariableDeclaration", + "scope": 3877, + "src": "4655:26:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3850, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4655:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3852, + "nodeType": "VariableDeclarationStatement", + "src": "4655:26:8" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3853, + "name": "collat_value_attempted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3816, + "src": "4694:22:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 3854, + "name": "recollat_possible", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3836, + "src": "4720:17:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4694:43:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3865, + "nodeType": "Block", + "src": "4812:63:8", + "statements": [ + { + "expression": { + "id": 3863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3861, + "name": "amount_to_recollat", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3851, + "src": "4826:18:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3862, + "name": "recollat_possible", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3836, + "src": "4847:17:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4826:38:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3864, + "nodeType": "ExpressionStatement", + "src": "4826:38:8" + } + ] + }, + "id": 3866, + "nodeType": "IfStatement", + "src": "4691:184:8", + "trueBody": { + "id": 3860, + "nodeType": "Block", + "src": "4738:68:8", + "statements": [ + { + "expression": { + "id": 3858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3856, + "name": "amount_to_recollat", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3851, + "src": "4752:18:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3857, + "name": "collat_value_attempted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3816, + "src": "4773:22:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4752:43:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3859, + "nodeType": "ExpressionStatement", + "src": "4752:43:8" + } + ] + } + }, + { + "expression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3867, + "name": "amount_to_recollat", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3851, + "src": "4894:18:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "hexValue": "316536", + "id": 3868, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4916:3:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + } + ], + "id": 3869, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4915:5:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + }, + "src": "4894:26:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3871, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4893:28:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 3872, + "name": "col_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3802, + "src": "4924:9:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4893:40:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3874, + "name": "amount_to_recollat", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3851, + "src": "4935:18:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3875, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4892:62:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "functionReturnParameters": 3814, + "id": 3876, + "nodeType": "Return", + "src": "4885:69:8" + } + ] + }, + "functionSelector": "fc011061", + "id": 3878, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "calcRecollateralizeDEIInner", + "nameLocation": "4059:27:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3809, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3800, + "mutability": "mutable", + "name": "collateral_amount", + "nameLocation": "4104:17:8", + "nodeType": "VariableDeclaration", + "scope": 3878, + "src": "4096:25:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3799, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4096:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3802, + "mutability": "mutable", + "name": "col_price", + "nameLocation": "4140:9:8", + "nodeType": "VariableDeclaration", + "scope": 3878, + "src": "4132:17:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3801, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4132:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3804, + "mutability": "mutable", + "name": "global_collat_value", + "nameLocation": "4167:19:8", + "nodeType": "VariableDeclaration", + "scope": 3878, + "src": "4159:27:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3803, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4159:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3806, + "mutability": "mutable", + "name": "dei_total_supply", + "nameLocation": "4204:16:8", + "nodeType": "VariableDeclaration", + "scope": 3878, + "src": "4196:24:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3805, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4196:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3808, + "mutability": "mutable", + "name": "global_collateral_ratio", + "nameLocation": "4238:23:8", + "nodeType": "VariableDeclaration", + "scope": 3878, + "src": "4230:31:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3807, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4230:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4086:181:8" + }, + "returnParameters": { + "id": 3814, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3811, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3878, + "src": "4289:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3810, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4289:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3813, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3878, + "src": "4298:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3812, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4298:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4288:18:8" + }, + "scope": 3879, + "src": "4050:912:8", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + } + ], + "scope": 3880, + "src": "106:4859:8", + "usedErrors": [] + } + ], + "src": "80:4904:8" + }, + "id": 8 + }, + "contracts/DEI/Pools/Pool_DAI.sol": { + "ast": { + "absolutePath": "contracts/DEI/Pools/Pool_DAI.sol", + "exportedSymbols": { + "AccessControl": [ + 6283 + ], + "Address": [ + 11543 + ], + "Context": [ + 456 + ], + "DEIPool": [ + 3582 + ], + "DEIPoolLibrary": [ + 3879 + ], + "ERC20": [ + 4919 + ], + "EnumerableSet": [ + 11955 + ], + "IDEIStablecoin": [ + 1530 + ], + "IDEUSToken": [ + 4350 + ], + "IERC20": [ + 5514 + ], + "Pool_DAI": [ + 3934 + ], + "SafeMath": [ + 6895 + ], + "TransferHelper": [ + 8767 + ] + }, + "id": 3935, + "license": "GPL-2.0-or-later", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3881, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "80:25:9" + }, + { + "absolutePath": "contracts/DEI/Pools/DEIPool.sol", + "file": "./DEIPool.sol", + "id": 3882, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3935, + "sourceUnit": 3583, + "src": "107:23:9", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 3883, + "name": "DEIPool", + "nodeType": "IdentifierPath", + "referencedDeclaration": 3582, + "src": "153:7:9" + }, + "id": 3884, + "nodeType": "InheritanceSpecifier", + "src": "153:7:9" + } + ], + "canonicalName": "Pool_DAI", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 3934, + "linearizedBaseContracts": [ + 3934, + 3582, + 6283, + 456 + ], + "name": "Pool_DAI", + "nameLocation": "141:8:9", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "fa4dfa3a", + "id": 3886, + "mutability": "mutable", + "name": "DAI_address", + "nameLocation": "182:11:9", + "nodeType": "VariableDeclaration", + "scope": 3934, + "src": "167:26:9", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3885, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "167:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 3932, + "nodeType": "Block", + "src": "605:182:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3913, + "name": "_collateral_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3892, + "src": "623:19:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 3916, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "654:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3915, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "646:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3914, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "646:7:9", + "typeDescriptions": {} + } + }, + "id": 3917, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "646:10:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "623:33:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5a65726f2061646472657373206465746563746564", + "id": 3919, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "658:23:9", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2a5a9515df0747227c3d5efc42180f2060cd0f29e443cb46b69635b43998b954", + "typeString": "literal_string \"Zero address detected\"" + }, + "value": "Zero address detected" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2a5a9515df0747227c3d5efc42180f2060cd0f29e443cb46b69635b43998b954", + "typeString": "literal_string \"Zero address detected\"" + } + ], + "id": 3912, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "615:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "615:67:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3921, + "nodeType": "ExpressionStatement", + "src": "615:67:9" + }, + { + "expression": { + "arguments": [ + { + "id": 3923, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6026, + "src": "704:18:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3924, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "724:10:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 3925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "724:12:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 3922, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6209, + "src": "693:10:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 3926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "693:44:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3927, + "nodeType": "ExpressionStatement", + "src": "693:44:9" + }, + { + "expression": { + "id": 3930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3928, + "name": "DAI_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3886, + "src": "747:11:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3929, + "name": "_collateral_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3892, + "src": "761:19:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "747:33:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3931, + "nodeType": "ExpressionStatement", + "src": "747:33:9" + } + ] + }, + "id": 3933, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 3903, + "name": "_dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3888, + "src": "468:21:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3904, + "name": "_deus_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3890, + "src": "491:22:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3905, + "name": "_collateral_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3892, + "src": "515:19:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3906, + "name": "_trusty_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3894, + "src": "536:15:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3907, + "name": "_admin_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3896, + "src": "553:14:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3908, + "name": "_pool_ceiling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3898, + "src": "569:13:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3909, + "name": "_library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3900, + "src": "584:8:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 3910, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 3902, + "name": "DEIPool", + "nodeType": "IdentifierPath", + "referencedDeclaration": 3582, + "src": "460:7:9" + }, + "nodeType": "ModifierInvocation", + "src": "460:133:9" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3901, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3888, + "mutability": "mutable", + "name": "_dei_contract_address", + "nameLocation": "228:21:9", + "nodeType": "VariableDeclaration", + "scope": 3933, + "src": "220:29:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3887, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "220:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3890, + "mutability": "mutable", + "name": "_deus_contract_address", + "nameLocation": "267:22:9", + "nodeType": "VariableDeclaration", + "scope": 3933, + "src": "259:30:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3889, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "259:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3892, + "mutability": "mutable", + "name": "_collateral_address", + "nameLocation": "307:19:9", + "nodeType": "VariableDeclaration", + "scope": 3933, + "src": "299:27:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3891, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "299:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3894, + "mutability": "mutable", + "name": "_trusty_address", + "nameLocation": "344:15:9", + "nodeType": "VariableDeclaration", + "scope": 3933, + "src": "336:23:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3893, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "336:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3896, + "mutability": "mutable", + "name": "_admin_address", + "nameLocation": "377:14:9", + "nodeType": "VariableDeclaration", + "scope": 3933, + "src": "369:22:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3895, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "369:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3898, + "mutability": "mutable", + "name": "_pool_ceiling", + "nameLocation": "409:13:9", + "nodeType": "VariableDeclaration", + "scope": 3933, + "src": "401:21:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3897, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "401:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3900, + "mutability": "mutable", + "name": "_library", + "nameLocation": "440:8:9", + "nodeType": "VariableDeclaration", + "scope": 3933, + "src": "432:16:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3899, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "432:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "210:244:9" + }, + "returnParameters": { + "id": 3911, + "nodeType": "ParameterList", + "parameters": [], + "src": "605:0:9" + }, + "scope": 3934, + "src": "199:588:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 3935, + "src": "132:657:9", + "usedErrors": [] + } + ], + "src": "80:728:9" + }, + "id": 9 + }, + "contracts/DEI/Pools/Pool_HUSD.sol": { + "ast": { + "absolutePath": "contracts/DEI/Pools/Pool_HUSD.sol", + "exportedSymbols": { + "AccessControl": [ + 6283 + ], + "Address": [ + 11543 + ], + "Context": [ + 456 + ], + "DEIPool": [ + 3582 + ], + "DEIPoolLibrary": [ + 3879 + ], + "ERC20": [ + 4919 + ], + "EnumerableSet": [ + 11955 + ], + "IDEIStablecoin": [ + 1530 + ], + "IDEUSToken": [ + 4350 + ], + "IERC20": [ + 5514 + ], + "Pool_HUSD": [ + 3989 + ], + "SafeMath": [ + 6895 + ], + "TransferHelper": [ + 8767 + ] + }, + "id": 3990, + "license": "GPL-2.0-or-later", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3936, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "80:25:10" + }, + { + "absolutePath": "contracts/DEI/Pools/DEIPool.sol", + "file": "./DEIPool.sol", + "id": 3937, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3990, + "sourceUnit": 3583, + "src": "107:23:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 3938, + "name": "DEIPool", + "nodeType": "IdentifierPath", + "referencedDeclaration": 3582, + "src": "154:7:10" + }, + "id": 3939, + "nodeType": "InheritanceSpecifier", + "src": "154:7:10" + } + ], + "canonicalName": "Pool_HUSD", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 3989, + "linearizedBaseContracts": [ + 3989, + 3582, + 6283, + 456 + ], + "name": "Pool_HUSD", + "nameLocation": "141:9:10", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "74347c44", + "id": 3941, + "mutability": "mutable", + "name": "HUSD_address", + "nameLocation": "183:12:10", + "nodeType": "VariableDeclaration", + "scope": 3989, + "src": "168:27:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3940, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "168:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 3987, + "nodeType": "Block", + "src": "607:183:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3968, + "name": "_collateral_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3947, + "src": "625:19:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 3971, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "656:1:10", + "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": 3970, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "648:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3969, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "648:7:10", + "typeDescriptions": {} + } + }, + "id": 3972, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "648:10:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "625:33:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5a65726f2061646472657373206465746563746564", + "id": 3974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "660:23:10", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2a5a9515df0747227c3d5efc42180f2060cd0f29e443cb46b69635b43998b954", + "typeString": "literal_string \"Zero address detected\"" + }, + "value": "Zero address detected" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2a5a9515df0747227c3d5efc42180f2060cd0f29e443cb46b69635b43998b954", + "typeString": "literal_string \"Zero address detected\"" + } + ], + "id": 3967, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "617:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "617:67:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3976, + "nodeType": "ExpressionStatement", + "src": "617:67:10" + }, + { + "expression": { + "arguments": [ + { + "id": 3978, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6026, + "src": "706:18:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3979, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "726:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 3980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "726:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 3977, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6209, + "src": "695:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 3981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "695:44:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3982, + "nodeType": "ExpressionStatement", + "src": "695:44:10" + }, + { + "expression": { + "id": 3985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3983, + "name": "HUSD_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3941, + "src": "749:12:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3984, + "name": "_collateral_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3947, + "src": "764:19:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "749:34:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3986, + "nodeType": "ExpressionStatement", + "src": "749:34:10" + } + ] + }, + "id": 3988, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 3958, + "name": "_dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3943, + "src": "470:21:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3959, + "name": "_deus_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3945, + "src": "493:22:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3960, + "name": "_collateral_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3947, + "src": "517:19:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3961, + "name": "_trusty_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3949, + "src": "538:15:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3962, + "name": "_admin_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3951, + "src": "555:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3963, + "name": "_pool_ceiling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3953, + "src": "571:13:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3964, + "name": "_library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3955, + "src": "586:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 3965, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 3957, + "name": "DEIPool", + "nodeType": "IdentifierPath", + "referencedDeclaration": 3582, + "src": "462:7:10" + }, + "nodeType": "ModifierInvocation", + "src": "462:133:10" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3956, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3943, + "mutability": "mutable", + "name": "_dei_contract_address", + "nameLocation": "230:21:10", + "nodeType": "VariableDeclaration", + "scope": 3988, + "src": "222:29:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3942, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "222:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3945, + "mutability": "mutable", + "name": "_deus_contract_address", + "nameLocation": "269:22:10", + "nodeType": "VariableDeclaration", + "scope": 3988, + "src": "261:30:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3944, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "261:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3947, + "mutability": "mutable", + "name": "_collateral_address", + "nameLocation": "309:19:10", + "nodeType": "VariableDeclaration", + "scope": 3988, + "src": "301:27:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3946, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "301:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3949, + "mutability": "mutable", + "name": "_trusty_address", + "nameLocation": "346:15:10", + "nodeType": "VariableDeclaration", + "scope": 3988, + "src": "338:23:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3948, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "338:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3951, + "mutability": "mutable", + "name": "_admin_address", + "nameLocation": "379:14:10", + "nodeType": "VariableDeclaration", + "scope": 3988, + "src": "371:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3950, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "371:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3953, + "mutability": "mutable", + "name": "_pool_ceiling", + "nameLocation": "411:13:10", + "nodeType": "VariableDeclaration", + "scope": 3988, + "src": "403:21:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3952, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "403:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3955, + "mutability": "mutable", + "name": "_library", + "nameLocation": "442:8:10", + "nodeType": "VariableDeclaration", + "scope": 3988, + "src": "434:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3954, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "434:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "212:244:10" + }, + "returnParameters": { + "id": 3966, + "nodeType": "ParameterList", + "parameters": [], + "src": "607:0:10" + }, + "scope": 3989, + "src": "201:589:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 3990, + "src": "132:660:10", + "usedErrors": [] + } + ], + "src": "80:731:10" + }, + "id": 10 + }, + "contracts/DEI/Pools/Pool_USDC.sol": { + "ast": { + "absolutePath": "contracts/DEI/Pools/Pool_USDC.sol", + "exportedSymbols": { + "AccessControl": [ + 6283 + ], + "Address": [ + 11543 + ], + "Context": [ + 456 + ], + "DEIPool": [ + 3582 + ], + "DEIPoolLibrary": [ + 3879 + ], + "ERC20": [ + 4919 + ], + "EnumerableSet": [ + 11955 + ], + "IDEIStablecoin": [ + 1530 + ], + "IDEUSToken": [ + 4350 + ], + "IERC20": [ + 5514 + ], + "Pool_USDC": [ + 4044 + ], + "SafeMath": [ + 6895 + ], + "TransferHelper": [ + 8767 + ] + }, + "id": 4045, + "license": "GPL-2.0-or-later", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3991, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "80:25:11" + }, + { + "absolutePath": "contracts/DEI/Pools/DEIPool.sol", + "file": "./DEIPool.sol", + "id": 3992, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4045, + "sourceUnit": 3583, + "src": "107:23:11", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 3993, + "name": "DEIPool", + "nodeType": "IdentifierPath", + "referencedDeclaration": 3582, + "src": "154:7:11" + }, + "id": 3994, + "nodeType": "InheritanceSpecifier", + "src": "154:7:11" + } + ], + "canonicalName": "Pool_USDC", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 4044, + "linearizedBaseContracts": [ + 4044, + 3582, + 6283, + 456 + ], + "name": "Pool_USDC", + "nameLocation": "141:9:11", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "f9abd26c", + "id": 3996, + "mutability": "mutable", + "name": "USDC_address", + "nameLocation": "183:12:11", + "nodeType": "VariableDeclaration", + "scope": 4044, + "src": "168:27:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3995, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "168:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 4042, + "nodeType": "Block", + "src": "607:183:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4023, + "name": "_collateral_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4002, + "src": "625:19:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4026, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "656:1:11", + "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": 4025, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "648:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4024, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "648:7:11", + "typeDescriptions": {} + } + }, + "id": 4027, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "648:10:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "625:33:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5a65726f2061646472657373206465746563746564", + "id": 4029, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "660:23:11", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2a5a9515df0747227c3d5efc42180f2060cd0f29e443cb46b69635b43998b954", + "typeString": "literal_string \"Zero address detected\"" + }, + "value": "Zero address detected" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2a5a9515df0747227c3d5efc42180f2060cd0f29e443cb46b69635b43998b954", + "typeString": "literal_string \"Zero address detected\"" + } + ], + "id": 4022, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "617:7:11", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "617:67:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4031, + "nodeType": "ExpressionStatement", + "src": "617:67:11" + }, + { + "expression": { + "arguments": [ + { + "id": 4033, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6026, + "src": "706:18:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4034, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "726:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 4035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "726:12:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 4032, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6209, + "src": "695:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 4036, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "695:44:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4037, + "nodeType": "ExpressionStatement", + "src": "695:44:11" + }, + { + "expression": { + "id": 4040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4038, + "name": "USDC_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3996, + "src": "749:12:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 4039, + "name": "_collateral_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4002, + "src": "764:19:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "749:34:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4041, + "nodeType": "ExpressionStatement", + "src": "749:34:11" + } + ] + }, + "id": 4043, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 4013, + "name": "_dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3998, + "src": "470:21:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4014, + "name": "_deus_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4000, + "src": "493:22:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4015, + "name": "_collateral_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4002, + "src": "517:19:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4016, + "name": "_trusty_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4004, + "src": "538:15:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4017, + "name": "_admin_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4006, + "src": "555:14:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4018, + "name": "_pool_ceiling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4008, + "src": "571:13:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4019, + "name": "_library", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4010, + "src": "586:8:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 4020, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 4012, + "name": "DEIPool", + "nodeType": "IdentifierPath", + "referencedDeclaration": 3582, + "src": "462:7:11" + }, + "nodeType": "ModifierInvocation", + "src": "462:133:11" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4011, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3998, + "mutability": "mutable", + "name": "_dei_contract_address", + "nameLocation": "230:21:11", + "nodeType": "VariableDeclaration", + "scope": 4043, + "src": "222:29:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3997, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "222:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4000, + "mutability": "mutable", + "name": "_deus_contract_address", + "nameLocation": "269:22:11", + "nodeType": "VariableDeclaration", + "scope": 4043, + "src": "261:30:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3999, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "261:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4002, + "mutability": "mutable", + "name": "_collateral_address", + "nameLocation": "309:19:11", + "nodeType": "VariableDeclaration", + "scope": 4043, + "src": "301:27:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4001, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "301:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4004, + "mutability": "mutable", + "name": "_trusty_address", + "nameLocation": "346:15:11", + "nodeType": "VariableDeclaration", + "scope": 4043, + "src": "338:23:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4003, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "338:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4006, + "mutability": "mutable", + "name": "_admin_address", + "nameLocation": "379:14:11", + "nodeType": "VariableDeclaration", + "scope": 4043, + "src": "371:22:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4005, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "371:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4008, + "mutability": "mutable", + "name": "_pool_ceiling", + "nameLocation": "411:13:11", + "nodeType": "VariableDeclaration", + "scope": 4043, + "src": "403:21:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4007, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "403:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4010, + "mutability": "mutable", + "name": "_library", + "nameLocation": "442:8:11", + "nodeType": "VariableDeclaration", + "scope": 4043, + "src": "434:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4009, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "434:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "212:244:11" + }, + "returnParameters": { + "id": 4021, + "nodeType": "ParameterList", + "parameters": [], + "src": "607:0:11" + }, + "scope": 4044, + "src": "201:589:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 4045, + "src": "132:660:11", + "usedErrors": [] + } + ], + "src": "80:731:11" + }, + "id": 11 + }, + "contracts/DEUS/DEUS.sol": { + "ast": { + "absolutePath": "contracts/DEUS/DEUS.sol", + "exportedSymbols": { + "AccessControl": [ + 6283 + ], + "Address": [ + 11543 + ], + "Context": [ + 456 + ], + "Counters": [ + 109 + ], + "DEUSToken": [ + 4305 + ], + "ECDSA": [ + 292 + ], + "EIP712": [ + 430 + ], + "ERC20Custom": [ + 5434 + ], + "ERC20Permit": [ + 5997 + ], + "EnumerableSet": [ + 11955 + ], + "IDEIStablecoin": [ + 1530 + ], + "IERC20": [ + 5514 + ], + "IERC20Permit": [ + 35 + ], + "SafeMath": [ + 6895 + ] + }, + "id": 4306, + "license": "GPL-2.0-or-later", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4046, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "80:24:12" + }, + { + "absolutePath": "contracts/DEI/IDEI.sol", + "file": "../DEI/IDEI.sol", + "id": 4047, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4306, + "sourceUnit": 1531, + "src": "1440:25:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/ERC20/draft-ERC20Permit.sol", + "file": "../ERC20/draft-ERC20Permit.sol", + "id": 4048, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4306, + "sourceUnit": 5998, + "src": "1466:40:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Governance/AccessControl.sol", + "file": "../Governance/AccessControl.sol", + "id": 4049, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4306, + "sourceUnit": 6284, + "src": "1507:41:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 4050, + "name": "ERC20Permit", + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "1572:11:12" + }, + "id": 4051, + "nodeType": "InheritanceSpecifier", + "src": "1572:11:12" + }, + { + "baseName": { + "id": 4052, + "name": "AccessControl", + "nodeType": "IdentifierPath", + "referencedDeclaration": 6283, + "src": "1585:13:12" + }, + "id": 4053, + "nodeType": "InheritanceSpecifier", + "src": "1585:13:12" + } + ], + "canonicalName": "DEUSToken", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 4305, + "linearizedBaseContracts": [ + 4305, + 6283, + 5997, + 430, + 35, + 5434, + 5514, + 456 + ], + "name": "DEUSToken", + "nameLocation": "1559:9:12", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "95d89b41", + "id": 4055, + "mutability": "mutable", + "name": "symbol", + "nameLocation": "1663:6:12", + "nodeType": "VariableDeclaration", + "scope": 4305, + "src": "1649:20:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 4054, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1649:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "06fdde03", + "id": 4057, + "mutability": "mutable", + "name": "name", + "nameLocation": "1686:4:12", + "nodeType": "VariableDeclaration", + "scope": 4305, + "src": "1672:18:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 4056, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1672:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "313ce567", + "id": 4060, + "mutability": "constant", + "name": "decimals", + "nameLocation": "1715:8:12", + "nodeType": "VariableDeclaration", + "scope": 4305, + "src": "1693:35:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 4058, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1693:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "hexValue": "3138", + "id": 4059, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1726:2:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "51e238e3", + "id": 4063, + "mutability": "constant", + "name": "genesis_supply", + "nameLocation": "1756:14:12", + "nodeType": "VariableDeclaration", + "scope": 4305, + "src": "1732:47:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4061, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1732:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "313030653138", + "id": 4062, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1773:6:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_100000000000000000000_by_1", + "typeString": "int_const 100000000000000000000" + }, + "value": "100e18" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "83e2d870", + "id": 4065, + "mutability": "mutable", + "name": "dei_contract_address", + "nameLocation": "1849:20:12", + "nodeType": "VariableDeclaration", + "scope": 4305, + "src": "1834:35:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4064, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1834:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "34ddb95d", + "id": 4070, + "mutability": "constant", + "name": "TRUSTY_ROLE", + "nameLocation": "1897:11:12", + "nodeType": "VariableDeclaration", + "scope": 4305, + "src": "1873:62:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4066, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1873:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "5452555354595f524f4c45", + "id": 4068, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1921:13:12", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c", + "typeString": "literal_string \"TRUSTY_ROLE\"" + }, + "value": "TRUSTY_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c", + "typeString": "literal_string \"TRUSTY_ROLE\"" + } + ], + "id": 4067, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1911:9:12", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4069, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1911:24:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "d5391393", + "id": 4075, + "mutability": "constant", + "name": "MINTER_ROLE", + "nameLocation": "1962:11:12", + "nodeType": "VariableDeclaration", + "scope": 4305, + "src": "1938:62:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4071, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1938:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "4d494e5445525f524f4c45", + "id": 4073, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1986:13:12", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6", + "typeString": "literal_string \"MINTER_ROLE\"" + }, + "value": "MINTER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6", + "typeString": "literal_string \"MINTER_ROLE\"" + } + ], + "id": 4072, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1976:9:12", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4074, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1976:24:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 4087, + "nodeType": "Block", + "src": "2120:109:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 4079, + "name": "MINTER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4075, + "src": "2140:11:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 4080, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2153:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2153:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4078, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6072, + "src": "2132:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 4082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2132:32:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "444555533a204f6e6c79206d696e746572732061726520616c6c6f77656420746f20646f2074686973206f7065726174696f6e", + "id": 4083, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2166:53:12", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_319b9bac25589d8c5d20ec18b082c1494a368d755c45f66c6527a77229a081c4", + "typeString": "literal_string \"DEUS: Only minters are allowed to do this operation\"" + }, + "value": "DEUS: Only minters are allowed to do this operation" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_319b9bac25589d8c5d20ec18b082c1494a368d755c45f66c6527a77229a081c4", + "typeString": "literal_string \"DEUS: Only minters are allowed to do this operation\"" + } + ], + "id": 4077, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2124:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2124:96:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4085, + "nodeType": "ExpressionStatement", + "src": "2124:96:12" + }, + { + "id": 4086, + "nodeType": "PlaceholderStatement", + "src": "2224:1:12" + } + ] + }, + "id": 4088, + "name": "onlyMinters", + "nameLocation": "2106:11:12", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 4076, + "nodeType": "ParameterList", + "parameters": [], + "src": "2117:2:12" + }, + "src": "2097:132:12", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4102, + "nodeType": "Block", + "src": "2253:137:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 4095, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2312:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4096, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2312:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 4092, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4065, + "src": "2280:20:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4091, + "name": "IDEIStablecoin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "2265:14:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDEIStablecoin_$1530_$", + "typeString": "type(contract IDEIStablecoin)" + } + }, + "id": 4093, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2265:36:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDEIStablecoin_$1530", + "typeString": "contract IDEIStablecoin" + } + }, + "id": 4094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "dei_pools", + "nodeType": "MemberAccess", + "referencedDeclaration": 1393, + "src": "2265:46:12", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 4097, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2265:58:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "444555533a204f6e6c792064656920706f6f6c732061726520616c6c6f77656420746f20646f2074686973206f7065726174696f6e", + "id": 4098, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2325:55:12", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_176a09599ffb03fd50c2529ed3df4cd78c80c2dcf09614f32fa68d539773c15e", + "typeString": "literal_string \"DEUS: Only dei pools are allowed to do this operation\"" + }, + "value": "DEUS: Only dei pools are allowed to do this operation" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_176a09599ffb03fd50c2529ed3df4cd78c80c2dcf09614f32fa68d539773c15e", + "typeString": "literal_string \"DEUS: Only dei pools are allowed to do this operation\"" + } + ], + "id": 4090, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2257:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2257:124:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4100, + "nodeType": "ExpressionStatement", + "src": "2257:124:12" + }, + { + "id": 4101, + "nodeType": "PlaceholderStatement", + "src": "2385:1:12" + } + ] + }, + "id": 4103, + "name": "onlyPools", + "nameLocation": "2241:9:12", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 4089, + "nodeType": "ParameterList", + "parameters": [], + "src": "2250:2:12" + }, + "src": "2232:158:12", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4115, + "nodeType": "Block", + "src": "2415:82:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 4107, + "name": "TRUSTY_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4070, + "src": "2435:11:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 4108, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2448:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2448:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4106, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6072, + "src": "2427:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 4110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2427:32:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "444555533a20596f7520617265206e6f7420747275737479", + "id": 4111, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2461:26:12", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5a4cb831de0f7d54155e118e148058bcf0d6792c6649a82226f0d85307f4726b", + "typeString": "literal_string \"DEUS: You are not trusty\"" + }, + "value": "DEUS: You are not trusty" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5a4cb831de0f7d54155e118e148058bcf0d6792c6649a82226f0d85307f4726b", + "typeString": "literal_string \"DEUS: You are not trusty\"" + } + ], + "id": 4105, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2419:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2419:69:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4113, + "nodeType": "ExpressionStatement", + "src": "2419:69:12" + }, + { + "id": 4114, + "nodeType": "PlaceholderStatement", + "src": "2492:1:12" + } + ] + }, + "id": 4116, + "name": "onlyTrusty", + "nameLocation": "2402:10:12", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 4104, + "nodeType": "ParameterList", + "parameters": [], + "src": "2412:2:12" + }, + "src": "2393:104:12", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4161, + "nodeType": "Block", + "src": "2650:265:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4129, + "name": "_trusty_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4122, + "src": "2662:15:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4132, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2689:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2681:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4130, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2681:7:12", + "typeDescriptions": {} + } + }, + "id": 4133, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2681:10:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2662:29:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "444555533a3a636f6e7374727563746f723a207a65726f2061646472657373206465746563746564", + "id": 4135, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2693:42:12", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6a0b9cabd6c91d2940786dc3fb7e7fd8395ac9f7a88417cfaa98e7d7f070402b", + "typeString": "literal_string \"DEUS::constructor: zero address detected\"" + }, + "value": "DEUS::constructor: zero address detected" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6a0b9cabd6c91d2940786dc3fb7e7fd8395ac9f7a88417cfaa98e7d7f070402b", + "typeString": "literal_string \"DEUS::constructor: zero address detected\"" + } + ], + "id": 4128, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2654:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2654:82:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4137, + "nodeType": "ExpressionStatement", + "src": "2654:82:12" + }, + { + "expression": { + "id": 4140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4138, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4057, + "src": "2742:4:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 4139, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4118, + "src": "2749:5:12", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2742:12:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 4141, + "nodeType": "ExpressionStatement", + "src": "2742:12:12" + }, + { + "expression": { + "id": 4144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4142, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4055, + "src": "2758:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 4143, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4120, + "src": "2767:7:12", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2758:16:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 4145, + "nodeType": "ExpressionStatement", + "src": "2758:16:12" + }, + { + "expression": { + "arguments": [ + { + "id": 4147, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6026, + "src": "2789:18:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4148, + "name": "_trusty_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4122, + "src": "2809:15:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4146, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6209, + "src": "2778:10:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 4149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2778:47:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4150, + "nodeType": "ExpressionStatement", + "src": "2778:47:12" + }, + { + "expression": { + "arguments": [ + { + "id": 4152, + "name": "TRUSTY_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4070, + "src": "2840:11:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4153, + "name": "_trusty_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4122, + "src": "2853:15:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4151, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6209, + "src": "2829:10:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 4154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2829:40:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4155, + "nodeType": "ExpressionStatement", + "src": "2829:40:12" + }, + { + "expression": { + "arguments": [ + { + "id": 4157, + "name": "_trusty_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4122, + "src": "2879:15:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4158, + "name": "genesis_supply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4063, + "src": "2896:14:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4156, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5245, + "src": "2873:5:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2873:38:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4160, + "nodeType": "ExpressionStatement", + "src": "2873:38:12" + } + ] + }, + "id": 4162, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 4125, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4057, + "src": "2644:4:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + } + ], + "id": 4126, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 4124, + "name": "ERC20Permit", + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "2632:11:12" + }, + "nodeType": "ModifierInvocation", + "src": "2632:17:12" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4123, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4118, + "mutability": "mutable", + "name": "_name", + "nameLocation": "2571:5:12", + "nodeType": "VariableDeclaration", + "scope": 4162, + "src": "2557:19:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4117, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2557:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4120, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "2594:7:12", + "nodeType": "VariableDeclaration", + "scope": 4162, + "src": "2580:21:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4119, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2580:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4122, + "mutability": "mutable", + "name": "_trusty_address", + "nameLocation": "2613:15:12", + "nodeType": "VariableDeclaration", + "scope": 4162, + "src": "2605:23:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4121, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2605:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2553:78:12" + }, + "returnParameters": { + "id": 4127, + "nodeType": "ParameterList", + "parameters": [], + "src": "2650:0:12" + }, + "scope": 4305, + "src": "2542:373:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4184, + "nodeType": "Block", + "src": "3060:80:12", + "statements": [ + { + "expression": { + "id": 4173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4171, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4057, + "src": "3064:4:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 4172, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4164, + "src": "3071:5:12", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "3064:12:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 4174, + "nodeType": "ExpressionStatement", + "src": "3064:12:12" + }, + { + "expression": { + "id": 4177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4175, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4055, + "src": "3080:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 4176, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4166, + "src": "3089:7:12", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "3080:16:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 4178, + "nodeType": "ExpressionStatement", + "src": "3080:16:12" + }, + { + "eventCall": { + "arguments": [ + { + "id": 4180, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4057, + "src": "3123:4:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + { + "id": 4181, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4055, + "src": "3129:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + }, + { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + ], + "id": 4179, + "name": "NameAndSymbolSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4304, + "src": "3106:16:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory,string memory)" + } + }, + "id": 4182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3106:30:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4183, + "nodeType": "EmitStatement", + "src": "3101:35:12" + } + ] + }, + "functionSelector": "5a446215", + "id": 4185, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 4169, + "kind": "modifierInvocation", + "modifierName": { + "id": 4168, + "name": "onlyTrusty", + "nodeType": "IdentifierPath", + "referencedDeclaration": 4116, + "src": "3049:10:12" + }, + "nodeType": "ModifierInvocation", + "src": "3049:10:12" + } + ], + "name": "setNameAndSymbol", + "nameLocation": "2979:16:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4167, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4164, + "mutability": "mutable", + "name": "_name", + "nameLocation": "3010:5:12", + "nodeType": "VariableDeclaration", + "scope": 4185, + "src": "2996:19:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4163, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2996:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4166, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "3031:7:12", + "nodeType": "VariableDeclaration", + "scope": 4185, + "src": "3017:21:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4165, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3017:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2995:44:12" + }, + "returnParameters": { + "id": 4170, + "nodeType": "ParameterList", + "parameters": [], + "src": "3060:0:12" + }, + "scope": 4305, + "src": "2970:170:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 4210, + "nodeType": "Block", + "src": "3222:192:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4193, + "name": "_dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4187, + "src": "3234:21:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4196, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3267:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4195, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3259:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4194, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3259:7:12", + "typeDescriptions": {} + } + }, + "id": 4197, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3259:10:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3234:35:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "444555533a3a736574444549416464726573733a205a65726f2061646472657373206465746563746564", + "id": 4199, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3271:44:12", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7e5456eaddf43da0f7aa5f1795c062060b43d1a4a914202d03c57753f2651885", + "typeString": "literal_string \"DEUS::setDEIAddress: Zero address detected\"" + }, + "value": "DEUS::setDEIAddress: Zero address detected" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7e5456eaddf43da0f7aa5f1795c062060b43d1a4a914202d03c57753f2651885", + "typeString": "literal_string \"DEUS::setDEIAddress: Zero address detected\"" + } + ], + "id": 4192, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3226:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3226:90:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4201, + "nodeType": "ExpressionStatement", + "src": "3226:90:12" + }, + { + "expression": { + "id": 4204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4202, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4065, + "src": "3321:20:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 4203, + "name": "_dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4187, + "src": "3344:21:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3321:44:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4205, + "nodeType": "ExpressionStatement", + "src": "3321:44:12" + }, + { + "eventCall": { + "arguments": [ + { + "id": 4207, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4065, + "src": "3389:20:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4206, + "name": "DEIAddressSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4298, + "src": "3375:13:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 4208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3375:35:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4209, + "nodeType": "EmitStatement", + "src": "3370:40:12" + } + ] + }, + "functionSelector": "efa00736", + "id": 4211, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 4190, + "kind": "modifierInvocation", + "modifierName": { + "id": 4189, + "name": "onlyTrusty", + "nodeType": "IdentifierPath", + "referencedDeclaration": 4116, + "src": "3210:10:12" + }, + "nodeType": "ModifierInvocation", + "src": "3210:10:12" + } + ], + "name": "setDEIAddress", + "nameLocation": "3152:13:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4188, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4187, + "mutability": "mutable", + "name": "_dei_contract_address", + "nameLocation": "3174:21:12", + "nodeType": "VariableDeclaration", + "scope": 4211, + "src": "3166:29:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4186, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3166:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3165:31:12" + }, + "returnParameters": { + "id": 4191, + "nodeType": "ParameterList", + "parameters": [], + "src": "3222:0:12" + }, + "scope": 4305, + "src": "3143:271:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 4225, + "nodeType": "Block", + "src": "3530:25:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4221, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4213, + "src": "3540:2:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4222, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4215, + "src": "3544:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4220, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5245, + "src": "3534:5:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3534:17:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4224, + "nodeType": "ExpressionStatement", + "src": "3534:17:12" + } + ] + }, + "functionSelector": "40c10f19", + "id": 4226, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 4218, + "kind": "modifierInvocation", + "modifierName": { + "id": 4217, + "name": "onlyMinters", + "nodeType": "IdentifierPath", + "referencedDeclaration": 4088, + "src": "3518:11:12" + }, + "nodeType": "ModifierInvocation", + "src": "3518:11:12" + } + ], + "name": "mint", + "nameLocation": "3478:4:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4216, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4213, + "mutability": "mutable", + "name": "to", + "nameLocation": "3491:2:12", + "nodeType": "VariableDeclaration", + "scope": 4226, + "src": "3483:10:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4212, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3483:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4215, + "mutability": "mutable", + "name": "amount", + "nameLocation": "3503:6:12", + "nodeType": "VariableDeclaration", + "scope": 4226, + "src": "3495:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4214, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3495:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3482:28:12" + }, + "returnParameters": { + "id": 4219, + "nodeType": "ParameterList", + "parameters": [], + "src": "3530:0:12" + }, + "scope": 4305, + "src": "3469:86:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4251, + "nodeType": "Block", + "src": "3778:95:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4238, + "name": "m_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4228, + "src": "3794:9:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4239, + "name": "m_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4230, + "src": "3805:8:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 4235, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "3782:5:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_DEUSToken_$4305_$", + "typeString": "type(contract super DEUSToken)" + } + }, + "id": 4237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 5245, + "src": "3782:11:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3782:32:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4241, + "nodeType": "ExpressionStatement", + "src": "3782:32:12" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [ + { + "id": 4245, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3842:4:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEUSToken_$4305", + "typeString": "contract DEUSToken" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_DEUSToken_$4305", + "typeString": "contract DEUSToken" + } + ], + "id": 4244, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3834:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4243, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3834:7:12", + "typeDescriptions": {} + } + }, + "id": 4246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3834:13:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4247, + "name": "m_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4228, + "src": "3849:9:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4248, + "name": "m_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4230, + "src": "3860:8:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4242, + "name": "DEUSMinted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "3823:10:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3823:46:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4250, + "nodeType": "EmitStatement", + "src": "3818:51:12" + } + ] + }, + "functionSelector": "b4f56b26", + "id": 4252, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 4233, + "kind": "modifierInvocation", + "modifierName": { + "id": 4232, + "name": "onlyPools", + "nodeType": "IdentifierPath", + "referencedDeclaration": 4103, + "src": "3768:9:12" + }, + "nodeType": "ModifierInvocation", + "src": "3768:9:12" + } + ], + "name": "pool_mint", + "nameLocation": "3712:9:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4231, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4228, + "mutability": "mutable", + "name": "m_address", + "nameLocation": "3730:9:12", + "nodeType": "VariableDeclaration", + "scope": 4252, + "src": "3722:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4227, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3722:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4230, + "mutability": "mutable", + "name": "m_amount", + "nameLocation": "3749:8:12", + "nodeType": "VariableDeclaration", + "scope": 4252, + "src": "3741:16:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4229, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3741:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3721:37:12" + }, + "returnParameters": { + "id": 4234, + "nodeType": "ParameterList", + "parameters": [], + "src": "3778:0:12" + }, + "scope": 4305, + "src": "3703:170:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 4277, + "nodeType": "Block", + "src": "4021:99:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4264, + "name": "b_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4254, + "src": "4041:9:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4265, + "name": "b_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4256, + "src": "4052:8:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 4261, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "4025:5:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_DEUSToken_$4305_$", + "typeString": "type(contract super DEUSToken)" + } + }, + "id": 4263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_burnFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 5422, + "src": "4025:15:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4025:36:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4267, + "nodeType": "ExpressionStatement", + "src": "4025:36:12" + }, + { + "eventCall": { + "arguments": [ + { + "id": 4269, + "name": "b_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4254, + "src": "4081:9:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 4272, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4100:4:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEUSToken_$4305", + "typeString": "contract DEUSToken" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_DEUSToken_$4305", + "typeString": "contract DEUSToken" + } + ], + "id": 4271, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4092:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4270, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4092:7:12", + "typeDescriptions": {} + } + }, + "id": 4273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4092:13:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4274, + "name": "b_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4256, + "src": "4107:8:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4268, + "name": "DEUSBurned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4286, + "src": "4070:10:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4070:46:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4276, + "nodeType": "EmitStatement", + "src": "4065:51:12" + } + ] + }, + "functionSelector": "a8a778ae", + "id": 4278, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 4259, + "kind": "modifierInvocation", + "modifierName": { + "id": 4258, + "name": "onlyPools", + "nodeType": "IdentifierPath", + "referencedDeclaration": 4103, + "src": "4011:9:12" + }, + "nodeType": "ModifierInvocation", + "src": "4011:9:12" + } + ], + "name": "pool_burn_from", + "nameLocation": "3950:14:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4257, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4254, + "mutability": "mutable", + "name": "b_address", + "nameLocation": "3973:9:12", + "nodeType": "VariableDeclaration", + "scope": 4278, + "src": "3965:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4253, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3965:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4256, + "mutability": "mutable", + "name": "b_amount", + "nameLocation": "3992:8:12", + "nodeType": "VariableDeclaration", + "scope": 4278, + "src": "3984:16:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4255, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3984:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3964:37:12" + }, + "returnParameters": { + "id": 4260, + "nodeType": "ParameterList", + "parameters": [], + "src": "4021:0:12" + }, + "scope": 4305, + "src": "3941:179:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "id": 4286, + "name": "DEUSBurned", + "nameLocation": "4165:10:12", + "nodeType": "EventDefinition", + "parameters": { + "id": 4285, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4280, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "4192:4:12", + "nodeType": "VariableDeclaration", + "scope": 4286, + "src": "4176:20:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4279, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4176:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4282, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "4214:2:12", + "nodeType": "VariableDeclaration", + "scope": 4286, + "src": "4198:18:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4281, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4198:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4284, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "4226:6:12", + "nodeType": "VariableDeclaration", + "scope": 4286, + "src": "4218:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4283, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4218:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4175:58:12" + }, + "src": "4159:75:12" + }, + { + "anonymous": false, + "id": 4294, + "name": "DEUSMinted", + "nameLocation": "4242:10:12", + "nodeType": "EventDefinition", + "parameters": { + "id": 4293, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4288, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "4269:4:12", + "nodeType": "VariableDeclaration", + "scope": 4294, + "src": "4253:20:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4287, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4253:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4290, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "4291:2:12", + "nodeType": "VariableDeclaration", + "scope": 4294, + "src": "4275:18:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4289, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4275:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4292, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "4303:6:12", + "nodeType": "VariableDeclaration", + "scope": 4294, + "src": "4295:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4291, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4295:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4252:58:12" + }, + "src": "4236:75:12" + }, + { + "anonymous": false, + "id": 4298, + "name": "DEIAddressSet", + "nameLocation": "4319:13:12", + "nodeType": "EventDefinition", + "parameters": { + "id": 4297, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4296, + "indexed": false, + "mutability": "mutable", + "name": "addr", + "nameLocation": "4341:4:12", + "nodeType": "VariableDeclaration", + "scope": 4298, + "src": "4333:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4295, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4333:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4332:14:12" + }, + "src": "4313:34:12" + }, + { + "anonymous": false, + "id": 4304, + "name": "NameAndSymbolSet", + "nameLocation": "4355:16:12", + "nodeType": "EventDefinition", + "parameters": { + "id": 4303, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4300, + "indexed": false, + "mutability": "mutable", + "name": "name", + "nameLocation": "4379:4:12", + "nodeType": "VariableDeclaration", + "scope": 4304, + "src": "4372:11:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4299, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4372:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4302, + "indexed": false, + "mutability": "mutable", + "name": "symbol", + "nameLocation": "4392:6:12", + "nodeType": "VariableDeclaration", + "scope": 4304, + "src": "4385:13:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4301, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4385:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "4371:28:12" + }, + "src": "4349:51:12" + } + ], + "scope": 4306, + "src": "1550:2852:12", + "usedErrors": [] + } + ], + "src": "80:4341:12" + }, + "id": 12 + }, + "contracts/DEUS/IDEUS.sol": { + "ast": { + "absolutePath": "contracts/DEUS/IDEUS.sol", + "exportedSymbols": { + "IDEUSToken": [ + 4350 + ] + }, + "id": 4351, + "license": "GPL-2.0-or-later", + "nodeType": "SourceUnit", + "nodes": [ + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IDEUSToken", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 4350, + "linearizedBaseContracts": [ + 4350 + ], + "name": "IDEUSToken", + "nameLocation": "91:10:13", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "06fdde03", + "id": 4311, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "117:4:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4307, + "nodeType": "ParameterList", + "parameters": [], + "src": "121:2:13" + }, + "returnParameters": { + "id": 4310, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4309, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4311, + "src": "147:13:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4308, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "147:6:13", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "146:15:13" + }, + "scope": 4350, + "src": "108:54:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "95d89b41", + "id": 4316, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "176:6:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4312, + "nodeType": "ParameterList", + "parameters": [], + "src": "182:2:13" + }, + "returnParameters": { + "id": 4315, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4314, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4316, + "src": "208:13:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4313, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "208:6:13", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "207:15:13" + }, + "scope": 4350, + "src": "167:56:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a8a778ae", + "id": 4323, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "pool_burn_from", + "nameLocation": "237:14:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4321, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4318, + "mutability": "mutable", + "name": "b_address", + "nameLocation": "260:9:13", + "nodeType": "VariableDeclaration", + "scope": 4323, + "src": "252:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4317, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "252:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4320, + "mutability": "mutable", + "name": "b_amount", + "nameLocation": "279:8:13", + "nodeType": "VariableDeclaration", + "scope": 4323, + "src": "271:16:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4319, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "271:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "251:37:13" + }, + "returnParameters": { + "id": 4322, + "nodeType": "ParameterList", + "parameters": [], + "src": "297:0:13" + }, + "scope": 4350, + "src": "228:70:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "b4f56b26", + "id": 4330, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "pool_mint", + "nameLocation": "312:9:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4328, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4325, + "mutability": "mutable", + "name": "m_address", + "nameLocation": "330:9:13", + "nodeType": "VariableDeclaration", + "scope": 4330, + "src": "322:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4324, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "322:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4327, + "mutability": "mutable", + "name": "m_amount", + "nameLocation": "349:8:13", + "nodeType": "VariableDeclaration", + "scope": 4330, + "src": "341:16:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4326, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "341:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "321:37:13" + }, + "returnParameters": { + "id": 4329, + "nodeType": "ParameterList", + "parameters": [], + "src": "367:0:13" + }, + "scope": 4350, + "src": "303:65:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "40c10f19", + "id": 4337, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "mint", + "nameLocation": "382:4:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4335, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4332, + "mutability": "mutable", + "name": "to", + "nameLocation": "395:2:13", + "nodeType": "VariableDeclaration", + "scope": 4337, + "src": "387:10:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4331, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "387:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4334, + "mutability": "mutable", + "name": "amount", + "nameLocation": "407:6:13", + "nodeType": "VariableDeclaration", + "scope": 4337, + "src": "399:14:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4333, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "399:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "386:28:13" + }, + "returnParameters": { + "id": 4336, + "nodeType": "ParameterList", + "parameters": [], + "src": "423:0:13" + }, + "scope": 4350, + "src": "373:51:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "efa00736", + "id": 4342, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setDEIAddress", + "nameLocation": "438:13:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4340, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4339, + "mutability": "mutable", + "name": "dei_contract_address", + "nameLocation": "460:20:13", + "nodeType": "VariableDeclaration", + "scope": 4342, + "src": "452:28:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4338, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "452:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "451:30:13" + }, + "returnParameters": { + "id": 4341, + "nodeType": "ParameterList", + "parameters": [], + "src": "490:0:13" + }, + "scope": 4350, + "src": "429:62:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "5a446215", + "id": 4349, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setNameAndSymbol", + "nameLocation": "505:16:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4347, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4344, + "mutability": "mutable", + "name": "_name", + "nameLocation": "536:5:13", + "nodeType": "VariableDeclaration", + "scope": 4349, + "src": "522:19:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4343, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "522:6:13", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4346, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "557:7:13", + "nodeType": "VariableDeclaration", + "scope": 4349, + "src": "543:21:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4345, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "543:6:13", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "521:44:13" + }, + "returnParameters": { + "id": 4348, + "nodeType": "ParameterList", + "parameters": [], + "src": "574:0:13" + }, + "scope": 4350, + "src": "496:79:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4351, + "src": "81:496:13", + "usedErrors": [] + } + ], + "src": "81:515:13" + }, + "id": 13 + }, + "contracts/ERC20/ERC20.sol": { + "ast": { + "absolutePath": "contracts/ERC20/ERC20.sol", + "exportedSymbols": { + "Address": [ + 11543 + ], + "Context": [ + 456 + ], + "ERC20": [ + 4919 + ], + "IERC20": [ + 5514 + ], + "SafeMath": [ + 6895 + ] + }, + "id": 4920, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4352, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:14" + }, + { + "absolutePath": "contracts/Common/Context.sol", + "file": "../Common/Context.sol", + "id": 4353, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4920, + "sourceUnit": 457, + "src": "59:31:14", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 4354, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4920, + "sourceUnit": 5515, + "src": "91:22:14", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Math/SafeMath.sol", + "file": "../Math/SafeMath.sol", + "id": 4355, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4920, + "sourceUnit": 6896, + "src": "114:30:14", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Utils/Address.sol", + "file": "../Utils/Address.sol", + "id": 4356, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4920, + "sourceUnit": 11544, + "src": "145:30:14", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 4358, + "name": "Context", + "nodeType": "IdentifierPath", + "referencedDeclaration": 456, + "src": "1351:7:14" + }, + "id": 4359, + "nodeType": "InheritanceSpecifier", + "src": "1351:7:14" + }, + { + "baseName": { + "id": 4360, + "name": "IERC20", + "nodeType": "IdentifierPath", + "referencedDeclaration": 5514, + "src": "1360:6:14" + }, + "id": 4361, + "nodeType": "InheritanceSpecifier", + "src": "1360:6:14" + } + ], + "canonicalName": "ERC20", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 4357, + "nodeType": "StructuredDocumentation", + "src": "178:1152:14", + "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20Mintable}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin guidelines: functions revert instead\n of returning `false` on failure. This behavior is nonetheless conventional\n and does not conflict with the expectations of ERC20 applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}." + }, + "fullyImplemented": true, + "id": 4919, + "linearizedBaseContracts": [ + 4919, + 5514, + 456 + ], + "name": "ERC20", + "nameLocation": "1342:5:14", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 4364, + "libraryName": { + "id": 4362, + "name": "SafeMath", + "nodeType": "IdentifierPath", + "referencedDeclaration": 6895, + "src": "1379:8:14" + }, + "nodeType": "UsingForDirective", + "src": "1373:27:14", + "typeName": { + "id": 4363, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1392:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 4368, + "mutability": "mutable", + "name": "_balances", + "nameLocation": "1443:9:14", + "nodeType": "VariableDeclaration", + "scope": 4919, + "src": "1406:46:14", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 4367, + "keyType": { + "id": 4365, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1415:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1406:28:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 4366, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1426:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 4374, + "mutability": "mutable", + "name": "_allowances", + "nameLocation": "1517:11:14", + "nodeType": "VariableDeclaration", + "scope": 4919, + "src": "1459:69:14", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 4373, + "keyType": { + "id": 4369, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1468:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1459:49:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 4372, + "keyType": { + "id": 4370, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1488:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1479:28:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 4371, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1499:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 4376, + "mutability": "mutable", + "name": "_totalSupply", + "nameLocation": "1551:12:14", + "nodeType": "VariableDeclaration", + "scope": 4919, + "src": "1535:28:14", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4375, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1535:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 4378, + "mutability": "mutable", + "name": "_name", + "nameLocation": "1585:5:14", + "nodeType": "VariableDeclaration", + "scope": 4919, + "src": "1570:20:14", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 4377, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1570:6:14", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 4380, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "1611:7:14", + "nodeType": "VariableDeclaration", + "scope": 4919, + "src": "1596:22:14", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 4379, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1596:6:14", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 4382, + "mutability": "mutable", + "name": "_decimals", + "nameLocation": "1638:9:14", + "nodeType": "VariableDeclaration", + "scope": 4919, + "src": "1624:23:14", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 4381, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1624:5:14", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 4402, + "nodeType": "Block", + "src": "2040:83:14", + "statements": [ + { + "expression": { + "id": 4392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4390, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4378, + "src": "2050:5:14", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 4391, + "name": "__name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4385, + "src": "2058:6:14", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2050:14:14", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 4393, + "nodeType": "ExpressionStatement", + "src": "2050:14:14" + }, + { + "expression": { + "id": 4396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4394, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4380, + "src": "2074:7:14", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 4395, + "name": "__symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4387, + "src": "2084:8:14", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2074:18:14", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 4397, + "nodeType": "ExpressionStatement", + "src": "2074:18:14" + }, + { + "expression": { + "id": 4400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4398, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4382, + "src": "2102:9:14", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "3138", + "id": 4399, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2114:2:14", + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "src": "2102:14:14", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 4401, + "nodeType": "ExpressionStatement", + "src": "2102:14:14" + } + ] + }, + "documentation": { + "id": 4383, + "nodeType": "StructuredDocumentation", + "src": "1658:311:14", + "text": " @dev Sets the values for {name} and {symbol}, initializes {decimals} with\n a default value of 18.\n To select a different value for {decimals}, use {_setupDecimals}.\n All three of these values are immutable: they can only be set once during\n construction." + }, + "id": 4403, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4385, + "mutability": "mutable", + "name": "__name", + "nameLocation": "2001:6:14", + "nodeType": "VariableDeclaration", + "scope": 4403, + "src": "1987:20:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4384, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1987:6:14", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4387, + "mutability": "mutable", + "name": "__symbol", + "nameLocation": "2023:8:14", + "nodeType": "VariableDeclaration", + "scope": 4403, + "src": "2009:22:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4386, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2009:6:14", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1986:46:14" + }, + "returnParameters": { + "id": 4389, + "nodeType": "ParameterList", + "parameters": [], + "src": "2040:0:14" + }, + "scope": 4919, + "src": "1974:149:14", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4411, + "nodeType": "Block", + "src": "2240:29:14", + "statements": [ + { + "expression": { + "id": 4409, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4378, + "src": "2257:5:14", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 4408, + "id": 4410, + "nodeType": "Return", + "src": "2250:12:14" + } + ] + }, + "documentation": { + "id": 4404, + "nodeType": "StructuredDocumentation", + "src": "2129:54:14", + "text": " @dev Returns the name of the token." + }, + "functionSelector": "06fdde03", + "id": 4412, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "2197:4:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4405, + "nodeType": "ParameterList", + "parameters": [], + "src": "2201:2:14" + }, + "returnParameters": { + "id": 4408, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4407, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4412, + "src": "2225:13:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4406, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2225:6:14", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2224:15:14" + }, + "scope": 4919, + "src": "2188:81:14", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4420, + "nodeType": "Block", + "src": "2436:31:14", + "statements": [ + { + "expression": { + "id": 4418, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4380, + "src": "2453:7:14", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 4417, + "id": 4419, + "nodeType": "Return", + "src": "2446:14:14" + } + ] + }, + "documentation": { + "id": 4413, + "nodeType": "StructuredDocumentation", + "src": "2275:102:14", + "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name." + }, + "functionSelector": "95d89b41", + "id": 4421, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "2391:6:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4414, + "nodeType": "ParameterList", + "parameters": [], + "src": "2397:2:14" + }, + "returnParameters": { + "id": 4417, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4416, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4421, + "src": "2421:13:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4415, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2421:6:14", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2420:15:14" + }, + "scope": 4919, + "src": "2382:85:14", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4429, + "nodeType": "Block", + "src": "3138:33:14", + "statements": [ + { + "expression": { + "id": 4427, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4382, + "src": "3155:9:14", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 4426, + "id": 4428, + "nodeType": "Return", + "src": "3148:16:14" + } + ] + }, + "documentation": { + "id": 4422, + "nodeType": "StructuredDocumentation", + "src": "2473:612:14", + "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}." + }, + "functionSelector": "313ce567", + "id": 4430, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nameLocation": "3099:8:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4423, + "nodeType": "ParameterList", + "parameters": [], + "src": "3107:2:14" + }, + "returnParameters": { + "id": 4426, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4425, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4430, + "src": "3131:5:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 4424, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3131:5:14", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "3130:7:14" + }, + "scope": 4919, + "src": "3090:81:14", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 5445 + ], + "body": { + "id": 4439, + "nodeType": "Block", + "src": "3293:36:14", + "statements": [ + { + "expression": { + "id": 4437, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4376, + "src": "3310:12:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4436, + "id": 4438, + "nodeType": "Return", + "src": "3303:19:14" + } + ] + }, + "documentation": { + "id": 4431, + "nodeType": "StructuredDocumentation", + "src": "3177:49:14", + "text": " @dev See {IERC20-totalSupply}." + }, + "functionSelector": "18160ddd", + "id": 4440, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "3240:11:14", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 4433, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3266:8:14" + }, + "parameters": { + "id": 4432, + "nodeType": "ParameterList", + "parameters": [], + "src": "3251:2:14" + }, + "returnParameters": { + "id": 4436, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4435, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4440, + "src": "3284:7:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4434, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3284:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3283:9:14" + }, + "scope": 4919, + "src": "3231:98:14", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 5453 + ], + "body": { + "id": 4453, + "nodeType": "Block", + "src": "3462:42:14", + "statements": [ + { + "expression": { + "baseExpression": { + "id": 4449, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4368, + "src": "3479:9:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4451, + "indexExpression": { + "id": 4450, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4443, + "src": "3489:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3479:18:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4448, + "id": 4452, + "nodeType": "Return", + "src": "3472:25:14" + } + ] + }, + "documentation": { + "id": 4441, + "nodeType": "StructuredDocumentation", + "src": "3335:47:14", + "text": " @dev See {IERC20-balanceOf}." + }, + "functionSelector": "70a08231", + "id": 4454, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "3396:9:14", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 4445, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3435:8:14" + }, + "parameters": { + "id": 4444, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4443, + "mutability": "mutable", + "name": "account", + "nameLocation": "3414:7:14", + "nodeType": "VariableDeclaration", + "scope": 4454, + "src": "3406:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4442, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3406:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3405:17:14" + }, + "returnParameters": { + "id": 4448, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4447, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4454, + "src": "3453:7:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4446, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3453:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3452:9:14" + }, + "scope": 4919, + "src": "3387:117:14", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 5463 + ], + "body": { + "id": 4474, + "nodeType": "Block", + "src": "3799:80:14", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4466, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "3819:10:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 4467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3819:12:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 4468, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4457, + "src": "3833:9:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4469, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4459, + "src": "3844:6:14", + "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": 4465, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4675, + "src": "3809:9:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3809:42:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4471, + "nodeType": "ExpressionStatement", + "src": "3809:42:14" + }, + { + "expression": { + "hexValue": "74727565", + "id": 4472, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3868:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4464, + "id": 4473, + "nodeType": "Return", + "src": "3861:11:14" + } + ] + }, + "documentation": { + "id": 4455, + "nodeType": "StructuredDocumentation", + "src": "3510:192:14", + "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`." + }, + "functionSelector": "a9059cbb", + "id": 4475, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "3716:8:14", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 4461, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3775:8:14" + }, + "parameters": { + "id": 4460, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4457, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "3733:9:14", + "nodeType": "VariableDeclaration", + "scope": 4475, + "src": "3725:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4456, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3725:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4459, + "mutability": "mutable", + "name": "amount", + "nameLocation": "3752:6:14", + "nodeType": "VariableDeclaration", + "scope": 4475, + "src": "3744:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4458, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3744:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3724:35:14" + }, + "returnParameters": { + "id": 4464, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4463, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4475, + "src": "3793:4:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4462, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3793:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3792:6:14" + }, + "scope": 4919, + "src": "3707:172:14", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 5473 + ], + "body": { + "id": 4492, + "nodeType": "Block", + "src": "4035:51:14", + "statements": [ + { + "expression": { + "baseExpression": { + "baseExpression": { + "id": 4486, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4374, + "src": "4052:11:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4488, + "indexExpression": { + "id": 4487, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4478, + "src": "4064:5:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4052:18:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4490, + "indexExpression": { + "id": 4489, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4480, + "src": "4071:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4052:27:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4485, + "id": 4491, + "nodeType": "Return", + "src": "4045:34:14" + } + ] + }, + "documentation": { + "id": 4476, + "nodeType": "StructuredDocumentation", + "src": "3885:47:14", + "text": " @dev See {IERC20-allowance}." + }, + "functionSelector": "dd62ed3e", + "id": 4493, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "3946:9:14", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 4482, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4008:8:14" + }, + "parameters": { + "id": 4481, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4478, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3964:5:14", + "nodeType": "VariableDeclaration", + "scope": 4493, + "src": "3956:13:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4477, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3956:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4480, + "mutability": "mutable", + "name": "spender", + "nameLocation": "3979:7:14", + "nodeType": "VariableDeclaration", + "scope": 4493, + "src": "3971:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4479, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3971:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3955:32:14" + }, + "returnParameters": { + "id": 4485, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4484, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4493, + "src": "4026:7:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4483, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4026:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4025:9:14" + }, + "scope": 4919, + "src": "3937:149:14", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 5483 + ], + "body": { + "id": 4513, + "nodeType": "Block", + "src": "4353:77:14", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4505, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "4372:10:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 4506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4372:12:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 4507, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4496, + "src": "4386:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4508, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4498, + "src": "4395:6:14", + "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": 4504, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4877, + "src": "4363:8:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4363:39:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4510, + "nodeType": "ExpressionStatement", + "src": "4363:39:14" + }, + { + "expression": { + "hexValue": "74727565", + "id": 4511, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4419:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4503, + "id": 4512, + "nodeType": "Return", + "src": "4412:11:14" + } + ] + }, + "documentation": { + "id": 4494, + "nodeType": "StructuredDocumentation", + "src": "4092:167:14", + "text": " @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address.approve(address spender, uint256 amount)" + }, + "functionSelector": "095ea7b3", + "id": 4514, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "4273:7:14", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 4500, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4329:8:14" + }, + "parameters": { + "id": 4499, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4496, + "mutability": "mutable", + "name": "spender", + "nameLocation": "4289:7:14", + "nodeType": "VariableDeclaration", + "scope": 4514, + "src": "4281:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4495, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4281:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4498, + "mutability": "mutable", + "name": "amount", + "nameLocation": "4306:6:14", + "nodeType": "VariableDeclaration", + "scope": 4514, + "src": "4298:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4497, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4298:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4280:33:14" + }, + "returnParameters": { + "id": 4503, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4502, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4514, + "src": "4347:4:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4501, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4347:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4346:6:14" + }, + "scope": 4919, + "src": "4264:166:14", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 5495 + ], + "body": { + "id": 4551, + "nodeType": "Block", + "src": "5000:205:14", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4528, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4517, + "src": "5020:6:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4529, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4519, + "src": "5028:9:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4530, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4521, + "src": "5039:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4527, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4675, + "src": "5010:9:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5010:36:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4532, + "nodeType": "ExpressionStatement", + "src": "5010:36:14" + }, + { + "expression": { + "arguments": [ + { + "id": 4534, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4517, + "src": "5065:6:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4535, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "5073:10:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 4536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5073:12:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "arguments": [ + { + "id": 4544, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4521, + "src": "5125:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365", + "id": 4545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5133:42:14", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", + "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\"" + }, + "value": "ERC20: transfer amount exceeds allowance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", + "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\"" + } + ], + "expression": { + "baseExpression": { + "baseExpression": { + "id": 4537, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4374, + "src": "5087:11:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4539, + "indexExpression": { + "id": 4538, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4517, + "src": "5099:6:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5087:19:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4542, + "indexExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4540, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "5107:10:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 4541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5107:12:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5087:33:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6773, + "src": "5087:37:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 4546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5087:89:14", + "tryCall": false, + "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": 4533, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4877, + "src": "5056:8:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5056:121:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4548, + "nodeType": "ExpressionStatement", + "src": "5056:121:14" + }, + { + "expression": { + "hexValue": "74727565", + "id": 4549, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5194:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4526, + "id": 4550, + "nodeType": "Return", + "src": "5187:11:14" + } + ] + }, + "documentation": { + "id": 4515, + "nodeType": "StructuredDocumentation", + "src": "4436:447:14", + "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20};\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for `sender`'s tokens of at least\n `amount`." + }, + "functionSelector": "23b872dd", + "id": 4552, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "4897:12:14", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 4523, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4976:8:14" + }, + "parameters": { + "id": 4522, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4517, + "mutability": "mutable", + "name": "sender", + "nameLocation": "4918:6:14", + "nodeType": "VariableDeclaration", + "scope": 4552, + "src": "4910:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4516, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4910:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4519, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "4934:9:14", + "nodeType": "VariableDeclaration", + "scope": 4552, + "src": "4926:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4518, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4926:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4521, + "mutability": "mutable", + "name": "amount", + "nameLocation": "4953:6:14", + "nodeType": "VariableDeclaration", + "scope": 4552, + "src": "4945:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4520, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4945:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4909:51:14" + }, + "returnParameters": { + "id": 4526, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4525, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4552, + "src": "4994:4:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4524, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4994:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4993:6:14" + }, + "scope": 4919, + "src": "4888:317:14", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 4579, + "nodeType": "Block", + "src": "5694:121:14", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4563, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "5713:10:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 4564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5713:12:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 4565, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4555, + "src": "5727:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 4573, + "name": "addedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4557, + "src": "5775:10:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "baseExpression": { + "id": 4566, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4374, + "src": "5736:11:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4569, + "indexExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4567, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "5748:10:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 4568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5748:12:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5736:25:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4571, + "indexExpression": { + "id": 4570, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4555, + "src": "5762:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5736:34:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 6728, + "src": "5736:38:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 4574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5736:50:14", + "tryCall": false, + "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": 4562, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4877, + "src": "5704:8:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5704:83:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4576, + "nodeType": "ExpressionStatement", + "src": "5704:83:14" + }, + { + "expression": { + "hexValue": "74727565", + "id": 4577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5804:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4561, + "id": 4578, + "nodeType": "Return", + "src": "5797:11:14" + } + ] + }, + "documentation": { + "id": 4553, + "nodeType": "StructuredDocumentation", + "src": "5211:384:14", + "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address." + }, + "functionSelector": "39509351", + "id": 4580, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "increaseAllowance", + "nameLocation": "5609:17:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4558, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4555, + "mutability": "mutable", + "name": "spender", + "nameLocation": "5635:7:14", + "nodeType": "VariableDeclaration", + "scope": 4580, + "src": "5627:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4554, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5627:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4557, + "mutability": "mutable", + "name": "addedValue", + "nameLocation": "5652:10:14", + "nodeType": "VariableDeclaration", + "scope": 4580, + "src": "5644:18:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4556, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5644:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5626:37:14" + }, + "returnParameters": { + "id": 4561, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4560, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4580, + "src": "5688:4:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4559, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5688:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5687:6:14" + }, + "scope": 4919, + "src": "5600:215:14", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 4608, + "nodeType": "Block", + "src": "6401:167:14", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4591, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "6420:10:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 4592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6420:12:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 4593, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4583, + "src": "6434:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 4601, + "name": "subtractedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4585, + "src": "6482:15:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", + "id": 4602, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6499:39:14", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", + "typeString": "literal_string \"ERC20: decreased allowance below zero\"" + }, + "value": "ERC20: decreased allowance below zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", + "typeString": "literal_string \"ERC20: decreased allowance below zero\"" + } + ], + "expression": { + "baseExpression": { + "baseExpression": { + "id": 4594, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4374, + "src": "6443:11:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4597, + "indexExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4595, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "6455:10:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 4596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6455:12:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6443:25:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4599, + "indexExpression": { + "id": 4598, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4583, + "src": "6469:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6443:34:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6773, + "src": "6443:38:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 4603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6443:96:14", + "tryCall": false, + "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": 4590, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4877, + "src": "6411:8:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6411:129:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4605, + "nodeType": "ExpressionStatement", + "src": "6411:129:14" + }, + { + "expression": { + "hexValue": "74727565", + "id": 4606, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6557:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4589, + "id": 4607, + "nodeType": "Return", + "src": "6550:11:14" + } + ] + }, + "documentation": { + "id": 4581, + "nodeType": "StructuredDocumentation", + "src": "5821:476:14", + "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`." + }, + "functionSelector": "a457c2d7", + "id": 4609, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decreaseAllowance", + "nameLocation": "6311:17:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4586, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4583, + "mutability": "mutable", + "name": "spender", + "nameLocation": "6337:7:14", + "nodeType": "VariableDeclaration", + "scope": 4609, + "src": "6329:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4582, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6329:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4585, + "mutability": "mutable", + "name": "subtractedValue", + "nameLocation": "6354:15:14", + "nodeType": "VariableDeclaration", + "scope": 4609, + "src": "6346:23:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4584, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6346:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6328:42:14" + }, + "returnParameters": { + "id": 4589, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4588, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4609, + "src": "6395:4:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4587, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6395:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6394:6:14" + }, + "scope": 4919, + "src": "6302:266:14", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 4674, + "nodeType": "Block", + "src": "7129:443:14", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4620, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4612, + "src": "7147:6:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4623, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7165:1:14", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4622, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7157:7:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4621, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7157:7:14", + "typeDescriptions": {} + } + }, + "id": 4624, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7157:10:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7147:20:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", + "id": 4626, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7169:39:14", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", + "typeString": "literal_string \"ERC20: transfer from the zero address\"" + }, + "value": "ERC20: transfer from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", + "typeString": "literal_string \"ERC20: transfer from the zero address\"" + } + ], + "id": 4619, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7139:7:14", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7139:70:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4628, + "nodeType": "ExpressionStatement", + "src": "7139:70:14" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4630, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4614, + "src": "7227:9:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4633, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7248:1:14", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4632, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7240:7:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4631, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7240:7:14", + "typeDescriptions": {} + } + }, + "id": 4634, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7240:10:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7227:23:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", + "id": 4636, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7252:37:14", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", + "typeString": "literal_string \"ERC20: transfer to the zero address\"" + }, + "value": "ERC20: transfer to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", + "typeString": "literal_string \"ERC20: transfer to the zero address\"" + } + ], + "id": 4629, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7219:7:14", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7219:71:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4638, + "nodeType": "ExpressionStatement", + "src": "7219:71:14" + }, + { + "expression": { + "arguments": [ + { + "id": 4640, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4612, + "src": "7322:6:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4641, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4614, + "src": "7330:9:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4642, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4616, + "src": "7341:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4639, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4918, + "src": "7301:20:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7301:47:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4644, + "nodeType": "ExpressionStatement", + "src": "7301:47:14" + }, + { + "expression": { + "id": 4655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 4645, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4368, + "src": "7359:9:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4647, + "indexExpression": { + "id": 4646, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4612, + "src": "7369:6:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7359:17:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4652, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4616, + "src": "7401:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", + "id": 4653, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7409:40:14", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", + "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" + }, + "value": "ERC20: transfer amount exceeds balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", + "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" + } + ], + "expression": { + "baseExpression": { + "id": 4648, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4368, + "src": "7379:9:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4650, + "indexExpression": { + "id": 4649, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4612, + "src": "7389:6:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7379:17:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6773, + "src": "7379:21:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 4654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7379:71:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7359:91:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4656, + "nodeType": "ExpressionStatement", + "src": "7359:91:14" + }, + { + "expression": { + "id": 4666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 4657, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4368, + "src": "7460:9:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4659, + "indexExpression": { + "id": 4658, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4614, + "src": "7470:9:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7460:20:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4664, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4616, + "src": "7508:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "id": 4660, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4368, + "src": "7483:9:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4662, + "indexExpression": { + "id": 4661, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4614, + "src": "7493:9:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7483:20:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 6728, + "src": "7483:24:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 4665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7483:32:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7460:55:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4667, + "nodeType": "ExpressionStatement", + "src": "7460:55:14" + }, + { + "eventCall": { + "arguments": [ + { + "id": 4669, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4612, + "src": "7539:6:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4670, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4614, + "src": "7547:9:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4671, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4616, + "src": "7558:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4668, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5504, + "src": "7530:8:14", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7530:35:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4673, + "nodeType": "EmitStatement", + "src": "7525:40:14" + } + ] + }, + "documentation": { + "id": 4610, + "nodeType": "StructuredDocumentation", + "src": "6574:463:14", + "text": " @dev Moves tokens `amount` from `sender` to `recipient`.\n This is internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`." + }, + "id": 4675, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nameLocation": "7051:9:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4617, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4612, + "mutability": "mutable", + "name": "sender", + "nameLocation": "7069:6:14", + "nodeType": "VariableDeclaration", + "scope": 4675, + "src": "7061:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4611, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7061:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4614, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "7085:9:14", + "nodeType": "VariableDeclaration", + "scope": 4675, + "src": "7077:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4613, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7077:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4616, + "mutability": "mutable", + "name": "amount", + "nameLocation": "7104:6:14", + "nodeType": "VariableDeclaration", + "scope": 4675, + "src": "7096:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4615, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7096:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7060:51:14" + }, + "returnParameters": { + "id": 4618, + "nodeType": "ParameterList", + "parameters": [], + "src": "7129:0:14" + }, + "scope": 4919, + "src": "7042:530:14", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 4729, + "nodeType": "Block", + "src": "7907:305:14", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4684, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4678, + "src": "7925:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4687, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7944:1:14", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7936:7:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4685, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7936:7:14", + "typeDescriptions": {} + } + }, + "id": 4688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7936:10:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7925:21:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", + "id": 4690, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7948:33:14", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", + "typeString": "literal_string \"ERC20: mint to the zero address\"" + }, + "value": "ERC20: mint to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", + "typeString": "literal_string \"ERC20: mint to the zero address\"" + } + ], + "id": 4683, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7917:7:14", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7917:65:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4692, + "nodeType": "ExpressionStatement", + "src": "7917:65:14" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 4696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8022:1:14", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4695, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8014:7:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4694, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8014:7:14", + "typeDescriptions": {} + } + }, + "id": 4697, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8014:10:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4698, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4678, + "src": "8026:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4699, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4680, + "src": "8035:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4693, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4918, + "src": "7993:20:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7993:49:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4701, + "nodeType": "ExpressionStatement", + "src": "7993:49:14" + }, + { + "expression": { + "id": 4707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4702, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4376, + "src": "8053:12:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4705, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4680, + "src": "8085:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 4703, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4376, + "src": "8068:12:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 6728, + "src": "8068:16:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 4706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8068:24:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8053:39:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4708, + "nodeType": "ExpressionStatement", + "src": "8053:39:14" + }, + { + "expression": { + "id": 4718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 4709, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4368, + "src": "8102:9:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4711, + "indexExpression": { + "id": 4710, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4678, + "src": "8112:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8102:18:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4716, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4680, + "src": "8146:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "id": 4712, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4368, + "src": "8123:9:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4714, + "indexExpression": { + "id": 4713, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4678, + "src": "8133:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8123:18:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 6728, + "src": "8123:22:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 4717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8123:30:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8102:51:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4719, + "nodeType": "ExpressionStatement", + "src": "8102:51:14" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 4723, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8185:1:14", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4722, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8177:7:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4721, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8177:7:14", + "typeDescriptions": {} + } + }, + "id": 4724, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8177:10:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4725, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4678, + "src": "8189:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4726, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4680, + "src": "8198:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4720, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5504, + "src": "8168:8:14", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8168:37:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4728, + "nodeType": "EmitStatement", + "src": "8163:42:14" + } + ] + }, + "documentation": { + "id": 4676, + "nodeType": "StructuredDocumentation", + "src": "7578:259:14", + "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements\n - `to` cannot be the zero address." + }, + "id": 4730, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nameLocation": "7851:5:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4681, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4678, + "mutability": "mutable", + "name": "account", + "nameLocation": "7865:7:14", + "nodeType": "VariableDeclaration", + "scope": 4730, + "src": "7857:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4677, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7857:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4680, + "mutability": "mutable", + "name": "amount", + "nameLocation": "7882:6:14", + "nodeType": "VariableDeclaration", + "scope": 4730, + "src": "7874:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4679, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7874:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7856:33:14" + }, + "returnParameters": { + "id": 4682, + "nodeType": "ParameterList", + "parameters": [], + "src": "7907:0:14" + }, + "scope": 4919, + "src": "7842:370:14", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 4742, + "nodeType": "Block", + "src": "8366:44:14", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4737, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "8382:10:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 4738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8382:12:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 4739, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4733, + "src": "8396:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4736, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4832, + "src": "8376:5:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8376:27:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4741, + "nodeType": "ExpressionStatement", + "src": "8376:27:14" + } + ] + }, + "documentation": { + "id": 4731, + "nodeType": "StructuredDocumentation", + "src": "8218:98:14", + "text": " @dev Destroys `amount` tokens from the caller.\n See {ERC20-_burn}." + }, + "functionSelector": "42966c68", + "id": 4743, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burn", + "nameLocation": "8330:4:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4734, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4733, + "mutability": "mutable", + "name": "amount", + "nameLocation": "8343:6:14", + "nodeType": "VariableDeclaration", + "scope": 4743, + "src": "8335:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4732, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8335:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8334:16:14" + }, + "returnParameters": { + "id": 4735, + "nodeType": "ParameterList", + "parameters": [], + "src": "8366:0:14" + }, + "scope": 4919, + "src": "8321:89:14", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 4775, + "nodeType": "Block", + "src": "8780:224:14", + "statements": [ + { + "assignments": [ + 4752 + ], + "declarations": [ + { + "constant": false, + "id": 4752, + "mutability": "mutable", + "name": "decreasedAllowance", + "nameLocation": "8798:18:14", + "nodeType": "VariableDeclaration", + "scope": 4775, + "src": "8790:26:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4751, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8790:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4762, + "initialValue": { + "arguments": [ + { + "id": 4759, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4748, + "src": "8856:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e6365", + "id": 4760, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8864:38:14", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a287c363786607a1457a2d9d12fa61c0073358e02d76b4035fc2c2d86a19c0db", + "typeString": "literal_string \"ERC20: burn amount exceeds allowance\"" + }, + "value": "ERC20: burn amount exceeds allowance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_a287c363786607a1457a2d9d12fa61c0073358e02d76b4035fc2c2d86a19c0db", + "typeString": "literal_string \"ERC20: burn amount exceeds allowance\"" + } + ], + "expression": { + "arguments": [ + { + "id": 4754, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4746, + "src": "8829:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4755, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "8838:10:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 4756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8838:12:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 4753, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4493, + "src": "8819:9:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view returns (uint256)" + } + }, + "id": 4757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8819:32:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6773, + "src": "8819:36:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 4761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8819:84:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8790:113:14" + }, + { + "expression": { + "arguments": [ + { + "id": 4764, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4746, + "src": "8923:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4765, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "8932:10:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 4766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8932:12:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 4767, + "name": "decreasedAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4752, + "src": "8946:18:14", + "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": 4763, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4877, + "src": "8914:8:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8914:51:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4769, + "nodeType": "ExpressionStatement", + "src": "8914:51:14" + }, + { + "expression": { + "arguments": [ + { + "id": 4771, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4746, + "src": "8981:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4772, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4748, + "src": "8990:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4770, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4832, + "src": "8975:5:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4773, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8975:22:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4774, + "nodeType": "ExpressionStatement", + "src": "8975:22:14" + } + ] + }, + "documentation": { + "id": 4744, + "nodeType": "StructuredDocumentation", + "src": "8416:293:14", + "text": " @dev Destroys `amount` tokens from `account`, deducting from the caller's\n allowance.\n See {ERC20-_burn} and {ERC20-allowance}.\n Requirements:\n - the caller must have allowance for `accounts`'s tokens of at least\n `amount`." + }, + "functionSelector": "79cc6790", + "id": 4776, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burnFrom", + "nameLocation": "8723:8:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4749, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4746, + "mutability": "mutable", + "name": "account", + "nameLocation": "8740:7:14", + "nodeType": "VariableDeclaration", + "scope": 4776, + "src": "8732:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4745, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8732:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4748, + "mutability": "mutable", + "name": "amount", + "nameLocation": "8757:6:14", + "nodeType": "VariableDeclaration", + "scope": 4776, + "src": "8749:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4747, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8749:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8731:33:14" + }, + "returnParameters": { + "id": 4750, + "nodeType": "ParameterList", + "parameters": [], + "src": "8780:0:14" + }, + "scope": 4919, + "src": "8714:290:14", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 4831, + "nodeType": "Block", + "src": "9389:345:14", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4785, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4779, + "src": "9407:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4788, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9426:1:14", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4787, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9418:7:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4786, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9418:7:14", + "typeDescriptions": {} + } + }, + "id": 4789, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9418:10:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9407:21:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", + "id": 4791, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9430:35:14", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", + "typeString": "literal_string \"ERC20: burn from the zero address\"" + }, + "value": "ERC20: burn from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", + "typeString": "literal_string \"ERC20: burn from the zero address\"" + } + ], + "id": 4784, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9399:7:14", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9399:67:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4793, + "nodeType": "ExpressionStatement", + "src": "9399:67:14" + }, + { + "expression": { + "arguments": [ + { + "id": 4795, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4779, + "src": "9498:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 4798, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9515:1:14", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4797, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9507:7:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4796, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9507:7:14", + "typeDescriptions": {} + } + }, + "id": 4799, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9507:10:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4800, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4781, + "src": "9519:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4794, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4918, + "src": "9477:20:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9477:49:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4802, + "nodeType": "ExpressionStatement", + "src": "9477:49:14" + }, + { + "expression": { + "id": 4813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 4803, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4368, + "src": "9537:9:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4805, + "indexExpression": { + "id": 4804, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4779, + "src": "9547:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9537:18:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4810, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4781, + "src": "9581:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", + "id": 4811, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9589:36:14", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", + "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" + }, + "value": "ERC20: burn amount exceeds balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", + "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" + } + ], + "expression": { + "baseExpression": { + "id": 4806, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4368, + "src": "9558:9:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4808, + "indexExpression": { + "id": 4807, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4779, + "src": "9568:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9558:18:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6773, + "src": "9558:22:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 4812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9558:68:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9537:89:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4814, + "nodeType": "ExpressionStatement", + "src": "9537:89:14" + }, + { + "expression": { + "id": 4820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4815, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4376, + "src": "9636:12:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4818, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4781, + "src": "9668:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 4816, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4376, + "src": "9651:12:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6745, + "src": "9651:16:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 4819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9651:24:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9636:39:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4821, + "nodeType": "ExpressionStatement", + "src": "9636:39:14" + }, + { + "eventCall": { + "arguments": [ + { + "id": 4823, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4779, + "src": "9699:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 4826, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9716:1:14", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4825, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9708:7:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4824, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9708:7:14", + "typeDescriptions": {} + } + }, + "id": 4827, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9708:10:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4828, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4781, + "src": "9720:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4822, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5504, + "src": "9690:8:14", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9690:37:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4830, + "nodeType": "EmitStatement", + "src": "9685:42:14" + } + ] + }, + "documentation": { + "id": 4777, + "nodeType": "StructuredDocumentation", + "src": "9011:308:14", + "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens." + }, + "id": 4832, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nameLocation": "9333:5:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4782, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4779, + "mutability": "mutable", + "name": "account", + "nameLocation": "9347:7:14", + "nodeType": "VariableDeclaration", + "scope": 4832, + "src": "9339:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4778, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9339:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4781, + "mutability": "mutable", + "name": "amount", + "nameLocation": "9364:6:14", + "nodeType": "VariableDeclaration", + "scope": 4832, + "src": "9356:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4780, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9356:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9338:33:14" + }, + "returnParameters": { + "id": 4783, + "nodeType": "ParameterList", + "parameters": [], + "src": "9389:0:14" + }, + "scope": 4919, + "src": "9324:410:14", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 4876, + "nodeType": "Block", + "src": "10242:257:14", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4843, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4835, + "src": "10260:5:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4846, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10277:1:14", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4845, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10269:7:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4844, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10269:7:14", + "typeDescriptions": {} + } + }, + "id": 4847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10269:10:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10260:19:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", + "id": 4849, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10281:38:14", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", + "typeString": "literal_string \"ERC20: approve from the zero address\"" + }, + "value": "ERC20: approve from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", + "typeString": "literal_string \"ERC20: approve from the zero address\"" + } + ], + "id": 4842, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "10252:7:14", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10252:68:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4851, + "nodeType": "ExpressionStatement", + "src": "10252:68:14" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4853, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4837, + "src": "10338:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4856, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10357:1:14", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4855, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10349:7:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4854, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10349:7:14", + "typeDescriptions": {} + } + }, + "id": 4857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10349:10:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10338:21:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", + "id": 4859, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10361:36:14", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", + "typeString": "literal_string \"ERC20: approve to the zero address\"" + }, + "value": "ERC20: approve to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", + "typeString": "literal_string \"ERC20: approve to the zero address\"" + } + ], + "id": 4852, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "10330:7:14", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10330:68:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4861, + "nodeType": "ExpressionStatement", + "src": "10330:68:14" + }, + { + "expression": { + "id": 4868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 4862, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4374, + "src": "10409:11:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4865, + "indexExpression": { + "id": 4863, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4835, + "src": "10421:5:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10409:18:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4866, + "indexExpression": { + "id": 4864, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4837, + "src": "10428:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10409:27:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 4867, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4839, + "src": "10439:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10409:36:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4869, + "nodeType": "ExpressionStatement", + "src": "10409:36:14" + }, + { + "eventCall": { + "arguments": [ + { + "id": 4871, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4835, + "src": "10469:5:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4872, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4837, + "src": "10476:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4873, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4839, + "src": "10485:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4870, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5513, + "src": "10460:8:14", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10460:32:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4875, + "nodeType": "EmitStatement", + "src": "10455:37:14" + } + ] + }, + "documentation": { + "id": 4833, + "nodeType": "StructuredDocumentation", + "src": "9740:414:14", + "text": " @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n This is internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address." + }, + "id": 4877, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nameLocation": "10168:8:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4840, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4835, + "mutability": "mutable", + "name": "owner", + "nameLocation": "10185:5:14", + "nodeType": "VariableDeclaration", + "scope": 4877, + "src": "10177:13:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4834, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10177:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4837, + "mutability": "mutable", + "name": "spender", + "nameLocation": "10200:7:14", + "nodeType": "VariableDeclaration", + "scope": 4877, + "src": "10192:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4836, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10192:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4839, + "mutability": "mutable", + "name": "amount", + "nameLocation": "10217:6:14", + "nodeType": "VariableDeclaration", + "scope": 4877, + "src": "10209:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4838, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10209:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10176:48:14" + }, + "returnParameters": { + "id": 4841, + "nodeType": "ParameterList", + "parameters": [], + "src": "10242:0:14" + }, + "scope": 4919, + "src": "10159:340:14", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 4906, + "nodeType": "Block", + "src": "10746:168:14", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4886, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4880, + "src": "10762:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4887, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4882, + "src": "10771:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4885, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4832, + "src": "10756:5:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4888, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10756:22:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4889, + "nodeType": "ExpressionStatement", + "src": "10756:22:14" + }, + { + "expression": { + "arguments": [ + { + "id": 4891, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4880, + "src": "10797:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4892, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "10806:10:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 4893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10806:12:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "arguments": [ + { + "id": 4901, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4882, + "src": "10859:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e6365", + "id": 4902, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10867:38:14", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a287c363786607a1457a2d9d12fa61c0073358e02d76b4035fc2c2d86a19c0db", + "typeString": "literal_string \"ERC20: burn amount exceeds allowance\"" + }, + "value": "ERC20: burn amount exceeds allowance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_a287c363786607a1457a2d9d12fa61c0073358e02d76b4035fc2c2d86a19c0db", + "typeString": "literal_string \"ERC20: burn amount exceeds allowance\"" + } + ], + "expression": { + "baseExpression": { + "baseExpression": { + "id": 4894, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4374, + "src": "10820:11:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4896, + "indexExpression": { + "id": 4895, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4880, + "src": "10832:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10820:20:14", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4899, + "indexExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4897, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "10841:10:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 4898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10841:12:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10820:34:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6773, + "src": "10820:38:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 4903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10820:86:14", + "tryCall": false, + "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": 4890, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4877, + "src": "10788:8:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10788:119:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4905, + "nodeType": "ExpressionStatement", + "src": "10788:119:14" + } + ] + }, + "documentation": { + "id": 4878, + "nodeType": "StructuredDocumentation", + "src": "10505:167:14", + "text": " @dev Destroys `amount` tokens from `account`.`amount` is then deducted\n from the caller's allowance.\n See {_burn} and {_approve}." + }, + "id": 4907, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burnFrom", + "nameLocation": "10686:9:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4883, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4880, + "mutability": "mutable", + "name": "account", + "nameLocation": "10704:7:14", + "nodeType": "VariableDeclaration", + "scope": 4907, + "src": "10696:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4879, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10696:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4882, + "mutability": "mutable", + "name": "amount", + "nameLocation": "10721:6:14", + "nodeType": "VariableDeclaration", + "scope": 4907, + "src": "10713:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4881, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10713:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10695:33:14" + }, + "returnParameters": { + "id": 4884, + "nodeType": "ParameterList", + "parameters": [], + "src": "10746:0:14" + }, + "scope": 4919, + "src": "10677:237:14", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 4917, + "nodeType": "Block", + "src": "11566:3:14", + "statements": [] + }, + "documentation": { + "id": 4908, + "nodeType": "StructuredDocumentation", + "src": "10920:552:14", + "text": " @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of `from`'s tokens\n will be to transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of `from`'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:using-hooks.adoc[Using Hooks]." + }, + "id": 4918, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTokenTransfer", + "nameLocation": "11486:20:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4915, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4910, + "mutability": "mutable", + "name": "from", + "nameLocation": "11515:4:14", + "nodeType": "VariableDeclaration", + "scope": 4918, + "src": "11507:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4909, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11507:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4912, + "mutability": "mutable", + "name": "to", + "nameLocation": "11529:2:14", + "nodeType": "VariableDeclaration", + "scope": 4918, + "src": "11521:10:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4911, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11521:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4914, + "mutability": "mutable", + "name": "amount", + "nameLocation": "11541:6:14", + "nodeType": "VariableDeclaration", + "scope": 4918, + "src": "11533:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4913, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11533:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11506:42:14" + }, + "returnParameters": { + "id": 4916, + "nodeType": "ParameterList", + "parameters": [], + "src": "11566:0:14" + }, + "scope": 4919, + "src": "11477:92:14", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 4920, + "src": "1333:10238:14", + "usedErrors": [] + } + ], + "src": "32:11540:14" + }, + "id": 14 + }, + "contracts/ERC20/ERC20Custom.sol": { + "ast": { + "absolutePath": "contracts/ERC20/ERC20Custom.sol", + "exportedSymbols": { + "Address": [ + 11543 + ], + "Context": [ + 456 + ], + "ERC20Custom": [ + 5434 + ], + "IERC20": [ + 5514 + ], + "SafeMath": [ + 6895 + ] + }, + "id": 5435, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4921, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:15" + }, + { + "absolutePath": "contracts/Common/Context.sol", + "file": "../Common/Context.sol", + "id": 4922, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5435, + "sourceUnit": 457, + "src": "59:31:15", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 4923, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5435, + "sourceUnit": 5515, + "src": "91:22:15", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Math/SafeMath.sol", + "file": "../Math/SafeMath.sol", + "id": 4924, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5435, + "sourceUnit": 6896, + "src": "114:30:15", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Utils/Address.sol", + "file": "../Utils/Address.sol", + "id": 4925, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5435, + "sourceUnit": 11544, + "src": "145:30:15", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 4927, + "name": "Context", + "nodeType": "IdentifierPath", + "referencedDeclaration": 456, + "src": "1427:7:15" + }, + "id": 4928, + "nodeType": "InheritanceSpecifier", + "src": "1427:7:15" + }, + { + "baseName": { + "id": 4929, + "name": "IERC20", + "nodeType": "IdentifierPath", + "referencedDeclaration": 5514, + "src": "1436:6:15" + }, + "id": 4930, + "nodeType": "InheritanceSpecifier", + "src": "1436:6:15" + } + ], + "canonicalName": "ERC20Custom", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 4926, + "nodeType": "StructuredDocumentation", + "src": "250:1152:15", + "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20Mintable}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin guidelines: functions revert instead\n of returning `false` on failure. This behavior is nonetheless conventional\n and does not conflict with the expectations of ERC20 applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}." + }, + "fullyImplemented": true, + "id": 5434, + "linearizedBaseContracts": [ + 5434, + 5514, + 456 + ], + "name": "ERC20Custom", + "nameLocation": "1412:11:15", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 4933, + "libraryName": { + "id": 4931, + "name": "SafeMath", + "nodeType": "IdentifierPath", + "referencedDeclaration": 6895, + "src": "1455:8:15" + }, + "nodeType": "UsingForDirective", + "src": "1449:27:15", + "typeName": { + "id": 4932, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1468:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 4937, + "mutability": "mutable", + "name": "_balances", + "nameLocation": "1520:9:15", + "nodeType": "VariableDeclaration", + "scope": 5434, + "src": "1482:47:15", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 4936, + "keyType": { + "id": 4934, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1491:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1482:28:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 4935, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1502:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4943, + "mutability": "mutable", + "name": "_allowances", + "nameLocation": "1595:11:15", + "nodeType": "VariableDeclaration", + "scope": 5434, + "src": "1536:70:15", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 4942, + "keyType": { + "id": 4938, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1545:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1536:49:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 4941, + "keyType": { + "id": 4939, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1565:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1556:28:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 4940, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1576:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4945, + "mutability": "mutable", + "name": "_totalSupply", + "nameLocation": "1629:12:15", + "nodeType": "VariableDeclaration", + "scope": 5434, + "src": "1613:28:15", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4944, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1613:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "baseFunctions": [ + 5445 + ], + "body": { + "id": 4954, + "nodeType": "Block", + "src": "1764:36:15", + "statements": [ + { + "expression": { + "id": 4952, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4945, + "src": "1781:12:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4951, + "id": 4953, + "nodeType": "Return", + "src": "1774:19:15" + } + ] + }, + "documentation": { + "id": 4946, + "nodeType": "StructuredDocumentation", + "src": "1648:49:15", + "text": " @dev See {IERC20-totalSupply}." + }, + "functionSelector": "18160ddd", + "id": 4955, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "1711:11:15", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 4948, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1737:8:15" + }, + "parameters": { + "id": 4947, + "nodeType": "ParameterList", + "parameters": [], + "src": "1722:2:15" + }, + "returnParameters": { + "id": 4951, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4950, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4955, + "src": "1755:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4949, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1755:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1754:9:15" + }, + "scope": 5434, + "src": "1702:98:15", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 5453 + ], + "body": { + "id": 4968, + "nodeType": "Block", + "src": "1933:42:15", + "statements": [ + { + "expression": { + "baseExpression": { + "id": 4964, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4937, + "src": "1950:9:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4966, + "indexExpression": { + "id": 4965, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4958, + "src": "1960:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1950:18:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4963, + "id": 4967, + "nodeType": "Return", + "src": "1943:25:15" + } + ] + }, + "documentation": { + "id": 4956, + "nodeType": "StructuredDocumentation", + "src": "1806:47:15", + "text": " @dev See {IERC20-balanceOf}." + }, + "functionSelector": "70a08231", + "id": 4969, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "1867:9:15", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 4960, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1906:8:15" + }, + "parameters": { + "id": 4959, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4958, + "mutability": "mutable", + "name": "account", + "nameLocation": "1885:7:15", + "nodeType": "VariableDeclaration", + "scope": 4969, + "src": "1877:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4957, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1877:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1876:17:15" + }, + "returnParameters": { + "id": 4963, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4962, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4969, + "src": "1924:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4961, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1924:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1923:9:15" + }, + "scope": 5434, + "src": "1858:117:15", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 5463 + ], + "body": { + "id": 4989, + "nodeType": "Block", + "src": "2270:80:15", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4981, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "2290:10:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 4982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2290:12:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 4983, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4972, + "src": "2304:9:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4984, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4974, + "src": "2315:6:15", + "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": 4980, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5190, + "src": "2280:9:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2280:42:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4986, + "nodeType": "ExpressionStatement", + "src": "2280:42:15" + }, + { + "expression": { + "hexValue": "74727565", + "id": 4987, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2339:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4979, + "id": 4988, + "nodeType": "Return", + "src": "2332:11:15" + } + ] + }, + "documentation": { + "id": 4970, + "nodeType": "StructuredDocumentation", + "src": "1981:192:15", + "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`." + }, + "functionSelector": "a9059cbb", + "id": 4990, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "2187:8:15", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 4976, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2246:8:15" + }, + "parameters": { + "id": 4975, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4972, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "2204:9:15", + "nodeType": "VariableDeclaration", + "scope": 4990, + "src": "2196:17:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4971, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2196:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4974, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2223:6:15", + "nodeType": "VariableDeclaration", + "scope": 4990, + "src": "2215:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4973, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2215:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2195:35:15" + }, + "returnParameters": { + "id": 4979, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4978, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4990, + "src": "2264:4:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4977, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2264:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2263:6:15" + }, + "scope": 5434, + "src": "2178:172:15", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 5473 + ], + "body": { + "id": 5007, + "nodeType": "Block", + "src": "2506:51:15", + "statements": [ + { + "expression": { + "baseExpression": { + "baseExpression": { + "id": 5001, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4943, + "src": "2523:11:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 5003, + "indexExpression": { + "id": 5002, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4993, + "src": "2535:5:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2523:18:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5005, + "indexExpression": { + "id": 5004, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4995, + "src": "2542:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2523:27:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5000, + "id": 5006, + "nodeType": "Return", + "src": "2516:34:15" + } + ] + }, + "documentation": { + "id": 4991, + "nodeType": "StructuredDocumentation", + "src": "2356:47:15", + "text": " @dev See {IERC20-allowance}." + }, + "functionSelector": "dd62ed3e", + "id": 5008, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "2417:9:15", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 4997, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2479:8:15" + }, + "parameters": { + "id": 4996, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4993, + "mutability": "mutable", + "name": "owner", + "nameLocation": "2435:5:15", + "nodeType": "VariableDeclaration", + "scope": 5008, + "src": "2427:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4992, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2427:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4995, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2450:7:15", + "nodeType": "VariableDeclaration", + "scope": 5008, + "src": "2442:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4994, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2442:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2426:32:15" + }, + "returnParameters": { + "id": 5000, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4999, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5008, + "src": "2497:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4998, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2497:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2496:9:15" + }, + "scope": 5434, + "src": "2408:149:15", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 5483 + ], + "body": { + "id": 5028, + "nodeType": "Block", + "src": "2824:77:15", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5020, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "2843:10:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 5021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2843:12:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 5022, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5011, + "src": "2857:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5023, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5013, + "src": "2866:6:15", + "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": 5019, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "2834:8:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2834:39:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5025, + "nodeType": "ExpressionStatement", + "src": "2834:39:15" + }, + { + "expression": { + "hexValue": "74727565", + "id": 5026, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2890:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 5018, + "id": 5027, + "nodeType": "Return", + "src": "2883:11:15" + } + ] + }, + "documentation": { + "id": 5009, + "nodeType": "StructuredDocumentation", + "src": "2563:167:15", + "text": " @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address.approve(address spender, uint256 amount)" + }, + "functionSelector": "095ea7b3", + "id": 5029, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "2744:7:15", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 5015, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2800:8:15" + }, + "parameters": { + "id": 5014, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5011, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2760:7:15", + "nodeType": "VariableDeclaration", + "scope": 5029, + "src": "2752:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5010, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2752:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5013, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2777:6:15", + "nodeType": "VariableDeclaration", + "scope": 5029, + "src": "2769:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5012, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2769:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2751:33:15" + }, + "returnParameters": { + "id": 5018, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5017, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5029, + "src": "2818:4:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5016, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2818:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2817:6:15" + }, + "scope": 5434, + "src": "2735:166:15", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 5495 + ], + "body": { + "id": 5066, + "nodeType": "Block", + "src": "3471:205:15", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 5043, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5032, + "src": "3491:6:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5044, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5034, + "src": "3499:9:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5045, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5036, + "src": "3510:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5042, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5190, + "src": "3481:9:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5046, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3481:36:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5047, + "nodeType": "ExpressionStatement", + "src": "3481:36:15" + }, + { + "expression": { + "arguments": [ + { + "id": 5049, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5032, + "src": "3536:6:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5050, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "3544:10:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 5051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3544:12:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "arguments": [ + { + "id": 5059, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5036, + "src": "3596:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365", + "id": 5060, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3604:42:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", + "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\"" + }, + "value": "ERC20: transfer amount exceeds allowance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", + "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\"" + } + ], + "expression": { + "baseExpression": { + "baseExpression": { + "id": 5052, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4943, + "src": "3558:11:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 5054, + "indexExpression": { + "id": 5053, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5032, + "src": "3570:6:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3558:19:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5057, + "indexExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5055, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "3578:10:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 5056, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3578:12:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3558:33:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6773, + "src": "3558:37:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 5061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3558:89:15", + "tryCall": false, + "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": 5048, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "3527:8:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3527:121:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5063, + "nodeType": "ExpressionStatement", + "src": "3527:121:15" + }, + { + "expression": { + "hexValue": "74727565", + "id": 5064, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3665:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 5041, + "id": 5065, + "nodeType": "Return", + "src": "3658:11:15" + } + ] + }, + "documentation": { + "id": 5030, + "nodeType": "StructuredDocumentation", + "src": "2907:447:15", + "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20};\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for `sender`'s tokens of at least\n `amount`." + }, + "functionSelector": "23b872dd", + "id": 5067, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "3368:12:15", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 5038, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3447:8:15" + }, + "parameters": { + "id": 5037, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5032, + "mutability": "mutable", + "name": "sender", + "nameLocation": "3389:6:15", + "nodeType": "VariableDeclaration", + "scope": 5067, + "src": "3381:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5031, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3381:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5034, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "3405:9:15", + "nodeType": "VariableDeclaration", + "scope": 5067, + "src": "3397:17:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5033, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3397:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5036, + "mutability": "mutable", + "name": "amount", + "nameLocation": "3424:6:15", + "nodeType": "VariableDeclaration", + "scope": 5067, + "src": "3416:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5035, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3416:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3380:51:15" + }, + "returnParameters": { + "id": 5041, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5040, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5067, + "src": "3465:4:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5039, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3465:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3464:6:15" + }, + "scope": 5434, + "src": "3359:317:15", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 5094, + "nodeType": "Block", + "src": "4165:121:15", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5078, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "4184:10:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 5079, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4184:12:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 5080, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5070, + "src": "4198:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 5088, + "name": "addedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5072, + "src": "4246:10:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "baseExpression": { + "id": 5081, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4943, + "src": "4207:11:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 5084, + "indexExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5082, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "4219:10:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 5083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4219:12:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4207:25:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5086, + "indexExpression": { + "id": 5085, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5070, + "src": "4233:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4207:34:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5087, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 6728, + "src": "4207:38:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4207:50:15", + "tryCall": false, + "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": 5077, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "4175:8:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5090, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4175:83:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5091, + "nodeType": "ExpressionStatement", + "src": "4175:83:15" + }, + { + "expression": { + "hexValue": "74727565", + "id": 5092, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4275:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 5076, + "id": 5093, + "nodeType": "Return", + "src": "4268:11:15" + } + ] + }, + "documentation": { + "id": 5068, + "nodeType": "StructuredDocumentation", + "src": "3682:384:15", + "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address." + }, + "functionSelector": "39509351", + "id": 5095, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "increaseAllowance", + "nameLocation": "4080:17:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5073, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5070, + "mutability": "mutable", + "name": "spender", + "nameLocation": "4106:7:15", + "nodeType": "VariableDeclaration", + "scope": 5095, + "src": "4098:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5069, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4098:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5072, + "mutability": "mutable", + "name": "addedValue", + "nameLocation": "4123:10:15", + "nodeType": "VariableDeclaration", + "scope": 5095, + "src": "4115:18:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5071, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4115:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4097:37:15" + }, + "returnParameters": { + "id": 5076, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5075, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5095, + "src": "4159:4:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5074, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4159:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4158:6:15" + }, + "scope": 5434, + "src": "4071:215:15", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 5123, + "nodeType": "Block", + "src": "4872:167:15", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5106, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "4891:10:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 5107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4891:12:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 5108, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5098, + "src": "4905:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 5116, + "name": "subtractedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5100, + "src": "4953:15:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", + "id": 5117, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4970:39:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", + "typeString": "literal_string \"ERC20: decreased allowance below zero\"" + }, + "value": "ERC20: decreased allowance below zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", + "typeString": "literal_string \"ERC20: decreased allowance below zero\"" + } + ], + "expression": { + "baseExpression": { + "baseExpression": { + "id": 5109, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4943, + "src": "4914:11:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 5112, + "indexExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5110, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "4926:10:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 5111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4926:12:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4914:25:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5114, + "indexExpression": { + "id": 5113, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5098, + "src": "4940:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4914:34:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6773, + "src": "4914:38:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 5118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4914:96:15", + "tryCall": false, + "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": 5105, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "4882:8:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4882:129:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5120, + "nodeType": "ExpressionStatement", + "src": "4882:129:15" + }, + { + "expression": { + "hexValue": "74727565", + "id": 5121, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5028:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 5104, + "id": 5122, + "nodeType": "Return", + "src": "5021:11:15" + } + ] + }, + "documentation": { + "id": 5096, + "nodeType": "StructuredDocumentation", + "src": "4292:476:15", + "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`." + }, + "functionSelector": "a457c2d7", + "id": 5124, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decreaseAllowance", + "nameLocation": "4782:17:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5101, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5098, + "mutability": "mutable", + "name": "spender", + "nameLocation": "4808:7:15", + "nodeType": "VariableDeclaration", + "scope": 5124, + "src": "4800:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5097, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4800:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5100, + "mutability": "mutable", + "name": "subtractedValue", + "nameLocation": "4825:15:15", + "nodeType": "VariableDeclaration", + "scope": 5124, + "src": "4817:23:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5099, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4817:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4799:42:15" + }, + "returnParameters": { + "id": 5104, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5103, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5124, + "src": "4866:4:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5102, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4866:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4865:6:15" + }, + "scope": 5434, + "src": "4773:266:15", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 5189, + "nodeType": "Block", + "src": "5600:443:15", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5135, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5127, + "src": "5618:6:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 5138, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5636:1:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5628:7:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5136, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5628:7:15", + "typeDescriptions": {} + } + }, + "id": 5139, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5628:10:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5618:20:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", + "id": 5141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5640:39:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", + "typeString": "literal_string \"ERC20: transfer from the zero address\"" + }, + "value": "ERC20: transfer from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", + "typeString": "literal_string \"ERC20: transfer from the zero address\"" + } + ], + "id": 5134, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5610:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5610:70:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5143, + "nodeType": "ExpressionStatement", + "src": "5610:70:15" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5145, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5129, + "src": "5698:9:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 5148, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5719:1:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5147, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5711:7:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5146, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5711:7:15", + "typeDescriptions": {} + } + }, + "id": 5149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5711:10:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5698:23:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", + "id": 5151, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5723:37:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", + "typeString": "literal_string \"ERC20: transfer to the zero address\"" + }, + "value": "ERC20: transfer to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", + "typeString": "literal_string \"ERC20: transfer to the zero address\"" + } + ], + "id": 5144, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5690:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5690:71:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5153, + "nodeType": "ExpressionStatement", + "src": "5690:71:15" + }, + { + "expression": { + "arguments": [ + { + "id": 5155, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5127, + "src": "5793:6:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5156, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5129, + "src": "5801:9:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5157, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5131, + "src": "5812:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5154, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5433, + "src": "5772:20:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5772:47:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5159, + "nodeType": "ExpressionStatement", + "src": "5772:47:15" + }, + { + "expression": { + "id": 5170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 5160, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4937, + "src": "5830:9:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5162, + "indexExpression": { + "id": 5161, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5127, + "src": "5840:6:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5830:17:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5167, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5131, + "src": "5872:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", + "id": 5168, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5880:40:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", + "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" + }, + "value": "ERC20: transfer amount exceeds balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", + "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" + } + ], + "expression": { + "baseExpression": { + "id": 5163, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4937, + "src": "5850:9:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5165, + "indexExpression": { + "id": 5164, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5127, + "src": "5860:6:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5850:17:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6773, + "src": "5850:21:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 5169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5850:71:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5830:91:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5171, + "nodeType": "ExpressionStatement", + "src": "5830:91:15" + }, + { + "expression": { + "id": 5181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 5172, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4937, + "src": "5931:9:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5174, + "indexExpression": { + "id": 5173, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5129, + "src": "5941:9:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5931:20:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5179, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5131, + "src": "5979:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "id": 5175, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4937, + "src": "5954:9:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5177, + "indexExpression": { + "id": 5176, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5129, + "src": "5964:9:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5954:20:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 6728, + "src": "5954:24:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5954:32:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5931:55:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5182, + "nodeType": "ExpressionStatement", + "src": "5931:55:15" + }, + { + "eventCall": { + "arguments": [ + { + "id": 5184, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5127, + "src": "6010:6:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5185, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5129, + "src": "6018:9:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5186, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5131, + "src": "6029:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5183, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5504, + "src": "6001:8:15", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6001:35:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5188, + "nodeType": "EmitStatement", + "src": "5996:40:15" + } + ] + }, + "documentation": { + "id": 5125, + "nodeType": "StructuredDocumentation", + "src": "5045:463:15", + "text": " @dev Moves tokens `amount` from `sender` to `recipient`.\n This is internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`." + }, + "id": 5190, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nameLocation": "5522:9:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5132, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5127, + "mutability": "mutable", + "name": "sender", + "nameLocation": "5540:6:15", + "nodeType": "VariableDeclaration", + "scope": 5190, + "src": "5532:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5126, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5532:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5129, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "5556:9:15", + "nodeType": "VariableDeclaration", + "scope": 5190, + "src": "5548:17:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5128, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5548:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5131, + "mutability": "mutable", + "name": "amount", + "nameLocation": "5575:6:15", + "nodeType": "VariableDeclaration", + "scope": 5190, + "src": "5567:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5130, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5567:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5531:51:15" + }, + "returnParameters": { + "id": 5133, + "nodeType": "ParameterList", + "parameters": [], + "src": "5600:0:15" + }, + "scope": 5434, + "src": "5513:530:15", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 5244, + "nodeType": "Block", + "src": "6378:305:15", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5199, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5193, + "src": "6396:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 5202, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6415:1:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5201, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6407:7:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5200, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6407:7:15", + "typeDescriptions": {} + } + }, + "id": 5203, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6407:10:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6396:21:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", + "id": 5205, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6419:33:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", + "typeString": "literal_string \"ERC20: mint to the zero address\"" + }, + "value": "ERC20: mint to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", + "typeString": "literal_string \"ERC20: mint to the zero address\"" + } + ], + "id": 5198, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6388:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6388:65:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5207, + "nodeType": "ExpressionStatement", + "src": "6388:65:15" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 5211, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6493:1:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5210, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6485:7:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5209, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6485:7:15", + "typeDescriptions": {} + } + }, + "id": 5212, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6485:10:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5213, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5193, + "src": "6497:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5214, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5195, + "src": "6506:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5208, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5433, + "src": "6464:20:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6464:49:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5216, + "nodeType": "ExpressionStatement", + "src": "6464:49:15" + }, + { + "expression": { + "id": 5222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5217, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4945, + "src": "6524:12:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5220, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5195, + "src": "6556:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5218, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4945, + "src": "6539:12:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 6728, + "src": "6539:16:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6539:24:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6524:39:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5223, + "nodeType": "ExpressionStatement", + "src": "6524:39:15" + }, + { + "expression": { + "id": 5233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 5224, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4937, + "src": "6573:9:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5226, + "indexExpression": { + "id": 5225, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5193, + "src": "6583:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6573:18:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5231, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5195, + "src": "6617:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "id": 5227, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4937, + "src": "6594:9:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5229, + "indexExpression": { + "id": 5228, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5193, + "src": "6604:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6594:18:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 6728, + "src": "6594:22:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6594:30:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6573:51:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5234, + "nodeType": "ExpressionStatement", + "src": "6573:51:15" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 5238, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6656:1:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5237, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6648:7:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5236, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6648:7:15", + "typeDescriptions": {} + } + }, + "id": 5239, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6648:10:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5240, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5193, + "src": "6660:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5241, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5195, + "src": "6669:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5235, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5504, + "src": "6639:8:15", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6639:37:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5243, + "nodeType": "EmitStatement", + "src": "6634:42:15" + } + ] + }, + "documentation": { + "id": 5191, + "nodeType": "StructuredDocumentation", + "src": "6049:259:15", + "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements\n - `to` cannot be the zero address." + }, + "id": 5245, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nameLocation": "6322:5:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5196, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5193, + "mutability": "mutable", + "name": "account", + "nameLocation": "6336:7:15", + "nodeType": "VariableDeclaration", + "scope": 5245, + "src": "6328:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5192, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6328:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5195, + "mutability": "mutable", + "name": "amount", + "nameLocation": "6353:6:15", + "nodeType": "VariableDeclaration", + "scope": 5245, + "src": "6345:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5194, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6345:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6327:33:15" + }, + "returnParameters": { + "id": 5197, + "nodeType": "ParameterList", + "parameters": [], + "src": "6378:0:15" + }, + "scope": 5434, + "src": "6313:370:15", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 5257, + "nodeType": "Block", + "src": "6837:44:15", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5252, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "6853:10:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 5253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6853:12:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 5254, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5248, + "src": "6867:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5251, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5347, + "src": "6847:5:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 5255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6847:27:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5256, + "nodeType": "ExpressionStatement", + "src": "6847:27:15" + } + ] + }, + "documentation": { + "id": 5246, + "nodeType": "StructuredDocumentation", + "src": "6689:98:15", + "text": " @dev Destroys `amount` tokens from the caller.\n See {ERC20-_burn}." + }, + "functionSelector": "42966c68", + "id": 5258, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burn", + "nameLocation": "6801:4:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5249, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5248, + "mutability": "mutable", + "name": "amount", + "nameLocation": "6814:6:15", + "nodeType": "VariableDeclaration", + "scope": 5258, + "src": "6806:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5247, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6806:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6805:16:15" + }, + "returnParameters": { + "id": 5250, + "nodeType": "ParameterList", + "parameters": [], + "src": "6837:0:15" + }, + "scope": 5434, + "src": "6792:89:15", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 5290, + "nodeType": "Block", + "src": "7251:224:15", + "statements": [ + { + "assignments": [ + 5267 + ], + "declarations": [ + { + "constant": false, + "id": 5267, + "mutability": "mutable", + "name": "decreasedAllowance", + "nameLocation": "7269:18:15", + "nodeType": "VariableDeclaration", + "scope": 5290, + "src": "7261:26:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5266, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7261:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 5277, + "initialValue": { + "arguments": [ + { + "id": 5274, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5263, + "src": "7327:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e6365", + "id": 5275, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7335:38:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a287c363786607a1457a2d9d12fa61c0073358e02d76b4035fc2c2d86a19c0db", + "typeString": "literal_string \"ERC20: burn amount exceeds allowance\"" + }, + "value": "ERC20: burn amount exceeds allowance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_a287c363786607a1457a2d9d12fa61c0073358e02d76b4035fc2c2d86a19c0db", + "typeString": "literal_string \"ERC20: burn amount exceeds allowance\"" + } + ], + "expression": { + "arguments": [ + { + "id": 5269, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5261, + "src": "7300:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5270, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "7309:10:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 5271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7309:12:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 5268, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5008, + "src": "7290:9:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view returns (uint256)" + } + }, + "id": 5272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7290:32:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6773, + "src": "7290:36:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 5276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7290:84:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7261:113:15" + }, + { + "expression": { + "arguments": [ + { + "id": 5279, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5261, + "src": "7394:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5280, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "7403:10:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 5281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7403:12:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 5282, + "name": "decreasedAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5267, + "src": "7417:18:15", + "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": 5278, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "7385:8:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7385:51:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5284, + "nodeType": "ExpressionStatement", + "src": "7385:51:15" + }, + { + "expression": { + "arguments": [ + { + "id": 5286, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5261, + "src": "7452:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5287, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5263, + "src": "7461:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5285, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5347, + "src": "7446:5:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 5288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7446:22:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5289, + "nodeType": "ExpressionStatement", + "src": "7446:22:15" + } + ] + }, + "documentation": { + "id": 5259, + "nodeType": "StructuredDocumentation", + "src": "6887:293:15", + "text": " @dev Destroys `amount` tokens from `account`, deducting from the caller's\n allowance.\n See {ERC20-_burn} and {ERC20-allowance}.\n Requirements:\n - the caller must have allowance for `accounts`'s tokens of at least\n `amount`." + }, + "functionSelector": "79cc6790", + "id": 5291, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burnFrom", + "nameLocation": "7194:8:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5264, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5261, + "mutability": "mutable", + "name": "account", + "nameLocation": "7211:7:15", + "nodeType": "VariableDeclaration", + "scope": 5291, + "src": "7203:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5260, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7203:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5263, + "mutability": "mutable", + "name": "amount", + "nameLocation": "7228:6:15", + "nodeType": "VariableDeclaration", + "scope": 5291, + "src": "7220:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5262, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7220:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7202:33:15" + }, + "returnParameters": { + "id": 5265, + "nodeType": "ParameterList", + "parameters": [], + "src": "7251:0:15" + }, + "scope": 5434, + "src": "7185:290:15", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 5346, + "nodeType": "Block", + "src": "7860:345:15", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5300, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5294, + "src": "7878:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 5303, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7897:1:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5302, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7889:7:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5301, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7889:7:15", + "typeDescriptions": {} + } + }, + "id": 5304, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7889:10:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7878:21:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", + "id": 5306, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7901:35:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", + "typeString": "literal_string \"ERC20: burn from the zero address\"" + }, + "value": "ERC20: burn from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", + "typeString": "literal_string \"ERC20: burn from the zero address\"" + } + ], + "id": 5299, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7870:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7870:67:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5308, + "nodeType": "ExpressionStatement", + "src": "7870:67:15" + }, + { + "expression": { + "arguments": [ + { + "id": 5310, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5294, + "src": "7969:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 5313, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7986:1:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5312, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7978:7:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5311, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7978:7:15", + "typeDescriptions": {} + } + }, + "id": 5314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7978:10:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5315, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5296, + "src": "7990:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5309, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5433, + "src": "7948:20:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7948:49:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5317, + "nodeType": "ExpressionStatement", + "src": "7948:49:15" + }, + { + "expression": { + "id": 5328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 5318, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4937, + "src": "8008:9:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5320, + "indexExpression": { + "id": 5319, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5294, + "src": "8018:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8008:18:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5325, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5296, + "src": "8052:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", + "id": 5326, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8060:36:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", + "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" + }, + "value": "ERC20: burn amount exceeds balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", + "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" + } + ], + "expression": { + "baseExpression": { + "id": 5321, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4937, + "src": "8029:9:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5323, + "indexExpression": { + "id": 5322, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5294, + "src": "8039:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8029:18:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6773, + "src": "8029:22:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 5327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8029:68:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8008:89:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5329, + "nodeType": "ExpressionStatement", + "src": "8008:89:15" + }, + { + "expression": { + "id": 5335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5330, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4945, + "src": "8107:12:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5333, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5296, + "src": "8139:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5331, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4945, + "src": "8122:12:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6745, + "src": "8122:16:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8122:24:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8107:39:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5336, + "nodeType": "ExpressionStatement", + "src": "8107:39:15" + }, + { + "eventCall": { + "arguments": [ + { + "id": 5338, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5294, + "src": "8170:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 5341, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8187:1:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5340, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8179:7:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5339, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8179:7:15", + "typeDescriptions": {} + } + }, + "id": 5342, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8179:10:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5343, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5296, + "src": "8191:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5337, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5504, + "src": "8161:8:15", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8161:37:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5345, + "nodeType": "EmitStatement", + "src": "8156:42:15" + } + ] + }, + "documentation": { + "id": 5292, + "nodeType": "StructuredDocumentation", + "src": "7482:308:15", + "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens." + }, + "id": 5347, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nameLocation": "7804:5:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5297, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5294, + "mutability": "mutable", + "name": "account", + "nameLocation": "7818:7:15", + "nodeType": "VariableDeclaration", + "scope": 5347, + "src": "7810:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5293, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7810:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5296, + "mutability": "mutable", + "name": "amount", + "nameLocation": "7835:6:15", + "nodeType": "VariableDeclaration", + "scope": 5347, + "src": "7827:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5295, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7827:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7809:33:15" + }, + "returnParameters": { + "id": 5298, + "nodeType": "ParameterList", + "parameters": [], + "src": "7860:0:15" + }, + "scope": 5434, + "src": "7795:410:15", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 5391, + "nodeType": "Block", + "src": "8713:257:15", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5358, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5350, + "src": "8731:5:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 5361, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8748:1:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5360, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8740:7:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5359, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8740:7:15", + "typeDescriptions": {} + } + }, + "id": 5362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8740:10:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8731:19:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", + "id": 5364, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8752:38:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", + "typeString": "literal_string \"ERC20: approve from the zero address\"" + }, + "value": "ERC20: approve from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", + "typeString": "literal_string \"ERC20: approve from the zero address\"" + } + ], + "id": 5357, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8723:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8723:68:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5366, + "nodeType": "ExpressionStatement", + "src": "8723:68:15" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5368, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5352, + "src": "8809:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 5371, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8828:1:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5370, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8820:7:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5369, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8820:7:15", + "typeDescriptions": {} + } + }, + "id": 5372, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8820:10:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8809:21:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", + "id": 5374, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8832:36:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", + "typeString": "literal_string \"ERC20: approve to the zero address\"" + }, + "value": "ERC20: approve to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", + "typeString": "literal_string \"ERC20: approve to the zero address\"" + } + ], + "id": 5367, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8801:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8801:68:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5376, + "nodeType": "ExpressionStatement", + "src": "8801:68:15" + }, + { + "expression": { + "id": 5383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 5377, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4943, + "src": "8880:11:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 5380, + "indexExpression": { + "id": 5378, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5350, + "src": "8892:5:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8880:18:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5381, + "indexExpression": { + "id": 5379, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5352, + "src": "8899:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8880:27:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 5382, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5354, + "src": "8910:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8880:36:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5384, + "nodeType": "ExpressionStatement", + "src": "8880:36:15" + }, + { + "eventCall": { + "arguments": [ + { + "id": 5386, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5350, + "src": "8940:5:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5387, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5352, + "src": "8947:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5388, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5354, + "src": "8956:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5385, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5513, + "src": "8931:8:15", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8931:32:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5390, + "nodeType": "EmitStatement", + "src": "8926:37:15" + } + ] + }, + "documentation": { + "id": 5348, + "nodeType": "StructuredDocumentation", + "src": "8211:414:15", + "text": " @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n This is internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address." + }, + "id": 5392, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nameLocation": "8639:8:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5355, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5350, + "mutability": "mutable", + "name": "owner", + "nameLocation": "8656:5:15", + "nodeType": "VariableDeclaration", + "scope": 5392, + "src": "8648:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5349, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8648:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5352, + "mutability": "mutable", + "name": "spender", + "nameLocation": "8671:7:15", + "nodeType": "VariableDeclaration", + "scope": 5392, + "src": "8663:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5351, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8663:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5354, + "mutability": "mutable", + "name": "amount", + "nameLocation": "8688:6:15", + "nodeType": "VariableDeclaration", + "scope": 5392, + "src": "8680:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5353, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8680:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8647:48:15" + }, + "returnParameters": { + "id": 5356, + "nodeType": "ParameterList", + "parameters": [], + "src": "8713:0:15" + }, + "scope": 5434, + "src": "8630:340:15", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 5421, + "nodeType": "Block", + "src": "9217:168:15", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 5401, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5395, + "src": "9233:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5402, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5397, + "src": "9242:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5400, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5347, + "src": "9227:5:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 5403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9227:22:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5404, + "nodeType": "ExpressionStatement", + "src": "9227:22:15" + }, + { + "expression": { + "arguments": [ + { + "id": 5406, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5395, + "src": "9268:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5407, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "9277:10:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 5408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9277:12:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "arguments": [ + { + "id": 5416, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5397, + "src": "9330:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e6365", + "id": 5417, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9338:38:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a287c363786607a1457a2d9d12fa61c0073358e02d76b4035fc2c2d86a19c0db", + "typeString": "literal_string \"ERC20: burn amount exceeds allowance\"" + }, + "value": "ERC20: burn amount exceeds allowance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_a287c363786607a1457a2d9d12fa61c0073358e02d76b4035fc2c2d86a19c0db", + "typeString": "literal_string \"ERC20: burn amount exceeds allowance\"" + } + ], + "expression": { + "baseExpression": { + "baseExpression": { + "id": 5409, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4943, + "src": "9291:11:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 5411, + "indexExpression": { + "id": 5410, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5395, + "src": "9303:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9291:20:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5414, + "indexExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5412, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "9312:10:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 5413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9312:12:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9291:34:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6773, + "src": "9291:38:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 5418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9291:86:15", + "tryCall": false, + "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": 5405, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "9259:8:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9259:119:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5420, + "nodeType": "ExpressionStatement", + "src": "9259:119:15" + } + ] + }, + "documentation": { + "id": 5393, + "nodeType": "StructuredDocumentation", + "src": "8976:167:15", + "text": " @dev Destroys `amount` tokens from `account`.`amount` is then deducted\n from the caller's allowance.\n See {_burn} and {_approve}." + }, + "id": 5422, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burnFrom", + "nameLocation": "9157:9:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5398, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5395, + "mutability": "mutable", + "name": "account", + "nameLocation": "9175:7:15", + "nodeType": "VariableDeclaration", + "scope": 5422, + "src": "9167:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5394, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9167:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5397, + "mutability": "mutable", + "name": "amount", + "nameLocation": "9192:6:15", + "nodeType": "VariableDeclaration", + "scope": 5422, + "src": "9184:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5396, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9184:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9166:33:15" + }, + "returnParameters": { + "id": 5399, + "nodeType": "ParameterList", + "parameters": [], + "src": "9217:0:15" + }, + "scope": 5434, + "src": "9148:237:15", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 5432, + "nodeType": "Block", + "src": "10037:3:15", + "statements": [] + }, + "documentation": { + "id": 5423, + "nodeType": "StructuredDocumentation", + "src": "9391:552:15", + "text": " @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of `from`'s tokens\n will be to transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of `from`'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:using-hooks.adoc[Using Hooks]." + }, + "id": 5433, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTokenTransfer", + "nameLocation": "9957:20:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5430, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5425, + "mutability": "mutable", + "name": "from", + "nameLocation": "9986:4:15", + "nodeType": "VariableDeclaration", + "scope": 5433, + "src": "9978:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5424, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9978:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5427, + "mutability": "mutable", + "name": "to", + "nameLocation": "10000:2:15", + "nodeType": "VariableDeclaration", + "scope": 5433, + "src": "9992:10:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5426, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9992:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5429, + "mutability": "mutable", + "name": "amount", + "nameLocation": "10012:6:15", + "nodeType": "VariableDeclaration", + "scope": 5433, + "src": "10004:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5428, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10004:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9977:42:15" + }, + "returnParameters": { + "id": 5431, + "nodeType": "ParameterList", + "parameters": [], + "src": "10037:0:15" + }, + "scope": 5434, + "src": "9948:92:15", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 5435, + "src": "1403:8639:15", + "usedErrors": [] + } + ], + "src": "32:10010:15" + }, + "id": 15 + }, + "contracts/ERC20/IERC20.sol": { + "ast": { + "absolutePath": "contracts/ERC20/IERC20.sol", + "exportedSymbols": { + "Context": [ + 456 + ], + "IERC20": [ + 5514 + ], + "SafeMath": [ + 6895 + ] + }, + "id": 5515, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5436, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:16" + }, + { + "absolutePath": "contracts/Common/Context.sol", + "file": "../Common/Context.sol", + "id": 5437, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5515, + "sourceUnit": 457, + "src": "59:31:16", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Math/SafeMath.sol", + "file": "../Math/SafeMath.sol", + "id": 5438, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5515, + "sourceUnit": 6896, + "src": "91:30:16", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC20", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 5439, + "nodeType": "StructuredDocumentation", + "src": "123:150:16", + "text": " @dev Interface of the ERC20 standard as defined in the EIP. Does not include\n the optional functions; to access them see {ERC20Detailed}." + }, + "fullyImplemented": false, + "id": 5514, + "linearizedBaseContracts": [ + 5514 + ], + "name": "IERC20", + "nameLocation": "284:6:16", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 5440, + "nodeType": "StructuredDocumentation", + "src": "297:66:16", + "text": " @dev Returns the amount of tokens in existence." + }, + "functionSelector": "18160ddd", + "id": 5445, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "377:11:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5441, + "nodeType": "ParameterList", + "parameters": [], + "src": "388:2:16" + }, + "returnParameters": { + "id": 5444, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5443, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5445, + "src": "414:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5442, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "414:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "413:9:16" + }, + "scope": 5514, + "src": "368:55:16", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 5446, + "nodeType": "StructuredDocumentation", + "src": "429:72:16", + "text": " @dev Returns the amount of tokens owned by `account`." + }, + "functionSelector": "70a08231", + "id": 5453, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "515:9:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5449, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5448, + "mutability": "mutable", + "name": "account", + "nameLocation": "533:7:16", + "nodeType": "VariableDeclaration", + "scope": 5453, + "src": "525:15:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5447, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "525:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "524:17:16" + }, + "returnParameters": { + "id": 5452, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5451, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5453, + "src": "565:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5450, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "565:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "564:9:16" + }, + "scope": 5514, + "src": "506:68:16", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 5454, + "nodeType": "StructuredDocumentation", + "src": "580:209:16", + "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": 5463, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "803:8:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5459, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5456, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "820:9:16", + "nodeType": "VariableDeclaration", + "scope": 5463, + "src": "812:17:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5455, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "812:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5458, + "mutability": "mutable", + "name": "amount", + "nameLocation": "839:6:16", + "nodeType": "VariableDeclaration", + "scope": 5463, + "src": "831:14:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5457, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "831:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "811:35:16" + }, + "returnParameters": { + "id": 5462, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5461, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5463, + "src": "865:4:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5460, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "865:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "864:6:16" + }, + "scope": 5514, + "src": "794:77:16", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 5464, + "nodeType": "StructuredDocumentation", + "src": "877:264:16", + "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": 5473, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "1155:9:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5469, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5466, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1173:5:16", + "nodeType": "VariableDeclaration", + "scope": 5473, + "src": "1165:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5465, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1165:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5468, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1188:7:16", + "nodeType": "VariableDeclaration", + "scope": 5473, + "src": "1180:15:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5467, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1180:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1164:32:16" + }, + "returnParameters": { + "id": 5472, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5471, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5473, + "src": "1220:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5470, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1220:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1219:9:16" + }, + "scope": 5514, + "src": "1146:83:16", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 5474, + "nodeType": "StructuredDocumentation", + "src": "1235:642:16", + "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": 5483, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "1891:7:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5479, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5476, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1907:7:16", + "nodeType": "VariableDeclaration", + "scope": 5483, + "src": "1899:15:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5475, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1899:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5478, + "mutability": "mutable", + "name": "amount", + "nameLocation": "1924:6:16", + "nodeType": "VariableDeclaration", + "scope": 5483, + "src": "1916:14:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5477, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1916:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1898:33:16" + }, + "returnParameters": { + "id": 5482, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5481, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5483, + "src": "1950:4:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5480, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1950:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1949:6:16" + }, + "scope": 5514, + "src": "1882:74:16", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 5484, + "nodeType": "StructuredDocumentation", + "src": "1962:296:16", + "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": 5495, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "2272:12:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5491, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5486, + "mutability": "mutable", + "name": "sender", + "nameLocation": "2293:6:16", + "nodeType": "VariableDeclaration", + "scope": 5495, + "src": "2285:14:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2285:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5488, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "2309:9:16", + "nodeType": "VariableDeclaration", + "scope": 5495, + "src": "2301:17:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5487, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2301:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5490, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2328:6:16", + "nodeType": "VariableDeclaration", + "scope": 5495, + "src": "2320:14:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5489, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2320:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2284:51:16" + }, + "returnParameters": { + "id": 5494, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5493, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5495, + "src": "2354:4:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5492, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2354:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2353:6:16" + }, + "scope": 5514, + "src": "2263:97:16", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": { + "id": 5496, + "nodeType": "StructuredDocumentation", + "src": "2366:158:16", + "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero." + }, + "id": 5504, + "name": "Transfer", + "nameLocation": "2535:8:16", + "nodeType": "EventDefinition", + "parameters": { + "id": 5503, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5498, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "2560:4:16", + "nodeType": "VariableDeclaration", + "scope": 5504, + "src": "2544:20:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5497, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2544:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5500, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "2582:2:16", + "nodeType": "VariableDeclaration", + "scope": 5504, + "src": "2566:18:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5499, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2566:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5502, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "2594:5:16", + "nodeType": "VariableDeclaration", + "scope": 5504, + "src": "2586:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5501, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2586:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2543:57:16" + }, + "src": "2529:72:16" + }, + { + "anonymous": false, + "documentation": { + "id": 5505, + "nodeType": "StructuredDocumentation", + "src": "2607:148:16", + "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": 5513, + "name": "Approval", + "nameLocation": "2766:8:16", + "nodeType": "EventDefinition", + "parameters": { + "id": 5512, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5507, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "2791:5:16", + "nodeType": "VariableDeclaration", + "scope": 5513, + "src": "2775:21:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5506, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2775:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5509, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2814:7:16", + "nodeType": "VariableDeclaration", + "scope": 5513, + "src": "2798:23:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5508, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2798:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5511, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "2831:5:16", + "nodeType": "VariableDeclaration", + "scope": 5513, + "src": "2823:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5510, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2823:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2774:63:16" + }, + "src": "2760:78:16" + } + ], + "scope": 5515, + "src": "274:2566:16", + "usedErrors": [] + } + ], + "src": "32:2810:16" + }, + "id": 16 + }, + "contracts/ERC20/IERC20_Detailed.sol": { + "ast": { + "absolutePath": "contracts/ERC20/IERC20_Detailed.sol", + "exportedSymbols": { + "Context": [ + 456 + ], + "IERC20_Detailed": [ + 5609 + ], + "SafeMath": [ + 6895 + ] + }, + "id": 5610, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5516, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:17" + }, + { + "absolutePath": "contracts/Common/Context.sol", + "file": "../Common/Context.sol", + "id": 5517, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5610, + "sourceUnit": 457, + "src": "59:31:17", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Math/SafeMath.sol", + "file": "../Math/SafeMath.sol", + "id": 5518, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5610, + "sourceUnit": 6896, + "src": "91:30:17", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC20_Detailed", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 5519, + "nodeType": "StructuredDocumentation", + "src": "123:150:17", + "text": " @dev Interface of the ERC20 standard as defined in the EIP. Does not include\n the optional functions; to access them see {ERC20Detailed}." + }, + "fullyImplemented": false, + "id": 5609, + "linearizedBaseContracts": [ + 5609 + ], + "name": "IERC20_Detailed", + "nameLocation": "284:15:17", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "d28d8852", + "id": 5524, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "_name", + "nameLocation": "315:5:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5520, + "nodeType": "ParameterList", + "parameters": [], + "src": "320:2:17" + }, + "returnParameters": { + "id": 5523, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5522, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5524, + "src": "346:13:17", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5521, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "346:6:17", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "345:15:17" + }, + "scope": 5609, + "src": "306:55:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "b09f1266", + "id": 5529, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "_symbol", + "nameLocation": "375:7:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5525, + "nodeType": "ParameterList", + "parameters": [], + "src": "382:2:17" + }, + "returnParameters": { + "id": 5528, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5527, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5529, + "src": "408:13:17", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5526, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "408:6:17", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "407:15:17" + }, + "scope": 5609, + "src": "366:57:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "32424aa3", + "id": 5534, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "_decimals", + "nameLocation": "437:9:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5530, + "nodeType": "ParameterList", + "parameters": [], + "src": "446:2:17" + }, + "returnParameters": { + "id": 5533, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5532, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5534, + "src": "472:5:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 5531, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "472:5:17", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "471:7:17" + }, + "scope": 5609, + "src": "428:51:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 5535, + "nodeType": "StructuredDocumentation", + "src": "485:66:17", + "text": " @dev Returns the amount of tokens in existence." + }, + "functionSelector": "18160ddd", + "id": 5540, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "565:11:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5536, + "nodeType": "ParameterList", + "parameters": [], + "src": "576:2:17" + }, + "returnParameters": { + "id": 5539, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5538, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5540, + "src": "602:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5537, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "602:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "601:9:17" + }, + "scope": 5609, + "src": "556:55:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 5541, + "nodeType": "StructuredDocumentation", + "src": "617:72:17", + "text": " @dev Returns the amount of tokens owned by `account`." + }, + "functionSelector": "70a08231", + "id": 5548, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "703:9:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5544, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5543, + "mutability": "mutable", + "name": "account", + "nameLocation": "721:7:17", + "nodeType": "VariableDeclaration", + "scope": 5548, + "src": "713:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5542, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "713:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "712:17:17" + }, + "returnParameters": { + "id": 5547, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5546, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5548, + "src": "753:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5545, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "753:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "752:9:17" + }, + "scope": 5609, + "src": "694:68:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 5549, + "nodeType": "StructuredDocumentation", + "src": "768: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": 5558, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "991:8:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5554, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5551, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "1008:9:17", + "nodeType": "VariableDeclaration", + "scope": 5558, + "src": "1000:17:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5550, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1000:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5553, + "mutability": "mutable", + "name": "amount", + "nameLocation": "1027:6:17", + "nodeType": "VariableDeclaration", + "scope": 5558, + "src": "1019:14:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5552, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1019:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "999:35:17" + }, + "returnParameters": { + "id": 5557, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5556, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5558, + "src": "1053:4:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5555, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1053:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1052:6:17" + }, + "scope": 5609, + "src": "982:77:17", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 5559, + "nodeType": "StructuredDocumentation", + "src": "1065: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": 5568, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "1343:9:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5564, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5561, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1361:5:17", + "nodeType": "VariableDeclaration", + "scope": 5568, + "src": "1353:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5560, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1353:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5563, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1376:7:17", + "nodeType": "VariableDeclaration", + "scope": 5568, + "src": "1368:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5562, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1368:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1352:32:17" + }, + "returnParameters": { + "id": 5567, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5566, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5568, + "src": "1408:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5565, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1408:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1407:9:17" + }, + "scope": 5609, + "src": "1334:83:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 5569, + "nodeType": "StructuredDocumentation", + "src": "1423: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": 5578, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "2079:7:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5574, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5571, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2095:7:17", + "nodeType": "VariableDeclaration", + "scope": 5578, + "src": "2087:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5570, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2087:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5573, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2112:6:17", + "nodeType": "VariableDeclaration", + "scope": 5578, + "src": "2104:14:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5572, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2104:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2086:33:17" + }, + "returnParameters": { + "id": 5577, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5576, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5578, + "src": "2138:4:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5575, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2138:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2137:6:17" + }, + "scope": 5609, + "src": "2070:74:17", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 5579, + "nodeType": "StructuredDocumentation", + "src": "2150: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": 5590, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "2460:12:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5586, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5581, + "mutability": "mutable", + "name": "sender", + "nameLocation": "2481:6:17", + "nodeType": "VariableDeclaration", + "scope": 5590, + "src": "2473:14:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5580, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2473:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5583, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "2497:9:17", + "nodeType": "VariableDeclaration", + "scope": 5590, + "src": "2489:17:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5582, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2489:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5585, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2516:6:17", + "nodeType": "VariableDeclaration", + "scope": 5590, + "src": "2508:14:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5584, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2508:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2472:51:17" + }, + "returnParameters": { + "id": 5589, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5588, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5590, + "src": "2542:4:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5587, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2542:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2541:6:17" + }, + "scope": 5609, + "src": "2451:97:17", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": { + "id": 5591, + "nodeType": "StructuredDocumentation", + "src": "2554: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": 5599, + "name": "Transfer", + "nameLocation": "2723:8:17", + "nodeType": "EventDefinition", + "parameters": { + "id": 5598, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5593, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "2748:4:17", + "nodeType": "VariableDeclaration", + "scope": 5599, + "src": "2732:20:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5592, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2732:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5595, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "2770:2:17", + "nodeType": "VariableDeclaration", + "scope": 5599, + "src": "2754:18:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5594, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2754:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5597, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "2782:5:17", + "nodeType": "VariableDeclaration", + "scope": 5599, + "src": "2774:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5596, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2774:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2731:57:17" + }, + "src": "2717:72:17" + }, + { + "anonymous": false, + "documentation": { + "id": 5600, + "nodeType": "StructuredDocumentation", + "src": "2795: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": 5608, + "name": "Approval", + "nameLocation": "2954:8:17", + "nodeType": "EventDefinition", + "parameters": { + "id": 5607, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5602, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "2979:5:17", + "nodeType": "VariableDeclaration", + "scope": 5608, + "src": "2963:21:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5601, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2963:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5604, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nameLocation": "3002:7:17", + "nodeType": "VariableDeclaration", + "scope": 5608, + "src": "2986:23:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5603, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2986:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5606, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "3019:5:17", + "nodeType": "VariableDeclaration", + "scope": 5608, + "src": "3011:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5605, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3011:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2962:63:17" + }, + "src": "2948:78:17" + } + ], + "scope": 5610, + "src": "274:2754:17", + "usedErrors": [] + } + ], + "src": "32:2998:17" + }, + "id": 17 + }, + "contracts/ERC20/SafeERC20.sol": { + "ast": { + "absolutePath": "contracts/ERC20/SafeERC20.sol", + "exportedSymbols": { + "Address": [ + 11543 + ], + "Context": [ + 456 + ], + "IERC20": [ + 5514 + ], + "SafeERC20": [ + 5828 + ], + "SafeMath": [ + 6895 + ] + }, + "id": 5829, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5611, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:18" + }, + { + "absolutePath": "contracts/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 5612, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5829, + "sourceUnit": 5515, + "src": "59:22:18", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Math/SafeMath.sol", + "file": "../Math/SafeMath.sol", + "id": 5613, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5829, + "sourceUnit": 6896, + "src": "82:30:18", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Utils/Address.sol", + "file": "../Utils/Address.sol", + "id": 5614, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5829, + "sourceUnit": 11544, + "src": "113:30:18", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "SafeERC20", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 5615, + "nodeType": "StructuredDocumentation", + "src": "145:457:18", + "text": " @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc." + }, + "fullyImplemented": true, + "id": 5828, + "linearizedBaseContracts": [ + 5828 + ], + "name": "SafeERC20", + "nameLocation": "611:9:18", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 5618, + "libraryName": { + "id": 5616, + "name": "SafeMath", + "nodeType": "IdentifierPath", + "referencedDeclaration": 6895, + "src": "633:8:18" + }, + "nodeType": "UsingForDirective", + "src": "627:27:18", + "typeName": { + "id": 5617, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "646:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 5621, + "libraryName": { + "id": 5619, + "name": "Address", + "nodeType": "IdentifierPath", + "referencedDeclaration": 11543, + "src": "665:7:18" + }, + "nodeType": "UsingForDirective", + "src": "659:26:18", + "typeName": { + "id": 5620, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "677:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "body": { + "id": 5643, + "nodeType": "Block", + "src": "763:103:18", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 5632, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5624, + "src": "793:5:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 5635, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5624, + "src": "823:5:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "id": 5636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 5463, + "src": "823:14:18", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 5637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "823:23:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 5638, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5626, + "src": "848:2:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5639, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "852:5:18", + "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": 5633, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "800:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 5634, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "800:22:18", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 5640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "800:58:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5631, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5827, + "src": "773:19:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$5514_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 5641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "773:86:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5642, + "nodeType": "ExpressionStatement", + "src": "773:86:18" + } + ] + }, + "id": 5644, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransfer", + "nameLocation": "700:12:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5629, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5624, + "mutability": "mutable", + "name": "token", + "nameLocation": "720:5:18", + "nodeType": "VariableDeclaration", + "scope": 5644, + "src": "713:12:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5623, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5622, + "name": "IERC20", + "nodeType": "IdentifierPath", + "referencedDeclaration": 5514, + "src": "713:6:18" + }, + "referencedDeclaration": 5514, + "src": "713:6:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5626, + "mutability": "mutable", + "name": "to", + "nameLocation": "735:2:18", + "nodeType": "VariableDeclaration", + "scope": 5644, + "src": "727:10:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5625, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "727:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5628, + "mutability": "mutable", + "name": "value", + "nameLocation": "747:5:18", + "nodeType": "VariableDeclaration", + "scope": 5644, + "src": "739:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5627, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "739:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "712:41:18" + }, + "returnParameters": { + "id": 5630, + "nodeType": "ParameterList", + "parameters": [], + "src": "763:0:18" + }, + "scope": 5828, + "src": "691:175:18", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5669, + "nodeType": "Block", + "src": "962:113:18", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 5657, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5647, + "src": "992:5:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 5660, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5647, + "src": "1022:5:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "id": 5661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 5495, + "src": "1022:18:18", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 5662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "1022:27:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 5663, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5649, + "src": "1051:4:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5664, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5651, + "src": "1057:2:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5665, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5653, + "src": "1061:5:18", + "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": 5658, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "999:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 5659, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "999:22:18", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 5666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "999:68:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5656, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5827, + "src": "972:19:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$5514_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 5667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "972:96:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5668, + "nodeType": "ExpressionStatement", + "src": "972:96:18" + } + ] + }, + "id": 5670, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "881:16:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5654, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5647, + "mutability": "mutable", + "name": "token", + "nameLocation": "905:5:18", + "nodeType": "VariableDeclaration", + "scope": 5670, + "src": "898:12:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5646, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5645, + "name": "IERC20", + "nodeType": "IdentifierPath", + "referencedDeclaration": 5514, + "src": "898:6:18" + }, + "referencedDeclaration": 5514, + "src": "898:6:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5649, + "mutability": "mutable", + "name": "from", + "nameLocation": "920:4:18", + "nodeType": "VariableDeclaration", + "scope": 5670, + "src": "912:12:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5648, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "912:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5651, + "mutability": "mutable", + "name": "to", + "nameLocation": "934:2:18", + "nodeType": "VariableDeclaration", + "scope": 5670, + "src": "926:10:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5650, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "926:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5653, + "mutability": "mutable", + "name": "value", + "nameLocation": "946:5:18", + "nodeType": "VariableDeclaration", + "scope": 5670, + "src": "938:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5652, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "938:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "897:55:18" + }, + "returnParameters": { + "id": 5655, + "nodeType": "ParameterList", + "parameters": [], + "src": "962:0:18" + }, + "scope": 5828, + "src": "872:203:18", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5713, + "nodeType": "Block", + "src": "1411:537:18", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 5697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5682, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5678, + "src": "1700:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 5683, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1709:1:18", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1700:10:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 5685, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1699:12:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5695, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 5690, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1740:4:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$5828", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$5828", + "typeString": "library SafeERC20" + } + ], + "id": 5689, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1732:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5688, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1732:7:18", + "typeDescriptions": {} + } + }, + "id": 5691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1732:13:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5692, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5676, + "src": "1747:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 5686, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5674, + "src": "1716:5:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "id": 5687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 5473, + "src": "1716:15:18", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 5693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1716:39:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 5694, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1759:1:18", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1716:44:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 5696, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1715:46:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1699:62:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365", + "id": 5698, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1775:56:18", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25", + "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"" + }, + "value": "SafeERC20: approve from non-zero to non-zero allowance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25", + "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"" + } + ], + "id": 5681, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1691:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1691:150:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5700, + "nodeType": "ExpressionStatement", + "src": "1691:150:18" + }, + { + "expression": { + "arguments": [ + { + "id": 5702, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5674, + "src": "1871:5:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 5705, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5674, + "src": "1901:5:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "id": 5706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 5483, + "src": "1901:13:18", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 5707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "1901:22:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 5708, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5676, + "src": "1925:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5709, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5678, + "src": "1934:5:18", + "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": 5703, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1878:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 5704, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "1878:22:18", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 5710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1878:62:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5701, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5827, + "src": "1851:19:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$5514_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 5711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1851:90:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5712, + "nodeType": "ExpressionStatement", + "src": "1851:90:18" + } + ] + }, + "documentation": { + "id": 5671, + "nodeType": "StructuredDocumentation", + "src": "1081:249:18", + "text": " @dev Deprecated. This function has issues similar to the ones found in\n {IERC20-approve}, and its usage is discouraged.\n Whenever possible, use {safeIncreaseAllowance} and\n {safeDecreaseAllowance} instead." + }, + "id": 5714, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeApprove", + "nameLocation": "1344:11:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5679, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5674, + "mutability": "mutable", + "name": "token", + "nameLocation": "1363:5:18", + "nodeType": "VariableDeclaration", + "scope": 5714, + "src": "1356:12:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5673, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5672, + "name": "IERC20", + "nodeType": "IdentifierPath", + "referencedDeclaration": 5514, + "src": "1356:6:18" + }, + "referencedDeclaration": 5514, + "src": "1356:6:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5676, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1378:7:18", + "nodeType": "VariableDeclaration", + "scope": 5714, + "src": "1370:15:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5675, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1370:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5678, + "mutability": "mutable", + "name": "value", + "nameLocation": "1395:5:18", + "nodeType": "VariableDeclaration", + "scope": 5714, + "src": "1387:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5677, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1387:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1355:46:18" + }, + "returnParameters": { + "id": 5680, + "nodeType": "ParameterList", + "parameters": [], + "src": "1411:0:18" + }, + "scope": 5828, + "src": "1335:613:18", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5750, + "nodeType": "Block", + "src": "2040:197:18", + "statements": [ + { + "assignments": [ + 5725 + ], + "declarations": [ + { + "constant": false, + "id": 5725, + "mutability": "mutable", + "name": "newAllowance", + "nameLocation": "2058:12:18", + "nodeType": "VariableDeclaration", + "scope": 5750, + "src": "2050:20:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5724, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2050:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 5737, + "initialValue": { + "arguments": [ + { + "id": 5735, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5721, + "src": "2117:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5730, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2097:4:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$5828", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$5828", + "typeString": "library SafeERC20" + } + ], + "id": 5729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2089:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5728, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2089:7:18", + "typeDescriptions": {} + } + }, + "id": 5731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2089:13:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5732, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5719, + "src": "2104:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 5726, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5717, + "src": "2073:5:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "id": 5727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 5473, + "src": "2073:15:18", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 5733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2073:39:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 6728, + "src": "2073:43:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2073:50:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2050:73:18" + }, + { + "expression": { + "arguments": [ + { + "id": 5739, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5717, + "src": "2153:5:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 5742, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5717, + "src": "2183:5:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "id": 5743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 5483, + "src": "2183:13:18", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 5744, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "2183:22:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 5745, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5719, + "src": "2207:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5746, + "name": "newAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5725, + "src": "2216:12:18", + "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": 5740, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2160:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 5741, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "2160:22:18", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 5747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2160:69:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5738, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5827, + "src": "2133:19:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$5514_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 5748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2133:97:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5749, + "nodeType": "ExpressionStatement", + "src": "2133:97:18" + } + ] + }, + "id": 5751, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeIncreaseAllowance", + "nameLocation": "1963:21:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5722, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5717, + "mutability": "mutable", + "name": "token", + "nameLocation": "1992:5:18", + "nodeType": "VariableDeclaration", + "scope": 5751, + "src": "1985:12:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5716, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5715, + "name": "IERC20", + "nodeType": "IdentifierPath", + "referencedDeclaration": 5514, + "src": "1985:6:18" + }, + "referencedDeclaration": 5514, + "src": "1985:6:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5719, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2007:7:18", + "nodeType": "VariableDeclaration", + "scope": 5751, + "src": "1999:15:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5718, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1999:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5721, + "mutability": "mutable", + "name": "value", + "nameLocation": "2024:5:18", + "nodeType": "VariableDeclaration", + "scope": 5751, + "src": "2016:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5720, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2016:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1984:46:18" + }, + "returnParameters": { + "id": 5723, + "nodeType": "ParameterList", + "parameters": [], + "src": "2040:0:18" + }, + "scope": 5828, + "src": "1954:283:18", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5788, + "nodeType": "Block", + "src": "2329:242:18", + "statements": [ + { + "assignments": [ + 5762 + ], + "declarations": [ + { + "constant": false, + "id": 5762, + "mutability": "mutable", + "name": "newAllowance", + "nameLocation": "2347:12:18", + "nodeType": "VariableDeclaration", + "scope": 5788, + "src": "2339:20:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5761, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2339:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 5775, + "initialValue": { + "arguments": [ + { + "id": 5772, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5758, + "src": "2406:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", + "id": 5773, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2413:43:18", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a", + "typeString": "literal_string \"SafeERC20: decreased allowance below zero\"" + }, + "value": "SafeERC20: decreased allowance below zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a", + "typeString": "literal_string \"SafeERC20: decreased allowance below zero\"" + } + ], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5767, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2386:4:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$5828", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$5828", + "typeString": "library SafeERC20" + } + ], + "id": 5766, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2378:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5765, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2378:7:18", + "typeDescriptions": {} + } + }, + "id": 5768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2378:13:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5769, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5756, + "src": "2393:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 5763, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5754, + "src": "2362:5:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "id": 5764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 5473, + "src": "2362:15:18", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 5770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2362:39:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6773, + "src": "2362:43:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 5774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2362:95:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2339:118:18" + }, + { + "expression": { + "arguments": [ + { + "id": 5777, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5754, + "src": "2487:5:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 5780, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5754, + "src": "2517:5:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "id": 5781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 5483, + "src": "2517:13:18", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 5782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "2517:22:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 5783, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5756, + "src": "2541:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5784, + "name": "newAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5762, + "src": "2550:12:18", + "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": 5778, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2494:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 5779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "2494:22:18", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 5785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2494:69:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5776, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5827, + "src": "2467:19:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$5514_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 5786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2467:97:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5787, + "nodeType": "ExpressionStatement", + "src": "2467:97:18" + } + ] + }, + "id": 5789, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeDecreaseAllowance", + "nameLocation": "2252:21:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5759, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5754, + "mutability": "mutable", + "name": "token", + "nameLocation": "2281:5:18", + "nodeType": "VariableDeclaration", + "scope": 5789, + "src": "2274:12:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5753, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5752, + "name": "IERC20", + "nodeType": "IdentifierPath", + "referencedDeclaration": 5514, + "src": "2274:6:18" + }, + "referencedDeclaration": 5514, + "src": "2274:6:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5756, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2296:7:18", + "nodeType": "VariableDeclaration", + "scope": 5789, + "src": "2288:15:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5755, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2288:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5758, + "mutability": "mutable", + "name": "value", + "nameLocation": "2313:5:18", + "nodeType": "VariableDeclaration", + "scope": 5789, + "src": "2305:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5757, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2305:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2273:46:18" + }, + "returnParameters": { + "id": 5760, + "nodeType": "ParameterList", + "parameters": [], + "src": "2329:0:18" + }, + "scope": 5828, + "src": "2243:328:18", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5826, + "nodeType": "Block", + "src": "3024:681:18", + "statements": [ + { + "assignments": [ + 5799 + ], + "declarations": [ + { + "constant": false, + "id": 5799, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "3386:10:18", + "nodeType": "VariableDeclaration", + "scope": 5826, + "src": "3373:23:18", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5798, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3373:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 5808, + "initialValue": { + "arguments": [ + { + "id": 5805, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5795, + "src": "3427:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564", + "id": 5806, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3433:34:18", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b", + "typeString": "literal_string \"SafeERC20: low-level call failed\"" + }, + "value": "SafeERC20: low-level call failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b", + "typeString": "literal_string \"SafeERC20: low-level call failed\"" + } + ], + "expression": { + "arguments": [ + { + "id": 5802, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5793, + "src": "3407:5:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + ], + "id": 5801, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3399:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5800, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3399:7:18", + "typeDescriptions": {} + } + }, + "id": 5803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3399:14:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "functionCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 11338, + "src": "3399:27: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": 5807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3399:69:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3373:95:18" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 5809, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5799, + "src": "3482:10:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5810, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3482:17:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 5811, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3502:1:18", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3482:21:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5825, + "nodeType": "IfStatement", + "src": "3478:221:18", + "trueBody": { + "id": 5824, + "nodeType": "Block", + "src": "3505:194:18", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5816, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5799, + "src": "3622:10:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 5818, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3635:4:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + }, + "typeName": { + "id": 5817, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3635:4:18", + "typeDescriptions": {} + } + } + ], + "id": 5819, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3634:6:18", + "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": 5814, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3611:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 5815, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "3611:10:18", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 5820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3611:30:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564", + "id": 5821, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3643:44:18", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd", + "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\"" + }, + "value": "SafeERC20: ERC20 operation did not succeed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd", + "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\"" + } + ], + "id": 5813, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3603:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3603:85:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5823, + "nodeType": "ExpressionStatement", + "src": "3603:85:18" + } + ] + } + } + ] + }, + "documentation": { + "id": 5790, + "nodeType": "StructuredDocumentation", + "src": "2577:372:18", + "text": " @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants)." + }, + "id": 5827, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callOptionalReturn", + "nameLocation": "2963:19:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5796, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5793, + "mutability": "mutable", + "name": "token", + "nameLocation": "2990:5:18", + "nodeType": "VariableDeclaration", + "scope": 5827, + "src": "2983:12:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5792, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5791, + "name": "IERC20", + "nodeType": "IdentifierPath", + "referencedDeclaration": 5514, + "src": "2983:6:18" + }, + "referencedDeclaration": 5514, + "src": "2983:6:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5795, + "mutability": "mutable", + "name": "data", + "nameLocation": "3010:4:18", + "nodeType": "VariableDeclaration", + "scope": 5827, + "src": "2997:17:18", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5794, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2997:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2982:33:18" + }, + "returnParameters": { + "id": 5797, + "nodeType": "ParameterList", + "parameters": [], + "src": "3024:0:18" + }, + "scope": 5828, + "src": "2954:751:18", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 5829, + "src": "603:3104:18", + "usedErrors": [] + } + ], + "src": "32:3675:18" + }, + "id": 18 + }, + "contracts/ERC20/draft-ERC20Permit.sol": { + "ast": { + "absolutePath": "contracts/ERC20/draft-ERC20Permit.sol", + "exportedSymbols": { + "Address": [ + 11543 + ], + "Context": [ + 456 + ], + "Counters": [ + 109 + ], + "ECDSA": [ + 292 + ], + "EIP712": [ + 430 + ], + "ERC20Custom": [ + 5434 + ], + "ERC20Permit": [ + 5997 + ], + "IERC20": [ + 5514 + ], + "IERC20Permit": [ + 35 + ], + "SafeMath": [ + 6895 + ] + }, + "id": 5998, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5830, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:19" + }, + { + "absolutePath": "contracts/ERC20/ERC20Custom.sol", + "file": "./ERC20Custom.sol", + "id": 5831, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5998, + "sourceUnit": 5435, + "src": "58:27:19", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "file": "@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "id": 5832, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5998, + "sourceUnit": 36, + "src": "86:79:19", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol", + "file": "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol", + "id": 5833, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5998, + "sourceUnit": 431, + "src": "166:69:19", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", + "file": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", + "id": 5834, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5998, + "sourceUnit": 293, + "src": "236:62:19", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Counters.sol", + "file": "@openzeppelin/contracts/utils/Counters.sol", + "id": 5835, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5998, + "sourceUnit": 110, + "src": "299:52:19", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 5837, + "name": "ERC20Custom", + "nodeType": "IdentifierPath", + "referencedDeclaration": 5434, + "src": "904:11:19" + }, + "id": 5838, + "nodeType": "InheritanceSpecifier", + "src": "904:11:19" + }, + { + "baseName": { + "id": 5839, + "name": "IERC20Permit", + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "917:12:19" + }, + "id": 5840, + "nodeType": "InheritanceSpecifier", + "src": "917:12:19" + }, + { + "baseName": { + "id": 5841, + "name": "EIP712", + "nodeType": "IdentifierPath", + "referencedDeclaration": 430, + "src": "931:6:19" + }, + "id": 5842, + "nodeType": "InheritanceSpecifier", + "src": "931:6:19" + } + ], + "canonicalName": "ERC20Permit", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 5836, + "nodeType": "StructuredDocumentation", + "src": "353:517:19", + "text": " @dev Implementation 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.\n _Available since v3.4._" + }, + "fullyImplemented": true, + "id": 5997, + "linearizedBaseContracts": [ + 5997, + 430, + 35, + 5434, + 5514, + 456 + ], + "name": "ERC20Permit", + "nameLocation": "889:11:19", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 5846, + "libraryName": { + "id": 5843, + "name": "Counters", + "nodeType": "IdentifierPath", + "referencedDeclaration": 109, + "src": "950:8:19" + }, + "nodeType": "UsingForDirective", + "src": "944:36:19", + "typeName": { + "id": 5845, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5844, + "name": "Counters.Counter", + "nodeType": "IdentifierPath", + "referencedDeclaration": 41, + "src": "963:16:19" + }, + "referencedDeclaration": 41, + "src": "963:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$41_storage_ptr", + "typeString": "struct Counters.Counter" + } + } + }, + { + "constant": false, + "id": 5851, + "mutability": "mutable", + "name": "_nonces", + "nameLocation": "1031:7:19", + "nodeType": "VariableDeclaration", + "scope": 5997, + "src": "986:52:19", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Counter_$41_storage_$", + "typeString": "mapping(address => struct Counters.Counter)" + }, + "typeName": { + "id": 5850, + "keyType": { + "id": 5847, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "994:7:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "986:36:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Counter_$41_storage_$", + "typeString": "mapping(address => struct Counters.Counter)" + }, + "valueType": { + "id": 5849, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5848, + "name": "Counters.Counter", + "nodeType": "IdentifierPath", + "referencedDeclaration": 41, + "src": "1005:16:19" + }, + "referencedDeclaration": 41, + "src": "1005:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$41_storage_ptr", + "typeString": "struct Counters.Counter" + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 5856, + "mutability": "immutable", + "name": "_PERMIT_TYPEHASH", + "nameLocation": "1123:16:19", + "nodeType": "VariableDeclaration", + "scope": 5997, + "src": "1097:140:19", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5852, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1097:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529", + "id": 5854, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1152:84:19", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9", + "typeString": "literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\"" + }, + "value": "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9", + "typeString": "literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\"" + } + ], + "id": 5853, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1142:9:19", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 5855, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1142:95:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 5866, + "nodeType": "Block", + "src": "1519:2:19", + "statements": [] + }, + "documentation": { + "id": 5857, + "nodeType": "StructuredDocumentation", + "src": "1244:220:19", + "text": " @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\"1\"`.\n It's a good idea to use the same `name` that is defined as the ERC20 token name." + }, + "id": 5867, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 5862, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5859, + "src": "1508:4:19", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "hexValue": "31", + "id": 5863, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1514:3:19", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + }, + "value": "1" + } + ], + "id": 5864, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 5861, + "name": "EIP712", + "nodeType": "IdentifierPath", + "referencedDeclaration": 430, + "src": "1501:6:19" + }, + "nodeType": "ModifierInvocation", + "src": "1501:17:19" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5860, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5859, + "mutability": "mutable", + "name": "name", + "nameLocation": "1495:4:19", + "nodeType": "VariableDeclaration", + "scope": 5867, + "src": "1481:18:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5858, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1481:6:19", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1480:20:19" + }, + "returnParameters": { + "id": 5865, + "nodeType": "ParameterList", + "parameters": [], + "src": "1519:0:19" + }, + "scope": 5997, + "src": "1469:52:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 20 + ], + "body": { + "id": 5939, + "nodeType": "Block", + "src": "1780:428:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 5887, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "1798:5:19", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 5888, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "1798:15:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 5889, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5876, + "src": "1817:8:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1798:27:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332305065726d69743a206578706972656420646561646c696e65", + "id": 5891, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1827:31:19", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e89525a63fb9c966b61cf8f5305156de8420bc773a2b60828a2f32c3c5797bd", + "typeString": "literal_string \"ERC20Permit: expired deadline\"" + }, + "value": "ERC20Permit: expired deadline" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e89525a63fb9c966b61cf8f5305156de8420bc773a2b60828a2f32c3c5797bd", + "typeString": "literal_string \"ERC20Permit: expired deadline\"" + } + ], + "id": 5886, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1790:7:19", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1790:69:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5893, + "nodeType": "ExpressionStatement", + "src": "1790:69:19" + }, + { + "assignments": [ + 5895 + ], + "declarations": [ + { + "constant": false, + "id": 5895, + "mutability": "mutable", + "name": "structHash", + "nameLocation": "1878:10:19", + "nodeType": "VariableDeclaration", + "scope": 5939, + "src": "1870:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5894, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1870:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 5909, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 5899, + "name": "_PERMIT_TYPEHASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5856, + "src": "1912:16:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 5900, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5870, + "src": "1930:5:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5901, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5872, + "src": "1937:7:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5902, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5874, + "src": "1946:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 5904, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5870, + "src": "1963:5:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5903, + "name": "_useNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5996, + "src": "1953:9:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) returns (uint256)" + } + }, + "id": 5905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1953:16:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5906, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5876, + "src": "1971:8:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5897, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1901:3:19", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 5898, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "1901:10:19", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 5907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1901:79:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5896, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1891:9:19", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 5908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1891:90:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1870:111:19" + }, + { + "assignments": [ + 5911 + ], + "declarations": [ + { + "constant": false, + "id": 5911, + "mutability": "mutable", + "name": "hash", + "nameLocation": "2000:4:19", + "nodeType": "VariableDeclaration", + "scope": 5939, + "src": "1992:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5910, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1992:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 5915, + "initialValue": { + "arguments": [ + { + "id": 5913, + "name": "structHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5895, + "src": "2024:10:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 5912, + "name": "_hashTypedDataV4", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 429, + "src": "2007:16:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view returns (bytes32)" + } + }, + "id": 5914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2007:28:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1992:43:19" + }, + { + "assignments": [ + 5917 + ], + "declarations": [ + { + "constant": false, + "id": 5917, + "mutability": "mutable", + "name": "signer", + "nameLocation": "2054:6:19", + "nodeType": "VariableDeclaration", + "scope": 5939, + "src": "2046:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5916, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2046:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 5925, + "initialValue": { + "arguments": [ + { + "id": 5920, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5911, + "src": "2077:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 5921, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5878, + "src": "2083:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 5922, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5880, + "src": "2086:1:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 5923, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5882, + "src": "2089:1:19", + "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" + } + ], + "expression": { + "id": 5918, + "name": "ECDSA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 292, + "src": "2063:5:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ECDSA_$292_$", + "typeString": "type(library ECDSA)" + } + }, + "id": 5919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "recover", + "nodeType": "MemberAccess", + "referencedDeclaration": 254, + "src": "2063:13:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 5924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2063:28:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2046:45:19" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5927, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5917, + "src": "2109:6:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 5928, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5870, + "src": "2119:5:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2109:15:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332305065726d69743a20696e76616c6964207369676e6174757265", + "id": 5930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2126:32:19", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_94ca1ab58dfda790a1782ffbb0c0a140ec51d4148dbeecc6c39e37b25ff4b124", + "typeString": "literal_string \"ERC20Permit: invalid signature\"" + }, + "value": "ERC20Permit: invalid signature" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_94ca1ab58dfda790a1782ffbb0c0a140ec51d4148dbeecc6c39e37b25ff4b124", + "typeString": "literal_string \"ERC20Permit: invalid signature\"" + } + ], + "id": 5926, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2101:7:19", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2101:58:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5932, + "nodeType": "ExpressionStatement", + "src": "2101:58:19" + }, + { + "expression": { + "arguments": [ + { + "id": 5934, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5870, + "src": "2179:5:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5935, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5872, + "src": "2186:7:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5936, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5874, + "src": "2195:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5933, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "2170:8:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2170:31:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5938, + "nodeType": "ExpressionStatement", + "src": "2170:31:19" + } + ] + }, + "documentation": { + "id": 5868, + "nodeType": "StructuredDocumentation", + "src": "1527:50:19", + "text": " @dev See {IERC20Permit-permit}." + }, + "functionSelector": "d505accf", + "id": 5940, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "permit", + "nameLocation": "1591:6:19", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 5884, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1771:8:19" + }, + "parameters": { + "id": 5883, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5870, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1615:5:19", + "nodeType": "VariableDeclaration", + "scope": 5940, + "src": "1607:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5869, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1607:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5872, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1638:7:19", + "nodeType": "VariableDeclaration", + "scope": 5940, + "src": "1630:15:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5871, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1630:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5874, + "mutability": "mutable", + "name": "value", + "nameLocation": "1663:5:19", + "nodeType": "VariableDeclaration", + "scope": 5940, + "src": "1655:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5873, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1655:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5876, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "1686:8:19", + "nodeType": "VariableDeclaration", + "scope": 5940, + "src": "1678:16:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5875, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1678:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5878, + "mutability": "mutable", + "name": "v", + "nameLocation": "1710:1:19", + "nodeType": "VariableDeclaration", + "scope": 5940, + "src": "1704:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 5877, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1704:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5880, + "mutability": "mutable", + "name": "r", + "nameLocation": "1729:1:19", + "nodeType": "VariableDeclaration", + "scope": 5940, + "src": "1721:9:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5879, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1721:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5882, + "mutability": "mutable", + "name": "s", + "nameLocation": "1748:1:19", + "nodeType": "VariableDeclaration", + "scope": 5940, + "src": "1740:9:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5881, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1740:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1597:158:19" + }, + "returnParameters": { + "id": 5885, + "nodeType": "ParameterList", + "parameters": [], + "src": "1780:0:19" + }, + "scope": 5997, + "src": "1582:626:19", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 28 + ], + "body": { + "id": 5955, + "nodeType": "Block", + "src": "2347:48:19", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "baseExpression": { + "id": 5949, + "name": "_nonces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5851, + "src": "2364:7:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Counter_$41_storage_$", + "typeString": "mapping(address => struct Counters.Counter storage ref)" + } + }, + "id": 5951, + "indexExpression": { + "id": 5950, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5943, + "src": "2372:5:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2364:14:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$41_storage", + "typeString": "struct Counters.Counter storage ref" + } + }, + "id": 5952, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "current", + "nodeType": "MemberAccess", + "referencedDeclaration": 53, + "src": "2364:22:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$41_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$41_storage_ptr_$", + "typeString": "function (struct Counters.Counter storage pointer) view returns (uint256)" + } + }, + "id": 5953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2364:24:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5948, + "id": 5954, + "nodeType": "Return", + "src": "2357:31:19" + } + ] + }, + "documentation": { + "id": 5941, + "nodeType": "StructuredDocumentation", + "src": "2214:50:19", + "text": " @dev See {IERC20Permit-nonces}." + }, + "functionSelector": "7ecebe00", + "id": 5956, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "nonces", + "nameLocation": "2278:6:19", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 5945, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2320:8:19" + }, + "parameters": { + "id": 5944, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5943, + "mutability": "mutable", + "name": "owner", + "nameLocation": "2293:5:19", + "nodeType": "VariableDeclaration", + "scope": 5956, + "src": "2285:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5942, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2285:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2284:15:19" + }, + "returnParameters": { + "id": 5948, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5947, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5956, + "src": "2338:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5946, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2338:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2337:9:19" + }, + "scope": 5997, + "src": "2269:126:19", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 34 + ], + "body": { + "id": 5966, + "nodeType": "Block", + "src": "2588:44:19", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5963, + "name": "_domainSeparatorV4", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 386, + "src": "2605:18:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$", + "typeString": "function () view returns (bytes32)" + } + }, + "id": 5964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2605:20:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 5962, + "id": 5965, + "nodeType": "Return", + "src": "2598:27:19" + } + ] + }, + "documentation": { + "id": 5957, + "nodeType": "StructuredDocumentation", + "src": "2401:60:19", + "text": " @dev See {IERC20Permit-DOMAIN_SEPARATOR}." + }, + "functionSelector": "3644e515", + "id": 5967, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "DOMAIN_SEPARATOR", + "nameLocation": "2528:16:19", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 5959, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2561:8:19" + }, + "parameters": { + "id": 5958, + "nodeType": "ParameterList", + "parameters": [], + "src": "2544:2:19" + }, + "returnParameters": { + "id": 5962, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5961, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5967, + "src": "2579:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5960, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2579:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2578:9:19" + }, + "scope": 5997, + "src": "2519:113:19", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 5995, + "nodeType": "Block", + "src": "2840:126:19", + "statements": [ + { + "assignments": [ + 5979 + ], + "declarations": [ + { + "constant": false, + "id": 5979, + "mutability": "mutable", + "name": "nonce", + "nameLocation": "2875:5:19", + "nodeType": "VariableDeclaration", + "scope": 5995, + "src": "2850:30:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$41_storage_ptr", + "typeString": "struct Counters.Counter" + }, + "typeName": { + "id": 5978, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5977, + "name": "Counters.Counter", + "nodeType": "IdentifierPath", + "referencedDeclaration": 41, + "src": "2850:16:19" + }, + "referencedDeclaration": 41, + "src": "2850:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$41_storage_ptr", + "typeString": "struct Counters.Counter" + } + }, + "visibility": "internal" + } + ], + "id": 5983, + "initialValue": { + "baseExpression": { + "id": 5980, + "name": "_nonces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5851, + "src": "2883:7:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Counter_$41_storage_$", + "typeString": "mapping(address => struct Counters.Counter storage ref)" + } + }, + "id": 5982, + "indexExpression": { + "id": 5981, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5970, + "src": "2891:5:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2883:14:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$41_storage", + "typeString": "struct Counters.Counter storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2850:47:19" + }, + { + "expression": { + "id": 5988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5984, + "name": "current", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5973, + "src": "2907:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 5985, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5979, + "src": "2917:5:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$41_storage_ptr", + "typeString": "struct Counters.Counter storage pointer" + } + }, + "id": 5986, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "current", + "nodeType": "MemberAccess", + "referencedDeclaration": 53, + "src": "2917:13:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$41_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$41_storage_ptr_$", + "typeString": "function (struct Counters.Counter storage pointer) view returns (uint256)" + } + }, + "id": 5987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2917:15:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2907:25:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5989, + "nodeType": "ExpressionStatement", + "src": "2907:25:19" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 5990, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5979, + "src": "2942:5:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$41_storage_ptr", + "typeString": "struct Counters.Counter storage pointer" + } + }, + "id": 5992, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "increment", + "nodeType": "MemberAccess", + "referencedDeclaration": 67, + "src": "2942:15:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$41_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$41_storage_ptr_$", + "typeString": "function (struct Counters.Counter storage pointer)" + } + }, + "id": 5993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2942:17:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5994, + "nodeType": "ExpressionStatement", + "src": "2942:17:19" + } + ] + }, + "documentation": { + "id": 5968, + "nodeType": "StructuredDocumentation", + "src": "2638:120:19", + "text": " @dev \"Consume a nonce\": return the current value and increment.\n _Available since v4.1._" + }, + "id": 5996, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_useNonce", + "nameLocation": "2772:9:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5971, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5970, + "mutability": "mutable", + "name": "owner", + "nameLocation": "2790:5:19", + "nodeType": "VariableDeclaration", + "scope": 5996, + "src": "2782:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5969, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2782:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2781:15:19" + }, + "returnParameters": { + "id": 5974, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5973, + "mutability": "mutable", + "name": "current", + "nameLocation": "2831:7:19", + "nodeType": "VariableDeclaration", + "scope": 5996, + "src": "2823:15:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5972, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2823:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2822:17:19" + }, + "scope": 5997, + "src": "2763:203:19", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 5998, + "src": "871:2097:19", + "usedErrors": [] + } + ], + "src": "33:2936:19" + }, + "id": 19 + }, + "contracts/Governance/AccessControl.sol": { + "ast": { + "absolutePath": "contracts/Governance/AccessControl.sol", + "exportedSymbols": { + "AccessControl": [ + 6283 + ], + "Address": [ + 11543 + ], + "Context": [ + 456 + ], + "EnumerableSet": [ + 11955 + ] + }, + "id": 6284, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5999, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "33:25:20" + }, + { + "absolutePath": "contracts/Utils/EnumerableSet.sol", + "file": "../Utils/EnumerableSet.sol", + "id": 6000, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6284, + "sourceUnit": 11956, + "src": "60:36:20", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Utils/Address.sol", + "file": "../Utils/Address.sol", + "id": 6001, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6284, + "sourceUnit": 11544, + "src": "97:30:20", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Common/Context.sol", + "file": "../Common/Context.sol", + "id": 6002, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6284, + "sourceUnit": 457, + "src": "128:31:20", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 6004, + "name": "Context", + "nodeType": "IdentifierPath", + "referencedDeclaration": 456, + "src": "1473:7:20" + }, + "id": 6005, + "nodeType": "InheritanceSpecifier", + "src": "1473:7:20" + } + ], + "canonicalName": "AccessControl", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 6003, + "nodeType": "StructuredDocumentation", + "src": "161:1276:20", + "text": " @dev Contract module that allows children to implement role-based access\n control mechanisms.\n Roles are referred to by their `bytes32` identifier. These should be exposed\n in the external API and be unique. The best way to achieve this is by\n using `public constant` hash digests:\n ```\n bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n ```\n Roles can be used to represent a set of permissions. To restrict access to a\n function call, use {hasRole}:\n ```\n function foo() public {\n require(hasRole(MY_ROLE, msg.sender));\n ...\n }\n ```\n Roles can be granted and revoked dynamically via the {grantRole} and\n {revokeRole} functions. Each role has an associated admin role, and only\n accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n that only accounts with this role will be able to grant or revoke other\n roles. More complex role relationships can be created by using\n {_setRoleAdmin}.\n WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n grant and revoke this role. Extra precautions should be taken to secure\n accounts that have been granted it." + }, + "fullyImplemented": true, + "id": 6283, + "linearizedBaseContracts": [ + 6283, + 456 + ], + "name": "AccessControl", + "nameLocation": "1456:13:20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 6009, + "libraryName": { + "id": 6006, + "name": "EnumerableSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 11955, + "src": "1493:13:20" + }, + "nodeType": "UsingForDirective", + "src": "1487:49:20", + "typeName": { + "id": 6008, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6007, + "name": "EnumerableSet.AddressSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 11740, + "src": "1511:24:20" + }, + "referencedDeclaration": 11740, + "src": "1511:24:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11740_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + } + }, + { + "id": 6012, + "libraryName": { + "id": 6010, + "name": "Address", + "nodeType": "IdentifierPath", + "referencedDeclaration": 11543, + "src": "1547:7:20" + }, + "nodeType": "UsingForDirective", + "src": "1541:26:20", + "typeName": { + "id": 6011, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1559:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "canonicalName": "AccessControl.RoleData", + "id": 6018, + "members": [ + { + "constant": false, + "id": 6015, + "mutability": "mutable", + "name": "members", + "nameLocation": "1624:7:20", + "nodeType": "VariableDeclaration", + "scope": 6018, + "src": "1599:32:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11740_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 6014, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6013, + "name": "EnumerableSet.AddressSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 11740, + "src": "1599:24:20" + }, + "referencedDeclaration": 11740, + "src": "1599:24:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11740_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6017, + "mutability": "mutable", + "name": "adminRole", + "nameLocation": "1649:9:20", + "nodeType": "VariableDeclaration", + "scope": 6018, + "src": "1641:17:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6016, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1641:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "name": "RoleData", + "nameLocation": "1580:8:20", + "nodeType": "StructDefinition", + "scope": 6283, + "src": "1573:92:20", + "visibility": "public" + }, + { + "constant": false, + "id": 6023, + "mutability": "mutable", + "name": "_roles", + "nameLocation": "1709:6:20", + "nodeType": "VariableDeclaration", + "scope": 6283, + "src": "1671:44:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$6018_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData)" + }, + "typeName": { + "id": 6022, + "keyType": { + "id": 6019, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1680:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1671:29:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$6018_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData)" + }, + "valueType": { + "id": 6021, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6020, + "name": "RoleData", + "nodeType": "IdentifierPath", + "referencedDeclaration": 6018, + "src": "1691:8:20" + }, + "referencedDeclaration": 6018, + "src": "1691:8:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$6018_storage_ptr", + "typeString": "struct AccessControl.RoleData" + } + } + }, + "visibility": "private" + }, + { + "constant": true, + "functionSelector": "a217fddf", + "id": 6026, + "mutability": "constant", + "name": "DEFAULT_ADMIN_ROLE", + "nameLocation": "1746:18:20", + "nodeType": "VariableDeclaration", + "scope": 6283, + "src": "1722:49:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6024, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1722:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "30783030", + "id": 6025, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1767:4:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x00" + }, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": { + "id": 6027, + "nodeType": "StructuredDocumentation", + "src": "1848:292:20", + "text": " @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n {RoleAdminChanged} not being emitted signaling this.\n _Available since v3.1._" + }, + "id": 6035, + "name": "RoleAdminChanged", + "nameLocation": "2151:16:20", + "nodeType": "EventDefinition", + "parameters": { + "id": 6034, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6029, + "indexed": true, + "mutability": "mutable", + "name": "role", + "nameLocation": "2184:4:20", + "nodeType": "VariableDeclaration", + "scope": 6035, + "src": "2168:20:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6028, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2168:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6031, + "indexed": true, + "mutability": "mutable", + "name": "previousAdminRole", + "nameLocation": "2206:17:20", + "nodeType": "VariableDeclaration", + "scope": 6035, + "src": "2190:33:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6030, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2190:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6033, + "indexed": true, + "mutability": "mutable", + "name": "newAdminRole", + "nameLocation": "2241:12:20", + "nodeType": "VariableDeclaration", + "scope": 6035, + "src": "2225:28:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6032, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2225:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2167:87:20" + }, + "src": "2145:110:20" + }, + { + "anonymous": false, + "documentation": { + "id": 6036, + "nodeType": "StructuredDocumentation", + "src": "2261:198:20", + "text": " @dev Emitted when `account` is granted `role`.\n `sender` is the account that originated the contract call, an admin role\n bearer except when using {_setupRole}." + }, + "id": 6044, + "name": "RoleGranted", + "nameLocation": "2470:11:20", + "nodeType": "EventDefinition", + "parameters": { + "id": 6043, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6038, + "indexed": true, + "mutability": "mutable", + "name": "role", + "nameLocation": "2498:4:20", + "nodeType": "VariableDeclaration", + "scope": 6044, + "src": "2482:20:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6037, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2482:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6040, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nameLocation": "2520:7:20", + "nodeType": "VariableDeclaration", + "scope": 6044, + "src": "2504:23:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6039, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2504:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6042, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "2545:6:20", + "nodeType": "VariableDeclaration", + "scope": 6044, + "src": "2529:22:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6041, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2529:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2481:71:20" + }, + "src": "2464:89:20" + }, + { + "anonymous": false, + "documentation": { + "id": 6045, + "nodeType": "StructuredDocumentation", + "src": "2559:275:20", + "text": " @dev Emitted when `account` is revoked `role`.\n `sender` is the account that originated the contract call:\n - if using `revokeRole`, it is the admin role bearer\n - if using `renounceRole`, it is the role bearer (i.e. `account`)" + }, + "id": 6053, + "name": "RoleRevoked", + "nameLocation": "2845:11:20", + "nodeType": "EventDefinition", + "parameters": { + "id": 6052, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6047, + "indexed": true, + "mutability": "mutable", + "name": "role", + "nameLocation": "2873:4:20", + "nodeType": "VariableDeclaration", + "scope": 6053, + "src": "2857:20:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6046, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2857:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6049, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nameLocation": "2895:7:20", + "nodeType": "VariableDeclaration", + "scope": 6053, + "src": "2879:23:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6048, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2879:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6051, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "2920:6:20", + "nodeType": "VariableDeclaration", + "scope": 6053, + "src": "2904:22:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6050, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2904:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2856:71:20" + }, + "src": "2839:89:20" + }, + { + "body": { + "id": 6071, + "nodeType": "Block", + "src": "3090:62:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 6068, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6058, + "src": "3137:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "expression": { + "baseExpression": { + "id": 6063, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6023, + "src": "3107:6:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$6018_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 6065, + "indexExpression": { + "id": 6064, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6056, + "src": "3114:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3107:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$6018_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 6066, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "members", + "nodeType": "MemberAccess", + "referencedDeclaration": 6015, + "src": "3107:20:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11740_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 6067, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 11812, + "src": "3107:29:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$11740_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$11740_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)" + } + }, + "id": 6069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3107:38:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 6062, + "id": 6070, + "nodeType": "Return", + "src": "3100:45:20" + } + ] + }, + "documentation": { + "id": 6054, + "nodeType": "StructuredDocumentation", + "src": "2934:76:20", + "text": " @dev Returns `true` if `account` has been granted `role`." + }, + "functionSelector": "91d14854", + "id": 6072, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasRole", + "nameLocation": "3024:7:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6059, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6056, + "mutability": "mutable", + "name": "role", + "nameLocation": "3040:4:20", + "nodeType": "VariableDeclaration", + "scope": 6072, + "src": "3032:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6055, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3032:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6058, + "mutability": "mutable", + "name": "account", + "nameLocation": "3054:7:20", + "nodeType": "VariableDeclaration", + "scope": 6072, + "src": "3046:15:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6057, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3046:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3031:31:20" + }, + "returnParameters": { + "id": 6062, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6061, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6072, + "src": "3084:4:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6060, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3084:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3083:6:20" + }, + "scope": 6283, + "src": "3015:137:20", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 6087, + "nodeType": "Block", + "src": "3392:53:20", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "baseExpression": { + "id": 6080, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6023, + "src": "3409:6:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$6018_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 6082, + "indexExpression": { + "id": 6081, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6075, + "src": "3416:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3409:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$6018_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 6083, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "members", + "nodeType": "MemberAccess", + "referencedDeclaration": 6015, + "src": "3409:20:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11740_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 6084, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": 11827, + "src": "3409:27:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$11740_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$11740_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)" + } + }, + "id": 6085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3409:29:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6079, + "id": 6086, + "nodeType": "Return", + "src": "3402:36:20" + } + ] + }, + "documentation": { + "id": 6073, + "nodeType": "StructuredDocumentation", + "src": "3158:157:20", + "text": " @dev Returns the number of accounts that have `role`. Can be used\n together with {getRoleMember} to enumerate all bearers of a role." + }, + "functionSelector": "ca15c873", + "id": 6088, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoleMemberCount", + "nameLocation": "3329:18:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6076, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6075, + "mutability": "mutable", + "name": "role", + "nameLocation": "3356:4:20", + "nodeType": "VariableDeclaration", + "scope": 6088, + "src": "3348:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6074, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3348:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3347:14:20" + }, + "returnParameters": { + "id": 6079, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6078, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6088, + "src": "3383:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6077, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3383:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3382:9:20" + }, + "scope": 6283, + "src": "3320:125:20", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 6106, + "nodeType": "Block", + "src": "4112:54:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 6103, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6093, + "src": "4153:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "expression": { + "baseExpression": { + "id": 6098, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6023, + "src": "4129:6:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$6018_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 6100, + "indexExpression": { + "id": 6099, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6091, + "src": "4136:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4129:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$6018_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 6101, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "members", + "nodeType": "MemberAccess", + "referencedDeclaration": 6015, + "src": "4129:20:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11740_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 6102, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "at", + "nodeType": "MemberAccess", + "referencedDeclaration": 11851, + "src": "4129:23:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$11740_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$11740_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)" + } + }, + "id": 6104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4129:30:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 6097, + "id": 6105, + "nodeType": "Return", + "src": "4122:37:20" + } + ] + }, + "documentation": { + "id": 6089, + "nodeType": "StructuredDocumentation", + "src": "3451:574:20", + "text": " @dev Returns one of the accounts that have `role`. `index` must be a\n value between 0 and {getRoleMemberCount}, non-inclusive.\n Role bearers are not sorted in any particular way, and their ordering may\n change at any point.\n WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n you perform all queries on the same block. See the following\n https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n for more information." + }, + "functionSelector": "9010d07c", + "id": 6107, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoleMember", + "nameLocation": "4039:13:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6094, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6091, + "mutability": "mutable", + "name": "role", + "nameLocation": "4061:4:20", + "nodeType": "VariableDeclaration", + "scope": 6107, + "src": "4053:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6090, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4053:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6093, + "mutability": "mutable", + "name": "index", + "nameLocation": "4075:5:20", + "nodeType": "VariableDeclaration", + "scope": 6107, + "src": "4067:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6092, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4067:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4052:29:20" + }, + "returnParameters": { + "id": 6097, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6096, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6107, + "src": "4103:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6095, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4103:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4102:9:20" + }, + "scope": 6283, + "src": "4030:136:20", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 6120, + "nodeType": "Block", + "src": "4413:46:20", + "statements": [ + { + "expression": { + "expression": { + "baseExpression": { + "id": 6115, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6023, + "src": "4430:6:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$6018_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 6117, + "indexExpression": { + "id": 6116, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6110, + "src": "4437:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4430:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$6018_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 6118, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "adminRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 6017, + "src": "4430:22:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 6114, + "id": 6119, + "nodeType": "Return", + "src": "4423:29:20" + } + ] + }, + "documentation": { + "id": 6108, + "nodeType": "StructuredDocumentation", + "src": "4172:170:20", + "text": " @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {_setRoleAdmin}." + }, + "functionSelector": "248a9ca3", + "id": 6121, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoleAdmin", + "nameLocation": "4356:12:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6111, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6110, + "mutability": "mutable", + "name": "role", + "nameLocation": "4377:4:20", + "nodeType": "VariableDeclaration", + "scope": 6121, + "src": "4369:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6109, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4369:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4368:14:20" + }, + "returnParameters": { + "id": 6114, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6113, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6121, + "src": "4404:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6112, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4404:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4403:9:20" + }, + "scope": 6283, + "src": "4347:112:20", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 6146, + "nodeType": "Block", + "src": "4774:158:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 6131, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6023, + "src": "4800:6:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$6018_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 6133, + "indexExpression": { + "id": 6132, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6124, + "src": "4807:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4800:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$6018_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 6134, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "adminRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 6017, + "src": "4800:22:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6135, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "4824:10:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 6136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4824:12:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 6130, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6072, + "src": "4792:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 6137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4792:45:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e74", + "id": 6138, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4839:49:20", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811", + "typeString": "literal_string \"AccessControl: sender must be an admin to grant\"" + }, + "value": "AccessControl: sender must be an admin to grant" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811", + "typeString": "literal_string \"AccessControl: sender must be an admin to grant\"" + } + ], + "id": 6129, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4784:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4784:105:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6140, + "nodeType": "ExpressionStatement", + "src": "4784:105:20" + }, + { + "expression": { + "arguments": [ + { + "id": 6142, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6124, + "src": "4911:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6143, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6126, + "src": "4917:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6141, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6258, + "src": "4900:10:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 6144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4900:25:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6145, + "nodeType": "ExpressionStatement", + "src": "4900:25:20" + } + ] + }, + "documentation": { + "id": 6122, + "nodeType": "StructuredDocumentation", + "src": "4465:239:20", + "text": " @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role." + }, + "functionSelector": "2f2ff15d", + "id": 6147, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "grantRole", + "nameLocation": "4718:9:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6127, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6124, + "mutability": "mutable", + "name": "role", + "nameLocation": "4736:4:20", + "nodeType": "VariableDeclaration", + "scope": 6147, + "src": "4728:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6123, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4728:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6126, + "mutability": "mutable", + "name": "account", + "nameLocation": "4750:7:20", + "nodeType": "VariableDeclaration", + "scope": 6147, + "src": "4742:15:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6125, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4742:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4727:31:20" + }, + "returnParameters": { + "id": 6128, + "nodeType": "ParameterList", + "parameters": [], + "src": "4774:0:20" + }, + "scope": 6283, + "src": "4709:223:20", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6172, + "nodeType": "Block", + "src": "5232:160:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 6157, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6023, + "src": "5258:6:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$6018_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 6159, + "indexExpression": { + "id": 6158, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6150, + "src": "5265:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5258:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$6018_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 6160, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "adminRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 6017, + "src": "5258:22:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6161, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "5282:10:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 6162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5282:12:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 6156, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6072, + "src": "5250:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 6163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5250:45:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65", + "id": 6164, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5297:50:20", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3", + "typeString": "literal_string \"AccessControl: sender must be an admin to revoke\"" + }, + "value": "AccessControl: sender must be an admin to revoke" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3", + "typeString": "literal_string \"AccessControl: sender must be an admin to revoke\"" + } + ], + "id": 6155, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5242:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5242:106:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6166, + "nodeType": "ExpressionStatement", + "src": "5242:106:20" + }, + { + "expression": { + "arguments": [ + { + "id": 6168, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6150, + "src": "5371:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6169, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6152, + "src": "5377:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6167, + "name": "_revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6282, + "src": "5359:11:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 6170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5359:26:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6171, + "nodeType": "ExpressionStatement", + "src": "5359:26:20" + } + ] + }, + "documentation": { + "id": 6148, + "nodeType": "StructuredDocumentation", + "src": "4938:223:20", + "text": " @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role." + }, + "functionSelector": "d547741f", + "id": 6173, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "revokeRole", + "nameLocation": "5175:10:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6153, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6150, + "mutability": "mutable", + "name": "role", + "nameLocation": "5194:4:20", + "nodeType": "VariableDeclaration", + "scope": 6173, + "src": "5186:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6149, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5186:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6152, + "mutability": "mutable", + "name": "account", + "nameLocation": "5208:7:20", + "nodeType": "VariableDeclaration", + "scope": 6173, + "src": "5200:15:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6151, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5200:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5185:31:20" + }, + "returnParameters": { + "id": 6154, + "nodeType": "ParameterList", + "parameters": [], + "src": "5232:0:20" + }, + "scope": 6283, + "src": "5166:226:20", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6194, + "nodeType": "Block", + "src": "5951:137:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6182, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6178, + "src": "5969:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6183, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "5980:10:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 6184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5980:12:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5969:23:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66", + "id": 6186, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5994:49:20", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b", + "typeString": "literal_string \"AccessControl: can only renounce roles for self\"" + }, + "value": "AccessControl: can only renounce roles for self" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b", + "typeString": "literal_string \"AccessControl: can only renounce roles for self\"" + } + ], + "id": 6181, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5961:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5961:83:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6188, + "nodeType": "ExpressionStatement", + "src": "5961:83:20" + }, + { + "expression": { + "arguments": [ + { + "id": 6190, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6176, + "src": "6067:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6191, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6178, + "src": "6073:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6189, + "name": "_revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6282, + "src": "6055:11:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 6192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6055:26:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6193, + "nodeType": "ExpressionStatement", + "src": "6055:26:20" + } + ] + }, + "documentation": { + "id": 6174, + "nodeType": "StructuredDocumentation", + "src": "5398:480:20", + "text": " @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been granted `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `account`." + }, + "functionSelector": "36568abe", + "id": 6195, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renounceRole", + "nameLocation": "5892:12:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6179, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6176, + "mutability": "mutable", + "name": "role", + "nameLocation": "5913:4:20", + "nodeType": "VariableDeclaration", + "scope": 6195, + "src": "5905:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6175, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5905:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6178, + "mutability": "mutable", + "name": "account", + "nameLocation": "5927:7:20", + "nodeType": "VariableDeclaration", + "scope": 6195, + "src": "5919:15:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6177, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5919:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5904:31:20" + }, + "returnParameters": { + "id": 6180, + "nodeType": "ParameterList", + "parameters": [], + "src": "5951:0:20" + }, + "scope": 6283, + "src": "5883:205:20", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6208, + "nodeType": "Block", + "src": "6721:42:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 6204, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6198, + "src": "6742:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6205, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6200, + "src": "6748:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6203, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6258, + "src": "6731:10:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 6206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6731:25:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6207, + "nodeType": "ExpressionStatement", + "src": "6731:25:20" + } + ] + }, + "documentation": { + "id": 6196, + "nodeType": "StructuredDocumentation", + "src": "6094:554:20", + "text": " @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event. Note that unlike {grantRole}, this function doesn't perform any\n checks on the calling account.\n [WARNING]\n ====\n This function should only be called from the constructor when setting\n up the initial roles for the system.\n Using this function in any other way is effectively circumventing the admin\n system imposed by {AccessControl}.\n ====" + }, + "id": 6209, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setupRole", + "nameLocation": "6662:10:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6201, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6198, + "mutability": "mutable", + "name": "role", + "nameLocation": "6681:4:20", + "nodeType": "VariableDeclaration", + "scope": 6209, + "src": "6673:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6197, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6673:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6200, + "mutability": "mutable", + "name": "account", + "nameLocation": "6695:7:20", + "nodeType": "VariableDeclaration", + "scope": 6209, + "src": "6687:15:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6199, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6687:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6672:31:20" + }, + "returnParameters": { + "id": 6202, + "nodeType": "ParameterList", + "parameters": [], + "src": "6721:0:20" + }, + "scope": 6283, + "src": "6653:110:20", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6233, + "nodeType": "Block", + "src": "6961:123:20", + "statements": [ + { + "eventCall": { + "arguments": [ + { + "id": 6218, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6212, + "src": "6993:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "baseExpression": { + "id": 6219, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6023, + "src": "6999:6:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$6018_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 6221, + "indexExpression": { + "id": 6220, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6212, + "src": "7006:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6999:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$6018_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 6222, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "adminRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 6017, + "src": "6999:22:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6223, + "name": "adminRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6214, + "src": "7023:9:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6217, + "name": "RoleAdminChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6035, + "src": "6976:16:20", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,bytes32,bytes32)" + } + }, + "id": 6224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6976:57:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6225, + "nodeType": "EmitStatement", + "src": "6971:62:20" + }, + { + "expression": { + "id": 6231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 6226, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6023, + "src": "7043:6:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$6018_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 6228, + "indexExpression": { + "id": 6227, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6212, + "src": "7050:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7043:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$6018_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 6229, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "adminRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 6017, + "src": "7043:22:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 6230, + "name": "adminRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6214, + "src": "7068:9:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "7043:34:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 6232, + "nodeType": "ExpressionStatement", + "src": "7043:34:20" + } + ] + }, + "documentation": { + "id": 6210, + "nodeType": "StructuredDocumentation", + "src": "6769:114:20", + "text": " @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event." + }, + "id": 6234, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setRoleAdmin", + "nameLocation": "6897:13:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6215, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6212, + "mutability": "mutable", + "name": "role", + "nameLocation": "6919:4:20", + "nodeType": "VariableDeclaration", + "scope": 6234, + "src": "6911:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6211, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6911:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6214, + "mutability": "mutable", + "name": "adminRole", + "nameLocation": "6933:9:20", + "nodeType": "VariableDeclaration", + "scope": 6234, + "src": "6925:17:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6213, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6925:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6910:33:20" + }, + "returnParameters": { + "id": 6216, + "nodeType": "ParameterList", + "parameters": [], + "src": "6961:0:20" + }, + "scope": 6283, + "src": "6888:196:20", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6257, + "nodeType": "Block", + "src": "7149:125:20", + "statements": [ + { + "condition": { + "arguments": [ + { + "id": 6246, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6238, + "src": "7188:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "expression": { + "baseExpression": { + "id": 6241, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6023, + "src": "7163:6:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$6018_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 6243, + "indexExpression": { + "id": 6242, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6236, + "src": "7170:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7163:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$6018_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 6244, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "members", + "nodeType": "MemberAccess", + "referencedDeclaration": 6015, + "src": "7163:20:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11740_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 6245, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 11764, + "src": "7163:24:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$11740_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$11740_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 6247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7163:33:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6256, + "nodeType": "IfStatement", + "src": "7159:109:20", + "trueBody": { + "id": 6255, + "nodeType": "Block", + "src": "7198:70:20", + "statements": [ + { + "eventCall": { + "arguments": [ + { + "id": 6249, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6236, + "src": "7229:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6250, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6238, + "src": "7235:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6251, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "7244:10:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 6252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7244:12:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 6248, + "name": "RoleGranted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6044, + "src": "7217:11:20", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$", + "typeString": "function (bytes32,address,address)" + } + }, + "id": 6253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7217:40:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6254, + "nodeType": "EmitStatement", + "src": "7212:45:20" + } + ] + } + } + ] + }, + "id": 6258, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_grantRole", + "nameLocation": "7099:10:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6239, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6236, + "mutability": "mutable", + "name": "role", + "nameLocation": "7118:4:20", + "nodeType": "VariableDeclaration", + "scope": 6258, + "src": "7110:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6235, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7110:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6238, + "mutability": "mutable", + "name": "account", + "nameLocation": "7132:7:20", + "nodeType": "VariableDeclaration", + "scope": 6258, + "src": "7124:15:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6237, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7124:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7109:31:20" + }, + "returnParameters": { + "id": 6240, + "nodeType": "ParameterList", + "parameters": [], + "src": "7149:0:20" + }, + "scope": 6283, + "src": "7090:184:20", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 6281, + "nodeType": "Block", + "src": "7340:128:20", + "statements": [ + { + "condition": { + "arguments": [ + { + "id": 6270, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6262, + "src": "7382:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "expression": { + "baseExpression": { + "id": 6265, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6023, + "src": "7354:6:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$6018_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 6267, + "indexExpression": { + "id": 6266, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6260, + "src": "7361:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7354:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$6018_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 6268, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "members", + "nodeType": "MemberAccess", + "referencedDeclaration": 6015, + "src": "7354:20:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11740_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 6269, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 11788, + "src": "7354:27:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$11740_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$11740_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 6271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7354:36:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6280, + "nodeType": "IfStatement", + "src": "7350:112:20", + "trueBody": { + "id": 6279, + "nodeType": "Block", + "src": "7392:70:20", + "statements": [ + { + "eventCall": { + "arguments": [ + { + "id": 6273, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6260, + "src": "7423:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6274, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6262, + "src": "7429:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6275, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "7438:10:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 6276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7438:12:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 6272, + "name": "RoleRevoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6053, + "src": "7411:11:20", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$", + "typeString": "function (bytes32,address,address)" + } + }, + "id": 6277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7411:40:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6278, + "nodeType": "EmitStatement", + "src": "7406:45:20" + } + ] + } + } + ] + }, + "id": 6282, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_revokeRole", + "nameLocation": "7289:11:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6263, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6260, + "mutability": "mutable", + "name": "role", + "nameLocation": "7309:4:20", + "nodeType": "VariableDeclaration", + "scope": 6282, + "src": "7301:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6259, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7301:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6262, + "mutability": "mutable", + "name": "account", + "nameLocation": "7323:7:20", + "nodeType": "VariableDeclaration", + "scope": 6282, + "src": "7315:15:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6261, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7315:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7300:31:20" + }, + "returnParameters": { + "id": 6264, + "nodeType": "ParameterList", + "parameters": [], + "src": "7340:0:20" + }, + "scope": 6283, + "src": "7280:188:20", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 6284, + "src": "1438:6032:20", + "usedErrors": [] + } + ], + "src": "33:7438:20" + }, + "id": 20 + }, + "contracts/Math/Math.sol": { + "ast": { + "absolutePath": "contracts/Math/Math.sol", + "exportedSymbols": { + "Math": [ + 6410 + ] + }, + "id": 6411, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6285, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:21" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Math", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 6286, + "nodeType": "StructuredDocumentation", + "src": "59:73:21", + "text": " @dev Standard math utilities missing in the Solidity language." + }, + "fullyImplemented": true, + "id": 6410, + "linearizedBaseContracts": [ + 6410 + ], + "name": "Math", + "nameLocation": "141:4:21", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 6303, + "nodeType": "Block", + "src": "283:38:21", + "statements": [ + { + "expression": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6296, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6289, + "src": "300:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 6297, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6291, + "src": "305:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "300:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "id": 6300, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6291, + "src": "313:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "300:14:21", + "trueExpression": { + "id": 6299, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6289, + "src": "309:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6295, + "id": 6302, + "nodeType": "Return", + "src": "293:21:21" + } + ] + }, + "documentation": { + "id": 6287, + "nodeType": "StructuredDocumentation", + "src": "152:59:21", + "text": " @dev Returns the largest of two numbers." + }, + "id": 6304, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "max", + "nameLocation": "225:3:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6292, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6289, + "mutability": "mutable", + "name": "a", + "nameLocation": "237:1:21", + "nodeType": "VariableDeclaration", + "scope": 6304, + "src": "229:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6288, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "229:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6291, + "mutability": "mutable", + "name": "b", + "nameLocation": "248:1:21", + "nodeType": "VariableDeclaration", + "scope": 6304, + "src": "240:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6290, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "240:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "228:22:21" + }, + "returnParameters": { + "id": 6295, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6294, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6304, + "src": "274:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6293, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "274:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "273:9:21" + }, + "scope": 6410, + "src": "216:105:21", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6321, + "nodeType": "Block", + "src": "459:37:21", + "statements": [ + { + "expression": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6314, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6307, + "src": "476:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 6315, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6309, + "src": "480:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "476:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "id": 6318, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6309, + "src": "488:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "476:13:21", + "trueExpression": { + "id": 6317, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6307, + "src": "484:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6313, + "id": 6320, + "nodeType": "Return", + "src": "469:20:21" + } + ] + }, + "documentation": { + "id": 6305, + "nodeType": "StructuredDocumentation", + "src": "327:60:21", + "text": " @dev Returns the smallest of two numbers." + }, + "id": 6322, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "min", + "nameLocation": "401:3:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6310, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6307, + "mutability": "mutable", + "name": "a", + "nameLocation": "413:1:21", + "nodeType": "VariableDeclaration", + "scope": 6322, + "src": "405:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6306, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "405:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6309, + "mutability": "mutable", + "name": "b", + "nameLocation": "424:1:21", + "nodeType": "VariableDeclaration", + "scope": 6322, + "src": "416:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6308, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "416:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "404:22:21" + }, + "returnParameters": { + "id": 6313, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6312, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6322, + "src": "450:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6311, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "450:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "449:9:21" + }, + "scope": 6410, + "src": "392:104:21", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6354, + "nodeType": "Block", + "src": "680:119:21", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6332, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6325, + "src": "752:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "32", + "id": 6333, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "756:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "752:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6335, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "751:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6336, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6327, + "src": "762:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "32", + "id": 6337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "766:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "762:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6339, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "761:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "751:17:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6341, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6325, + "src": "773:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "hexValue": "32", + "id": 6342, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "777:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "773:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6344, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6327, + "src": "781:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "hexValue": "32", + "id": 6345, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "785:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "781:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "773:13:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6348, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "772:15:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "32", + "id": 6349, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "790:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "772:19:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6351, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "771:21:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "751:41:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6331, + "id": 6353, + "nodeType": "Return", + "src": "744:48:21" + } + ] + }, + "documentation": { + "id": 6323, + "nodeType": "StructuredDocumentation", + "src": "502:102:21", + "text": " @dev Returns the average of two numbers. The result is rounded towards\n zero." + }, + "id": 6355, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "average", + "nameLocation": "618:7:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6328, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6325, + "mutability": "mutable", + "name": "a", + "nameLocation": "634:1:21", + "nodeType": "VariableDeclaration", + "scope": 6355, + "src": "626:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6324, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "626:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6327, + "mutability": "mutable", + "name": "b", + "nameLocation": "645:1:21", + "nodeType": "VariableDeclaration", + "scope": 6355, + "src": "637:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6326, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "637:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "625:22:21" + }, + "returnParameters": { + "id": 6331, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6330, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6355, + "src": "671:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6329, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "671:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "670:9:21" + }, + "scope": 6410, + "src": "609:190:21", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6408, + "nodeType": "Block", + "src": "967:239:21", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6362, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6357, + "src": "981:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "33", + "id": 6363, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "985:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "981:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6398, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6357, + "src": "1162:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 6399, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1167:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1162:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6406, + "nodeType": "IfStatement", + "src": "1158:42:21", + "trueBody": { + "id": 6405, + "nodeType": "Block", + "src": "1170:30:21", + "statements": [ + { + "expression": { + "id": 6403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6401, + "name": "z", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6360, + "src": "1184:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31", + "id": 6402, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1188:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1184:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6404, + "nodeType": "ExpressionStatement", + "src": "1184:5:21" + } + ] + } + }, + "id": 6407, + "nodeType": "IfStatement", + "src": "977:223:21", + "trueBody": { + "id": 6397, + "nodeType": "Block", + "src": "988:164:21", + "statements": [ + { + "expression": { + "id": 6367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6365, + "name": "z", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6360, + "src": "1002:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 6366, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6357, + "src": "1006:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1002:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6368, + "nodeType": "ExpressionStatement", + "src": "1002:5:21" + }, + { + "assignments": [ + 6370 + ], + "declarations": [ + { + "constant": false, + "id": 6370, + "mutability": "mutable", + "name": "x", + "nameLocation": "1026:1:21", + "nodeType": "VariableDeclaration", + "scope": 6397, + "src": "1021:6:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6369, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1021:4:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6376, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6371, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6357, + "src": "1030:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "32", + "id": 6372, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1034:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "1030:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 6374, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1038:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1030:9:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1021:18:21" + }, + { + "body": { + "id": 6395, + "nodeType": "Block", + "src": "1067:75:21", + "statements": [ + { + "expression": { + "id": 6382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6380, + "name": "z", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6360, + "src": "1085:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 6381, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6370, + "src": "1089:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1085:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6383, + "nodeType": "ExpressionStatement", + "src": "1085:5:21" + }, + { + "expression": { + "id": 6393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6384, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6370, + "src": "1108:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6385, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6357, + "src": "1113:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 6386, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6370, + "src": "1117:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1113:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 6388, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6370, + "src": "1121:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1113:9:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6390, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1112:11:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "32", + "id": 6391, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1126:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "1112:15:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1108:19:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6394, + "nodeType": "ExpressionStatement", + "src": "1108:19:21" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6377, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6370, + "src": "1060:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 6378, + "name": "z", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6360, + "src": "1064:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1060:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6396, + "nodeType": "WhileStatement", + "src": "1053:89:21" + } + ] + } + } + ] + }, + "id": 6409, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sqrt", + "nameLocation": "923:4:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6358, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6357, + "mutability": "mutable", + "name": "y", + "nameLocation": "933:1:21", + "nodeType": "VariableDeclaration", + "scope": 6409, + "src": "928:6:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6356, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "928:4:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "927:8:21" + }, + "returnParameters": { + "id": 6361, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6360, + "mutability": "mutable", + "name": "z", + "nameLocation": "964:1:21", + "nodeType": "VariableDeclaration", + "scope": 6409, + "src": "959:6:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6359, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "959:4:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "958:8:21" + }, + "scope": 6410, + "src": "914:292:21", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 6411, + "src": "133:1075:21", + "usedErrors": [] + } + ], + "src": "32:1176:21" + }, + "id": 21 + }, + "contracts/Math/SafeDecimalMath.sol": { + "ast": { + "absolutePath": "contracts/Math/SafeDecimalMath.sol", + "exportedSymbols": { + "SafeDecimalMath": [ + 6699 + ], + "SafeMath": [ + 6895 + ] + }, + "id": 6700, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6412, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:22" + }, + { + "absolutePath": "contracts/Math/SafeMath.sol", + "file": "./SafeMath.sol", + "id": 6413, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6700, + "sourceUnit": 6896, + "src": "72:24:22", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "SafeDecimalMath", + "contractDependencies": [], + "contractKind": "library", + "fullyImplemented": true, + "id": 6699, + "linearizedBaseContracts": [ + 6699 + ], + "name": "SafeDecimalMath", + "nameLocation": "179:15:22", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 6416, + "libraryName": { + "id": 6414, + "name": "SafeMath", + "nodeType": "IdentifierPath", + "referencedDeclaration": 6895, + "src": "207:8:22" + }, + "nodeType": "UsingForDirective", + "src": "201:24:22", + "typeName": { + "id": 6415, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "220:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": true, + "functionSelector": "313ce567", + "id": 6419, + "mutability": "constant", + "name": "decimals", + "nameLocation": "312:8:22", + "nodeType": "VariableDeclaration", + "scope": 6699, + "src": "290:35:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 6417, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "290:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "hexValue": "3138", + "id": 6418, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "323:2:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "def4419d", + "id": 6422, + "mutability": "constant", + "name": "highPrecisionDecimals", + "nameLocation": "353:21:22", + "nodeType": "VariableDeclaration", + "scope": 6699, + "src": "331:48:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 6420, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "331:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "hexValue": "3237", + "id": 6421, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "377:2:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "9d8e2177", + "id": 6430, + "mutability": "constant", + "name": "UNIT", + "nameLocation": "446:4:22", + "nodeType": "VariableDeclaration", + "scope": 6699, + "src": "425:46:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6423, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "425:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6429, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 6424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "453:2:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "arguments": [ + { + "id": 6427, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6419, + "src": "462:8:22", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 6426, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "457:4:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 6425, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "457:4:22", + "typeDescriptions": {} + } + }, + "id": 6428, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "457:14:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "453:18:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "864029e7", + "id": 6438, + "mutability": "constant", + "name": "PRECISE_UNIT", + "nameLocation": "566:12:22", + "nodeType": "VariableDeclaration", + "scope": 6699, + "src": "545:67:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6431, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "545:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6437, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 6432, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "581:2:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "arguments": [ + { + "id": 6435, + "name": "highPrecisionDecimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6422, + "src": "590:21:22", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 6434, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "585:4:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 6433, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "585:4:22", + "typeDescriptions": {} + } + }, + "id": 6436, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "585:27:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "581:31:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 6448, + "mutability": "constant", + "name": "UNIT_TO_HIGH_PRECISION_CONVERSION_FACTOR", + "nameLocation": "640:40:22", + "nodeType": "VariableDeclaration", + "scope": 6699, + "src": "618:107:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6439, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "618:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6447, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 6440, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "683:2:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 6445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "id": 6443, + "name": "highPrecisionDecimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6422, + "src": "692:21:22", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 6444, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6419, + "src": "716:8:22", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "692:32:22", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 6442, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "687:4:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 6441, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "687:4:22", + "typeDescriptions": {} + } + }, + "id": 6446, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "687:38:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "683:42:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 6456, + "nodeType": "Block", + "src": "839:28:22", + "statements": [ + { + "expression": { + "id": 6454, + "name": "UNIT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6430, + "src": "856:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6453, + "id": 6455, + "nodeType": "Return", + "src": "849:11:22" + } + ] + }, + "documentation": { + "id": 6449, + "nodeType": "StructuredDocumentation", + "src": "732:57:22", + "text": " @return Provides an interface to UNIT." + }, + "functionSelector": "907af6c0", + "id": 6457, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unit", + "nameLocation": "803:4:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6450, + "nodeType": "ParameterList", + "parameters": [], + "src": "807:2:22" + }, + "returnParameters": { + "id": 6453, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6452, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6457, + "src": "833:4:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6451, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "833:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "832:6:22" + }, + "scope": 6699, + "src": "794:73:22", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 6465, + "nodeType": "Block", + "src": "995:36:22", + "statements": [ + { + "expression": { + "id": 6463, + "name": "PRECISE_UNIT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6438, + "src": "1012:12:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6462, + "id": 6464, + "nodeType": "Return", + "src": "1005:19:22" + } + ] + }, + "documentation": { + "id": 6458, + "nodeType": "StructuredDocumentation", + "src": "873:65:22", + "text": " @return Provides an interface to PRECISE_UNIT." + }, + "functionSelector": "d5e5e6e6", + "id": 6466, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "preciseUnit", + "nameLocation": "952:11:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6459, + "nodeType": "ParameterList", + "parameters": [], + "src": "963:2:22" + }, + "returnParameters": { + "id": 6462, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6461, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6466, + "src": "989:4:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6460, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "989:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "988:6:22" + }, + "scope": 6699, + "src": "943:88:22", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 6483, + "nodeType": "Block", + "src": "1518:122:22", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 6478, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6471, + "src": "1624:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 6476, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6469, + "src": "1618:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "1618:5:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 6479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1618:8:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 6480, + "name": "UNIT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6430, + "src": "1629:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1618:15:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6475, + "id": 6482, + "nodeType": "Return", + "src": "1611:22:22" + } + ] + }, + "documentation": { + "id": 6467, + "nodeType": "StructuredDocumentation", + "src": "1037:406:22", + "text": " @return The result of multiplying x and y, interpreting the operands as fixed-point\n decimals.\n @dev A unit factor is divided out after the product of x and y is evaluated,\n so that product must be less than 2**256. As this is an integer division,\n the internal division always rounds down. This helps save on gas. Rounding\n is more expensive on gas." + }, + "id": 6484, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "multiplyDecimal", + "nameLocation": "1457:15:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6472, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6469, + "mutability": "mutable", + "name": "x", + "nameLocation": "1478:1:22", + "nodeType": "VariableDeclaration", + "scope": 6484, + "src": "1473:6:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6468, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1473:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6471, + "mutability": "mutable", + "name": "y", + "nameLocation": "1486:1:22", + "nodeType": "VariableDeclaration", + "scope": 6484, + "src": "1481:6:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6470, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1481:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1472:16:22" + }, + "returnParameters": { + "id": 6475, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6474, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6484, + "src": "1512:4:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6473, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1512:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1511:6:22" + }, + "scope": 6699, + "src": "1448:192:22", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6523, + "nodeType": "Block", + "src": "2370:283:22", + "statements": [ + { + "assignments": [ + 6497 + ], + "declarations": [ + { + "constant": false, + "id": 6497, + "mutability": "mutable", + "name": "quotientTimesTen", + "nameLocation": "2468:16:22", + "nodeType": "VariableDeclaration", + "scope": 6523, + "src": "2463:21:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6496, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2463:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6507, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 6500, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6489, + "src": "2493:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 6498, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6487, + "src": "2487:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "2487:5:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 6501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2487:8:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6502, + "name": "precisionUnit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6491, + "src": "2499:13:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "3130", + "id": 6503, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2515:2:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "2499:18:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6505, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2498:20:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2487:31:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2463:55:22" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6508, + "name": "quotientTimesTen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6497, + "src": "2533:16:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "hexValue": "3130", + "id": 6509, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2552:2:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "2533:21:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "hexValue": "35", + "id": 6511, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2558:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "src": "2533:26:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6518, + "nodeType": "IfStatement", + "src": "2529:79:22", + "trueBody": { + "id": 6517, + "nodeType": "Block", + "src": "2561:47:22", + "statements": [ + { + "expression": { + "id": 6515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6513, + "name": "quotientTimesTen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6497, + "src": "2575:16:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "3130", + "id": 6514, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2595:2:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "2575:22:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6516, + "nodeType": "ExpressionStatement", + "src": "2575:22:22" + } + ] + } + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6519, + "name": "quotientTimesTen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6497, + "src": "2625:16:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "3130", + "id": 6520, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2644:2:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "2625:21:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6495, + "id": 6522, + "nodeType": "Return", + "src": "2618:28:22" + } + ] + }, + "documentation": { + "id": 6485, + "nodeType": "StructuredDocumentation", + "src": "1646:594:22", + "text": " @return The result of safely multiplying x and y, interpreting the operands\n as fixed-point decimals of the specified precision unit.\n @dev The operands should be in the form of a the specified unit factor which will be\n divided out after the product of x and y is evaluated, so that product must be\n less than 2**256.\n Unlike multiplyDecimal, this function rounds the result to the nearest increment.\n Rounding is useful when you need to retain fidelity for small decimal numbers\n (eg. small fractions or percentages)." + }, + "id": 6524, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_multiplyDecimalRound", + "nameLocation": "2254:21:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6487, + "mutability": "mutable", + "name": "x", + "nameLocation": "2290:1:22", + "nodeType": "VariableDeclaration", + "scope": 6524, + "src": "2285:6:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6486, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2285:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6489, + "mutability": "mutable", + "name": "y", + "nameLocation": "2306:1:22", + "nodeType": "VariableDeclaration", + "scope": 6524, + "src": "2301:6:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6488, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2301:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6491, + "mutability": "mutable", + "name": "precisionUnit", + "nameLocation": "2322:13:22", + "nodeType": "VariableDeclaration", + "scope": 6524, + "src": "2317:18:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6490, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2317:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2275:66:22" + }, + "returnParameters": { + "id": 6495, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6494, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6524, + "src": "2364:4:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6493, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2364:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2363:6:22" + }, + "scope": 6699, + "src": "2245:408:22", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 6540, + "nodeType": "Block", + "src": "3310:65:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 6535, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6527, + "src": "3349:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6536, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6529, + "src": "3352:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6537, + "name": "PRECISE_UNIT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6438, + "src": "3355:12:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6534, + "name": "_multiplyDecimalRound", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6524, + "src": "3327:21:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 6538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3327:41:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6533, + "id": 6539, + "nodeType": "Return", + "src": "3320:48:22" + } + ] + }, + "documentation": { + "id": 6525, + "nodeType": "StructuredDocumentation", + "src": "2659:564:22", + "text": " @return The result of safely multiplying x and y, interpreting the operands\n as fixed-point decimals of a precise unit.\n @dev The operands should be in the precise unit factor which will be\n divided out after the product of x and y is evaluated, so that product must be\n less than 2**256.\n Unlike multiplyDecimal, this function rounds the result to the nearest increment.\n Rounding is useful when you need to retain fidelity for small decimal numbers\n (eg. small fractions or percentages)." + }, + "id": 6541, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "multiplyDecimalRoundPrecise", + "nameLocation": "3237:27:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6530, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6527, + "mutability": "mutable", + "name": "x", + "nameLocation": "3270:1:22", + "nodeType": "VariableDeclaration", + "scope": 6541, + "src": "3265:6:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6526, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3265:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6529, + "mutability": "mutable", + "name": "y", + "nameLocation": "3278:1:22", + "nodeType": "VariableDeclaration", + "scope": 6541, + "src": "3273:6:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6528, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3273:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3264:16:22" + }, + "returnParameters": { + "id": 6533, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6532, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6541, + "src": "3304:4:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6531, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3304:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3303:6:22" + }, + "scope": 6699, + "src": "3228:147:22", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6557, + "nodeType": "Block", + "src": "4027:57:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 6552, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6544, + "src": "4066:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6553, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6546, + "src": "4069:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6554, + "name": "UNIT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6430, + "src": "4072:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6551, + "name": "_multiplyDecimalRound", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6524, + "src": "4044:21:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 6555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4044:33:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6550, + "id": 6556, + "nodeType": "Return", + "src": "4037:40:22" + } + ] + }, + "documentation": { + "id": 6542, + "nodeType": "StructuredDocumentation", + "src": "3381:566:22", + "text": " @return The result of safely multiplying x and y, interpreting the operands\n as fixed-point decimals of a standard unit.\n @dev The operands should be in the standard unit factor which will be\n divided out after the product of x and y is evaluated, so that product must be\n less than 2**256.\n Unlike multiplyDecimal, this function rounds the result to the nearest increment.\n Rounding is useful when you need to retain fidelity for small decimal numbers\n (eg. small fractions or percentages)." + }, + "id": 6558, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "multiplyDecimalRound", + "nameLocation": "3961:20:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6547, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6544, + "mutability": "mutable", + "name": "x", + "nameLocation": "3987:1:22", + "nodeType": "VariableDeclaration", + "scope": 6558, + "src": "3982:6:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6543, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3982:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6546, + "mutability": "mutable", + "name": "y", + "nameLocation": "3995:1:22", + "nodeType": "VariableDeclaration", + "scope": 6558, + "src": "3990:6:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6545, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3990:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3981:16:22" + }, + "returnParameters": { + "id": 6550, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6549, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6558, + "src": "4021:4:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6548, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4021:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4020:6:22" + }, + "scope": 6699, + "src": "3952:132:22", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6576, + "nodeType": "Block", + "src": "4584:115:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 6573, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6563, + "src": "4690:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 6570, + "name": "UNIT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6430, + "src": "4680:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 6568, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6561, + "src": "4674:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "4674:5:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 6571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4674:11:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 6825, + "src": "4674:15:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 6574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4674:18:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6567, + "id": 6575, + "nodeType": "Return", + "src": "4667:25:22" + } + ] + }, + "documentation": { + "id": 6559, + "nodeType": "StructuredDocumentation", + "src": "4090:421:22", + "text": " @return The result of safely dividing x and y. The return value is a high\n precision decimal.\n @dev y is divided after the product of x and the standard precision unit\n is evaluated, so the product of x and UNIT must be less than 2**256. As\n this is an integer division, the result is always rounded down.\n This helps save on gas. Rounding is more expensive on gas." + }, + "id": 6577, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "divideDecimal", + "nameLocation": "4525:13:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6564, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6561, + "mutability": "mutable", + "name": "x", + "nameLocation": "4544:1:22", + "nodeType": "VariableDeclaration", + "scope": 6577, + "src": "4539:6:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6560, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4539:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6563, + "mutability": "mutable", + "name": "y", + "nameLocation": "4552:1:22", + "nodeType": "VariableDeclaration", + "scope": 6577, + "src": "4547:6:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6562, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4547:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4538:16:22" + }, + "returnParameters": { + "id": 6567, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6566, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6577, + "src": "4578:4:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6565, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4578:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4577:6:22" + }, + "scope": 6699, + "src": "4516:183:22", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6616, + "nodeType": "Block", + "src": "5239:193:22", + "statements": [ + { + "assignments": [ + 6590 + ], + "declarations": [ + { + "constant": false, + "id": 6590, + "mutability": "mutable", + "name": "resultTimesTen", + "nameLocation": "5254:14:22", + "nodeType": "VariableDeclaration", + "scope": 6616, + "src": "5249:19:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6589, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5249:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6600, + "initialValue": { + "arguments": [ + { + "id": 6598, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6582, + "src": "5301:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6593, + "name": "precisionUnit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6584, + "src": "5277:13:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "3130", + "id": 6594, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5293:2:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "5277:18:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 6591, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6580, + "src": "5271:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "5271:5:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 6596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5271:25:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 6825, + "src": "5271:29:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 6599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5271:32:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5249:54:22" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6601, + "name": "resultTimesTen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6590, + "src": "5318:14:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "hexValue": "3130", + "id": 6602, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5335:2:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "5318:19:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "hexValue": "35", + "id": 6604, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5341:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "src": "5318:24:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6611, + "nodeType": "IfStatement", + "src": "5314:75:22", + "trueBody": { + "id": 6610, + "nodeType": "Block", + "src": "5344:45:22", + "statements": [ + { + "expression": { + "id": 6608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6606, + "name": "resultTimesTen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6590, + "src": "5358:14:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "3130", + "id": 6607, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5376:2:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "5358:20:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6609, + "nodeType": "ExpressionStatement", + "src": "5358:20:22" + } + ] + } + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6612, + "name": "resultTimesTen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6590, + "src": "5406:14:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "3130", + "id": 6613, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5423:2:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "5406:19:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6588, + "id": 6615, + "nodeType": "Return", + "src": "5399:26:22" + } + ] + }, + "documentation": { + "id": 6578, + "nodeType": "StructuredDocumentation", + "src": "4705:406:22", + "text": " @return The result of safely dividing x and y. The return value is as a rounded\n decimal in the precision unit specified in the parameter.\n @dev y is divided after the product of x and the specified precision unit\n is evaluated, so the product of x and the specified precision unit must\n be less than 2**256. The result is rounded to the nearest increment." + }, + "id": 6617, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_divideDecimalRound", + "nameLocation": "5125:19:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6585, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6580, + "mutability": "mutable", + "name": "x", + "nameLocation": "5159:1:22", + "nodeType": "VariableDeclaration", + "scope": 6617, + "src": "5154:6:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6579, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5154:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6582, + "mutability": "mutable", + "name": "y", + "nameLocation": "5175:1:22", + "nodeType": "VariableDeclaration", + "scope": 6617, + "src": "5170:6:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6581, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5170:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6584, + "mutability": "mutable", + "name": "precisionUnit", + "nameLocation": "5191:13:22", + "nodeType": "VariableDeclaration", + "scope": 6617, + "src": "5186:18:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6583, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5186:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5144:66:22" + }, + "returnParameters": { + "id": 6588, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6587, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6617, + "src": "5233:4:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6586, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5233:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5232:6:22" + }, + "scope": 6699, + "src": "5116:316:22", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 6633, + "nodeType": "Block", + "src": "5890:55:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 6628, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6620, + "src": "5927:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6629, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6622, + "src": "5930:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6630, + "name": "UNIT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6430, + "src": "5933:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6627, + "name": "_divideDecimalRound", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6617, + "src": "5907:19:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 6631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5907:31:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6626, + "id": 6632, + "nodeType": "Return", + "src": "5900:38:22" + } + ] + }, + "documentation": { + "id": 6618, + "nodeType": "StructuredDocumentation", + "src": "5438:374:22", + "text": " @return The result of safely dividing x and y. The return value is as a rounded\n standard precision decimal.\n @dev y is divided after the product of x and the standard precision unit\n is evaluated, so the product of x and the standard precision unit must\n be less than 2**256. The result is rounded to the nearest increment." + }, + "id": 6634, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "divideDecimalRound", + "nameLocation": "5826:18:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6623, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6620, + "mutability": "mutable", + "name": "x", + "nameLocation": "5850:1:22", + "nodeType": "VariableDeclaration", + "scope": 6634, + "src": "5845:6:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6619, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5845:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6622, + "mutability": "mutable", + "name": "y", + "nameLocation": "5858:1:22", + "nodeType": "VariableDeclaration", + "scope": 6634, + "src": "5853:6:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6621, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5853:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5844:16:22" + }, + "returnParameters": { + "id": 6626, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6625, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6634, + "src": "5884:4:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6624, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5884:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5883:6:22" + }, + "scope": 6699, + "src": "5817:128:22", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6650, + "nodeType": "Block", + "src": "6398:63:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 6645, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6637, + "src": "6435:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6646, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6639, + "src": "6438:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6647, + "name": "PRECISE_UNIT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6438, + "src": "6441:12:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6644, + "name": "_divideDecimalRound", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6617, + "src": "6415:19:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 6648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6415:39:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6643, + "id": 6649, + "nodeType": "Return", + "src": "6408:46:22" + } + ] + }, + "documentation": { + "id": 6635, + "nodeType": "StructuredDocumentation", + "src": "5951:362:22", + "text": " @return The result of safely dividing x and y. The return value is as a rounded\n high precision decimal.\n @dev y is divided after the product of x and the high precision unit\n is evaluated, so the product of x and the high precision unit must\n be less than 2**256. The result is rounded to the nearest increment." + }, + "id": 6651, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "divideDecimalRoundPrecise", + "nameLocation": "6327:25:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6640, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6637, + "mutability": "mutable", + "name": "x", + "nameLocation": "6358:1:22", + "nodeType": "VariableDeclaration", + "scope": 6651, + "src": "6353:6:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6636, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6353:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6639, + "mutability": "mutable", + "name": "y", + "nameLocation": "6366:1:22", + "nodeType": "VariableDeclaration", + "scope": 6651, + "src": "6361:6:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6638, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6361:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6352:16:22" + }, + "returnParameters": { + "id": 6643, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6642, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6651, + "src": "6392:4:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6641, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6392:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6391:6:22" + }, + "scope": 6699, + "src": "6318:143:22", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6664, + "nodeType": "Block", + "src": "6632:71:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 6661, + "name": "UNIT_TO_HIGH_PRECISION_CONVERSION_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6448, + "src": "6655:40:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 6659, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6654, + "src": "6649:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "6649:5:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 6662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6649:47:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6658, + "id": 6663, + "nodeType": "Return", + "src": "6642:54:22" + } + ] + }, + "documentation": { + "id": 6652, + "nodeType": "StructuredDocumentation", + "src": "6467:90:22", + "text": " @dev Convert a standard decimal representation to a high precision one." + }, + "id": 6665, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decimalToPreciseDecimal", + "nameLocation": "6571:23:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6655, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6654, + "mutability": "mutable", + "name": "i", + "nameLocation": "6600:1:22", + "nodeType": "VariableDeclaration", + "scope": 6665, + "src": "6595:6:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6653, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6595:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6594:8:22" + }, + "returnParameters": { + "id": 6658, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6657, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6665, + "src": "6626:4:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6656, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6626:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6625:6:22" + }, + "scope": 6699, + "src": "6562:141:22", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6697, + "nodeType": "Block", + "src": "6878:220:22", + "statements": [ + { + "assignments": [ + 6674 + ], + "declarations": [ + { + "constant": false, + "id": 6674, + "mutability": "mutable", + "name": "quotientTimesTen", + "nameLocation": "6893:16:22", + "nodeType": "VariableDeclaration", + "scope": 6697, + "src": "6888:21:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6673, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6888:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6681, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6675, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6668, + "src": "6912:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6678, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "id": 6676, + "name": "UNIT_TO_HIGH_PRECISION_CONVERSION_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6448, + "src": "6917:40:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "3130", + "id": 6677, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6960:2:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "6917:45:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6679, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6916:47:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6912:51:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6888:75:22" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6682, + "name": "quotientTimesTen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6674, + "src": "6978:16:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "hexValue": "3130", + "id": 6683, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6997:2:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "6978:21:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "hexValue": "35", + "id": 6685, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7003:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "src": "6978:26:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6692, + "nodeType": "IfStatement", + "src": "6974:79:22", + "trueBody": { + "id": 6691, + "nodeType": "Block", + "src": "7006:47:22", + "statements": [ + { + "expression": { + "id": 6689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6687, + "name": "quotientTimesTen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6674, + "src": "7020:16:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "3130", + "id": 6688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7040:2:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "7020:22:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6690, + "nodeType": "ExpressionStatement", + "src": "7020:22:22" + } + ] + } + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6695, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6693, + "name": "quotientTimesTen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6674, + "src": "7070:16:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "3130", + "id": 6694, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7089:2:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "7070:21:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6672, + "id": 6696, + "nodeType": "Return", + "src": "7063:28:22" + } + ] + }, + "documentation": { + "id": 6666, + "nodeType": "StructuredDocumentation", + "src": "6709:94:22", + "text": " @dev Convert a high precision decimal to a standard decimal representation." + }, + "id": 6698, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "preciseDecimalToDecimal", + "nameLocation": "6817:23:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6669, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6668, + "mutability": "mutable", + "name": "i", + "nameLocation": "6846:1:22", + "nodeType": "VariableDeclaration", + "scope": 6698, + "src": "6841:6:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6667, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6841:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6840:8:22" + }, + "returnParameters": { + "id": 6672, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6671, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6698, + "src": "6872:4:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6670, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6872:4:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6871:6:22" + }, + "scope": 6699, + "src": "6808:290:22", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 6700, + "src": "171:6929:22", + "usedErrors": [] + } + ], + "src": "32:7068:22" + }, + "id": 22 + }, + "contracts/Math/SafeMath.sol": { + "ast": { + "absolutePath": "contracts/Math/SafeMath.sol", + "exportedSymbols": { + "SafeMath": [ + 6895 + ] + }, + "id": 6896, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6701, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:23" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "SafeMath", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 6702, + "nodeType": "StructuredDocumentation", + "src": "59:563:23", + "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": 6895, + "linearizedBaseContracts": [ + 6895 + ], + "name": "SafeMath", + "nameLocation": "631:8:23", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 6727, + "nodeType": "Block", + "src": "935:109:23", + "statements": [ + { + "assignments": [ + 6713 + ], + "declarations": [ + { + "constant": false, + "id": 6713, + "mutability": "mutable", + "name": "c", + "nameLocation": "953:1:23", + "nodeType": "VariableDeclaration", + "scope": 6727, + "src": "945:9:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6712, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "945:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6717, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6714, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6705, + "src": "957:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 6715, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6707, + "src": "961:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "957:5:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "945:17:23" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6719, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6713, + "src": "980:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 6720, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6705, + "src": "985:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "980:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77", + "id": 6722, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "988:29:23", + "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": 6718, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "972:7:23", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "972:46:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6724, + "nodeType": "ExpressionStatement", + "src": "972:46:23" + }, + { + "expression": { + "id": 6725, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6713, + "src": "1036:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6711, + "id": 6726, + "nodeType": "Return", + "src": "1029:8:23" + } + ] + }, + "documentation": { + "id": 6703, + "nodeType": "StructuredDocumentation", + "src": "646:217:23", + "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": 6728, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "877:3:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6708, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6705, + "mutability": "mutable", + "name": "a", + "nameLocation": "889:1:23", + "nodeType": "VariableDeclaration", + "scope": 6728, + "src": "881:9:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6704, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "881:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6707, + "mutability": "mutable", + "name": "b", + "nameLocation": "900:1:23", + "nodeType": "VariableDeclaration", + "scope": 6728, + "src": "892:9:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6706, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "892:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "880:22:23" + }, + "returnParameters": { + "id": 6711, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6710, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6728, + "src": "926:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6709, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "926:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "925:9:23" + }, + "scope": 6895, + "src": "868:176:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6744, + "nodeType": "Block", + "src": "1375:67:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 6739, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6731, + "src": "1396:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6740, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6733, + "src": "1399:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "536166654d6174683a207375627472616374696f6e206f766572666c6f77", + "id": 6741, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1402:32:23", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862", + "typeString": "literal_string \"SafeMath: subtraction overflow\"" + }, + "value": "SafeMath: subtraction overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862", + "typeString": "literal_string \"SafeMath: subtraction overflow\"" + } + ], + "id": 6738, + "name": "sub", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6745, + 6773 + ], + "referencedDeclaration": 6773, + "src": "1392:3:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 6742, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1392:43:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6737, + "id": 6743, + "nodeType": "Return", + "src": "1385:50:23" + } + ] + }, + "documentation": { + "id": 6729, + "nodeType": "StructuredDocumentation", + "src": "1050:253:23", + "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": 6745, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nameLocation": "1317:3:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6734, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6731, + "mutability": "mutable", + "name": "a", + "nameLocation": "1329:1:23", + "nodeType": "VariableDeclaration", + "scope": 6745, + "src": "1321:9:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6730, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1321:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6733, + "mutability": "mutable", + "name": "b", + "nameLocation": "1340:1:23", + "nodeType": "VariableDeclaration", + "scope": 6745, + "src": "1332:9:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6732, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1332:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1320:22:23" + }, + "returnParameters": { + "id": 6737, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6736, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6745, + "src": "1366:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6735, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1366:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1365:9:23" + }, + "scope": 6895, + "src": "1308:134:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6772, + "nodeType": "Block", + "src": "1861:92:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6758, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6750, + "src": "1879:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 6759, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6748, + "src": "1884:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1879:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 6761, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6752, + "src": "1887:12:23", + "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": 6757, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1871:7:23", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1871:29:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6763, + "nodeType": "ExpressionStatement", + "src": "1871:29:23" + }, + { + "assignments": [ + 6765 + ], + "declarations": [ + { + "constant": false, + "id": 6765, + "mutability": "mutable", + "name": "c", + "nameLocation": "1918:1:23", + "nodeType": "VariableDeclaration", + "scope": 6772, + "src": "1910:9:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6764, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1910:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6769, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6766, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6748, + "src": "1922:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 6767, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6750, + "src": "1926:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1922:5:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1910:17:23" + }, + { + "expression": { + "id": 6770, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6765, + "src": "1945:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6756, + "id": 6771, + "nodeType": "Return", + "src": "1938:8:23" + } + ] + }, + "documentation": { + "id": 6746, + "nodeType": "StructuredDocumentation", + "src": "1448:313:23", + "text": " @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow.\n _Available since v2.4.0._" + }, + "id": 6773, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nameLocation": "1775:3:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6753, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6748, + "mutability": "mutable", + "name": "a", + "nameLocation": "1787:1:23", + "nodeType": "VariableDeclaration", + "scope": 6773, + "src": "1779:9:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6747, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1779:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6750, + "mutability": "mutable", + "name": "b", + "nameLocation": "1798:1:23", + "nodeType": "VariableDeclaration", + "scope": 6773, + "src": "1790:9:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6749, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1790:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6752, + "mutability": "mutable", + "name": "errorMessage", + "nameLocation": "1815:12:23", + "nodeType": "VariableDeclaration", + "scope": 6773, + "src": "1801:26:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6751, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1801:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1778:50:23" + }, + "returnParameters": { + "id": 6756, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6755, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6773, + "src": "1852:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6754, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1852:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1851:9:23" + }, + "scope": 6895, + "src": "1766:187:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6807, + "nodeType": "Block", + "src": "2260:392:23", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6783, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6776, + "src": "2492:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 6784, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2497:1:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2492:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6789, + "nodeType": "IfStatement", + "src": "2488:45:23", + "trueBody": { + "id": 6788, + "nodeType": "Block", + "src": "2500:33:23", + "statements": [ + { + "expression": { + "hexValue": "30", + "id": 6786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2521:1:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 6782, + "id": 6787, + "nodeType": "Return", + "src": "2514:8:23" + } + ] + } + }, + { + "assignments": [ + 6791 + ], + "declarations": [ + { + "constant": false, + "id": 6791, + "mutability": "mutable", + "name": "c", + "nameLocation": "2551:1:23", + "nodeType": "VariableDeclaration", + "scope": 6807, + "src": "2543:9:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6790, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2543:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6795, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6792, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6776, + "src": "2555:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6793, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6778, + "src": "2559:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2555:5:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2543:17:23" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6797, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6791, + "src": "2578:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 6798, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6776, + "src": "2582:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2578:5:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 6800, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6778, + "src": "2587:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2578:10:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77", + "id": 6802, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2590:35:23", + "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": 6796, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2570:7:23", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2570:56:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6804, + "nodeType": "ExpressionStatement", + "src": "2570:56:23" + }, + { + "expression": { + "id": 6805, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6791, + "src": "2644:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6782, + "id": 6806, + "nodeType": "Return", + "src": "2637:8:23" + } + ] + }, + "documentation": { + "id": 6774, + "nodeType": "StructuredDocumentation", + "src": "1959:229:23", + "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": 6808, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mul", + "nameLocation": "2202:3:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6779, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6776, + "mutability": "mutable", + "name": "a", + "nameLocation": "2214:1:23", + "nodeType": "VariableDeclaration", + "scope": 6808, + "src": "2206:9:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6775, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2206:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6778, + "mutability": "mutable", + "name": "b", + "nameLocation": "2225:1:23", + "nodeType": "VariableDeclaration", + "scope": 6808, + "src": "2217:9:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6777, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2217:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2205:22:23" + }, + "returnParameters": { + "id": 6782, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6781, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6808, + "src": "2251:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6780, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2251:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2250:9:23" + }, + "scope": 6895, + "src": "2193:459:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6824, + "nodeType": "Block", + "src": "3174:63:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 6819, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6811, + "src": "3195:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6820, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6813, + "src": "3198:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "536166654d6174683a206469766973696f6e206279207a65726f", + "id": 6821, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3201:28:23", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f", + "typeString": "literal_string \"SafeMath: division by zero\"" + }, + "value": "SafeMath: division by zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f", + "typeString": "literal_string \"SafeMath: division by zero\"" + } + ], + "id": 6818, + "name": "div", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6825, + 6853 + ], + "referencedDeclaration": 6853, + "src": "3191:3:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 6822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3191:39:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6817, + "id": 6823, + "nodeType": "Return", + "src": "3184:46:23" + } + ] + }, + "documentation": { + "id": 6809, + "nodeType": "StructuredDocumentation", + "src": "2658:444:23", + "text": " @dev Returns the integer division of two unsigned integers. Reverts 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": 6825, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nameLocation": "3116:3:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6814, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6811, + "mutability": "mutable", + "name": "a", + "nameLocation": "3128:1:23", + "nodeType": "VariableDeclaration", + "scope": 6825, + "src": "3120:9:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6810, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3120:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6813, + "mutability": "mutable", + "name": "b", + "nameLocation": "3139:1:23", + "nodeType": "VariableDeclaration", + "scope": 6825, + "src": "3131:9:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6812, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3131:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3119:22:23" + }, + "returnParameters": { + "id": 6817, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6816, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6825, + "src": "3165:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6815, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3165:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3164:9:23" + }, + "scope": 6895, + "src": "3107:130:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6852, + "nodeType": "Block", + "src": "3847:243:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6838, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6830, + "src": "3931:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 6839, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3935:1:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3931:5:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 6841, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6832, + "src": "3938:12:23", + "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": 6837, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3923:7:23", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3923:28:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6843, + "nodeType": "ExpressionStatement", + "src": "3923:28:23" + }, + { + "assignments": [ + 6845 + ], + "declarations": [ + { + "constant": false, + "id": 6845, + "mutability": "mutable", + "name": "c", + "nameLocation": "3969:1:23", + "nodeType": "VariableDeclaration", + "scope": 6852, + "src": "3961:9:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6844, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3961:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6849, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6846, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6828, + "src": "3973:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 6847, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6830, + "src": "3977:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3973:5:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3961:17:23" + }, + { + "expression": { + "id": 6850, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "4082:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6836, + "id": 6851, + "nodeType": "Return", + "src": "4075:8:23" + } + ] + }, + "documentation": { + "id": 6826, + "nodeType": "StructuredDocumentation", + "src": "3243:504:23", + "text": " @dev Returns the integer division of two unsigned integers. Reverts with custom message 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.\n _Available since v2.4.0._" + }, + "id": 6853, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nameLocation": "3761:3:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6833, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6828, + "mutability": "mutable", + "name": "a", + "nameLocation": "3773:1:23", + "nodeType": "VariableDeclaration", + "scope": 6853, + "src": "3765:9:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6827, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3765:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6830, + "mutability": "mutable", + "name": "b", + "nameLocation": "3784:1:23", + "nodeType": "VariableDeclaration", + "scope": 6853, + "src": "3776:9:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6829, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3776:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6832, + "mutability": "mutable", + "name": "errorMessage", + "nameLocation": "3801:12:23", + "nodeType": "VariableDeclaration", + "scope": 6853, + "src": "3787:26:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6831, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3787:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "3764:50:23" + }, + "returnParameters": { + "id": 6836, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6835, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6853, + "src": "3838:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6834, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3838:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3837:9:23" + }, + "scope": 6895, + "src": "3752:338:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6869, + "nodeType": "Block", + "src": "4601:61:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 6864, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6856, + "src": "4622:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6865, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6858, + "src": "4625:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "536166654d6174683a206d6f64756c6f206279207a65726f", + "id": 6866, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4628:26:23", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832", + "typeString": "literal_string \"SafeMath: modulo by zero\"" + }, + "value": "SafeMath: modulo by zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832", + "typeString": "literal_string \"SafeMath: modulo by zero\"" + } + ], + "id": 6863, + "name": "mod", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6870, + 6894 + ], + "referencedDeclaration": 6894, + "src": "4618:3:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 6867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4618:37:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6862, + "id": 6868, + "nodeType": "Return", + "src": "4611:44:23" + } + ] + }, + "documentation": { + "id": 6854, + "nodeType": "StructuredDocumentation", + "src": "4096:433:23", + "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n Reverts 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": 6870, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mod", + "nameLocation": "4543:3:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6859, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6856, + "mutability": "mutable", + "name": "a", + "nameLocation": "4555:1:23", + "nodeType": "VariableDeclaration", + "scope": 6870, + "src": "4547:9:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6855, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4547:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6858, + "mutability": "mutable", + "name": "b", + "nameLocation": "4566:1:23", + "nodeType": "VariableDeclaration", + "scope": 6870, + "src": "4558:9:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6857, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4558:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4546:22:23" + }, + "returnParameters": { + "id": 6862, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6861, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6870, + "src": "4592:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6860, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4592:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4591:9:23" + }, + "scope": 6895, + "src": "4534:128:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6893, + "nodeType": "Block", + "src": "5261:68:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6883, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6875, + "src": "5279:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 6884, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5284:1:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5279:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 6886, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6877, + "src": "5287:12:23", + "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": 6882, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5271:7:23", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5271:29:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6888, + "nodeType": "ExpressionStatement", + "src": "5271:29:23" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6889, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6873, + "src": "5317:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "id": 6890, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6875, + "src": "5321:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5317:5:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6881, + "id": 6892, + "nodeType": "Return", + "src": "5310:12:23" + } + ] + }, + "documentation": { + "id": 6871, + "nodeType": "StructuredDocumentation", + "src": "4668:493:23", + "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n Reverts with custom message 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.\n _Available since v2.4.0._" + }, + "id": 6894, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mod", + "nameLocation": "5175:3:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6878, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6873, + "mutability": "mutable", + "name": "a", + "nameLocation": "5187:1:23", + "nodeType": "VariableDeclaration", + "scope": 6894, + "src": "5179:9:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6872, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5179:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6875, + "mutability": "mutable", + "name": "b", + "nameLocation": "5198:1:23", + "nodeType": "VariableDeclaration", + "scope": 6894, + "src": "5190:9:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6874, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5190:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6877, + "mutability": "mutable", + "name": "errorMessage", + "nameLocation": "5215:12:23", + "nodeType": "VariableDeclaration", + "scope": 6894, + "src": "5201:26:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6876, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5201:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "5178:50:23" + }, + "returnParameters": { + "id": 6881, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6880, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6894, + "src": "5252:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6879, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5252:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5251:9:23" + }, + "scope": 6895, + "src": "5166:163:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 6896, + "src": "623:4708:23", + "usedErrors": [] + } + ], + "src": "32:5299:23" + }, + "id": 23 + }, + "contracts/Math/UQ112x112.sol": { + "ast": { + "absolutePath": "contracts/Math/UQ112x112.sol", + "exportedSymbols": { + "UQ112x112": [ + 6939 + ] + }, + "id": 6940, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6897, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:24" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "UQ112x112", + "contractDependencies": [], + "contractKind": "library", + "fullyImplemented": true, + "id": 6939, + "linearizedBaseContracts": [ + 6939 + ], + "name": "UQ112x112", + "nameLocation": "224:9:24", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 6902, + "mutability": "constant", + "name": "Q112", + "nameLocation": "257:4:24", + "nodeType": "VariableDeclaration", + "scope": 6939, + "src": "240:30:24", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + }, + "typeName": { + "id": 6898, + "name": "uint224", + "nodeType": "ElementaryTypeName", + "src": "240:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_rational_5192296858534827628530496329220096_by_1", + "typeString": "int_const 5192...(26 digits omitted)...0096" + }, + "id": 6901, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 6899, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "264:1:24", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "313132", + "id": 6900, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "267:3:24", + "typeDescriptions": { + "typeIdentifier": "t_rational_112_by_1", + "typeString": "int_const 112" + }, + "value": "112" + }, + "src": "264:6:24", + "typeDescriptions": { + "typeIdentifier": "t_rational_5192296858534827628530496329220096_by_1", + "typeString": "int_const 5192...(26 digits omitted)...0096" + } + }, + "visibility": "internal" + }, + { + "body": { + "id": 6918, + "nodeType": "Block", + "src": "377:57:24", + "statements": [ + { + "expression": { + "id": 6916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6909, + "name": "z", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6907, + "src": "387:1:24", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + }, + "id": 6915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 6912, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6904, + "src": "399:1:24", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "id": 6911, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "391:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint224_$", + "typeString": "type(uint224)" + }, + "typeName": { + "id": 6910, + "name": "uint224", + "nodeType": "ElementaryTypeName", + "src": "391:7:24", + "typeDescriptions": {} + } + }, + "id": 6913, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "391:10:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6914, + "name": "Q112", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6902, + "src": "404:4:24", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "src": "391:17:24", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "src": "387:21:24", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "id": 6917, + "nodeType": "ExpressionStatement", + "src": "387:21:24" + } + ] + }, + "id": 6919, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "encode", + "nameLocation": "325:6:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6905, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6904, + "mutability": "mutable", + "name": "y", + "nameLocation": "340:1:24", + "nodeType": "VariableDeclaration", + "scope": 6919, + "src": "332:9:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 6903, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "332:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + } + ], + "src": "331:11:24" + }, + "returnParameters": { + "id": 6908, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6907, + "mutability": "mutable", + "name": "z", + "nameLocation": "374:1:24", + "nodeType": "VariableDeclaration", + "scope": 6919, + "src": "366:9:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + }, + "typeName": { + "id": 6906, + "name": "uint224", + "nodeType": "ElementaryTypeName", + "src": "366:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "visibility": "internal" + } + ], + "src": "365:11:24" + }, + "scope": 6939, + "src": "316:118:24", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6937, + "nodeType": "Block", + "src": "573:35:24", + "statements": [ + { + "expression": { + "id": 6935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6928, + "name": "z", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6926, + "src": "583:1:24", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + }, + "id": 6934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6929, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6921, + "src": "587:1:24", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "arguments": [ + { + "id": 6932, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6923, + "src": "599:1:24", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "id": 6931, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "591:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint224_$", + "typeString": "type(uint224)" + }, + "typeName": { + "id": 6930, + "name": "uint224", + "nodeType": "ElementaryTypeName", + "src": "591:7:24", + "typeDescriptions": {} + } + }, + "id": 6933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "591:10:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "src": "587:14:24", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "src": "583:18:24", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "id": 6936, + "nodeType": "ExpressionStatement", + "src": "583:18:24" + } + ] + }, + "id": 6938, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "uqdiv", + "nameLocation": "511:5:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6924, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6921, + "mutability": "mutable", + "name": "x", + "nameLocation": "525:1:24", + "nodeType": "VariableDeclaration", + "scope": 6938, + "src": "517:9:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + }, + "typeName": { + "id": 6920, + "name": "uint224", + "nodeType": "ElementaryTypeName", + "src": "517:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6923, + "mutability": "mutable", + "name": "y", + "nameLocation": "536:1:24", + "nodeType": "VariableDeclaration", + "scope": 6938, + "src": "528:9:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 6922, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "528:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + } + ], + "src": "516:22:24" + }, + "returnParameters": { + "id": 6927, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6926, + "mutability": "mutable", + "name": "z", + "nameLocation": "570:1:24", + "nodeType": "VariableDeclaration", + "scope": 6938, + "src": "562:9:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + }, + "typeName": { + "id": 6925, + "name": "uint224", + "nodeType": "ElementaryTypeName", + "src": "562:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "visibility": "internal" + } + ], + "src": "561:11:24" + }, + "scope": 6939, + "src": "502:106:24", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 6940, + "src": "216:394:24", + "usedErrors": [] + } + ], + "src": "32:578:24" + }, + "id": 24 + }, + "contracts/Oracle/Oracle.sol": { + "ast": { + "absolutePath": "contracts/Oracle/Oracle.sol", + "exportedSymbols": { + "AccessControl": [ + 6283 + ], + "Address": [ + 11543 + ], + "Context": [ + 456 + ], + "ECDSA": [ + 292 + ], + "EnumerableSet": [ + 11955 + ], + "Oracle": [ + 7078 + ] + }, + "id": 7079, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6941, + "literals": [ + "solidity", + ">=", + "0.6", + ".12" + ], + "nodeType": "PragmaDirective", + "src": "35:25:25" + }, + { + "absolutePath": "contracts/Governance/AccessControl.sol", + "file": "../Governance/AccessControl.sol", + "id": 6942, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7079, + "sourceUnit": 6284, + "src": "62:41:25", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", + "file": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", + "id": 6943, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7079, + "sourceUnit": 293, + "src": "104:62:25", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 6944, + "name": "AccessControl", + "nodeType": "IdentifierPath", + "referencedDeclaration": 6283, + "src": "187:13:25" + }, + "id": 6945, + "nodeType": "InheritanceSpecifier", + "src": "187:13:25" + } + ], + "canonicalName": "Oracle", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 7078, + "linearizedBaseContracts": [ + 7078, + 6283, + 456 + ], + "name": "Oracle", + "nameLocation": "177:6:25", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 6948, + "libraryName": { + "id": 6946, + "name": "ECDSA", + "nodeType": "IdentifierPath", + "referencedDeclaration": 292, + "src": "210:5:25" + }, + "nodeType": "UsingForDirective", + "src": "204:24:25", + "typeName": { + "id": 6947, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "220:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + { + "constant": true, + "functionSelector": "07e2cea5", + "id": 6953, + "mutability": "constant", + "name": "ORACLE_ROLE", + "nameLocation": "264:11:25", + "nodeType": "VariableDeclaration", + "scope": 7078, + "src": "240:62:25", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6949, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "240:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "4f5241434c455f524f4c45", + "id": 6951, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "288:13:25", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef1", + "typeString": "literal_string \"ORACLE_ROLE\"" + }, + "value": "ORACLE_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef1", + "typeString": "literal_string \"ORACLE_ROLE\"" + } + ], + "id": 6950, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "278:9:25", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6952, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "278:24:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "34ddb95d", + "id": 6958, + "mutability": "constant", + "name": "TRUSTY_ROLE", + "nameLocation": "329:11:25", + "nodeType": "VariableDeclaration", + "scope": 7078, + "src": "305:62:25", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6954, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "305:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "5452555354595f524f4c45", + "id": 6956, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "353:13:25", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c", + "typeString": "literal_string \"TRUSTY_ROLE\"" + }, + "value": "TRUSTY_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c", + "typeString": "literal_string \"TRUSTY_ROLE\"" + } + ], + "id": 6955, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "343:9:25", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6957, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "343:24:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": false, + "id": 6960, + "mutability": "mutable", + "name": "minimumRequiredSignature", + "nameLocation": "379:24:25", + "nodeType": "VariableDeclaration", + "scope": 7078, + "src": "371:32:25", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6959, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "371:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "anonymous": false, + "id": 6964, + "name": "MinimumRequiredSignatureSet", + "nameLocation": "413:27:25", + "nodeType": "EventDefinition", + "parameters": { + "id": 6963, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6962, + "indexed": false, + "mutability": "mutable", + "name": "minimumRequiredSignature", + "nameLocation": "449:24:25", + "nodeType": "VariableDeclaration", + "scope": 6964, + "src": "441:32:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6961, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "441:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "440:34:25" + }, + "src": "407:68:25" + }, + { + "body": { + "id": 6997, + "nodeType": "Block", + "src": "566:225:25", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6974, + "name": "_admin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6966, + "src": "578:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 6977, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "596:1:25", + "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": 6976, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "588:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6975, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "588:7:25", + "typeDescriptions": {} + } + }, + "id": 6978, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "588:10:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "578:20:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4f5241434c453a3a636f6e7374727563746f723a205a65726f2061646472657373206465746563746564", + "id": 6980, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "600:44:25", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f555e422e13ef1580aa8cf2129c12397e608acd890697d095ab25684b6a0f1f2", + "typeString": "literal_string \"ORACLE::constructor: Zero address detected\"" + }, + "value": "ORACLE::constructor: Zero address detected" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f555e422e13ef1580aa8cf2129c12397e608acd890697d095ab25684b6a0f1f2", + "typeString": "literal_string \"ORACLE::constructor: Zero address detected\"" + } + ], + "id": 6973, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "570:7:25", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "570:75:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6982, + "nodeType": "ExpressionStatement", + "src": "570:75:25" + }, + { + "expression": { + "arguments": [ + { + "id": 6984, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6026, + "src": "660:18:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6985, + "name": "_admin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6966, + "src": "680:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6983, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6209, + "src": "649:10:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 6986, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "649:38:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6987, + "nodeType": "ExpressionStatement", + "src": "649:38:25" + }, + { + "expression": { + "arguments": [ + { + "id": 6989, + "name": "TRUSTY_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6958, + "src": "702:11:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6990, + "name": "_trusty_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6970, + "src": "715:15:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6988, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6209, + "src": "691:10:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 6991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "691:40:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6992, + "nodeType": "ExpressionStatement", + "src": "691:40:25" + }, + { + "expression": { + "id": 6995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6993, + "name": "minimumRequiredSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6960, + "src": "735:24:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 6994, + "name": "_minimumRequiredSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6968, + "src": "762:25:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "735:52:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6996, + "nodeType": "ExpressionStatement", + "src": "735:52:25" + } + ] + }, + "id": 6998, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6971, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6966, + "mutability": "mutable", + "name": "_admin", + "nameLocation": "498:6:25", + "nodeType": "VariableDeclaration", + "scope": 6998, + "src": "490:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6965, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "490:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6968, + "mutability": "mutable", + "name": "_minimumRequiredSignature", + "nameLocation": "514:25:25", + "nodeType": "VariableDeclaration", + "scope": 6998, + "src": "506:33:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6967, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "506:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6970, + "mutability": "mutable", + "name": "_trusty_address", + "nameLocation": "549:15:25", + "nodeType": "VariableDeclaration", + "scope": 6998, + "src": "541:23:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6969, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "541:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "489:76:25" + }, + "returnParameters": { + "id": 6972, + "nodeType": "ParameterList", + "parameters": [], + "src": "566:0:25" + }, + "scope": 7078, + "src": "478:313:25", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 7053, + "nodeType": "Block", + "src": "881:337:25", + "statements": [ + { + "assignments": [ + 7009 + ], + "declarations": [ + { + "constant": false, + "id": 7009, + "mutability": "mutable", + "name": "lastOracle", + "nameLocation": "893:10:25", + "nodeType": "VariableDeclaration", + "scope": 7053, + "src": "885:18:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7008, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "885:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 7010, + "nodeType": "VariableDeclarationStatement", + "src": "885:18:25" + }, + { + "body": { + "id": 7049, + "nodeType": "Block", + "src": "974:226:25", + "statements": [ + { + "assignments": [ + 7022 + ], + "declarations": [ + { + "constant": false, + "id": 7022, + "mutability": "mutable", + "name": "oracle", + "nameLocation": "987:6:25", + "nodeType": "VariableDeclaration", + "scope": 7049, + "src": "979:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7021, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "979:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 7029, + "initialValue": { + "arguments": [ + { + "baseExpression": { + "id": 7025, + "name": "sigs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7003, + "src": "1009:4:25", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + "id": 7027, + "indexExpression": { + "id": 7026, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7012, + "src": "1014:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1009:11:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "expression": { + "id": 7023, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7000, + "src": "996:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "recover", + "nodeType": "MemberAccess", + "referencedDeclaration": 170, + "src": "996:12:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" + } + }, + "id": 7028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "996:25:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "979:42:25" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 7032, + "name": "ORACLE_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6953, + "src": "1042:11:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 7033, + "name": "oracle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7022, + "src": "1055:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7031, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6072, + "src": "1034:7:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 7034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1034:28:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4f5241434c453a3a7665726966793a205369676e6572206973206e6f742076616c6964", + "id": 7035, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1064:37:25", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f49242a8c58b7e5d7c6bcf7ccc435caa225efcedb9b0bea48b1712423a64bfad", + "typeString": "literal_string \"ORACLE::verify: Signer is not valid\"" + }, + "value": "ORACLE::verify: Signer is not valid" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f49242a8c58b7e5d7c6bcf7ccc435caa225efcedb9b0bea48b1712423a64bfad", + "typeString": "literal_string \"ORACLE::verify: Signer is not valid\"" + } + ], + "id": 7030, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1026:7:25", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7036, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1026:76:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7037, + "nodeType": "ExpressionStatement", + "src": "1026:76:25" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 7041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7039, + "name": "oracle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7022, + "src": "1115:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 7040, + "name": "lastOracle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7009, + "src": "1124:10:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1115:19:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4f5241434c453a3a7665726966793a205369676e657273206172652073616d65", + "id": 7042, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1136:34:25", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d5d2e037576918c87bbde6cf67701494bc4ee0065100375f813a31cf631ead15", + "typeString": "literal_string \"ORACLE::verify: Signers are same\"" + }, + "value": "ORACLE::verify: Signers are same" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d5d2e037576918c87bbde6cf67701494bc4ee0065100375f813a31cf631ead15", + "typeString": "literal_string \"ORACLE::verify: Signers are same\"" + } + ], + "id": 7038, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1107:7:25", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1107:64:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7044, + "nodeType": "ExpressionStatement", + "src": "1107:64:25" + }, + { + "expression": { + "id": 7047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7045, + "name": "lastOracle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7009, + "src": "1176:10:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7046, + "name": "oracle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7022, + "src": "1189:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1176:19:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 7048, + "nodeType": "ExpressionStatement", + "src": "1176:19:25" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7015, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7012, + "src": "931:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 7016, + "name": "minimumRequiredSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6960, + "src": "939:24:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "931:32:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7050, + "initializationExpression": { + "assignments": [ + 7012 + ], + "declarations": [ + { + "constant": false, + "id": 7012, + "mutability": "mutable", + "name": "index", + "nameLocation": "920:5:25", + "nodeType": "VariableDeclaration", + "scope": 7050, + "src": "912:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7011, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "912:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7014, + "initialValue": { + "hexValue": "30", + "id": 7013, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "928:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "912:17:25" + }, + "loopExpression": { + "expression": { + "id": 7019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "965:7:25", + "subExpression": { + "id": 7018, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7012, + "src": "967:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7020, + "nodeType": "ExpressionStatement", + "src": "965:7:25" + }, + "nodeType": "ForStatement", + "src": "907:293:25" + }, + { + "expression": { + "hexValue": "74727565", + "id": 7051, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1210:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 7007, + "id": 7052, + "nodeType": "Return", + "src": "1203:11:25" + } + ] + }, + "functionSelector": "fb0fe3f4", + "id": 7054, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verify", + "nameLocation": "803:6:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7004, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7000, + "mutability": "mutable", + "name": "hash", + "nameLocation": "818:4:25", + "nodeType": "VariableDeclaration", + "scope": 7054, + "src": "810:12:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6999, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "810:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7003, + "mutability": "mutable", + "name": "sigs", + "nameLocation": "841:4:25", + "nodeType": "VariableDeclaration", + "scope": 7054, + "src": "824:21:25", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 7001, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "824:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 7002, + "nodeType": "ArrayTypeName", + "src": "824:7:25", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "809:37:25" + }, + "returnParameters": { + "id": 7007, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7006, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7054, + "src": "874:4:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7005, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "874:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "873:6:25" + }, + "scope": 7078, + "src": "794:424:25", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 7076, + "nodeType": "Block", + "src": "1303:238:25", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 7061, + "name": "TRUSTY_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6958, + "src": "1327:11:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 7062, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1340:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 7063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "1340:10:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7060, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6072, + "src": "1319:7:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 7064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1319:32:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4f5241434c453a3a7365744d696e696d756d52657175697265645369676e61747572653a20596f7520617265206e6f7420747275737479", + "id": 7065, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1356:57:25", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_aaf7eb7c0c4c3933c3a7f2471eeb8fc9d0b57167f2c598c852eb594b49cbe3ec", + "typeString": "literal_string \"ORACLE::setMinimumRequiredSignature: You are not trusty\"" + }, + "value": "ORACLE::setMinimumRequiredSignature: You are not trusty" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_aaf7eb7c0c4c3933c3a7f2471eeb8fc9d0b57167f2c598c852eb594b49cbe3ec", + "typeString": "literal_string \"ORACLE::setMinimumRequiredSignature: You are not trusty\"" + } + ], + "id": 7059, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1307:7:25", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1307:110:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7067, + "nodeType": "ExpressionStatement", + "src": "1307:110:25" + }, + { + "expression": { + "id": 7070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7068, + "name": "minimumRequiredSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6960, + "src": "1421:24:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7069, + "name": "_minimumRequiredSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7056, + "src": "1448:25:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1421:52:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7071, + "nodeType": "ExpressionStatement", + "src": "1421:52:25" + }, + { + "eventCall": { + "arguments": [ + { + "id": 7073, + "name": "_minimumRequiredSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7056, + "src": "1511:25:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7072, + "name": "MinimumRequiredSignatureSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6964, + "src": "1483:27:25", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 7074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1483:54:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7075, + "nodeType": "EmitStatement", + "src": "1478:59:25" + } + ] + }, + "functionSelector": "80f341ed", + "id": 7077, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setMinimumRequiredSignature", + "nameLocation": "1230:27:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7057, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7056, + "mutability": "mutable", + "name": "_minimumRequiredSignature", + "nameLocation": "1266:25:25", + "nodeType": "VariableDeclaration", + "scope": 7077, + "src": "1258:33:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7055, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1258:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1257:35:25" + }, + "returnParameters": { + "id": 7058, + "nodeType": "ParameterList", + "parameters": [], + "src": "1303:0:25" + }, + "scope": 7078, + "src": "1221:320:25", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 7079, + "src": "168:1375:25", + "usedErrors": [] + } + ], + "src": "35:1527:25" + }, + "id": 25 + }, + "contracts/Oracle/ReserveTracker.sol": { + "ast": { + "absolutePath": "contracts/Oracle/ReserveTracker.sol", + "exportedSymbols": { + "AccessControl": [ + 6283 + ], + "Address": [ + 11543 + ], + "Context": [ + 456 + ], + "EnumerableSet": [ + 11955 + ], + "IUniswapV2Pair": [ + 8607 + ], + "Math": [ + 6410 + ], + "ReserveTracker": [ + 7317 + ], + "SafeMath": [ + 6895 + ] + }, + "id": 7318, + "license": "GPL-2.0-or-later", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7080, + "literals": [ + "solidity", + "^", + "0.8", + ".7" + ], + "nodeType": "PragmaDirective", + "src": "80:23:26" + }, + { + "absolutePath": "contracts/Math/SafeMath.sol", + "file": "../Math/SafeMath.sol", + "id": 7081, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7318, + "sourceUnit": 6896, + "src": "1479:30:26", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Math/Math.sol", + "file": "../Math/Math.sol", + "id": 7082, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7318, + "sourceUnit": 6411, + "src": "1510:26:26", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Uniswap/Interfaces/IUniswapV2Pair.sol", + "file": "../Uniswap/Interfaces/IUniswapV2Pair.sol", + "id": 7083, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7318, + "sourceUnit": 8608, + "src": "1537:50:26", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Governance/AccessControl.sol", + "file": "../Governance/AccessControl.sol", + "id": 7084, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7318, + "sourceUnit": 6284, + "src": "1588:41:26", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 7085, + "name": "AccessControl", + "nodeType": "IdentifierPath", + "referencedDeclaration": 6283, + "src": "1658:13:26" + }, + "id": 7086, + "nodeType": "InheritanceSpecifier", + "src": "1658:13:26" + } + ], + "canonicalName": "ReserveTracker", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 7317, + "linearizedBaseContracts": [ + 7317, + 6283, + 456 + ], + "name": "ReserveTracker", + "nameLocation": "1640:14:26", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "functionSelector": "34ddb95d", + "id": 7091, + "mutability": "constant", + "name": "TRUSTY_ROLE", + "nameLocation": "1713:11:26", + "nodeType": "VariableDeclaration", + "scope": 7317, + "src": "1689:62:26", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7087, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1689:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "5452555354595f524f4c45", + "id": 7089, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1737:13:26", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c", + "typeString": "literal_string \"TRUSTY_ROLE\"" + }, + "value": "TRUSTY_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c", + "typeString": "literal_string \"TRUSTY_ROLE\"" + } + ], + "id": 7088, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1727:9:26", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 7090, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1727:24:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": false, + "id": 7094, + "mutability": "mutable", + "name": "PRICE_PRECISION", + "nameLocation": "1794:15:26", + "nodeType": "VariableDeclaration", + "scope": 7317, + "src": "1778:37:26", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7092, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1778:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "316536", + "id": 7093, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1812:3:26", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1e6" + }, + "visibility": "private" + }, + { + "constant": false, + "id": 7096, + "mutability": "mutable", + "name": "dei_contract_address", + "nameLocation": "1858:20:26", + "nodeType": "VariableDeclaration", + "scope": 7317, + "src": "1842:36:26", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7095, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1842:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 7098, + "mutability": "mutable", + "name": "deus_contract_address", + "nameLocation": "1897:21:26", + "nodeType": "VariableDeclaration", + "scope": 7317, + "src": "1881:37:26", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7097, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1881:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "private" + }, + { + "constant": false, + "functionSelector": "03e63f10", + "id": 7101, + "mutability": "mutable", + "name": "deus_pairs_array", + "nameLocation": "1967:16:26", + "nodeType": "VariableDeclaration", + "scope": 7317, + "src": "1950:33:26", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 7099, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1950:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 7100, + "nodeType": "ArrayTypeName", + "src": "1950:9:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "28bb931d", + "id": 7105, + "mutability": "mutable", + "name": "deus_pairs", + "nameLocation": "2068:10:26", + "nodeType": "VariableDeclaration", + "scope": 7317, + "src": "2036:42:26", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 7104, + "keyType": { + "id": 7102, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2044:7:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2036:24:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 7103, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2055:4:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "visibility": "public" + }, + { + "body": { + "id": 7117, + "nodeType": "Block", + "src": "2141:78:26", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 7109, + "name": "TRUSTY_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7091, + "src": "2161:11:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 7110, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2174:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 7111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2174:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7108, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6072, + "src": "2153:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 7112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2153:32:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "43616c6c6572206973206e6f7420747275737479", + "id": 7113, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2187:22:26", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6b10e2daa74c4bd90e2b033a7c8b36efc27432a6a263e78fda3e12fb2deb6a00", + "typeString": "literal_string \"Caller is not trusty\"" + }, + "value": "Caller is not trusty" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6b10e2daa74c4bd90e2b033a7c8b36efc27432a6a263e78fda3e12fb2deb6a00", + "typeString": "literal_string \"Caller is not trusty\"" + } + ], + "id": 7107, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2145:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2145:65:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7115, + "nodeType": "ExpressionStatement", + "src": "2145:65:26" + }, + { + "id": 7116, + "nodeType": "PlaceholderStatement", + "src": "2214:1:26" + } + ] + }, + "id": 7118, + "name": "onlyTrusty", + "nameLocation": "2128:10:26", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 7106, + "nodeType": "ParameterList", + "parameters": [], + "src": "2138:2:26" + }, + "src": "2119:100:26", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7145, + "nodeType": "Block", + "src": "2343:187:26", + "statements": [ + { + "expression": { + "id": 7127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7125, + "name": "dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7096, + "src": "2347:20:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7126, + "name": "_dei_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7120, + "src": "2370:21:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2347:44:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 7128, + "nodeType": "ExpressionStatement", + "src": "2347:44:26" + }, + { + "expression": { + "id": 7131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7129, + "name": "deus_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7098, + "src": "2395:21:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7130, + "name": "_deus_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7122, + "src": "2419:22:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2395:46:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 7132, + "nodeType": "ExpressionStatement", + "src": "2395:46:26" + }, + { + "expression": { + "arguments": [ + { + "id": 7134, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6026, + "src": "2456:18:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 7135, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2476:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 7136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2476:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7133, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6209, + "src": "2445:10:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 7137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2445:42:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7138, + "nodeType": "ExpressionStatement", + "src": "2445:42:26" + }, + { + "expression": { + "arguments": [ + { + "id": 7140, + "name": "TRUSTY_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7091, + "src": "2502:11:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 7141, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2515:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 7142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2515:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7139, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6209, + "src": "2491:10:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 7143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2491:35:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7144, + "nodeType": "ExpressionStatement", + "src": "2491:35:26" + } + ] + }, + "id": 7146, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7123, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7120, + "mutability": "mutable", + "name": "_dei_contract_address", + "nameLocation": "2284:21:26", + "nodeType": "VariableDeclaration", + "scope": 7146, + "src": "2276:29:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7119, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2276:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7122, + "mutability": "mutable", + "name": "_deus_contract_address", + "nameLocation": "2317:22:26", + "nodeType": "VariableDeclaration", + "scope": 7146, + "src": "2309:30:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7121, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2309:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2272:70:26" + }, + "returnParameters": { + "id": 7124, + "nodeType": "ParameterList", + "parameters": [], + "src": "2343:0:26" + }, + "scope": 7317, + "src": "2261:269:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 7234, + "nodeType": "Block", + "src": "2623:660:26", + "statements": [ + { + "assignments": [ + 7152 + ], + "declarations": [ + { + "constant": false, + "id": 7152, + "mutability": "mutable", + "name": "total_deus_reserves", + "nameLocation": "2635:19:26", + "nodeType": "VariableDeclaration", + "scope": 7234, + "src": "2627:27:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7151, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2627:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7154, + "initialValue": { + "hexValue": "30", + "id": 7153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2657:1:26", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2627:31:26" + }, + { + "body": { + "id": 7230, + "nodeType": "Block", + "src": "2713:536:26", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 7173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 7166, + "name": "deus_pairs_array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7101, + "src": "2752:16:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 7168, + "indexExpression": { + "id": 7167, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7156, + "src": "2769:1:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2752:19:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 7171, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2783:1:26", + "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": 7170, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2775:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7169, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2775:7:26", + "typeDescriptions": {} + } + }, + "id": 7172, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2775:10:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2752:33:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7229, + "nodeType": "IfStatement", + "src": "2748:497:26", + "trueBody": { + "id": 7228, + "nodeType": "Block", + "src": "2786:459:26", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 7182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 7175, + "name": "deus_pairs_array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7101, + "src": "2810:16:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 7177, + "indexExpression": { + "id": 7176, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7156, + "src": "2827:1:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2810:19:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7174, + "name": "IUniswapV2Pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8607, + "src": "2795:14:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$8607_$", + "typeString": "type(contract IUniswapV2Pair)" + } + }, + "id": 7178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2795:35:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Pair_$8607", + "typeString": "contract IUniswapV2Pair" + } + }, + "id": 7179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "token0", + "nodeType": "MemberAccess", + "referencedDeclaration": 8535, + "src": "2795:42:26", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 7180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2795:44:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 7181, + "name": "deus_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7098, + "src": "2843:21:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2795:69:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 7208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 7201, + "name": "deus_pairs_array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7101, + "src": "3037:16:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 7203, + "indexExpression": { + "id": 7202, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7156, + "src": "3054:1:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3037:19:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7200, + "name": "IUniswapV2Pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8607, + "src": "3022:14:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$8607_$", + "typeString": "type(contract IUniswapV2Pair)" + } + }, + "id": 7204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3022:35:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Pair_$8607", + "typeString": "contract IUniswapV2Pair" + } + }, + "id": 7205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "token1", + "nodeType": "MemberAccess", + "referencedDeclaration": 8540, + "src": "3022:42:26", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 7206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3022:44:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 7207, + "name": "deus_contract_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7098, + "src": "3070:21:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3022:69:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7226, + "nodeType": "IfStatement", + "src": "3018:222:26", + "trueBody": { + "id": 7225, + "nodeType": "Block", + "src": "3093:147:26", + "statements": [ + { + "assignments": [ + null, + 7210, + null + ], + "declarations": [ + null, + { + "constant": false, + "id": 7210, + "mutability": "mutable", + "name": "reserves1", + "nameLocation": "3109:9:26", + "nodeType": "VariableDeclaration", + "scope": 7225, + "src": "3104:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7209, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3104:4:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + null + ], + "id": 7218, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 7212, + "name": "deus_pairs_array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7101, + "src": "3139:16:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 7214, + "indexExpression": { + "id": 7213, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7156, + "src": "3156:1:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3139:19:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7211, + "name": "IUniswapV2Pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8607, + "src": "3124:14:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$8607_$", + "typeString": "type(contract IUniswapV2Pair)" + } + }, + "id": 7215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3124:35:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Pair_$8607", + "typeString": "contract IUniswapV2Pair" + } + }, + "id": 7216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getReserves", + "nodeType": "MemberAccess", + "referencedDeclaration": 8549, + "src": "3124:47:26", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$", + "typeString": "function () view external returns (uint112,uint112,uint32)" + } + }, + "id": 7217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3124:49:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$", + "typeString": "tuple(uint112,uint112,uint32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3100:73:26" + }, + { + "expression": { + "id": 7223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7219, + "name": "total_deus_reserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7152, + "src": "3180:19:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7220, + "name": "total_deus_reserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7152, + "src": "3202:19:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 7221, + "name": "reserves1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7210, + "src": "3224:9:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3202:31:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3180:53:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7224, + "nodeType": "ExpressionStatement", + "src": "3180:53:26" + } + ] + } + }, + "id": 7227, + "nodeType": "IfStatement", + "src": "2792:448:26", + "trueBody": { + "id": 7199, + "nodeType": "Block", + "src": "2866:146:26", + "statements": [ + { + "assignments": [ + 7184, + null, + null + ], + "declarations": [ + { + "constant": false, + "id": 7184, + "mutability": "mutable", + "name": "reserves0", + "nameLocation": "2879:9:26", + "nodeType": "VariableDeclaration", + "scope": 7199, + "src": "2874:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7183, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2874:4:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + null, + null + ], + "id": 7192, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 7186, + "name": "deus_pairs_array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7101, + "src": "2911:16:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 7188, + "indexExpression": { + "id": 7187, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7156, + "src": "2928:1:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2911:19:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7185, + "name": "IUniswapV2Pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8607, + "src": "2896:14:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$8607_$", + "typeString": "type(contract IUniswapV2Pair)" + } + }, + "id": 7189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2896:35:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Pair_$8607", + "typeString": "contract IUniswapV2Pair" + } + }, + "id": 7190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getReserves", + "nodeType": "MemberAccess", + "referencedDeclaration": 8549, + "src": "2896:47:26", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$", + "typeString": "function () view external returns (uint112,uint112,uint32)" + } + }, + "id": 7191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2896:49:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$", + "typeString": "tuple(uint112,uint112,uint32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2873:72:26" + }, + { + "expression": { + "id": 7197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7193, + "name": "total_deus_reserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7152, + "src": "2952:19:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7194, + "name": "total_deus_reserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7152, + "src": "2974:19:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 7195, + "name": "reserves0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7184, + "src": "2996:9:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2974:31:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2952:53:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7198, + "nodeType": "ExpressionStatement", + "src": "2952:53:26" + } + ] + } + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7159, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7156, + "src": "2680:1:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 7160, + "name": "deus_pairs_array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7101, + "src": "2684:16:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 7161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2684:23:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2680:27:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7231, + "initializationExpression": { + "assignments": [ + 7156 + ], + "declarations": [ + { + "constant": false, + "id": 7156, + "mutability": "mutable", + "name": "i", + "nameLocation": "2673:1:26", + "nodeType": "VariableDeclaration", + "scope": 7231, + "src": "2668:6:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7155, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2668:4:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7158, + "initialValue": { + "hexValue": "30", + "id": 7157, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2677:1:26", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2668:10:26" + }, + "loopExpression": { + "expression": { + "id": 7164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2709:3:26", + "subExpression": { + "id": 7163, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7156, + "src": "2709:1:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7165, + "nodeType": "ExpressionStatement", + "src": "2709:3:26" + }, + "nodeType": "ForStatement", + "src": "2663:586:26" + }, + { + "expression": { + "id": 7232, + "name": "total_deus_reserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7152, + "src": "3260:19:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7150, + "id": 7233, + "nodeType": "Return", + "src": "3253:26:26" + } + ] + }, + "functionSelector": "00a66f1f", + "id": 7235, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDEUSReserves", + "nameLocation": "2575:15:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7147, + "nodeType": "ParameterList", + "parameters": [], + "src": "2590:2:26" + }, + "returnParameters": { + "id": 7150, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7149, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7235, + "src": "2614:7:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7148, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2614:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2613:9:26" + }, + "scope": 7317, + "src": "2566:717:26", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 7263, + "nodeType": "Block", + "src": "3428:151:26", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 7243, + "name": "deus_pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7105, + "src": "3440:10:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 7245, + "indexExpression": { + "id": 7244, + "name": "pair_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7237, + "src": "3451:12:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3440:24:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "66616c7365", + "id": 7246, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3468:5:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "3440:33:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4164647265737320616c726561647920657869737473", + "id": 7248, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3475:24:26", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9e965fdb7b16a3f4f14198070d028fb3bb36e98eebe579c3925cf405ea3f22f0", + "typeString": "literal_string \"Address already exists\"" + }, + "value": "Address already exists" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9e965fdb7b16a3f4f14198070d028fb3bb36e98eebe579c3925cf405ea3f22f0", + "typeString": "literal_string \"Address already exists\"" + } + ], + "id": 7242, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3432:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3432:68:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7250, + "nodeType": "ExpressionStatement", + "src": "3432:68:26" + }, + { + "expression": { + "id": 7255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 7251, + "name": "deus_pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7105, + "src": "3504:10:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 7253, + "indexExpression": { + "id": 7252, + "name": "pair_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7237, + "src": "3515:12:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3504:24:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 7254, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3531:4:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "3504:31:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7256, + "nodeType": "ExpressionStatement", + "src": "3504:31:26" + }, + { + "expression": { + "arguments": [ + { + "id": 7260, + "name": "pair_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7237, + "src": "3562:12:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 7257, + "name": "deus_pairs_array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7101, + "src": "3540:16:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 7259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "src": "3540:21:26", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$bound_to$_t_array$_t_address_$dyn_storage_ptr_$", + "typeString": "function (address[] storage pointer,address)" + } + }, + "id": 7261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3540:35:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7262, + "nodeType": "ExpressionStatement", + "src": "3540:35:26" + } + ] + }, + "functionSelector": "31738fcc", + "id": 7264, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 7240, + "kind": "modifierInvocation", + "modifierName": { + "id": 7239, + "name": "onlyTrusty", + "nodeType": "IdentifierPath", + "referencedDeclaration": 7118, + "src": "3417:10:26" + }, + "nodeType": "ModifierInvocation", + "src": "3417:10:26" + } + ], + "name": "addDEUSPair", + "nameLocation": "3376:11:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7238, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7237, + "mutability": "mutable", + "name": "pair_address", + "nameLocation": "3396:12:26", + "nodeType": "VariableDeclaration", + "scope": 7264, + "src": "3388:20:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7236, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3388:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3387:22:26" + }, + "returnParameters": { + "id": 7241, + "nodeType": "ParameterList", + "parameters": [], + "src": "3428:0:26" + }, + "scope": 7317, + "src": "3367:212:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 7315, + "nodeType": "Block", + "src": "3665:427:26", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 7272, + "name": "deus_pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7105, + "src": "3677:10:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 7274, + "indexExpression": { + "id": 7273, + "name": "pair_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7266, + "src": "3688:12:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3677:24:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "74727565", + "id": 7275, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3705:4:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "3677:32:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "41646472657373206e6f6e6578697374616e74", + "id": 7277, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3711:21:26", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_abb079c1f41ac6b4331fb7996590da27000be0644f42809ff78294ca58eada73", + "typeString": "literal_string \"Address nonexistant\"" + }, + "value": "Address nonexistant" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_abb079c1f41ac6b4331fb7996590da27000be0644f42809ff78294ca58eada73", + "typeString": "literal_string \"Address nonexistant\"" + } + ], + "id": 7271, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3669:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3669:64:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7279, + "nodeType": "ExpressionStatement", + "src": "3669:64:26" + }, + { + "expression": { + "id": 7283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "3769:31:26", + "subExpression": { + "baseExpression": { + "id": 7280, + "name": "deus_pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7105, + "src": "3776:10:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 7282, + "indexExpression": { + "id": 7281, + "name": "pair_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7266, + "src": "3787:12:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3776:24:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7284, + "nodeType": "ExpressionStatement", + "src": "3769:31:26" + }, + { + "body": { + "id": 7313, + "nodeType": "Block", + "src": "3914:175:26", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 7300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 7296, + "name": "deus_pairs_array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7101, + "src": "3924:16:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 7298, + "indexExpression": { + "id": 7297, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7286, + "src": "3941:1:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3924:19:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 7299, + "name": "pair_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7266, + "src": "3947:12:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3924:35:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7312, + "nodeType": "IfStatement", + "src": "3920:165:26", + "trueBody": { + "id": 7311, + "nodeType": "Block", + "src": "3961:124:26", + "statements": [ + { + "expression": { + "id": 7308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 7301, + "name": "deus_pairs_array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7101, + "src": "3967:16:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 7303, + "indexExpression": { + "id": 7302, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7286, + "src": "3984:1:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3967:19:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 7306, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3997:1:26", + "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": 7305, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3989:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7304, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3989:7:26", + "typeDescriptions": {} + } + }, + "id": 7307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3989:10:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3967:32:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 7309, + "nodeType": "ExpressionStatement", + "src": "3967:32:26" + }, + { + "id": 7310, + "nodeType": "Break", + "src": "4074:5:26" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7289, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7286, + "src": "3881:1:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 7290, + "name": "deus_pairs_array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7101, + "src": "3885:16:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 7291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3885:23:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3881:27:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7314, + "initializationExpression": { + "assignments": [ + 7286 + ], + "declarations": [ + { + "constant": false, + "id": 7286, + "mutability": "mutable", + "name": "i", + "nameLocation": "3874:1:26", + "nodeType": "VariableDeclaration", + "scope": 7314, + "src": "3869:6:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7285, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3869:4:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7288, + "initialValue": { + "hexValue": "30", + "id": 7287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3878:1:26", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "3869:10:26" + }, + "loopExpression": { + "expression": { + "id": 7294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3910:3:26", + "subExpression": { + "id": 7293, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7286, + "src": "3910:1:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7295, + "nodeType": "ExpressionStatement", + "src": "3910:3:26" + }, + "nodeType": "ForStatement", + "src": "3864:225:26" + } + ] + }, + "functionSelector": "b28e750e", + "id": 7316, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 7269, + "kind": "modifierInvocation", + "modifierName": { + "id": 7268, + "name": "onlyTrusty", + "nodeType": "IdentifierPath", + "referencedDeclaration": 7118, + "src": "3654:10:26" + }, + "nodeType": "ModifierInvocation", + "src": "3654:10:26" + } + ], + "name": "removeDEUSPair", + "nameLocation": "3610:14:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7267, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7266, + "mutability": "mutable", + "name": "pair_address", + "nameLocation": "3633:12:26", + "nodeType": "VariableDeclaration", + "scope": 7316, + "src": "3625:20:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7265, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3625:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3624:22:26" + }, + "returnParameters": { + "id": 7270, + "nodeType": "ParameterList", + "parameters": [], + "src": "3665:0:26" + }, + "scope": 7317, + "src": "3601:491:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 7318, + "src": "1631:2463:26", + "usedErrors": [] + } + ], + "src": "80:4033:26" + }, + "id": 26 + }, + "contracts/Staking/Staking.sol": { + "ast": { + "absolutePath": "contracts/Staking/Staking.sol", + "exportedSymbols": { + "AccessControl": [ + 6283 + ], + "Address": [ + 11543 + ], + "Context": [ + 456 + ], + "DEUSToken": [ + 7356 + ], + "EnumerableSet": [ + 11955 + ], + "IERC20": [ + 7348 + ], + "Staking": [ + 8170 + ] + }, + "id": 8171, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7319, + "literals": [ + "solidity", + "^", + "0.8", + ".9" + ], + "nodeType": "PragmaDirective", + "src": "1243:23:27" + }, + { + "absolutePath": "contracts/Governance/AccessControl.sol", + "file": "../Governance/AccessControl.sol", + "id": 7320, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8171, + "sourceUnit": 6284, + "src": "1268:41:27", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC20", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 7348, + "linearizedBaseContracts": [ + 7348 + ], + "name": "IERC20", + "nameLocation": "1321:6:27", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "70a08231", + "id": 7327, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "1340:9:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7323, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7322, + "mutability": "mutable", + "name": "account", + "nameLocation": "1358:7:27", + "nodeType": "VariableDeclaration", + "scope": 7327, + "src": "1350:15:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7321, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1350:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1349:17:27" + }, + "returnParameters": { + "id": 7326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7325, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7327, + "src": "1390:7:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7324, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1390:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1389:9:27" + }, + "scope": 7348, + "src": "1331:68:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a9059cbb", + "id": 7336, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "1410:8:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7332, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7329, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "1427:9:27", + "nodeType": "VariableDeclaration", + "scope": 7336, + "src": "1419:17:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7328, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1419:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7331, + "mutability": "mutable", + "name": "amount", + "nameLocation": "1446:6:27", + "nodeType": "VariableDeclaration", + "scope": 7336, + "src": "1438:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7330, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1438:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1418:35:27" + }, + "returnParameters": { + "id": 7335, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7334, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7336, + "src": "1472:4:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7333, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1472:4:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1471:6:27" + }, + "scope": 7348, + "src": "1401:77:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "23b872dd", + "id": 7347, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "1489:12:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7343, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7338, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1510:6:27", + "nodeType": "VariableDeclaration", + "scope": 7347, + "src": "1502:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7337, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1502:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7340, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "1526:9:27", + "nodeType": "VariableDeclaration", + "scope": 7347, + "src": "1518:17:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7339, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1518:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7342, + "mutability": "mutable", + "name": "amount", + "nameLocation": "1545:6:27", + "nodeType": "VariableDeclaration", + "scope": 7347, + "src": "1537:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7341, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1537:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1501:51:27" + }, + "returnParameters": { + "id": 7346, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7345, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7347, + "src": "1571:4:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7344, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1571:4:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1570:6:27" + }, + "scope": 7348, + "src": "1480:97:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 8171, + "src": "1311:268:27", + "usedErrors": [] + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "DEUSToken", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 7356, + "linearizedBaseContracts": [ + 7356 + ], + "name": "DEUSToken", + "nameLocation": "1591:9:27", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "b4f56b26", + "id": 7355, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "pool_mint", + "nameLocation": "1613:9:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7353, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7350, + "mutability": "mutable", + "name": "m_address", + "nameLocation": "1631:9:27", + "nodeType": "VariableDeclaration", + "scope": 7355, + "src": "1623:17:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7349, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1623:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7352, + "mutability": "mutable", + "name": "m_amount", + "nameLocation": "1650:8:27", + "nodeType": "VariableDeclaration", + "scope": 7355, + "src": "1642:16:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7351, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1642:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1622:37:27" + }, + "returnParameters": { + "id": 7354, + "nodeType": "ParameterList", + "parameters": [], + "src": "1668:0:27" + }, + "scope": 7356, + "src": "1604:65:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 8171, + "src": "1581:90:27", + "usedErrors": [] + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 7357, + "name": "AccessControl", + "nodeType": "IdentifierPath", + "referencedDeclaration": 6283, + "src": "1693:13:27" + }, + "id": 7358, + "nodeType": "InheritanceSpecifier", + "src": "1693:13:27" + } + ], + "canonicalName": "Staking", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 8170, + "linearizedBaseContracts": [ + 8170, + 6283, + 456 + ], + "name": "Staking", + "nameLocation": "1682:7:27", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Staking.User", + "id": 7363, + "members": [ + { + "constant": false, + "id": 7360, + "mutability": "mutable", + "name": "depositAmount", + "nameLocation": "1735:13:27", + "nodeType": "VariableDeclaration", + "scope": 7363, + "src": "1727:21:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7359, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1727:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7362, + "mutability": "mutable", + "name": "paidReward", + "nameLocation": "1760:10:27", + "nodeType": "VariableDeclaration", + "scope": 7363, + "src": "1752:18:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7361, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1752:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "User", + "nameLocation": "1718:4:27", + "nodeType": "StructDefinition", + "scope": 8170, + "src": "1711:63:27", + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "a87430ba", + "id": 7368, + "mutability": "mutable", + "name": "users", + "nameLocation": "1810:5:27", + "nodeType": "VariableDeclaration", + "scope": 8170, + "src": "1777:38:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$7363_storage_$", + "typeString": "mapping(address => struct Staking.User)" + }, + "typeName": { + "id": 7367, + "keyType": { + "id": 7364, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1786:7:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1777:25:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$7363_storage_$", + "typeString": "mapping(address => struct Staking.User)" + }, + "valueType": { + "id": 7366, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7365, + "name": "User", + "nodeType": "IdentifierPath", + "referencedDeclaration": 7363, + "src": "1797:4:27" + }, + "referencedDeclaration": 7363, + "src": "1797:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User" + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "60c6cdac", + "id": 7371, + "mutability": "mutable", + "name": "rewardTillNowPerToken", + "nameLocation": "1834:21:27", + "nodeType": "VariableDeclaration", + "scope": 8170, + "src": "1819:40:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7369, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1819:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30", + "id": 7370, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1858:1:27", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "f90ce5ba", + "id": 7373, + "mutability": "mutable", + "name": "lastUpdatedBlock", + "nameLocation": "1877:16:27", + "nodeType": "VariableDeclaration", + "scope": 8170, + "src": "1862:31:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7372, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1862:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "8ae39cac", + "id": 7375, + "mutability": "mutable", + "name": "rewardPerBlock", + "nameLocation": "1911:14:27", + "nodeType": "VariableDeclaration", + "scope": 8170, + "src": "1896:29:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7374, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1896:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "f51e181a", + "id": 7378, + "mutability": "mutable", + "name": "scale", + "nameLocation": "1943:5:27", + "nodeType": "VariableDeclaration", + "scope": 8170, + "src": "1928:27:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7376, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1928:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "31653138", + "id": 7377, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1951:4:27", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000000000000000_by_1", + "typeString": "int_const 1000000000000000000" + }, + "value": "1e18" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "995d9b60", + "id": 7381, + "mutability": "mutable", + "name": "particleCollector", + "nameLocation": "1974:17:27", + "nodeType": "VariableDeclaration", + "scope": 8170, + "src": "1959:36:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7379, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1959:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30", + "id": 7380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1994:1:27", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "88d19f1b", + "id": 7383, + "mutability": "mutable", + "name": "daoShare", + "nameLocation": "2013:8:27", + "nodeType": "VariableDeclaration", + "scope": 8170, + "src": "1998:23:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7382, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1998:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "481af4aa", + "id": 7385, + "mutability": "mutable", + "name": "earlyFoundersShare", + "nameLocation": "2039:18:27", + "nodeType": "VariableDeclaration", + "scope": 8170, + "src": "2024:33:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7384, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2024:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "698a5897", + "id": 7387, + "mutability": "mutable", + "name": "daoWallet", + "nameLocation": "2075:9:27", + "nodeType": "VariableDeclaration", + "scope": 8170, + "src": "2060:24:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7386, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2060:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "079a5705", + "id": 7389, + "mutability": "mutable", + "name": "earlyFoundersWallet", + "nameLocation": "2102:19:27", + "nodeType": "VariableDeclaration", + "scope": 8170, + "src": "2087:34:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7388, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2087:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "cb6d8ee6", + "id": 7392, + "mutability": "mutable", + "name": "totalStakedToken", + "nameLocation": "2139:16:27", + "nodeType": "VariableDeclaration", + "scope": 8170, + "src": "2124:35:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7390, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2124:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "31", + "id": 7391, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2158:1:27", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "cc7a262e", + "id": 7394, + "mutability": "mutable", + "name": "stakedToken", + "nameLocation": "2233:11:27", + "nodeType": "VariableDeclaration", + "scope": 8170, + "src": "2218:26:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7393, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2218:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "f7c618c1", + "id": 7396, + "mutability": "mutable", + "name": "rewardToken", + "nameLocation": "2262:11:27", + "nodeType": "VariableDeclaration", + "scope": 8170, + "src": "2247:26:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7395, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2247:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "a43c7e7e", + "id": 7401, + "mutability": "constant", + "name": "REWARD_PER_BLOCK_SETTER", + "nameLocation": "2301:23:27", + "nodeType": "VariableDeclaration", + "scope": 8170, + "src": "2277:86:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7397, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2277:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "5245574152445f5045525f424c4f434b5f534554544552", + "id": 7399, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2337:25:27", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ee33494882c15ef16fd46d90287d1d71c5808d5681b5d0ee0567fbc8f9b0100b", + "typeString": "literal_string \"REWARD_PER_BLOCK_SETTER\"" + }, + "value": "REWARD_PER_BLOCK_SETTER" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_ee33494882c15ef16fd46d90287d1d71c5808d5681b5d0ee0567fbc8f9b0100b", + "typeString": "literal_string \"REWARD_PER_BLOCK_SETTER\"" + } + ], + "id": 7398, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2327:9:27", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 7400, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2327:36:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "34ddb95d", + "id": 7406, + "mutability": "constant", + "name": "TRUSTY_ROLE", + "nameLocation": "2390:11:27", + "nodeType": "VariableDeclaration", + "scope": 8170, + "src": "2366:62:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7402, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2366:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "5452555354595f524f4c45", + "id": 7404, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2414:13:27", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c", + "typeString": "literal_string \"TRUSTY_ROLE\"" + }, + "value": "TRUSTY_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c", + "typeString": "literal_string \"TRUSTY_ROLE\"" + } + ], + "id": 7403, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2404:9:27", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 7405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2404:24:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 7506, + "nodeType": "Block", + "src": "2703:623:27", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7438, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 7431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7426, + "name": "_stakedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7408, + "src": "2719:12:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 7429, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2743:1:27", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 7428, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2735:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7427, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2735:7:27", + "typeDescriptions": {} + } + }, + "id": 7430, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2735:10:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2719:26:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 7437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7432, + "name": "_rewardToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7410, + "src": "2752:12:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 7435, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2776:1:27", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 7434, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2768:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7433, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2768:7:27", + "typeDescriptions": {} + } + }, + "id": 7436, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2768:10:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2752:26:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2719:59:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 7444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7439, + "name": "_daoWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7418, + "src": "2785:10:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 7442, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2807:1:27", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 7441, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2799:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7440, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2799:7:27", + "typeDescriptions": {} + } + }, + "id": 7443, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2799:10:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2785:24:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2719:90:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 7451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7446, + "name": "_earlyFoundersWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7420, + "src": "2816:20:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 7449, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2848:1:27", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 7448, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2840:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7447, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2840:7:27", + "typeDescriptions": {} + } + }, + "id": 7450, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2840:10:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2816:34:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2719:131:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5354414b494e473a3a636f6e7374727563746f723a205a65726f2061646472657373206465746563746564", + "id": 7453, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2855:45:27", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_343b6fd5bd3a9963b4c6f8aa87ebc2ac86870fe2249ee726090c42d51157d869", + "typeString": "literal_string \"STAKING::constructor: Zero address detected\"" + }, + "value": "STAKING::constructor: Zero address detected" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_343b6fd5bd3a9963b4c6f8aa87ebc2ac86870fe2249ee726090c42d51157d869", + "typeString": "literal_string \"STAKING::constructor: Zero address detected\"" + } + ], + "id": 7425, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2707:7:27", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2707:197:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7455, + "nodeType": "ExpressionStatement", + "src": "2707:197:27" + }, + { + "expression": { + "arguments": [ + { + "id": 7457, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6026, + "src": "2919:18:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 7458, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2939:3:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 7459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2939:10:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7456, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6209, + "src": "2908:10:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 7460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2908:42:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7461, + "nodeType": "ExpressionStatement", + "src": "2908:42:27" + }, + { + "expression": { + "arguments": [ + { + "id": 7463, + "name": "REWARD_PER_BLOCK_SETTER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7401, + "src": "2965:23:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 7464, + "name": "_rewardPerBlockSetter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7422, + "src": "2990:21:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7462, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6209, + "src": "2954:10:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 7465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2954:58:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7466, + "nodeType": "ExpressionStatement", + "src": "2954:58:27" + }, + { + "expression": { + "arguments": [ + { + "id": 7468, + "name": "TRUSTY_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7406, + "src": "3027:11:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 7469, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3040:3:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 7470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3040:10:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7467, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6209, + "src": "3016:10:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 7471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3016:35:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7472, + "nodeType": "ExpressionStatement", + "src": "3016:35:27" + }, + { + "expression": { + "id": 7475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7473, + "name": "stakedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7394, + "src": "3055:11:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7474, + "name": "_stakedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7408, + "src": "3069:12:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3055:26:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 7476, + "nodeType": "ExpressionStatement", + "src": "3055:26:27" + }, + { + "expression": { + "id": 7479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7477, + "name": "rewardToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7396, + "src": "3085:11:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7478, + "name": "_rewardToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7410, + "src": "3099:12:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3085:26:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 7480, + "nodeType": "ExpressionStatement", + "src": "3085:26:27" + }, + { + "expression": { + "id": 7483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7481, + "name": "rewardPerBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7375, + "src": "3115:14:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7482, + "name": "_rewardPerBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7412, + "src": "3132:15:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3115:32:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7484, + "nodeType": "ExpressionStatement", + "src": "3115:32:27" + }, + { + "expression": { + "id": 7487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7485, + "name": "daoShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7383, + "src": "3151:8:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7486, + "name": "_daoShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7414, + "src": "3162:9:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3151:20:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7488, + "nodeType": "ExpressionStatement", + "src": "3151:20:27" + }, + { + "expression": { + "id": 7491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7489, + "name": "earlyFoundersShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7385, + "src": "3175:18:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7490, + "name": "_earlyFoundersShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7416, + "src": "3196:19:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3175:40:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7492, + "nodeType": "ExpressionStatement", + "src": "3175:40:27" + }, + { + "expression": { + "id": 7496, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7493, + "name": "lastUpdatedBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7373, + "src": "3219:16:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 7494, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "3238:5:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 7495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "src": "3238:12:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3219:31:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7497, + "nodeType": "ExpressionStatement", + "src": "3219:31:27" + }, + { + "expression": { + "id": 7500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7498, + "name": "daoWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7387, + "src": "3254:9:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7499, + "name": "_daoWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7418, + "src": "3266:10:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3254:22:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 7501, + "nodeType": "ExpressionStatement", + "src": "3254:22:27" + }, + { + "expression": { + "id": 7504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7502, + "name": "earlyFoundersWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7389, + "src": "3280:19:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7503, + "name": "_earlyFoundersWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7420, + "src": "3302:20:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3280:42:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 7505, + "nodeType": "ExpressionStatement", + "src": "3280:42:27" + } + ] + }, + "id": 7507, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7423, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7408, + "mutability": "mutable", + "name": "_stakedToken", + "nameLocation": "2498:12:27", + "nodeType": "VariableDeclaration", + "scope": 7507, + "src": "2490:20:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7407, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2490:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7410, + "mutability": "mutable", + "name": "_rewardToken", + "nameLocation": "2522:12:27", + "nodeType": "VariableDeclaration", + "scope": 7507, + "src": "2514:20:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7409, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2514:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7412, + "mutability": "mutable", + "name": "_rewardPerBlock", + "nameLocation": "2546:15:27", + "nodeType": "VariableDeclaration", + "scope": 7507, + "src": "2538:23:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7411, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2538:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7414, + "mutability": "mutable", + "name": "_daoShare", + "nameLocation": "2573:9:27", + "nodeType": "VariableDeclaration", + "scope": 7507, + "src": "2565:17:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7413, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2565:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7416, + "mutability": "mutable", + "name": "_earlyFoundersShare", + "nameLocation": "2594:19:27", + "nodeType": "VariableDeclaration", + "scope": 7507, + "src": "2586:27:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7415, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2586:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7418, + "mutability": "mutable", + "name": "_daoWallet", + "nameLocation": "2625:10:27", + "nodeType": "VariableDeclaration", + "scope": 7507, + "src": "2617:18:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7417, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2617:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7420, + "mutability": "mutable", + "name": "_earlyFoundersWallet", + "nameLocation": "2647:20:27", + "nodeType": "VariableDeclaration", + "scope": 7507, + "src": "2639:28:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7419, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2639:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7422, + "mutability": "mutable", + "name": "_rewardPerBlockSetter", + "nameLocation": "2679:21:27", + "nodeType": "VariableDeclaration", + "scope": 7507, + "src": "2671:29:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7421, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2671:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2486:215:27" + }, + "returnParameters": { + "id": 7424, + "nodeType": "ParameterList", + "parameters": [], + "src": "2703:0:27" + }, + "scope": 8170, + "src": "2474:852:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 7519, + "nodeType": "Block", + "src": "3352:90:27", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 7511, + "name": "TRUSTY_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7406, + "src": "3372:11:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 7512, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3385:3:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 7513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3385:10:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7510, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6072, + "src": "3364:7:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 7514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3364:32:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5354414b494e473a3a2043616c6c6572206973206e6f74206120747275737479", + "id": 7515, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3398:34:27", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_587c06f0d14b166595b8869cf26c4fdc33e7631ec90c288431be59fa2bd0d92f", + "typeString": "literal_string \"STAKING:: Caller is not a trusty\"" + }, + "value": "STAKING:: Caller is not a trusty" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_587c06f0d14b166595b8869cf26c4fdc33e7631ec90c288431be59fa2bd0d92f", + "typeString": "literal_string \"STAKING:: Caller is not a trusty\"" + } + ], + "id": 7509, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3356:7:27", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3356:77:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7517, + "nodeType": "ExpressionStatement", + "src": "3356:77:27" + }, + { + "id": 7518, + "nodeType": "PlaceholderStatement", + "src": "3437:1:27" + } + ] + }, + "id": 7520, + "name": "onlyTrusty", + "nameLocation": "3339:10:27", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 7508, + "nodeType": "ParameterList", + "parameters": [], + "src": "3349:2:27" + }, + "src": "3330:112:27", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7578, + "nodeType": "Block", + "src": "3611:382:27", + "statements": [ + { + "assignments": [ + 7529 + ], + "declarations": [ + { + "constant": false, + "id": 7529, + "mutability": "mutable", + "name": "user", + "nameLocation": "3628:4:27", + "nodeType": "VariableDeclaration", + "scope": 7578, + "src": "3615:17:27", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User" + }, + "typeName": { + "id": 7528, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7527, + "name": "User", + "nodeType": "IdentifierPath", + "referencedDeclaration": 7363, + "src": "3615:4:27" + }, + "referencedDeclaration": 7363, + "src": "3615:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User" + } + }, + "visibility": "internal" + } + ], + "id": 7533, + "initialValue": { + "baseExpression": { + "id": 7530, + "name": "users", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7368, + "src": "3635:5:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$7363_storage_$", + "typeString": "mapping(address => struct Staking.User storage ref)" + } + }, + "id": 7532, + "indexExpression": { + "id": 7531, + "name": "_user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7522, + "src": "3641:5:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3635:12:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage", + "typeString": "struct Staking.User storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3615:32:27" + }, + { + "assignments": [ + 7535 + ], + "declarations": [ + { + "constant": false, + "id": 7535, + "mutability": "mutable", + "name": "accRewardPerToken", + "nameLocation": "3659:17:27", + "nodeType": "VariableDeclaration", + "scope": 7578, + "src": "3651:25:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7534, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3651:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7537, + "initialValue": { + "id": 7536, + "name": "rewardTillNowPerToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7371, + "src": "3679:21:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3651:49:27" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 7538, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "3709:5:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 7539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "src": "3709:12:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 7540, + "name": "lastUpdatedBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7373, + "src": "3724:16:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3709:31:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7564, + "nodeType": "IfStatement", + "src": "3705:206:27", + "trueBody": { + "id": 7563, + "nodeType": "Block", + "src": "3742:169:27", + "statements": [ + { + "assignments": [ + 7543 + ], + "declarations": [ + { + "constant": false, + "id": 7543, + "mutability": "mutable", + "name": "rewardAmount", + "nameLocation": "3755:12:27", + "nodeType": "VariableDeclaration", + "scope": 7563, + "src": "3747:20:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7542, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3747:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7551, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 7544, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "3771:5:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 7545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "src": "3771:12:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 7546, + "name": "lastUpdatedBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7373, + "src": "3786:16:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3771:31:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7548, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3770:33:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 7549, + "name": "rewardPerBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7375, + "src": "3806:14:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3770:50:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3747:73:27" + }, + { + "expression": { + "id": 7561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7552, + "name": "accRewardPerToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7535, + "src": "3825:17:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7553, + "name": "accRewardPerToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7535, + "src": "3845:17:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7554, + "name": "rewardAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7543, + "src": "3866:12:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 7555, + "name": "scale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7378, + "src": "3881:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3866:20:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 7557, + "name": "totalStakedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7392, + "src": "3889:16:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3866:39:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7559, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3865:41:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3845:61:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3825:81:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7562, + "nodeType": "ExpressionStatement", + "src": "3825:81:27" + } + ] + } + }, + { + "expression": { + "id": 7576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7565, + "name": "reward", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7525, + "src": "3914:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 7566, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7529, + "src": "3924:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User storage pointer" + } + }, + "id": 7567, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "depositAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 7360, + "src": "3924:18:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 7568, + "name": "accRewardPerToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7535, + "src": "3945:17:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3924:38:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 7570, + "name": "scale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7378, + "src": "3965:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3924:46:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7572, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3923:48:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "id": 7573, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7529, + "src": "3974:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User storage pointer" + } + }, + "id": 7574, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "paidReward", + "nodeType": "MemberAccess", + "referencedDeclaration": 7362, + "src": "3974:15:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3923:66:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3914:75:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7577, + "nodeType": "ExpressionStatement", + "src": "3914:75:27" + } + ] + }, + "functionSelector": "f40f0f52", + "id": 7579, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "pendingReward", + "nameLocation": "3543:13:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7523, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7522, + "mutability": "mutable", + "name": "_user", + "nameLocation": "3565:5:27", + "nodeType": "VariableDeclaration", + "scope": 7579, + "src": "3557:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7521, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3557:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3556:15:27" + }, + "returnParameters": { + "id": 7526, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7525, + "mutability": "mutable", + "name": "reward", + "nameLocation": "3603:6:27", + "nodeType": "VariableDeclaration", + "scope": 7579, + "src": "3595:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7524, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3595:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3594:16:27" + }, + "scope": 8170, + "src": "3534:459:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 7615, + "nodeType": "Block", + "src": "4126:268:27", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 7582, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "4134:5:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 7583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "src": "4134:12:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 7584, + "name": "lastUpdatedBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7373, + "src": "4150:16:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4134:32:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7588, + "nodeType": "IfStatement", + "src": "4130:54:27", + "trueBody": { + "id": 7587, + "nodeType": "Block", + "src": "4168:16:27", + "statements": [ + { + "functionReturnParameters": 7581, + "id": 7586, + "nodeType": "Return", + "src": "4173:7:27" + } + ] + } + }, + { + "assignments": [ + 7590 + ], + "declarations": [ + { + "constant": false, + "id": 7590, + "mutability": "mutable", + "name": "rewardAmount", + "nameLocation": "4196:12:27", + "nodeType": "VariableDeclaration", + "scope": 7615, + "src": "4188:20:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7589, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4188:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7598, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 7591, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "4212:5:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 7592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "src": "4212:12:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 7593, + "name": "lastUpdatedBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7373, + "src": "4227:16:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4212:31:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7595, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4211:33:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 7596, + "name": "rewardPerBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7375, + "src": "4247:14:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4211:50:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4188:73:27" + }, + { + "expression": { + "id": 7608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7599, + "name": "rewardTillNowPerToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7371, + "src": "4266:21:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7600, + "name": "rewardTillNowPerToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7371, + "src": "4290:21:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7601, + "name": "rewardAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7590, + "src": "4315:12:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 7602, + "name": "scale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7378, + "src": "4330:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4315:20:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 7604, + "name": "totalStakedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7392, + "src": "4338:16:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4315:39:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7606, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4314:41:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4290:65:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4266:89:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7609, + "nodeType": "ExpressionStatement", + "src": "4266:89:27" + }, + { + "expression": { + "id": 7613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7610, + "name": "lastUpdatedBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7373, + "src": "4359:16:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 7611, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "4378:5:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 7612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "src": "4378:12:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4359:31:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7614, + "nodeType": "ExpressionStatement", + "src": "4359:31:27" + } + ] + }, + "functionSelector": "a2e62045", + "id": 7616, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "update", + "nameLocation": "4110:6:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7580, + "nodeType": "ParameterList", + "parameters": [], + "src": "4116:2:27" + }, + "returnParameters": { + "id": 7581, + "nodeType": "ParameterList", + "parameters": [], + "src": "4126:0:27" + }, + "scope": 8170, + "src": "4101:293:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 7627, + "nodeType": "Block", + "src": "4439:38:27", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 7622, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4454:3:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 7623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4454:10:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 7624, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7618, + "src": "4466:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7621, + "name": "depositFor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7714, + "src": "4443:10:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 7625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4443:30:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7626, + "nodeType": "ExpressionStatement", + "src": "4443:30:27" + } + ] + }, + "functionSelector": "b6b55f25", + "id": 7628, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deposit", + "nameLocation": "4406:7:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7619, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7618, + "mutability": "mutable", + "name": "amount", + "nameLocation": "4422:6:27", + "nodeType": "VariableDeclaration", + "scope": 7628, + "src": "4414:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7617, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4414:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4413:16:27" + }, + "returnParameters": { + "id": 7620, + "nodeType": "ParameterList", + "parameters": [], + "src": "4439:0:27" + }, + "scope": 8170, + "src": "4397:80:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 7713, + "nodeType": "Block", + "src": "4538:503:27", + "statements": [ + { + "assignments": [ + 7637 + ], + "declarations": [ + { + "constant": false, + "id": 7637, + "mutability": "mutable", + "name": "user", + "nameLocation": "4555:4:27", + "nodeType": "VariableDeclaration", + "scope": 7713, + "src": "4542:17:27", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User" + }, + "typeName": { + "id": 7636, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7635, + "name": "User", + "nodeType": "IdentifierPath", + "referencedDeclaration": 7363, + "src": "4542:4:27" + }, + "referencedDeclaration": 7363, + "src": "4542:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User" + } + }, + "visibility": "internal" + } + ], + "id": 7641, + "initialValue": { + "baseExpression": { + "id": 7638, + "name": "users", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7368, + "src": "4562:5:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$7363_storage_$", + "typeString": "mapping(address => struct Staking.User storage ref)" + } + }, + "id": 7640, + "indexExpression": { + "id": 7639, + "name": "_user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7630, + "src": "4568:5:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4562:12:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage", + "typeString": "struct Staking.User storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4542:32:27" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7642, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7616, + "src": "4578:6:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 7643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4578:8:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7644, + "nodeType": "ExpressionStatement", + "src": "4578:8:27" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 7645, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7637, + "src": "4595:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User storage pointer" + } + }, + "id": 7646, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "depositAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 7360, + "src": "4595:18:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 7647, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4616:1:27", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4595:22:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7668, + "nodeType": "IfStatement", + "src": "4591:171:27", + "trueBody": { + "id": 7667, + "nodeType": "Block", + "src": "4619:143:27", + "statements": [ + { + "assignments": [ + 7650 + ], + "declarations": [ + { + "constant": false, + "id": 7650, + "mutability": "mutable", + "name": "_pendingReward", + "nameLocation": "4632:14:27", + "nodeType": "VariableDeclaration", + "scope": 7667, + "src": "4624:22:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7649, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4624:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7661, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 7651, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7637, + "src": "4650:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User storage pointer" + } + }, + "id": 7652, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "depositAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 7360, + "src": "4650:18:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 7653, + "name": "rewardTillNowPerToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7371, + "src": "4671:21:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4650:42:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 7655, + "name": "scale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7378, + "src": "4695:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4650:50:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7657, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4649:52:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "id": 7658, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7637, + "src": "4704:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User storage pointer" + } + }, + "id": 7659, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "paidReward", + "nodeType": "MemberAccess", + "referencedDeclaration": 7362, + "src": "4704:15:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4649:70:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4624:95:27" + }, + { + "expression": { + "arguments": [ + { + "id": 7663, + "name": "_user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7630, + "src": "4735:5:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 7664, + "name": "_pendingReward", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7650, + "src": "4742:14:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7662, + "name": "sendReward", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7944, + "src": "4724:10:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 7665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4724:33:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7666, + "nodeType": "ExpressionStatement", + "src": "4724:33:27" + } + ] + } + }, + { + "expression": { + "id": 7676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 7669, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7637, + "src": "4766:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User storage pointer" + } + }, + "id": 7671, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "depositAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 7360, + "src": "4766:18:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 7672, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7637, + "src": "4787:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User storage pointer" + } + }, + "id": 7673, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "depositAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 7360, + "src": "4787:18:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 7674, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7632, + "src": "4808:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4787:27:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4766:48:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7677, + "nodeType": "ExpressionStatement", + "src": "4766:48:27" + }, + { + "expression": { + "id": 7687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 7678, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7637, + "src": "4818:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User storage pointer" + } + }, + "id": 7680, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "paidReward", + "nodeType": "MemberAccess", + "referencedDeclaration": 7362, + "src": "4818:15:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 7681, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7637, + "src": "4836:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User storage pointer" + } + }, + "id": 7682, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "depositAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 7360, + "src": "4836:18:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 7683, + "name": "rewardTillNowPerToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7371, + "src": "4857:21:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4836:42:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 7685, + "name": "scale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7378, + "src": "4881:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4836:50:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4818:68:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7688, + "nodeType": "ExpressionStatement", + "src": "4818:68:27" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 7693, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4924:3:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 7694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4924:10:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 7697, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4944:4:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Staking_$8170", + "typeString": "contract Staking" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Staking_$8170", + "typeString": "contract Staking" + } + ], + "id": 7696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4936:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7695, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4936:7:27", + "typeDescriptions": {} + } + }, + "id": 7698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4936:13:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 7699, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7632, + "src": "4951:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 7690, + "name": "stakedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7394, + "src": "4898:11:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7689, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7348, + "src": "4891:6:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$7348_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 7691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4891:19:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7348", + "typeString": "contract IERC20" + } + }, + "id": 7692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 7347, + "src": "4891:32:27", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 7700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4891:67:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7701, + "nodeType": "ExpressionStatement", + "src": "4891:67:27" + }, + { + "expression": { + "id": 7706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7702, + "name": "totalStakedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7392, + "src": "4962:16:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7703, + "name": "totalStakedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7392, + "src": "4981:16:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 7704, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7632, + "src": "5000:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4981:25:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4962:44:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7707, + "nodeType": "ExpressionStatement", + "src": "4962:44:27" + }, + { + "eventCall": { + "arguments": [ + { + "id": 7709, + "name": "_user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7630, + "src": "5023:5:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 7710, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7632, + "src": "5030:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7708, + "name": "Deposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8145, + "src": "5015:7:27", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 7711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5015:22:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7712, + "nodeType": "EmitStatement", + "src": "5010:27:27" + } + ] + }, + "functionSelector": "2f4f21e2", + "id": 7714, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "depositFor", + "nameLocation": "4489:10:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7633, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7630, + "mutability": "mutable", + "name": "_user", + "nameLocation": "4508:5:27", + "nodeType": "VariableDeclaration", + "scope": 7714, + "src": "4500:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7629, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4500:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7632, + "mutability": "mutable", + "name": "amount", + "nameLocation": "4523:6:27", + "nodeType": "VariableDeclaration", + "scope": 7714, + "src": "4515:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7631, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4515:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4499:31:27" + }, + "returnParameters": { + "id": 7634, + "nodeType": "ParameterList", + "parameters": [], + "src": "4538:0:27" + }, + "scope": 8170, + "src": "4480:561:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 7823, + "nodeType": "Block", + "src": "5087:763:27", + "statements": [ + { + "assignments": [ + 7721 + ], + "declarations": [ + { + "constant": false, + "id": 7721, + "mutability": "mutable", + "name": "user", + "nameLocation": "5104:4:27", + "nodeType": "VariableDeclaration", + "scope": 7823, + "src": "5091:17:27", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User" + }, + "typeName": { + "id": 7720, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7719, + "name": "User", + "nodeType": "IdentifierPath", + "referencedDeclaration": 7363, + "src": "5091:4:27" + }, + "referencedDeclaration": 7363, + "src": "5091:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User" + } + }, + "visibility": "internal" + } + ], + "id": 7726, + "initialValue": { + "baseExpression": { + "id": 7722, + "name": "users", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7368, + "src": "5111:5:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$7363_storage_$", + "typeString": "mapping(address => struct Staking.User storage ref)" + } + }, + "id": 7725, + "indexExpression": { + "expression": { + "id": 7723, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "5117:3:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 7724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5117:10:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5111:17:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage", + "typeString": "struct Staking.User storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5091:37:27" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 7728, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7721, + "src": "5140:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User storage pointer" + } + }, + "id": 7729, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "depositAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 7360, + "src": "5140:18:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 7730, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7716, + "src": "5162:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5140:28:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5354414b494e473a3a77697468647261773a20776974686472617720616d6f756e742065786365656473206465706f736974656420616d6f756e74", + "id": 7732, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5170:61:27", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fc10209334da9e984e6aacdc85fc7b20c056ba7895742868eb7e477d52af7146", + "typeString": "literal_string \"STAKING::withdraw: withdraw amount exceeds deposited amount\"" + }, + "value": "STAKING::withdraw: withdraw amount exceeds deposited amount" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fc10209334da9e984e6aacdc85fc7b20c056ba7895742868eb7e477d52af7146", + "typeString": "literal_string \"STAKING::withdraw: withdraw amount exceeds deposited amount\"" + } + ], + "id": 7727, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5132:7:27", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5132:100:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7734, + "nodeType": "ExpressionStatement", + "src": "5132:100:27" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7735, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7616, + "src": "5236:6:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 7736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5236:8:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7737, + "nodeType": "ExpressionStatement", + "src": "5236:8:27" + }, + { + "assignments": [ + 7739 + ], + "declarations": [ + { + "constant": false, + "id": 7739, + "mutability": "mutable", + "name": "_pendingReward", + "nameLocation": "5257:14:27", + "nodeType": "VariableDeclaration", + "scope": 7823, + "src": "5249:22:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7738, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5249:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7750, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 7740, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7721, + "src": "5275:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User storage pointer" + } + }, + "id": 7741, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "depositAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 7360, + "src": "5275:18:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 7742, + "name": "rewardTillNowPerToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7371, + "src": "5296:21:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5275:42:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 7744, + "name": "scale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7378, + "src": "5320:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5275:50:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7746, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5274:52:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "id": 7747, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7721, + "src": "5329:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User storage pointer" + } + }, + "id": 7748, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "paidReward", + "nodeType": "MemberAccess", + "referencedDeclaration": 7362, + "src": "5329:15:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5274:70:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5249:95:27" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 7752, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "5359:3:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 7753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5359:10:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 7754, + "name": "_pendingReward", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7739, + "src": "5371:14:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7751, + "name": "sendReward", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7944, + "src": "5348:10:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 7755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5348:38:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7756, + "nodeType": "ExpressionStatement", + "src": "5348:38:27" + }, + { + "assignments": [ + 7758 + ], + "declarations": [ + { + "constant": false, + "id": 7758, + "mutability": "mutable", + "name": "particleCollectorShare", + "nameLocation": "5399:22:27", + "nodeType": "VariableDeclaration", + "scope": 7823, + "src": "5391:30:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7757, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5391:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7767, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7759, + "name": "_pendingReward", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7739, + "src": "5424:14:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7760, + "name": "daoShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7383, + "src": "5442:8:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 7761, + "name": "earlyFoundersShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7385, + "src": "5453:18:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5442:29:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7763, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5441:31:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5424:48:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 7765, + "name": "scale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7378, + "src": "5475:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5424:56:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5391:89:27" + }, + { + "expression": { + "id": 7772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7768, + "name": "particleCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7381, + "src": "5484:17:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7769, + "name": "particleCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7381, + "src": "5504:17:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 7770, + "name": "particleCollectorShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7758, + "src": "5524:22:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5504:42:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5484:62:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7773, + "nodeType": "ExpressionStatement", + "src": "5484:62:27" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7774, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7716, + "src": "5555:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 7775, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5564:1:27", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5555:10:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7811, + "nodeType": "IfStatement", + "src": "5551:223:27", + "trueBody": { + "id": 7810, + "nodeType": "Block", + "src": "5567:207:27", + "statements": [ + { + "expression": { + "id": 7784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 7777, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7721, + "src": "5572:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User storage pointer" + } + }, + "id": 7779, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "depositAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 7360, + "src": "5572:18:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 7780, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7721, + "src": "5593:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User storage pointer" + } + }, + "id": 7781, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "depositAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 7360, + "src": "5593:18:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 7782, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7716, + "src": "5614:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5593:27:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5572:48:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7785, + "nodeType": "ExpressionStatement", + "src": "5572:48:27" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 7792, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "5662:3:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 7793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5662:10:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7791, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5654:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7790, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5654:7:27", + "typeDescriptions": {} + } + }, + "id": 7794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5654:19:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 7795, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7716, + "src": "5675:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 7787, + "name": "stakedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7394, + "src": "5632:11:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7786, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7348, + "src": "5625:6:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$7348_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 7788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5625:19:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7348", + "typeString": "contract IERC20" + } + }, + "id": 7789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 7336, + "src": "5625:28:27", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 7796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5625:57:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7797, + "nodeType": "ExpressionStatement", + "src": "5625:57:27" + }, + { + "expression": { + "id": 7802, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7798, + "name": "totalStakedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7392, + "src": "5687:16:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7799, + "name": "totalStakedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7392, + "src": "5706:16:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 7800, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7716, + "src": "5725:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5706:25:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5687:44:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7803, + "nodeType": "ExpressionStatement", + "src": "5687:44:27" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 7805, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "5750:3:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 7806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5750:10:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 7807, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7716, + "src": "5762:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7804, + "name": "Withdraw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8151, + "src": "5741:8:27", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 7808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5741:28:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7809, + "nodeType": "EmitStatement", + "src": "5736:33:27" + } + ] + } + }, + { + "expression": { + "id": 7821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 7812, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7721, + "src": "5778:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User storage pointer" + } + }, + "id": 7814, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "paidReward", + "nodeType": "MemberAccess", + "referencedDeclaration": 7362, + "src": "5778:15:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 7815, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7721, + "src": "5796:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User storage pointer" + } + }, + "id": 7816, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "depositAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 7360, + "src": "5796:18:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 7817, + "name": "rewardTillNowPerToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7371, + "src": "5817:21:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5796:42:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 7819, + "name": "scale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7378, + "src": "5841:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5796:50:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5778:68:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7822, + "nodeType": "ExpressionStatement", + "src": "5778:68:27" + } + ] + }, + "functionSelector": "2e1a7d4d", + "id": 7824, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdraw", + "nameLocation": "5053:8:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7717, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7716, + "mutability": "mutable", + "name": "amount", + "nameLocation": "5070:6:27", + "nodeType": "VariableDeclaration", + "scope": 7824, + "src": "5062:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7715, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5062:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5061:16:27" + }, + "returnParameters": { + "id": 7718, + "nodeType": "ParameterList", + "parameters": [], + "src": "5087:0:27" + }, + "scope": 8170, + "src": "5044:806:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 7874, + "nodeType": "Block", + "src": "5897:432:27", + "statements": [ + { + "assignments": [ + 7828 + ], + "declarations": [ + { + "constant": false, + "id": 7828, + "mutability": "mutable", + "name": "_daoShare", + "nameLocation": "5909:9:27", + "nodeType": "VariableDeclaration", + "scope": 7874, + "src": "5901:17:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7827, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5901:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7837, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7829, + "name": "particleCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7381, + "src": "5921:17:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 7830, + "name": "daoShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7383, + "src": "5941:8:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5921:28:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7832, + "name": "daoShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7383, + "src": "5953:8:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 7833, + "name": "earlyFoundersShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7385, + "src": "5964:18:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5953:29:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7835, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5952:31:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5921:62:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5901:82:27" + }, + { + "expression": { + "arguments": [ + { + "id": 7842, + "name": "daoWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7387, + "src": "6020:9:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 7843, + "name": "_daoShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7828, + "src": "6031:9:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 7839, + "name": "rewardToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7396, + "src": "5997:11:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7838, + "name": "DEUSToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7356, + "src": "5987:9:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_DEUSToken_$7356_$", + "typeString": "type(contract DEUSToken)" + } + }, + "id": 7840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5987:22:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEUSToken_$7356", + "typeString": "contract DEUSToken" + } + }, + "id": 7841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pool_mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 7355, + "src": "5987:32:27", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 7844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5987:54:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7845, + "nodeType": "ExpressionStatement", + "src": "5987:54:27" + }, + { + "assignments": [ + 7847 + ], + "declarations": [ + { + "constant": false, + "id": 7847, + "mutability": "mutable", + "name": "_earlyFoundersShare", + "nameLocation": "6054:19:27", + "nodeType": "VariableDeclaration", + "scope": 7874, + "src": "6046:27:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7846, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6046:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7856, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7848, + "name": "particleCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7381, + "src": "6076:17:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 7849, + "name": "earlyFoundersShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7385, + "src": "6096:18:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6076:38:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7851, + "name": "daoShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7383, + "src": "6118:8:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 7852, + "name": "earlyFoundersShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7385, + "src": "6129:18:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6118:29:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7854, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6117:31:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6076:72:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6046:102:27" + }, + { + "expression": { + "arguments": [ + { + "id": 7861, + "name": "earlyFoundersWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7389, + "src": "6185:19:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 7862, + "name": "_earlyFoundersShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7847, + "src": "6206:19:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 7858, + "name": "rewardToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7396, + "src": "6162:11:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7857, + "name": "DEUSToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7356, + "src": "6152:9:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_DEUSToken_$7356_$", + "typeString": "type(contract DEUSToken)" + } + }, + "id": 7859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6152:22:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEUSToken_$7356", + "typeString": "contract DEUSToken" + } + }, + "id": 7860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pool_mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 7355, + "src": "6152:32:27", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 7863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6152:74:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7864, + "nodeType": "ExpressionStatement", + "src": "6152:74:27" + }, + { + "expression": { + "id": 7867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7865, + "name": "particleCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7381, + "src": "6231:17:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 7866, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6251:1:27", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6231:21:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7868, + "nodeType": "ExpressionStatement", + "src": "6231:21:27" + }, + { + "eventCall": { + "arguments": [ + { + "id": 7870, + "name": "_earlyFoundersShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7847, + "src": "6294:19:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7871, + "name": "_daoShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7828, + "src": "6315:9:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7869, + "name": "WithdrawParticleCollectorAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8133, + "src": "6262:31:27", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 7872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6262:63:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7873, + "nodeType": "EmitStatement", + "src": "6257:68:27" + } + ] + }, + "functionSelector": "9378c6d4", + "id": 7875, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawParticleCollector", + "nameLocation": "5862:25:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7825, + "nodeType": "ParameterList", + "parameters": [], + "src": "5887:2:27" + }, + "returnParameters": { + "id": 7826, + "nodeType": "ParameterList", + "parameters": [], + "src": "5897:0:27" + }, + "scope": 8170, + "src": "5853:476:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 7922, + "nodeType": "Block", + "src": "6429:279:27", + "statements": [ + { + "assignments": [ + 7880 + ], + "declarations": [ + { + "constant": false, + "id": 7880, + "mutability": "mutable", + "name": "user", + "nameLocation": "6446:4:27", + "nodeType": "VariableDeclaration", + "scope": 7922, + "src": "6433:17:27", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User" + }, + "typeName": { + "id": 7879, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7878, + "name": "User", + "nodeType": "IdentifierPath", + "referencedDeclaration": 7363, + "src": "6433:4:27" + }, + "referencedDeclaration": 7363, + "src": "6433:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User" + } + }, + "visibility": "internal" + } + ], + "id": 7885, + "initialValue": { + "baseExpression": { + "id": 7881, + "name": "users", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7368, + "src": "6453:5:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$7363_storage_$", + "typeString": "mapping(address => struct Staking.User storage ref)" + } + }, + "id": 7884, + "indexExpression": { + "expression": { + "id": 7882, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "6459:3:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 7883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "6459:10:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6453:17:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage", + "typeString": "struct Staking.User storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6433:37:27" + }, + { + "expression": { + "id": 7891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7886, + "name": "totalStakedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7392, + "src": "6475:16:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7887, + "name": "totalStakedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7392, + "src": "6494:16:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "id": 7888, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7880, + "src": "6513:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User storage pointer" + } + }, + "id": 7889, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "depositAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 7360, + "src": "6513:18:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6494:37:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6475:56:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7892, + "nodeType": "ExpressionStatement", + "src": "6475:56:27" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 7897, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "6565:3:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 7898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "6565:10:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 7899, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7880, + "src": "6577:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User storage pointer" + } + }, + "id": 7900, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "depositAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 7360, + "src": "6577:18:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 7894, + "name": "stakedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7394, + "src": "6543:11:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7893, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7348, + "src": "6536:6:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$7348_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 7895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6536:19:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7348", + "typeString": "contract IERC20" + } + }, + "id": 7896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 7336, + "src": "6536:28:27", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 7901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6536:60:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7902, + "nodeType": "ExpressionStatement", + "src": "6536:60:27" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 7904, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "6623:3:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 7905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "6623:10:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 7906, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7880, + "src": "6635:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User storage pointer" + } + }, + "id": 7907, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "depositAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 7360, + "src": "6635:18:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7903, + "name": "EmergencyWithdraw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8157, + "src": "6605:17:27", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 7908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6605:49:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7909, + "nodeType": "EmitStatement", + "src": "6600:54:27" + }, + { + "expression": { + "id": 7914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 7910, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7880, + "src": "6659:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User storage pointer" + } + }, + "id": 7912, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "depositAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 7360, + "src": "6659:18:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 7913, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6680:1:27", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6659:22:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7915, + "nodeType": "ExpressionStatement", + "src": "6659:22:27" + }, + { + "expression": { + "id": 7920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 7916, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7880, + "src": "6685:4:27", + "typeDescriptions": { + "typeIdentifier": "t_struct$_User_$7363_storage_ptr", + "typeString": "struct Staking.User storage pointer" + } + }, + "id": 7918, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "paidReward", + "nodeType": "MemberAccess", + "referencedDeclaration": 7362, + "src": "6685:15:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 7919, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6703:1:27", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6685:19:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7921, + "nodeType": "ExpressionStatement", + "src": "6685:19:27" + } + ] + }, + "functionSelector": "db2e21bc", + "id": 7923, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "emergencyWithdraw", + "nameLocation": "6400:17:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7876, + "nodeType": "ParameterList", + "parameters": [], + "src": "6417:2:27" + }, + "returnParameters": { + "id": 7877, + "nodeType": "ParameterList", + "parameters": [], + "src": "6429:0:27" + }, + "scope": 8170, + "src": "6391:317:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 7943, + "nodeType": "Block", + "src": "6770:272:27", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 7934, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7925, + "src": "6989:4:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 7935, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7927, + "src": "6995:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 7931, + "name": "rewardToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7396, + "src": "6966:11:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7930, + "name": "DEUSToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7356, + "src": "6956:9:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_DEUSToken_$7356_$", + "typeString": "type(contract DEUSToken)" + } + }, + "id": 7932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6956:22:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_DEUSToken_$7356", + "typeString": "contract DEUSToken" + } + }, + "id": 7933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pool_mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 7355, + "src": "6956:32:27", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 7936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6956:46:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7937, + "nodeType": "ExpressionStatement", + "src": "6956:46:27" + }, + { + "eventCall": { + "arguments": [ + { + "id": 7939, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7925, + "src": "7025:4:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 7940, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7927, + "src": "7031:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7938, + "name": "RewardClaimed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8163, + "src": "7011:13:27", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 7941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7011:27:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7942, + "nodeType": "EmitStatement", + "src": "7006:32:27" + } + ] + }, + "id": 7944, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sendReward", + "nameLocation": "6720:10:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7928, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7925, + "mutability": "mutable", + "name": "user", + "nameLocation": "6739:4:27", + "nodeType": "VariableDeclaration", + "scope": 7944, + "src": "6731:12:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7924, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6731:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7927, + "mutability": "mutable", + "name": "amount", + "nameLocation": "6753:6:27", + "nodeType": "VariableDeclaration", + "scope": 7944, + "src": "6745:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7926, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6745:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6730:30:27" + }, + "returnParameters": { + "id": 7929, + "nodeType": "ParameterList", + "parameters": [], + "src": "6770:0:27" + }, + "scope": 8170, + "src": "6711:331:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7980, + "nodeType": "Block", + "src": "7340:212:27", + "statements": [ + { + "assignments": [ + 7952 + ], + "declarations": [ + { + "constant": false, + "id": 7952, + "mutability": "mutable", + "name": "totalStakedTokens", + "nameLocation": "7352:17:27", + "nodeType": "VariableDeclaration", + "scope": 7980, + "src": "7344:25:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7951, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7344:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7962, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 7959, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "7410:4:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Staking_$8170", + "typeString": "contract Staking" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Staking_$8170", + "typeString": "contract Staking" + } + ], + "id": 7958, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7402:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7957, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7402:7:27", + "typeDescriptions": {} + } + }, + "id": 7960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7402:13:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 7954, + "name": "stakedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7394, + "src": "7379:11:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7953, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7348, + "src": "7372:6:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$7348_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 7955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7372:19:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7348", + "typeString": "contract IERC20" + } + }, + "id": 7956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 7327, + "src": "7372:29:27", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 7961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7372:44:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7344:72:27" + }, + { + "expression": { + "id": 7965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7963, + "name": "totalStakedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7392, + "src": "7420:16:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31", + "id": 7964, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7439:1:27", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "7420:20:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7966, + "nodeType": "ExpressionStatement", + "src": "7420:20:27" + }, + { + "expression": { + "arguments": [ + { + "id": 7971, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7946, + "src": "7473:2:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 7972, + "name": "totalStakedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7952, + "src": "7477:17:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 7968, + "name": "stakedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7394, + "src": "7451:11:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7967, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7348, + "src": "7444:6:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$7348_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 7969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7444:19:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7348", + "typeString": "contract IERC20" + } + }, + "id": 7970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 7336, + "src": "7444:28:27", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 7973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7444:51:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7974, + "nodeType": "ExpressionStatement", + "src": "7444:51:27" + }, + { + "eventCall": { + "arguments": [ + { + "id": 7976, + "name": "totalStakedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7952, + "src": "7526:17:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7977, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7946, + "src": "7545:2:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7975, + "name": "withdrawStakedtokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8117, + "src": "7505:20:27", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (uint256,address)" + } + }, + "id": 7978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7505:43:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7979, + "nodeType": "EmitStatement", + "src": "7500:48:27" + } + ] + }, + "functionSelector": "cee66f63", + "id": 7981, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 7949, + "kind": "modifierInvocation", + "modifierName": { + "id": 7948, + "name": "onlyTrusty", + "nodeType": "IdentifierPath", + "referencedDeclaration": 7520, + "src": "7329:10:27" + }, + "nodeType": "ModifierInvocation", + "src": "7329:10:27" + } + ], + "name": "withdrawAllStakedtokens", + "nameLocation": "7284:23:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7947, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7946, + "mutability": "mutable", + "name": "to", + "nameLocation": "7316:2:27", + "nodeType": "VariableDeclaration", + "scope": 7981, + "src": "7308:10:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7945, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7308:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7307:12:27" + }, + "returnParameters": { + "id": 7950, + "nodeType": "ParameterList", + "parameters": [], + "src": "7340:0:27" + }, + "scope": 8170, + "src": "7275:277:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 7996, + "nodeType": "Block", + "src": "7621:72:27", + "statements": [ + { + "expression": { + "id": 7990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7988, + "name": "stakedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7394, + "src": "7625:11:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7989, + "name": "_stakedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7983, + "src": "7639:12:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7625:26:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 7991, + "nodeType": "ExpressionStatement", + "src": "7625:26:27" + }, + { + "eventCall": { + "arguments": [ + { + "id": 7993, + "name": "_stakedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7983, + "src": "7676:12:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7992, + "name": "StakedTokenSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8121, + "src": "7661:14:27", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 7994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7661:28:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7995, + "nodeType": "EmitStatement", + "src": "7656:33:27" + } + ] + }, + "functionSelector": "52e9c6d4", + "id": 7997, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 7986, + "kind": "modifierInvocation", + "modifierName": { + "id": 7985, + "name": "onlyTrusty", + "nodeType": "IdentifierPath", + "referencedDeclaration": 7520, + "src": "7610:10:27" + }, + "nodeType": "ModifierInvocation", + "src": "7610:10:27" + } + ], + "name": "setStakedToken", + "nameLocation": "7564:14:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7984, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7983, + "mutability": "mutable", + "name": "_stakedToken", + "nameLocation": "7587:12:27", + "nodeType": "VariableDeclaration", + "scope": 7997, + "src": "7579:20:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7982, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7579:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7578:22:27" + }, + "returnParameters": { + "id": 7987, + "nodeType": "ParameterList", + "parameters": [], + "src": "7621:0:27" + }, + "scope": 8170, + "src": "7555:138:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 8016, + "nodeType": "Block", + "src": "7792:43:27", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8012, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7999, + "src": "7820:2:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8013, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8003, + "src": "7824:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 8009, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8001, + "src": "7803:6:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8008, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7348, + "src": "7796:6:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$7348_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 8010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7796:14:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7348", + "typeString": "contract IERC20" + } + }, + "id": 8011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 7336, + "src": "7796:23:27", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 8014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7796:35:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8015, + "nodeType": "ExpressionStatement", + "src": "7796:35:27" + } + ] + }, + "functionSelector": "55b8fb81", + "id": 8017, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 8006, + "kind": "modifierInvocation", + "modifierName": { + "id": 8005, + "name": "onlyTrusty", + "nodeType": "IdentifierPath", + "referencedDeclaration": 7520, + "src": "7781:10:27" + }, + "nodeType": "ModifierInvocation", + "src": "7781:10:27" + } + ], + "name": "emergencyWithdrawERC20", + "nameLocation": "7705:22:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8004, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7999, + "mutability": "mutable", + "name": "to", + "nameLocation": "7736:2:27", + "nodeType": "VariableDeclaration", + "scope": 8017, + "src": "7728:10:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7998, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7728:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8001, + "mutability": "mutable", + "name": "_token", + "nameLocation": "7748:6:27", + "nodeType": "VariableDeclaration", + "scope": 8017, + "src": "7740:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8000, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7740:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8003, + "mutability": "mutable", + "name": "amount", + "nameLocation": "7764:6:27", + "nodeType": "VariableDeclaration", + "scope": 8017, + "src": "7756:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8002, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7756:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7727:44:27" + }, + "returnParameters": { + "id": 8007, + "nodeType": "ParameterList", + "parameters": [], + "src": "7792:0:27" + }, + "scope": 8170, + "src": "7696:139:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 8034, + "nodeType": "Block", + "src": "7920:36:27", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8031, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8021, + "src": "7945:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 8028, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8019, + "src": "7932:2:27", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 8027, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7924:8:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 8026, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7924:8:27", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 8029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7924:11:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 8030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "src": "7924:20:27", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 8032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7924:28:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8033, + "nodeType": "ExpressionStatement", + "src": "7924:28:27" + } + ] + }, + "functionSelector": "d79e8567", + "id": 8035, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 8024, + "kind": "modifierInvocation", + "modifierName": { + "id": 8023, + "name": "onlyTrusty", + "nodeType": "IdentifierPath", + "referencedDeclaration": 7520, + "src": "7909:10:27" + }, + "nodeType": "ModifierInvocation", + "src": "7909:10:27" + } + ], + "name": "emergencyWithdrawETH", + "nameLocation": "7846:20:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8022, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8019, + "mutability": "mutable", + "name": "to", + "nameLocation": "7883:2:27", + "nodeType": "VariableDeclaration", + "scope": 8035, + "src": "7867:18:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 8018, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7867:15:27", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8021, + "mutability": "mutable", + "name": "amount", + "nameLocation": "7892:6:27", + "nodeType": "VariableDeclaration", + "scope": 8035, + "src": "7887:11:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8020, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7887:4:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7866:33:27" + }, + "returnParameters": { + "id": 8025, + "nodeType": "ParameterList", + "parameters": [], + "src": "7920:0:27" + }, + "scope": 8170, + "src": "7837:119:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 8057, + "nodeType": "Block", + "src": "8049:130:27", + "statements": [ + { + "expression": { + "id": 8046, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8044, + "name": "daoWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7387, + "src": "8053:9:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 8045, + "name": "_daoWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8037, + "src": "8065:10:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8053:22:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8047, + "nodeType": "ExpressionStatement", + "src": "8053:22:27" + }, + { + "expression": { + "id": 8050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8048, + "name": "earlyFoundersWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7389, + "src": "8079:19:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 8049, + "name": "_earlyFoundersWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8039, + "src": "8101:20:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8079:42:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8051, + "nodeType": "ExpressionStatement", + "src": "8079:42:27" + }, + { + "eventCall": { + "arguments": [ + { + "id": 8053, + "name": "_daoWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8037, + "src": "8142:10:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8054, + "name": "_earlyFoundersWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8039, + "src": "8154:20:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8052, + "name": "WalletsSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8139, + "src": "8131:10:27", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 8055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8131:44:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8056, + "nodeType": "EmitStatement", + "src": "8126:49:27" + } + ] + }, + "functionSelector": "d3f6a157", + "id": 8058, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 8042, + "kind": "modifierInvocation", + "modifierName": { + "id": 8041, + "name": "onlyTrusty", + "nodeType": "IdentifierPath", + "referencedDeclaration": 7520, + "src": "8038:10:27" + }, + "nodeType": "ModifierInvocation", + "src": "8038:10:27" + } + ], + "name": "setWallets", + "nameLocation": "7968:10:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8040, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8037, + "mutability": "mutable", + "name": "_daoWallet", + "nameLocation": "7987:10:27", + "nodeType": "VariableDeclaration", + "scope": 8058, + "src": "7979:18:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8036, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7979:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8039, + "mutability": "mutable", + "name": "_earlyFoundersWallet", + "nameLocation": "8007:20:27", + "nodeType": "VariableDeclaration", + "scope": 8058, + "src": "7999:28:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8038, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7999:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7978:50:27" + }, + "returnParameters": { + "id": 8043, + "nodeType": "ParameterList", + "parameters": [], + "src": "8049:0:27" + }, + "scope": 8170, + "src": "7959:220:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 8083, + "nodeType": "Block", + "src": "8269:154:27", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8067, + "name": "withdrawParticleCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7875, + "src": "8273:25:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 8068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8273:27:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8069, + "nodeType": "ExpressionStatement", + "src": "8273:27:27" + }, + { + "expression": { + "id": 8072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8070, + "name": "daoShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7383, + "src": "8304:8:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 8071, + "name": "_daoShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8060, + "src": "8315:9:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8304:20:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8073, + "nodeType": "ExpressionStatement", + "src": "8304:20:27" + }, + { + "expression": { + "id": 8076, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8074, + "name": "earlyFoundersShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7385, + "src": "8328:18:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 8075, + "name": "_earlyFoundersShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8062, + "src": "8349:19:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8328:40:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8077, + "nodeType": "ExpressionStatement", + "src": "8328:40:27" + }, + { + "eventCall": { + "arguments": [ + { + "id": 8079, + "name": "_daoShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8060, + "src": "8388:9:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 8080, + "name": "_earlyFoundersShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8062, + "src": "8399:19:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8078, + "name": "SharesSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8127, + "src": "8378:9:27", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 8081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8378:41:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8082, + "nodeType": "EmitStatement", + "src": "8373:46:27" + } + ] + }, + "functionSelector": "2aca3e7d", + "id": 8084, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 8065, + "kind": "modifierInvocation", + "modifierName": { + "id": 8064, + "name": "onlyTrusty", + "nodeType": "IdentifierPath", + "referencedDeclaration": 7520, + "src": "8258:10:27" + }, + "nodeType": "ModifierInvocation", + "src": "8258:10:27" + } + ], + "name": "setShares", + "nameLocation": "8191:9:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8063, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8060, + "mutability": "mutable", + "name": "_daoShare", + "nameLocation": "8209:9:27", + "nodeType": "VariableDeclaration", + "scope": 8084, + "src": "8201:17:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8059, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8201:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8062, + "mutability": "mutable", + "name": "_earlyFoundersShare", + "nameLocation": "8228:19:27", + "nodeType": "VariableDeclaration", + "scope": 8084, + "src": "8220:27:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8061, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8220:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8200:48:27" + }, + "returnParameters": { + "id": 8066, + "nodeType": "ParameterList", + "parameters": [], + "src": "8269:0:27" + }, + "scope": 8170, + "src": "8182:241:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 8110, + "nodeType": "Block", + "src": "8487:240:27", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 8091, + "name": "REWARD_PER_BLOCK_SETTER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7401, + "src": "8507:23:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 8092, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "8532:3:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 8093, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "8532:10:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8090, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6072, + "src": "8499:7:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 8094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8499:44:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5354414b494e473a3a736574526577617264506572426c6f636b3a2043616c6c6572206973206e6f74206120726577617264506572426c6f636b536574746572", + "id": 8095, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8545:66:27", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ff1e85932c30521286b05d6756ae02bff4c36af182f9cd76188879e4a82a0ced", + "typeString": "literal_string \"STAKING::setRewardPerBlock: Caller is not a rewardPerBlockSetter\"" + }, + "value": "STAKING::setRewardPerBlock: Caller is not a rewardPerBlockSetter" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ff1e85932c30521286b05d6756ae02bff4c36af182f9cd76188879e4a82a0ced", + "typeString": "literal_string \"STAKING::setRewardPerBlock: Caller is not a rewardPerBlockSetter\"" + } + ], + "id": 8089, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8491:7:27", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 8096, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8491:121:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8097, + "nodeType": "ExpressionStatement", + "src": "8491:121:27" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8098, + "name": "update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7616, + "src": "8616:6:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 8099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8616:8:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8100, + "nodeType": "ExpressionStatement", + "src": "8616:8:27" + }, + { + "eventCall": { + "arguments": [ + { + "id": 8102, + "name": "rewardPerBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7375, + "src": "8655:14:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 8103, + "name": "_rewardPerBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8086, + "src": "8671:15:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8101, + "name": "RewardPerBlockChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8169, + "src": "8633:21:27", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 8104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8633:54:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8105, + "nodeType": "EmitStatement", + "src": "8628:59:27" + }, + { + "expression": { + "id": 8108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8106, + "name": "rewardPerBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7375, + "src": "8691:14:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 8107, + "name": "_rewardPerBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8086, + "src": "8708:15:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8691:32:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8109, + "nodeType": "ExpressionStatement", + "src": "8691:32:27" + } + ] + }, + "functionSelector": "bb872b4a", + "id": 8111, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setRewardPerBlock", + "nameLocation": "8435:17:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8087, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8086, + "mutability": "mutable", + "name": "_rewardPerBlock", + "nameLocation": "8461:15:27", + "nodeType": "VariableDeclaration", + "scope": 8111, + "src": "8453:23:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8085, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8453:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8452:25:27" + }, + "returnParameters": { + "id": 8088, + "nodeType": "ParameterList", + "parameters": [], + "src": "8487:0:27" + }, + "scope": 8170, + "src": "8426:301:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "id": 8117, + "name": "withdrawStakedtokens", + "nameLocation": "8774:20:27", + "nodeType": "EventDefinition", + "parameters": { + "id": 8116, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8113, + "indexed": false, + "mutability": "mutable", + "name": "totalStakedTokens", + "nameLocation": "8803:17:27", + "nodeType": "VariableDeclaration", + "scope": 8117, + "src": "8795:25:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8112, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8795:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8115, + "indexed": false, + "mutability": "mutable", + "name": "to", + "nameLocation": "8830:2:27", + "nodeType": "VariableDeclaration", + "scope": 8117, + "src": "8822:10:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8114, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8822:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8794:39:27" + }, + "src": "8768:66:27" + }, + { + "anonymous": false, + "id": 8121, + "name": "StakedTokenSet", + "nameLocation": "8842:14:27", + "nodeType": "EventDefinition", + "parameters": { + "id": 8120, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8119, + "indexed": false, + "mutability": "mutable", + "name": "_stakedToken", + "nameLocation": "8865:12:27", + "nodeType": "VariableDeclaration", + "scope": 8121, + "src": "8857:20:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8118, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8857:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8856:22:27" + }, + "src": "8836:43:27" + }, + { + "anonymous": false, + "id": 8127, + "name": "SharesSet", + "nameLocation": "8887:9:27", + "nodeType": "EventDefinition", + "parameters": { + "id": 8126, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8123, + "indexed": false, + "mutability": "mutable", + "name": "_daoShare", + "nameLocation": "8905:9:27", + "nodeType": "VariableDeclaration", + "scope": 8127, + "src": "8897:17:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8122, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8897:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8125, + "indexed": false, + "mutability": "mutable", + "name": "_earlyFoundersShare", + "nameLocation": "8924:19:27", + "nodeType": "VariableDeclaration", + "scope": 8127, + "src": "8916:27:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8124, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8916:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8896:48:27" + }, + "src": "8881:64:27" + }, + { + "anonymous": false, + "id": 8133, + "name": "WithdrawParticleCollectorAmount", + "nameLocation": "8953:31:27", + "nodeType": "EventDefinition", + "parameters": { + "id": 8132, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8129, + "indexed": false, + "mutability": "mutable", + "name": "_earlyFoundersShare", + "nameLocation": "8993:19:27", + "nodeType": "VariableDeclaration", + "scope": 8133, + "src": "8985:27:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8128, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8985:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8131, + "indexed": false, + "mutability": "mutable", + "name": "_daoShare", + "nameLocation": "9022:9:27", + "nodeType": "VariableDeclaration", + "scope": 8133, + "src": "9014:17:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8130, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9014:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8984:48:27" + }, + "src": "8947:86:27" + }, + { + "anonymous": false, + "id": 8139, + "name": "WalletsSet", + "nameLocation": "9041:10:27", + "nodeType": "EventDefinition", + "parameters": { + "id": 8138, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8135, + "indexed": false, + "mutability": "mutable", + "name": "_daoWallet", + "nameLocation": "9060:10:27", + "nodeType": "VariableDeclaration", + "scope": 8139, + "src": "9052:18:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8134, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9052:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8137, + "indexed": false, + "mutability": "mutable", + "name": "_earlyFoundersWallet", + "nameLocation": "9080:20:27", + "nodeType": "VariableDeclaration", + "scope": 8139, + "src": "9072:28:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8136, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9072:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "9051:50:27" + }, + "src": "9035:67:27" + }, + { + "anonymous": false, + "id": 8145, + "name": "Deposit", + "nameLocation": "9110:7:27", + "nodeType": "EventDefinition", + "parameters": { + "id": 8144, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8141, + "indexed": false, + "mutability": "mutable", + "name": "user", + "nameLocation": "9126:4:27", + "nodeType": "VariableDeclaration", + "scope": 8145, + "src": "9118:12:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8140, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9118:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8143, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "9140:6:27", + "nodeType": "VariableDeclaration", + "scope": 8145, + "src": "9132:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8142, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9132:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9117:30:27" + }, + "src": "9104:44:27" + }, + { + "anonymous": false, + "id": 8151, + "name": "Withdraw", + "nameLocation": "9156:8:27", + "nodeType": "EventDefinition", + "parameters": { + "id": 8150, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8147, + "indexed": false, + "mutability": "mutable", + "name": "user", + "nameLocation": "9173:4:27", + "nodeType": "VariableDeclaration", + "scope": 8151, + "src": "9165:12:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8146, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9165:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8149, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "9187:6:27", + "nodeType": "VariableDeclaration", + "scope": 8151, + "src": "9179:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8148, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9179:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9164:30:27" + }, + "src": "9150:45:27" + }, + { + "anonymous": false, + "id": 8157, + "name": "EmergencyWithdraw", + "nameLocation": "9203:17:27", + "nodeType": "EventDefinition", + "parameters": { + "id": 8156, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8153, + "indexed": false, + "mutability": "mutable", + "name": "user", + "nameLocation": "9229:4:27", + "nodeType": "VariableDeclaration", + "scope": 8157, + "src": "9221:12:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8152, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9221:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8155, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "9243:6:27", + "nodeType": "VariableDeclaration", + "scope": 8157, + "src": "9235:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8154, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9235:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9220:30:27" + }, + "src": "9197:54:27" + }, + { + "anonymous": false, + "id": 8163, + "name": "RewardClaimed", + "nameLocation": "9259:13:27", + "nodeType": "EventDefinition", + "parameters": { + "id": 8162, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8159, + "indexed": false, + "mutability": "mutable", + "name": "user", + "nameLocation": "9281:4:27", + "nodeType": "VariableDeclaration", + "scope": 8163, + "src": "9273:12:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8158, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9273:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8161, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "9295:6:27", + "nodeType": "VariableDeclaration", + "scope": 8163, + "src": "9287:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8160, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9287:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9272:30:27" + }, + "src": "9253:50:27" + }, + { + "anonymous": false, + "id": 8169, + "name": "RewardPerBlockChanged", + "nameLocation": "9311:21:27", + "nodeType": "EventDefinition", + "parameters": { + "id": 8168, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8165, + "indexed": false, + "mutability": "mutable", + "name": "oldValue", + "nameLocation": "9341:8:27", + "nodeType": "VariableDeclaration", + "scope": 8169, + "src": "9333:16:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8164, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9333:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8167, + "indexed": false, + "mutability": "mutable", + "name": "newValue", + "nameLocation": "9359:8:27", + "nodeType": "VariableDeclaration", + "scope": 8169, + "src": "9351:16:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8166, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9351:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9332:36:27" + }, + "src": "9305:64:27" + } + ], + "scope": 8171, + "src": "1673:7698:27", + "usedErrors": [] + } + ], + "src": "1243:8147:27" + }, + "id": 27 + }, + "contracts/Uniswap/Interfaces/IUniswapV2Callee.sol": { + "ast": { + "absolutePath": "contracts/Uniswap/Interfaces/IUniswapV2Callee.sol", + "exportedSymbols": { + "IUniswapV2Callee": [ + 8184 + ] + }, + "id": 8185, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8172, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:28" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IUniswapV2Callee", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 8184, + "linearizedBaseContracts": [ + 8184 + ], + "name": "IUniswapV2Callee", + "nameLocation": "69:16:28", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "10d1e85c", + "id": 8183, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "uniswapV2Call", + "nameLocation": "101:13:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8181, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8174, + "mutability": "mutable", + "name": "sender", + "nameLocation": "123:6:28", + "nodeType": "VariableDeclaration", + "scope": 8183, + "src": "115:14:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8173, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "115:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8176, + "mutability": "mutable", + "name": "amount0", + "nameLocation": "136:7:28", + "nodeType": "VariableDeclaration", + "scope": 8183, + "src": "131:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8175, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "131:4:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8178, + "mutability": "mutable", + "name": "amount1", + "nameLocation": "150:7:28", + "nodeType": "VariableDeclaration", + "scope": 8183, + "src": "145:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8177, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "145:4:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8180, + "mutability": "mutable", + "name": "data", + "nameLocation": "174:4:28", + "nodeType": "VariableDeclaration", + "scope": 8183, + "src": "159:19:28", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8179, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "159:5:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "114:65:28" + }, + "returnParameters": { + "id": 8182, + "nodeType": "ParameterList", + "parameters": [], + "src": "188:0:28" + }, + "scope": 8184, + "src": "92:97:28", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 8185, + "src": "59:132:28", + "usedErrors": [] + } + ], + "src": "32:160:28" + }, + "id": 28 + }, + "contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol": { + "ast": { + "absolutePath": "contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol", + "exportedSymbols": { + "IUniswapV2ERC20": [ + 8302 + ] + }, + "id": 8303, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8186, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:29" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IUniswapV2ERC20", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 8302, + "linearizedBaseContracts": [ + 8302 + ], + "name": "IUniswapV2ERC20", + "nameLocation": "69:15:29", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "id": 8194, + "name": "Approval", + "nameLocation": "97:8:29", + "nodeType": "EventDefinition", + "parameters": { + "id": 8193, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8188, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "122:5:29", + "nodeType": "VariableDeclaration", + "scope": 8194, + "src": "106:21:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8187, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "106:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8190, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nameLocation": "145:7:29", + "nodeType": "VariableDeclaration", + "scope": 8194, + "src": "129:23:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8189, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "129:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8192, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "159:5:29", + "nodeType": "VariableDeclaration", + "scope": 8194, + "src": "154:10:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8191, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "154:4:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "105:60:29" + }, + "src": "91:75:29" + }, + { + "anonymous": false, + "id": 8202, + "name": "Transfer", + "nameLocation": "177:8:29", + "nodeType": "EventDefinition", + "parameters": { + "id": 8201, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8196, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "202:4:29", + "nodeType": "VariableDeclaration", + "scope": 8202, + "src": "186:20:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8195, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "186:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8198, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "224:2:29", + "nodeType": "VariableDeclaration", + "scope": 8202, + "src": "208:18:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8197, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "208:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8200, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "233:5:29", + "nodeType": "VariableDeclaration", + "scope": 8202, + "src": "228:10:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8199, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "228:4:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "185:54:29" + }, + "src": "171:69:29" + }, + { + "functionSelector": "06fdde03", + "id": 8207, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "255:4:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8203, + "nodeType": "ParameterList", + "parameters": [], + "src": "259:2:29" + }, + "returnParameters": { + "id": 8206, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8205, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8207, + "src": "285:13:29", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8204, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "285:6:29", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "284:15:29" + }, + "scope": 8302, + "src": "246:54:29", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "95d89b41", + "id": 8212, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "314:6:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8208, + "nodeType": "ParameterList", + "parameters": [], + "src": "320:2:29" + }, + "returnParameters": { + "id": 8211, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8210, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8212, + "src": "346:13:29", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8209, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "346:6:29", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "345:15:29" + }, + "scope": 8302, + "src": "305:56:29", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "313ce567", + "id": 8217, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nameLocation": "375:8:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8213, + "nodeType": "ParameterList", + "parameters": [], + "src": "383:2:29" + }, + "returnParameters": { + "id": 8216, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8215, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8217, + "src": "409:5:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 8214, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "409:5:29", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "408:7:29" + }, + "scope": 8302, + "src": "366:50:29", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "18160ddd", + "id": 8222, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "430:11:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8218, + "nodeType": "ParameterList", + "parameters": [], + "src": "441:2:29" + }, + "returnParameters": { + "id": 8221, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8220, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8222, + "src": "467:4:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8219, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "467:4:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "466:6:29" + }, + "scope": 8302, + "src": "421:52:29", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "70a08231", + "id": 8229, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "487:9:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8225, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8224, + "mutability": "mutable", + "name": "owner", + "nameLocation": "505:5:29", + "nodeType": "VariableDeclaration", + "scope": 8229, + "src": "497:13:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8223, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "497:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "496:15:29" + }, + "returnParameters": { + "id": 8228, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8227, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8229, + "src": "535:4:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8226, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "535:4:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "534:6:29" + }, + "scope": 8302, + "src": "478:63:29", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "dd62ed3e", + "id": 8238, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "555:9:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8234, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8231, + "mutability": "mutable", + "name": "owner", + "nameLocation": "573:5:29", + "nodeType": "VariableDeclaration", + "scope": 8238, + "src": "565:13:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8230, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "565:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8233, + "mutability": "mutable", + "name": "spender", + "nameLocation": "588:7:29", + "nodeType": "VariableDeclaration", + "scope": 8238, + "src": "580:15:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8232, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "580:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "564:32:29" + }, + "returnParameters": { + "id": 8237, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8236, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8238, + "src": "620:4:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8235, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "620:4:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "619:6:29" + }, + "scope": 8302, + "src": "546:80:29", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "095ea7b3", + "id": 8247, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "641:7:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8243, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8240, + "mutability": "mutable", + "name": "spender", + "nameLocation": "657:7:29", + "nodeType": "VariableDeclaration", + "scope": 8247, + "src": "649:15:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8239, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "649:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8242, + "mutability": "mutable", + "name": "value", + "nameLocation": "671:5:29", + "nodeType": "VariableDeclaration", + "scope": 8247, + "src": "666:10:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8241, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "666:4:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "648:29:29" + }, + "returnParameters": { + "id": 8246, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8245, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8247, + "src": "696:4:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8244, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "696:4:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "695:6:29" + }, + "scope": 8302, + "src": "632:70:29", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a9059cbb", + "id": 8256, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "716:8:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8252, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8249, + "mutability": "mutable", + "name": "to", + "nameLocation": "733:2:29", + "nodeType": "VariableDeclaration", + "scope": 8256, + "src": "725:10:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8248, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "725:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8251, + "mutability": "mutable", + "name": "value", + "nameLocation": "742:5:29", + "nodeType": "VariableDeclaration", + "scope": 8256, + "src": "737:10:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8250, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "737:4:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "724:24:29" + }, + "returnParameters": { + "id": 8255, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8254, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8256, + "src": "767:4:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8253, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "767:4:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "766:6:29" + }, + "scope": 8302, + "src": "707:66:29", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "23b872dd", + "id": 8267, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "787:12:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8263, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8258, + "mutability": "mutable", + "name": "from", + "nameLocation": "808:4:29", + "nodeType": "VariableDeclaration", + "scope": 8267, + "src": "800:12:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8257, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "800:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8260, + "mutability": "mutable", + "name": "to", + "nameLocation": "822:2:29", + "nodeType": "VariableDeclaration", + "scope": 8267, + "src": "814:10:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8259, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "814:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8262, + "mutability": "mutable", + "name": "value", + "nameLocation": "831:5:29", + "nodeType": "VariableDeclaration", + "scope": 8267, + "src": "826:10:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8261, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "826:4:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "799:38:29" + }, + "returnParameters": { + "id": 8266, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8265, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8267, + "src": "856:4:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8264, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "856:4:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "855:6:29" + }, + "scope": 8302, + "src": "778:84:29", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "3644e515", + "id": 8272, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "DOMAIN_SEPARATOR", + "nameLocation": "877:16:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8268, + "nodeType": "ParameterList", + "parameters": [], + "src": "893:2:29" + }, + "returnParameters": { + "id": 8271, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8270, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8272, + "src": "919:7:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8269, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "919:7:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "918:9:29" + }, + "scope": 8302, + "src": "868:60:29", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "30adf81f", + "id": 8277, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "PERMIT_TYPEHASH", + "nameLocation": "942:15:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8273, + "nodeType": "ParameterList", + "parameters": [], + "src": "957:2:29" + }, + "returnParameters": { + "id": 8276, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8275, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8277, + "src": "983:7:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8274, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "983:7:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "982:9:29" + }, + "scope": 8302, + "src": "933:59:29", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "7ecebe00", + "id": 8284, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "nonces", + "nameLocation": "1006:6:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8280, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8279, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1021:5:29", + "nodeType": "VariableDeclaration", + "scope": 8284, + "src": "1013:13:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8278, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1013:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1012:15:29" + }, + "returnParameters": { + "id": 8283, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8282, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8284, + "src": "1051:4:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8281, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1051:4:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1050:6:29" + }, + "scope": 8302, + "src": "997:60:29", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "d505accf", + "id": 8301, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "permit", + "nameLocation": "1072:6:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8299, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8286, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1087:5:29", + "nodeType": "VariableDeclaration", + "scope": 8301, + "src": "1079:13:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8285, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1079:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8288, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1102:7:29", + "nodeType": "VariableDeclaration", + "scope": 8301, + "src": "1094:15:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8287, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1094:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8290, + "mutability": "mutable", + "name": "value", + "nameLocation": "1116:5:29", + "nodeType": "VariableDeclaration", + "scope": 8301, + "src": "1111:10:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8289, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1111:4:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8292, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "1128:8:29", + "nodeType": "VariableDeclaration", + "scope": 8301, + "src": "1123:13:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8291, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1123:4:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8294, + "mutability": "mutable", + "name": "v", + "nameLocation": "1144:1:29", + "nodeType": "VariableDeclaration", + "scope": 8301, + "src": "1138:7:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 8293, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1138:5:29", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8296, + "mutability": "mutable", + "name": "r", + "nameLocation": "1155:1:29", + "nodeType": "VariableDeclaration", + "scope": 8301, + "src": "1147:9:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8295, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1147:7:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8298, + "mutability": "mutable", + "name": "s", + "nameLocation": "1166:1:29", + "nodeType": "VariableDeclaration", + "scope": 8301, + "src": "1158:9:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8297, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1158:7:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1078:90:29" + }, + "returnParameters": { + "id": 8300, + "nodeType": "ParameterList", + "parameters": [], + "src": "1177:0:29" + }, + "scope": 8302, + "src": "1063:115:29", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 8303, + "src": "59:1121:29", + "usedErrors": [] + } + ], + "src": "32:1149:29" + }, + "id": 29 + }, + "contracts/Uniswap/Interfaces/IUniswapV2Factory.sol": { + "ast": { + "absolutePath": "contracts/Uniswap/Interfaces/IUniswapV2Factory.sol", + "exportedSymbols": { + "IUniswapV2Factory": [ + 8365 + ] + }, + "id": 8366, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8304, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:30" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IUniswapV2Factory", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 8365, + "linearizedBaseContracts": [ + 8365 + ], + "name": "IUniswapV2Factory", + "nameLocation": "69:17:30", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "id": 8314, + "name": "PairCreated", + "nameLocation": "99:11:30", + "nodeType": "EventDefinition", + "parameters": { + "id": 8313, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8306, + "indexed": true, + "mutability": "mutable", + "name": "token0", + "nameLocation": "127:6:30", + "nodeType": "VariableDeclaration", + "scope": 8314, + "src": "111:22:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8305, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "111:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8308, + "indexed": true, + "mutability": "mutable", + "name": "token1", + "nameLocation": "151:6:30", + "nodeType": "VariableDeclaration", + "scope": 8314, + "src": "135:22:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8307, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "135:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8310, + "indexed": false, + "mutability": "mutable", + "name": "pair", + "nameLocation": "167:4:30", + "nodeType": "VariableDeclaration", + "scope": 8314, + "src": "159:12:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8309, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "159:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8312, + "indexed": false, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8314, + "src": "173:4:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8311, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "173:4:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "110:68:30" + }, + "src": "93:86:30" + }, + { + "functionSelector": "017e7e58", + "id": 8319, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "feeTo", + "nameLocation": "194:5:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8315, + "nodeType": "ParameterList", + "parameters": [], + "src": "199:2:30" + }, + "returnParameters": { + "id": 8318, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8317, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8319, + "src": "225:7:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8316, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "225:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "224:9:30" + }, + "scope": 8365, + "src": "185:49:30", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "094b7415", + "id": 8324, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "feeToSetter", + "nameLocation": "248:11:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8320, + "nodeType": "ParameterList", + "parameters": [], + "src": "259:2:30" + }, + "returnParameters": { + "id": 8323, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8322, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8324, + "src": "285:7:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8321, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "285:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "284:9:30" + }, + "scope": 8365, + "src": "239:55:30", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e6a43905", + "id": 8333, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getPair", + "nameLocation": "309:7:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8329, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8326, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "325:6:30", + "nodeType": "VariableDeclaration", + "scope": 8333, + "src": "317:14:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8325, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "317:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8328, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "341:6:30", + "nodeType": "VariableDeclaration", + "scope": 8333, + "src": "333:14:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8327, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "333:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "316:32:30" + }, + "returnParameters": { + "id": 8332, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8331, + "mutability": "mutable", + "name": "pair", + "nameLocation": "380:4:30", + "nodeType": "VariableDeclaration", + "scope": 8333, + "src": "372:12:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8330, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "372:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "371:14:30" + }, + "scope": 8365, + "src": "300:86:30", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "1e3dd18b", + "id": 8340, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allPairs", + "nameLocation": "400:8:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8336, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8335, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8340, + "src": "409:4:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8334, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "409:4:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "408:6:30" + }, + "returnParameters": { + "id": 8339, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8338, + "mutability": "mutable", + "name": "pair", + "nameLocation": "446:4:30", + "nodeType": "VariableDeclaration", + "scope": 8340, + "src": "438:12:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8337, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "438:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "437:14:30" + }, + "scope": 8365, + "src": "391:61:30", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "574f2ba3", + "id": 8345, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allPairsLength", + "nameLocation": "466:14:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8341, + "nodeType": "ParameterList", + "parameters": [], + "src": "480:2:30" + }, + "returnParameters": { + "id": 8344, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8343, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8345, + "src": "506:4:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8342, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "506:4:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "505:6:30" + }, + "scope": 8365, + "src": "457:55:30", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "c9c65396", + "id": 8354, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "createPair", + "nameLocation": "527:10:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8350, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8347, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "546:6:30", + "nodeType": "VariableDeclaration", + "scope": 8354, + "src": "538:14:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8346, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "538:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8349, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "562:6:30", + "nodeType": "VariableDeclaration", + "scope": 8354, + "src": "554:14:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8348, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "554:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "537:32:30" + }, + "returnParameters": { + "id": 8353, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8352, + "mutability": "mutable", + "name": "pair", + "nameLocation": "596:4:30", + "nodeType": "VariableDeclaration", + "scope": 8354, + "src": "588:12:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8351, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "588:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "587:14:30" + }, + "scope": 8365, + "src": "518:84:30", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "f46901ed", + "id": 8359, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setFeeTo", + "nameLocation": "617:8:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8357, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8356, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8359, + "src": "626:7:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8355, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "626:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "625:9:30" + }, + "returnParameters": { + "id": 8358, + "nodeType": "ParameterList", + "parameters": [], + "src": "643:0:30" + }, + "scope": 8365, + "src": "608:36:30", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a2e74af6", + "id": 8364, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setFeeToSetter", + "nameLocation": "658:14:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8362, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8361, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8364, + "src": "673:7:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8360, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "673:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "672:9:30" + }, + "returnParameters": { + "id": 8363, + "nodeType": "ParameterList", + "parameters": [], + "src": "690:0:30" + }, + "scope": 8365, + "src": "649:42:30", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 8366, + "src": "59:634:30", + "usedErrors": [] + } + ], + "src": "32:662:30" + }, + "id": 30 + }, + "contracts/Uniswap/Interfaces/IUniswapV2Pair.sol": { + "ast": { + "absolutePath": "contracts/Uniswap/Interfaces/IUniswapV2Pair.sol", + "exportedSymbols": { + "IUniswapV2Pair": [ + 8607 + ] + }, + "id": 8608, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8367, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:31" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IUniswapV2Pair", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 8607, + "linearizedBaseContracts": [ + 8607 + ], + "name": "IUniswapV2Pair", + "nameLocation": "69:14:31", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "id": 8375, + "name": "Approval", + "nameLocation": "96:8:31", + "nodeType": "EventDefinition", + "parameters": { + "id": 8374, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8369, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "121:5:31", + "nodeType": "VariableDeclaration", + "scope": 8375, + "src": "105:21:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8368, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "105:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8371, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nameLocation": "144:7:31", + "nodeType": "VariableDeclaration", + "scope": 8375, + "src": "128:23:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8370, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "128:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8373, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "158:5:31", + "nodeType": "VariableDeclaration", + "scope": 8375, + "src": "153:10:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8372, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "153:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "104:60:31" + }, + "src": "90:75:31" + }, + { + "anonymous": false, + "id": 8383, + "name": "Transfer", + "nameLocation": "176:8:31", + "nodeType": "EventDefinition", + "parameters": { + "id": 8382, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8377, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "201:4:31", + "nodeType": "VariableDeclaration", + "scope": 8383, + "src": "185:20:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8376, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "185:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8379, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "223:2:31", + "nodeType": "VariableDeclaration", + "scope": 8383, + "src": "207:18:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8378, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "207:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8381, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "232:5:31", + "nodeType": "VariableDeclaration", + "scope": 8383, + "src": "227:10:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8380, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "227:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "184:54:31" + }, + "src": "170:69:31" + }, + { + "functionSelector": "06fdde03", + "id": 8388, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "254:4:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8384, + "nodeType": "ParameterList", + "parameters": [], + "src": "258:2:31" + }, + "returnParameters": { + "id": 8387, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8386, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8388, + "src": "284:13:31", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8385, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "284:6:31", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "283:15:31" + }, + "scope": 8607, + "src": "245:54:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "95d89b41", + "id": 8393, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "313:6:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8389, + "nodeType": "ParameterList", + "parameters": [], + "src": "319:2:31" + }, + "returnParameters": { + "id": 8392, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8391, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8393, + "src": "345:13:31", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8390, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "345:6:31", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "344:15:31" + }, + "scope": 8607, + "src": "304:56:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "313ce567", + "id": 8398, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nameLocation": "374:8:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8394, + "nodeType": "ParameterList", + "parameters": [], + "src": "382:2:31" + }, + "returnParameters": { + "id": 8397, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8396, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8398, + "src": "408:5:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 8395, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "408:5:31", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "407:7:31" + }, + "scope": 8607, + "src": "365:50:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "18160ddd", + "id": 8403, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "429:11:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8399, + "nodeType": "ParameterList", + "parameters": [], + "src": "440:2:31" + }, + "returnParameters": { + "id": 8402, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8401, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8403, + "src": "466:4:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8400, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "466:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "465:6:31" + }, + "scope": 8607, + "src": "420:52:31", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "70a08231", + "id": 8410, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "486:9:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8406, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8405, + "mutability": "mutable", + "name": "owner", + "nameLocation": "504:5:31", + "nodeType": "VariableDeclaration", + "scope": 8410, + "src": "496:13:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8404, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "496:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "495:15:31" + }, + "returnParameters": { + "id": 8409, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8408, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8410, + "src": "534:4:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8407, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "534:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "533:6:31" + }, + "scope": 8607, + "src": "477:63:31", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "dd62ed3e", + "id": 8419, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "554:9:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8415, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8412, + "mutability": "mutable", + "name": "owner", + "nameLocation": "572:5:31", + "nodeType": "VariableDeclaration", + "scope": 8419, + "src": "564:13:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8411, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "564:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8414, + "mutability": "mutable", + "name": "spender", + "nameLocation": "587:7:31", + "nodeType": "VariableDeclaration", + "scope": 8419, + "src": "579:15:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8413, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "579:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "563:32:31" + }, + "returnParameters": { + "id": 8418, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8417, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8419, + "src": "619:4:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8416, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "619:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "618:6:31" + }, + "scope": 8607, + "src": "545:80:31", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "095ea7b3", + "id": 8428, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "640:7:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8424, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8421, + "mutability": "mutable", + "name": "spender", + "nameLocation": "656:7:31", + "nodeType": "VariableDeclaration", + "scope": 8428, + "src": "648:15:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8420, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "648:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8423, + "mutability": "mutable", + "name": "value", + "nameLocation": "670:5:31", + "nodeType": "VariableDeclaration", + "scope": 8428, + "src": "665:10:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8422, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "665:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "647:29:31" + }, + "returnParameters": { + "id": 8427, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8426, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8428, + "src": "695:4:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8425, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "695:4:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "694:6:31" + }, + "scope": 8607, + "src": "631:70:31", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a9059cbb", + "id": 8437, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "715:8:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8433, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8430, + "mutability": "mutable", + "name": "to", + "nameLocation": "732:2:31", + "nodeType": "VariableDeclaration", + "scope": 8437, + "src": "724:10:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8429, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "724:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8432, + "mutability": "mutable", + "name": "value", + "nameLocation": "741:5:31", + "nodeType": "VariableDeclaration", + "scope": 8437, + "src": "736:10:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8431, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "736:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "723:24:31" + }, + "returnParameters": { + "id": 8436, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8435, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8437, + "src": "766:4:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8434, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "766:4:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "765:6:31" + }, + "scope": 8607, + "src": "706:66:31", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "23b872dd", + "id": 8448, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "786:12:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8444, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8439, + "mutability": "mutable", + "name": "from", + "nameLocation": "807:4:31", + "nodeType": "VariableDeclaration", + "scope": 8448, + "src": "799:12:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8438, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "799:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8441, + "mutability": "mutable", + "name": "to", + "nameLocation": "821:2:31", + "nodeType": "VariableDeclaration", + "scope": 8448, + "src": "813:10:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8440, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "813:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8443, + "mutability": "mutable", + "name": "value", + "nameLocation": "830:5:31", + "nodeType": "VariableDeclaration", + "scope": 8448, + "src": "825:10:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8442, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "825:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "798:38:31" + }, + "returnParameters": { + "id": 8447, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8446, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8448, + "src": "855:4:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8445, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "855:4:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "854:6:31" + }, + "scope": 8607, + "src": "777:84:31", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "3644e515", + "id": 8453, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "DOMAIN_SEPARATOR", + "nameLocation": "876:16:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8449, + "nodeType": "ParameterList", + "parameters": [], + "src": "892:2:31" + }, + "returnParameters": { + "id": 8452, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8451, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8453, + "src": "918:7:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8450, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "918:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "917:9:31" + }, + "scope": 8607, + "src": "867:60:31", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "30adf81f", + "id": 8458, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "PERMIT_TYPEHASH", + "nameLocation": "941:15:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8454, + "nodeType": "ParameterList", + "parameters": [], + "src": "956:2:31" + }, + "returnParameters": { + "id": 8457, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8456, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8458, + "src": "982:7:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8455, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "982:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "981:9:31" + }, + "scope": 8607, + "src": "932:59:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "7ecebe00", + "id": 8465, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "nonces", + "nameLocation": "1005:6:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8461, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8460, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1020:5:31", + "nodeType": "VariableDeclaration", + "scope": 8465, + "src": "1012:13:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8459, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1012:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1011:15:31" + }, + "returnParameters": { + "id": 8464, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8463, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8465, + "src": "1050:4:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8462, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1050:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1049:6:31" + }, + "scope": 8607, + "src": "996:60:31", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "d505accf", + "id": 8482, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "permit", + "nameLocation": "1071:6:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8480, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8467, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1086:5:31", + "nodeType": "VariableDeclaration", + "scope": 8482, + "src": "1078:13:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8466, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1078:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8469, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1101:7:31", + "nodeType": "VariableDeclaration", + "scope": 8482, + "src": "1093:15:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8468, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1093:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8471, + "mutability": "mutable", + "name": "value", + "nameLocation": "1115:5:31", + "nodeType": "VariableDeclaration", + "scope": 8482, + "src": "1110:10:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8470, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1110:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8473, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "1127:8:31", + "nodeType": "VariableDeclaration", + "scope": 8482, + "src": "1122:13:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8472, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1122:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8475, + "mutability": "mutable", + "name": "v", + "nameLocation": "1143:1:31", + "nodeType": "VariableDeclaration", + "scope": 8482, + "src": "1137:7:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 8474, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1137:5:31", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8477, + "mutability": "mutable", + "name": "r", + "nameLocation": "1154:1:31", + "nodeType": "VariableDeclaration", + "scope": 8482, + "src": "1146:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8476, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1146:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8479, + "mutability": "mutable", + "name": "s", + "nameLocation": "1165:1:31", + "nodeType": "VariableDeclaration", + "scope": 8482, + "src": "1157:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8478, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1157:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1077:90:31" + }, + "returnParameters": { + "id": 8481, + "nodeType": "ParameterList", + "parameters": [], + "src": "1176:0:31" + }, + "scope": 8607, + "src": "1062:115:31", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "id": 8490, + "name": "Mint", + "nameLocation": "1189:4:31", + "nodeType": "EventDefinition", + "parameters": { + "id": 8489, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8484, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1210:6:31", + "nodeType": "VariableDeclaration", + "scope": 8490, + "src": "1194:22:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8483, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1194:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8486, + "indexed": false, + "mutability": "mutable", + "name": "amount0", + "nameLocation": "1223:7:31", + "nodeType": "VariableDeclaration", + "scope": 8490, + "src": "1218:12:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8485, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1218:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8488, + "indexed": false, + "mutability": "mutable", + "name": "amount1", + "nameLocation": "1237:7:31", + "nodeType": "VariableDeclaration", + "scope": 8490, + "src": "1232:12:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8487, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1232:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1193:52:31" + }, + "src": "1183:63:31" + }, + { + "anonymous": false, + "id": 8500, + "name": "Burn", + "nameLocation": "1257:4:31", + "nodeType": "EventDefinition", + "parameters": { + "id": 8499, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8492, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1278:6:31", + "nodeType": "VariableDeclaration", + "scope": 8500, + "src": "1262:22:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8491, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1262:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8494, + "indexed": false, + "mutability": "mutable", + "name": "amount0", + "nameLocation": "1291:7:31", + "nodeType": "VariableDeclaration", + "scope": 8500, + "src": "1286:12:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8493, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1286:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8496, + "indexed": false, + "mutability": "mutable", + "name": "amount1", + "nameLocation": "1305:7:31", + "nodeType": "VariableDeclaration", + "scope": 8500, + "src": "1300:12:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8495, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1300:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8498, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "1330:2:31", + "nodeType": "VariableDeclaration", + "scope": 8500, + "src": "1314:18:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8497, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1314:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1261:72:31" + }, + "src": "1251:83:31" + }, + { + "anonymous": false, + "id": 8514, + "name": "Swap", + "nameLocation": "1345:4:31", + "nodeType": "EventDefinition", + "parameters": { + "id": 8513, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8502, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1375:6:31", + "nodeType": "VariableDeclaration", + "scope": 8514, + "src": "1359:22:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8501, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1359:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8504, + "indexed": false, + "mutability": "mutable", + "name": "amount0In", + "nameLocation": "1396:9:31", + "nodeType": "VariableDeclaration", + "scope": 8514, + "src": "1391:14:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8503, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1391:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8506, + "indexed": false, + "mutability": "mutable", + "name": "amount1In", + "nameLocation": "1420:9:31", + "nodeType": "VariableDeclaration", + "scope": 8514, + "src": "1415:14:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8505, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1415:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8508, + "indexed": false, + "mutability": "mutable", + "name": "amount0Out", + "nameLocation": "1444:10:31", + "nodeType": "VariableDeclaration", + "scope": 8514, + "src": "1439:15:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8507, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1439:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8510, + "indexed": false, + "mutability": "mutable", + "name": "amount1Out", + "nameLocation": "1469:10:31", + "nodeType": "VariableDeclaration", + "scope": 8514, + "src": "1464:15:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8509, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1464:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8512, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "1505:2:31", + "nodeType": "VariableDeclaration", + "scope": 8514, + "src": "1489:18:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8511, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1489:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1349:164:31" + }, + "src": "1339:175:31" + }, + { + "anonymous": false, + "id": 8520, + "name": "Sync", + "nameLocation": "1525:4:31", + "nodeType": "EventDefinition", + "parameters": { + "id": 8519, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8516, + "indexed": false, + "mutability": "mutable", + "name": "reserve0", + "nameLocation": "1538:8:31", + "nodeType": "VariableDeclaration", + "scope": 8520, + "src": "1530:16:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 8515, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "1530:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8518, + "indexed": false, + "mutability": "mutable", + "name": "reserve1", + "nameLocation": "1556:8:31", + "nodeType": "VariableDeclaration", + "scope": 8520, + "src": "1548:16:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 8517, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "1548:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + } + ], + "src": "1529:36:31" + }, + "src": "1519:47:31" + }, + { + "functionSelector": "ba9a7a56", + "id": 8525, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "MINIMUM_LIQUIDITY", + "nameLocation": "1581:17:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8521, + "nodeType": "ParameterList", + "parameters": [], + "src": "1598:2:31" + }, + "returnParameters": { + "id": 8524, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8523, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8525, + "src": "1624:4:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8522, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1624:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1623:6:31" + }, + "scope": 8607, + "src": "1572:58:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "c45a0155", + "id": 8530, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "factory", + "nameLocation": "1644:7:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8526, + "nodeType": "ParameterList", + "parameters": [], + "src": "1651:2:31" + }, + "returnParameters": { + "id": 8529, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8528, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8530, + "src": "1677:7:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8527, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1677:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1676:9:31" + }, + "scope": 8607, + "src": "1635:51:31", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0dfe1681", + "id": 8535, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "token0", + "nameLocation": "1700:6:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8531, + "nodeType": "ParameterList", + "parameters": [], + "src": "1706:2:31" + }, + "returnParameters": { + "id": 8534, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8533, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8535, + "src": "1732:7:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8532, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1732:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1731:9:31" + }, + "scope": 8607, + "src": "1691:50:31", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "d21220a7", + "id": 8540, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "token1", + "nameLocation": "1755:6:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8536, + "nodeType": "ParameterList", + "parameters": [], + "src": "1761:2:31" + }, + "returnParameters": { + "id": 8539, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8538, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8540, + "src": "1787:7:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8537, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1787:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1786:9:31" + }, + "scope": 8607, + "src": "1746:50:31", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0902f1ac", + "id": 8549, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getReserves", + "nameLocation": "1810:11:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8541, + "nodeType": "ParameterList", + "parameters": [], + "src": "1821:2:31" + }, + "returnParameters": { + "id": 8548, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8543, + "mutability": "mutable", + "name": "reserve0", + "nameLocation": "1855:8:31", + "nodeType": "VariableDeclaration", + "scope": 8549, + "src": "1847:16:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 8542, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "1847:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8545, + "mutability": "mutable", + "name": "reserve1", + "nameLocation": "1873:8:31", + "nodeType": "VariableDeclaration", + "scope": 8549, + "src": "1865:16:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 8544, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "1865:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8547, + "mutability": "mutable", + "name": "blockTimestampLast", + "nameLocation": "1890:18:31", + "nodeType": "VariableDeclaration", + "scope": 8549, + "src": "1883:25:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 8546, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1883:6:31", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "src": "1846:63:31" + }, + "scope": 8607, + "src": "1801:109:31", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "5909c0d5", + "id": 8554, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "price0CumulativeLast", + "nameLocation": "1924:20:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8550, + "nodeType": "ParameterList", + "parameters": [], + "src": "1944:2:31" + }, + "returnParameters": { + "id": 8553, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8552, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8554, + "src": "1970:4:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8551, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1970:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1969:6:31" + }, + "scope": 8607, + "src": "1915:61:31", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "5a3d5493", + "id": 8559, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "price1CumulativeLast", + "nameLocation": "1990:20:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8555, + "nodeType": "ParameterList", + "parameters": [], + "src": "2010:2:31" + }, + "returnParameters": { + "id": 8558, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8557, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8559, + "src": "2036:4:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8556, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2036:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2035:6:31" + }, + "scope": 8607, + "src": "1981:61:31", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "7464fc3d", + "id": 8564, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "kLast", + "nameLocation": "2056:5:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8560, + "nodeType": "ParameterList", + "parameters": [], + "src": "2061:2:31" + }, + "returnParameters": { + "id": 8563, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8562, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8564, + "src": "2087:4:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8561, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2087:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2086:6:31" + }, + "scope": 8607, + "src": "2047:46:31", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "6a627842", + "id": 8571, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "mint", + "nameLocation": "2108:4:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8567, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8566, + "mutability": "mutable", + "name": "to", + "nameLocation": "2121:2:31", + "nodeType": "VariableDeclaration", + "scope": 8571, + "src": "2113:10:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8565, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2113:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2112:12:31" + }, + "returnParameters": { + "id": 8570, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8569, + "mutability": "mutable", + "name": "liquidity", + "nameLocation": "2148:9:31", + "nodeType": "VariableDeclaration", + "scope": 8571, + "src": "2143:14:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8568, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2143:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2142:16:31" + }, + "scope": 8607, + "src": "2099:60:31", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "89afcb44", + "id": 8580, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "burn", + "nameLocation": "2173:4:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8574, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8573, + "mutability": "mutable", + "name": "to", + "nameLocation": "2186:2:31", + "nodeType": "VariableDeclaration", + "scope": 8580, + "src": "2178:10:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8572, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2178:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2177:12:31" + }, + "returnParameters": { + "id": 8579, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8576, + "mutability": "mutable", + "name": "amount0", + "nameLocation": "2213:7:31", + "nodeType": "VariableDeclaration", + "scope": 8580, + "src": "2208:12:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8575, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2208:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8578, + "mutability": "mutable", + "name": "amount1", + "nameLocation": "2227:7:31", + "nodeType": "VariableDeclaration", + "scope": 8580, + "src": "2222:12:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8577, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2222:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2207:28:31" + }, + "scope": 8607, + "src": "2164:72:31", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "022c0d9f", + "id": 8591, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swap", + "nameLocation": "2250:4:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8589, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8582, + "mutability": "mutable", + "name": "amount0Out", + "nameLocation": "2260:10:31", + "nodeType": "VariableDeclaration", + "scope": 8591, + "src": "2255:15:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8581, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2255:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8584, + "mutability": "mutable", + "name": "amount1Out", + "nameLocation": "2277:10:31", + "nodeType": "VariableDeclaration", + "scope": 8591, + "src": "2272:15:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8583, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2272:4:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8586, + "mutability": "mutable", + "name": "to", + "nameLocation": "2297:2:31", + "nodeType": "VariableDeclaration", + "scope": 8591, + "src": "2289:10:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8585, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2289:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8588, + "mutability": "mutable", + "name": "data", + "nameLocation": "2316:4:31", + "nodeType": "VariableDeclaration", + "scope": 8591, + "src": "2301:19:31", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8587, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2301:5:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2254:67:31" + }, + "returnParameters": { + "id": 8590, + "nodeType": "ParameterList", + "parameters": [], + "src": "2330:0:31" + }, + "scope": 8607, + "src": "2241:90:31", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "bc25cf77", + "id": 8596, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "skim", + "nameLocation": "2345:4:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8594, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8593, + "mutability": "mutable", + "name": "to", + "nameLocation": "2358:2:31", + "nodeType": "VariableDeclaration", + "scope": 8596, + "src": "2350:10:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8592, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2350:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2349:12:31" + }, + "returnParameters": { + "id": 8595, + "nodeType": "ParameterList", + "parameters": [], + "src": "2370:0:31" + }, + "scope": 8607, + "src": "2336:35:31", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "fff6cae9", + "id": 8599, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "sync", + "nameLocation": "2385:4:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8597, + "nodeType": "ParameterList", + "parameters": [], + "src": "2389:2:31" + }, + "returnParameters": { + "id": 8598, + "nodeType": "ParameterList", + "parameters": [], + "src": "2400:0:31" + }, + "scope": 8607, + "src": "2376:25:31", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "485cc955", + "id": 8606, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "initialize", + "nameLocation": "2416:10:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8604, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8601, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8606, + "src": "2427:7:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8600, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2427:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8603, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8606, + "src": "2436:7:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8602, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2436:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2426:18:31" + }, + "returnParameters": { + "id": 8605, + "nodeType": "ParameterList", + "parameters": [], + "src": "2453:0:31" + }, + "scope": 8607, + "src": "2407:47:31", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 8608, + "src": "59:2398:31", + "usedErrors": [] + } + ], + "src": "32:2426:31" + }, + "id": 31 + }, + "contracts/Uniswap/TransferHelper.sol": { + "ast": { + "absolutePath": "contracts/Uniswap/TransferHelper.sol", + "exportedSymbols": { + "TransferHelper": [ + 8767 + ] + }, + "id": 8768, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8609, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:32" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "TransferHelper", + "contractDependencies": [], + "contractKind": "library", + "fullyImplemented": true, + "id": 8767, + "linearizedBaseContracts": [ + 8767 + ], + "name": "TransferHelper", + "nameLocation": "178:14:32", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 8651, + "nodeType": "Block", + "src": "268:285:32", + "statements": [ + { + "assignments": [ + 8619, + 8621 + ], + "declarations": [ + { + "constant": false, + "id": 8619, + "mutability": "mutable", + "name": "success", + "nameLocation": "349:7:32", + "nodeType": "VariableDeclaration", + "scope": 8651, + "src": "344:12:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8618, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "344:4:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8621, + "mutability": "mutable", + "name": "data", + "nameLocation": "371:4:32", + "nodeType": "VariableDeclaration", + "scope": 8651, + "src": "358:17:32", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8620, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "358:5:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 8631, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30783039356561376233", + "id": 8626, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "413:10:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_157198259_by_1", + "typeString": "int_const 157198259" + }, + "value": "0x095ea7b3" + }, + { + "id": 8627, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8613, + "src": "425:2:32", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8628, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8615, + "src": "429:5:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_157198259_by_1", + "typeString": "int_const 157198259" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 8624, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "390:3:32", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8625, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "390:22:32", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 8629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "390:45:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 8622, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8611, + "src": "379:5:32", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "src": "379:10:32", + "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": 8630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "379:57:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "343:93:32" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 8647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8633, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8619, + "src": "454:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 8645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 8634, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8621, + "src": "466:4:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 8635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "466:11:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 8636, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "481:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "466:16:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 8640, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8621, + "src": "497:4:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 8642, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "504:4:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + }, + "typeName": { + "id": 8641, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "504:4:32", + "typeDescriptions": {} + } + } + ], + "id": 8643, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "503:6:32", + "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": 8638, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "486:3:32", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8639, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "486:10:32", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "486:24:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "466:44:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 8646, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "465:46:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "454:57:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5472616e7366657248656c7065723a20415050524f56455f4641494c4544", + "id": 8648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "513:32:32", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e27be550bb5367a6d8a8b2dd8b5c52ee0710d2d5b26de50062207957ab5bd00", + "typeString": "literal_string \"TransferHelper: APPROVE_FAILED\"" + }, + "value": "TransferHelper: APPROVE_FAILED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e27be550bb5367a6d8a8b2dd8b5c52ee0710d2d5b26de50062207957ab5bd00", + "typeString": "literal_string \"TransferHelper: APPROVE_FAILED\"" + } + ], + "id": 8632, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "446:7:32", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 8649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "446:100:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8650, + "nodeType": "ExpressionStatement", + "src": "446:100:32" + } + ] + }, + "id": 8652, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeApprove", + "nameLocation": "208:11:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8616, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8611, + "mutability": "mutable", + "name": "token", + "nameLocation": "228:5:32", + "nodeType": "VariableDeclaration", + "scope": 8652, + "src": "220:13:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8610, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "220:7:32", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8613, + "mutability": "mutable", + "name": "to", + "nameLocation": "243:2:32", + "nodeType": "VariableDeclaration", + "scope": 8652, + "src": "235:10:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8612, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "235:7:32", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8615, + "mutability": "mutable", + "name": "value", + "nameLocation": "252:5:32", + "nodeType": "VariableDeclaration", + "scope": 8652, + "src": "247:10:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8614, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "247:4:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "219:39:32" + }, + "returnParameters": { + "id": 8617, + "nodeType": "ParameterList", + "parameters": [], + "src": "268:0:32" + }, + "scope": 8767, + "src": "199:354:32", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8694, + "nodeType": "Block", + "src": "629:287:32", + "statements": [ + { + "assignments": [ + 8662, + 8664 + ], + "declarations": [ + { + "constant": false, + "id": 8662, + "mutability": "mutable", + "name": "success", + "nameLocation": "711:7:32", + "nodeType": "VariableDeclaration", + "scope": 8694, + "src": "706:12:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8661, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "706:4:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8664, + "mutability": "mutable", + "name": "data", + "nameLocation": "733:4:32", + "nodeType": "VariableDeclaration", + "scope": 8694, + "src": "720:17:32", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8663, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "720:5:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 8674, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30786139303539636262", + "id": 8669, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "775:10:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_2835717307_by_1", + "typeString": "int_const 2835717307" + }, + "value": "0xa9059cbb" + }, + { + "id": 8670, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8656, + "src": "787:2:32", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8671, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8658, + "src": "791:5:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_2835717307_by_1", + "typeString": "int_const 2835717307" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 8667, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "752:3:32", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8668, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "752:22:32", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 8672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "752:45:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 8665, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8654, + "src": "741:5:32", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "src": "741:10:32", + "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": 8673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "741:57:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "705:93:32" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 8690, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8676, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8662, + "src": "816:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 8688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 8677, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8664, + "src": "828:4:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 8678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "828:11:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 8679, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "843:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "828:16:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 8683, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8664, + "src": "859:4:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 8685, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "866:4:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + }, + "typeName": { + "id": 8684, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "866:4:32", + "typeDescriptions": {} + } + } + ], + "id": 8686, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "865:6:32", + "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": 8681, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "848:3:32", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8682, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "848:10:32", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "848:24:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "828:44:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 8689, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "827:46:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "816:57:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5472616e7366657248656c7065723a205452414e534645525f4641494c4544", + "id": 8691, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "875:33:32", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426", + "typeString": "literal_string \"TransferHelper: TRANSFER_FAILED\"" + }, + "value": "TransferHelper: TRANSFER_FAILED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426", + "typeString": "literal_string \"TransferHelper: TRANSFER_FAILED\"" + } + ], + "id": 8675, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "808:7:32", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 8692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "808:101:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8693, + "nodeType": "ExpressionStatement", + "src": "808:101:32" + } + ] + }, + "id": 8695, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransfer", + "nameLocation": "568:12:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8659, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8654, + "mutability": "mutable", + "name": "token", + "nameLocation": "589:5:32", + "nodeType": "VariableDeclaration", + "scope": 8695, + "src": "581:13:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8653, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "581:7:32", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8656, + "mutability": "mutable", + "name": "to", + "nameLocation": "604:2:32", + "nodeType": "VariableDeclaration", + "scope": 8695, + "src": "596:10:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8655, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "596:7:32", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8658, + "mutability": "mutable", + "name": "value", + "nameLocation": "613:5:32", + "nodeType": "VariableDeclaration", + "scope": 8695, + "src": "608:10:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8657, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "608:4:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "580:39:32" + }, + "returnParameters": { + "id": 8660, + "nodeType": "ParameterList", + "parameters": [], + "src": "629:0:32" + }, + "scope": 8767, + "src": "559:357:32", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8740, + "nodeType": "Block", + "src": "1010:310:32", + "statements": [ + { + "assignments": [ + 8707, + 8709 + ], + "declarations": [ + { + "constant": false, + "id": 8707, + "mutability": "mutable", + "name": "success", + "nameLocation": "1104:7:32", + "nodeType": "VariableDeclaration", + "scope": 8740, + "src": "1099:12:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8706, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1099:4:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8709, + "mutability": "mutable", + "name": "data", + "nameLocation": "1126:4:32", + "nodeType": "VariableDeclaration", + "scope": 8740, + "src": "1113:17:32", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8708, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1113:5:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 8720, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30783233623837326464", + "id": 8714, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1168:10:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_599290589_by_1", + "typeString": "int_const 599290589" + }, + "value": "0x23b872dd" + }, + { + "id": 8715, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8699, + "src": "1180:4:32", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8716, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8701, + "src": "1186:2:32", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8717, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8703, + "src": "1190:5:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_599290589_by_1", + "typeString": "int_const 599290589" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 8712, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1145:3:32", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "1145:22:32", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 8718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1145:51:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 8710, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8697, + "src": "1134:5:32", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "src": "1134:10:32", + "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": 8719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1134:63:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1098:99:32" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 8736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8722, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8707, + "src": "1215:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 8734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 8723, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8709, + "src": "1227:4:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 8724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1227:11:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 8725, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1242:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1227:16:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 8729, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8709, + "src": "1258:4:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 8731, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1265:4:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + }, + "typeName": { + "id": 8730, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1265:4:32", + "typeDescriptions": {} + } + } + ], + "id": 8732, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1264:6:32", + "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": 8727, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1247:3:32", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8728, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "1247:10:32", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1247:24:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1227:44:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 8735, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1226:46:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1215:57:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544", + "id": 8737, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1274:38:32", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18", + "typeString": "literal_string \"TransferHelper: TRANSFER_FROM_FAILED\"" + }, + "value": "TransferHelper: TRANSFER_FROM_FAILED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18", + "typeString": "literal_string \"TransferHelper: TRANSFER_FROM_FAILED\"" + } + ], + "id": 8721, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1207:7:32", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 8738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1207:106:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8739, + "nodeType": "ExpressionStatement", + "src": "1207:106:32" + } + ] + }, + "id": 8741, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "931:16:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8704, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8697, + "mutability": "mutable", + "name": "token", + "nameLocation": "956:5:32", + "nodeType": "VariableDeclaration", + "scope": 8741, + "src": "948:13:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8696, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "948:7:32", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8699, + "mutability": "mutable", + "name": "from", + "nameLocation": "971:4:32", + "nodeType": "VariableDeclaration", + "scope": 8741, + "src": "963:12:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8698, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "963:7:32", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8701, + "mutability": "mutable", + "name": "to", + "nameLocation": "985:2:32", + "nodeType": "VariableDeclaration", + "scope": 8741, + "src": "977:10:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8700, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "977:7:32", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8703, + "mutability": "mutable", + "name": "value", + "nameLocation": "994:5:32", + "nodeType": "VariableDeclaration", + "scope": 8741, + "src": "989:10:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8702, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "989:4:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "947:53:32" + }, + "returnParameters": { + "id": 8705, + "nodeType": "ParameterList", + "parameters": [], + "src": "1010:0:32" + }, + "scope": 8767, + "src": "922:398:32", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8765, + "nodeType": "Block", + "src": "1384:134:32", + "statements": [ + { + "assignments": [ + 8749, + null + ], + "declarations": [ + { + "constant": false, + "id": 8749, + "mutability": "mutable", + "name": "success", + "nameLocation": "1400:7:32", + "nodeType": "VariableDeclaration", + "scope": 8765, + "src": "1395:12:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8748, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1395:4:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + null + ], + "id": 8759, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 8756, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1443:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 8755, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "1433:9:32", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 8754, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1437:5:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 8757, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1433:12:32", + "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": 8750, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8743, + "src": "1412:2:32", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "src": "1412:7:32", + "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": 8753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 8752, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8745, + "src": "1426:5:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "1412:20:32", + "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": 8758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1412:34:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1394:52:32" + }, + { + "expression": { + "arguments": [ + { + "id": 8761, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8749, + "src": "1464:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544", + "id": 8762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1473:37:32", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d290720a9b119bbeaf8124eb771e119cbea85a2f430cbb39a8fead2398528881", + "typeString": "literal_string \"TransferHelper: ETH_TRANSFER_FAILED\"" + }, + "value": "TransferHelper: ETH_TRANSFER_FAILED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d290720a9b119bbeaf8124eb771e119cbea85a2f430cbb39a8fead2398528881", + "typeString": "literal_string \"TransferHelper: ETH_TRANSFER_FAILED\"" + } + ], + "id": 8760, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1456:7:32", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 8763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1456:55:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8764, + "nodeType": "ExpressionStatement", + "src": "1456:55:32" + } + ] + }, + "id": 8766, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferETH", + "nameLocation": "1335:15:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8746, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8743, + "mutability": "mutable", + "name": "to", + "nameLocation": "1359:2:32", + "nodeType": "VariableDeclaration", + "scope": 8766, + "src": "1351:10:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8742, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1351:7:32", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8745, + "mutability": "mutable", + "name": "value", + "nameLocation": "1368:5:32", + "nodeType": "VariableDeclaration", + "scope": 8766, + "src": "1363:10:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8744, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1363:4:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1350:24:32" + }, + "returnParameters": { + "id": 8747, + "nodeType": "ParameterList", + "parameters": [], + "src": "1384:0:32" + }, + "scope": 8767, + "src": "1326:192:32", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 8768, + "src": "170:1350:32", + "usedErrors": [] + } + ], + "src": "32:1488:32" + }, + "id": 32 + }, + "contracts/Uniswap/UniswapV2ERC20.sol": { + "ast": { + "absolutePath": "contracts/Uniswap/UniswapV2ERC20.sol", + "exportedSymbols": { + "IUniswapV2ERC20": [ + 8302 + ], + "SafeMath": [ + 6895 + ], + "UniswapV2ERC20": [ + 9156 + ] + }, + "id": 9157, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8769, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:33" + }, + { + "absolutePath": "contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol", + "file": "./Interfaces/IUniswapV2ERC20.sol", + "id": 8770, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 9157, + "sourceUnit": 8303, + "src": "59:42:33", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Math/SafeMath.sol", + "file": "../Math/SafeMath.sol", + "id": 8771, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 9157, + "sourceUnit": 6896, + "src": "102:30:33", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 8772, + "name": "IUniswapV2ERC20", + "nodeType": "IdentifierPath", + "referencedDeclaration": 8302, + "src": "161:15:33" + }, + "id": 8773, + "nodeType": "InheritanceSpecifier", + "src": "161:15:33" + } + ], + "canonicalName": "UniswapV2ERC20", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 9156, + "linearizedBaseContracts": [ + 9156, + 8302 + ], + "name": "UniswapV2ERC20", + "nameLocation": "143:14:33", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 8776, + "libraryName": { + "id": 8774, + "name": "SafeMath", + "nodeType": "IdentifierPath", + "referencedDeclaration": 6895, + "src": "189:8:33" + }, + "nodeType": "UsingForDirective", + "src": "183:24:33", + "typeName": { + "id": 8775, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "202:4:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "baseFunctions": [ + 8207 + ], + "constant": true, + "functionSelector": "06fdde03", + "id": 8780, + "mutability": "constant", + "name": "name", + "nameLocation": "245:4:33", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 8778, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "227:8:33" + }, + "scope": 9156, + "src": "213:51:33", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8777, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "213:6:33", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "hexValue": "556e6973776170205632", + "id": 8779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "252:12:33", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_bfcc8ef98ffbf7b6c3fec7bf5185b566b9863e35a9d83acd49ad6824b5969738", + "typeString": "literal_string \"Uniswap V2\"" + }, + "value": "Uniswap V2" + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8212 + ], + "constant": true, + "functionSelector": "95d89b41", + "id": 8784, + "mutability": "constant", + "name": "symbol", + "nameLocation": "302:6:33", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 8782, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "284:8:33" + }, + "scope": 9156, + "src": "270:49:33", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8781, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "270:6:33", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "hexValue": "554e492d5632", + "id": 8783, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "311:8:33", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0c49a525f6758cfb27d0ada1467d2a2e99733995423d47ae30ae4ba2ba563255", + "typeString": "literal_string \"UNI-V2\"" + }, + "value": "UNI-V2" + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8217 + ], + "constant": true, + "functionSelector": "313ce567", + "id": 8788, + "mutability": "constant", + "name": "decimals", + "nameLocation": "356:8:33", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 8786, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "338:8:33" + }, + "scope": 9156, + "src": "325:44:33", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 8785, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "325:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "hexValue": "3138", + "id": 8787, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "367:2:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8222 + ], + "constant": false, + "functionSelector": "18160ddd", + "id": 8791, + "mutability": "mutable", + "name": "totalSupply", + "nameLocation": "397:11:33", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 8790, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "388:8:33" + }, + "scope": 9156, + "src": "375:33:33", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8789, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "375:4:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8229 + ], + "constant": false, + "functionSelector": "70a08231", + "id": 8796, + "mutability": "mutable", + "name": "balanceOf", + "nameLocation": "455:9:33", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 8795, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "446:8:33" + }, + "scope": 9156, + "src": "414:50:33", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 8794, + "keyType": { + "id": 8792, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "422:7:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "414:24:33", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 8793, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "433:4:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8238 + ], + "constant": false, + "functionSelector": "dd62ed3e", + "id": 8803, + "mutability": "mutable", + "name": "allowance", + "nameLocation": "531:9:33", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 8802, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "522:8:33" + }, + "scope": 9156, + "src": "470:70:33", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 8801, + "keyType": { + "id": 8797, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "478:7:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "470:44:33", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 8800, + "keyType": { + "id": 8798, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "497:7:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "489:24:33", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 8799, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "508:4:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8272 + ], + "constant": false, + "functionSelector": "3644e515", + "id": 8806, + "mutability": "mutable", + "name": "DOMAIN_SEPARATOR", + "nameLocation": "571:16:33", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 8805, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "562:8:33" + }, + "scope": 9156, + "src": "547:40:33", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8804, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "547:7:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8277 + ], + "constant": true, + "functionSelector": "30adf81f", + "id": 8810, + "mutability": "constant", + "name": "PERMIT_TYPEHASH", + "nameLocation": "730:15:33", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 8808, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "721:8:33" + }, + "scope": 9156, + "src": "697:117:33", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8807, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "697:7:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307836653731656461653132623162393766346431663630333730666566313031303566613266616165303132363131346131363963363438343564363132366339", + "id": 8809, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "748:66:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_49955707469362902507454157297736832118868343942642399513960811609542965143241_by_1", + "typeString": "int_const 4995...(69 digits omitted)...3241" + }, + "value": "0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9" + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8284 + ], + "constant": false, + "functionSelector": "7ecebe00", + "id": 8815, + "mutability": "mutable", + "name": "nonces", + "nameLocation": "861:6:33", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 8814, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "852:8:33" + }, + "scope": 9156, + "src": "820:47:33", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 8813, + "keyType": { + "id": 8811, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "828:7:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "820:24:33", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 8812, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "839:4:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "public" + }, + { + "body": { + "id": 8850, + "nodeType": "Block", + "src": "1049:425:33", + "statements": [ + { + "assignments": [ + 8819 + ], + "declarations": [ + { + "constant": false, + "id": 8819, + "mutability": "mutable", + "name": "chainId", + "nameLocation": "1064:7:33", + "nodeType": "VariableDeclaration", + "scope": 8850, + "src": "1059:12:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8818, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1059:4:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 8820, + "nodeType": "VariableDeclarationStatement", + "src": "1059:12:33" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "1090:44:33", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1104:20:33", + "value": { + "arguments": [], + "functionName": { + "name": "chainid", + "nodeType": "YulIdentifier", + "src": "1115:7:33" + }, + "nodeType": "YulFunctionCall", + "src": "1115:9:33" + }, + "variableNames": [ + { + "name": "chainId", + "nodeType": "YulIdentifier", + "src": "1104:7:33" + } + ] + } + ] + }, + "evmVersion": "london", + "externalReferences": [ + { + "declaration": 8819, + "isOffset": false, + "isSlot": false, + "src": "1104:7:33", + "valueSize": 1 + } + ], + "id": 8821, + "nodeType": "InlineAssembly", + "src": "1081:53:33" + }, + { + "expression": { + "id": 8848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8822, + "name": "DOMAIN_SEPARATOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8806, + "src": "1143:16:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429", + "id": 8827, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1223:84:33", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"" + }, + "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"" + } + ], + "id": 8826, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1213:9:33", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 8828, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1213:95:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 8832, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8780, + "src": "1342:4:33", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8831, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1336:5:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 8830, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1336:5:33", + "typeDescriptions": {} + } + }, + "id": 8833, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1336:11:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8829, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1326:9:33", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 8834, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1326:22:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "hexValue": "31", + "id": 8838, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1382:3:33", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + } + ], + "id": 8837, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1376:5:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 8836, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1376:5:33", + "typeDescriptions": {} + } + }, + "id": 8839, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1376:10:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8835, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1366:9:33", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 8840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1366:21:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 8841, + "name": "chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8819, + "src": "1405:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 8844, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1438:4:33", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2ERC20_$9156", + "typeString": "contract UniswapV2ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2ERC20_$9156", + "typeString": "contract UniswapV2ERC20" + } + ], + "id": 8843, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1430:7:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8842, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1430:7:33", + "typeDescriptions": {} + } + }, + "id": 8845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1430:13:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 8824, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1185:3:33", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8825, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "1185:10:33", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 8846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1185:272:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8823, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1162:9:33", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 8847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1162:305:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1143:324:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8849, + "nodeType": "ExpressionStatement", + "src": "1143:324:33" + } + ] + }, + "id": 8851, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8816, + "nodeType": "ParameterList", + "parameters": [], + "src": "1046:2:33" + }, + "returnParameters": { + "id": 8817, + "nodeType": "ParameterList", + "parameters": [], + "src": "1049:0:33" + }, + "scope": 9156, + "src": "1035:439:33", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8885, + "nodeType": "Block", + "src": "1528:149:33", + "statements": [ + { + "expression": { + "id": 8863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8858, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8791, + "src": "1538:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 8861, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8855, + "src": "1568:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 8859, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8791, + "src": "1552:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 6728, + "src": "1552:15:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 8862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1552:22:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1538:36:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8864, + "nodeType": "ExpressionStatement", + "src": "1538:36:33" + }, + { + "expression": { + "id": 8874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 8865, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8796, + "src": "1584:9:33", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 8867, + "indexExpression": { + "id": 8866, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8853, + "src": "1594:2:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1584:13:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 8872, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8855, + "src": "1618:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "id": 8868, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8796, + "src": "1600:9:33", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 8870, + "indexExpression": { + "id": 8869, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8853, + "src": "1610:2:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1600:13:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 6728, + "src": "1600:17:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 8873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1600:24:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1584:40:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8875, + "nodeType": "ExpressionStatement", + "src": "1584:40:33" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 8879, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1656:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 8878, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1648:7:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8877, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1648:7:33", + "typeDescriptions": {} + } + }, + "id": 8880, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1648:10:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8881, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8853, + "src": "1660:2:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8882, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8855, + "src": "1664:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8876, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8202, + "src": "1639:8:33", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 8883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1639:31:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8884, + "nodeType": "EmitStatement", + "src": "1634:36:33" + } + ] + }, + "id": 8886, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nameLocation": "1489:5:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8856, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8853, + "mutability": "mutable", + "name": "to", + "nameLocation": "1503:2:33", + "nodeType": "VariableDeclaration", + "scope": 8886, + "src": "1495:10:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8852, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1495:7:33", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8855, + "mutability": "mutable", + "name": "value", + "nameLocation": "1512:5:33", + "nodeType": "VariableDeclaration", + "scope": 8886, + "src": "1507:10:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8854, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1507:4:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1494:24:33" + }, + "returnParameters": { + "id": 8857, + "nodeType": "ParameterList", + "parameters": [], + "src": "1528:0:33" + }, + "scope": 9156, + "src": "1480:197:33", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8920, + "nodeType": "Block", + "src": "1733:155:33", + "statements": [ + { + "expression": { + "id": 8902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 8893, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8796, + "src": "1743:9:33", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 8895, + "indexExpression": { + "id": 8894, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8888, + "src": "1753:4:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1743:15:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 8900, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8890, + "src": "1781:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "id": 8896, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8796, + "src": "1761:9:33", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 8898, + "indexExpression": { + "id": 8897, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8888, + "src": "1771:4:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1761:15:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6745, + "src": "1761:19:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 8901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1761:26:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1743:44:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8903, + "nodeType": "ExpressionStatement", + "src": "1743:44:33" + }, + { + "expression": { + "id": 8909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8904, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8791, + "src": "1797:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 8907, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8890, + "src": "1827:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 8905, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8791, + "src": "1811:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6745, + "src": "1811:15:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 8908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1811:22:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1797:36:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8910, + "nodeType": "ExpressionStatement", + "src": "1797:36:33" + }, + { + "eventCall": { + "arguments": [ + { + "id": 8912, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8888, + "src": "1857:4:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 8915, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1871:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 8914, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1863:7:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8913, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1863:7:33", + "typeDescriptions": {} + } + }, + "id": 8916, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1863:10:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8917, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8890, + "src": "1875:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8911, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8202, + "src": "1848:8:33", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 8918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1848:33:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8919, + "nodeType": "EmitStatement", + "src": "1843:38:33" + } + ] + }, + "id": 8921, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nameLocation": "1692:5:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8891, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8888, + "mutability": "mutable", + "name": "from", + "nameLocation": "1706:4:33", + "nodeType": "VariableDeclaration", + "scope": 8921, + "src": "1698:12:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8887, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1698:7:33", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8890, + "mutability": "mutable", + "name": "value", + "nameLocation": "1717:5:33", + "nodeType": "VariableDeclaration", + "scope": 8921, + "src": "1712:10:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8889, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1712:4:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1697:26:33" + }, + "returnParameters": { + "id": 8892, + "nodeType": "ParameterList", + "parameters": [], + "src": "1733:0:33" + }, + "scope": 9156, + "src": "1683:205:33", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8944, + "nodeType": "Block", + "src": "1964:96:33", + "statements": [ + { + "expression": { + "id": 8936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 8930, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8803, + "src": "1974:9:33", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 8933, + "indexExpression": { + "id": 8931, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8923, + "src": "1984:5:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1974:16:33", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 8934, + "indexExpression": { + "id": 8932, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8925, + "src": "1991:7:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1974:25:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 8935, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8927, + "src": "2002:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1974:33:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8937, + "nodeType": "ExpressionStatement", + "src": "1974:33:33" + }, + { + "eventCall": { + "arguments": [ + { + "id": 8939, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8923, + "src": "2031:5:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8940, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8925, + "src": "2038:7:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8941, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8927, + "src": "2047:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8938, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8194, + "src": "2022:8:33", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 8942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2022:31:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8943, + "nodeType": "EmitStatement", + "src": "2017:36:33" + } + ] + }, + "id": 8945, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nameLocation": "1903:8:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8928, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8923, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1920:5:33", + "nodeType": "VariableDeclaration", + "scope": 8945, + "src": "1912:13:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8922, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1912:7:33", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8925, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1935:7:33", + "nodeType": "VariableDeclaration", + "scope": 8945, + "src": "1927:15:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8924, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1927:7:33", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8927, + "mutability": "mutable", + "name": "value", + "nameLocation": "1949:5:33", + "nodeType": "VariableDeclaration", + "scope": 8945, + "src": "1944:10:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8926, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1944:4:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1911:44:33" + }, + "returnParameters": { + "id": 8929, + "nodeType": "ParameterList", + "parameters": [], + "src": "1964:0:33" + }, + "scope": 9156, + "src": "1894:166:33", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 8982, + "nodeType": "Block", + "src": "2131:151:33", + "statements": [ + { + "expression": { + "id": 8963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 8954, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8796, + "src": "2141:9:33", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 8956, + "indexExpression": { + "id": 8955, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8947, + "src": "2151:4:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2141:15:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 8961, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8951, + "src": "2179:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "id": 8957, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8796, + "src": "2159:9:33", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 8959, + "indexExpression": { + "id": 8958, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8947, + "src": "2169:4:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2159:15:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6745, + "src": "2159:19:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 8962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2159:26:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2141:44:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8964, + "nodeType": "ExpressionStatement", + "src": "2141:44:33" + }, + { + "expression": { + "id": 8974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 8965, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8796, + "src": "2195:9:33", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 8967, + "indexExpression": { + "id": 8966, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8949, + "src": "2205:2:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2195:13:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 8972, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8951, + "src": "2229:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "id": 8968, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8796, + "src": "2211:9:33", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 8970, + "indexExpression": { + "id": 8969, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8949, + "src": "2221:2:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2211:13:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 6728, + "src": "2211:17:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 8973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2211:24:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2195:40:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8975, + "nodeType": "ExpressionStatement", + "src": "2195:40:33" + }, + { + "eventCall": { + "arguments": [ + { + "id": 8977, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8947, + "src": "2259:4:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8978, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8949, + "src": "2265:2:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8979, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8951, + "src": "2269:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8976, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8202, + "src": "2250:8:33", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 8980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2250:25:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8981, + "nodeType": "EmitStatement", + "src": "2245:30:33" + } + ] + }, + "id": 8983, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nameLocation": "2075:9:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8952, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8947, + "mutability": "mutable", + "name": "from", + "nameLocation": "2093:4:33", + "nodeType": "VariableDeclaration", + "scope": 8983, + "src": "2085:12:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8946, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2085:7:33", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8949, + "mutability": "mutable", + "name": "to", + "nameLocation": "2107:2:33", + "nodeType": "VariableDeclaration", + "scope": 8983, + "src": "2099:10:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8948, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2099:7:33", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8951, + "mutability": "mutable", + "name": "value", + "nameLocation": "2116:5:33", + "nodeType": "VariableDeclaration", + "scope": 8983, + "src": "2111:10:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8950, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2111:4:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2084:38:33" + }, + "returnParameters": { + "id": 8953, + "nodeType": "ParameterList", + "parameters": [], + "src": "2131:0:33" + }, + "scope": 9156, + "src": "2066:216:33", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "baseFunctions": [ + 8247 + ], + "body": { + "id": 9002, + "nodeType": "Block", + "src": "2367:74:33", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 8994, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2386:3:33", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 8995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2386:10:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8996, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8985, + "src": "2398:7:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8997, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8987, + "src": "2407:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8993, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8945, + "src": "2377:8:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 8998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2377:36:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8999, + "nodeType": "ExpressionStatement", + "src": "2377:36:33" + }, + { + "expression": { + "hexValue": "74727565", + "id": 9000, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2430:4:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 8992, + "id": 9001, + "nodeType": "Return", + "src": "2423:11:33" + } + ] + }, + "functionSelector": "095ea7b3", + "id": 9003, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "2297:7:33", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 8989, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2343:8:33" + }, + "parameters": { + "id": 8988, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8985, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2313:7:33", + "nodeType": "VariableDeclaration", + "scope": 9003, + "src": "2305:15:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8984, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2305:7:33", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8987, + "mutability": "mutable", + "name": "value", + "nameLocation": "2327:5:33", + "nodeType": "VariableDeclaration", + "scope": 9003, + "src": "2322:10:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8986, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2322:4:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2304:29:33" + }, + "returnParameters": { + "id": 8992, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8991, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9003, + "src": "2361:4:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8990, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2361:4:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2360:6:33" + }, + "scope": 9156, + "src": "2288:153:33", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 8256 + ], + "body": { + "id": 9022, + "nodeType": "Block", + "src": "2522:70:33", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 9014, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2542:3:33", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 9015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2542:10:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9016, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9005, + "src": "2554:2:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9017, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9007, + "src": "2558:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9013, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8983, + "src": "2532:9:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 9018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2532:32:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9019, + "nodeType": "ExpressionStatement", + "src": "2532:32:33" + }, + { + "expression": { + "hexValue": "74727565", + "id": 9020, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2581:4:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 9012, + "id": 9021, + "nodeType": "Return", + "src": "2574:11:33" + } + ] + }, + "functionSelector": "a9059cbb", + "id": 9023, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "2456:8:33", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 9009, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2498:8:33" + }, + "parameters": { + "id": 9008, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9005, + "mutability": "mutable", + "name": "to", + "nameLocation": "2473:2:33", + "nodeType": "VariableDeclaration", + "scope": 9023, + "src": "2465:10:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9004, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2465:7:33", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9007, + "mutability": "mutable", + "name": "value", + "nameLocation": "2482:5:33", + "nodeType": "VariableDeclaration", + "scope": 9023, + "src": "2477:10:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9006, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2477:4:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2464:24:33" + }, + "returnParameters": { + "id": 9012, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9011, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9023, + "src": "2516:4:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 9010, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2516:4:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2515:6:33" + }, + "scope": 9156, + "src": "2447:145:33", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 8267 + ], + "body": { + "id": 9074, + "nodeType": "Block", + "src": "2691:217:33", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9046, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "baseExpression": { + "id": 9035, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8803, + "src": "2705:9:33", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 9037, + "indexExpression": { + "id": 9036, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9025, + "src": "2715:4:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2705:15:33", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 9040, + "indexExpression": { + "expression": { + "id": 9038, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2721:3:33", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 9039, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2721:10:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2705:27:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 9043, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2741:4:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 9042, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2741:4:33", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 9041, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "2736:4:33", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 9044, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2736:10:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 9045, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "max", + "nodeType": "MemberAccess", + "src": "2736:14:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2705:45:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9065, + "nodeType": "IfStatement", + "src": "2701:144:33", + "trueBody": { + "id": 9064, + "nodeType": "Block", + "src": "2752:93:33", + "statements": [ + { + "expression": { + "id": 9062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 9047, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8803, + "src": "2766:9:33", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 9051, + "indexExpression": { + "id": 9048, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9025, + "src": "2776:4:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2766:15:33", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 9052, + "indexExpression": { + "expression": { + "id": 9049, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2782:3:33", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 9050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2782:10:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2766:27:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9060, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9029, + "src": "2828:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "baseExpression": { + "id": 9053, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8803, + "src": "2796:9:33", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 9055, + "indexExpression": { + "id": 9054, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9025, + "src": "2806:4:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2796:15:33", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 9058, + "indexExpression": { + "expression": { + "id": 9056, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2812:3:33", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 9057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2812:10:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2796:27:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6745, + "src": "2796:31:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 9061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2796:38:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2766:68:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9063, + "nodeType": "ExpressionStatement", + "src": "2766:68:33" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 9067, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9025, + "src": "2864:4:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9068, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9027, + "src": "2870:2:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9069, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9029, + "src": "2874:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9066, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8983, + "src": "2854:9:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 9070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2854:26:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9071, + "nodeType": "ExpressionStatement", + "src": "2854:26:33" + }, + { + "expression": { + "hexValue": "74727565", + "id": 9072, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2897:4:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 9034, + "id": 9073, + "nodeType": "Return", + "src": "2890:11:33" + } + ] + }, + "functionSelector": "23b872dd", + "id": 9075, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "2607:12:33", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 9031, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2667:8:33" + }, + "parameters": { + "id": 9030, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9025, + "mutability": "mutable", + "name": "from", + "nameLocation": "2628:4:33", + "nodeType": "VariableDeclaration", + "scope": 9075, + "src": "2620:12:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9024, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2620:7:33", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9027, + "mutability": "mutable", + "name": "to", + "nameLocation": "2642:2:33", + "nodeType": "VariableDeclaration", + "scope": 9075, + "src": "2634:10:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9026, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2634:7:33", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9029, + "mutability": "mutable", + "name": "value", + "nameLocation": "2651:5:33", + "nodeType": "VariableDeclaration", + "scope": 9075, + "src": "2646:10:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9028, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2646:4:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2619:38:33" + }, + "returnParameters": { + "id": 9034, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9033, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9075, + "src": "2685:4:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 9032, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2685:4:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2684:6:33" + }, + "scope": 9156, + "src": "2598:310:33", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 8301 + ], + "body": { + "id": 9154, + "nodeType": "Block", + "src": "3038:547:33", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9097, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9094, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9083, + "src": "3056:8:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 9095, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "3068:5:33", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 9096, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "3068:15:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3056:27:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056323a2045585049524544", + "id": 9098, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3085:20:33", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_47797eaaf6df6dc2efdb1e824209400a8293aff4c1e7f6d90fcc4b3e3ba18a87", + "typeString": "literal_string \"UniswapV2: EXPIRED\"" + }, + "value": "UniswapV2: EXPIRED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_47797eaaf6df6dc2efdb1e824209400a8293aff4c1e7f6d90fcc4b3e3ba18a87", + "typeString": "literal_string \"UniswapV2: EXPIRED\"" + } + ], + "id": 9093, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3048:7:33", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3048:58:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9100, + "nodeType": "ExpressionStatement", + "src": "3048:58:33" + }, + { + "assignments": [ + 9102 + ], + "declarations": [ + { + "constant": false, + "id": 9102, + "mutability": "mutable", + "name": "digest", + "nameLocation": "3124:6:33", + "nodeType": "VariableDeclaration", + "scope": 9154, + "src": "3116:14:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9101, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3116:7:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 9124, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "1901", + "id": 9106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3190:10:33", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string hex\"1901\"" + }, + "value": "\u0019\u0001" + }, + { + "id": 9107, + "name": "DOMAIN_SEPARATOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8806, + "src": "3218:16:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 9111, + "name": "PERMIT_TYPEHASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8810, + "src": "3273:15:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 9112, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9077, + "src": "3290:5:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9113, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9079, + "src": "3297:7:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9114, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9081, + "src": "3306:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3313:15:33", + "subExpression": { + "baseExpression": { + "id": 9115, + "name": "nonces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8815, + "src": "3313:6:33", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 9117, + "indexExpression": { + "id": 9116, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9077, + "src": "3320:5:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3313:13:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9119, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9083, + "src": "3330:8:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9109, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3262:3:33", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 9110, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "3262:10:33", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 9120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3262:77:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 9108, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3252:9:33", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 9121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3252:88:33", + "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": 9104, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3156:3:33", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 9105, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "3156:16:33", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 9122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3156:198:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 9103, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3133:9:33", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 9123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3133:231:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3116:248:33" + }, + { + "assignments": [ + 9126 + ], + "declarations": [ + { + "constant": false, + "id": 9126, + "mutability": "mutable", + "name": "recoveredAddress", + "nameLocation": "3382:16:33", + "nodeType": "VariableDeclaration", + "scope": 9154, + "src": "3374:24:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9125, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3374:7:33", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 9133, + "initialValue": { + "arguments": [ + { + "id": 9128, + "name": "digest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9102, + "src": "3411:6:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 9129, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9085, + "src": "3419:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 9130, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9087, + "src": "3422:1:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 9131, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9089, + "src": "3425:1:33", + "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": 9127, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -6, + "src": "3401:9:33", + "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": 9132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3401:26:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3374:53:33" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 9144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 9140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9135, + "name": "recoveredAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9126, + "src": "3445:16:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 9138, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3473:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 9137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3465:7:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 9136, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3465:7:33", + "typeDescriptions": {} + } + }, + "id": 9139, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3465:10:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3445:30:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 9143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9141, + "name": "recoveredAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9126, + "src": "3479:16:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 9142, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9077, + "src": "3499:5:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3479:25:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3445:59:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056323a20494e56414c49445f5349474e4154555245", + "id": 9145, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3506:30:33", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2d893fc9f5fa2494c39ecec82df2778b33226458ccce3b9a56f5372437d54a56", + "typeString": "literal_string \"UniswapV2: INVALID_SIGNATURE\"" + }, + "value": "UniswapV2: INVALID_SIGNATURE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2d893fc9f5fa2494c39ecec82df2778b33226458ccce3b9a56f5372437d54a56", + "typeString": "literal_string \"UniswapV2: INVALID_SIGNATURE\"" + } + ], + "id": 9134, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3437:7:33", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3437:100:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9147, + "nodeType": "ExpressionStatement", + "src": "3437:100:33" + }, + { + "expression": { + "arguments": [ + { + "id": 9149, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9077, + "src": "3556:5:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9150, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9079, + "src": "3563:7:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9151, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9081, + "src": "3572:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9148, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8945, + "src": "3547:8:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 9152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3547:31:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9153, + "nodeType": "ExpressionStatement", + "src": "3547:31:33" + } + ] + }, + "functionSelector": "d505accf", + "id": 9155, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "permit", + "nameLocation": "2923:6:33", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 9091, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3029:8:33" + }, + "parameters": { + "id": 9090, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9077, + "mutability": "mutable", + "name": "owner", + "nameLocation": "2938:5:33", + "nodeType": "VariableDeclaration", + "scope": 9155, + "src": "2930:13:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9076, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2930:7:33", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9079, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2953:7:33", + "nodeType": "VariableDeclaration", + "scope": 9155, + "src": "2945:15:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9078, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2945:7:33", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9081, + "mutability": "mutable", + "name": "value", + "nameLocation": "2967:5:33", + "nodeType": "VariableDeclaration", + "scope": 9155, + "src": "2962:10:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9080, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2962:4:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9083, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "2979:8:33", + "nodeType": "VariableDeclaration", + "scope": 9155, + "src": "2974:13:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9082, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2974:4:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9085, + "mutability": "mutable", + "name": "v", + "nameLocation": "2995:1:33", + "nodeType": "VariableDeclaration", + "scope": 9155, + "src": "2989:7:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 9084, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2989:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9087, + "mutability": "mutable", + "name": "r", + "nameLocation": "3006:1:33", + "nodeType": "VariableDeclaration", + "scope": 9155, + "src": "2998:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9086, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2998:7:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9089, + "mutability": "mutable", + "name": "s", + "nameLocation": "3017:1:33", + "nodeType": "VariableDeclaration", + "scope": 9155, + "src": "3009:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9088, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3009:7:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2929:90:33" + }, + "returnParameters": { + "id": 9092, + "nodeType": "ParameterList", + "parameters": [], + "src": "3038:0:33" + }, + "scope": 9156, + "src": "2914:671:33", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 9157, + "src": "134:3453:33", + "usedErrors": [] + } + ], + "src": "32:3556:33" + }, + "id": 33 + }, + "contracts/Uniswap/UniswapV2Factory.sol": { + "ast": { + "absolutePath": "contracts/Uniswap/UniswapV2Factory.sol", + "exportedSymbols": { + "Context": [ + 456 + ], + "IERC20": [ + 5514 + ], + "IUniswapV2Callee": [ + 8184 + ], + "IUniswapV2ERC20": [ + 8302 + ], + "IUniswapV2Factory": [ + 8365 + ], + "IUniswapV2Pair": [ + 8607 + ], + "Math": [ + 6410 + ], + "SafeMath": [ + 6895 + ], + "UQ112x112": [ + 6939 + ], + "UniswapV2ERC20": [ + 9156 + ], + "UniswapV2Factory": [ + 9351 + ], + "UniswapV2Pair": [ + 11247 + ] + }, + "id": 9352, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 9158, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:34" + }, + { + "absolutePath": "contracts/Uniswap/Interfaces/IUniswapV2Factory.sol", + "file": "./Interfaces/IUniswapV2Factory.sol", + "id": 9159, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 9352, + "sourceUnit": 8366, + "src": "59:44:34", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Uniswap/UniswapV2Pair.sol", + "file": "./UniswapV2Pair.sol", + "id": 9160, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 9352, + "sourceUnit": 11248, + "src": "104:29:34", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 9161, + "name": "IUniswapV2Factory", + "nodeType": "IdentifierPath", + "referencedDeclaration": 8365, + "src": "164:17:34" + }, + "id": 9162, + "nodeType": "InheritanceSpecifier", + "src": "164:17:34" + } + ], + "canonicalName": "UniswapV2Factory", + "contractDependencies": [ + 11247 + ], + "contractKind": "contract", + "fullyImplemented": true, + "id": 9351, + "linearizedBaseContracts": [ + 9351, + 8365 + ], + "name": "UniswapV2Factory", + "nameLocation": "144:16:34", + "nodeType": "ContractDefinition", + "nodes": [ + { + "baseFunctions": [ + 8319 + ], + "constant": false, + "functionSelector": "017e7e58", + "id": 9165, + "mutability": "mutable", + "name": "feeTo", + "nameLocation": "212:5:34", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 9164, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "203:8:34" + }, + "scope": 9351, + "src": "188:29:34", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9163, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "188:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8324 + ], + "constant": false, + "functionSelector": "094b7415", + "id": 9168, + "mutability": "mutable", + "name": "feeToSetter", + "nameLocation": "247:11:34", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 9167, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "238:8:34" + }, + "scope": 9351, + "src": "223:35:34", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9166, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "223:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8333 + ], + "constant": false, + "functionSelector": "e6a43905", + "id": 9175, + "mutability": "mutable", + "name": "getPair", + "nameLocation": "329:7:34", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 9174, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "320:8:34" + }, + "scope": 9351, + "src": "265:71:34", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$", + "typeString": "mapping(address => mapping(address => address))" + }, + "typeName": { + "id": 9173, + "keyType": { + "id": 9169, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "273:7:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "265:47:34", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$", + "typeString": "mapping(address => mapping(address => address))" + }, + "valueType": { + "id": 9172, + "keyType": { + "id": 9170, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "292:7:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "284:27:34", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "valueType": { + "id": 9171, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "303:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8340 + ], + "constant": false, + "functionSelector": "1e3dd18b", + "id": 9179, + "mutability": "mutable", + "name": "allPairs", + "nameLocation": "368:8:34", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 9178, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "359:8:34" + }, + "scope": 9351, + "src": "342:34:34", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 9176, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "342:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 9177, + "nodeType": "ArrayTypeName", + "src": "342:9:34", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 9188, + "nodeType": "Block", + "src": "519:43:34", + "statements": [ + { + "expression": { + "id": 9186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9184, + "name": "feeToSetter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9168, + "src": "529:11:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 9185, + "name": "_feeToSetter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9181, + "src": "543:12:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "529:26:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 9187, + "nodeType": "ExpressionStatement", + "src": "529:26:34" + } + ] + }, + "id": 9189, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9182, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9181, + "mutability": "mutable", + "name": "_feeToSetter", + "nameLocation": "498:12:34", + "nodeType": "VariableDeclaration", + "scope": 9189, + "src": "490:20:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9180, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "490:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "489:22:34" + }, + "returnParameters": { + "id": 9183, + "nodeType": "ParameterList", + "parameters": [], + "src": "519:0:34" + }, + "scope": 9351, + "src": "478:84:34", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 8345 + ], + "body": { + "id": 9198, + "nodeType": "Block", + "src": "632:39:34", + "statements": [ + { + "expression": { + "expression": { + "id": 9195, + "name": "allPairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9179, + "src": "649:8:34", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 9196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "649:15:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 9194, + "id": 9197, + "nodeType": "Return", + "src": "642:22:34" + } + ] + }, + "functionSelector": "574f2ba3", + "id": 9199, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allPairsLength", + "nameLocation": "577:14:34", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 9191, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "603:8:34" + }, + "parameters": { + "id": 9190, + "nodeType": "ParameterList", + "parameters": [], + "src": "591:2:34" + }, + "returnParameters": { + "id": 9194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9193, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9199, + "src": "626:4:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9192, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "626:4:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "625:6:34" + }, + "scope": 9351, + "src": "568:103:34", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 8354 + ], + "body": { + "id": 9311, + "nodeType": "Block", + "src": "770:904:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 9212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9210, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9201, + "src": "788:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9211, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9203, + "src": "798:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "788:16:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056323a204944454e544943414c5f414444524553534553", + "id": 9213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "806:32:34", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1af2ec9097b2f8bc2dcfea53a9ab4b2cdab42fa29e9a9e04dcb14b4efcc8aa70", + "typeString": "literal_string \"UniswapV2: IDENTICAL_ADDRESSES\"" + }, + "value": "UniswapV2: IDENTICAL_ADDRESSES" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1af2ec9097b2f8bc2dcfea53a9ab4b2cdab42fa29e9a9e04dcb14b4efcc8aa70", + "typeString": "literal_string \"UniswapV2: IDENTICAL_ADDRESSES\"" + } + ], + "id": 9209, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "780:7:34", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "780:59:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9215, + "nodeType": "ExpressionStatement", + "src": "780:59:34" + }, + { + "assignments": [ + 9217, + 9219 + ], + "declarations": [ + { + "constant": false, + "id": 9217, + "mutability": "mutable", + "name": "token0", + "nameLocation": "858:6:34", + "nodeType": "VariableDeclaration", + "scope": 9311, + "src": "850:14:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9216, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "850:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9219, + "mutability": "mutable", + "name": "token1", + "nameLocation": "874:6:34", + "nodeType": "VariableDeclaration", + "scope": 9311, + "src": "866:14:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9218, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "866:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 9230, + "initialValue": { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 9222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9220, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9201, + "src": "884:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 9221, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9203, + "src": "893:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "884:15:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "components": [ + { + "id": 9226, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9203, + "src": "922:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9227, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9201, + "src": "930:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 9228, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "921:16:34", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "id": 9229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "884:53:34", + "trueExpression": { + "components": [ + { + "id": 9223, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9201, + "src": "903:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9224, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9203, + "src": "911:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 9225, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "902:16:34", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "849:88:34" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 9237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9232, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9217, + "src": "955:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 9235, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "973:1:34", + "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": 9234, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "965:7:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 9233, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "965:7:34", + "typeDescriptions": {} + } + }, + "id": 9236, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "965:10:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "955:20:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056323a205a45524f5f41444452455353", + "id": 9238, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "977:25:34", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9fd3496d51391106f97d9c12d75d9ef2543a217eeaf4b9c52c6fdbe23f45a5ae", + "typeString": "literal_string \"UniswapV2: ZERO_ADDRESS\"" + }, + "value": "UniswapV2: ZERO_ADDRESS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9fd3496d51391106f97d9c12d75d9ef2543a217eeaf4b9c52c6fdbe23f45a5ae", + "typeString": "literal_string \"UniswapV2: ZERO_ADDRESS\"" + } + ], + "id": 9231, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "947:7:34", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "947:56:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9240, + "nodeType": "ExpressionStatement", + "src": "947:56:34" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 9251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "baseExpression": { + "id": 9242, + "name": "getPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9175, + "src": "1021:7:34", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$", + "typeString": "mapping(address => mapping(address => address))" + } + }, + "id": 9244, + "indexExpression": { + "id": 9243, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9217, + "src": "1029:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1021:15:34", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 9246, + "indexExpression": { + "id": 9245, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9219, + "src": "1037:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1021:23:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 9249, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1056:1:34", + "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": 9248, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1048:7:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 9247, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1048:7:34", + "typeDescriptions": {} + } + }, + "id": 9250, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1048:10:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1021:37:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056323a20504149525f455849535453", + "id": 9252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1060:24:34", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7597a3317d1f47998beb266ffa8b5f1f9be064321f01552ef08c1fe9eeb777db", + "typeString": "literal_string \"UniswapV2: PAIR_EXISTS\"" + }, + "value": "UniswapV2: PAIR_EXISTS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7597a3317d1f47998beb266ffa8b5f1f9be064321f01552ef08c1fe9eeb777db", + "typeString": "literal_string \"UniswapV2: PAIR_EXISTS\"" + } + ], + "id": 9241, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1013:7:34", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1013:72:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9254, + "nodeType": "ExpressionStatement", + "src": "1013:72:34" + }, + { + "assignments": [ + 9256 + ], + "declarations": [ + { + "constant": false, + "id": 9256, + "mutability": "mutable", + "name": "bytecode", + "nameLocation": "1138:8:34", + "nodeType": "VariableDeclaration", + "scope": 9311, + "src": "1125:21:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 9255, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1125:5:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 9261, + "initialValue": { + "expression": { + "arguments": [ + { + "id": 9258, + "name": "UniswapV2Pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11247, + "src": "1154:13:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Pair_$11247_$", + "typeString": "type(contract UniswapV2Pair)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_UniswapV2Pair_$11247_$", + "typeString": "type(contract UniswapV2Pair)" + } + ], + "id": 9257, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "1149:4:34", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 9259, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1149:19:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_UniswapV2Pair_$11247", + "typeString": "type(contract UniswapV2Pair)" + } + }, + "id": 9260, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "creationCode", + "nodeType": "MemberAccess", + "src": "1149:32:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1125:56:34" + }, + { + "assignments": [ + 9263 + ], + "declarations": [ + { + "constant": false, + "id": 9263, + "mutability": "mutable", + "name": "salt", + "nameLocation": "1199:4:34", + "nodeType": "VariableDeclaration", + "scope": 9311, + "src": "1191:12:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9262, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1191:7:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 9271, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 9267, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9217, + "src": "1233:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9268, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9219, + "src": "1241:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 9265, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1216:3:34", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 9266, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "1216:16:34", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 9269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1216:32:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 9264, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1206:9:34", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 9270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1206:43:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1191:58:34" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "1308:84:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1322:60:34", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1338:1:34", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "name": "bytecode", + "nodeType": "YulIdentifier", + "src": "1345:8:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1355:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1341:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "1341:17:34" + }, + { + "arguments": [ + { + "name": "bytecode", + "nodeType": "YulIdentifier", + "src": "1366:8:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1360:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "1360:15:34" + }, + { + "name": "salt", + "nodeType": "YulIdentifier", + "src": "1377:4:34" + } + ], + "functionName": { + "name": "create2", + "nodeType": "YulIdentifier", + "src": "1330:7:34" + }, + "nodeType": "YulFunctionCall", + "src": "1330:52:34" + }, + "variableNames": [ + { + "name": "pair", + "nodeType": "YulIdentifier", + "src": "1322:4:34" + } + ] + } + ] + }, + "evmVersion": "london", + "externalReferences": [ + { + "declaration": 9256, + "isOffset": false, + "isSlot": false, + "src": "1345:8:34", + "valueSize": 1 + }, + { + "declaration": 9256, + "isOffset": false, + "isSlot": false, + "src": "1366:8:34", + "valueSize": 1 + }, + { + "declaration": 9207, + "isOffset": false, + "isSlot": false, + "src": "1322:4:34", + "valueSize": 1 + }, + { + "declaration": 9263, + "isOffset": false, + "isSlot": false, + "src": "1377:4:34", + "valueSize": 1 + } + ], + "id": 9272, + "nodeType": "InlineAssembly", + "src": "1299:93:34" + }, + { + "expression": { + "arguments": [ + { + "id": 9277, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9217, + "src": "1433:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9278, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9219, + "src": "1441:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 9274, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9207, + "src": "1416:4:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9273, + "name": "IUniswapV2Pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8607, + "src": "1401:14:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$8607_$", + "typeString": "type(contract IUniswapV2Pair)" + } + }, + "id": 9275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1401:20:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Pair_$8607", + "typeString": "contract IUniswapV2Pair" + } + }, + "id": 9276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "initialize", + "nodeType": "MemberAccess", + "referencedDeclaration": 8606, + "src": "1401:31:34", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address) external" + } + }, + "id": 9279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1401:47:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9280, + "nodeType": "ExpressionStatement", + "src": "1401:47:34" + }, + { + "expression": { + "id": 9287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 9281, + "name": "getPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9175, + "src": "1458:7:34", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$", + "typeString": "mapping(address => mapping(address => address))" + } + }, + "id": 9284, + "indexExpression": { + "id": 9282, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9217, + "src": "1466:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1458:15:34", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 9285, + "indexExpression": { + "id": 9283, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9219, + "src": "1474:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1458:23:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 9286, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9207, + "src": "1484:4:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1458:30:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 9288, + "nodeType": "ExpressionStatement", + "src": "1458:30:34" + }, + { + "expression": { + "id": 9295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 9289, + "name": "getPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9175, + "src": "1498:7:34", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$", + "typeString": "mapping(address => mapping(address => address))" + } + }, + "id": 9292, + "indexExpression": { + "id": 9290, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9219, + "src": "1506:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1498:15:34", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 9293, + "indexExpression": { + "id": 9291, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9217, + "src": "1514:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1498:23:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 9294, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9207, + "src": "1524:4:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1498:30:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 9296, + "nodeType": "ExpressionStatement", + "src": "1498:30:34" + }, + { + "expression": { + "arguments": [ + { + "id": 9300, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9207, + "src": "1597:4:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 9297, + "name": "allPairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9179, + "src": "1583:8:34", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 9299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "src": "1583:13:34", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$bound_to$_t_array$_t_address_$dyn_storage_ptr_$", + "typeString": "function (address[] storage pointer,address)" + } + }, + "id": 9301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1583:19:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9302, + "nodeType": "ExpressionStatement", + "src": "1583:19:34" + }, + { + "eventCall": { + "arguments": [ + { + "id": 9304, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9217, + "src": "1629:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9305, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9219, + "src": "1637:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9306, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9207, + "src": "1645:4:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 9307, + "name": "allPairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9179, + "src": "1651:8:34", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 9308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1651:15: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" + } + ], + "id": 9303, + "name": "PairCreated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8314, + "src": "1617:11:34", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256)" + } + }, + "id": 9309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1617:50:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9310, + "nodeType": "EmitStatement", + "src": "1612:55:34" + } + ] + }, + "functionSelector": "c9c65396", + "id": 9312, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createPair", + "nameLocation": "686:10:34", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 9205, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "738:8:34" + }, + "parameters": { + "id": 9204, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9201, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "705:6:34", + "nodeType": "VariableDeclaration", + "scope": 9312, + "src": "697:14:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9200, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "697:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9203, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "721:6:34", + "nodeType": "VariableDeclaration", + "scope": 9312, + "src": "713:14:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9202, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "713:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "696:32:34" + }, + "returnParameters": { + "id": 9208, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9207, + "mutability": "mutable", + "name": "pair", + "nameLocation": "764:4:34", + "nodeType": "VariableDeclaration", + "scope": 9312, + "src": "756:12:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9206, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "756:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "755:14:34" + }, + "scope": 9351, + "src": "677:997:34", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 8359 + ], + "body": { + "id": 9330, + "nodeType": "Block", + "src": "1732:99:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 9322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 9319, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1750:3:34", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 9320, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "1750:10:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 9321, + "name": "feeToSetter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9168, + "src": "1764:11:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1750:25:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056323a20464f5242494444454e", + "id": 9323, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1777:22:34", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37", + "typeString": "literal_string \"UniswapV2: FORBIDDEN\"" + }, + "value": "UniswapV2: FORBIDDEN" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37", + "typeString": "literal_string \"UniswapV2: FORBIDDEN\"" + } + ], + "id": 9318, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1742:7:34", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1742:58:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9325, + "nodeType": "ExpressionStatement", + "src": "1742:58:34" + }, + { + "expression": { + "id": 9328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9326, + "name": "feeTo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9165, + "src": "1810:5:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 9327, + "name": "_feeTo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9314, + "src": "1818:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1810:14:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 9329, + "nodeType": "ExpressionStatement", + "src": "1810:14:34" + } + ] + }, + "functionSelector": "f46901ed", + "id": 9331, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setFeeTo", + "nameLocation": "1689:8:34", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 9316, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1723:8:34" + }, + "parameters": { + "id": 9315, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9314, + "mutability": "mutable", + "name": "_feeTo", + "nameLocation": "1706:6:34", + "nodeType": "VariableDeclaration", + "scope": 9331, + "src": "1698:14:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9313, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1698:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1697:16:34" + }, + "returnParameters": { + "id": 9317, + "nodeType": "ParameterList", + "parameters": [], + "src": "1732:0:34" + }, + "scope": 9351, + "src": "1680:151:34", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 8364 + ], + "body": { + "id": 9349, + "nodeType": "Block", + "src": "1901:111:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 9341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 9338, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1919:3:34", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 9339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "1919:10:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 9340, + "name": "feeToSetter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9168, + "src": "1933:11:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1919:25:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056323a20464f5242494444454e", + "id": 9342, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1946:22:34", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37", + "typeString": "literal_string \"UniswapV2: FORBIDDEN\"" + }, + "value": "UniswapV2: FORBIDDEN" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37", + "typeString": "literal_string \"UniswapV2: FORBIDDEN\"" + } + ], + "id": 9337, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1911:7:34", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1911:58:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9344, + "nodeType": "ExpressionStatement", + "src": "1911:58:34" + }, + { + "expression": { + "id": 9347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9345, + "name": "feeToSetter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9168, + "src": "1979:11:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 9346, + "name": "_feeToSetter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9333, + "src": "1993:12:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1979:26:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 9348, + "nodeType": "ExpressionStatement", + "src": "1979:26:34" + } + ] + }, + "functionSelector": "a2e74af6", + "id": 9350, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setFeeToSetter", + "nameLocation": "1846:14:34", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 9335, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1892:8:34" + }, + "parameters": { + "id": 9334, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9333, + "mutability": "mutable", + "name": "_feeToSetter", + "nameLocation": "1869:12:34", + "nodeType": "VariableDeclaration", + "scope": 9350, + "src": "1861:20:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9332, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1861:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1860:22:34" + }, + "returnParameters": { + "id": 9336, + "nodeType": "ParameterList", + "parameters": [], + "src": "1901:0:34" + }, + "scope": 9351, + "src": "1837:175:34", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 9352, + "src": "135:1879:34", + "usedErrors": [] + } + ], + "src": "32:1983:34" + }, + "id": 34 + }, + "contracts/Uniswap/UniswapV2Library.sol": { + "ast": { + "absolutePath": "contracts/Uniswap/UniswapV2Library.sol", + "exportedSymbols": { + "IUniswapV2Factory": [ + 8365 + ], + "IUniswapV2Pair": [ + 8607 + ], + "SafeMath": [ + 6895 + ], + "UniswapV2Library": [ + 9859 + ] + }, + "id": 9860, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 9353, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:35" + }, + { + "absolutePath": "contracts/Uniswap/Interfaces/IUniswapV2Pair.sol", + "file": "./Interfaces/IUniswapV2Pair.sol", + "id": 9354, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 9860, + "sourceUnit": 8608, + "src": "59:41:35", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Uniswap/Interfaces/IUniswapV2Factory.sol", + "file": "./Interfaces/IUniswapV2Factory.sol", + "id": 9355, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 9860, + "sourceUnit": 8366, + "src": "101:44:35", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Math/SafeMath.sol", + "file": "../Math/SafeMath.sol", + "id": 9356, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 9860, + "sourceUnit": 6896, + "src": "147:30:35", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "UniswapV2Library", + "contractDependencies": [], + "contractKind": "library", + "fullyImplemented": true, + "id": 9859, + "linearizedBaseContracts": [ + 9859 + ], + "name": "UniswapV2Library", + "nameLocation": "187:16:35", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 9359, + "libraryName": { + "id": 9357, + "name": "SafeMath", + "nodeType": "IdentifierPath", + "referencedDeclaration": 6895, + "src": "216:8:35" + }, + "nodeType": "UsingForDirective", + "src": "210:24:35", + "typeName": { + "id": 9358, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "229:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "body": { + "id": 9402, + "nodeType": "Block", + "src": "447:238:35", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 9373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9371, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9361, + "src": "465:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9372, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9363, + "src": "475:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "465:16:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553", + "id": 9374, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "483:39:35", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4ddc3ca35a8b7ccaa016ab70252fdf3396ded4f4fd8375f95b1e9d99790fcdca", + "typeString": "literal_string \"UniswapV2Library: IDENTICAL_ADDRESSES\"" + }, + "value": "UniswapV2Library: IDENTICAL_ADDRESSES" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4ddc3ca35a8b7ccaa016ab70252fdf3396ded4f4fd8375f95b1e9d99790fcdca", + "typeString": "literal_string \"UniswapV2Library: IDENTICAL_ADDRESSES\"" + } + ], + "id": 9370, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "457:7:35", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "457:66:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9376, + "nodeType": "ExpressionStatement", + "src": "457:66:35" + }, + { + "expression": { + "id": 9390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 9377, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9366, + "src": "534:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9378, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9368, + "src": "542:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 9379, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "533:16:35", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 9382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9380, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9361, + "src": "552:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 9381, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9363, + "src": "561:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "552:15:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "components": [ + { + "id": 9386, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9363, + "src": "590:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9387, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9361, + "src": "598:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 9388, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "589:16:35", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "id": 9389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "552:53:35", + "trueExpression": { + "components": [ + { + "id": 9383, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9361, + "src": "571:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9384, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9363, + "src": "579:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 9385, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "570:16:35", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "src": "533:72:35", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9391, + "nodeType": "ExpressionStatement", + "src": "533:72:35" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 9398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9393, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9366, + "src": "623:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 9396, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "641:1:35", + "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": 9395, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "633:7:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 9394, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "633:7:35", + "typeDescriptions": {} + } + }, + "id": 9397, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "633:10:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "623:20:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056324c6962726172793a205a45524f5f41444452455353", + "id": 9399, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "645:32:35", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_db0dda5a73ac3122e17df097fa2cbce2c5161b45d20c7d6cf363d3b147392c83", + "typeString": "literal_string \"UniswapV2Library: ZERO_ADDRESS\"" + }, + "value": "UniswapV2Library: ZERO_ADDRESS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_db0dda5a73ac3122e17df097fa2cbce2c5161b45d20c7d6cf363d3b147392c83", + "typeString": "literal_string \"UniswapV2Library: ZERO_ADDRESS\"" + } + ], + "id": 9392, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "615:7:35", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "615:63:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9401, + "nodeType": "ExpressionStatement", + "src": "615:63:35" + } + ] + }, + "id": 9403, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sortTokens", + "nameLocation": "349:10:35", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9364, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9361, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "368:6:35", + "nodeType": "VariableDeclaration", + "scope": 9403, + "src": "360:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9360, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "360:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9363, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "384:6:35", + "nodeType": "VariableDeclaration", + "scope": 9403, + "src": "376:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9362, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "376:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "359:32:35" + }, + "returnParameters": { + "id": 9369, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9366, + "mutability": "mutable", + "name": "token0", + "nameLocation": "423:6:35", + "nodeType": "VariableDeclaration", + "scope": 9403, + "src": "415:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9365, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "415:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9368, + "mutability": "mutable", + "name": "token1", + "nameLocation": "439:6:35", + "nodeType": "VariableDeclaration", + "scope": 9403, + "src": "431:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9367, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "431:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "414:32:35" + }, + "scope": 9859, + "src": "340:345:35", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9433, + "nodeType": "Block", + "src": "846:145:35", + "statements": [ + { + "assignments": [ + 9415, + 9417 + ], + "declarations": [ + { + "constant": false, + "id": 9415, + "mutability": "mutable", + "name": "token0", + "nameLocation": "865:6:35", + "nodeType": "VariableDeclaration", + "scope": 9433, + "src": "857:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9414, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "857:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9417, + "mutability": "mutable", + "name": "token1", + "nameLocation": "881:6:35", + "nodeType": "VariableDeclaration", + "scope": 9433, + "src": "873:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9416, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "873:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 9422, + "initialValue": { + "arguments": [ + { + "id": 9419, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9407, + "src": "902:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9420, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9409, + "src": "910:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9418, + "name": "sortTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9403, + "src": "891:10:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$", + "typeString": "function (address,address) pure returns (address,address)" + } + }, + "id": 9421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "891:26:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "856:61:35" + }, + { + "expression": { + "id": 9431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9423, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9412, + "src": "927:4:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9428, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9415, + "src": "969:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9429, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9417, + "src": "977:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 9425, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9405, + "src": "952:7:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9424, + "name": "IUniswapV2Factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8365, + "src": "934:17:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV2Factory_$8365_$", + "typeString": "type(contract IUniswapV2Factory)" + } + }, + "id": 9426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "934:26:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Factory_$8365", + "typeString": "contract IUniswapV2Factory" + } + }, + "id": 9427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getPair", + "nodeType": "MemberAccess", + "referencedDeclaration": 8333, + "src": "934:34:35", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address) view external returns (address)" + } + }, + "id": 9430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "934:50:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "927:57:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 9432, + "nodeType": "ExpressionStatement", + "src": "927:57:35" + } + ] + }, + "id": 9434, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "pairFor", + "nameLocation": "752:7:35", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9410, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9405, + "mutability": "mutable", + "name": "factory", + "nameLocation": "768:7:35", + "nodeType": "VariableDeclaration", + "scope": 9434, + "src": "760:15:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9404, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "760:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9407, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "785:6:35", + "nodeType": "VariableDeclaration", + "scope": 9434, + "src": "777:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9406, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "777:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9409, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "801:6:35", + "nodeType": "VariableDeclaration", + "scope": 9434, + "src": "793:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9408, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "793:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "759:49:35" + }, + "returnParameters": { + "id": 9413, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9412, + "mutability": "mutable", + "name": "pair", + "nameLocation": "840:4:35", + "nodeType": "VariableDeclaration", + "scope": 9434, + "src": "832:12:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9411, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "832:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "831:14:35" + }, + "scope": 9859, + "src": "743:248:35", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9481, + "nodeType": "Block", + "src": "1190:438:35", + "statements": [ + { + "assignments": [ + 9446, + 9448 + ], + "declarations": [ + { + "constant": false, + "id": 9446, + "mutability": "mutable", + "name": "token0", + "nameLocation": "1209:6:35", + "nodeType": "VariableDeclaration", + "scope": 9481, + "src": "1201:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9445, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1201:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9448, + "mutability": "mutable", + "name": "token1", + "nameLocation": "1225:6:35", + "nodeType": "VariableDeclaration", + "scope": 9481, + "src": "1217:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9447, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1217:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 9453, + "initialValue": { + "arguments": [ + { + "id": 9450, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9438, + "src": "1246:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9451, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9440, + "src": "1254:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9449, + "name": "sortTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9403, + "src": "1235:10:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$", + "typeString": "function (address,address) pure returns (address,address)" + } + }, + "id": 9452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1235:26:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1200:61:35" + }, + { + "expression": { + "id": 9479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9454, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9443, + "src": "1271:4:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "hexValue": "ff", + "id": 9464, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "hexString", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1346:7:35", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9", + "typeString": "literal_string hex\"ff\"" + } + }, + { + "id": 9465, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9436, + "src": "1371:7:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 9469, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9446, + "src": "1423:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9470, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9448, + "src": "1431:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 9467, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1406:3:35", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 9468, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "1406:16:35", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 9471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1406:32:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 9466, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1396:9:35", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 9472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1396:43:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "hexValue": "96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f", + "id": 9473, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "hexString", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1457:69:35", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_66d76495d34dc7613deaf40ec013ef0fbd2f03604ae509b7212971c455edfb7a", + "typeString": "literal_string hex\"96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f\"" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9", + "typeString": "literal_string hex\"ff\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_stringliteral_66d76495d34dc7613deaf40ec013ef0fbd2f03604ae509b7212971c455edfb7a", + "typeString": "literal_string hex\"96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f\"" + } + ], + "expression": { + "id": 9462, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1312:3:35", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 9463, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "1312:16:35", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 9474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1312:246:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 9461, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1302:9:35", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 9475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1302:257:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9460, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1294:7:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes20_$", + "typeString": "type(bytes20)" + }, + "typeName": { + "id": 9459, + "name": "bytes20", + "nodeType": "ElementaryTypeName", + "src": "1294:7:35", + "typeDescriptions": {} + } + }, + "id": 9476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1294:266:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + ], + "id": 9458, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1286:7:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 9457, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "1286:7:35", + "typeDescriptions": {} + } + }, + "id": 9477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1286:275:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 9456, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1278:7:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 9455, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1278:7:35", + "typeDescriptions": {} + } + }, + "id": 9478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1278:284:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1271:291:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 9480, + "nodeType": "ExpressionStatement", + "src": "1271:291:35" + } + ] + }, + "id": 9482, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "pairForCreate2", + "nameLocation": "1089:14:35", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9441, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9436, + "mutability": "mutable", + "name": "factory", + "nameLocation": "1112:7:35", + "nodeType": "VariableDeclaration", + "scope": 9482, + "src": "1104:15:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9435, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1104:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9438, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "1129:6:35", + "nodeType": "VariableDeclaration", + "scope": 9482, + "src": "1121:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9437, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1121:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9440, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "1145:6:35", + "nodeType": "VariableDeclaration", + "scope": 9482, + "src": "1137:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9439, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1137:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1103:49:35" + }, + "returnParameters": { + "id": 9444, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9443, + "mutability": "mutable", + "name": "pair", + "nameLocation": "1184:4:35", + "nodeType": "VariableDeclaration", + "scope": 9482, + "src": "1176:12:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9442, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1176:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1175:14:35" + }, + "scope": 9859, + "src": "1080:548:35", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9531, + "nodeType": "Block", + "src": "1806:264:35", + "statements": [ + { + "assignments": [ + 9496, + null + ], + "declarations": [ + { + "constant": false, + "id": 9496, + "mutability": "mutable", + "name": "token0", + "nameLocation": "1825:6:35", + "nodeType": "VariableDeclaration", + "scope": 9531, + "src": "1817:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9495, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1817:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + null + ], + "id": 9501, + "initialValue": { + "arguments": [ + { + "id": 9498, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9486, + "src": "1847:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9499, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9488, + "src": "1855:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9497, + "name": "sortTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9403, + "src": "1836:10:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$", + "typeString": "function (address,address) pure returns (address,address)" + } + }, + "id": 9500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1836:26:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1816:46:35" + }, + { + "assignments": [ + 9503, + 9505, + null + ], + "declarations": [ + { + "constant": false, + "id": 9503, + "mutability": "mutable", + "name": "reserve0", + "nameLocation": "1878:8:35", + "nodeType": "VariableDeclaration", + "scope": 9531, + "src": "1873:13:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9502, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1873:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9505, + "mutability": "mutable", + "name": "reserve1", + "nameLocation": "1893:8:35", + "nodeType": "VariableDeclaration", + "scope": 9531, + "src": "1888:13:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9504, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1888:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + null + ], + "id": 9515, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 9508, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9484, + "src": "1929:7:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9509, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9486, + "src": "1938:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9510, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9488, + "src": "1946:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9507, + "name": "pairFor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9434, + "src": "1921:7:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address,address) view returns (address)" + } + }, + "id": 9511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1921:32:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9506, + "name": "IUniswapV2Pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8607, + "src": "1906:14:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$8607_$", + "typeString": "type(contract IUniswapV2Pair)" + } + }, + "id": 9512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1906:48:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Pair_$8607", + "typeString": "contract IUniswapV2Pair" + } + }, + "id": 9513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getReserves", + "nodeType": "MemberAccess", + "referencedDeclaration": 8549, + "src": "1906:60:35", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$", + "typeString": "function () view external returns (uint112,uint112,uint32)" + } + }, + "id": 9514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1906:62:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$", + "typeString": "tuple(uint112,uint112,uint32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1872:96:35" + }, + { + "expression": { + "id": 9529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 9516, + "name": "reserveA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9491, + "src": "1979:8:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9517, + "name": "reserveB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9493, + "src": "1989:8:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 9518, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "1978:20:35", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 9521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9519, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9486, + "src": "2001:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 9520, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9496, + "src": "2011:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2001:16:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "components": [ + { + "id": 9525, + "name": "reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9505, + "src": "2044:8:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9526, + "name": "reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9503, + "src": "2054:8:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 9527, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2043:20:35", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "id": 9528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "2001:62:35", + "trueExpression": { + "components": [ + { + "id": 9522, + "name": "reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9503, + "src": "2021:8:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9523, + "name": "reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9505, + "src": "2031:8:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 9524, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2020:20:35", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "1978:85:35", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9530, + "nodeType": "ExpressionStatement", + "src": "1978:85:35" + } + ] + }, + "id": 9532, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getReserves", + "nameLocation": "1692:11:35", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9489, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9484, + "mutability": "mutable", + "name": "factory", + "nameLocation": "1712:7:35", + "nodeType": "VariableDeclaration", + "scope": 9532, + "src": "1704:15:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9483, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1704:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9486, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "1729:6:35", + "nodeType": "VariableDeclaration", + "scope": 9532, + "src": "1721:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1721:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9488, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "1745:6:35", + "nodeType": "VariableDeclaration", + "scope": 9532, + "src": "1737:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9487, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1737:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1703:49:35" + }, + "returnParameters": { + "id": 9494, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9491, + "mutability": "mutable", + "name": "reserveA", + "nameLocation": "1781:8:35", + "nodeType": "VariableDeclaration", + "scope": 9532, + "src": "1776:13:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9490, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1776:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9493, + "mutability": "mutable", + "name": "reserveB", + "nameLocation": "1796:8:35", + "nodeType": "VariableDeclaration", + "scope": 9532, + "src": "1791:13:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9492, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1791:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1775:30:35" + }, + "scope": 9859, + "src": "1683:387:35", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9570, + "nodeType": "Block", + "src": "2276:221:35", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9544, + "name": "amountA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9534, + "src": "2294:7:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 9545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2304:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2294:11:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54", + "id": 9547, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2307:39:35", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b3ea0cd729028efbc737ad3cde1d4d854e6f2c136b354fbaea9389d68bc3a146", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_AMOUNT\"" + }, + "value": "UniswapV2Library: INSUFFICIENT_AMOUNT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b3ea0cd729028efbc737ad3cde1d4d854e6f2c136b354fbaea9389d68bc3a146", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_AMOUNT\"" + } + ], + "id": 9543, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2286:7:35", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2286:61:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9549, + "nodeType": "ExpressionStatement", + "src": "2286:61:35" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 9557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9551, + "name": "reserveA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9536, + "src": "2365:8:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 9552, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2376:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2365:12:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9554, + "name": "reserveB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9538, + "src": "2381:8:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 9555, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2392:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2381:12:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2365:28:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459", + "id": 9558, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2395:42:35", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7e8d6b265173dbbd87b3b9e2bf4238bea6caf2b2bbeb63f859a738aec9e761c8", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + }, + "value": "UniswapV2Library: INSUFFICIENT_LIQUIDITY" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7e8d6b265173dbbd87b3b9e2bf4238bea6caf2b2bbeb63f859a738aec9e761c8", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + } + ], + "id": 9550, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2357:7:35", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2357:81:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9560, + "nodeType": "ExpressionStatement", + "src": "2357:81:35" + }, + { + "expression": { + "id": 9568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9561, + "name": "amountB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9541, + "src": "2448:7:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 9564, + "name": "reserveB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9538, + "src": "2470:8:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9562, + "name": "amountA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9534, + "src": "2458:7:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "2458:11:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 9565, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2458:21:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 9566, + "name": "reserveA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9536, + "src": "2482:8:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2458:32:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2448:42:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9569, + "nodeType": "ExpressionStatement", + "src": "2448:42:35" + } + ] + }, + "id": 9571, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "quote", + "nameLocation": "2189:5:35", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9539, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9534, + "mutability": "mutable", + "name": "amountA", + "nameLocation": "2200:7:35", + "nodeType": "VariableDeclaration", + "scope": 9571, + "src": "2195:12:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9533, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2195:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9536, + "mutability": "mutable", + "name": "reserveA", + "nameLocation": "2214:8:35", + "nodeType": "VariableDeclaration", + "scope": 9571, + "src": "2209:13:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9535, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2209:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9538, + "mutability": "mutable", + "name": "reserveB", + "nameLocation": "2229:8:35", + "nodeType": "VariableDeclaration", + "scope": 9571, + "src": "2224:13:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9537, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2224:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2194:44:35" + }, + "returnParameters": { + "id": 9542, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9541, + "mutability": "mutable", + "name": "amountB", + "nameLocation": "2267:7:35", + "nodeType": "VariableDeclaration", + "scope": 9571, + "src": "2262:12:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9540, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2262:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2261:14:35" + }, + "scope": 9859, + "src": "2180:317:35", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9630, + "nodeType": "Block", + "src": "2725:401:35", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9583, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9573, + "src": "2743:8:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 9584, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2754:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2743:12:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54", + "id": 9586, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2757:45:35", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ec21b006eb37ef20d0f4abcabd34de6854fa68af48294244e0263dc05c1dbbae", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT\"" + }, + "value": "UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ec21b006eb37ef20d0f4abcabd34de6854fa68af48294244e0263dc05c1dbbae", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT\"" + } + ], + "id": 9582, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2735:7:35", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2735:68:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9588, + "nodeType": "ExpressionStatement", + "src": "2735:68:35" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 9596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9590, + "name": "reserveIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9575, + "src": "2821:9:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 9591, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2833:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2821:13:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9593, + "name": "reserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9577, + "src": "2838:10:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 9594, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2851:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2838:14:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2821:31:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459", + "id": 9597, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2854:42:35", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7e8d6b265173dbbd87b3b9e2bf4238bea6caf2b2bbeb63f859a738aec9e761c8", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + }, + "value": "UniswapV2Library: INSUFFICIENT_LIQUIDITY" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7e8d6b265173dbbd87b3b9e2bf4238bea6caf2b2bbeb63f859a738aec9e761c8", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + } + ], + "id": 9589, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2813:7:35", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2813:84:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9599, + "nodeType": "ExpressionStatement", + "src": "2813:84:35" + }, + { + "assignments": [ + 9601 + ], + "declarations": [ + { + "constant": false, + "id": 9601, + "mutability": "mutable", + "name": "amountInWithFee", + "nameLocation": "2912:15:35", + "nodeType": "VariableDeclaration", + "scope": 9630, + "src": "2907:20:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9600, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2907:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9606, + "initialValue": { + "arguments": [ + { + "hexValue": "393937", + "id": 9604, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2943:3:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_997_by_1", + "typeString": "int_const 997" + }, + "value": "997" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_997_by_1", + "typeString": "int_const 997" + } + ], + "expression": { + "id": 9602, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9573, + "src": "2930:8:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "2930:12:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 9605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2930:17:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2907:40:35" + }, + { + "assignments": [ + 9608 + ], + "declarations": [ + { + "constant": false, + "id": 9608, + "mutability": "mutable", + "name": "numerator", + "nameLocation": "2962:9:35", + "nodeType": "VariableDeclaration", + "scope": 9630, + "src": "2957:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9607, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2957:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9613, + "initialValue": { + "arguments": [ + { + "id": 9611, + "name": "reserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9577, + "src": "2994:10:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9609, + "name": "amountInWithFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9601, + "src": "2974:15:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "2974:19:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 9612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2974:31:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2957:48:35" + }, + { + "assignments": [ + 9615 + ], + "declarations": [ + { + "constant": false, + "id": 9615, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "3020:11:35", + "nodeType": "VariableDeclaration", + "scope": 9630, + "src": "3015:16:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9614, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3015:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9623, + "initialValue": { + "arguments": [ + { + "id": 9621, + "name": "amountInWithFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9601, + "src": "3058:15:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "hexValue": "31303030", + "id": 9618, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3048:4:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + }, + "value": "1000" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + } + ], + "expression": { + "id": 9616, + "name": "reserveIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9575, + "src": "3034:9:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "3034:13:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 9619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3034:19:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 6728, + "src": "3034:23:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 9622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3034:40:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3015:59:35" + }, + { + "expression": { + "id": 9628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9624, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9580, + "src": "3084:9:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9625, + "name": "numerator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9608, + "src": "3096:9:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 9626, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9615, + "src": "3108:11:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3096:23:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3084:35:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9629, + "nodeType": "ExpressionStatement", + "src": "3084:35:35" + } + ] + }, + "id": 9631, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAmountOut", + "nameLocation": "2625:12:35", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9578, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9573, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "2643:8:35", + "nodeType": "VariableDeclaration", + "scope": 9631, + "src": "2638:13:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9572, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2638:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9575, + "mutability": "mutable", + "name": "reserveIn", + "nameLocation": "2658:9:35", + "nodeType": "VariableDeclaration", + "scope": 9631, + "src": "2653:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9574, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2653:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9577, + "mutability": "mutable", + "name": "reserveOut", + "nameLocation": "2674:10:35", + "nodeType": "VariableDeclaration", + "scope": 9631, + "src": "2669:15:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9576, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2669:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2637:48:35" + }, + "returnParameters": { + "id": 9581, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9580, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "2714:9:35", + "nodeType": "VariableDeclaration", + "scope": 9631, + "src": "2709:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9579, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2709:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2708:16:35" + }, + "scope": 9859, + "src": "2616:510:35", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9690, + "nodeType": "Block", + "src": "3352:358:35", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9643, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9633, + "src": "3370:9:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 9644, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3382:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3370:13:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54", + "id": 9646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3385:46:35", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_35fb781059090c30aacad20e29b2e40e67f217617fc46f86031ed4eb14923a82", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT\"" + }, + "value": "UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_35fb781059090c30aacad20e29b2e40e67f217617fc46f86031ed4eb14923a82", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT\"" + } + ], + "id": 9642, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3362:7:35", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3362:70:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9648, + "nodeType": "ExpressionStatement", + "src": "3362:70:35" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 9656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9650, + "name": "reserveIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9635, + "src": "3450:9:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 9651, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3462:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3450:13:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9653, + "name": "reserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9637, + "src": "3467:10:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 9654, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3480:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3467:14:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3450:31:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459", + "id": 9657, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3483:42:35", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7e8d6b265173dbbd87b3b9e2bf4238bea6caf2b2bbeb63f859a738aec9e761c8", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + }, + "value": "UniswapV2Library: INSUFFICIENT_LIQUIDITY" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7e8d6b265173dbbd87b3b9e2bf4238bea6caf2b2bbeb63f859a738aec9e761c8", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + } + ], + "id": 9649, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3442:7:35", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3442:84:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9659, + "nodeType": "ExpressionStatement", + "src": "3442:84:35" + }, + { + "assignments": [ + 9661 + ], + "declarations": [ + { + "constant": false, + "id": 9661, + "mutability": "mutable", + "name": "numerator", + "nameLocation": "3541:9:35", + "nodeType": "VariableDeclaration", + "scope": 9690, + "src": "3536:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9660, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3536:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9669, + "initialValue": { + "arguments": [ + { + "hexValue": "31303030", + "id": 9667, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3582:4:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + }, + "value": "1000" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + } + ], + "expression": { + "arguments": [ + { + "id": 9664, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9633, + "src": "3567:9:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9662, + "name": "reserveIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9635, + "src": "3553:9:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "3553:13:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 9665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3553:24:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "3553:28:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 9668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3553:34:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3536:51:35" + }, + { + "assignments": [ + 9671 + ], + "declarations": [ + { + "constant": false, + "id": 9671, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "3602:11:35", + "nodeType": "VariableDeclaration", + "scope": 9690, + "src": "3597:16:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9670, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3597:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9679, + "initialValue": { + "arguments": [ + { + "hexValue": "393937", + "id": 9677, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3646:3:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_997_by_1", + "typeString": "int_const 997" + }, + "value": "997" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_997_by_1", + "typeString": "int_const 997" + } + ], + "expression": { + "arguments": [ + { + "id": 9674, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9633, + "src": "3631:9:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9672, + "name": "reserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9637, + "src": "3616:10:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6745, + "src": "3616:14:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 9675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3616:25:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "3616:29:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 9678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3616:34:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3597:53:35" + }, + { + "expression": { + "id": 9688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9680, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9640, + "src": "3660:8:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "31", + "id": 9686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3701:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9681, + "name": "numerator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9661, + "src": "3672:9:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 9682, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9671, + "src": "3684:11:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3672:23:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 9684, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3671:25:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 6728, + "src": "3671:29:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 9687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3671:32:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3660:43:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9689, + "nodeType": "ExpressionStatement", + "src": "3660:43:35" + } + ] + }, + "id": 9691, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAmountIn", + "nameLocation": "3253:11:35", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9638, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9633, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "3270:9:35", + "nodeType": "VariableDeclaration", + "scope": 9691, + "src": "3265:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9632, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3265:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9635, + "mutability": "mutable", + "name": "reserveIn", + "nameLocation": "3286:9:35", + "nodeType": "VariableDeclaration", + "scope": 9691, + "src": "3281:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9634, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3281:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9637, + "mutability": "mutable", + "name": "reserveOut", + "nameLocation": "3302:10:35", + "nodeType": "VariableDeclaration", + "scope": 9691, + "src": "3297:15:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9636, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3297:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3264:49:35" + }, + "returnParameters": { + "id": 9641, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9640, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "3342:8:35", + "nodeType": "VariableDeclaration", + "scope": 9691, + "src": "3337:13:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9639, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3337:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3336:15:35" + }, + "scope": 9859, + "src": "3244:466:35", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9772, + "nodeType": "Block", + "src": "3913:383:35", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 9705, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9698, + "src": "3931:4:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 9706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3931:11:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "hexValue": "32", + "id": 9707, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3946:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "3931:16:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056324c6962726172793a20494e56414c49445f50415448", + "id": 9709, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3949:32:35", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_75377551ce0fccd63c5f6648306f9f916607f3ae50cffb38430d29ad981b8222", + "typeString": "literal_string \"UniswapV2Library: INVALID_PATH\"" + }, + "value": "UniswapV2Library: INVALID_PATH" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_75377551ce0fccd63c5f6648306f9f916607f3ae50cffb38430d29ad981b8222", + "typeString": "literal_string \"UniswapV2Library: INVALID_PATH\"" + } + ], + "id": 9704, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3923:7:35", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3923:59:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9711, + "nodeType": "ExpressionStatement", + "src": "3923:59:35" + }, + { + "expression": { + "id": 9719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9712, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9702, + "src": "3992:7:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 9716, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9698, + "src": "4013:4:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 9717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4013:11:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9715, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "4002:10:35", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 9713, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4006:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9714, + "nodeType": "ArrayTypeName", + "src": "4006:6:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 9718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4002:23:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "3992:33:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 9720, + "nodeType": "ExpressionStatement", + "src": "3992:33:35" + }, + { + "expression": { + "id": 9725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 9721, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9702, + "src": "4035:7:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 9723, + "indexExpression": { + "hexValue": "30", + "id": 9722, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4043:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4035:10:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 9724, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9695, + "src": "4048:8:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4035:21:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9726, + "nodeType": "ExpressionStatement", + "src": "4035:21:35" + }, + { + "body": { + "id": 9770, + "nodeType": "Block", + "src": "4109:181:35", + "statements": [ + { + "assignments": [ + 9741, + 9743 + ], + "declarations": [ + { + "constant": false, + "id": 9741, + "mutability": "mutable", + "name": "reserveIn", + "nameLocation": "4129:9:35", + "nodeType": "VariableDeclaration", + "scope": 9770, + "src": "4124:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9740, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4124:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9743, + "mutability": "mutable", + "name": "reserveOut", + "nameLocation": "4145:10:35", + "nodeType": "VariableDeclaration", + "scope": 9770, + "src": "4140:15:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9742, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4140:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9755, + "initialValue": { + "arguments": [ + { + "id": 9745, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9693, + "src": "4171:7:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "id": 9746, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9698, + "src": "4180:4:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 9748, + "indexExpression": { + "id": 9747, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9728, + "src": "4185:1:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4180:7:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "id": 9749, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9698, + "src": "4189:4:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 9753, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9750, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9728, + "src": "4194:1:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 9751, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4198:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4194:5:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4189:11:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9744, + "name": "getReserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9532, + "src": "4159:11:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (address,address,address) view returns (uint256,uint256)" + } + }, + "id": 9754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4159:42:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4123:78:35" + }, + { + "expression": { + "id": 9768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 9756, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9702, + "src": "4215:7:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 9760, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9757, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9728, + "src": "4223:1:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 9758, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4227:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4223:5:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4215:14:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "baseExpression": { + "id": 9762, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9702, + "src": "4245:7:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 9764, + "indexExpression": { + "id": 9763, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9728, + "src": "4253:1:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4245:10:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9765, + "name": "reserveIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9741, + "src": "4257:9:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9766, + "name": "reserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9743, + "src": "4268:10:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9761, + "name": "getAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9631, + "src": "4232:12:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 9767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4232:47:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4215:64:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9769, + "nodeType": "ExpressionStatement", + "src": "4215:64:35" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9731, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9728, + "src": "4083:1:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 9732, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9698, + "src": "4087:4:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 9733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4087:11:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 9734, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4101:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4087:15:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4083:19:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9771, + "initializationExpression": { + "assignments": [ + 9728 + ], + "declarations": [ + { + "constant": false, + "id": 9728, + "mutability": "mutable", + "name": "i", + "nameLocation": "4076:1:35", + "nodeType": "VariableDeclaration", + "scope": 9771, + "src": "4071:6:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9727, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4071:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9730, + "initialValue": { + "hexValue": "30", + "id": 9729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4080:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "4071:10:35" + }, + "loopExpression": { + "expression": { + "id": 9738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4104:3:35", + "subExpression": { + "id": 9737, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9728, + "src": "4104:1:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9739, + "nodeType": "ExpressionStatement", + "src": "4104:3:35" + }, + "nodeType": "ForStatement", + "src": "4066:224:35" + } + ] + }, + "id": 9773, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAmountsOut", + "nameLocation": "3798:13:35", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9699, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9693, + "mutability": "mutable", + "name": "factory", + "nameLocation": "3820:7:35", + "nodeType": "VariableDeclaration", + "scope": 9773, + "src": "3812:15:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9692, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3812:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9695, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "3834:8:35", + "nodeType": "VariableDeclaration", + "scope": 9773, + "src": "3829:13:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9694, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3829:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9698, + "mutability": "mutable", + "name": "path", + "nameLocation": "3861:4:35", + "nodeType": "VariableDeclaration", + "scope": 9773, + "src": "3844:21:35", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 9696, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3844:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 9697, + "nodeType": "ArrayTypeName", + "src": "3844:9:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "3811:55:35" + }, + "returnParameters": { + "id": 9703, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9702, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "3904:7:35", + "nodeType": "VariableDeclaration", + "scope": 9773, + "src": "3890:21:35", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 9700, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3890:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9701, + "nodeType": "ArrayTypeName", + "src": "3890:6:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "3889:23:35" + }, + "scope": 9859, + "src": "3789:507:35", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9857, + "nodeType": "Block", + "src": "4498:400:35", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 9787, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9780, + "src": "4516:4:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 9788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4516:11:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "hexValue": "32", + "id": 9789, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4531:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "4516:16:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056324c6962726172793a20494e56414c49445f50415448", + "id": 9791, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4534:32:35", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_75377551ce0fccd63c5f6648306f9f916607f3ae50cffb38430d29ad981b8222", + "typeString": "literal_string \"UniswapV2Library: INVALID_PATH\"" + }, + "value": "UniswapV2Library: INVALID_PATH" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_75377551ce0fccd63c5f6648306f9f916607f3ae50cffb38430d29ad981b8222", + "typeString": "literal_string \"UniswapV2Library: INVALID_PATH\"" + } + ], + "id": 9786, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4508:7:35", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4508:59:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9793, + "nodeType": "ExpressionStatement", + "src": "4508:59:35" + }, + { + "expression": { + "id": 9801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9794, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9784, + "src": "4577:7:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 9798, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9780, + "src": "4598:4:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 9799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4598:11:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9797, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "4587:10:35", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 9795, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4591:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9796, + "nodeType": "ArrayTypeName", + "src": "4591:6:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 9800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4587:23:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "4577:33:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 9802, + "nodeType": "ExpressionStatement", + "src": "4577:33:35" + }, + { + "expression": { + "id": 9810, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 9803, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9784, + "src": "4620:7:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 9808, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 9804, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9784, + "src": "4628:7:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 9805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4628:14:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 9806, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4645:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4628:18:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4620:27:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 9809, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9777, + "src": "4650:9:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4620:39:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9811, + "nodeType": "ExpressionStatement", + "src": "4620:39:35" + }, + { + "body": { + "id": 9855, + "nodeType": "Block", + "src": "4712:180:35", + "statements": [ + { + "assignments": [ + 9826, + 9828 + ], + "declarations": [ + { + "constant": false, + "id": 9826, + "mutability": "mutable", + "name": "reserveIn", + "nameLocation": "4732:9:35", + "nodeType": "VariableDeclaration", + "scope": 9855, + "src": "4727:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9825, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4727:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9828, + "mutability": "mutable", + "name": "reserveOut", + "nameLocation": "4748:10:35", + "nodeType": "VariableDeclaration", + "scope": 9855, + "src": "4743:15:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9827, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4743:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9840, + "initialValue": { + "arguments": [ + { + "id": 9830, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9775, + "src": "4774:7:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "id": 9831, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9780, + "src": "4783:4:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 9835, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9832, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9813, + "src": "4788:1:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 9833, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4792:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4788:5:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4783:11:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "id": 9836, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9780, + "src": "4796:4:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 9838, + "indexExpression": { + "id": 9837, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9813, + "src": "4801:1:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4796:7:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9829, + "name": "getReserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9532, + "src": "4762:11:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (address,address,address) view returns (uint256,uint256)" + } + }, + "id": 9839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4762:42:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4726:78:35" + }, + { + "expression": { + "id": 9853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 9841, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9784, + "src": "4818:7:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 9845, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9842, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9813, + "src": "4826:1:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 9843, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4830:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4826:5:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4818:14:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "baseExpression": { + "id": 9847, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9784, + "src": "4847:7:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 9849, + "indexExpression": { + "id": 9848, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9813, + "src": "4855:1:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4847:10:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9850, + "name": "reserveIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9826, + "src": "4859:9:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9851, + "name": "reserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9828, + "src": "4870:10:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9846, + "name": "getAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9691, + "src": "4835:11:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 9852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4835:46:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4818:63:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9854, + "nodeType": "ExpressionStatement", + "src": "4818:63:35" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9819, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9813, + "src": "4700:1:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 9820, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4704:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4700:5:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9856, + "initializationExpression": { + "assignments": [ + 9813 + ], + "declarations": [ + { + "constant": false, + "id": 9813, + "mutability": "mutable", + "name": "i", + "nameLocation": "4679:1:35", + "nodeType": "VariableDeclaration", + "scope": 9856, + "src": "4674:6:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9812, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4674:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9818, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 9814, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9780, + "src": "4683:4:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 9815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4683:11:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 9816, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4697:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4683:15:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4674:24:35" + }, + "loopExpression": { + "expression": { + "id": 9823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "4707:3:35", + "subExpression": { + "id": 9822, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9813, + "src": "4707:1:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9824, + "nodeType": "ExpressionStatement", + "src": "4707:3:35" + }, + "nodeType": "ForStatement", + "src": "4669:223:35" + } + ] + }, + "id": 9858, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAmountsIn", + "nameLocation": "4383:12:35", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9781, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9775, + "mutability": "mutable", + "name": "factory", + "nameLocation": "4404:7:35", + "nodeType": "VariableDeclaration", + "scope": 9858, + "src": "4396:15:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9774, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4396:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9777, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "4418:9:35", + "nodeType": "VariableDeclaration", + "scope": 9858, + "src": "4413:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9776, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4413:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9780, + "mutability": "mutable", + "name": "path", + "nameLocation": "4446:4:35", + "nodeType": "VariableDeclaration", + "scope": 9858, + "src": "4429:21:35", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 9778, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4429:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 9779, + "nodeType": "ArrayTypeName", + "src": "4429:9:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "4395:56:35" + }, + "returnParameters": { + "id": 9785, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9784, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "4489:7:35", + "nodeType": "VariableDeclaration", + "scope": 9858, + "src": "4475:21:35", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 9782, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4475:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9783, + "nodeType": "ArrayTypeName", + "src": "4475:6:35", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "4474:23:35" + }, + "scope": 9859, + "src": "4374:524:35", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 9860, + "src": "179:4721:35", + "usedErrors": [] + } + ], + "src": "32:4868:35" + }, + "id": 35 + }, + "contracts/Uniswap/UniswapV2Pair.sol": { + "ast": { + "absolutePath": "contracts/Uniswap/UniswapV2Pair.sol", + "exportedSymbols": { + "Context": [ + 456 + ], + "IERC20": [ + 5514 + ], + "IUniswapV2Callee": [ + 8184 + ], + "IUniswapV2ERC20": [ + 8302 + ], + "IUniswapV2Factory": [ + 8365 + ], + "IUniswapV2Pair": [ + 8607 + ], + "Math": [ + 6410 + ], + "SafeMath": [ + 6895 + ], + "UQ112x112": [ + 6939 + ], + "UniswapV2ERC20": [ + 9156 + ], + "UniswapV2Pair": [ + 11247 + ] + }, + "id": 11248, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 9861, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:36" + }, + { + "absolutePath": "contracts/Uniswap/Interfaces/IUniswapV2Pair.sol", + "file": "./Interfaces/IUniswapV2Pair.sol", + "id": 9862, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11248, + "sourceUnit": 8608, + "src": "60:41:36", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Uniswap/UniswapV2ERC20.sol", + "file": "./UniswapV2ERC20.sol", + "id": 9863, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11248, + "sourceUnit": 9157, + "src": "102:30:36", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Math/Math.sol", + "file": "../Math/Math.sol", + "id": 9864, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11248, + "sourceUnit": 6411, + "src": "133:26:36", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Math/UQ112x112.sol", + "file": "../Math/UQ112x112.sol", + "id": 9865, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11248, + "sourceUnit": 6940, + "src": "160:31:36", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/ERC20/IERC20.sol", + "file": "../ERC20/IERC20.sol", + "id": 9866, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11248, + "sourceUnit": 5515, + "src": "192:29:36", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Uniswap/Interfaces/IUniswapV2Factory.sol", + "file": "./Interfaces/IUniswapV2Factory.sol", + "id": 9867, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11248, + "sourceUnit": 8366, + "src": "222:44:36", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Uniswap/Interfaces/IUniswapV2Callee.sol", + "file": "./Interfaces/IUniswapV2Callee.sol", + "id": 9868, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11248, + "sourceUnit": 8185, + "src": "267:43:36", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 9869, + "name": "IUniswapV2Pair", + "nodeType": "IdentifierPath", + "referencedDeclaration": 8607, + "src": "338:14:36" + }, + "id": 9870, + "nodeType": "InheritanceSpecifier", + "src": "338:14:36" + } + ], + "canonicalName": "UniswapV2Pair", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 11247, + "linearizedBaseContracts": [ + 11247, + 8607 + ], + "name": "UniswapV2Pair", + "nameLocation": "321:13:36", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 9873, + "libraryName": { + "id": 9871, + "name": "SafeMath", + "nodeType": "IdentifierPath", + "referencedDeclaration": 6895, + "src": "365:8:36" + }, + "nodeType": "UsingForDirective", + "src": "359:24:36", + "typeName": { + "id": 9872, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "378:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 9876, + "libraryName": { + "id": 9874, + "name": "UQ112x112", + "nodeType": "IdentifierPath", + "referencedDeclaration": 6939, + "src": "394:9:36" + }, + "nodeType": "UsingForDirective", + "src": "388:28:36", + "typeName": { + "id": 9875, + "name": "uint224", + "nodeType": "ElementaryTypeName", + "src": "408:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + } + }, + { + "baseFunctions": [ + 8388 + ], + "constant": true, + "functionSelector": "06fdde03", + "id": 9880, + "mutability": "constant", + "name": "name", + "nameLocation": "454:4:36", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 9878, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "436:8:36" + }, + "scope": 11247, + "src": "422:51:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 9877, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "422:6:36", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "hexValue": "556e6973776170205632", + "id": 9879, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "461:12:36", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_bfcc8ef98ffbf7b6c3fec7bf5185b566b9863e35a9d83acd49ad6824b5969738", + "typeString": "literal_string \"Uniswap V2\"" + }, + "value": "Uniswap V2" + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8393 + ], + "constant": true, + "functionSelector": "95d89b41", + "id": 9884, + "mutability": "constant", + "name": "symbol", + "nameLocation": "511:6:36", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 9882, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "493:8:36" + }, + "scope": 11247, + "src": "479:49:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 9881, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "479:6:36", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "hexValue": "554e492d5632", + "id": 9883, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "520:8:36", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0c49a525f6758cfb27d0ada1467d2a2e99733995423d47ae30ae4ba2ba563255", + "typeString": "literal_string \"UNI-V2\"" + }, + "value": "UNI-V2" + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8398 + ], + "constant": true, + "functionSelector": "313ce567", + "id": 9888, + "mutability": "constant", + "name": "decimals", + "nameLocation": "565:8:36", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 9886, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "547:8:36" + }, + "scope": 11247, + "src": "534:44:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 9885, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "534:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "hexValue": "3138", + "id": 9887, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "576:2:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8403 + ], + "constant": false, + "functionSelector": "18160ddd", + "id": 9891, + "mutability": "mutable", + "name": "totalSupply", + "nameLocation": "606:11:36", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 9890, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "597:8:36" + }, + "scope": 11247, + "src": "584:33:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9889, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "584:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8410 + ], + "constant": false, + "functionSelector": "70a08231", + "id": 9896, + "mutability": "mutable", + "name": "balanceOf", + "nameLocation": "664:9:36", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 9895, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "655:8:36" + }, + "scope": 11247, + "src": "623:50:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 9894, + "keyType": { + "id": 9892, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "631:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "623:24:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 9893, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "642:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8419 + ], + "constant": false, + "functionSelector": "dd62ed3e", + "id": 9903, + "mutability": "mutable", + "name": "allowance", + "nameLocation": "740:9:36", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 9902, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "731:8:36" + }, + "scope": 11247, + "src": "679:70:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 9901, + "keyType": { + "id": 9897, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "687:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "679:44:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 9900, + "keyType": { + "id": 9898, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "706:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "698:24:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 9899, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "717:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8525 + ], + "constant": true, + "functionSelector": "ba9a7a56", + "id": 9909, + "mutability": "constant", + "name": "MINIMUM_LIQUIDITY", + "nameLocation": "786:17:36", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 9905, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "768:8:36" + }, + "scope": 11247, + "src": "756:55:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9904, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "756:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + }, + "id": 9908, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 9906, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "806:2:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "33", + "id": 9907, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "810:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "806:5:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 9920, + "mutability": "constant", + "name": "SELECTOR", + "nameLocation": "841:8:36", + "nodeType": "VariableDeclaration", + "scope": 11247, + "src": "817:88:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 9910, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "817:6:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "hexValue": "7472616e7366657228616464726573732c75696e7432353629", + "id": 9916, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "875:27:36", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", + "typeString": "literal_string \"transfer(address,uint256)\"" + }, + "value": "transfer(address,uint256)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", + "typeString": "literal_string \"transfer(address,uint256)\"" + } + ], + "id": 9915, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "869:5:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 9914, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "869:5:36", + "typeDescriptions": {} + } + }, + "id": 9917, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "869:34:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 9913, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "859:9:36", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 9918, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "859:45:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9912, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "852:6:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + }, + "typeName": { + "id": 9911, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "852:6:36", + "typeDescriptions": {} + } + }, + "id": 9919, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "852:53:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "private" + }, + { + "baseFunctions": [ + 8453 + ], + "constant": false, + "functionSelector": "3644e515", + "id": 9923, + "mutability": "mutable", + "name": "DOMAIN_SEPARATOR", + "nameLocation": "935:16:36", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 9922, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "926:8:36" + }, + "scope": 11247, + "src": "911:40:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9921, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "911:7:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8458 + ], + "constant": true, + "functionSelector": "30adf81f", + "id": 9927, + "mutability": "constant", + "name": "PERMIT_TYPEHASH", + "nameLocation": "1094:15:36", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 9925, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1085:8:36" + }, + "scope": 11247, + "src": "1061:117:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9924, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1061:7:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307836653731656461653132623162393766346431663630333730666566313031303566613266616165303132363131346131363963363438343564363132366339", + "id": 9926, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1112:66:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_49955707469362902507454157297736832118868343942642399513960811609542965143241_by_1", + "typeString": "int_const 4995...(69 digits omitted)...3241" + }, + "value": "0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9" + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8465 + ], + "constant": false, + "functionSelector": "7ecebe00", + "id": 9932, + "mutability": "mutable", + "name": "nonces", + "nameLocation": "1225:6:36", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 9931, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1216:8:36" + }, + "scope": 11247, + "src": "1184:47:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 9930, + "keyType": { + "id": 9928, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1192:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1184:24:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 9929, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1203:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8530 + ], + "constant": false, + "functionSelector": "c45a0155", + "id": 9935, + "mutability": "mutable", + "name": "factory", + "nameLocation": "1269:7:36", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 9934, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1260:8:36" + }, + "scope": 11247, + "src": "1245:31:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9933, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1245:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8535 + ], + "constant": false, + "functionSelector": "0dfe1681", + "id": 9938, + "mutability": "mutable", + "name": "token0", + "nameLocation": "1306:6:36", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 9937, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1297:8:36" + }, + "scope": 11247, + "src": "1282:30:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9936, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1282:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8540 + ], + "constant": false, + "functionSelector": "d21220a7", + "id": 9941, + "mutability": "mutable", + "name": "token1", + "nameLocation": "1342:6:36", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 9940, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1333:8:36" + }, + "scope": 11247, + "src": "1318:30:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9939, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1318:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": false, + "id": 9943, + "mutability": "mutable", + "name": "reserve0", + "nameLocation": "1371:8:36", + "nodeType": "VariableDeclaration", + "scope": 11247, + "src": "1355:24:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 9942, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "1355:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 9945, + "mutability": "mutable", + "name": "reserve1", + "nameLocation": "1467:8:36", + "nodeType": "VariableDeclaration", + "scope": 11247, + "src": "1451:24:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 9944, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "1451:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 9947, + "mutability": "mutable", + "name": "blockTimestampLast", + "nameLocation": "1563:18:36", + "nodeType": "VariableDeclaration", + "scope": 11247, + "src": "1547:34:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 9946, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1547:6:36", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "private" + }, + { + "baseFunctions": [ + 8554 + ], + "constant": false, + "functionSelector": "5909c0d5", + "id": 9950, + "mutability": "mutable", + "name": "price0CumulativeLast", + "nameLocation": "1665:20:36", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 9949, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1656:8:36" + }, + "scope": 11247, + "src": "1644:41:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9948, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1644:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8559 + ], + "constant": false, + "functionSelector": "5a3d5493", + "id": 9953, + "mutability": "mutable", + "name": "price1CumulativeLast", + "nameLocation": "1712:20:36", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 9952, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1703:8:36" + }, + "scope": 11247, + "src": "1691:41:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9951, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1691:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "baseFunctions": [ + 8564 + ], + "constant": false, + "functionSelector": "7464fc3d", + "id": 9956, + "mutability": "mutable", + "name": "kLast", + "nameLocation": "1759:5:36", + "nodeType": "VariableDeclaration", + "overrides": { + "id": 9955, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1750:8:36" + }, + "scope": 11247, + "src": "1738:26:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9954, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1738:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "id": 9959, + "mutability": "mutable", + "name": "unlocked", + "nameLocation": "1864:8:36", + "nodeType": "VariableDeclaration", + "scope": 11247, + "src": "1851:25:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9957, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1851:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "31", + "id": 9958, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1875:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "visibility": "private" + }, + { + "body": { + "id": 9977, + "nodeType": "Block", + "src": "1898:115:36", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9962, + "name": "unlocked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9959, + "src": "1916:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "31", + "id": 9963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1928:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1916:13:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056323a204c4f434b4544", + "id": 9965, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1931:19:36", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4cc87f075f04bdfaccb0dc54ec0b98f9169b1507a7e83ec8ee97e34d6a77db4a", + "typeString": "literal_string \"UniswapV2: LOCKED\"" + }, + "value": "UniswapV2: LOCKED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4cc87f075f04bdfaccb0dc54ec0b98f9169b1507a7e83ec8ee97e34d6a77db4a", + "typeString": "literal_string \"UniswapV2: LOCKED\"" + } + ], + "id": 9961, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1908:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1908:43:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9967, + "nodeType": "ExpressionStatement", + "src": "1908:43:36" + }, + { + "expression": { + "id": 9970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9968, + "name": "unlocked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9959, + "src": "1961:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 9969, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1972:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1961:12:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9971, + "nodeType": "ExpressionStatement", + "src": "1961:12:36" + }, + { + "id": 9972, + "nodeType": "PlaceholderStatement", + "src": "1983:1:36" + }, + { + "expression": { + "id": 9975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9973, + "name": "unlocked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9959, + "src": "1994:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31", + "id": 9974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2005:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1994:12:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9976, + "nodeType": "ExpressionStatement", + "src": "1994:12:36" + } + ] + }, + "id": 9978, + "name": "lock", + "nameLocation": "1891:4:36", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 9960, + "nodeType": "ParameterList", + "parameters": [], + "src": "1895:2:36" + }, + "src": "1882:131:36", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 8549 + ], + "body": { + "id": 10000, + "nodeType": "Block", + "src": "2138:117:36", + "statements": [ + { + "expression": { + "id": 9990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9988, + "name": "_reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9982, + "src": "2148:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 9989, + "name": "reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9943, + "src": "2160:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "src": "2148:20:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "id": 9991, + "nodeType": "ExpressionStatement", + "src": "2148:20:36" + }, + { + "expression": { + "id": 9994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9992, + "name": "_reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9984, + "src": "2178:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 9993, + "name": "reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9945, + "src": "2190:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "src": "2178:20:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "id": 9995, + "nodeType": "ExpressionStatement", + "src": "2178:20:36" + }, + { + "expression": { + "id": 9998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9996, + "name": "_blockTimestampLast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9986, + "src": "2208:19:36", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 9997, + "name": "blockTimestampLast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9947, + "src": "2230:18:36", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "2208:40:36", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 9999, + "nodeType": "ExpressionStatement", + "src": "2208:40:36" + } + ] + }, + "functionSelector": "0902f1ac", + "id": 10001, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getReserves", + "nameLocation": "2028:11:36", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 9980, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2049:8:36" + }, + "parameters": { + "id": 9979, + "nodeType": "ParameterList", + "parameters": [], + "src": "2039:2:36" + }, + "returnParameters": { + "id": 9987, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9982, + "mutability": "mutable", + "name": "_reserve0", + "nameLocation": "2080:9:36", + "nodeType": "VariableDeclaration", + "scope": 10001, + "src": "2072:17:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 9981, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "2072:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9984, + "mutability": "mutable", + "name": "_reserve1", + "nameLocation": "2099:9:36", + "nodeType": "VariableDeclaration", + "scope": 10001, + "src": "2091:17:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 9983, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "2091:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9986, + "mutability": "mutable", + "name": "_blockTimestampLast", + "nameLocation": "2117:19:36", + "nodeType": "VariableDeclaration", + "scope": 10001, + "src": "2110:26:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 9985, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "2110:6:36", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "src": "2071:66:36" + }, + "scope": 11247, + "src": "2019:236:36", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 10043, + "nodeType": "Block", + "src": "2331:214:36", + "statements": [ + { + "assignments": [ + 10011, + 10013 + ], + "declarations": [ + { + "constant": false, + "id": 10011, + "mutability": "mutable", + "name": "success", + "nameLocation": "2347:7:36", + "nodeType": "VariableDeclaration", + "scope": 10043, + "src": "2342:12:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10010, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2342:4:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10013, + "mutability": "mutable", + "name": "data", + "nameLocation": "2369:4:36", + "nodeType": "VariableDeclaration", + "scope": 10043, + "src": "2356:17:36", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 10012, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2356:5:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 10023, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 10018, + "name": "SELECTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9920, + "src": "2411:8:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 10019, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10005, + "src": "2421:2:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10020, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10007, + "src": "2425:5:36", + "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": 10016, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2388:3:36", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 10017, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "2388:22:36", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 10021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2388:43:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 10014, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10003, + "src": "2377:5:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 10015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "src": "2377:10:36", + "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": 10022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2377:55:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2341:91:36" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 10039, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10025, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10011, + "src": "2450:7:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 10037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 10026, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10013, + "src": "2462:4:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 10027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2462:11:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 10028, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2477:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2462:16:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 10032, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10013, + "src": "2493:4:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 10034, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2500:4:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + }, + "typeName": { + "id": 10033, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2500:4:36", + "typeDescriptions": {} + } + } + ], + "id": 10035, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2499:6:36", + "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": 10030, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2482:3:36", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 10031, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "2482:10:36", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10036, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2482:24:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2462:44:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 10038, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2461:46:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2450:57:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056323a205452414e534645525f4641494c4544", + "id": 10040, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2509:28:36", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d8733df98393ec23d211b1de22ecb14bb9ce352e147cbbbe19c11e12e90b7ff2", + "typeString": "literal_string \"UniswapV2: TRANSFER_FAILED\"" + }, + "value": "UniswapV2: TRANSFER_FAILED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d8733df98393ec23d211b1de22ecb14bb9ce352e147cbbbe19c11e12e90b7ff2", + "typeString": "literal_string \"UniswapV2: TRANSFER_FAILED\"" + } + ], + "id": 10024, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2442:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2442:96:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10042, + "nodeType": "ExpressionStatement", + "src": "2442:96:36" + } + ] + }, + "id": 10044, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeTransfer", + "nameLocation": "2270:13:36", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10008, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10003, + "mutability": "mutable", + "name": "token", + "nameLocation": "2292:5:36", + "nodeType": "VariableDeclaration", + "scope": 10044, + "src": "2284:13:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10002, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2284:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10005, + "mutability": "mutable", + "name": "to", + "nameLocation": "2307:2:36", + "nodeType": "VariableDeclaration", + "scope": 10044, + "src": "2299:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10004, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2299:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10007, + "mutability": "mutable", + "name": "value", + "nameLocation": "2316:5:36", + "nodeType": "VariableDeclaration", + "scope": 10044, + "src": "2311:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10006, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2311:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2283:39:36" + }, + "returnParameters": { + "id": 10009, + "nodeType": "ParameterList", + "parameters": [], + "src": "2331:0:36" + }, + "scope": 11247, + "src": "2261:284:36", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 10052, + "nodeType": "Block", + "src": "2987:37:36", + "statements": [ + { + "expression": { + "id": 10050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10047, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9935, + "src": "2997:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 10048, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3007:3:36", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 10049, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3007:10:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2997:20:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 10051, + "nodeType": "ExpressionStatement", + "src": "2997:20:36" + } + ] + }, + "id": 10053, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10045, + "nodeType": "ParameterList", + "parameters": [], + "src": "2984:2:36" + }, + "returnParameters": { + "id": 10046, + "nodeType": "ParameterList", + "parameters": [], + "src": "2987:0:36" + }, + "scope": 11247, + "src": "2973:51:36", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 8606 + ], + "body": { + "id": 10077, + "nodeType": "Block", + "src": "3158:143:36", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10065, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 10062, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3176:3:36", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 10063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3176:10:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 10064, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9935, + "src": "3190:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3176:21:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056323a20464f5242494444454e", + "id": 10066, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3199:22:36", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37", + "typeString": "literal_string \"UniswapV2: FORBIDDEN\"" + }, + "value": "UniswapV2: FORBIDDEN" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37", + "typeString": "literal_string \"UniswapV2: FORBIDDEN\"" + } + ], + "id": 10061, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3168:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3168:54:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10068, + "nodeType": "ExpressionStatement", + "src": "3168:54:36" + }, + { + "expression": { + "id": 10071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10069, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9938, + "src": "3252:6:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 10070, + "name": "_token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10055, + "src": "3261:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3252:16:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 10072, + "nodeType": "ExpressionStatement", + "src": "3252:16:36" + }, + { + "expression": { + "id": 10075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10073, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9941, + "src": "3278:6:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 10074, + "name": "_token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10057, + "src": "3287:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3278:16:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 10076, + "nodeType": "ExpressionStatement", + "src": "3278:16:36" + } + ] + }, + "functionSelector": "485cc955", + "id": 10078, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initialize", + "nameLocation": "3095:10:36", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10059, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3149:8:36" + }, + "parameters": { + "id": 10058, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10055, + "mutability": "mutable", + "name": "_token0", + "nameLocation": "3114:7:36", + "nodeType": "VariableDeclaration", + "scope": 10078, + "src": "3106:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10054, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3106:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10057, + "mutability": "mutable", + "name": "_token1", + "nameLocation": "3131:7:36", + "nodeType": "VariableDeclaration", + "scope": 10078, + "src": "3123:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10056, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3123:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3105:34:36" + }, + "returnParameters": { + "id": 10060, + "nodeType": "ParameterList", + "parameters": [], + "src": "3158:0:36" + }, + "scope": 11247, + "src": "3086:215:36", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 10192, + "nodeType": "Block", + "src": "3476:766:36", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 10104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10096, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10090, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10080, + "src": "3494:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 10093, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3511:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint112_$", + "typeString": "type(uint112)" + }, + "typeName": { + "id": 10092, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "3511:7:36", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint112_$", + "typeString": "type(uint112)" + } + ], + "id": 10091, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "3506:4:36", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10094, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3506:13:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint112", + "typeString": "type(uint112)" + } + }, + "id": 10095, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "max", + "nodeType": "MemberAccess", + "src": "3506:17:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "src": "3494:29:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10097, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10082, + "src": "3527:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 10100, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3544:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint112_$", + "typeString": "type(uint112)" + }, + "typeName": { + "id": 10099, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "3544:7:36", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint112_$", + "typeString": "type(uint112)" + } + ], + "id": 10098, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "3539:4:36", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10101, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3539:13:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint112", + "typeString": "type(uint112)" + } + }, + "id": 10102, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "max", + "nodeType": "MemberAccess", + "src": "3539:17:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "src": "3527:29:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3494:62:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056323a204f564552464c4f57", + "id": 10105, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3558:21:36", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a5d1f08cd66a1a59e841a286c7f2c877311b5d331d2315cd2fe3c5f05e833928", + "typeString": "literal_string \"UniswapV2: OVERFLOW\"" + }, + "value": "UniswapV2: OVERFLOW" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a5d1f08cd66a1a59e841a286c7f2c877311b5d331d2315cd2fe3c5f05e833928", + "typeString": "literal_string \"UniswapV2: OVERFLOW\"" + } + ], + "id": 10089, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3486:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3486:94:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10107, + "nodeType": "ExpressionStatement", + "src": "3486:94:36" + }, + { + "assignments": [ + 10109 + ], + "declarations": [ + { + "constant": false, + "id": 10109, + "mutability": "mutable", + "name": "blockTimestamp", + "nameLocation": "3597:14:36", + "nodeType": "VariableDeclaration", + "scope": 10192, + "src": "3590:21:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 10108, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "3590:6:36", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "id": 10119, + "initialValue": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 10112, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "3621:5:36", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 10113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "3621:15:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_4294967296_by_1", + "typeString": "int_const 4294967296" + }, + "id": 10116, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 10114, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3639:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "3332", + "id": 10115, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3642:2:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "3639:5:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967296_by_1", + "typeString": "int_const 4294967296" + } + }, + "src": "3621:23:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10111, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3614:6:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint32_$", + "typeString": "type(uint32)" + }, + "typeName": { + "id": 10110, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "3614:6:36", + "typeDescriptions": {} + } + }, + "id": 10118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3614:31:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3590:55:36" + }, + { + "assignments": [ + 10121 + ], + "declarations": [ + { + "constant": false, + "id": 10121, + "mutability": "mutable", + "name": "timeElapsed", + "nameLocation": "3662:11:36", + "nodeType": "VariableDeclaration", + "scope": 10192, + "src": "3655:18:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 10120, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "3655:6:36", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "id": 10125, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "id": 10124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10122, + "name": "blockTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10109, + "src": "3676:14:36", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 10123, + "name": "blockTimestampLast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9947, + "src": "3693:18:36", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "3676:35:36", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3655:56:36" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 10136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 10132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "id": 10128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10126, + "name": "timeElapsed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10121, + "src": "3748:11:36", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 10127, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3762:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3748:15:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "id": 10131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10129, + "name": "_reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10084, + "src": "3767:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 10130, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3780:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3767:14:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3748:33:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "id": 10135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10133, + "name": "_reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10086, + "src": "3785:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 10134, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3798:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3785:14:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3748:51:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10168, + "nodeType": "IfStatement", + "src": "3744:332:36", + "trueBody": { + "id": 10167, + "nodeType": "Block", + "src": "3801:275:36", + "statements": [ + { + "expression": { + "id": 10150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10137, + "name": "price0CumulativeLast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9950, + "src": "3875:20:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 10145, + "name": "_reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10084, + "src": "3938:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "expression": { + "arguments": [ + { + "id": 10142, + "name": "_reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10086, + "src": "3921:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "expression": { + "id": 10140, + "name": "UQ112x112", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6939, + "src": "3904:9:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UQ112x112_$6939_$", + "typeString": "type(library UQ112x112)" + } + }, + "id": 10141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": 6919, + "src": "3904:16:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint112_$returns$_t_uint224_$", + "typeString": "function (uint112) pure returns (uint224)" + } + }, + "id": 10143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3904:27:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "id": 10144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "uqdiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 6938, + "src": "3904:33:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint224_$_t_uint112_$returns$_t_uint224_$bound_to$_t_uint224_$", + "typeString": "function (uint224,uint112) pure returns (uint224)" + } + }, + "id": 10146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3904:44:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + ], + "id": 10139, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3899:4:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 10138, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3899:4:36", + "typeDescriptions": {} + } + }, + "id": 10147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3899:50:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 10148, + "name": "timeElapsed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10121, + "src": "3952:11:36", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "3899:64:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3875:88:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10151, + "nodeType": "ExpressionStatement", + "src": "3875:88:36" + }, + { + "expression": { + "id": 10165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10152, + "name": "price1CumulativeLast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9953, + "src": "3977:20:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 10160, + "name": "_reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10086, + "src": "4040:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "expression": { + "arguments": [ + { + "id": 10157, + "name": "_reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10084, + "src": "4023:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "expression": { + "id": 10155, + "name": "UQ112x112", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6939, + "src": "4006:9:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UQ112x112_$6939_$", + "typeString": "type(library UQ112x112)" + } + }, + "id": 10156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": 6919, + "src": "4006:16:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint112_$returns$_t_uint224_$", + "typeString": "function (uint112) pure returns (uint224)" + } + }, + "id": 10158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4006:27:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "id": 10159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "uqdiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 6938, + "src": "4006:33:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint224_$_t_uint112_$returns$_t_uint224_$bound_to$_t_uint224_$", + "typeString": "function (uint224,uint112) pure returns (uint224)" + } + }, + "id": 10161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4006:44:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + ], + "id": 10154, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4001:4:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 10153, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4001:4:36", + "typeDescriptions": {} + } + }, + "id": 10162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4001:50:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 10163, + "name": "timeElapsed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10121, + "src": "4054:11:36", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "4001:64:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3977:88:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10166, + "nodeType": "ExpressionStatement", + "src": "3977:88:36" + } + ] + } + }, + { + "expression": { + "id": 10174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10169, + "name": "reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9943, + "src": "4085:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10172, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10080, + "src": "4104:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10171, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4096:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint112_$", + "typeString": "type(uint112)" + }, + "typeName": { + "id": 10170, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "4096:7:36", + "typeDescriptions": {} + } + }, + "id": 10173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4096:17:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "src": "4085:28:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "id": 10175, + "nodeType": "ExpressionStatement", + "src": "4085:28:36" + }, + { + "expression": { + "id": 10181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10176, + "name": "reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9945, + "src": "4123:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10179, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10082, + "src": "4142:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10178, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4134:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint112_$", + "typeString": "type(uint112)" + }, + "typeName": { + "id": 10177, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "4134:7:36", + "typeDescriptions": {} + } + }, + "id": 10180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4134:17:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "src": "4123:28:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "id": 10182, + "nodeType": "ExpressionStatement", + "src": "4123:28:36" + }, + { + "expression": { + "id": 10185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10183, + "name": "blockTimestampLast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9947, + "src": "4161:18:36", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 10184, + "name": "blockTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10109, + "src": "4182:14:36", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "4161:35:36", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 10186, + "nodeType": "ExpressionStatement", + "src": "4161:35:36" + }, + { + "eventCall": { + "arguments": [ + { + "id": 10188, + "name": "reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9943, + "src": "4216:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + { + "id": 10189, + "name": "reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9945, + "src": "4226:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "id": 10187, + "name": "Sync", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8520, + "src": "4211:4:36", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint112_$_t_uint112_$returns$__$", + "typeString": "function (uint112,uint112)" + } + }, + "id": 10190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4211:24:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10191, + "nodeType": "EmitStatement", + "src": "4206:29:36" + } + ] + }, + "id": 10193, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_update", + "nameLocation": "3392:7:36", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10087, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10080, + "mutability": "mutable", + "name": "balance0", + "nameLocation": "3405:8:36", + "nodeType": "VariableDeclaration", + "scope": 10193, + "src": "3400:13:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10079, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3400:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10082, + "mutability": "mutable", + "name": "balance1", + "nameLocation": "3420:8:36", + "nodeType": "VariableDeclaration", + "scope": 10193, + "src": "3415:13:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10081, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3415:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10084, + "mutability": "mutable", + "name": "_reserve0", + "nameLocation": "3438:9:36", + "nodeType": "VariableDeclaration", + "scope": 10193, + "src": "3430:17:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 10083, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "3430:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10086, + "mutability": "mutable", + "name": "_reserve1", + "nameLocation": "3457:9:36", + "nodeType": "VariableDeclaration", + "scope": 10193, + "src": "3449:17:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 10085, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "3449:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + } + ], + "src": "3399:68:36" + }, + "returnParameters": { + "id": 10088, + "nodeType": "ParameterList", + "parameters": [], + "src": "3476:0:36" + }, + "scope": 11247, + "src": "3383:859:36", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 10300, + "nodeType": "Block", + "src": "4414:734:36", + "statements": [ + { + "assignments": [ + 10203 + ], + "declarations": [ + { + "constant": false, + "id": 10203, + "mutability": "mutable", + "name": "feeTo", + "nameLocation": "4432:5:36", + "nodeType": "VariableDeclaration", + "scope": 10300, + "src": "4424:13:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10202, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4424:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 10209, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 10205, + "name": "factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9935, + "src": "4458:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10204, + "name": "IUniswapV2Factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8365, + "src": "4440:17:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV2Factory_$8365_$", + "typeString": "type(contract IUniswapV2Factory)" + } + }, + "id": 10206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4440:26:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Factory_$8365", + "typeString": "contract IUniswapV2Factory" + } + }, + "id": 10207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "feeTo", + "nodeType": "MemberAccess", + "referencedDeclaration": 8319, + "src": "4440:32:36", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 10208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4440:34:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4424:50:36" + }, + { + "expression": { + "id": 10217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10210, + "name": "feeOn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10200, + "src": "4484:5:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10211, + "name": "feeTo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10203, + "src": "4492:5:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 10214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4509: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": 10213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4501:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10212, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4501:7:36", + "typeDescriptions": {} + } + }, + "id": 10215, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4501:10:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4492:19:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4484:27:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10218, + "nodeType": "ExpressionStatement", + "src": "4484:27:36" + }, + { + "assignments": [ + 10220 + ], + "declarations": [ + { + "constant": false, + "id": 10220, + "mutability": "mutable", + "name": "_kLast", + "nameLocation": "4526:6:36", + "nodeType": "VariableDeclaration", + "scope": 10300, + "src": "4521:11:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10219, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4521:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10222, + "initialValue": { + "id": 10221, + "name": "kLast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9956, + "src": "4535:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4521:19:36" + }, + { + "condition": { + "id": 10223, + "name": "feeOn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10200, + "src": "4569:5:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10290, + "name": "_kLast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10220, + "src": "5095:6:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 10291, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5105:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5095:11:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10298, + "nodeType": "IfStatement", + "src": "5091:51:36", + "trueBody": { + "id": 10297, + "nodeType": "Block", + "src": "5108:34:36", + "statements": [ + { + "expression": { + "id": 10295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10293, + "name": "kLast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9956, + "src": "5122:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 10294, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5130:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5122:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10296, + "nodeType": "ExpressionStatement", + "src": "5122:9:36" + } + ] + } + }, + "id": 10299, + "nodeType": "IfStatement", + "src": "4565:577:36", + "trueBody": { + "id": 10289, + "nodeType": "Block", + "src": "4576:509:36", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10224, + "name": "_kLast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10220, + "src": "4594:6:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 10225, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4604:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4594:11:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10288, + "nodeType": "IfStatement", + "src": "4590:485:36", + "trueBody": { + "id": 10287, + "nodeType": "Block", + "src": "4607:468:36", + "statements": [ + { + "assignments": [ + 10228 + ], + "declarations": [ + { + "constant": false, + "id": 10228, + "mutability": "mutable", + "name": "rootK", + "nameLocation": "4630:5:36", + "nodeType": "VariableDeclaration", + "scope": 10287, + "src": "4625:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10227, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4625:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10239, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 10236, + "name": "_reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10197, + "src": "4668:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "expression": { + "arguments": [ + { + "id": 10233, + "name": "_reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10195, + "src": "4653:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "id": 10232, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4648:4:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 10231, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4648:4:36", + "typeDescriptions": {} + } + }, + "id": 10234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4648:15:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "4648:19:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4648:30:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10229, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6410, + "src": "4638:4:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$6410_$", + "typeString": "type(library Math)" + } + }, + "id": 10230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sqrt", + "nodeType": "MemberAccess", + "referencedDeclaration": 6409, + "src": "4638:9:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 10238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4638:41:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4625:54:36" + }, + { + "assignments": [ + 10241 + ], + "declarations": [ + { + "constant": false, + "id": 10241, + "mutability": "mutable", + "name": "rootKLast", + "nameLocation": "4702:9:36", + "nodeType": "VariableDeclaration", + "scope": 10287, + "src": "4697:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10240, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4697:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10246, + "initialValue": { + "arguments": [ + { + "id": 10244, + "name": "_kLast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10220, + "src": "4724:6:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10242, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6410, + "src": "4714:4:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$6410_$", + "typeString": "type(library Math)" + } + }, + "id": 10243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sqrt", + "nodeType": "MemberAccess", + "referencedDeclaration": 6409, + "src": "4714:9:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 10245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4714:17:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4697:34:36" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10247, + "name": "rootK", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10228, + "src": "4753:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 10248, + "name": "rootKLast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10241, + "src": "4761:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4753:17:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10286, + "nodeType": "IfStatement", + "src": "4749:312:36", + "trueBody": { + "id": 10285, + "nodeType": "Block", + "src": "4772:289:36", + "statements": [ + { + "assignments": [ + 10251 + ], + "declarations": [ + { + "constant": false, + "id": 10251, + "mutability": "mutable", + "name": "numerator", + "nameLocation": "4799:9:36", + "nodeType": "VariableDeclaration", + "scope": 10285, + "src": "4794:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10250, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4794:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10259, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 10256, + "name": "rootKLast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10241, + "src": "4837:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10254, + "name": "rootK", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10228, + "src": "4827:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6745, + "src": "4827:9:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4827:20:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10252, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9891, + "src": "4811:11:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "4811:15:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4811:37:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4794:54:36" + }, + { + "assignments": [ + 10261 + ], + "declarations": [ + { + "constant": false, + "id": 10261, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "4875:11:36", + "nodeType": "VariableDeclaration", + "scope": 10285, + "src": "4870:16:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10260, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4870:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10269, + "initialValue": { + "arguments": [ + { + "id": 10267, + "name": "rootKLast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10241, + "src": "4906:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "hexValue": "35", + "id": 10264, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4899:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + } + ], + "expression": { + "id": 10262, + "name": "rootK", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10228, + "src": "4889:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "4889:9:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4889:12:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 6728, + "src": "4889:16:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4889:27:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4870:46:36" + }, + { + "assignments": [ + 10271 + ], + "declarations": [ + { + "constant": false, + "id": 10271, + "mutability": "mutable", + "name": "liquidity", + "nameLocation": "4943:9:36", + "nodeType": "VariableDeclaration", + "scope": 10285, + "src": "4938:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10270, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4938:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10275, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10272, + "name": "numerator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10251, + "src": "4955:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 10273, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10261, + "src": "4967:11:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4955:23:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4938:40:36" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10276, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10271, + "src": "5004:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 10277, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5016:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5004:13:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10284, + "nodeType": "IfStatement", + "src": "5000:42:36", + "trueBody": { + "expression": { + "arguments": [ + { + "id": 10280, + "name": "feeTo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10203, + "src": "5025:5:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10281, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10271, + "src": "5032:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10279, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10977, + "src": "5019:5:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 10282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5019:23:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10283, + "nodeType": "ExpressionStatement", + "src": "5019:23:36" + } + } + ] + } + } + ] + } + } + ] + } + } + ] + }, + "id": 10301, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mintFee", + "nameLocation": "4338:8:36", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10198, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10195, + "mutability": "mutable", + "name": "_reserve0", + "nameLocation": "4355:9:36", + "nodeType": "VariableDeclaration", + "scope": 10301, + "src": "4347:17:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 10194, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "4347:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10197, + "mutability": "mutable", + "name": "_reserve1", + "nameLocation": "4374:9:36", + "nodeType": "VariableDeclaration", + "scope": 10301, + "src": "4366:17:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 10196, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "4366:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + } + ], + "src": "4346:38:36" + }, + "returnParameters": { + "id": 10201, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10200, + "mutability": "mutable", + "name": "feeOn", + "nameLocation": "4407:5:36", + "nodeType": "VariableDeclaration", + "scope": 10301, + "src": "4402:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10199, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4402:4:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4401:12:36" + }, + "scope": 11247, + "src": "4329:819:36", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "baseFunctions": [ + 8571 + ], + "body": { + "id": 10450, + "nodeType": "Block", + "src": "5331:1155:36", + "statements": [ + { + "assignments": [ + 10312, + 10314, + null + ], + "declarations": [ + { + "constant": false, + "id": 10312, + "mutability": "mutable", + "name": "_reserve0", + "nameLocation": "5350:9:36", + "nodeType": "VariableDeclaration", + "scope": 10450, + "src": "5342:17:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 10311, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "5342:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10314, + "mutability": "mutable", + "name": "_reserve1", + "nameLocation": "5369:9:36", + "nodeType": "VariableDeclaration", + "scope": 10450, + "src": "5361:17:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 10313, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "5361:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + }, + null + ], + "id": 10317, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10315, + "name": "getReserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10001, + "src": "5383:11:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$", + "typeString": "function () view returns (uint112,uint112,uint32)" + } + }, + "id": 10316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5383:13:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$", + "typeString": "tuple(uint112,uint112,uint32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5341:55:36" + }, + { + "assignments": [ + 10319 + ], + "declarations": [ + { + "constant": false, + "id": 10319, + "mutability": "mutable", + "name": "balance0", + "nameLocation": "5426:8:36", + "nodeType": "VariableDeclaration", + "scope": 10450, + "src": "5421:13:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10318, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5421:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10329, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 10326, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "5470:4:36", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + ], + "id": 10325, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5462:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10324, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5462:7:36", + "typeDescriptions": {} + } + }, + "id": 10327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5462:13:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 10321, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9938, + "src": "5444:6:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10320, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5514, + "src": "5437:6:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$5514_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 10322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5437:14:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "id": 10323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 5453, + "src": "5437:24:36", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 10328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5437:39:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5421:55:36" + }, + { + "assignments": [ + 10331 + ], + "declarations": [ + { + "constant": false, + "id": 10331, + "mutability": "mutable", + "name": "balance1", + "nameLocation": "5491:8:36", + "nodeType": "VariableDeclaration", + "scope": 10450, + "src": "5486:13:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10330, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5486:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10341, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 10338, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "5535:4:36", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + ], + "id": 10337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5527:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10336, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5527:7:36", + "typeDescriptions": {} + } + }, + "id": 10339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5527:13:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 10333, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9941, + "src": "5509:6:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10332, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5514, + "src": "5502:6:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$5514_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 10334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5502:14:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "id": 10335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 5453, + "src": "5502:24:36", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 10340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5502:39:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5486:55:36" + }, + { + "assignments": [ + 10343 + ], + "declarations": [ + { + "constant": false, + "id": 10343, + "mutability": "mutable", + "name": "amount0", + "nameLocation": "5556:7:36", + "nodeType": "VariableDeclaration", + "scope": 10450, + "src": "5551:12:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10342, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5551:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10348, + "initialValue": { + "arguments": [ + { + "id": 10346, + "name": "_reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10312, + "src": "5579:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "expression": { + "id": 10344, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10319, + "src": "5566:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6745, + "src": "5566:12:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5566:23:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5551:38:36" + }, + { + "assignments": [ + 10350 + ], + "declarations": [ + { + "constant": false, + "id": 10350, + "mutability": "mutable", + "name": "amount1", + "nameLocation": "5604:7:36", + "nodeType": "VariableDeclaration", + "scope": 10450, + "src": "5599:12:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10349, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5599:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10355, + "initialValue": { + "arguments": [ + { + "id": 10353, + "name": "_reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10314, + "src": "5627:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "expression": { + "id": 10351, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10331, + "src": "5614:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6745, + "src": "5614:12:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5614:23:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5599:38:36" + }, + { + "assignments": [ + 10357 + ], + "declarations": [ + { + "constant": false, + "id": 10357, + "mutability": "mutable", + "name": "feeOn", + "nameLocation": "5652:5:36", + "nodeType": "VariableDeclaration", + "scope": 10450, + "src": "5647:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10356, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5647:4:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 10362, + "initialValue": { + "arguments": [ + { + "id": 10359, + "name": "_reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10312, + "src": "5669:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + { + "id": 10360, + "name": "_reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10314, + "src": "5680:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "id": 10358, + "name": "_mintFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10301, + "src": "5660:8:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint112_$_t_uint112_$returns$_t_bool_$", + "typeString": "function (uint112,uint112) returns (bool)" + } + }, + "id": 10361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5660:30:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5647:43:36" + }, + { + "assignments": [ + 10364 + ], + "declarations": [ + { + "constant": false, + "id": 10364, + "mutability": "mutable", + "name": "_totalSupply", + "nameLocation": "5705:12:36", + "nodeType": "VariableDeclaration", + "scope": 10450, + "src": "5700:17:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10363, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5700:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10366, + "initialValue": { + "id": 10365, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9891, + "src": "5720:11:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5700:31:36" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10367, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10364, + "src": "5824:12:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 10368, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5840:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5824:17:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 10410, + "nodeType": "Block", + "src": "6044:123:36", + "statements": [ + { + "expression": { + "id": 10408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10392, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10309, + "src": "6058:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 10397, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10364, + "src": "6091:12:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10395, + "name": "amount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10343, + "src": "6079:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "6079:11:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6079:25:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 10399, + "name": "_reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10312, + "src": "6107:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "src": "6079:37:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 10403, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10364, + "src": "6130:12:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10401, + "name": "amount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10350, + "src": "6118:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "6118:11:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6118:25:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 10405, + "name": "_reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10314, + "src": "6146:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "src": "6118:37:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10393, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6410, + "src": "6070:4:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$6410_$", + "typeString": "type(library Math)" + } + }, + "id": 10394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "min", + "nodeType": "MemberAccess", + "referencedDeclaration": 6322, + "src": "6070:8:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6070:86:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6058:98:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10409, + "nodeType": "ExpressionStatement", + "src": "6058:98:36" + } + ] + }, + "id": 10411, + "nodeType": "IfStatement", + "src": "5820:347:36", + "trueBody": { + "id": 10391, + "nodeType": "Block", + "src": "5843:195:36", + "statements": [ + { + "expression": { + "id": 10381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10370, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10309, + "src": "5857:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10379, + "name": "MINIMUM_LIQUIDITY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9909, + "src": "5905:17:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 10375, + "name": "amount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10350, + "src": "5891:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10373, + "name": "amount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10343, + "src": "5879:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "5879:11:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5879:20:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10371, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6410, + "src": "5869:4:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$6410_$", + "typeString": "type(library Math)" + } + }, + "id": 10372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sqrt", + "nodeType": "MemberAccess", + "referencedDeclaration": 6409, + "src": "5869:9:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 10377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5869:31:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6745, + "src": "5869:35:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5869:54:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5857:66:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10382, + "nodeType": "ExpressionStatement", + "src": "5857:66:36" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 10386, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5950: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": 10385, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5942:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10384, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5942:7:36", + "typeDescriptions": {} + } + }, + "id": 10387, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5942:10:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10388, + "name": "MINIMUM_LIQUIDITY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9909, + "src": "5954:17:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10383, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10977, + "src": "5936:5:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 10389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5936:36:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10390, + "nodeType": "ExpressionStatement", + "src": "5936:36:36" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10413, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10309, + "src": "6185:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 10414, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6197:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6185:13:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544", + "id": 10416, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6200:42:36", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6591c9f5bf1fefaad109b76a20e25c857b696080c952191f86220f001a83663e", + "typeString": "literal_string \"UniswapV2: INSUFFICIENT_LIQUIDITY_MINTED\"" + }, + "value": "UniswapV2: INSUFFICIENT_LIQUIDITY_MINTED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6591c9f5bf1fefaad109b76a20e25c857b696080c952191f86220f001a83663e", + "typeString": "literal_string \"UniswapV2: INSUFFICIENT_LIQUIDITY_MINTED\"" + } + ], + "id": 10412, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6177:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6177:66:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10418, + "nodeType": "ExpressionStatement", + "src": "6177:66:36" + }, + { + "expression": { + "arguments": [ + { + "id": 10420, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10303, + "src": "6259:2:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10421, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10309, + "src": "6263:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10419, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10977, + "src": "6253:5:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 10422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6253:20:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10423, + "nodeType": "ExpressionStatement", + "src": "6253:20:36" + }, + { + "expression": { + "arguments": [ + { + "id": 10425, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10319, + "src": "6292:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10426, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10331, + "src": "6302:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10427, + "name": "_reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10312, + "src": "6312:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + { + "id": 10428, + "name": "_reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10314, + "src": "6323:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "id": 10424, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10193, + "src": "6284:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$returns$__$", + "typeString": "function (uint256,uint256,uint112,uint112)" + } + }, + "id": 10429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6284:49:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10430, + "nodeType": "ExpressionStatement", + "src": "6284:49:36" + }, + { + "condition": { + "id": 10431, + "name": "feeOn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10357, + "src": "6347:5:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10442, + "nodeType": "IfStatement", + "src": "6343:47:36", + "trueBody": { + "expression": { + "id": 10440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10432, + "name": "kLast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9956, + "src": "6354:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10438, + "name": "reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9945, + "src": "6381:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "expression": { + "arguments": [ + { + "id": 10435, + "name": "reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9943, + "src": "6367:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "id": 10434, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6362:4:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 10433, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6362:4:36", + "typeDescriptions": {} + } + }, + "id": 10436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6362:14:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "6362:18:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6362:28:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6354:36:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10441, + "nodeType": "ExpressionStatement", + "src": "6354:36:36" + } + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 10444, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "6450:3:36", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 10445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "6450:10:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10446, + "name": "amount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10343, + "src": "6462:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10447, + "name": "amount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10350, + "src": "6471:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10443, + "name": "Mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8490, + "src": "6445:4:36", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256)" + } + }, + "id": 10448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6445:34:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10449, + "nodeType": "EmitStatement", + "src": "6440:39:36" + } + ] + }, + "functionSelector": "6a627842", + "id": 10451, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 10307, + "kind": "modifierInvocation", + "modifierName": { + "id": 10306, + "name": "lock", + "nodeType": "IdentifierPath", + "referencedDeclaration": 9978, + "src": "5301:4:36" + }, + "nodeType": "ModifierInvocation", + "src": "5301:4:36" + } + ], + "name": "mint", + "nameLocation": "5266:4:36", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10305, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5292:8:36" + }, + "parameters": { + "id": 10304, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10303, + "mutability": "mutable", + "name": "to", + "nameLocation": "5279:2:36", + "nodeType": "VariableDeclaration", + "scope": 10451, + "src": "5271:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10302, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5271:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5270:12:36" + }, + "returnParameters": { + "id": 10310, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10309, + "mutability": "mutable", + "name": "liquidity", + "nameLocation": "5320:9:36", + "nodeType": "VariableDeclaration", + "scope": 10451, + "src": "5315:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10308, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5315:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5314:16:36" + }, + "scope": 11247, + "src": "5257:1229:36", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 8580 + ], + "body": { + "id": 10622, + "nodeType": "Block", + "src": "6681:1367:36", + "statements": [ + { + "assignments": [ + 10464, + 10466, + null + ], + "declarations": [ + { + "constant": false, + "id": 10464, + "mutability": "mutable", + "name": "_reserve0", + "nameLocation": "6700:9:36", + "nodeType": "VariableDeclaration", + "scope": 10622, + "src": "6692:17:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 10463, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "6692:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10466, + "mutability": "mutable", + "name": "_reserve1", + "nameLocation": "6719:9:36", + "nodeType": "VariableDeclaration", + "scope": 10622, + "src": "6711:17:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 10465, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "6711:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + }, + null + ], + "id": 10469, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10467, + "name": "getReserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10001, + "src": "6733:11:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$", + "typeString": "function () view returns (uint112,uint112,uint32)" + } + }, + "id": 10468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6733:13:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$", + "typeString": "tuple(uint112,uint112,uint32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6691:55:36" + }, + { + "assignments": [ + 10471 + ], + "declarations": [ + { + "constant": false, + "id": 10471, + "mutability": "mutable", + "name": "_token0", + "nameLocation": "6779:7:36", + "nodeType": "VariableDeclaration", + "scope": 10622, + "src": "6771:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10470, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6771:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 10473, + "initialValue": { + "id": 10472, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9938, + "src": "6789:6:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6771:24:36" + }, + { + "assignments": [ + 10475 + ], + "declarations": [ + { + "constant": false, + "id": 10475, + "mutability": "mutable", + "name": "_token1", + "nameLocation": "6859:7:36", + "nodeType": "VariableDeclaration", + "scope": 10622, + "src": "6851:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10474, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6851:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 10477, + "initialValue": { + "id": 10476, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9941, + "src": "6869:6:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6851:24:36" + }, + { + "assignments": [ + 10479 + ], + "declarations": [ + { + "constant": false, + "id": 10479, + "mutability": "mutable", + "name": "balance0", + "nameLocation": "6936:8:36", + "nodeType": "VariableDeclaration", + "scope": 10622, + "src": "6931:13:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10478, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6931:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10489, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 10486, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "6981:4:36", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + ], + "id": 10485, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6973:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10484, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6973:7:36", + "typeDescriptions": {} + } + }, + "id": 10487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6973:13:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 10481, + "name": "_token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10471, + "src": "6954:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10480, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5514, + "src": "6947:6:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$5514_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 10482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6947:15:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "id": 10483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 5453, + "src": "6947:25:36", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 10488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6947:40:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6931:56:36" + }, + { + "assignments": [ + 10491 + ], + "declarations": [ + { + "constant": false, + "id": 10491, + "mutability": "mutable", + "name": "balance1", + "nameLocation": "7002:8:36", + "nodeType": "VariableDeclaration", + "scope": 10622, + "src": "6997:13:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10490, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6997:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10501, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 10498, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "7047:4:36", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + ], + "id": 10497, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7039:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10496, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7039:7:36", + "typeDescriptions": {} + } + }, + "id": 10499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7039:13:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 10493, + "name": "_token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10475, + "src": "7020:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10492, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5514, + "src": "7013:6:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$5514_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 10494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7013:15:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "id": 10495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 5453, + "src": "7013:25:36", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 10500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7013:40:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6997:56:36" + }, + { + "assignments": [ + 10503 + ], + "declarations": [ + { + "constant": false, + "id": 10503, + "mutability": "mutable", + "name": "liquidity", + "nameLocation": "7068:9:36", + "nodeType": "VariableDeclaration", + "scope": 10622, + "src": "7063:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10502, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7063:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10510, + "initialValue": { + "baseExpression": { + "id": 10504, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9896, + "src": "7080:9:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 10509, + "indexExpression": { + "arguments": [ + { + "id": 10507, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "7098:4:36", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + ], + "id": 10506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7090:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10505, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7090:7:36", + "typeDescriptions": {} + } + }, + "id": 10508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7090:13:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7080:24:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7063:41:36" + }, + { + "assignments": [ + 10512 + ], + "declarations": [ + { + "constant": false, + "id": 10512, + "mutability": "mutable", + "name": "feeOn", + "nameLocation": "7120:5:36", + "nodeType": "VariableDeclaration", + "scope": 10622, + "src": "7115:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10511, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7115:4:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 10517, + "initialValue": { + "arguments": [ + { + "id": 10514, + "name": "_reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10464, + "src": "7137:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + { + "id": 10515, + "name": "_reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10466, + "src": "7148:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "id": 10513, + "name": "_mintFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10301, + "src": "7128:8:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint112_$_t_uint112_$returns$_t_bool_$", + "typeString": "function (uint112,uint112) returns (bool)" + } + }, + "id": 10516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7128:30:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7115:43:36" + }, + { + "assignments": [ + 10519 + ], + "declarations": [ + { + "constant": false, + "id": 10519, + "mutability": "mutable", + "name": "_totalSupply", + "nameLocation": "7173:12:36", + "nodeType": "VariableDeclaration", + "scope": 10622, + "src": "7168:17:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10518, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7168:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10521, + "initialValue": { + "id": 10520, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9891, + "src": "7188:11:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7168:31:36" + }, + { + "expression": { + "id": 10529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10522, + "name": "amount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10459, + "src": "7287:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 10525, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10479, + "src": "7311:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10523, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10503, + "src": "7297:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "7297:13:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7297:23:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 10527, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10519, + "src": "7323:12:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7297:38:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7287:48:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10530, + "nodeType": "ExpressionStatement", + "src": "7287:48:36" + }, + { + "expression": { + "id": 10538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10531, + "name": "amount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10461, + "src": "7393:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 10534, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10491, + "src": "7417:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10532, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10503, + "src": "7403:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "7403:13:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7403:23:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 10536, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10519, + "src": "7429:12:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7403:38:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7393:48:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10539, + "nodeType": "ExpressionStatement", + "src": "7393:48:36" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 10547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10541, + "name": "amount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10459, + "src": "7507:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 10542, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7517:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7507:11:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10544, + "name": "amount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10461, + "src": "7522:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 10545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7532:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7522:11:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7507:26:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544", + "id": 10548, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7535:42:36", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_57ebfb4dd8b5082cdba0f23c17077e3b0ecb9782a51e0e9a15e9bc8c4b30c562", + "typeString": "literal_string \"UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED\"" + }, + "value": "UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_57ebfb4dd8b5082cdba0f23c17077e3b0ecb9782a51e0e9a15e9bc8c4b30c562", + "typeString": "literal_string \"UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED\"" + } + ], + "id": 10540, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7499:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7499:79:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10550, + "nodeType": "ExpressionStatement", + "src": "7499:79:36" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 10554, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "7602:4:36", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + ], + "id": 10553, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7594:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10552, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7594:7:36", + "typeDescriptions": {} + } + }, + "id": 10555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7594:13:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10556, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10503, + "src": "7609:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10551, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11012, + "src": "7588:5:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 10557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7588:31:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10558, + "nodeType": "ExpressionStatement", + "src": "7588:31:36" + }, + { + "expression": { + "arguments": [ + { + "id": 10560, + "name": "_token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10471, + "src": "7643:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10561, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10453, + "src": "7652:2:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10562, + "name": "amount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10459, + "src": "7656:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10559, + "name": "_safeTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10044, + "src": "7629:13:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 10563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7629:35:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10564, + "nodeType": "ExpressionStatement", + "src": "7629:35:36" + }, + { + "expression": { + "arguments": [ + { + "id": 10566, + "name": "_token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10475, + "src": "7688:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10567, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10453, + "src": "7697:2:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10568, + "name": "amount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10461, + "src": "7701:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10565, + "name": "_safeTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10044, + "src": "7674:13:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 10569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7674:35:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10570, + "nodeType": "ExpressionStatement", + "src": "7674:35:36" + }, + { + "expression": { + "id": 10581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10571, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10479, + "src": "7719:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 10578, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "7764:4:36", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + ], + "id": 10577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7756:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10576, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7756:7:36", + "typeDescriptions": {} + } + }, + "id": 10579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7756:13:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 10573, + "name": "_token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10471, + "src": "7737:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10572, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5514, + "src": "7730:6:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$5514_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 10574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7730:15:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "id": 10575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 5453, + "src": "7730:25:36", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 10580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7730:40:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7719:51:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10582, + "nodeType": "ExpressionStatement", + "src": "7719:51:36" + }, + { + "expression": { + "id": 10593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10583, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10491, + "src": "7780:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 10590, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "7825:4:36", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + ], + "id": 10589, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7817:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10588, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7817:7:36", + "typeDescriptions": {} + } + }, + "id": 10591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7817:13:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 10585, + "name": "_token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10475, + "src": "7798:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10584, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5514, + "src": "7791:6:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$5514_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 10586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7791:15:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "id": 10587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 5453, + "src": "7791:25:36", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 10592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7791:40:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7780:51:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10594, + "nodeType": "ExpressionStatement", + "src": "7780:51:36" + }, + { + "expression": { + "arguments": [ + { + "id": 10596, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10479, + "src": "7850:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10597, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10491, + "src": "7860:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10598, + "name": "_reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10464, + "src": "7870:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + { + "id": 10599, + "name": "_reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10466, + "src": "7881:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "id": 10595, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10193, + "src": "7842:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$returns$__$", + "typeString": "function (uint256,uint256,uint112,uint112)" + } + }, + "id": 10600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7842:49:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10601, + "nodeType": "ExpressionStatement", + "src": "7842:49:36" + }, + { + "condition": { + "id": 10602, + "name": "feeOn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10512, + "src": "7905:5:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10613, + "nodeType": "IfStatement", + "src": "7901:47:36", + "trueBody": { + "expression": { + "id": 10611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10603, + "name": "kLast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9956, + "src": "7912:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10609, + "name": "reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9945, + "src": "7939:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "expression": { + "arguments": [ + { + "id": 10606, + "name": "reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9943, + "src": "7925:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "id": 10605, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7920:4:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 10604, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7920:4:36", + "typeDescriptions": {} + } + }, + "id": 10607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7920:14:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "7920:18:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7920:28:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7912:36:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10612, + "nodeType": "ExpressionStatement", + "src": "7912:36:36" + } + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 10615, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "8008:3:36", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 10616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "8008:10:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10617, + "name": "amount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10459, + "src": "8020:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10618, + "name": "amount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10461, + "src": "8029:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10619, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10453, + "src": "8038:2:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10614, + "name": "Burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8500, + "src": "8003:4:36", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (address,uint256,uint256,address)" + } + }, + "id": 10620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8003:38:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10621, + "nodeType": "EmitStatement", + "src": "7998:43:36" + } + ] + }, + "functionSelector": "89afcb44", + "id": 10623, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 10457, + "kind": "modifierInvocation", + "modifierName": { + "id": 10456, + "name": "lock", + "nodeType": "IdentifierPath", + "referencedDeclaration": 9978, + "src": "6639:4:36" + }, + "nodeType": "ModifierInvocation", + "src": "6639:4:36" + } + ], + "name": "burn", + "nameLocation": "6604:4:36", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10455, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6630:8:36" + }, + "parameters": { + "id": 10454, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10453, + "mutability": "mutable", + "name": "to", + "nameLocation": "6617:2:36", + "nodeType": "VariableDeclaration", + "scope": 10623, + "src": "6609:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10452, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6609:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6608:12:36" + }, + "returnParameters": { + "id": 10462, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10459, + "mutability": "mutable", + "name": "amount0", + "nameLocation": "6658:7:36", + "nodeType": "VariableDeclaration", + "scope": 10623, + "src": "6653:12:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10458, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6653:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10461, + "mutability": "mutable", + "name": "amount1", + "nameLocation": "6672:7:36", + "nodeType": "VariableDeclaration", + "scope": 10623, + "src": "6667:12:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10460, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6667:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6652:28:36" + }, + "scope": 11247, + "src": "6595:1453:36", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 8591 + ], + "body": { + "id": 10860, + "nodeType": "Block", + "src": "8261:1766:36", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 10644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10638, + "name": "amount0Out", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10625, + "src": "8279:10:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 10639, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8292:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8279:14:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10641, + "name": "amount1Out", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10627, + "src": "8297:10:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 10642, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8310:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8297:14:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8279:32:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54", + "id": 10645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8313:39:36", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_05339493da7e2cbe77e17beadf6b91132eb307939495f5f1797bf88d95539e83", + "typeString": "literal_string \"UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT\"" + }, + "value": "UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_05339493da7e2cbe77e17beadf6b91132eb307939495f5f1797bf88d95539e83", + "typeString": "literal_string \"UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT\"" + } + ], + "id": 10637, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8271:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8271:82:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10647, + "nodeType": "ExpressionStatement", + "src": "8271:82:36" + }, + { + "assignments": [ + 10649, + 10651, + null + ], + "declarations": [ + { + "constant": false, + "id": 10649, + "mutability": "mutable", + "name": "_reserve0", + "nameLocation": "8372:9:36", + "nodeType": "VariableDeclaration", + "scope": 10860, + "src": "8364:17:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 10648, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "8364:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10651, + "mutability": "mutable", + "name": "_reserve1", + "nameLocation": "8391:9:36", + "nodeType": "VariableDeclaration", + "scope": 10860, + "src": "8383:17:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 10650, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "8383:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + }, + null + ], + "id": 10654, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10652, + "name": "getReserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10001, + "src": "8405:11:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$", + "typeString": "function () view returns (uint112,uint112,uint32)" + } + }, + "id": 10653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8405:13:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$", + "typeString": "tuple(uint112,uint112,uint32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8363:55:36" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 10662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10656, + "name": "amount0Out", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10625, + "src": "8451:10:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 10657, + "name": "_reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10649, + "src": "8464:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "src": "8451:22:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10659, + "name": "amount1Out", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10627, + "src": "8477:10:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 10660, + "name": "_reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10651, + "src": "8490:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "src": "8477:22:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8451:48:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056323a20494e53554646494349454e545f4c4951554944495459", + "id": 10663, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8501:35:36", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3f354ef449b2a9b081220ce21f57691008110b653edc191d8288e60cef58bb5f", + "typeString": "literal_string \"UniswapV2: INSUFFICIENT_LIQUIDITY\"" + }, + "value": "UniswapV2: INSUFFICIENT_LIQUIDITY" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3f354ef449b2a9b081220ce21f57691008110b653edc191d8288e60cef58bb5f", + "typeString": "literal_string \"UniswapV2: INSUFFICIENT_LIQUIDITY\"" + } + ], + "id": 10655, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8443:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8443:94:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10665, + "nodeType": "ExpressionStatement", + "src": "8443:94:36" + }, + { + "assignments": [ + 10667 + ], + "declarations": [ + { + "constant": false, + "id": 10667, + "mutability": "mutable", + "name": "balance0", + "nameLocation": "8553:8:36", + "nodeType": "VariableDeclaration", + "scope": 10860, + "src": "8548:13:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10666, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8548:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10668, + "nodeType": "VariableDeclarationStatement", + "src": "8548:13:36" + }, + { + "assignments": [ + 10670 + ], + "declarations": [ + { + "constant": false, + "id": 10670, + "mutability": "mutable", + "name": "balance1", + "nameLocation": "8576:8:36", + "nodeType": "VariableDeclaration", + "scope": 10860, + "src": "8571:13:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10669, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8571:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10671, + "nodeType": "VariableDeclarationStatement", + "src": "8571:13:36" + }, + { + "id": 10751, + "nodeType": "Block", + "src": "8594:641:36", + "statements": [ + { + "assignments": [ + 10673 + ], + "declarations": [ + { + "constant": false, + "id": 10673, + "mutability": "mutable", + "name": "_token0", + "nameLocation": "8667:7:36", + "nodeType": "VariableDeclaration", + "scope": 10751, + "src": "8659:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10672, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8659:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 10675, + "initialValue": { + "id": 10674, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9938, + "src": "8677:6:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8659:24:36" + }, + { + "assignments": [ + 10677 + ], + "declarations": [ + { + "constant": false, + "id": 10677, + "mutability": "mutable", + "name": "_token1", + "nameLocation": "8701:7:36", + "nodeType": "VariableDeclaration", + "scope": 10751, + "src": "8693:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10676, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8693:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 10679, + "initialValue": { + "id": 10678, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9941, + "src": "8711:6:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8693:24:36" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 10687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10681, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10629, + "src": "8735:2:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 10682, + "name": "_token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10673, + "src": "8741:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8735:13:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10684, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10629, + "src": "8752:2:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 10685, + "name": "_token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10677, + "src": "8758:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8752:13:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8735:30:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056323a20494e56414c49445f544f", + "id": 10688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8767:23:36", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_25d395026e6e4dd4e9808c7d6d3dd1f45abaf4874ae71f7161fff58de03154d3", + "typeString": "literal_string \"UniswapV2: INVALID_TO\"" + }, + "value": "UniswapV2: INVALID_TO" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_25d395026e6e4dd4e9808c7d6d3dd1f45abaf4874ae71f7161fff58de03154d3", + "typeString": "literal_string \"UniswapV2: INVALID_TO\"" + } + ], + "id": 10680, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8727:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8727:64:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10690, + "nodeType": "ExpressionStatement", + "src": "8727:64:36" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10691, + "name": "amount0Out", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10625, + "src": "8805:10:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 10692, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8818:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8805:14:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10700, + "nodeType": "IfStatement", + "src": "8801:58:36", + "trueBody": { + "expression": { + "arguments": [ + { + "id": 10695, + "name": "_token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10673, + "src": "8835:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10696, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10629, + "src": "8844:2:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10697, + "name": "amount0Out", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10625, + "src": "8848:10:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10694, + "name": "_safeTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10044, + "src": "8821:13:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 10698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8821:38:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10699, + "nodeType": "ExpressionStatement", + "src": "8821:38:36" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10701, + "name": "amount1Out", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10627, + "src": "8907:10:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 10702, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8920:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8907:14:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10710, + "nodeType": "IfStatement", + "src": "8903:58:36", + "trueBody": { + "expression": { + "arguments": [ + { + "id": 10705, + "name": "_token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10677, + "src": "8937:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10706, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10629, + "src": "8946:2:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10707, + "name": "amount1Out", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10627, + "src": "8950:10:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10704, + "name": "_safeTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10044, + "src": "8923:13:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 10708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8923:38:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10709, + "nodeType": "ExpressionStatement", + "src": "8923:38:36" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 10711, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10631, + "src": "9009:4:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 10712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "9009:11:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 10713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9023:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9009:15:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10726, + "nodeType": "IfStatement", + "src": "9005:97:36", + "trueBody": { + "expression": { + "arguments": [ + { + "expression": { + "id": 10719, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "9061:3:36", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 10720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "9061:10:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10721, + "name": "amount0Out", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10625, + "src": "9073:10:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10722, + "name": "amount1Out", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10627, + "src": "9085:10:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10723, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10631, + "src": "9097:4:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "expression": { + "arguments": [ + { + "id": 10716, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10629, + "src": "9043:2:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10715, + "name": "IUniswapV2Callee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8184, + "src": "9026:16:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV2Callee_$8184_$", + "typeString": "type(contract IUniswapV2Callee)" + } + }, + "id": 10717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9026:20:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Callee_$8184", + "typeString": "contract IUniswapV2Callee" + } + }, + "id": 10718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "uniswapV2Call", + "nodeType": "MemberAccess", + "referencedDeclaration": 8183, + "src": "9026:34:36", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,uint256,bytes memory) external" + } + }, + "id": 10724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9026:76:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10725, + "nodeType": "ExpressionStatement", + "src": "9026:76:36" + } + }, + { + "expression": { + "id": 10737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10727, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10667, + "src": "9112:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 10734, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "9157:4:36", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + ], + "id": 10733, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9149:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10732, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9149:7:36", + "typeDescriptions": {} + } + }, + "id": 10735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9149:13:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 10729, + "name": "_token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10673, + "src": "9130:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10728, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5514, + "src": "9123:6:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$5514_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 10730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9123:15:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "id": 10731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 5453, + "src": "9123:25:36", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 10736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9123:40:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9112:51:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10738, + "nodeType": "ExpressionStatement", + "src": "9112:51:36" + }, + { + "expression": { + "id": 10749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10739, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10670, + "src": "9173:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 10746, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "9218:4:36", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + ], + "id": 10745, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9210:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10744, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9210:7:36", + "typeDescriptions": {} + } + }, + "id": 10747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9210:13:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 10741, + "name": "_token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10677, + "src": "9191:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10740, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5514, + "src": "9184:6:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$5514_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 10742, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9184:15:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "id": 10743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 5453, + "src": "9184:25:36", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 10748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9184:40:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9173:51:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10750, + "nodeType": "ExpressionStatement", + "src": "9173:51:36" + } + ] + }, + { + "assignments": [ + 10753 + ], + "declarations": [ + { + "constant": false, + "id": 10753, + "mutability": "mutable", + "name": "amount0In", + "nameLocation": "9249:9:36", + "nodeType": "VariableDeclaration", + "scope": 10860, + "src": "9244:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10752, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9244:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10767, + "initialValue": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10754, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10667, + "src": "9261:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10755, + "name": "_reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10649, + "src": "9272:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 10756, + "name": "amount0Out", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10625, + "src": "9284:10:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9272:22:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9261:33:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "hexValue": "30", + "id": 10765, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9335:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "id": 10766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "9261:75:36", + "trueExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10759, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10667, + "src": "9297:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10760, + "name": "_reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10649, + "src": "9309:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 10761, + "name": "amount0Out", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10625, + "src": "9321:10:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9309:22:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 10763, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9308:24:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9297:35:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9244:92:36" + }, + { + "assignments": [ + 10769 + ], + "declarations": [ + { + "constant": false, + "id": 10769, + "mutability": "mutable", + "name": "amount1In", + "nameLocation": "9351:9:36", + "nodeType": "VariableDeclaration", + "scope": 10860, + "src": "9346:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10768, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9346:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10783, + "initialValue": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10770, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10670, + "src": "9363:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10773, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10771, + "name": "_reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10651, + "src": "9374:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 10772, + "name": "amount1Out", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10627, + "src": "9386:10:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9374:22:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9363:33:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "hexValue": "30", + "id": 10781, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9437:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "id": 10782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "9363:75:36", + "trueExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10775, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10670, + "src": "9399:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10776, + "name": "_reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10651, + "src": "9411:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 10777, + "name": "amount1Out", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10627, + "src": "9423:10:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9411:22:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 10779, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9410:24:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9399:35:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9346:92:36" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 10791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10785, + "name": "amount0In", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10753, + "src": "9456:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 10786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9468:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9456:13:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10788, + "name": "amount1In", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10769, + "src": "9473:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 10789, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9485:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9473:13:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9456:30:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54", + "id": 10792, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9488:38:36", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_10e2efc32d8a31d3b2c11a545b3ed09c2dbabc58ef6de4033929d0002e425b67", + "typeString": "literal_string \"UniswapV2: INSUFFICIENT_INPUT_AMOUNT\"" + }, + "value": "UniswapV2: INSUFFICIENT_INPUT_AMOUNT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_10e2efc32d8a31d3b2c11a545b3ed09c2dbabc58ef6de4033929d0002e425b67", + "typeString": "literal_string \"UniswapV2: INSUFFICIENT_INPUT_AMOUNT\"" + } + ], + "id": 10784, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9448:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9448:79:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10794, + "nodeType": "ExpressionStatement", + "src": "9448:79:36" + }, + { + "id": 10842, + "nodeType": "Block", + "src": "9537:343:36", + "statements": [ + { + "assignments": [ + 10796 + ], + "declarations": [ + { + "constant": false, + "id": 10796, + "mutability": "mutable", + "name": "balance0Adjusted", + "nameLocation": "9616:16:36", + "nodeType": "VariableDeclaration", + "scope": 10842, + "src": "9611:21:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10795, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9611:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10807, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "33", + "id": 10804, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9672:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + } + ], + "expression": { + "id": 10802, + "name": "amount0In", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10753, + "src": "9658:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "9658:13:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9658:16:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "hexValue": "31303030", + "id": 10799, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9648:4:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + }, + "value": "1000" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + } + ], + "expression": { + "id": 10797, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10667, + "src": "9635:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "9635:12:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9635:18:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6745, + "src": "9635:22:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9635:40:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9611:64:36" + }, + { + "assignments": [ + 10809 + ], + "declarations": [ + { + "constant": false, + "id": 10809, + "mutability": "mutable", + "name": "balance1Adjusted", + "nameLocation": "9690:16:36", + "nodeType": "VariableDeclaration", + "scope": 10842, + "src": "9685:21:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10808, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9685:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10820, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "33", + "id": 10817, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9746:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + } + ], + "expression": { + "id": 10815, + "name": "amount1In", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10769, + "src": "9732:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "9732:13:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9732:16:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "hexValue": "31303030", + "id": 10812, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9722:4:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + }, + "value": "1000" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + } + ], + "expression": { + "id": 10810, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10670, + "src": "9709:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "9709:12:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9709:18:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6745, + "src": "9709:22:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9709:40:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9685:64:36" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 10824, + "name": "balance1Adjusted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10809, + "src": "9788:16:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10822, + "name": "balance0Adjusted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10796, + "src": "9767:16:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "9767:20:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10825, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9767:38:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "id": 10836, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31303030", + "id": 10834, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9844:4:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + }, + "value": "1000" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "32", + "id": 10835, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9850:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "9844:7:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + ], + "expression": { + "arguments": [ + { + "id": 10831, + "name": "_reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10651, + "src": "9829:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "expression": { + "arguments": [ + { + "id": 10828, + "name": "_reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10649, + "src": "9814:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "id": 10827, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9809:4:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 10826, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9809:4:36", + "typeDescriptions": {} + } + }, + "id": 10829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9809:15:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "9809:19:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9809:30:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 6808, + "src": "9809:34:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10837, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9809:43:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9767:85:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056323a204b", + "id": 10839, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9854:14:36", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_50b159bbb975f5448705db79eafd212ba91c20fe5a110a13759239545d3339af", + "typeString": "literal_string \"UniswapV2: K\"" + }, + "value": "UniswapV2: K" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_50b159bbb975f5448705db79eafd212ba91c20fe5a110a13759239545d3339af", + "typeString": "literal_string \"UniswapV2: K\"" + } + ], + "id": 10821, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9759:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9759:110:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10841, + "nodeType": "ExpressionStatement", + "src": "9759:110:36" + } + ] + }, + { + "expression": { + "arguments": [ + { + "id": 10844, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10667, + "src": "9898:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10845, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10670, + "src": "9908:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10846, + "name": "_reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10649, + "src": "9918:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + { + "id": 10847, + "name": "_reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10651, + "src": "9929:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "id": 10843, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10193, + "src": "9890:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$returns$__$", + "typeString": "function (uint256,uint256,uint112,uint112)" + } + }, + "id": 10848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9890:49:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10849, + "nodeType": "ExpressionStatement", + "src": "9890:49:36" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 10851, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "9959:3:36", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 10852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "9959:10:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10853, + "name": "amount0In", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10753, + "src": "9971:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10854, + "name": "amount1In", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10769, + "src": "9982:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10855, + "name": "amount0Out", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10625, + "src": "9993:10:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10856, + "name": "amount1Out", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10627, + "src": "10005:10:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10857, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10629, + "src": "10017:2:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10850, + "name": "Swap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8514, + "src": "9954:4:36", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (address,uint256,uint256,uint256,uint256,address)" + } + }, + "id": 10858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9954:66:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10859, + "nodeType": "EmitStatement", + "src": "9949:71:36" + } + ] + }, + "functionSelector": "022c0d9f", + "id": 10861, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 10635, + "kind": "modifierInvocation", + "modifierName": { + "id": 10634, + "name": "lock", + "nodeType": "IdentifierPath", + "referencedDeclaration": 9978, + "src": "8256:4:36" + }, + "nodeType": "ModifierInvocation", + "src": "8256:4:36" + } + ], + "name": "swap", + "nameLocation": "8166:4:36", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10633, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "8247:8:36" + }, + "parameters": { + "id": 10632, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10625, + "mutability": "mutable", + "name": "amount0Out", + "nameLocation": "8176:10:36", + "nodeType": "VariableDeclaration", + "scope": 10861, + "src": "8171:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10624, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8171:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10627, + "mutability": "mutable", + "name": "amount1Out", + "nameLocation": "8193:10:36", + "nodeType": "VariableDeclaration", + "scope": 10861, + "src": "8188:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10626, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8188:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10629, + "mutability": "mutable", + "name": "to", + "nameLocation": "8213:2:36", + "nodeType": "VariableDeclaration", + "scope": 10861, + "src": "8205:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10628, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8205:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10631, + "mutability": "mutable", + "name": "data", + "nameLocation": "8232:4:36", + "nodeType": "VariableDeclaration", + "scope": 10861, + "src": "8217:19:36", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 10630, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8217:5:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "8170:67:36" + }, + "returnParameters": { + "id": 10636, + "nodeType": "ParameterList", + "parameters": [], + "src": "8261:0:36" + }, + "scope": 11247, + "src": "8157:1870:36", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 8596 + ], + "body": { + "id": 10911, + "nodeType": "Block", + "src": "10122:289:36", + "statements": [ + { + "assignments": [ + 10870 + ], + "declarations": [ + { + "constant": false, + "id": 10870, + "mutability": "mutable", + "name": "_token0", + "nameLocation": "10140:7:36", + "nodeType": "VariableDeclaration", + "scope": 10911, + "src": "10132:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10869, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10132:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 10872, + "initialValue": { + "id": 10871, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9938, + "src": "10150:6:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10132:24:36" + }, + { + "assignments": [ + 10874 + ], + "declarations": [ + { + "constant": false, + "id": 10874, + "mutability": "mutable", + "name": "_token1", + "nameLocation": "10189:7:36", + "nodeType": "VariableDeclaration", + "scope": 10911, + "src": "10181:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10873, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10181:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 10876, + "initialValue": { + "id": 10875, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9941, + "src": "10199:6:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10181:24:36" + }, + { + "expression": { + "arguments": [ + { + "id": 10878, + "name": "_token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10870, + "src": "10244:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10879, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "10253:2:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 10890, + "name": "reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9943, + "src": "10302:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 10886, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "10291:4:36", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + ], + "id": 10885, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10283:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10884, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10283:7:36", + "typeDescriptions": {} + } + }, + "id": 10887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10283:13:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 10881, + "name": "_token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10870, + "src": "10264:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10880, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5514, + "src": "10257:6:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$5514_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 10882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10257:15:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "id": 10883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 5453, + "src": "10257:25:36", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 10888, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10257:40:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6745, + "src": "10257:44:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10257:54:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10877, + "name": "_safeTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10044, + "src": "10230:13:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 10892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10230:82:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10893, + "nodeType": "ExpressionStatement", + "src": "10230:82:36" + }, + { + "expression": { + "arguments": [ + { + "id": 10895, + "name": "_token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10874, + "src": "10336:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10896, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "10345:2:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 10907, + "name": "reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9945, + "src": "10394:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 10903, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "10383:4:36", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + ], + "id": 10902, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10375:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10901, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10375:7:36", + "typeDescriptions": {} + } + }, + "id": 10904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10375:13:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 10898, + "name": "_token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10874, + "src": "10356:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10897, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5514, + "src": "10349:6:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$5514_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 10899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10349:15:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "id": 10900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 5453, + "src": "10349:25:36", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 10905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10349:40:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6745, + "src": "10349:44:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10349:54:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10894, + "name": "_safeTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10044, + "src": "10322:13:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 10909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10322:82:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10910, + "nodeType": "ExpressionStatement", + "src": "10322:82:36" + } + ] + }, + "functionSelector": "bc25cf77", + "id": 10912, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 10867, + "kind": "modifierInvocation", + "modifierName": { + "id": 10866, + "name": "lock", + "nodeType": "IdentifierPath", + "referencedDeclaration": 9978, + "src": "10117:4:36" + }, + "nodeType": "ModifierInvocation", + "src": "10117:4:36" + } + ], + "name": "skim", + "nameLocation": "10082:4:36", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10865, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "10108:8:36" + }, + "parameters": { + "id": 10864, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10863, + "mutability": "mutable", + "name": "to", + "nameLocation": "10095:2:36", + "nodeType": "VariableDeclaration", + "scope": 10912, + "src": "10087:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10862, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10087:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "10086:12:36" + }, + "returnParameters": { + "id": 10868, + "nodeType": "ParameterList", + "parameters": [], + "src": "10122:0:36" + }, + "scope": 11247, + "src": "10073:338:36", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 8599 + ], + "body": { + "id": 10941, + "nodeType": "Block", + "src": "10496:126:36", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 10925, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "10547:4:36", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + ], + "id": 10924, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10539:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10923, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10539:7:36", + "typeDescriptions": {} + } + }, + "id": 10926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10539:13:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 10920, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9938, + "src": "10521:6:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10919, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5514, + "src": "10514:6:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$5514_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 10921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10514:14:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "id": 10922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 5453, + "src": "10514:24:36", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 10927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10514:39:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 10934, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "10588:4:36", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UniswapV2Pair_$11247", + "typeString": "contract UniswapV2Pair" + } + ], + "id": 10933, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10580:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10932, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10580:7:36", + "typeDescriptions": {} + } + }, + "id": 10935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10580:13:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 10929, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9941, + "src": "10562:6:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10928, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5514, + "src": "10555:6:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$5514_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 10930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10555:14:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5514", + "typeString": "contract IERC20" + } + }, + "id": 10931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 5453, + "src": "10555:24:36", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 10936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10555:39:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10937, + "name": "reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9943, + "src": "10596:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + { + "id": 10938, + "name": "reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9945, + "src": "10606:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "id": 10918, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10193, + "src": "10506:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$returns$__$", + "typeString": "function (uint256,uint256,uint112,uint112)" + } + }, + "id": 10939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10506:109:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10940, + "nodeType": "ExpressionStatement", + "src": "10506:109:36" + } + ] + }, + "functionSelector": "fff6cae9", + "id": 10942, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 10916, + "kind": "modifierInvocation", + "modifierName": { + "id": 10915, + "name": "lock", + "nodeType": "IdentifierPath", + "referencedDeclaration": 9978, + "src": "10491:4:36" + }, + "nodeType": "ModifierInvocation", + "src": "10491:4:36" + } + ], + "name": "sync", + "nameLocation": "10466:4:36", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10914, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "10482:8:36" + }, + "parameters": { + "id": 10913, + "nodeType": "ParameterList", + "parameters": [], + "src": "10470:2:36" + }, + "returnParameters": { + "id": 10917, + "nodeType": "ParameterList", + "parameters": [], + "src": "10496:0:36" + }, + "scope": 11247, + "src": "10457:165:36", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 10976, + "nodeType": "Block", + "src": "10794:149:36", + "statements": [ + { + "expression": { + "id": 10954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10949, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9891, + "src": "10804:11:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10952, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10946, + "src": "10834:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10950, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9891, + "src": "10818:11:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 6728, + "src": "10818:15:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10818:22:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10804:36:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10955, + "nodeType": "ExpressionStatement", + "src": "10804:36:36" + }, + { + "expression": { + "id": 10965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 10956, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9896, + "src": "10850:9:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 10958, + "indexExpression": { + "id": 10957, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10944, + "src": "10860:2:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10850:13:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10963, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10946, + "src": "10884:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "id": 10959, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9896, + "src": "10866:9:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 10961, + "indexExpression": { + "id": 10960, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10944, + "src": "10876:2:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10866:13:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 6728, + "src": "10866:17:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10866:24:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10850:40:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10966, + "nodeType": "ExpressionStatement", + "src": "10850:40:36" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 10970, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10922: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": 10969, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10914:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10968, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10914:7:36", + "typeDescriptions": {} + } + }, + "id": 10971, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10914:10:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10972, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10944, + "src": "10926:2:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10973, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10946, + "src": "10930:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10967, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8383, + "src": "10905:8:36", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 10974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10905:31:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10975, + "nodeType": "EmitStatement", + "src": "10900:36:36" + } + ] + }, + "id": 10977, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nameLocation": "10755:5:36", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10947, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10944, + "mutability": "mutable", + "name": "to", + "nameLocation": "10769:2:36", + "nodeType": "VariableDeclaration", + "scope": 10977, + "src": "10761:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10943, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10761:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10946, + "mutability": "mutable", + "name": "value", + "nameLocation": "10778:5:36", + "nodeType": "VariableDeclaration", + "scope": 10977, + "src": "10773:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10945, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "10773:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10760:24:36" + }, + "returnParameters": { + "id": 10948, + "nodeType": "ParameterList", + "parameters": [], + "src": "10794:0:36" + }, + "scope": 11247, + "src": "10746:197:36", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11011, + "nodeType": "Block", + "src": "10999:155:36", + "statements": [ + { + "expression": { + "id": 10993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 10984, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9896, + "src": "11009:9:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 10986, + "indexExpression": { + "id": 10985, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10979, + "src": "11019:4:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11009:15:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10991, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10981, + "src": "11047:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "id": 10987, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9896, + "src": "11027:9:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 10989, + "indexExpression": { + "id": 10988, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10979, + "src": "11037:4:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11027:15:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6745, + "src": "11027:19:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11027:26:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11009:44:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10994, + "nodeType": "ExpressionStatement", + "src": "11009:44:36" + }, + { + "expression": { + "id": 11000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10995, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9891, + "src": "11063:11:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10998, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10981, + "src": "11093:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10996, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9891, + "src": "11077:11:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6745, + "src": "11077:15:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 10999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11077:22:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11063:36:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11001, + "nodeType": "ExpressionStatement", + "src": "11063:36:36" + }, + { + "eventCall": { + "arguments": [ + { + "id": 11003, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10979, + "src": "11123:4:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 11006, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11137: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": 11005, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11129:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11004, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11129:7:36", + "typeDescriptions": {} + } + }, + "id": 11007, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11129:10:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11008, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10981, + "src": "11141:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11002, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8383, + "src": "11114:8:36", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 11009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11114:33:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11010, + "nodeType": "EmitStatement", + "src": "11109:38:36" + } + ] + }, + "id": 11012, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nameLocation": "10958:5:36", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10982, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10979, + "mutability": "mutable", + "name": "from", + "nameLocation": "10972:4:36", + "nodeType": "VariableDeclaration", + "scope": 11012, + "src": "10964:12:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10978, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10964:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10981, + "mutability": "mutable", + "name": "value", + "nameLocation": "10983:5:36", + "nodeType": "VariableDeclaration", + "scope": 11012, + "src": "10978:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10980, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "10978:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10963:26:36" + }, + "returnParameters": { + "id": 10983, + "nodeType": "ParameterList", + "parameters": [], + "src": "10999:0:36" + }, + "scope": 11247, + "src": "10949:205:36", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11035, + "nodeType": "Block", + "src": "11230:96:36", + "statements": [ + { + "expression": { + "id": 11027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 11021, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9903, + "src": "11240:9:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 11024, + "indexExpression": { + "id": 11022, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11014, + "src": "11250:5:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11240:16:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 11025, + "indexExpression": { + "id": 11023, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11016, + "src": "11257:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11240:25:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 11026, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11018, + "src": "11268:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11240:33:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11028, + "nodeType": "ExpressionStatement", + "src": "11240:33:36" + }, + { + "eventCall": { + "arguments": [ + { + "id": 11030, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11014, + "src": "11297:5:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11031, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11016, + "src": "11304:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11032, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11018, + "src": "11313:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11029, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8375, + "src": "11288:8:36", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 11033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11288:31:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11034, + "nodeType": "EmitStatement", + "src": "11283:36:36" + } + ] + }, + "id": 11036, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nameLocation": "11169:8:36", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11019, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11014, + "mutability": "mutable", + "name": "owner", + "nameLocation": "11186:5:36", + "nodeType": "VariableDeclaration", + "scope": 11036, + "src": "11178:13:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11013, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11178:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11016, + "mutability": "mutable", + "name": "spender", + "nameLocation": "11201:7:36", + "nodeType": "VariableDeclaration", + "scope": 11036, + "src": "11193:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11015, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11193:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11018, + "mutability": "mutable", + "name": "value", + "nameLocation": "11215:5:36", + "nodeType": "VariableDeclaration", + "scope": 11036, + "src": "11210:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11017, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11210:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11177:44:36" + }, + "returnParameters": { + "id": 11020, + "nodeType": "ParameterList", + "parameters": [], + "src": "11230:0:36" + }, + "scope": 11247, + "src": "11160:166:36", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 11073, + "nodeType": "Block", + "src": "11397:151:36", + "statements": [ + { + "expression": { + "id": 11054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 11045, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9896, + "src": "11407:9:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 11047, + "indexExpression": { + "id": 11046, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11038, + "src": "11417:4:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11407:15:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11052, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11042, + "src": "11445:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "id": 11048, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9896, + "src": "11425:9:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 11050, + "indexExpression": { + "id": 11049, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11038, + "src": "11435:4:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11425:15:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6745, + "src": "11425:19:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11053, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11425:26:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11407:44:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11055, + "nodeType": "ExpressionStatement", + "src": "11407:44:36" + }, + { + "expression": { + "id": 11065, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 11056, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9896, + "src": "11461:9:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 11058, + "indexExpression": { + "id": 11057, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11040, + "src": "11471:2:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11461:13:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11063, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11042, + "src": "11495:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "id": 11059, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9896, + "src": "11477:9:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 11061, + "indexExpression": { + "id": 11060, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11040, + "src": "11487:2:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11477:13:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 6728, + "src": "11477:17:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11477:24:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11461:40:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11066, + "nodeType": "ExpressionStatement", + "src": "11461:40:36" + }, + { + "eventCall": { + "arguments": [ + { + "id": 11068, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11038, + "src": "11525:4:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11069, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11040, + "src": "11531:2:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11070, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11042, + "src": "11535:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11067, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8383, + "src": "11516:8:36", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 11071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11516:25:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11072, + "nodeType": "EmitStatement", + "src": "11511:30:36" + } + ] + }, + "id": 11074, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nameLocation": "11341:9:36", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11043, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11038, + "mutability": "mutable", + "name": "from", + "nameLocation": "11359:4:36", + "nodeType": "VariableDeclaration", + "scope": 11074, + "src": "11351:12:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11037, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11351:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11040, + "mutability": "mutable", + "name": "to", + "nameLocation": "11373:2:36", + "nodeType": "VariableDeclaration", + "scope": 11074, + "src": "11365:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11039, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11365:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11042, + "mutability": "mutable", + "name": "value", + "nameLocation": "11382:5:36", + "nodeType": "VariableDeclaration", + "scope": 11074, + "src": "11377:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11041, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11377:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11350:38:36" + }, + "returnParameters": { + "id": 11044, + "nodeType": "ParameterList", + "parameters": [], + "src": "11397:0:36" + }, + "scope": 11247, + "src": "11332:216:36", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "baseFunctions": [ + 8428 + ], + "body": { + "id": 11093, + "nodeType": "Block", + "src": "11633:74:36", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 11085, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11652:3:36", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "11652:10:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11087, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11076, + "src": "11664:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11088, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11078, + "src": "11673:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11084, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11036, + "src": "11643:8:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 11089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11643:36:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11090, + "nodeType": "ExpressionStatement", + "src": "11643:36:36" + }, + { + "expression": { + "hexValue": "74727565", + "id": 11091, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11696:4:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 11083, + "id": 11092, + "nodeType": "Return", + "src": "11689:11:36" + } + ] + }, + "functionSelector": "095ea7b3", + "id": 11094, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "11563:7:36", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11080, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "11609:8:36" + }, + "parameters": { + "id": 11079, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11076, + "mutability": "mutable", + "name": "spender", + "nameLocation": "11579:7:36", + "nodeType": "VariableDeclaration", + "scope": 11094, + "src": "11571:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11075, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11571:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11078, + "mutability": "mutable", + "name": "value", + "nameLocation": "11593:5:36", + "nodeType": "VariableDeclaration", + "scope": 11094, + "src": "11588:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11077, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11588:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11570:29:36" + }, + "returnParameters": { + "id": 11083, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11082, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11094, + "src": "11627:4:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11081, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11627:4:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "11626:6:36" + }, + "scope": 11247, + "src": "11554:153:36", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 8437 + ], + "body": { + "id": 11113, + "nodeType": "Block", + "src": "11788:70:36", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 11105, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11808:3:36", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "11808:10:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11107, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11096, + "src": "11820:2:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11108, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11098, + "src": "11824:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11104, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11074, + "src": "11798:9:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 11109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11798:32:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11110, + "nodeType": "ExpressionStatement", + "src": "11798:32:36" + }, + { + "expression": { + "hexValue": "74727565", + "id": 11111, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11847:4:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 11103, + "id": 11112, + "nodeType": "Return", + "src": "11840:11:36" + } + ] + }, + "functionSelector": "a9059cbb", + "id": 11114, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "11722:8:36", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11100, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "11764:8:36" + }, + "parameters": { + "id": 11099, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11096, + "mutability": "mutable", + "name": "to", + "nameLocation": "11739:2:36", + "nodeType": "VariableDeclaration", + "scope": 11114, + "src": "11731:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11095, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11731:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11098, + "mutability": "mutable", + "name": "value", + "nameLocation": "11748:5:36", + "nodeType": "VariableDeclaration", + "scope": 11114, + "src": "11743:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11097, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11743:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11730:24:36" + }, + "returnParameters": { + "id": 11103, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11102, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11114, + "src": "11782:4:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11101, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11782:4:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "11781:6:36" + }, + "scope": 11247, + "src": "11713:145:36", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 8448 + ], + "body": { + "id": 11165, + "nodeType": "Block", + "src": "11957:217:36", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "baseExpression": { + "id": 11126, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9903, + "src": "11971:9:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 11128, + "indexExpression": { + "id": 11127, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11116, + "src": "11981:4:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11971:15:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 11131, + "indexExpression": { + "expression": { + "id": 11129, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11987:3:36", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "11987:10:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11971:27:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 11134, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12007:4:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 11133, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12007:4:36", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 11132, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "12002:4:36", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11135, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12002:10:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 11136, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "max", + "nodeType": "MemberAccess", + "src": "12002:14:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11971:45:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11156, + "nodeType": "IfStatement", + "src": "11967:144:36", + "trueBody": { + "id": 11155, + "nodeType": "Block", + "src": "12018:93:36", + "statements": [ + { + "expression": { + "id": 11153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 11138, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9903, + "src": "12032:9:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 11142, + "indexExpression": { + "id": 11139, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11116, + "src": "12042:4:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12032:15:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 11143, + "indexExpression": { + "expression": { + "id": 11140, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "12048:3:36", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "12048:10:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "12032:27:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11151, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11120, + "src": "12094:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "baseExpression": { + "id": 11144, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9903, + "src": "12062:9:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 11146, + "indexExpression": { + "id": 11145, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11116, + "src": "12072:4:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12062:15:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 11149, + "indexExpression": { + "expression": { + "id": 11147, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "12078:3:36", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "12078:10:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12062:27:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 6745, + "src": "12062:31:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12062:38:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12032:68:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11154, + "nodeType": "ExpressionStatement", + "src": "12032:68:36" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 11158, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11116, + "src": "12130:4:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11159, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11118, + "src": "12136:2:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11160, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11120, + "src": "12140:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11157, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11074, + "src": "12120:9:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 11161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12120:26:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11162, + "nodeType": "ExpressionStatement", + "src": "12120:26:36" + }, + { + "expression": { + "hexValue": "74727565", + "id": 11163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12163:4:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 11125, + "id": 11164, + "nodeType": "Return", + "src": "12156:11:36" + } + ] + }, + "functionSelector": "23b872dd", + "id": 11166, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "11873:12:36", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11122, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "11933:8:36" + }, + "parameters": { + "id": 11121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11116, + "mutability": "mutable", + "name": "from", + "nameLocation": "11894:4:36", + "nodeType": "VariableDeclaration", + "scope": 11166, + "src": "11886:12:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11115, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11886:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11118, + "mutability": "mutable", + "name": "to", + "nameLocation": "11908:2:36", + "nodeType": "VariableDeclaration", + "scope": 11166, + "src": "11900:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11117, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11900:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11120, + "mutability": "mutable", + "name": "value", + "nameLocation": "11917:5:36", + "nodeType": "VariableDeclaration", + "scope": 11166, + "src": "11912:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11119, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11912:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11885:38:36" + }, + "returnParameters": { + "id": 11125, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11124, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11166, + "src": "11951:4:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11123, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11951:4:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "11950:6:36" + }, + "scope": 11247, + "src": "11864:310:36", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 8482 + ], + "body": { + "id": 11245, + "nodeType": "Block", + "src": "12304:547:36", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11185, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11174, + "src": "12322:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 11186, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "12334:5:36", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 11187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "12334:15:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12322:27:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056323a2045585049524544", + "id": 11189, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12351:20:36", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_47797eaaf6df6dc2efdb1e824209400a8293aff4c1e7f6d90fcc4b3e3ba18a87", + "typeString": "literal_string \"UniswapV2: EXPIRED\"" + }, + "value": "UniswapV2: EXPIRED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_47797eaaf6df6dc2efdb1e824209400a8293aff4c1e7f6d90fcc4b3e3ba18a87", + "typeString": "literal_string \"UniswapV2: EXPIRED\"" + } + ], + "id": 11184, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "12314:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12314:58:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11191, + "nodeType": "ExpressionStatement", + "src": "12314:58:36" + }, + { + "assignments": [ + 11193 + ], + "declarations": [ + { + "constant": false, + "id": 11193, + "mutability": "mutable", + "name": "digest", + "nameLocation": "12390:6:36", + "nodeType": "VariableDeclaration", + "scope": 11245, + "src": "12382:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11192, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12382:7:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 11215, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "1901", + "id": 11197, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12456:10:36", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string hex\"1901\"" + }, + "value": "\u0019\u0001" + }, + { + "id": 11198, + "name": "DOMAIN_SEPARATOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9923, + "src": "12484:16:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 11202, + "name": "PERMIT_TYPEHASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9927, + "src": "12539:15:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 11203, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11168, + "src": "12556:5:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11204, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11170, + "src": "12563:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11205, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11172, + "src": "12572:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "12579:15:36", + "subExpression": { + "baseExpression": { + "id": 11206, + "name": "nonces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9932, + "src": "12579:6:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 11208, + "indexExpression": { + "id": 11207, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11168, + "src": "12586:5:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "12579:13:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11210, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11174, + "src": "12596:8:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 11200, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "12528:3:36", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 11201, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "12528:10:36", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 11211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12528:77:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 11199, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "12518:9:36", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 11212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12518:88:36", + "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": 11195, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "12422:3:36", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 11196, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "12422:16:36", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 11213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12422:198:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 11194, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "12399:9:36", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 11214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12399:231:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12382:248:36" + }, + { + "assignments": [ + 11217 + ], + "declarations": [ + { + "constant": false, + "id": 11217, + "mutability": "mutable", + "name": "recoveredAddress", + "nameLocation": "12648:16:36", + "nodeType": "VariableDeclaration", + "scope": 11245, + "src": "12640:24:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11216, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12640:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 11224, + "initialValue": { + "arguments": [ + { + "id": 11219, + "name": "digest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11193, + "src": "12677:6:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 11220, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11176, + "src": "12685:1:36", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 11221, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11178, + "src": "12688:1:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 11222, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11180, + "src": "12691:1:36", + "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": 11218, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -6, + "src": "12667:9:36", + "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": 11223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12667:26:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12640:53:36" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 11235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 11231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11226, + "name": "recoveredAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11217, + "src": "12711:16:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 11229, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12739: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": 11228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12731:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11227, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12731:7:36", + "typeDescriptions": {} + } + }, + "id": 11230, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12731:10:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "12711:30:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 11234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11232, + "name": "recoveredAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11217, + "src": "12745:16:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 11233, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11168, + "src": "12765:5:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "12745:25:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12711:59:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e697377617056323a20494e56414c49445f5349474e4154555245", + "id": 11236, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12772:30:36", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2d893fc9f5fa2494c39ecec82df2778b33226458ccce3b9a56f5372437d54a56", + "typeString": "literal_string \"UniswapV2: INVALID_SIGNATURE\"" + }, + "value": "UniswapV2: INVALID_SIGNATURE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2d893fc9f5fa2494c39ecec82df2778b33226458ccce3b9a56f5372437d54a56", + "typeString": "literal_string \"UniswapV2: INVALID_SIGNATURE\"" + } + ], + "id": 11225, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "12703:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12703:100:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11238, + "nodeType": "ExpressionStatement", + "src": "12703:100:36" + }, + { + "expression": { + "arguments": [ + { + "id": 11240, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11168, + "src": "12822:5:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11241, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11170, + "src": "12829:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11242, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11172, + "src": "12838:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11239, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11036, + "src": "12813:8:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 11243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12813:31:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11244, + "nodeType": "ExpressionStatement", + "src": "12813:31:36" + } + ] + }, + "functionSelector": "d505accf", + "id": 11246, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "permit", + "nameLocation": "12189:6:36", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11182, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "12295:8:36" + }, + "parameters": { + "id": 11181, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11168, + "mutability": "mutable", + "name": "owner", + "nameLocation": "12204:5:36", + "nodeType": "VariableDeclaration", + "scope": 11246, + "src": "12196:13:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11167, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12196:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11170, + "mutability": "mutable", + "name": "spender", + "nameLocation": "12219:7:36", + "nodeType": "VariableDeclaration", + "scope": 11246, + "src": "12211:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11169, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12211:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11172, + "mutability": "mutable", + "name": "value", + "nameLocation": "12233:5:36", + "nodeType": "VariableDeclaration", + "scope": 11246, + "src": "12228:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11171, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12228:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11174, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "12245:8:36", + "nodeType": "VariableDeclaration", + "scope": 11246, + "src": "12240:13:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11173, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12240:4:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11176, + "mutability": "mutable", + "name": "v", + "nameLocation": "12261:1:36", + "nodeType": "VariableDeclaration", + "scope": 11246, + "src": "12255:7:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 11175, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "12255:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11178, + "mutability": "mutable", + "name": "r", + "nameLocation": "12272:1:36", + "nodeType": "VariableDeclaration", + "scope": 11246, + "src": "12264:9:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11177, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12264:7:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11180, + "mutability": "mutable", + "name": "s", + "nameLocation": "12283:1:36", + "nodeType": "VariableDeclaration", + "scope": 11246, + "src": "12275:9:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11179, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12275:7:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "12195:90:36" + }, + "returnParameters": { + "id": 11183, + "nodeType": "ParameterList", + "parameters": [], + "src": "12304:0:36" + }, + "scope": 11247, + "src": "12180:671:36", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 11248, + "src": "312:12544:36", + "usedErrors": [] + } + ], + "src": "32:12824:36" + }, + "id": 36 + }, + "contracts/Utils/Address.sol": { + "ast": { + "absolutePath": "contracts/Utils/Address.sol", + "exportedSymbols": { + "Address": [ + 11543 + ] + }, + "id": 11544, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 11249, + "literals": [ + "solidity", + ">=", + "0.6", + ".11", + "<", + "0.9", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "32:32:37" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Address", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 11250, + "nodeType": "StructuredDocumentation", + "src": "66:67:37", + "text": " @dev Collection of functions related to the address type" + }, + "fullyImplemented": true, + "id": 11543, + "linearizedBaseContracts": [ + 11543 + ], + "name": "Address", + "nameLocation": "142:7:37", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 11266, + "nodeType": "Block", + "src": "792:347:37", + "statements": [ + { + "assignments": [ + 11259 + ], + "declarations": [ + { + "constant": false, + "id": 11259, + "mutability": "mutable", + "name": "size", + "nameLocation": "997:4:37", + "nodeType": "VariableDeclaration", + "scope": 11266, + "src": "989:12:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11258, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "989:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 11260, + "nodeType": "VariableDeclarationStatement", + "src": "989:12:37" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "1076:32:37", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1078:28:37", + "value": { + "arguments": [ + { + "name": "account", + "nodeType": "YulIdentifier", + "src": "1098:7:37" + } + ], + "functionName": { + "name": "extcodesize", + "nodeType": "YulIdentifier", + "src": "1086:11:37" + }, + "nodeType": "YulFunctionCall", + "src": "1086:20:37" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1078:4:37" + } + ] + } + ] + }, + "evmVersion": "london", + "externalReferences": [ + { + "declaration": 11253, + "isOffset": false, + "isSlot": false, + "src": "1098:7:37", + "valueSize": 1 + }, + { + "declaration": 11259, + "isOffset": false, + "isSlot": false, + "src": "1078:4:37", + "valueSize": 1 + } + ], + "id": 11261, + "nodeType": "InlineAssembly", + "src": "1067:41:37" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11262, + "name": "size", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11259, + "src": "1124:4:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 11263, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1131:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1124:8:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 11257, + "id": 11265, + "nodeType": "Return", + "src": "1117:15:37" + } + ] + }, + "documentation": { + "id": 11251, + "nodeType": "StructuredDocumentation", + "src": "156:565:37", + "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": 11267, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isContract", + "nameLocation": "735:10:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11254, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11253, + "mutability": "mutable", + "name": "account", + "nameLocation": "754:7:37", + "nodeType": "VariableDeclaration", + "scope": 11267, + "src": "746:15:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11252, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "746:7:37", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "745:17:37" + }, + "returnParameters": { + "id": 11257, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11256, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11267, + "src": "786:4:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11255, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "786:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "785:6:37" + }, + "scope": 11543, + "src": "726:413:37", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11300, + "nodeType": "Block", + "src": "2127:320:37", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 11278, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2153:4:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$11543", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$11543", + "typeString": "library Address" + } + ], + "id": 11277, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2145:7:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11276, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2145:7:37", + "typeDescriptions": {} + } + }, + "id": 11279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2145:13:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 11280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "2145:21:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 11281, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11272, + "src": "2170:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2145:31:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365", + "id": 11283, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2178:31:37", + "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": 11275, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2137:7:37", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2137:73:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11285, + "nodeType": "ExpressionStatement", + "src": "2137:73:37" + }, + { + "assignments": [ + 11287, + null + ], + "declarations": [ + { + "constant": false, + "id": 11287, + "mutability": "mutable", + "name": "success", + "nameLocation": "2304:7:37", + "nodeType": "VariableDeclaration", + "scope": 11300, + "src": "2299:12:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11286, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2299:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + null + ], + "id": 11294, + "initialValue": { + "arguments": [ + { + "hexValue": "", + "id": 11292, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2349:2:37", + "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": 11288, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11270, + "src": "2317:9:37", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 11289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "src": "2317:14:37", + "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": 11291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 11290, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11272, + "src": "2340:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "2317:31:37", + "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": 11293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2317:35:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2298:54:37" + }, + { + "expression": { + "arguments": [ + { + "id": 11296, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11287, + "src": "2370:7:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564", + "id": 11297, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2379:60:37", + "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": 11295, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2362:7:37", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2362:78:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11299, + "nodeType": "ExpressionStatement", + "src": "2362:78:37" + } + ] + }, + "documentation": { + "id": 11268, + "nodeType": "StructuredDocumentation", + "src": "1145:906:37", + "text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://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": 11301, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sendValue", + "nameLocation": "2065:9:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11273, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11270, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "2091:9:37", + "nodeType": "VariableDeclaration", + "scope": 11301, + "src": "2075:25:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 11269, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2075:15:37", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11272, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2110:6:37", + "nodeType": "VariableDeclaration", + "scope": 11301, + "src": "2102:14:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11271, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2102:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2074:43:37" + }, + "returnParameters": { + "id": 11274, + "nodeType": "ParameterList", + "parameters": [], + "src": "2127:0:37" + }, + "scope": 11543, + "src": "2056:391:37", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11317, + "nodeType": "Block", + "src": "3277:82:37", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11312, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11304, + "src": "3305:6:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11313, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11306, + "src": "3313:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564", + "id": 11314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3319:32:37", + "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": 11311, + "name": "functionCall", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 11318, + 11338 + ], + "referencedDeclaration": 11338, + "src": "3292:12:37", + "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": 11315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3292:60:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 11310, + "id": 11316, + "nodeType": "Return", + "src": "3285:67:37" + } + ] + }, + "documentation": { + "id": 11302, + "nodeType": "StructuredDocumentation", + "src": "2453:730:37", + "text": " @dev Performs a Solidity function call using a low level `call`. A\n plain`call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, 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": 11318, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCall", + "nameLocation": "3197:12:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11307, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11304, + "mutability": "mutable", + "name": "target", + "nameLocation": "3218:6:37", + "nodeType": "VariableDeclaration", + "scope": 11318, + "src": "3210:14:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11303, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3210:7:37", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11306, + "mutability": "mutable", + "name": "data", + "nameLocation": "3239:4:37", + "nodeType": "VariableDeclaration", + "scope": 11318, + "src": "3226:17:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11305, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3226:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3209:35:37" + }, + "returnParameters": { + "id": 11310, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11309, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11318, + "src": "3263:12:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11308, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3263:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3262:14:37" + }, + "scope": 11543, + "src": "3188:171:37", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11337, + "nodeType": "Block", + "src": "3698:76:37", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11331, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11321, + "src": "3737:6:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11332, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11323, + "src": "3745:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "30", + "id": 11333, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3751:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 11334, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11325, + "src": "3754:12:37", + "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": 11330, + "name": "functionCallWithValue", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 11358, + 11408 + ], + "referencedDeclaration": 11408, + "src": "3715:21:37", + "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": 11335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3715:52:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 11329, + "id": 11336, + "nodeType": "Return", + "src": "3708:59:37" + } + ] + }, + "documentation": { + "id": 11319, + "nodeType": "StructuredDocumentation", + "src": "3365:211:37", + "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": 11338, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCall", + "nameLocation": "3590:12:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11321, + "mutability": "mutable", + "name": "target", + "nameLocation": "3611:6:37", + "nodeType": "VariableDeclaration", + "scope": 11338, + "src": "3603:14:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11320, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3603:7:37", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11323, + "mutability": "mutable", + "name": "data", + "nameLocation": "3632:4:37", + "nodeType": "VariableDeclaration", + "scope": 11338, + "src": "3619:17:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11322, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3619:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11325, + "mutability": "mutable", + "name": "errorMessage", + "nameLocation": "3652:12:37", + "nodeType": "VariableDeclaration", + "scope": 11338, + "src": "3638:26:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11324, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3638:6:37", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "3602:63:37" + }, + "returnParameters": { + "id": 11329, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11328, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11338, + "src": "3684:12:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11327, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3684:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3683:14:37" + }, + "scope": 11543, + "src": "3581:193:37", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11357, + "nodeType": "Block", + "src": "4249:111:37", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11351, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11341, + "src": "4288:6:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11352, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11343, + "src": "4296:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 11353, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11345, + "src": "4302:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564", + "id": 11354, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4309:43:37", + "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": 11350, + "name": "functionCallWithValue", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 11358, + 11408 + ], + "referencedDeclaration": 11408, + "src": "4266:21:37", + "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": 11355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4266:87:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 11349, + "id": 11356, + "nodeType": "Return", + "src": "4259:94:37" + } + ] + }, + "documentation": { + "id": 11339, + "nodeType": "StructuredDocumentation", + "src": "3780:351:37", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._" + }, + "id": 11358, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCallWithValue", + "nameLocation": "4145:21:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11346, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11341, + "mutability": "mutable", + "name": "target", + "nameLocation": "4175:6:37", + "nodeType": "VariableDeclaration", + "scope": 11358, + "src": "4167:14:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11340, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4167:7:37", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11343, + "mutability": "mutable", + "name": "data", + "nameLocation": "4196:4:37", + "nodeType": "VariableDeclaration", + "scope": 11358, + "src": "4183:17:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11342, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4183:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11345, + "mutability": "mutable", + "name": "value", + "nameLocation": "4210:5:37", + "nodeType": "VariableDeclaration", + "scope": 11358, + "src": "4202:13:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11344, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4202:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4166:50:37" + }, + "returnParameters": { + "id": 11349, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11348, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11358, + "src": "4235:12:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11347, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4235:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4234:14:37" + }, + "scope": 11543, + "src": "4136:224:37", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11407, + "nodeType": "Block", + "src": "4749:382:37", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 11375, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4775:4:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$11543", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$11543", + "typeString": "library Address" + } + ], + "id": 11374, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4767:7:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11373, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4767:7:37", + "typeDescriptions": {} + } + }, + "id": 11376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4767:13:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 11377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "4767:21:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 11378, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11365, + "src": "4792:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4767:30:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c", + "id": 11380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4799:40:37", + "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": 11372, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4759:7:37", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4759:81:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11382, + "nodeType": "ExpressionStatement", + "src": "4759:81:37" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 11385, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11361, + "src": "4869:6:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11384, + "name": "isContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11267, + "src": "4858:10:37", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 11386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4858:18:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374", + "id": 11387, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4878:31:37", + "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": 11383, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4850:7:37", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4850:60:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11389, + "nodeType": "ExpressionStatement", + "src": "4850:60:37" + }, + { + "assignments": [ + 11391, + 11393 + ], + "declarations": [ + { + "constant": false, + "id": 11391, + "mutability": "mutable", + "name": "success", + "nameLocation": "4986:7:37", + "nodeType": "VariableDeclaration", + "scope": 11407, + "src": "4981:12:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11390, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4981:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11393, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "5008:10:37", + "nodeType": "VariableDeclaration", + "scope": 11407, + "src": "4995:23:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11392, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4995:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 11400, + "initialValue": { + "arguments": [ + { + "id": 11398, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11363, + "src": "5050:4:37", + "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": 11394, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11361, + "src": "5022:6:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 11395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "src": "5022:11:37", + "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": 11397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 11396, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11365, + "src": "5042:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "5022:27:37", + "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": 11399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5022:33:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4980:75:37" + }, + { + "expression": { + "arguments": [ + { + "id": 11402, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11391, + "src": "5090:7:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 11403, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11393, + "src": "5099:10:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 11404, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11367, + "src": "5111:12:37", + "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": 11401, + "name": "_verifyCallResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11542, + "src": "5072:17:37", + "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": 11405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5072:52:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 11371, + "id": 11406, + "nodeType": "Return", + "src": "5065:59:37" + } + ] + }, + "documentation": { + "id": 11359, + "nodeType": "StructuredDocumentation", + "src": "4366:237:37", + "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": 11408, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCallWithValue", + "nameLocation": "4617:21:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11368, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11361, + "mutability": "mutable", + "name": "target", + "nameLocation": "4647:6:37", + "nodeType": "VariableDeclaration", + "scope": 11408, + "src": "4639:14:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11360, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4639:7:37", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11363, + "mutability": "mutable", + "name": "data", + "nameLocation": "4668:4:37", + "nodeType": "VariableDeclaration", + "scope": 11408, + "src": "4655:17:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11362, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4655:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11365, + "mutability": "mutable", + "name": "value", + "nameLocation": "4682:5:37", + "nodeType": "VariableDeclaration", + "scope": 11408, + "src": "4674:13:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11364, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4674:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11367, + "mutability": "mutable", + "name": "errorMessage", + "nameLocation": "4703:12:37", + "nodeType": "VariableDeclaration", + "scope": 11408, + "src": "4689:26:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11366, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4689:6:37", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "4638:78:37" + }, + "returnParameters": { + "id": 11371, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11370, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11408, + "src": "4735:12:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11369, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4735:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4734:14:37" + }, + "scope": 11543, + "src": "4608:523:37", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11424, + "nodeType": "Block", + "src": "5408:97:37", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11419, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11411, + "src": "5444:6:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11420, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11413, + "src": "5452:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564", + "id": 11421, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5458:39:37", + "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": 11418, + "name": "functionStaticCall", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 11425, + 11460 + ], + "referencedDeclaration": 11460, + "src": "5425:18:37", + "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": 11422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5425:73:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 11417, + "id": 11423, + "nodeType": "Return", + "src": "5418:80:37" + } + ] + }, + "documentation": { + "id": 11409, + "nodeType": "StructuredDocumentation", + "src": "5137:166:37", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._" + }, + "id": 11425, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionStaticCall", + "nameLocation": "5317:18:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11414, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11411, + "mutability": "mutable", + "name": "target", + "nameLocation": "5344:6:37", + "nodeType": "VariableDeclaration", + "scope": 11425, + "src": "5336:14:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11410, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5336:7:37", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11413, + "mutability": "mutable", + "name": "data", + "nameLocation": "5365:4:37", + "nodeType": "VariableDeclaration", + "scope": 11425, + "src": "5352:17:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11412, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5352:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5335:35:37" + }, + "returnParameters": { + "id": 11417, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11416, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11425, + "src": "5394:12:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11415, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5394:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5393:14:37" + }, + "scope": 11543, + "src": "5308:197:37", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11459, + "nodeType": "Block", + "src": "5817:288:37", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 11439, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11428, + "src": "5846:6:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11438, + "name": "isContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11267, + "src": "5835:10:37", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 11440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5835:18:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374", + "id": 11441, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5855:38:37", + "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": 11437, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5827:7:37", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5827:67:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11443, + "nodeType": "ExpressionStatement", + "src": "5827:67:37" + }, + { + "assignments": [ + 11445, + 11447 + ], + "declarations": [ + { + "constant": false, + "id": 11445, + "mutability": "mutable", + "name": "success", + "nameLocation": "5970:7:37", + "nodeType": "VariableDeclaration", + "scope": 11459, + "src": "5965:12:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11444, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5965:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11447, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "5992:10:37", + "nodeType": "VariableDeclaration", + "scope": 11459, + "src": "5979:23:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11446, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5979:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 11452, + "initialValue": { + "arguments": [ + { + "id": 11450, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11430, + "src": "6024:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 11448, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11428, + "src": "6006:6:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 11449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "staticcall", + "nodeType": "MemberAccess", + "src": "6006:17:37", + "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": 11451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6006:23:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5964:65:37" + }, + { + "expression": { + "arguments": [ + { + "id": 11454, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11445, + "src": "6064:7:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 11455, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11447, + "src": "6073:10:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 11456, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11432, + "src": "6085:12:37", + "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": 11453, + "name": "_verifyCallResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11542, + "src": "6046:17:37", + "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": 11457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6046:52:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 11436, + "id": 11458, + "nodeType": "Return", + "src": "6039:59:37" + } + ] + }, + "documentation": { + "id": 11426, + "nodeType": "StructuredDocumentation", + "src": "5511:173:37", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._" + }, + "id": 11460, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionStaticCall", + "nameLocation": "5698:18:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11433, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11428, + "mutability": "mutable", + "name": "target", + "nameLocation": "5725:6:37", + "nodeType": "VariableDeclaration", + "scope": 11460, + "src": "5717:14:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11427, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5717:7:37", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11430, + "mutability": "mutable", + "name": "data", + "nameLocation": "5746:4:37", + "nodeType": "VariableDeclaration", + "scope": 11460, + "src": "5733:17:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11429, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5733:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11432, + "mutability": "mutable", + "name": "errorMessage", + "nameLocation": "5766:12:37", + "nodeType": "VariableDeclaration", + "scope": 11460, + "src": "5752:26:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11431, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5752:6:37", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "5716:63:37" + }, + "returnParameters": { + "id": 11436, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11435, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11460, + "src": "5803:12:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11434, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5803:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5802:14:37" + }, + "scope": 11543, + "src": "5689:416:37", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11476, + "nodeType": "Block", + "src": "6381:101:37", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11471, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11463, + "src": "6419:6:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11472, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11465, + "src": "6427:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", + "id": 11473, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6433:41:37", + "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": 11470, + "name": "functionDelegateCall", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 11477, + 11512 + ], + "referencedDeclaration": 11512, + "src": "6398:20:37", + "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": 11474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6398:77:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 11469, + "id": 11475, + "nodeType": "Return", + "src": "6391:84:37" + } + ] + }, + "documentation": { + "id": 11461, + "nodeType": "StructuredDocumentation", + "src": "6111:168:37", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._" + }, + "id": 11477, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionDelegateCall", + "nameLocation": "6293:20:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11466, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11463, + "mutability": "mutable", + "name": "target", + "nameLocation": "6322:6:37", + "nodeType": "VariableDeclaration", + "scope": 11477, + "src": "6314:14:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11462, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6314:7:37", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11465, + "mutability": "mutable", + "name": "data", + "nameLocation": "6343:4:37", + "nodeType": "VariableDeclaration", + "scope": 11477, + "src": "6330:17:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11464, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6330:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6313:35:37" + }, + "returnParameters": { + "id": 11469, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11468, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11477, + "src": "6367:12:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11467, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6367:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6366:14:37" + }, + "scope": 11543, + "src": "6284:198:37", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11511, + "nodeType": "Block", + "src": "6793:292:37", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 11491, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11480, + "src": "6822:6:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11490, + "name": "isContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11267, + "src": "6811:10:37", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 11492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6811:18:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374", + "id": 11493, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6831:40:37", + "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": 11489, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6803:7:37", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6803:69:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11495, + "nodeType": "ExpressionStatement", + "src": "6803:69:37" + }, + { + "assignments": [ + 11497, + 11499 + ], + "declarations": [ + { + "constant": false, + "id": 11497, + "mutability": "mutable", + "name": "success", + "nameLocation": "6948:7:37", + "nodeType": "VariableDeclaration", + "scope": 11511, + "src": "6943:12:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11496, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6943:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11499, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "6970:10:37", + "nodeType": "VariableDeclaration", + "scope": 11511, + "src": "6957:23:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11498, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6957:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 11504, + "initialValue": { + "arguments": [ + { + "id": 11502, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11482, + "src": "7004:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 11500, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11480, + "src": "6984:6:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 11501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "delegatecall", + "nodeType": "MemberAccess", + "src": "6984:19:37", + "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": 11503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6984:25:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6942:67:37" + }, + { + "expression": { + "arguments": [ + { + "id": 11506, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11497, + "src": "7044:7:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 11507, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11499, + "src": "7053:10:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 11508, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11484, + "src": "7065:12:37", + "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": 11505, + "name": "_verifyCallResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11542, + "src": "7026:17:37", + "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": 11509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7026:52:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 11488, + "id": 11510, + "nodeType": "Return", + "src": "7019:59:37" + } + ] + }, + "documentation": { + "id": 11478, + "nodeType": "StructuredDocumentation", + "src": "6488:175:37", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._" + }, + "id": 11512, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionDelegateCall", + "nameLocation": "6677:20:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11485, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11480, + "mutability": "mutable", + "name": "target", + "nameLocation": "6706:6:37", + "nodeType": "VariableDeclaration", + "scope": 11512, + "src": "6698:14:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11479, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6698:7:37", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11482, + "mutability": "mutable", + "name": "data", + "nameLocation": "6727:4:37", + "nodeType": "VariableDeclaration", + "scope": 11512, + "src": "6714:17:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11481, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6714:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11484, + "mutability": "mutable", + "name": "errorMessage", + "nameLocation": "6747:12:37", + "nodeType": "VariableDeclaration", + "scope": 11512, + "src": "6733:26:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11483, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6733:6:37", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "6697:63:37" + }, + "returnParameters": { + "id": 11488, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11487, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11512, + "src": "6779:12:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11486, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6779:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6778:14:37" + }, + "scope": 11543, + "src": "6668:417:37", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11541, + "nodeType": "Block", + "src": "7220:596:37", + "statements": [ + { + "condition": { + "id": 11523, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11514, + "src": "7234:7:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 11539, + "nodeType": "Block", + "src": "7291:519:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 11527, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11516, + "src": "7375:10:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 11528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "7375:17:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 11529, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7395:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7375:21:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 11537, + "nodeType": "Block", + "src": "7747:53:37", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11534, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11518, + "src": "7772:12:37", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11533, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "7765:6:37", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 11535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7765:20:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11536, + "nodeType": "ExpressionStatement", + "src": "7765:20:37" + } + ] + }, + "id": 11538, + "nodeType": "IfStatement", + "src": "7371:429:37", + "trueBody": { + "id": 11532, + "nodeType": "Block", + "src": "7398:343:37", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "7582:145:37", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7604:40:37", + "value": { + "arguments": [ + { + "name": "returndata", + "nodeType": "YulIdentifier", + "src": "7633:10:37" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "7627:5:37" + }, + "nodeType": "YulFunctionCall", + "src": "7627:17:37" + }, + "variables": [ + { + "name": "returndata_size", + "nodeType": "YulTypedName", + "src": "7608:15:37", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7676:2:37", + "type": "", + "value": "32" + }, + { + "name": "returndata", + "nodeType": "YulIdentifier", + "src": "7680:10:37" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7672:3:37" + }, + "nodeType": "YulFunctionCall", + "src": "7672:19:37" + }, + { + "name": "returndata_size", + "nodeType": "YulIdentifier", + "src": "7693:15:37" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7665:6:37" + }, + "nodeType": "YulFunctionCall", + "src": "7665:44:37" + }, + "nodeType": "YulExpressionStatement", + "src": "7665:44:37" + } + ] + }, + "evmVersion": "london", + "externalReferences": [ + { + "declaration": 11516, + "isOffset": false, + "isSlot": false, + "src": "7633:10:37", + "valueSize": 1 + }, + { + "declaration": 11516, + "isOffset": false, + "isSlot": false, + "src": "7680:10:37", + "valueSize": 1 + } + ], + "id": 11531, + "nodeType": "InlineAssembly", + "src": "7573:154:37" + } + ] + } + } + ] + }, + "id": 11540, + "nodeType": "IfStatement", + "src": "7230:580:37", + "trueBody": { + "id": 11526, + "nodeType": "Block", + "src": "7243:42:37", + "statements": [ + { + "expression": { + "id": 11524, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11516, + "src": "7264:10:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 11522, + "id": 11525, + "nodeType": "Return", + "src": "7257:17:37" + } + ] + } + } + ] + }, + "id": 11542, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_verifyCallResult", + "nameLocation": "7100:17:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11519, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11514, + "mutability": "mutable", + "name": "success", + "nameLocation": "7123:7:37", + "nodeType": "VariableDeclaration", + "scope": 11542, + "src": "7118:12:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11513, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7118:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11516, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "7145:10:37", + "nodeType": "VariableDeclaration", + "scope": 11542, + "src": "7132:23:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11515, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7132:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11518, + "mutability": "mutable", + "name": "errorMessage", + "nameLocation": "7171:12:37", + "nodeType": "VariableDeclaration", + "scope": 11542, + "src": "7157:26:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11517, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7157:6:37", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "7117:67:37" + }, + "returnParameters": { + "id": 11522, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11521, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11542, + "src": "7206:12:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11520, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7206:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "7205:14:37" + }, + "scope": 11543, + "src": "7091:725:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 11544, + "src": "134:7684:37", + "usedErrors": [] + } + ], + "src": "32:7786:37" + }, + "id": 37 + }, + "contracts/Utils/EnumerableSet.sol": { + "ast": { + "absolutePath": "contracts/Utils/EnumerableSet.sol", + "exportedSymbols": { + "EnumerableSet": [ + 11955 + ] + }, + "id": 11956, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 11545, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "33:25:38" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "EnumerableSet", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 11546, + "nodeType": "StructuredDocumentation", + "src": "60:665:38", + "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.0.0, only sets of type `address` (`AddressSet`) and `uint256`\n (`UintSet`) are supported." + }, + "fullyImplemented": true, + "id": 11955, + "linearizedBaseContracts": [ + 11955 + ], + "name": "EnumerableSet", + "nameLocation": "734:13:38", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "EnumerableSet.Set", + "id": 11554, + "members": [ + { + "constant": false, + "id": 11549, + "mutability": "mutable", + "name": "_values", + "nameLocation": "1258:7:38", + "nodeType": "VariableDeclaration", + "scope": 11554, + "src": "1248:17:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 11547, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1248:7:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 11548, + "nodeType": "ArrayTypeName", + "src": "1248:9:38", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11553, + "mutability": "mutable", + "name": "_indexes", + "nameLocation": "1428:8:38", + "nodeType": "VariableDeclaration", + "scope": 11554, + "src": "1399:37:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "typeName": { + "id": 11552, + "keyType": { + "id": 11550, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1408:7:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1399:28:38", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "valueType": { + "id": 11551, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1419:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + } + ], + "name": "Set", + "nameLocation": "1201:3:38", + "nodeType": "StructDefinition", + "scope": 11955, + "src": "1194:249:38", + "visibility": "public" + }, + { + "body": { + "id": 11595, + "nodeType": "Block", + "src": "1682:335:38", + "statements": [ + { + "condition": { + "id": 11569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1696:22:38", + "subExpression": { + "arguments": [ + { + "id": 11566, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11558, + "src": "1707:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + { + "id": 11567, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11560, + "src": "1712:5:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11565, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11696, + "src": "1697:9:38", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$11554_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 11568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1697:21:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 11593, + "nodeType": "Block", + "src": "1974:37:38", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 11591, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1995:5:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 11564, + "id": 11592, + "nodeType": "Return", + "src": "1988:12:38" + } + ] + }, + "id": 11594, + "nodeType": "IfStatement", + "src": "1692:319:38", + "trueBody": { + "id": 11590, + "nodeType": "Block", + "src": "1720:248:38", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11575, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11560, + "src": "1751:5:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 11570, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11558, + "src": "1734:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 11573, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 11549, + "src": "1734:11:38", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 11574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "src": "1734:16:38", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$bound_to$_t_array$_t_bytes32_$dyn_storage_ptr_$", + "typeString": "function (bytes32[] storage pointer,bytes32)" + } + }, + "id": 11576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1734:23:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11577, + "nodeType": "ExpressionStatement", + "src": "1734:23:38" + }, + { + "expression": { + "id": 11586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 11578, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11558, + "src": "1892:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 11581, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 11553, + "src": "1892:12:38", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 11582, + "indexExpression": { + "id": 11580, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11560, + "src": "1905:5:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1892:19:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "expression": { + "id": 11583, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11558, + "src": "1914:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 11584, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 11549, + "src": "1914:11:38", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 11585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1914:18:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1892:40:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11587, + "nodeType": "ExpressionStatement", + "src": "1892:40:38" + }, + { + "expression": { + "hexValue": "74727565", + "id": 11588, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1953:4:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 11564, + "id": 11589, + "nodeType": "Return", + "src": "1946:11:38" + } + ] + } + } + ] + }, + "documentation": { + "id": 11555, + "nodeType": "StructuredDocumentation", + "src": "1449:159:38", + "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": 11596, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_add", + "nameLocation": "1622:4:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11561, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11558, + "mutability": "mutable", + "name": "set", + "nameLocation": "1639:3:38", + "nodeType": "VariableDeclaration", + "scope": 11596, + "src": "1627:15:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 11557, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11556, + "name": "Set", + "nodeType": "IdentifierPath", + "referencedDeclaration": 11554, + "src": "1627:3:38" + }, + "referencedDeclaration": 11554, + "src": "1627:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11560, + "mutability": "mutable", + "name": "value", + "nameLocation": "1652:5:38", + "nodeType": "VariableDeclaration", + "scope": 11596, + "src": "1644:13:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11559, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1644:7:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1626:32:38" + }, + "returnParameters": { + "id": 11564, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11563, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11596, + "src": "1676:4:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11562, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1676:4:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1675:6:38" + }, + "scope": 11955, + "src": "1613:404:38", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 11676, + "nodeType": "Block", + "src": "2257:1440:38", + "statements": [ + { + "assignments": [ + 11608 + ], + "declarations": [ + { + "constant": false, + "id": 11608, + "mutability": "mutable", + "name": "valueIndex", + "nameLocation": "2375:10:38", + "nodeType": "VariableDeclaration", + "scope": 11676, + "src": "2367:18:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11607, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2367:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 11613, + "initialValue": { + "baseExpression": { + "expression": { + "id": 11609, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11600, + "src": "2388:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 11610, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 11553, + "src": "2388:12:38", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 11612, + "indexExpression": { + "id": 11611, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11602, + "src": "2401:5:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2388:19:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2367:40:38" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11614, + "name": "valueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11608, + "src": "2422:10:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 11615, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2436:1:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2422:15:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 11674, + "nodeType": "Block", + "src": "3654:37:38", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 11672, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3675:5:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 11606, + "id": 11673, + "nodeType": "Return", + "src": "3668:12:38" + } + ] + }, + "id": 11675, + "nodeType": "IfStatement", + "src": "2418:1273:38", + "trueBody": { + "id": 11671, + "nodeType": "Block", + "src": "2439:1209:38", + "statements": [ + { + "assignments": [ + 11618 + ], + "declarations": [ + { + "constant": false, + "id": 11618, + "mutability": "mutable", + "name": "toDeleteIndex", + "nameLocation": "2787:13:38", + "nodeType": "VariableDeclaration", + "scope": 11671, + "src": "2779:21:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11617, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2779:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 11622, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11619, + "name": "valueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11608, + "src": "2803:10:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 11620, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2816:1:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2803:14:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2779:38:38" + }, + { + "assignments": [ + 11624 + ], + "declarations": [ + { + "constant": false, + "id": 11624, + "mutability": "mutable", + "name": "lastIndex", + "nameLocation": "2839:9:38", + "nodeType": "VariableDeclaration", + "scope": 11671, + "src": "2831:17:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11623, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2831:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 11630, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 11625, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11600, + "src": "2851:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 11626, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 11549, + "src": "2851:11:38", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 11627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2851:18:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 11628, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2872:1:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2851:22:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2831:42:38" + }, + { + "assignments": [ + 11632 + ], + "declarations": [ + { + "constant": false, + "id": 11632, + "mutability": "mutable", + "name": "lastvalue", + "nameLocation": "3121:9:38", + "nodeType": "VariableDeclaration", + "scope": 11671, + "src": "3113:17:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11631, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3113:7:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 11637, + "initialValue": { + "baseExpression": { + "expression": { + "id": 11633, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11600, + "src": "3133:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 11634, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 11549, + "src": "3133:11:38", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 11636, + "indexExpression": { + "id": 11635, + "name": "lastIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11624, + "src": "3145:9:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3133:22:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3113:42:38" + }, + { + "expression": { + "id": 11644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 11638, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11600, + "src": "3247:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 11641, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 11549, + "src": "3247:11:38", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 11642, + "indexExpression": { + "id": 11640, + "name": "toDeleteIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11618, + "src": "3259:13:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3247:26:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 11643, + "name": "lastvalue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11632, + "src": "3276:9:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3247:38:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 11645, + "nodeType": "ExpressionStatement", + "src": "3247:38:38" + }, + { + "expression": { + "id": 11654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 11646, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11600, + "src": "3351:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 11649, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 11553, + "src": "3351:12:38", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 11650, + "indexExpression": { + "id": 11648, + "name": "lastvalue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11632, + "src": "3364:9:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3351:23:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11651, + "name": "toDeleteIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11618, + "src": "3377:13:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 11652, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3393:1:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3377:17:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3351:43:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11655, + "nodeType": "ExpressionStatement", + "src": "3351:43:38" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 11656, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11600, + "src": "3500:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 11659, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 11549, + "src": "3500:11:38", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 11660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pop", + "nodeType": "MemberAccess", + "src": "3500:15:38", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$returns$__$bound_to$_t_array$_t_bytes32_$dyn_storage_ptr_$", + "typeString": "function (bytes32[] storage pointer)" + } + }, + "id": 11661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3500:17:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11662, + "nodeType": "ExpressionStatement", + "src": "3500:17:38" + }, + { + "expression": { + "id": 11667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "3585:26:38", + "subExpression": { + "baseExpression": { + "expression": { + "id": 11663, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11600, + "src": "3592:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 11664, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 11553, + "src": "3592:12:38", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 11666, + "indexExpression": { + "id": 11665, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11602, + "src": "3605:5:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3592:19:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11668, + "nodeType": "ExpressionStatement", + "src": "3585:26:38" + }, + { + "expression": { + "hexValue": "74727565", + "id": 11669, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3633:4:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 11606, + "id": 11670, + "nodeType": "Return", + "src": "3626:11:38" + } + ] + } + } + ] + }, + "documentation": { + "id": 11597, + "nodeType": "StructuredDocumentation", + "src": "2023:157:38", + "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": 11677, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_remove", + "nameLocation": "2194:7:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11603, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11600, + "mutability": "mutable", + "name": "set", + "nameLocation": "2214:3:38", + "nodeType": "VariableDeclaration", + "scope": 11677, + "src": "2202:15:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 11599, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11598, + "name": "Set", + "nodeType": "IdentifierPath", + "referencedDeclaration": 11554, + "src": "2202:3:38" + }, + "referencedDeclaration": 11554, + "src": "2202:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11602, + "mutability": "mutable", + "name": "value", + "nameLocation": "2227:5:38", + "nodeType": "VariableDeclaration", + "scope": 11677, + "src": "2219:13:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11601, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2219:7:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2201:32:38" + }, + "returnParameters": { + "id": 11606, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11605, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11677, + "src": "2251:4:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11604, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2251:4:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2250:6:38" + }, + "scope": 11955, + "src": "2185:1512:38", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 11695, + "nodeType": "Block", + "src": "3857:48:38", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 11688, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11681, + "src": "3874:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 11689, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 11553, + "src": "3874:12:38", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 11691, + "indexExpression": { + "id": 11690, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11683, + "src": "3887:5:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3874:19:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 11692, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3897:1:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3874:24:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 11687, + "id": 11694, + "nodeType": "Return", + "src": "3867:31:38" + } + ] + }, + "documentation": { + "id": 11678, + "nodeType": "StructuredDocumentation", + "src": "3703:70:38", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 11696, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_contains", + "nameLocation": "3787:9:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11684, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11681, + "mutability": "mutable", + "name": "set", + "nameLocation": "3809:3:38", + "nodeType": "VariableDeclaration", + "scope": 11696, + "src": "3797:15:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 11680, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11679, + "name": "Set", + "nodeType": "IdentifierPath", + "referencedDeclaration": 11554, + "src": "3797:3:38" + }, + "referencedDeclaration": 11554, + "src": "3797:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11683, + "mutability": "mutable", + "name": "value", + "nameLocation": "3822:5:38", + "nodeType": "VariableDeclaration", + "scope": 11696, + "src": "3814:13:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11682, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3814:7:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3796:32:38" + }, + "returnParameters": { + "id": 11687, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11686, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11696, + "src": "3851:4:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11685, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3851:4:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3850:6:38" + }, + "scope": 11955, + "src": "3778:127:38", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 11709, + "nodeType": "Block", + "src": "4051:42:38", + "statements": [ + { + "expression": { + "expression": { + "expression": { + "id": 11705, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11700, + "src": "4068:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 11706, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 11549, + "src": "4068:11:38", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 11707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4068:18:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 11704, + "id": 11708, + "nodeType": "Return", + "src": "4061:25:38" + } + ] + }, + "documentation": { + "id": 11697, + "nodeType": "StructuredDocumentation", + "src": "3911:70:38", + "text": " @dev Returns the number of values on the set. O(1)." + }, + "id": 11710, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_length", + "nameLocation": "3995:7:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11701, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11700, + "mutability": "mutable", + "name": "set", + "nameLocation": "4015:3:38", + "nodeType": "VariableDeclaration", + "scope": 11710, + "src": "4003:15:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 11699, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11698, + "name": "Set", + "nodeType": "IdentifierPath", + "referencedDeclaration": 11554, + "src": "4003:3:38" + }, + "referencedDeclaration": 11554, + "src": "4003:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "src": "4002:17:38" + }, + "returnParameters": { + "id": 11704, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11703, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11710, + "src": "4042:7:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11702, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4042:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4041:9:38" + }, + "scope": 11955, + "src": "3986:107:38", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 11735, + "nodeType": "Block", + "src": "4501:125:38", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 11722, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11714, + "src": "4519:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 11723, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 11549, + "src": "4519:11:38", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 11724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4519:18:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 11725, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11716, + "src": "4540:5:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4519:26:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473", + "id": 11727, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4547:36:38", + "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": 11721, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4511:7:38", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4511:73:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11729, + "nodeType": "ExpressionStatement", + "src": "4511:73:38" + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 11730, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11714, + "src": "4601:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 11731, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 11549, + "src": "4601:11:38", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 11733, + "indexExpression": { + "id": 11732, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11716, + "src": "4613:5:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4601:18:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 11720, + "id": 11734, + "nodeType": "Return", + "src": "4594:25:38" + } + ] + }, + "documentation": { + "id": 11711, + "nodeType": "StructuredDocumentation", + "src": "4098:322:38", + "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": 11736, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_at", + "nameLocation": "4434:3:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11717, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11714, + "mutability": "mutable", + "name": "set", + "nameLocation": "4450:3:38", + "nodeType": "VariableDeclaration", + "scope": 11736, + "src": "4438:15:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 11713, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11712, + "name": "Set", + "nodeType": "IdentifierPath", + "referencedDeclaration": 11554, + "src": "4438:3:38" + }, + "referencedDeclaration": 11554, + "src": "4438:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11716, + "mutability": "mutable", + "name": "index", + "nameLocation": "4463:5:38", + "nodeType": "VariableDeclaration", + "scope": 11736, + "src": "4455:13:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11715, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4455:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4437:32:38" + }, + "returnParameters": { + "id": 11720, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11719, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11736, + "src": "4492:7:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11718, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4492:7:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4491:9:38" + }, + "scope": 11955, + "src": "4425:201:38", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "canonicalName": "EnumerableSet.AddressSet", + "id": 11740, + "members": [ + { + "constant": false, + "id": 11739, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "4683:6:38", + "nodeType": "VariableDeclaration", + "scope": 11740, + "src": "4679:10:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 11738, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11737, + "name": "Set", + "nodeType": "IdentifierPath", + "referencedDeclaration": 11554, + "src": "4679:3:38" + }, + "referencedDeclaration": 11554, + "src": "4679:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "name": "AddressSet", + "nameLocation": "4658:10:38", + "nodeType": "StructDefinition", + "scope": 11955, + "src": "4651:45:38", + "visibility": "public" + }, + { + "body": { + "id": 11763, + "nodeType": "Block", + "src": "4942:65:38", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 11752, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11744, + "src": "4964:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11740_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 11753, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 11739, + "src": "4964:10:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 11758, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11746, + "src": "4992:5:38", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11757, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4984:7:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes20_$", + "typeString": "type(bytes20)" + }, + "typeName": { + "id": 11756, + "name": "bytes20", + "nodeType": "ElementaryTypeName", + "src": "4984:7:38", + "typeDescriptions": {} + } + }, + "id": 11759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4984:14:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + ], + "id": 11755, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4976:7:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 11754, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4976:7:38", + "typeDescriptions": {} + } + }, + "id": 11760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4976:23:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$11554_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11751, + "name": "_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11596, + "src": "4959:4:38", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$11554_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 11761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4959:41:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 11750, + "id": 11762, + "nodeType": "Return", + "src": "4952:48:38" + } + ] + }, + "documentation": { + "id": 11741, + "nodeType": "StructuredDocumentation", + "src": "4702:159:38", + "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": 11764, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "4875:3:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11747, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11744, + "mutability": "mutable", + "name": "set", + "nameLocation": "4898:3:38", + "nodeType": "VariableDeclaration", + "scope": 11764, + "src": "4879:22:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11740_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 11743, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11742, + "name": "AddressSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 11740, + "src": "4879:10:38" + }, + "referencedDeclaration": 11740, + "src": "4879:10:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11740_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11746, + "mutability": "mutable", + "name": "value", + "nameLocation": "4911:5:38", + "nodeType": "VariableDeclaration", + "scope": 11764, + "src": "4903:13:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11745, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4903:7:38", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4878:39:38" + }, + "returnParameters": { + "id": 11750, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11749, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11764, + "src": "4936:4:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11748, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4936:4:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4935:6:38" + }, + "scope": 11955, + "src": "4866:141:38", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11787, + "nodeType": "Block", + "src": "5254:68:38", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 11776, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11768, + "src": "5279:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11740_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 11777, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 11739, + "src": "5279:10:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 11782, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11770, + "src": "5307:5:38", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11781, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5299:7:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes20_$", + "typeString": "type(bytes20)" + }, + "typeName": { + "id": 11780, + "name": "bytes20", + "nodeType": "ElementaryTypeName", + "src": "5299:7:38", + "typeDescriptions": {} + } + }, + "id": 11783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5299:14:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + ], + "id": 11779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5291:7:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 11778, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5291:7:38", + "typeDescriptions": {} + } + }, + "id": 11784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5291:23:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$11554_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11775, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11677, + "src": "5271:7:38", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$11554_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 11785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5271:44:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 11774, + "id": 11786, + "nodeType": "Return", + "src": "5264:51:38" + } + ] + }, + "documentation": { + "id": 11765, + "nodeType": "StructuredDocumentation", + "src": "5013:157:38", + "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": 11788, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "5184:6:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11771, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11768, + "mutability": "mutable", + "name": "set", + "nameLocation": "5210:3:38", + "nodeType": "VariableDeclaration", + "scope": 11788, + "src": "5191:22:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11740_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 11767, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11766, + "name": "AddressSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 11740, + "src": "5191:10:38" + }, + "referencedDeclaration": 11740, + "src": "5191:10:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11740_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11770, + "mutability": "mutable", + "name": "value", + "nameLocation": "5223:5:38", + "nodeType": "VariableDeclaration", + "scope": 11788, + "src": "5215:13:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11769, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5215:7:38", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5190:39:38" + }, + "returnParameters": { + "id": 11774, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11773, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11788, + "src": "5248:4:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11772, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5248:4:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5247:6:38" + }, + "scope": 11955, + "src": "5175:147:38", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11811, + "nodeType": "Block", + "src": "5489:70:38", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 11800, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11792, + "src": "5516:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11740_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 11801, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 11739, + "src": "5516:10:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 11806, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11794, + "src": "5544:5:38", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11805, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5536:7:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes20_$", + "typeString": "type(bytes20)" + }, + "typeName": { + "id": 11804, + "name": "bytes20", + "nodeType": "ElementaryTypeName", + "src": "5536:7:38", + "typeDescriptions": {} + } + }, + "id": 11807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5536:14:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + ], + "id": 11803, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5528:7:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 11802, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5528:7:38", + "typeDescriptions": {} + } + }, + "id": 11808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5528:23:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$11554_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11799, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11696, + "src": "5506:9:38", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$11554_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 11809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5506:46:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 11798, + "id": 11810, + "nodeType": "Return", + "src": "5499:53:38" + } + ] + }, + "documentation": { + "id": 11789, + "nodeType": "StructuredDocumentation", + "src": "5328:70:38", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 11812, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "5412:8:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11795, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11792, + "mutability": "mutable", + "name": "set", + "nameLocation": "5440:3:38", + "nodeType": "VariableDeclaration", + "scope": 11812, + "src": "5421:22:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11740_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 11791, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11790, + "name": "AddressSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 11740, + "src": "5421:10:38" + }, + "referencedDeclaration": 11740, + "src": "5421:10:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11740_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11794, + "mutability": "mutable", + "name": "value", + "nameLocation": "5453:5:38", + "nodeType": "VariableDeclaration", + "scope": 11812, + "src": "5445:13:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11793, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5445:7:38", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5420:39:38" + }, + "returnParameters": { + "id": 11798, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11797, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11812, + "src": "5483:4:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11796, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5483:4:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5482:6:38" + }, + "scope": 11955, + "src": "5403:156:38", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11826, + "nodeType": "Block", + "src": "5712:43:38", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 11822, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11816, + "src": "5737:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11740_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 11823, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 11739, + "src": "5737:10:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$11554_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 11821, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11710, + "src": "5729:7:38", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$11554_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)" + } + }, + "id": 11824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5729:19:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 11820, + "id": 11825, + "nodeType": "Return", + "src": "5722:26:38" + } + ] + }, + "documentation": { + "id": 11813, + "nodeType": "StructuredDocumentation", + "src": "5565:70:38", + "text": " @dev Returns the number of values in the set. O(1)." + }, + "id": 11827, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "5649:6:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11817, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11816, + "mutability": "mutable", + "name": "set", + "nameLocation": "5675:3:38", + "nodeType": "VariableDeclaration", + "scope": 11827, + "src": "5656:22:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11740_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 11815, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11814, + "name": "AddressSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 11740, + "src": "5656:10:38" + }, + "referencedDeclaration": 11740, + "src": "5656:10:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11740_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + } + ], + "src": "5655:24:38" + }, + "returnParameters": { + "id": 11820, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11819, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11827, + "src": "5703:7:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11818, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5703:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5702:9:38" + }, + "scope": 11955, + "src": "5640:115:38", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11850, + "nodeType": "Block", + "src": "6170:64:38", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 11843, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11831, + "src": "6207:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11740_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 11844, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 11739, + "src": "6207:10:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 11845, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11833, + "src": "6219:5:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$11554_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11842, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11736, + "src": "6203:3:38", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$11554_storage_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)" + } + }, + "id": 11846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6203:22:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11841, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6195:7:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes20_$", + "typeString": "type(bytes20)" + }, + "typeName": { + "id": 11840, + "name": "bytes20", + "nodeType": "ElementaryTypeName", + "src": "6195:7:38", + "typeDescriptions": {} + } + }, + "id": 11847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6195:31:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + ], + "id": 11839, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6187:7:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11838, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6187:7:38", + "typeDescriptions": {} + } + }, + "id": 11848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6187:40:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 11837, + "id": 11849, + "nodeType": "Return", + "src": "6180:47:38" + } + ] + }, + "documentation": { + "id": 11828, + "nodeType": "StructuredDocumentation", + "src": "5760:322:38", + "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": 11851, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "6096:2:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11834, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11831, + "mutability": "mutable", + "name": "set", + "nameLocation": "6118:3:38", + "nodeType": "VariableDeclaration", + "scope": 11851, + "src": "6099:22:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11740_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 11830, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11829, + "name": "AddressSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 11740, + "src": "6099:10:38" + }, + "referencedDeclaration": 11740, + "src": "6099:10:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11740_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11833, + "mutability": "mutable", + "name": "index", + "nameLocation": "6131:5:38", + "nodeType": "VariableDeclaration", + "scope": 11851, + "src": "6123:13:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11832, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6123:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6098:39:38" + }, + "returnParameters": { + "id": 11837, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11836, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11851, + "src": "6161:7:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11835, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6161:7:38", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6160:9:38" + }, + "scope": 11955, + "src": "6087:147:38", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "canonicalName": "EnumerableSet.UintSet", + "id": 11855, + "members": [ + { + "constant": false, + "id": 11854, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "6286:6:38", + "nodeType": "VariableDeclaration", + "scope": 11855, + "src": "6282:10:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 11853, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11852, + "name": "Set", + "nodeType": "IdentifierPath", + "referencedDeclaration": 11554, + "src": "6282:3:38" + }, + "referencedDeclaration": 11554, + "src": "6282:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "name": "UintSet", + "nameLocation": "6264:7:38", + "nodeType": "StructDefinition", + "scope": 11955, + "src": "6257:42:38", + "visibility": "public" + }, + { + "body": { + "id": 11875, + "nodeType": "Block", + "src": "6542:56:38", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 11867, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11859, + "src": "6564:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$11855_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 11868, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 11854, + "src": "6564:10:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "id": 11871, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11861, + "src": "6584:5:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11870, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6576:7:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 11869, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6576:7:38", + "typeDescriptions": {} + } + }, + "id": 11872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6576:14:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$11554_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11866, + "name": "_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11596, + "src": "6559:4:38", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$11554_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 11873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6559:32:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 11865, + "id": 11874, + "nodeType": "Return", + "src": "6552:39:38" + } + ] + }, + "documentation": { + "id": 11856, + "nodeType": "StructuredDocumentation", + "src": "6305:159:38", + "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": 11876, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "6478:3:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11862, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11859, + "mutability": "mutable", + "name": "set", + "nameLocation": "6498:3:38", + "nodeType": "VariableDeclaration", + "scope": 11876, + "src": "6482:19:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$11855_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 11858, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11857, + "name": "UintSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 11855, + "src": "6482:7:38" + }, + "referencedDeclaration": 11855, + "src": "6482:7:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$11855_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11861, + "mutability": "mutable", + "name": "value", + "nameLocation": "6511:5:38", + "nodeType": "VariableDeclaration", + "scope": 11876, + "src": "6503:13:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11860, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6503:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6481:36:38" + }, + "returnParameters": { + "id": 11865, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11864, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11876, + "src": "6536:4:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11863, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6536:4:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6535:6:38" + }, + "scope": 11955, + "src": "6469:129:38", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11896, + "nodeType": "Block", + "src": "6842:59:38", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 11888, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11880, + "src": "6867:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$11855_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 11889, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 11854, + "src": "6867:10:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "id": 11892, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11882, + "src": "6887:5:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11891, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6879:7:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 11890, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6879:7:38", + "typeDescriptions": {} + } + }, + "id": 11893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6879:14:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$11554_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11887, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11677, + "src": "6859:7:38", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$11554_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 11894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6859:35:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 11886, + "id": 11895, + "nodeType": "Return", + "src": "6852:42:38" + } + ] + }, + "documentation": { + "id": 11877, + "nodeType": "StructuredDocumentation", + "src": "6604:157:38", + "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": 11897, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "6775:6:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11883, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11880, + "mutability": "mutable", + "name": "set", + "nameLocation": "6798:3:38", + "nodeType": "VariableDeclaration", + "scope": 11897, + "src": "6782:19:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$11855_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 11879, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11878, + "name": "UintSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 11855, + "src": "6782:7:38" + }, + "referencedDeclaration": 11855, + "src": "6782:7:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$11855_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11882, + "mutability": "mutable", + "name": "value", + "nameLocation": "6811:5:38", + "nodeType": "VariableDeclaration", + "scope": 11897, + "src": "6803:13:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11881, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6803:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6781:36:38" + }, + "returnParameters": { + "id": 11886, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11885, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11897, + "src": "6836:4:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11884, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6836:4:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6835:6:38" + }, + "scope": 11955, + "src": "6766:135:38", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11917, + "nodeType": "Block", + "src": "7065:61:38", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 11909, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11901, + "src": "7092:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$11855_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 11910, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 11854, + "src": "7092:10:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "id": 11913, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11903, + "src": "7112:5:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11912, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7104:7:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 11911, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7104:7:38", + "typeDescriptions": {} + } + }, + "id": 11914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7104:14:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$11554_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11908, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11696, + "src": "7082:9:38", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$11554_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 11915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7082:37:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 11907, + "id": 11916, + "nodeType": "Return", + "src": "7075:44:38" + } + ] + }, + "documentation": { + "id": 11898, + "nodeType": "StructuredDocumentation", + "src": "6907:70:38", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 11918, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "6991:8:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11904, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11901, + "mutability": "mutable", + "name": "set", + "nameLocation": "7016:3:38", + "nodeType": "VariableDeclaration", + "scope": 11918, + "src": "7000:19:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$11855_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 11900, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11899, + "name": "UintSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 11855, + "src": "7000:7:38" + }, + "referencedDeclaration": 11855, + "src": "7000:7:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$11855_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11903, + "mutability": "mutable", + "name": "value", + "nameLocation": "7029:5:38", + "nodeType": "VariableDeclaration", + "scope": 11918, + "src": "7021:13:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11902, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7021:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6999:36:38" + }, + "returnParameters": { + "id": 11907, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11906, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11918, + "src": "7059:4:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11905, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7059:4:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "7058:6:38" + }, + "scope": 11955, + "src": "6982:144:38", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11932, + "nodeType": "Block", + "src": "7276:43:38", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 11928, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11922, + "src": "7301:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$11855_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 11929, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 11854, + "src": "7301:10:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$11554_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 11927, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11710, + "src": "7293:7:38", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$11554_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)" + } + }, + "id": 11930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7293:19:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 11926, + "id": 11931, + "nodeType": "Return", + "src": "7286:26:38" + } + ] + }, + "documentation": { + "id": 11919, + "nodeType": "StructuredDocumentation", + "src": "7132:70:38", + "text": " @dev Returns the number of values on the set. O(1)." + }, + "id": 11933, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "7216:6:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11923, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11922, + "mutability": "mutable", + "name": "set", + "nameLocation": "7239:3:38", + "nodeType": "VariableDeclaration", + "scope": 11933, + "src": "7223:19:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$11855_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 11921, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11920, + "name": "UintSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 11855, + "src": "7223:7:38" + }, + "referencedDeclaration": 11855, + "src": "7223:7:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$11855_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + } + ], + "src": "7222:21:38" + }, + "returnParameters": { + "id": 11926, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11925, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11933, + "src": "7267:7:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11924, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7267:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7266:9:38" + }, + "scope": 11955, + "src": "7207:112:38", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11953, + "nodeType": "Block", + "src": "7731:55:38", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 11947, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11937, + "src": "7760:3:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$11855_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 11948, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 11854, + "src": "7760:10:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$11554_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 11949, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11939, + "src": "7772:5:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$11554_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11946, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11736, + "src": "7756:3:38", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$11554_storage_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)" + } + }, + "id": 11950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7756:22:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11945, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7748:7:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 11944, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7748:7:38", + "typeDescriptions": {} + } + }, + "id": 11951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7748:31:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 11943, + "id": 11952, + "nodeType": "Return", + "src": "7741:38:38" + } + ] + }, + "documentation": { + "id": 11934, + "nodeType": "StructuredDocumentation", + "src": "7324:322:38", + "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": 11954, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "7660:2:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11940, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11937, + "mutability": "mutable", + "name": "set", + "nameLocation": "7679:3:38", + "nodeType": "VariableDeclaration", + "scope": 11954, + "src": "7663:19:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$11855_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 11936, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11935, + "name": "UintSet", + "nodeType": "IdentifierPath", + "referencedDeclaration": 11855, + "src": "7663:7:38" + }, + "referencedDeclaration": 11855, + "src": "7663:7:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$11855_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11939, + "mutability": "mutable", + "name": "index", + "nameLocation": "7692:5:38", + "nodeType": "VariableDeclaration", + "scope": 11954, + "src": "7684:13:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11938, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7684:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7662:36:38" + }, + "returnParameters": { + "id": 11943, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11942, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11954, + "src": "7722:7:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11941, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7722:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7721:9:38" + }, + "scope": 11955, + "src": "7651:135:38", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 11956, + "src": "726:7062:38", + "usedErrors": [] + } + ], + "src": "33:7756:38" + }, + "id": 38 + } + } + } +} diff --git a/artifacts/build-info/f9073a711ac5d4ac2bdf81541504b7c4.json b/artifacts/build-info/f9073a711ac5d4ac2bdf81541504b7c4.json new file mode 100644 index 00000000..a86ae949 --- /dev/null +++ b/artifacts/build-info/f9073a711ac5d4ac2bdf81541504b7c4.json @@ -0,0 +1,6903 @@ +{ + "id": "f9073a711ac5d4ac2bdf81541504b7c4", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.10", + "solcLongVersion": "0.8.10+commit.fc410830", + "input": { + "language": "Solidity", + "sources": { + "contracts/Uniswap/Interfaces/IUniswapV2Router01.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\ninterface IUniswapV2Router01 {\n function factory() external returns (address);\n function WETH() external returns (address);\n\n function addLiquidity(\n address tokenA,\n address tokenB,\n uint amountADesired,\n uint amountBDesired,\n uint amountAMin,\n uint amountBMin,\n address to,\n uint deadline\n ) external returns (uint amountA, uint amountB, uint liquidity);\n function addLiquidityETH(\n address token,\n uint amountTokenDesired,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline\n ) external payable returns (uint amountToken, uint amountETH, uint liquidity);\n function removeLiquidity(\n address tokenA,\n address tokenB,\n uint liquidity,\n uint amountAMin,\n uint amountBMin,\n address to,\n uint deadline\n ) external returns (uint amountA, uint amountB);\n function removeLiquidityETH(\n address token,\n uint liquidity,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline\n ) external returns (uint amountToken, uint amountETH);\n function removeLiquidityWithPermit(\n address tokenA,\n address tokenB,\n uint liquidity,\n uint amountAMin,\n uint amountBMin,\n address to,\n uint deadline,\n bool approveMax, uint8 v, bytes32 r, bytes32 s\n ) external returns (uint amountA, uint amountB);\n function removeLiquidityETHWithPermit(\n address token,\n uint liquidity,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline,\n bool approveMax, uint8 v, bytes32 r, bytes32 s\n ) external returns (uint amountToken, uint amountETH);\n function swapExactTokensForTokens(\n uint amountIn,\n uint amountOutMin,\n address[] calldata path,\n address to,\n uint deadline\n ) external returns (uint[] memory amounts);\n function swapTokensForExactTokens(\n uint amountOut,\n uint amountInMax,\n address[] calldata path,\n address to,\n uint deadline\n ) external returns (uint[] memory amounts);\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\n external\n payable\n returns (uint[] memory amounts);\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\n external\n returns (uint[] memory amounts);\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\n external\n returns (uint[] memory amounts);\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\n external\n payable\n returns (uint[] memory amounts);\n\n function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);\n function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);\n function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);\n}" + }, + "contracts/Uniswap/Interfaces/IUniswapV2Router02.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\nimport './IUniswapV2Router01.sol';\n\ninterface IUniswapV2Router02 is IUniswapV2Router01 {\n function removeLiquidityETHSupportingFeeOnTransferTokens(\n address token,\n uint liquidity,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline\n ) external returns (uint amountETH);\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\n address token,\n uint liquidity,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline,\n bool approveMax, uint8 v, bytes32 r, bytes32 s\n ) external returns (uint amountETH);\n\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\n uint amountIn,\n uint amountOutMin,\n address[] calldata path,\n address to,\n uint deadline\n ) external;\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\n uint amountOutMin,\n address[] calldata path,\n address to,\n uint deadline\n ) external payable;\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\n uint amountIn,\n uint amountOutMin,\n address[] calldata path,\n address to,\n uint deadline\n ) external;\n}" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "output": { + "contracts": { + "contracts/Uniswap/Interfaces/IUniswapV2Router01.sol": { + "IUniswapV2Router01": { + "abi": [ + { + "inputs": [], + "name": "WETH", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountTokenDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveB", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapETHForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "WETH()": "ad5c4648", + "addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)": "e8e33700", + "addLiquidityETH(address,uint256,uint256,uint256,address,uint256)": "f305d719", + "factory()": "c45a0155", + "getAmountIn(uint256,uint256,uint256)": "85f8c259", + "getAmountOut(uint256,uint256,uint256)": "054d50d4", + "getAmountsIn(uint256,address[])": "1f00ca74", + "getAmountsOut(uint256,address[])": "d06ca61f", + "quote(uint256,uint256,uint256)": "ad615dec", + "removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)": "baa2abde", + "removeLiquidityETH(address,uint256,uint256,uint256,address,uint256)": "02751cec", + "removeLiquidityETHWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "ded9382a", + "removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "2195995c", + "swapETHForExactTokens(uint256,address[],address,uint256)": "fb3bdb41", + "swapExactETHForTokens(uint256,address[],address,uint256)": "7ff36ab5", + "swapExactTokensForETH(uint256,uint256,address[],address,uint256)": "18cbafe5", + "swapExactTokensForTokens(uint256,uint256,address[],address,uint256)": "38ed1739", + "swapTokensForExactETH(uint256,uint256,address[],address,uint256)": "4a25d94a", + "swapTokensForExactTokens(uint256,uint256,address[],address,uint256)": "8803dbee" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Uniswap/Interfaces/IUniswapV2Router01.sol\":\"IUniswapV2Router01\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Uniswap/Interfaces/IUniswapV2Router01.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ninterface IUniswapV2Router01 {\\n function factory() external returns (address);\\n function WETH() external returns (address);\\n\\n function addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB, uint liquidity);\\n function addLiquidityETH(\\n address token,\\n uint amountTokenDesired,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external payable returns (uint amountToken, uint amountETH, uint liquidity);\\n function removeLiquidity(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETH(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountToken, uint amountETH);\\n function removeLiquidityWithPermit(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETHWithPermit(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountToken, uint amountETH);\\n function swapExactTokensForTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapTokensForExactTokens(\\n uint amountOut,\\n uint amountInMax,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n\\n function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);\\n function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);\\n function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);\\n}\",\"keccak256\":\"0xeabce02109412c9f4bee1d7caa7360ecd118179a57a43673d339e8b694dc5a62\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/Uniswap/Interfaces/IUniswapV2Router02.sol": { + "IUniswapV2Router02": { + "abi": [ + { + "inputs": [], + "name": "WETH", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountTokenDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveB", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETHSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapETHForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETHSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "WETH()": "ad5c4648", + "addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)": "e8e33700", + "addLiquidityETH(address,uint256,uint256,uint256,address,uint256)": "f305d719", + "factory()": "c45a0155", + "getAmountIn(uint256,uint256,uint256)": "85f8c259", + "getAmountOut(uint256,uint256,uint256)": "054d50d4", + "getAmountsIn(uint256,address[])": "1f00ca74", + "getAmountsOut(uint256,address[])": "d06ca61f", + "quote(uint256,uint256,uint256)": "ad615dec", + "removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)": "baa2abde", + "removeLiquidityETH(address,uint256,uint256,uint256,address,uint256)": "02751cec", + "removeLiquidityETHSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256)": "af2979eb", + "removeLiquidityETHWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "ded9382a", + "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "5b0d5984", + "removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "2195995c", + "swapETHForExactTokens(uint256,address[],address,uint256)": "fb3bdb41", + "swapExactETHForTokens(uint256,address[],address,uint256)": "7ff36ab5", + "swapExactETHForTokensSupportingFeeOnTransferTokens(uint256,address[],address,uint256)": "b6f9de95", + "swapExactTokensForETH(uint256,uint256,address[],address,uint256)": "18cbafe5", + "swapExactTokensForETHSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)": "791ac947", + "swapExactTokensForTokens(uint256,uint256,address[],address,uint256)": "38ed1739", + "swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)": "5c11d795", + "swapTokensForExactETH(uint256,uint256,address[],address,uint256)": "4a25d94a", + "swapTokensForExactTokens(uint256,uint256,address[],address,uint256)": "8803dbee" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETHSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETHSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Uniswap/Interfaces/IUniswapV2Router02.sol\":\"IUniswapV2Router02\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Uniswap/Interfaces/IUniswapV2Router01.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\ninterface IUniswapV2Router01 {\\n function factory() external returns (address);\\n function WETH() external returns (address);\\n\\n function addLiquidity(\\n address tokenA,\\n address tokenB,\\n uint amountADesired,\\n uint amountBDesired,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB, uint liquidity);\\n function addLiquidityETH(\\n address token,\\n uint amountTokenDesired,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external payable returns (uint amountToken, uint amountETH, uint liquidity);\\n function removeLiquidity(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETH(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountToken, uint amountETH);\\n function removeLiquidityWithPermit(\\n address tokenA,\\n address tokenB,\\n uint liquidity,\\n uint amountAMin,\\n uint amountBMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountA, uint amountB);\\n function removeLiquidityETHWithPermit(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountToken, uint amountETH);\\n function swapExactTokensForTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapTokensForExactTokens(\\n uint amountOut,\\n uint amountInMax,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external returns (uint[] memory amounts);\\n function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\\n external\\n returns (uint[] memory amounts);\\n function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\\n external\\n payable\\n returns (uint[] memory amounts);\\n\\n function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);\\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);\\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);\\n function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);\\n function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);\\n}\",\"keccak256\":\"0xeabce02109412c9f4bee1d7caa7360ecd118179a57a43673d339e8b694dc5a62\",\"license\":\"MIT\"},\"contracts/Uniswap/Interfaces/IUniswapV2Router02.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport './IUniswapV2Router01.sol';\\n\\ninterface IUniswapV2Router02 is IUniswapV2Router01 {\\n function removeLiquidityETHSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline\\n ) external returns (uint amountETH);\\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\\n address token,\\n uint liquidity,\\n uint amountTokenMin,\\n uint amountETHMin,\\n address to,\\n uint deadline,\\n bool approveMax, uint8 v, bytes32 r, bytes32 s\\n ) external returns (uint amountETH);\\n\\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external;\\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external payable;\\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\\n uint amountIn,\\n uint amountOutMin,\\n address[] calldata path,\\n address to,\\n uint deadline\\n ) external;\\n}\",\"keccak256\":\"0xa260f59077dcc7d0197e567b8526d1e4ab998fbfd364b9ab84cc4dc7c81253e7\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "sources": { + "contracts/Uniswap/Interfaces/IUniswapV2Router01.sol": { + "ast": { + "absolutePath": "contracts/Uniswap/Interfaces/IUniswapV2Router01.sol", + "exportedSymbols": { + "IUniswapV2Router01": [ + 307 + ] + }, + "id": 308, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IUniswapV2Router01", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 307, + "linearizedBaseContracts": [ + 307 + ], + "name": "IUniswapV2Router01", + "nameLocation": "69:18:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "c45a0155", + "id": 6, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "factory", + "nameLocation": "103:7:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2, + "nodeType": "ParameterList", + "parameters": [], + "src": "110:2:0" + }, + "returnParameters": { + "id": 5, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6, + "src": "131:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "131:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "130:9:0" + }, + "scope": 307, + "src": "94:46:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "ad5c4648", + "id": 11, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "WETH", + "nameLocation": "154:4:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7, + "nodeType": "ParameterList", + "parameters": [], + "src": "158:2:0" + }, + "returnParameters": { + "id": 10, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11, + "src": "179:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "179:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "178:9:0" + }, + "scope": 307, + "src": "145:43:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e8e33700", + "id": 36, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "addLiquidity", + "nameLocation": "203:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 28, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "233:6:0", + "nodeType": "VariableDeclaration", + "scope": 36, + "src": "225:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "225:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "257:6:0", + "nodeType": "VariableDeclaration", + "scope": 36, + "src": "249:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "249:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 17, + "mutability": "mutable", + "name": "amountADesired", + "nameLocation": "278:14:0", + "nodeType": "VariableDeclaration", + "scope": 36, + "src": "273:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 16, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "273:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 19, + "mutability": "mutable", + "name": "amountBDesired", + "nameLocation": "307:14:0", + "nodeType": "VariableDeclaration", + "scope": 36, + "src": "302:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 18, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "302:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 21, + "mutability": "mutable", + "name": "amountAMin", + "nameLocation": "336:10:0", + "nodeType": "VariableDeclaration", + "scope": 36, + "src": "331:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 20, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "331:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 23, + "mutability": "mutable", + "name": "amountBMin", + "nameLocation": "361:10:0", + "nodeType": "VariableDeclaration", + "scope": 36, + "src": "356:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 22, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "356:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 25, + "mutability": "mutable", + "name": "to", + "nameLocation": "389:2:0", + "nodeType": "VariableDeclaration", + "scope": 36, + "src": "381:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 24, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "381:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 27, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "406:8:0", + "nodeType": "VariableDeclaration", + "scope": 36, + "src": "401:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 26, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "401:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "215:205:0" + }, + "returnParameters": { + "id": 35, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 30, + "mutability": "mutable", + "name": "amountA", + "nameLocation": "444:7:0", + "nodeType": "VariableDeclaration", + "scope": 36, + "src": "439:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 29, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "439:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 32, + "mutability": "mutable", + "name": "amountB", + "nameLocation": "458:7:0", + "nodeType": "VariableDeclaration", + "scope": 36, + "src": "453:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 31, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "453:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 34, + "mutability": "mutable", + "name": "liquidity", + "nameLocation": "472:9:0", + "nodeType": "VariableDeclaration", + "scope": 36, + "src": "467:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 33, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "467:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "438:44:0" + }, + "scope": 307, + "src": "194:289:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "f305d719", + "id": 57, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "addLiquidityETH", + "nameLocation": "497:15:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 49, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 38, + "mutability": "mutable", + "name": "token", + "nameLocation": "530:5:0", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "522:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 37, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "522:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 40, + "mutability": "mutable", + "name": "amountTokenDesired", + "nameLocation": "550:18:0", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "545:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 39, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "545:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 42, + "mutability": "mutable", + "name": "amountTokenMin", + "nameLocation": "583:14:0", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "578:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 41, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "578:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44, + "mutability": "mutable", + "name": "amountETHMin", + "nameLocation": "612:12:0", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "607:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 43, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "607:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 46, + "mutability": "mutable", + "name": "to", + "nameLocation": "642:2:0", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "634:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 45, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "634:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 48, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "659:8:0", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "654:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 47, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "654:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "512:161:0" + }, + "returnParameters": { + "id": 56, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 51, + "mutability": "mutable", + "name": "amountToken", + "nameLocation": "705:11:0", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "700:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 50, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "700:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 53, + "mutability": "mutable", + "name": "amountETH", + "nameLocation": "723:9:0", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "718:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 52, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "718:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 55, + "mutability": "mutable", + "name": "liquidity", + "nameLocation": "739:9:0", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "734:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 54, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "734:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "699:50:0" + }, + "scope": 307, + "src": "488:262:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "baa2abde", + "id": 78, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidity", + "nameLocation": "764:15:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 72, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 59, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "797:6:0", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "789:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 58, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "789:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 61, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "821:6:0", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "813:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 60, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "813:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 63, + "mutability": "mutable", + "name": "liquidity", + "nameLocation": "842:9:0", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "837:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 62, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "837:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65, + "mutability": "mutable", + "name": "amountAMin", + "nameLocation": "866:10:0", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "861:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 64, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "861:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 67, + "mutability": "mutable", + "name": "amountBMin", + "nameLocation": "891:10:0", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "886:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 66, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "886:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 69, + "mutability": "mutable", + "name": "to", + "nameLocation": "919:2:0", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "911:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 68, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "911:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 71, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "936:8:0", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "931:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 70, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "931:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "779:171:0" + }, + "returnParameters": { + "id": 77, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 74, + "mutability": "mutable", + "name": "amountA", + "nameLocation": "974:7:0", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "969:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 73, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "969:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 76, + "mutability": "mutable", + "name": "amountB", + "nameLocation": "988:7:0", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "983:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 75, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "983:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "968:28:0" + }, + "scope": 307, + "src": "755:242:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "02751cec", + "id": 97, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidityETH", + "nameLocation": "1011:18:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 91, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 80, + "mutability": "mutable", + "name": "token", + "nameLocation": "1047:5:0", + "nodeType": "VariableDeclaration", + "scope": 97, + "src": "1039:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 79, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1039:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 82, + "mutability": "mutable", + "name": "liquidity", + "nameLocation": "1067:9:0", + "nodeType": "VariableDeclaration", + "scope": 97, + "src": "1062:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 81, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1062:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 84, + "mutability": "mutable", + "name": "amountTokenMin", + "nameLocation": "1091:14:0", + "nodeType": "VariableDeclaration", + "scope": 97, + "src": "1086:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 83, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1086:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 86, + "mutability": "mutable", + "name": "amountETHMin", + "nameLocation": "1120:12:0", + "nodeType": "VariableDeclaration", + "scope": 97, + "src": "1115:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 85, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1115:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 88, + "mutability": "mutable", + "name": "to", + "nameLocation": "1150:2:0", + "nodeType": "VariableDeclaration", + "scope": 97, + "src": "1142:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 87, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1142:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 90, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "1167:8:0", + "nodeType": "VariableDeclaration", + "scope": 97, + "src": "1162:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 89, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1162:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1029:152:0" + }, + "returnParameters": { + "id": 96, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 93, + "mutability": "mutable", + "name": "amountToken", + "nameLocation": "1205:11:0", + "nodeType": "VariableDeclaration", + "scope": 97, + "src": "1200:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 92, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1200:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 95, + "mutability": "mutable", + "name": "amountETH", + "nameLocation": "1223:9:0", + "nodeType": "VariableDeclaration", + "scope": 97, + "src": "1218:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 94, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1218:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1199:34:0" + }, + "scope": 307, + "src": "1002:232:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "2195995c", + "id": 126, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidityWithPermit", + "nameLocation": "1248:25:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 120, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 99, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "1291:6:0", + "nodeType": "VariableDeclaration", + "scope": 126, + "src": "1283:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 98, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1283:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 101, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "1315:6:0", + "nodeType": "VariableDeclaration", + "scope": 126, + "src": "1307:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 100, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1307:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 103, + "mutability": "mutable", + "name": "liquidity", + "nameLocation": "1336:9:0", + "nodeType": "VariableDeclaration", + "scope": 126, + "src": "1331:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 102, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1331:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 105, + "mutability": "mutable", + "name": "amountAMin", + "nameLocation": "1360:10:0", + "nodeType": "VariableDeclaration", + "scope": 126, + "src": "1355:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 104, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1355:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 107, + "mutability": "mutable", + "name": "amountBMin", + "nameLocation": "1385:10:0", + "nodeType": "VariableDeclaration", + "scope": 126, + "src": "1380:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 106, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1380:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 109, + "mutability": "mutable", + "name": "to", + "nameLocation": "1413:2:0", + "nodeType": "VariableDeclaration", + "scope": 126, + "src": "1405:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 108, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1405:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 111, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "1430:8:0", + "nodeType": "VariableDeclaration", + "scope": 126, + "src": "1425:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 110, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1425:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 113, + "mutability": "mutable", + "name": "approveMax", + "nameLocation": "1453:10:0", + "nodeType": "VariableDeclaration", + "scope": 126, + "src": "1448:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 112, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1448:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 115, + "mutability": "mutable", + "name": "v", + "nameLocation": "1471:1:0", + "nodeType": "VariableDeclaration", + "scope": 126, + "src": "1465:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 114, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1465:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 117, + "mutability": "mutable", + "name": "r", + "nameLocation": "1482:1:0", + "nodeType": "VariableDeclaration", + "scope": 126, + "src": "1474:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 116, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1474:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 119, + "mutability": "mutable", + "name": "s", + "nameLocation": "1493:1:0", + "nodeType": "VariableDeclaration", + "scope": 126, + "src": "1485:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 118, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1485:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1273:227:0" + }, + "returnParameters": { + "id": 125, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 122, + "mutability": "mutable", + "name": "amountA", + "nameLocation": "1524:7:0", + "nodeType": "VariableDeclaration", + "scope": 126, + "src": "1519:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 121, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1519:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 124, + "mutability": "mutable", + "name": "amountB", + "nameLocation": "1538:7:0", + "nodeType": "VariableDeclaration", + "scope": 126, + "src": "1533:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 123, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1533:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1518:28:0" + }, + "scope": 307, + "src": "1239:308:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "ded9382a", + "id": 153, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidityETHWithPermit", + "nameLocation": "1561:28:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 147, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 128, + "mutability": "mutable", + "name": "token", + "nameLocation": "1607:5:0", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "1599:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 127, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1599:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 130, + "mutability": "mutable", + "name": "liquidity", + "nameLocation": "1627:9:0", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "1622:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 129, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1622:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 132, + "mutability": "mutable", + "name": "amountTokenMin", + "nameLocation": "1651:14:0", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "1646:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 131, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1646:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 134, + "mutability": "mutable", + "name": "amountETHMin", + "nameLocation": "1680:12:0", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "1675:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 133, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1675:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 136, + "mutability": "mutable", + "name": "to", + "nameLocation": "1710:2:0", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "1702:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 135, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1702:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 138, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "1727:8:0", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "1722:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 137, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1722:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 140, + "mutability": "mutable", + "name": "approveMax", + "nameLocation": "1750:10:0", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "1745:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 139, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1745:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 142, + "mutability": "mutable", + "name": "v", + "nameLocation": "1768:1:0", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "1762:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 141, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1762:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 144, + "mutability": "mutable", + "name": "r", + "nameLocation": "1779:1:0", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "1771:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 143, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1771:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 146, + "mutability": "mutable", + "name": "s", + "nameLocation": "1790:1:0", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "1782:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 145, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1782:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1589:208:0" + }, + "returnParameters": { + "id": 152, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 149, + "mutability": "mutable", + "name": "amountToken", + "nameLocation": "1821:11:0", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "1816:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 148, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1816:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 151, + "mutability": "mutable", + "name": "amountETH", + "nameLocation": "1839:9:0", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "1834:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 150, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1834:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1815:34:0" + }, + "scope": 307, + "src": "1552:298:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "38ed1739", + "id": 170, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactTokensForTokens", + "nameLocation": "1864:24:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 165, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 155, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "1903:8:0", + "nodeType": "VariableDeclaration", + "scope": 170, + "src": "1898:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 154, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1898:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 157, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "1926:12:0", + "nodeType": "VariableDeclaration", + "scope": 170, + "src": "1921:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 156, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1921:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 160, + "mutability": "mutable", + "name": "path", + "nameLocation": "1967:4:0", + "nodeType": "VariableDeclaration", + "scope": 170, + "src": "1948:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 158, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1948:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 159, + "nodeType": "ArrayTypeName", + "src": "1948:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 162, + "mutability": "mutable", + "name": "to", + "nameLocation": "1989:2:0", + "nodeType": "VariableDeclaration", + "scope": 170, + "src": "1981:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 161, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1981:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 164, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "2006:8:0", + "nodeType": "VariableDeclaration", + "scope": 170, + "src": "2001:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 163, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2001:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1888:132:0" + }, + "returnParameters": { + "id": 169, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 168, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "2053:7:0", + "nodeType": "VariableDeclaration", + "scope": 170, + "src": "2039:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 166, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2039:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 167, + "nodeType": "ArrayTypeName", + "src": "2039:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "2038:23:0" + }, + "scope": 307, + "src": "1855:207:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "8803dbee", + "id": 187, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapTokensForExactTokens", + "nameLocation": "2076:24:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 182, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 172, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "2115:9:0", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2110:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 171, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2110:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 174, + "mutability": "mutable", + "name": "amountInMax", + "nameLocation": "2139:11:0", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2134:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 173, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2134:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 177, + "mutability": "mutable", + "name": "path", + "nameLocation": "2179:4:0", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2160:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 175, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2160:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 176, + "nodeType": "ArrayTypeName", + "src": "2160:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 179, + "mutability": "mutable", + "name": "to", + "nameLocation": "2201:2:0", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2193:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 178, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2193:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 181, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "2218:8:0", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2213:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 180, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2213:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2100:132:0" + }, + "returnParameters": { + "id": 186, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 185, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "2265:7:0", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2251:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 183, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2251:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 184, + "nodeType": "ArrayTypeName", + "src": "2251:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "2250:23:0" + }, + "scope": 307, + "src": "2067:207:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "7ff36ab5", + "id": 202, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactETHForTokens", + "nameLocation": "2288:21:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 197, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 189, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "2315:12:0", + "nodeType": "VariableDeclaration", + "scope": 202, + "src": "2310:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 188, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2310:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 192, + "mutability": "mutable", + "name": "path", + "nameLocation": "2348:4:0", + "nodeType": "VariableDeclaration", + "scope": 202, + "src": "2329:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 190, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2329:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 191, + "nodeType": "ArrayTypeName", + "src": "2329:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 194, + "mutability": "mutable", + "name": "to", + "nameLocation": "2362:2:0", + "nodeType": "VariableDeclaration", + "scope": 202, + "src": "2354:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 193, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2354:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 196, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "2371:8:0", + "nodeType": "VariableDeclaration", + "scope": 202, + "src": "2366:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 195, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2366:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2309:71:0" + }, + "returnParameters": { + "id": 201, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 200, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "2445:7:0", + "nodeType": "VariableDeclaration", + "scope": 202, + "src": "2431:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 198, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2431:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 199, + "nodeType": "ArrayTypeName", + "src": "2431:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "2430:23:0" + }, + "scope": 307, + "src": "2279:175:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "4a25d94a", + "id": 219, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapTokensForExactETH", + "nameLocation": "2468:21:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 214, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 204, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "2495:9:0", + "nodeType": "VariableDeclaration", + "scope": 219, + "src": "2490:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 203, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2490:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 206, + "mutability": "mutable", + "name": "amountInMax", + "nameLocation": "2511:11:0", + "nodeType": "VariableDeclaration", + "scope": 219, + "src": "2506:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 205, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2506:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 209, + "mutability": "mutable", + "name": "path", + "nameLocation": "2543:4:0", + "nodeType": "VariableDeclaration", + "scope": 219, + "src": "2524:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 207, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2524:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 208, + "nodeType": "ArrayTypeName", + "src": "2524:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 211, + "mutability": "mutable", + "name": "to", + "nameLocation": "2557:2:0", + "nodeType": "VariableDeclaration", + "scope": 219, + "src": "2549:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 210, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2549:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 213, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "2566:8:0", + "nodeType": "VariableDeclaration", + "scope": 219, + "src": "2561:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 212, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2561:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2489:86:0" + }, + "returnParameters": { + "id": 218, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 217, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "2624:7:0", + "nodeType": "VariableDeclaration", + "scope": 219, + "src": "2610:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 215, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2610:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 216, + "nodeType": "ArrayTypeName", + "src": "2610:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "2609:23:0" + }, + "scope": 307, + "src": "2459:174:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "18cbafe5", + "id": 236, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactTokensForETH", + "nameLocation": "2647:21:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 231, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 221, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "2674:8:0", + "nodeType": "VariableDeclaration", + "scope": 236, + "src": "2669:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 220, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2669:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 223, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "2689:12:0", + "nodeType": "VariableDeclaration", + "scope": 236, + "src": "2684:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 222, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2684:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 226, + "mutability": "mutable", + "name": "path", + "nameLocation": "2722:4:0", + "nodeType": "VariableDeclaration", + "scope": 236, + "src": "2703:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 224, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2703:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 225, + "nodeType": "ArrayTypeName", + "src": "2703:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 228, + "mutability": "mutable", + "name": "to", + "nameLocation": "2736:2:0", + "nodeType": "VariableDeclaration", + "scope": 236, + "src": "2728:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 227, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2728:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 230, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "2745:8:0", + "nodeType": "VariableDeclaration", + "scope": 236, + "src": "2740:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 229, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2740:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2668:86:0" + }, + "returnParameters": { + "id": 235, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 234, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "2803:7:0", + "nodeType": "VariableDeclaration", + "scope": 236, + "src": "2789:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 232, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2789:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 233, + "nodeType": "ArrayTypeName", + "src": "2789:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "2788:23:0" + }, + "scope": 307, + "src": "2638:174:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "fb3bdb41", + "id": 251, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapETHForExactTokens", + "nameLocation": "2826:21:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 246, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 238, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "2853:9:0", + "nodeType": "VariableDeclaration", + "scope": 251, + "src": "2848:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 237, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2848:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 241, + "mutability": "mutable", + "name": "path", + "nameLocation": "2883:4:0", + "nodeType": "VariableDeclaration", + "scope": 251, + "src": "2864:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 239, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2864:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 240, + "nodeType": "ArrayTypeName", + "src": "2864:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 243, + "mutability": "mutable", + "name": "to", + "nameLocation": "2897:2:0", + "nodeType": "VariableDeclaration", + "scope": 251, + "src": "2889:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 242, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2889:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 245, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "2906:8:0", + "nodeType": "VariableDeclaration", + "scope": 251, + "src": "2901:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 244, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2901:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2847:68:0" + }, + "returnParameters": { + "id": 250, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 249, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "2980:7:0", + "nodeType": "VariableDeclaration", + "scope": 251, + "src": "2966:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 247, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2966:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 248, + "nodeType": "ArrayTypeName", + "src": "2966:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "2965:23:0" + }, + "scope": 307, + "src": "2817:172:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "ad615dec", + "id": 262, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "quote", + "nameLocation": "3004:5:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 258, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 253, + "mutability": "mutable", + "name": "amountA", + "nameLocation": "3015:7:0", + "nodeType": "VariableDeclaration", + "scope": 262, + "src": "3010:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 252, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3010:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 255, + "mutability": "mutable", + "name": "reserveA", + "nameLocation": "3029:8:0", + "nodeType": "VariableDeclaration", + "scope": 262, + "src": "3024:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 254, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3024:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 257, + "mutability": "mutable", + "name": "reserveB", + "nameLocation": "3044:8:0", + "nodeType": "VariableDeclaration", + "scope": 262, + "src": "3039:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 256, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3039:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3009:44:0" + }, + "returnParameters": { + "id": 261, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 260, + "mutability": "mutable", + "name": "amountB", + "nameLocation": "3082:7:0", + "nodeType": "VariableDeclaration", + "scope": 262, + "src": "3077:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 259, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3077:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3076:14:0" + }, + "scope": 307, + "src": "2995:96:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "054d50d4", + "id": 273, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAmountOut", + "nameLocation": "3105:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 269, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 264, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "3123:8:0", + "nodeType": "VariableDeclaration", + "scope": 273, + "src": "3118:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 263, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3118:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 266, + "mutability": "mutable", + "name": "reserveIn", + "nameLocation": "3138:9:0", + "nodeType": "VariableDeclaration", + "scope": 273, + "src": "3133:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 265, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3133:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 268, + "mutability": "mutable", + "name": "reserveOut", + "nameLocation": "3154:10:0", + "nodeType": "VariableDeclaration", + "scope": 273, + "src": "3149:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 267, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3149:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3117:48:0" + }, + "returnParameters": { + "id": 272, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 271, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "3194:9:0", + "nodeType": "VariableDeclaration", + "scope": 273, + "src": "3189:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 270, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3189:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3188:16:0" + }, + "scope": 307, + "src": "3096:109:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "85f8c259", + "id": 284, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAmountIn", + "nameLocation": "3219:11:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 280, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 275, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "3236:9:0", + "nodeType": "VariableDeclaration", + "scope": 284, + "src": "3231:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 274, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3231:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 277, + "mutability": "mutable", + "name": "reserveIn", + "nameLocation": "3252:9:0", + "nodeType": "VariableDeclaration", + "scope": 284, + "src": "3247:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 276, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3247:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 279, + "mutability": "mutable", + "name": "reserveOut", + "nameLocation": "3268:10:0", + "nodeType": "VariableDeclaration", + "scope": 284, + "src": "3263:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 278, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3263:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3230:49:0" + }, + "returnParameters": { + "id": 283, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 282, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "3308:8:0", + "nodeType": "VariableDeclaration", + "scope": 284, + "src": "3303:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 281, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3303:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3302:15:0" + }, + "scope": 307, + "src": "3210:108:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "d06ca61f", + "id": 295, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAmountsOut", + "nameLocation": "3332:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 290, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 286, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "3351:8:0", + "nodeType": "VariableDeclaration", + "scope": 295, + "src": "3346:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 285, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3346:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 289, + "mutability": "mutable", + "name": "path", + "nameLocation": "3380:4:0", + "nodeType": "VariableDeclaration", + "scope": 295, + "src": "3361:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 287, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3361:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 288, + "nodeType": "ArrayTypeName", + "src": "3361:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "3345:40:0" + }, + "returnParameters": { + "id": 294, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 293, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "3423:7:0", + "nodeType": "VariableDeclaration", + "scope": 295, + "src": "3409:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 291, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3409:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 292, + "nodeType": "ArrayTypeName", + "src": "3409:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "3408:23:0" + }, + "scope": 307, + "src": "3323:109:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "1f00ca74", + "id": 306, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAmountsIn", + "nameLocation": "3446:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 301, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 297, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "3464:9:0", + "nodeType": "VariableDeclaration", + "scope": 306, + "src": "3459:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 296, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3459:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 300, + "mutability": "mutable", + "name": "path", + "nameLocation": "3494:4:0", + "nodeType": "VariableDeclaration", + "scope": 306, + "src": "3475:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 298, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3475:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 299, + "nodeType": "ArrayTypeName", + "src": "3475:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "3458:41:0" + }, + "returnParameters": { + "id": 305, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 304, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "3537:7:0", + "nodeType": "VariableDeclaration", + "scope": 306, + "src": "3523:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 302, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3523:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 303, + "nodeType": "ArrayTypeName", + "src": "3523:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "3522:23:0" + }, + "scope": 307, + "src": "3437:109:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 308, + "src": "59:3489:0", + "usedErrors": [] + } + ], + "src": "32:3516:0" + }, + "id": 0 + }, + "contracts/Uniswap/Interfaces/IUniswapV2Router02.sol": { + "ast": { + "absolutePath": "contracts/Uniswap/Interfaces/IUniswapV2Router02.sol", + "exportedSymbols": { + "IUniswapV2Router01": [ + 307 + ], + "IUniswapV2Router02": [ + 395 + ] + }, + "id": 396, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 309, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:1" + }, + { + "absolutePath": "contracts/Uniswap/Interfaces/IUniswapV2Router01.sol", + "file": "./IUniswapV2Router01.sol", + "id": 310, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 396, + "sourceUnit": 308, + "src": "59:34:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 311, + "name": "IUniswapV2Router01", + "nodeType": "IdentifierPath", + "referencedDeclaration": 307, + "src": "127:18:1" + }, + "id": 312, + "nodeType": "InheritanceSpecifier", + "src": "127:18:1" + } + ], + "canonicalName": "IUniswapV2Router02", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 395, + "linearizedBaseContracts": [ + 395, + 307 + ], + "name": "IUniswapV2Router02", + "nameLocation": "105:18:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "af2979eb", + "id": 329, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidityETHSupportingFeeOnTransferTokens", + "nameLocation": "161:47:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 314, + "mutability": "mutable", + "name": "token", + "nameLocation": "226:5:1", + "nodeType": "VariableDeclaration", + "scope": 329, + "src": "218:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 313, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "218:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 316, + "mutability": "mutable", + "name": "liquidity", + "nameLocation": "246:9:1", + "nodeType": "VariableDeclaration", + "scope": 329, + "src": "241:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 315, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "241:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 318, + "mutability": "mutable", + "name": "amountTokenMin", + "nameLocation": "270:14:1", + "nodeType": "VariableDeclaration", + "scope": 329, + "src": "265:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 317, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "265:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 320, + "mutability": "mutable", + "name": "amountETHMin", + "nameLocation": "299:12:1", + "nodeType": "VariableDeclaration", + "scope": 329, + "src": "294:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 319, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "294:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 322, + "mutability": "mutable", + "name": "to", + "nameLocation": "329:2:1", + "nodeType": "VariableDeclaration", + "scope": 329, + "src": "321:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 321, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "321:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 324, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "346:8:1", + "nodeType": "VariableDeclaration", + "scope": 329, + "src": "341:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 323, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "341:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "208:152:1" + }, + "returnParameters": { + "id": 328, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 327, + "mutability": "mutable", + "name": "amountETH", + "nameLocation": "384:9:1", + "nodeType": "VariableDeclaration", + "scope": 329, + "src": "379:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 326, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "379:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "378:16:1" + }, + "scope": 395, + "src": "152:243:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "5b0d5984", + "id": 354, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", + "nameLocation": "409:57:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 350, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 331, + "mutability": "mutable", + "name": "token", + "nameLocation": "484:5:1", + "nodeType": "VariableDeclaration", + "scope": 354, + "src": "476:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 330, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "476:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 333, + "mutability": "mutable", + "name": "liquidity", + "nameLocation": "504:9:1", + "nodeType": "VariableDeclaration", + "scope": 354, + "src": "499:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 332, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "499:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 335, + "mutability": "mutable", + "name": "amountTokenMin", + "nameLocation": "528:14:1", + "nodeType": "VariableDeclaration", + "scope": 354, + "src": "523:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 334, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "523:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 337, + "mutability": "mutable", + "name": "amountETHMin", + "nameLocation": "557:12:1", + "nodeType": "VariableDeclaration", + "scope": 354, + "src": "552:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 336, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "552:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 339, + "mutability": "mutable", + "name": "to", + "nameLocation": "587:2:1", + "nodeType": "VariableDeclaration", + "scope": 354, + "src": "579:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 338, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "579:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 341, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "604:8:1", + "nodeType": "VariableDeclaration", + "scope": 354, + "src": "599:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 340, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "599:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 343, + "mutability": "mutable", + "name": "approveMax", + "nameLocation": "627:10:1", + "nodeType": "VariableDeclaration", + "scope": 354, + "src": "622:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 342, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "622:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 345, + "mutability": "mutable", + "name": "v", + "nameLocation": "645:1:1", + "nodeType": "VariableDeclaration", + "scope": 354, + "src": "639:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 344, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "639:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 347, + "mutability": "mutable", + "name": "r", + "nameLocation": "656:1:1", + "nodeType": "VariableDeclaration", + "scope": 354, + "src": "648:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 346, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "648:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 349, + "mutability": "mutable", + "name": "s", + "nameLocation": "667:1:1", + "nodeType": "VariableDeclaration", + "scope": 354, + "src": "659:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 348, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "659:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "466:208:1" + }, + "returnParameters": { + "id": 353, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 352, + "mutability": "mutable", + "name": "amountETH", + "nameLocation": "698:9:1", + "nodeType": "VariableDeclaration", + "scope": 354, + "src": "693:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 351, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "693:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "692:16:1" + }, + "scope": 395, + "src": "400:309:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "5c11d795", + "id": 368, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "nameLocation": "724:53:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 366, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 356, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "792:8:1", + "nodeType": "VariableDeclaration", + "scope": 368, + "src": "787:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 355, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "787:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 358, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "815:12:1", + "nodeType": "VariableDeclaration", + "scope": 368, + "src": "810:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 357, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "810:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 361, + "mutability": "mutable", + "name": "path", + "nameLocation": "856:4:1", + "nodeType": "VariableDeclaration", + "scope": 368, + "src": "837:23:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 359, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "837:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 360, + "nodeType": "ArrayTypeName", + "src": "837:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 363, + "mutability": "mutable", + "name": "to", + "nameLocation": "878:2:1", + "nodeType": "VariableDeclaration", + "scope": 368, + "src": "870:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 362, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "870:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 365, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "895:8:1", + "nodeType": "VariableDeclaration", + "scope": 368, + "src": "890:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 364, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "890:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "777:132:1" + }, + "returnParameters": { + "id": 367, + "nodeType": "ParameterList", + "parameters": [], + "src": "918:0:1" + }, + "scope": 395, + "src": "715:204:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "b6f9de95", + "id": 380, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", + "nameLocation": "933:50:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 378, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 370, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "998:12:1", + "nodeType": "VariableDeclaration", + "scope": 380, + "src": "993:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 369, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "993:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 373, + "mutability": "mutable", + "name": "path", + "nameLocation": "1039:4:1", + "nodeType": "VariableDeclaration", + "scope": 380, + "src": "1020:23:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 371, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1020:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 372, + "nodeType": "ArrayTypeName", + "src": "1020:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 375, + "mutability": "mutable", + "name": "to", + "nameLocation": "1061:2:1", + "nodeType": "VariableDeclaration", + "scope": 380, + "src": "1053:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 374, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1053:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 377, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "1078:8:1", + "nodeType": "VariableDeclaration", + "scope": 380, + "src": "1073:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 376, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1073:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "983:109:1" + }, + "returnParameters": { + "id": 379, + "nodeType": "ParameterList", + "parameters": [], + "src": "1109:0:1" + }, + "scope": 395, + "src": "924:186:1", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "791ac947", + "id": 394, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactTokensForETHSupportingFeeOnTransferTokens", + "nameLocation": "1124:50:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 392, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 382, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "1189:8:1", + "nodeType": "VariableDeclaration", + "scope": 394, + "src": "1184:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 381, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1184:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 384, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "1212:12:1", + "nodeType": "VariableDeclaration", + "scope": 394, + "src": "1207:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 383, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1207:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 387, + "mutability": "mutable", + "name": "path", + "nameLocation": "1253:4:1", + "nodeType": "VariableDeclaration", + "scope": 394, + "src": "1234:23:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 385, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1234:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 386, + "nodeType": "ArrayTypeName", + "src": "1234:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 389, + "mutability": "mutable", + "name": "to", + "nameLocation": "1275:2:1", + "nodeType": "VariableDeclaration", + "scope": 394, + "src": "1267:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 388, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1267:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 391, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "1292:8:1", + "nodeType": "VariableDeclaration", + "scope": 394, + "src": "1287:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 390, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1287:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1174:132:1" + }, + "returnParameters": { + "id": 393, + "nodeType": "ParameterList", + "parameters": [], + "src": "1315:0:1" + }, + "scope": 395, + "src": "1115:201:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 396, + "src": "95:1223:1", + "usedErrors": [] + } + ], + "src": "32:1286:1" + }, + "id": 1 + } + } + } +} diff --git a/artifacts/build-info/fa9e1c7854482b87fad8afb999ef0119.json b/artifacts/build-info/fa9e1c7854482b87fad8afb999ef0119.json new file mode 100644 index 00000000..754fdfbd --- /dev/null +++ b/artifacts/build-info/fa9e1c7854482b87fad8afb999ef0119.json @@ -0,0 +1,4209 @@ +{ + "id": "fa9e1c7854482b87fad8afb999ef0119", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.10", + "solcLongVersion": "0.8.10+commit.fc410830", + "input": { + "language": "Solidity", + "sources": { + "contracts/Math/Babylonian.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\n// computes square roots using the babylonian method\n// https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method\nlibrary Babylonian {\n function sqrt(uint y) internal pure returns (uint z) {\n if (y > 3) {\n z = y;\n uint x = y / 2 + 1;\n while (x < z) {\n z = x;\n x = (y / x + x) / 2;\n }\n } else if (y != 0) {\n z = 1;\n }\n // else z = 0\n }\n}" + }, + "contracts/Math/FixedPoint.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.11;\n\nimport './Babylonian.sol';\n\n// a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format))\nlibrary FixedPoint {\n // range: [0, 2**112 - 1]\n // resolution: 1 / 2**112\n struct uq112x112 {\n uint224 _x;\n }\n\n // range: [0, 2**144 - 1]\n // resolution: 1 / 2**112\n struct uq144x112 {\n uint _x;\n }\n\n uint8 private constant RESOLUTION = 112;\n uint private constant Q112 = uint(1) << RESOLUTION;\n uint private constant Q224 = Q112 << RESOLUTION;\n\n // encode a uint112 as a UQ112x112\n function encode(uint112 x) internal pure returns (uq112x112 memory) {\n return uq112x112(uint224(x) << RESOLUTION);\n }\n\n // encodes a uint144 as a UQ144x112\n function encode144(uint144 x) internal pure returns (uq144x112 memory) {\n return uq144x112(uint256(x) << RESOLUTION);\n }\n\n // divide a UQ112x112 by a uint112, returning a UQ112x112\n function div(uq112x112 memory self, uint112 x) internal pure returns (uq112x112 memory) {\n require(x != 0, 'FixedPoint: DIV_BY_ZERO');\n return uq112x112(self._x / uint224(x));\n }\n\n // multiply a UQ112x112 by a uint, returning a UQ144x112\n // reverts on overflow\n function mul(uq112x112 memory self, uint y) internal pure returns (uq144x112 memory) {\n uint z;\n require(y == 0 || (z = uint(self._x) * y) / y == uint(self._x), \"FixedPoint: MULTIPLICATION_OVERFLOW\");\n return uq144x112(z);\n }\n\n // returns a UQ112x112 which represents the ratio of the numerator to the denominator\n // equivalent to encode(numerator).div(denominator)\n function fraction(uint112 numerator, uint112 denominator) internal pure returns (uq112x112 memory) {\n require(denominator > 0, \"FixedPoint: DIV_BY_ZERO\");\n return uq112x112((uint224(numerator) << RESOLUTION) / denominator);\n }\n\n // decode a UQ112x112 into a uint112 by truncating after the radix point\n function decode(uq112x112 memory self) internal pure returns (uint112) {\n return uint112(self._x >> RESOLUTION);\n }\n\n // decode a UQ144x112 into a uint144 by truncating after the radix point\n function decode144(uq144x112 memory self) internal pure returns (uint144) {\n return uint144(self._x >> RESOLUTION);\n }\n\n // take the reciprocal of a UQ112x112\n function reciprocal(uq112x112 memory self) internal pure returns (uq112x112 memory) {\n require(self._x != 0, 'FixedPoint: ZERO_RECIPROCAL');\n return uq112x112(uint224(Q224 / self._x));\n }\n\n // square root of a UQ112x112\n function sqrt(uq112x112 memory self) internal pure returns (uq112x112 memory) {\n return uq112x112(uint224(Babylonian.sqrt(uint256(self._x)) << 56));\n }\n}" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "output": { + "contracts": { + "contracts/Math/Babylonian.sol": { + "Babylonian": { + "abi": [], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220592ad3a6cb4f6ed574151ee0d89b9db818c31036f54d2d5f8783b392b37a2bf464736f6c634300080a0033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSIZE 0x2A 0xD3 0xA6 0xCB 0x4F PUSH15 0xD574151EE0D89B9DB818C31036F54D 0x2D 0x5F DUP8 DUP4 0xB3 SWAP3 0xB3 PUSH27 0x2BF464736F6C634300080A00330000000000000000000000000000 ", + "sourceMap": "197:341:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;197:341:0;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220592ad3a6cb4f6ed574151ee0d89b9db818c31036f54d2d5f8783b392b37a2bf464736f6c634300080a0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSIZE 0x2A 0xD3 0xA6 0xCB 0x4F PUSH15 0xD574151EE0D89B9DB818C31036F54D 0x2D 0x5F DUP8 DUP4 0xB3 SWAP3 0xB3 PUSH27 0x2BF464736F6C634300080A00330000000000000000000000000000 ", + "sourceMap": "197:341:0:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17200", + "executionCost": "103", + "totalCost": "17303" + }, + "internal": { + "sqrt(uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Math/Babylonian.sol\":\"Babylonian\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Math/Babylonian.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\n// computes square roots using the babylonian method\\n// https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method\\nlibrary Babylonian {\\n function sqrt(uint y) internal pure returns (uint z) {\\n if (y > 3) {\\n z = y;\\n uint x = y / 2 + 1;\\n while (x < z) {\\n z = x;\\n x = (y / x + x) / 2;\\n }\\n } else if (y != 0) {\\n z = 1;\\n }\\n // else z = 0\\n }\\n}\",\"keccak256\":\"0x16a99f4bcc5cedcea601100559ae61740d24eddc1d3e476d8083c7858c982de7\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/Math/FixedPoint.sol": { + "FixedPoint": { + "abi": [], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122090052643163b1e9e619b8b743fb3b346c52731cc23aace4e7e6f25bd742031e464736f6c634300080a0033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP1 SDIV 0x26 NUMBER AND EXTCODESIZE 0x1E SWAP15 PUSH2 0x9B8B PUSH21 0x3FB3B346C52731CC23AACE4E7E6F25BD742031E464 PUSH20 0x6F6C634300080A00330000000000000000000000 ", + "sourceMap": "190:2614:1:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;190:2614:1;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122090052643163b1e9e619b8b743fb3b346c52731cc23aace4e7e6f25bd742031e464736f6c634300080a0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP1 SDIV 0x26 NUMBER AND EXTCODESIZE 0x1E SWAP15 PUSH2 0x9B8B PUSH21 0x3FB3B346C52731CC23AACE4E7E6F25BD742031E464 PUSH20 0x6F6C634300080A00330000000000000000000000 ", + "sourceMap": "190:2614:1:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17200", + "executionCost": "103", + "totalCost": "17303" + }, + "internal": { + "decode(struct FixedPoint.uq112x112 memory)": "infinite", + "decode144(struct FixedPoint.uq144x112 memory)": "infinite", + "div(struct FixedPoint.uq112x112 memory,uint112)": "infinite", + "encode(uint112)": "infinite", + "encode144(uint144)": "infinite", + "fraction(uint112,uint112)": "infinite", + "mul(struct FixedPoint.uq112x112 memory,uint256)": "infinite", + "reciprocal(struct FixedPoint.uq112x112 memory)": "infinite", + "sqrt(struct FixedPoint.uq112x112 memory)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Math/FixedPoint.sol\":\"FixedPoint\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[]},\"sources\":{\"contracts/Math/Babylonian.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\n// computes square roots using the babylonian method\\n// https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method\\nlibrary Babylonian {\\n function sqrt(uint y) internal pure returns (uint z) {\\n if (y > 3) {\\n z = y;\\n uint x = y / 2 + 1;\\n while (x < z) {\\n z = x;\\n x = (y / x + x) / 2;\\n }\\n } else if (y != 0) {\\n z = 1;\\n }\\n // else z = 0\\n }\\n}\",\"keccak256\":\"0x16a99f4bcc5cedcea601100559ae61740d24eddc1d3e476d8083c7858c982de7\",\"license\":\"MIT\"},\"contracts/Math/FixedPoint.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.6.11;\\n\\nimport './Babylonian.sol';\\n\\n// a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format))\\nlibrary FixedPoint {\\n // range: [0, 2**112 - 1]\\n // resolution: 1 / 2**112\\n struct uq112x112 {\\n uint224 _x;\\n }\\n\\n // range: [0, 2**144 - 1]\\n // resolution: 1 / 2**112\\n struct uq144x112 {\\n uint _x;\\n }\\n\\n uint8 private constant RESOLUTION = 112;\\n uint private constant Q112 = uint(1) << RESOLUTION;\\n uint private constant Q224 = Q112 << RESOLUTION;\\n\\n // encode a uint112 as a UQ112x112\\n function encode(uint112 x) internal pure returns (uq112x112 memory) {\\n return uq112x112(uint224(x) << RESOLUTION);\\n }\\n\\n // encodes a uint144 as a UQ144x112\\n function encode144(uint144 x) internal pure returns (uq144x112 memory) {\\n return uq144x112(uint256(x) << RESOLUTION);\\n }\\n\\n // divide a UQ112x112 by a uint112, returning a UQ112x112\\n function div(uq112x112 memory self, uint112 x) internal pure returns (uq112x112 memory) {\\n require(x != 0, 'FixedPoint: DIV_BY_ZERO');\\n return uq112x112(self._x / uint224(x));\\n }\\n\\n // multiply a UQ112x112 by a uint, returning a UQ144x112\\n // reverts on overflow\\n function mul(uq112x112 memory self, uint y) internal pure returns (uq144x112 memory) {\\n uint z;\\n require(y == 0 || (z = uint(self._x) * y) / y == uint(self._x), \\\"FixedPoint: MULTIPLICATION_OVERFLOW\\\");\\n return uq144x112(z);\\n }\\n\\n // returns a UQ112x112 which represents the ratio of the numerator to the denominator\\n // equivalent to encode(numerator).div(denominator)\\n function fraction(uint112 numerator, uint112 denominator) internal pure returns (uq112x112 memory) {\\n require(denominator > 0, \\\"FixedPoint: DIV_BY_ZERO\\\");\\n return uq112x112((uint224(numerator) << RESOLUTION) / denominator);\\n }\\n\\n // decode a UQ112x112 into a uint112 by truncating after the radix point\\n function decode(uq112x112 memory self) internal pure returns (uint112) {\\n return uint112(self._x >> RESOLUTION);\\n }\\n\\n // decode a UQ144x112 into a uint144 by truncating after the radix point\\n function decode144(uq144x112 memory self) internal pure returns (uint144) {\\n return uint144(self._x >> RESOLUTION);\\n }\\n\\n // take the reciprocal of a UQ112x112\\n function reciprocal(uq112x112 memory self) internal pure returns (uq112x112 memory) {\\n require(self._x != 0, 'FixedPoint: ZERO_RECIPROCAL');\\n return uq112x112(uint224(Q224 / self._x));\\n }\\n\\n // square root of a UQ112x112\\n function sqrt(uq112x112 memory self) internal pure returns (uq112x112 memory) {\\n return uq112x112(uint224(Babylonian.sqrt(uint256(self._x)) << 56));\\n }\\n}\",\"keccak256\":\"0x639489c714cccdb622df0f168c606da0b02296c38b0c605a858e3338b7ba4665\",\"license\":\"MIT\"}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "sources": { + "contracts/Math/Babylonian.sol": { + "ast": { + "absolutePath": "contracts/Math/Babylonian.sol", + "exportedSymbols": { + "Babylonian": [ + 56 + ] + }, + "id": 57, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Babylonian", + "contractDependencies": [], + "contractKind": "library", + "fullyImplemented": true, + "id": 56, + "linearizedBaseContracts": [ + 56 + ], + "name": "Babylonian", + "nameLocation": "205:10:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 54, + "nodeType": "Block", + "src": "275:261:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "289:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "33", + "id": 9, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "293:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "289:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 46, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 44, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "470:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 45, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "475:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "470:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 52, + "nodeType": "IfStatement", + "src": "466:42:0", + "trueBody": { + "id": 51, + "nodeType": "Block", + "src": "478:30:0", + "statements": [ + { + "expression": { + "id": 49, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 47, + "name": "z", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6, + "src": "492:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31", + "id": 48, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "496:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "492:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 50, + "nodeType": "ExpressionStatement", + "src": "492:5:0" + } + ] + } + }, + "id": 53, + "nodeType": "IfStatement", + "src": "285:223:0", + "trueBody": { + "id": 43, + "nodeType": "Block", + "src": "296:164:0", + "statements": [ + { + "expression": { + "id": 13, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11, + "name": "z", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6, + "src": "310:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 12, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "314:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "310:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 14, + "nodeType": "ExpressionStatement", + "src": "310:5:0" + }, + { + "assignments": [ + 16 + ], + "declarations": [ + { + "constant": false, + "id": 16, + "mutability": "mutable", + "name": "x", + "nameLocation": "334:1:0", + "nodeType": "VariableDeclaration", + "scope": 43, + "src": "329:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "329:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 22, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 21, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 19, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 17, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "338:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "32", + "id": 18, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "342:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "338:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 20, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "346:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "338:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "329:18:0" + }, + { + "body": { + "id": 41, + "nodeType": "Block", + "src": "375:75:0", + "statements": [ + { + "expression": { + "id": 28, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 26, + "name": "z", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6, + "src": "393:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 27, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16, + "src": "397:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "393:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 29, + "nodeType": "ExpressionStatement", + "src": "393:5:0" + }, + { + "expression": { + "id": 39, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 30, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16, + "src": "416:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 38, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 35, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 33, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 31, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "421:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 32, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16, + "src": "425:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "421:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 34, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16, + "src": "429:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "421:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 36, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "420:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "32", + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "434:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "420:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "416:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 40, + "nodeType": "ExpressionStatement", + "src": "416:19:0" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 25, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 23, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16, + "src": "368:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 24, + "name": "z", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6, + "src": "372:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "368:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 42, + "nodeType": "WhileStatement", + "src": "361:89:0" + } + ] + } + } + ] + }, + "id": 55, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sqrt", + "nameLocation": "231:4:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3, + "mutability": "mutable", + "name": "y", + "nameLocation": "241:1:0", + "nodeType": "VariableDeclaration", + "scope": 55, + "src": "236:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "236:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "235:8:0" + }, + "returnParameters": { + "id": 7, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6, + "mutability": "mutable", + "name": "z", + "nameLocation": "272:1:0", + "nodeType": "VariableDeclaration", + "scope": 55, + "src": "267:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "267:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "266:8:0" + }, + "scope": 56, + "src": "222:314:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 57, + "src": "197:341:0", + "usedErrors": [] + } + ], + "src": "32:506:0" + }, + "id": 0 + }, + "contracts/Math/FixedPoint.sol": { + "ast": { + "absolutePath": "contracts/Math/FixedPoint.sol", + "exportedSymbols": { + "Babylonian": [ + 56 + ], + "FixedPoint": [ + 310 + ] + }, + "id": 311, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 58, + "literals": [ + "solidity", + ">=", + "0.6", + ".11" + ], + "nodeType": "PragmaDirective", + "src": "32:25:1" + }, + { + "absolutePath": "contracts/Math/Babylonian.sol", + "file": "./Babylonian.sol", + "id": 59, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 311, + "sourceUnit": 57, + "src": "59:26:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "FixedPoint", + "contractDependencies": [], + "contractKind": "library", + "fullyImplemented": true, + "id": 310, + "linearizedBaseContracts": [ + 310 + ], + "name": "FixedPoint", + "nameLocation": "198:10:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "FixedPoint.uq112x112", + "id": 62, + "members": [ + { + "constant": false, + "id": 61, + "mutability": "mutable", + "name": "_x", + "nameLocation": "310:2:1", + "nodeType": "VariableDeclaration", + "scope": 62, + "src": "302:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + }, + "typeName": { + "id": 60, + "name": "uint224", + "nodeType": "ElementaryTypeName", + "src": "302:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "visibility": "internal" + } + ], + "name": "uq112x112", + "nameLocation": "282:9:1", + "nodeType": "StructDefinition", + "scope": 310, + "src": "275:44:1", + "visibility": "public" + }, + { + "canonicalName": "FixedPoint.uq144x112", + "id": 65, + "members": [ + { + "constant": false, + "id": 64, + "mutability": "mutable", + "name": "_x", + "nameLocation": "417:2:1", + "nodeType": "VariableDeclaration", + "scope": 65, + "src": "412:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 63, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "412:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "uq144x112", + "nameLocation": "392:9:1", + "nodeType": "StructDefinition", + "scope": 310, + "src": "385:41:1", + "visibility": "public" + }, + { + "constant": true, + "id": 68, + "mutability": "constant", + "name": "RESOLUTION", + "nameLocation": "455:10:1", + "nodeType": "VariableDeclaration", + "scope": 310, + "src": "432:39:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 66, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "432:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "hexValue": "313132", + "id": 67, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "468:3:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_112_by_1", + "typeString": "int_const 112" + }, + "value": "112" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 76, + "mutability": "constant", + "name": "Q112", + "nameLocation": "499:4:1", + "nodeType": "VariableDeclaration", + "scope": 310, + "src": "477:50:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 69, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "477:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 75, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "hexValue": "31", + "id": 72, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "511:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 71, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "506:4:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 70, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "506:4:1", + "typeDescriptions": {} + } + }, + "id": 73, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "506:7:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 74, + "name": "RESOLUTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "517:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "506:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "constant": true, + "id": 81, + "mutability": "constant", + "name": "Q224", + "nameLocation": "555:4:1", + "nodeType": "VariableDeclaration", + "scope": 310, + "src": "533:47:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 77, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "533:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 80, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "id": 78, + "name": "Q112", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "562:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 79, + "name": "RESOLUTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "570:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "562:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 98, + "nodeType": "Block", + "src": "694:59:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + }, + "id": 95, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 92, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 83, + "src": "729:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "id": 91, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "721:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint224_$", + "typeString": "type(uint224)" + }, + "typeName": { + "id": 90, + "name": "uint224", + "nodeType": "ElementaryTypeName", + "src": "721:7:1", + "typeDescriptions": {} + } + }, + "id": 93, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "721:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 94, + "name": "RESOLUTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "735:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "721:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + ], + "id": 89, + "name": "uq112x112", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 62, + "src": "711:9:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_uq112x112_$62_storage_ptr_$", + "typeString": "type(struct FixedPoint.uq112x112 storage pointer)" + } + }, + "id": 96, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "711:35:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_memory_ptr", + "typeString": "struct FixedPoint.uq112x112 memory" + } + }, + "functionReturnParameters": 88, + "id": 97, + "nodeType": "Return", + "src": "704:42:1" + } + ] + }, + "id": 99, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "encode", + "nameLocation": "635:6:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 84, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 83, + "mutability": "mutable", + "name": "x", + "nameLocation": "650:1:1", + "nodeType": "VariableDeclaration", + "scope": 99, + "src": "642:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 82, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "642:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + } + ], + "src": "641:11:1" + }, + "returnParameters": { + "id": 88, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 87, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 99, + "src": "676:16:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_memory_ptr", + "typeString": "struct FixedPoint.uq112x112" + }, + "typeName": { + "id": 86, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 85, + "name": "uq112x112", + "nodeType": "IdentifierPath", + "referencedDeclaration": 62, + "src": "676:9:1" + }, + "referencedDeclaration": 62, + "src": "676:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_storage_ptr", + "typeString": "struct FixedPoint.uq112x112" + } + }, + "visibility": "internal" + } + ], + "src": "675:18:1" + }, + "scope": 310, + "src": "626:127:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 116, + "nodeType": "Block", + "src": "870:59:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 110, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "905:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + } + ], + "id": 109, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "897:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 108, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "897:7:1", + "typeDescriptions": {} + } + }, + "id": 111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "897:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 112, + "name": "RESOLUTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "911:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "897:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 107, + "name": "uq144x112", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65, + "src": "887:9:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_uq144x112_$65_storage_ptr_$", + "typeString": "type(struct FixedPoint.uq144x112 storage pointer)" + } + }, + "id": 114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "887:35:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq144x112_$65_memory_ptr", + "typeString": "struct FixedPoint.uq144x112 memory" + } + }, + "functionReturnParameters": 106, + "id": 115, + "nodeType": "Return", + "src": "880:42:1" + } + ] + }, + "id": 117, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "encode144", + "nameLocation": "808:9:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 102, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 101, + "mutability": "mutable", + "name": "x", + "nameLocation": "826:1:1", + "nodeType": "VariableDeclaration", + "scope": 117, + "src": "818:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + }, + "typeName": { + "id": 100, + "name": "uint144", + "nodeType": "ElementaryTypeName", + "src": "818:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + } + }, + "visibility": "internal" + } + ], + "src": "817:11:1" + }, + "returnParameters": { + "id": 106, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 105, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 117, + "src": "852:16:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq144x112_$65_memory_ptr", + "typeString": "struct FixedPoint.uq144x112" + }, + "typeName": { + "id": 104, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 103, + "name": "uq144x112", + "nodeType": "IdentifierPath", + "referencedDeclaration": 65, + "src": "852:9:1" + }, + "referencedDeclaration": 65, + "src": "852:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq144x112_$65_storage_ptr", + "typeString": "struct FixedPoint.uq144x112" + } + }, + "visibility": "internal" + } + ], + "src": "851:18:1" + }, + "scope": 310, + "src": "799:130:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 145, + "nodeType": "Block", + "src": "1085:107:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "id": 131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 129, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 122, + "src": "1103:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 130, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1108:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1103:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4669786564506f696e743a204449565f42595f5a45524f", + "id": 132, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1111:25:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fb797fc20bb06d860bbe348d99030bb226d980421b724f94accde8487e338e12", + "typeString": "literal_string \"FixedPoint: DIV_BY_ZERO\"" + }, + "value": "FixedPoint: DIV_BY_ZERO" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fb797fc20bb06d860bbe348d99030bb226d980421b724f94accde8487e338e12", + "typeString": "literal_string \"FixedPoint: DIV_BY_ZERO\"" + } + ], + "id": 128, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1095:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1095:42:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 134, + "nodeType": "ExpressionStatement", + "src": "1095:42:1" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + }, + "id": 142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 136, + "name": "self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "1164:4:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_memory_ptr", + "typeString": "struct FixedPoint.uq112x112 memory" + } + }, + "id": 137, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_x", + "nodeType": "MemberAccess", + "referencedDeclaration": 61, + "src": "1164:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "arguments": [ + { + "id": 140, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 122, + "src": "1182:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "id": 139, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1174:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint224_$", + "typeString": "type(uint224)" + }, + "typeName": { + "id": 138, + "name": "uint224", + "nodeType": "ElementaryTypeName", + "src": "1174:7:1", + "typeDescriptions": {} + } + }, + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1174:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "src": "1164:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + ], + "id": 135, + "name": "uq112x112", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 62, + "src": "1154:9:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_uq112x112_$62_storage_ptr_$", + "typeString": "type(struct FixedPoint.uq112x112 storage pointer)" + } + }, + "id": 143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1154:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_memory_ptr", + "typeString": "struct FixedPoint.uq112x112 memory" + } + }, + "functionReturnParameters": 127, + "id": 144, + "nodeType": "Return", + "src": "1147:38:1" + } + ] + }, + "id": 146, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nameLocation": "1006:3:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 123, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 120, + "mutability": "mutable", + "name": "self", + "nameLocation": "1027:4:1", + "nodeType": "VariableDeclaration", + "scope": 146, + "src": "1010:21:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_memory_ptr", + "typeString": "struct FixedPoint.uq112x112" + }, + "typeName": { + "id": 119, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 118, + "name": "uq112x112", + "nodeType": "IdentifierPath", + "referencedDeclaration": 62, + "src": "1010:9:1" + }, + "referencedDeclaration": 62, + "src": "1010:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_storage_ptr", + "typeString": "struct FixedPoint.uq112x112" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 122, + "mutability": "mutable", + "name": "x", + "nameLocation": "1041:1:1", + "nodeType": "VariableDeclaration", + "scope": 146, + "src": "1033:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 121, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "1033:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + } + ], + "src": "1009:34:1" + }, + "returnParameters": { + "id": 127, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 126, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 146, + "src": "1067:16:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_memory_ptr", + "typeString": "struct FixedPoint.uq112x112" + }, + "typeName": { + "id": 125, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 124, + "name": "uq112x112", + "nodeType": "IdentifierPath", + "referencedDeclaration": 62, + "src": "1067:9:1" + }, + "referencedDeclaration": 62, + "src": "1067:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_storage_ptr", + "typeString": "struct FixedPoint.uq112x112" + } + }, + "visibility": "internal" + } + ], + "src": "1066:18:1" + }, + "scope": 310, + "src": "997:195:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 190, + "nodeType": "Block", + "src": "1371:164:1", + "statements": [ + { + "assignments": [ + 158 + ], + "declarations": [ + { + "constant": false, + "id": 158, + "mutability": "mutable", + "name": "z", + "nameLocation": "1386:1:1", + "nodeType": "VariableDeclaration", + "scope": 190, + "src": "1381:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 157, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1381:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 159, + "nodeType": "VariableDeclarationStatement", + "src": "1381:6:1" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 161, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 151, + "src": "1405:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 162, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1410:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1405:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 164, + "name": "z", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 158, + "src": "1416:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 167, + "name": "self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "1425:4:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_memory_ptr", + "typeString": "struct FixedPoint.uq112x112 memory" + } + }, + "id": 168, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_x", + "nodeType": "MemberAccess", + "referencedDeclaration": 61, + "src": "1425:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + ], + "id": 166, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1420:4:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 165, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1420:4:1", + "typeDescriptions": {} + } + }, + "id": 169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1420:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 170, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 151, + "src": "1436:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1420:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1416:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 173, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1415:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 174, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 151, + "src": "1441:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1415:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "expression": { + "id": 178, + "name": "self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "1451:4:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_memory_ptr", + "typeString": "struct FixedPoint.uq112x112 memory" + } + }, + "id": 179, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_x", + "nodeType": "MemberAccess", + "referencedDeclaration": 61, + "src": "1451:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + ], + "id": 177, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1446:4:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 176, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1446:4:1", + "typeDescriptions": {} + } + }, + "id": 180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1446:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1415:44:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1405:54:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4669786564506f696e743a204d554c5449504c49434154494f4e5f4f564552464c4f57", + "id": 183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1461:37:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c49d28a1a0a9590848dc8e15e2ce94a0e18d974f72b2d7169c2f9169e1ee31e8", + "typeString": "literal_string \"FixedPoint: MULTIPLICATION_OVERFLOW\"" + }, + "value": "FixedPoint: MULTIPLICATION_OVERFLOW" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c49d28a1a0a9590848dc8e15e2ce94a0e18d974f72b2d7169c2f9169e1ee31e8", + "typeString": "literal_string \"FixedPoint: MULTIPLICATION_OVERFLOW\"" + } + ], + "id": 160, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1397:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1397:102:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 185, + "nodeType": "ExpressionStatement", + "src": "1397:102:1" + }, + { + "expression": { + "arguments": [ + { + "id": 187, + "name": "z", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 158, + "src": "1526:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 186, + "name": "uq144x112", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65, + "src": "1516:9:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_uq144x112_$65_storage_ptr_$", + "typeString": "type(struct FixedPoint.uq144x112 storage pointer)" + } + }, + "id": 188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1516:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq144x112_$65_memory_ptr", + "typeString": "struct FixedPoint.uq144x112 memory" + } + }, + "functionReturnParameters": 156, + "id": 189, + "nodeType": "Return", + "src": "1509:19:1" + } + ] + }, + "id": 191, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mul", + "nameLocation": "1295:3:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 152, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 149, + "mutability": "mutable", + "name": "self", + "nameLocation": "1316:4:1", + "nodeType": "VariableDeclaration", + "scope": 191, + "src": "1299:21:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_memory_ptr", + "typeString": "struct FixedPoint.uq112x112" + }, + "typeName": { + "id": 148, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 147, + "name": "uq112x112", + "nodeType": "IdentifierPath", + "referencedDeclaration": 62, + "src": "1299:9:1" + }, + "referencedDeclaration": 62, + "src": "1299:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_storage_ptr", + "typeString": "struct FixedPoint.uq112x112" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 151, + "mutability": "mutable", + "name": "y", + "nameLocation": "1327:1:1", + "nodeType": "VariableDeclaration", + "scope": 191, + "src": "1322:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 150, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1322:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1298:31:1" + }, + "returnParameters": { + "id": 156, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 155, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 191, + "src": "1353:16:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq144x112_$65_memory_ptr", + "typeString": "struct FixedPoint.uq144x112" + }, + "typeName": { + "id": 154, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 153, + "name": "uq144x112", + "nodeType": "IdentifierPath", + "referencedDeclaration": 65, + "src": "1353:9:1" + }, + "referencedDeclaration": 65, + "src": "1353:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq144x112_$65_storage_ptr", + "typeString": "struct FixedPoint.uq144x112" + } + }, + "visibility": "internal" + } + ], + "src": "1352:18:1" + }, + "scope": 310, + "src": "1286:249:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 220, + "nodeType": "Block", + "src": "1786:144:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "id": 204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 202, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "1804:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 203, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1818:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1804:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4669786564506f696e743a204449565f42595f5a45524f", + "id": 205, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1821:25:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fb797fc20bb06d860bbe348d99030bb226d980421b724f94accde8487e338e12", + "typeString": "literal_string \"FixedPoint: DIV_BY_ZERO\"" + }, + "value": "FixedPoint: DIV_BY_ZERO" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fb797fc20bb06d860bbe348d99030bb226d980421b724f94accde8487e338e12", + "typeString": "literal_string \"FixedPoint: DIV_BY_ZERO\"" + } + ], + "id": 201, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1796:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1796:51:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 207, + "nodeType": "ExpressionStatement", + "src": "1796:51:1" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + }, + "id": 217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + }, + "id": 214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 211, + "name": "numerator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 193, + "src": "1883:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + ], + "id": 210, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1875:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint224_$", + "typeString": "type(uint224)" + }, + "typeName": { + "id": 209, + "name": "uint224", + "nodeType": "ElementaryTypeName", + "src": "1875:7:1", + "typeDescriptions": {} + } + }, + "id": 212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1875:18:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 213, + "name": "RESOLUTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "1897:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "1875:32:1", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + } + ], + "id": 215, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1874:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 216, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "1911:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "src": "1874:48:1", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + ], + "id": 208, + "name": "uq112x112", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 62, + "src": "1864:9:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_uq112x112_$62_storage_ptr_$", + "typeString": "type(struct FixedPoint.uq112x112 storage pointer)" + } + }, + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1864:59:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_memory_ptr", + "typeString": "struct FixedPoint.uq112x112 memory" + } + }, + "functionReturnParameters": 200, + "id": 219, + "nodeType": "Return", + "src": "1857:66:1" + } + ] + }, + "id": 221, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "fraction", + "nameLocation": "1696:8:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 196, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 193, + "mutability": "mutable", + "name": "numerator", + "nameLocation": "1713:9:1", + "nodeType": "VariableDeclaration", + "scope": 221, + "src": "1705:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 192, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "1705:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 195, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "1732:11:1", + "nodeType": "VariableDeclaration", + "scope": 221, + "src": "1724:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 194, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "1724:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + } + ], + "src": "1704:40:1" + }, + "returnParameters": { + "id": 200, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 199, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 221, + "src": "1768:16:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_memory_ptr", + "typeString": "struct FixedPoint.uq112x112" + }, + "typeName": { + "id": 198, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 197, + "name": "uq112x112", + "nodeType": "IdentifierPath", + "referencedDeclaration": 62, + "src": "1768:9:1" + }, + "referencedDeclaration": 62, + "src": "1768:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_storage_ptr", + "typeString": "struct FixedPoint.uq112x112" + } + }, + "visibility": "internal" + } + ], + "src": "1767:18:1" + }, + "scope": 310, + "src": "1687:243:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 237, + "nodeType": "Block", + "src": "2084:54:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + }, + "id": 234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 231, + "name": "self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "2109:4:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_memory_ptr", + "typeString": "struct FixedPoint.uq112x112 memory" + } + }, + "id": 232, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_x", + "nodeType": "MemberAccess", + "referencedDeclaration": 61, + "src": "2109:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 233, + "name": "RESOLUTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "2120:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2109:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + ], + "id": 230, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2101:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint112_$", + "typeString": "type(uint112)" + }, + "typeName": { + "id": 229, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "2101:7:1", + "typeDescriptions": {} + } + }, + "id": 235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2101:30:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "functionReturnParameters": 228, + "id": 236, + "nodeType": "Return", + "src": "2094:37:1" + } + ] + }, + "id": 238, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decode", + "nameLocation": "2022:6:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 225, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 224, + "mutability": "mutable", + "name": "self", + "nameLocation": "2046:4:1", + "nodeType": "VariableDeclaration", + "scope": 238, + "src": "2029:21:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_memory_ptr", + "typeString": "struct FixedPoint.uq112x112" + }, + "typeName": { + "id": 223, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 222, + "name": "uq112x112", + "nodeType": "IdentifierPath", + "referencedDeclaration": 62, + "src": "2029:9:1" + }, + "referencedDeclaration": 62, + "src": "2029:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_storage_ptr", + "typeString": "struct FixedPoint.uq112x112" + } + }, + "visibility": "internal" + } + ], + "src": "2028:23:1" + }, + "returnParameters": { + "id": 228, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 227, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 238, + "src": "2075:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 226, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "2075:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + } + ], + "src": "2074:9:1" + }, + "scope": 310, + "src": "2013:125:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 254, + "nodeType": "Block", + "src": "2295:54:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 248, + "name": "self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 241, + "src": "2320:4:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq144x112_$65_memory_ptr", + "typeString": "struct FixedPoint.uq144x112 memory" + } + }, + "id": 249, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_x", + "nodeType": "MemberAccess", + "referencedDeclaration": 64, + "src": "2320:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 250, + "name": "RESOLUTION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "2331:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2320:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 247, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2312:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint144_$", + "typeString": "type(uint144)" + }, + "typeName": { + "id": 246, + "name": "uint144", + "nodeType": "ElementaryTypeName", + "src": "2312:7:1", + "typeDescriptions": {} + } + }, + "id": 252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2312:30:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + } + }, + "functionReturnParameters": 245, + "id": 253, + "nodeType": "Return", + "src": "2305:37:1" + } + ] + }, + "id": 255, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decode144", + "nameLocation": "2230:9:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 242, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 241, + "mutability": "mutable", + "name": "self", + "nameLocation": "2257:4:1", + "nodeType": "VariableDeclaration", + "scope": 255, + "src": "2240:21:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq144x112_$65_memory_ptr", + "typeString": "struct FixedPoint.uq144x112" + }, + "typeName": { + "id": 240, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 239, + "name": "uq144x112", + "nodeType": "IdentifierPath", + "referencedDeclaration": 65, + "src": "2240:9:1" + }, + "referencedDeclaration": 65, + "src": "2240:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq144x112_$65_storage_ptr", + "typeString": "struct FixedPoint.uq144x112" + } + }, + "visibility": "internal" + } + ], + "src": "2239:23:1" + }, + "returnParameters": { + "id": 245, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 244, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 255, + "src": "2286:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + }, + "typeName": { + "id": 243, + "name": "uint144", + "nodeType": "ElementaryTypeName", + "src": "2286:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + } + }, + "visibility": "internal" + } + ], + "src": "2285:9:1" + }, + "scope": 310, + "src": "2221:128:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 282, + "nodeType": "Block", + "src": "2481:120:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + }, + "id": 268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 265, + "name": "self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 258, + "src": "2499:4:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_memory_ptr", + "typeString": "struct FixedPoint.uq112x112 memory" + } + }, + "id": 266, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_x", + "nodeType": "MemberAccess", + "referencedDeclaration": 61, + "src": "2499:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 267, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2510:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2499:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4669786564506f696e743a205a45524f5f5245434950524f43414c", + "id": 269, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2513:29:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_43c6fe054a2c2008a0c5b0d1940d576de140447d22d0753abd129ca5f43acb8b", + "typeString": "literal_string \"FixedPoint: ZERO_RECIPROCAL\"" + }, + "value": "FixedPoint: ZERO_RECIPROCAL" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_43c6fe054a2c2008a0c5b0d1940d576de140447d22d0753abd129ca5f43acb8b", + "typeString": "literal_string \"FixedPoint: ZERO_RECIPROCAL\"" + } + ], + "id": 264, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2491:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2491:52:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 271, + "nodeType": "ExpressionStatement", + "src": "2491:52:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 275, + "name": "Q224", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 81, + "src": "2578:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "expression": { + "id": 276, + "name": "self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 258, + "src": "2585:4:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_memory_ptr", + "typeString": "struct FixedPoint.uq112x112 memory" + } + }, + "id": 277, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_x", + "nodeType": "MemberAccess", + "referencedDeclaration": 61, + "src": "2585:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "src": "2578:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 274, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2570:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint224_$", + "typeString": "type(uint224)" + }, + "typeName": { + "id": 273, + "name": "uint224", + "nodeType": "ElementaryTypeName", + "src": "2570:7:1", + "typeDescriptions": {} + } + }, + "id": 279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2570:23:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + ], + "id": 272, + "name": "uq112x112", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 62, + "src": "2560:9:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_uq112x112_$62_storage_ptr_$", + "typeString": "type(struct FixedPoint.uq112x112 storage pointer)" + } + }, + "id": 280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2560:34:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_memory_ptr", + "typeString": "struct FixedPoint.uq112x112 memory" + } + }, + "functionReturnParameters": 263, + "id": 281, + "nodeType": "Return", + "src": "2553:41:1" + } + ] + }, + "id": 283, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "reciprocal", + "nameLocation": "2406:10:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 259, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 258, + "mutability": "mutable", + "name": "self", + "nameLocation": "2434:4:1", + "nodeType": "VariableDeclaration", + "scope": 283, + "src": "2417:21:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_memory_ptr", + "typeString": "struct FixedPoint.uq112x112" + }, + "typeName": { + "id": 257, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 256, + "name": "uq112x112", + "nodeType": "IdentifierPath", + "referencedDeclaration": 62, + "src": "2417:9:1" + }, + "referencedDeclaration": 62, + "src": "2417:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_storage_ptr", + "typeString": "struct FixedPoint.uq112x112" + } + }, + "visibility": "internal" + } + ], + "src": "2416:23:1" + }, + "returnParameters": { + "id": 263, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 262, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 283, + "src": "2463:16:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_memory_ptr", + "typeString": "struct FixedPoint.uq112x112" + }, + "typeName": { + "id": 261, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 260, + "name": "uq112x112", + "nodeType": "IdentifierPath", + "referencedDeclaration": 62, + "src": "2463:9:1" + }, + "referencedDeclaration": 62, + "src": "2463:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_storage_ptr", + "typeString": "struct FixedPoint.uq112x112" + } + }, + "visibility": "internal" + } + ], + "src": "2462:18:1" + }, + "scope": 310, + "src": "2397:204:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 308, + "nodeType": "Block", + "src": "2719:83:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 299, + "name": "self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 286, + "src": "2778:4:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_memory_ptr", + "typeString": "struct FixedPoint.uq112x112 memory" + } + }, + "id": 300, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_x", + "nodeType": "MemberAccess", + "referencedDeclaration": 61, + "src": "2778:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + ], + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2770:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 297, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2770:7:1", + "typeDescriptions": {} + } + }, + "id": 301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2770:16:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 295, + "name": "Babylonian", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 56, + "src": "2754:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Babylonian_$56_$", + "typeString": "type(library Babylonian)" + } + }, + "id": 296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sqrt", + "nodeType": "MemberAccess", + "referencedDeclaration": 55, + "src": "2754:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 302, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2754:33:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3536", + "id": 303, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2791:2:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_56_by_1", + "typeString": "int_const 56" + }, + "value": "56" + }, + "src": "2754:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 294, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2746:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint224_$", + "typeString": "type(uint224)" + }, + "typeName": { + "id": 293, + "name": "uint224", + "nodeType": "ElementaryTypeName", + "src": "2746:7:1", + "typeDescriptions": {} + } + }, + "id": 305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2746:48:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + ], + "id": 292, + "name": "uq112x112", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 62, + "src": "2736:9:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_uq112x112_$62_storage_ptr_$", + "typeString": "type(struct FixedPoint.uq112x112 storage pointer)" + } + }, + "id": 306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2736:59:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_memory_ptr", + "typeString": "struct FixedPoint.uq112x112 memory" + } + }, + "functionReturnParameters": 291, + "id": 307, + "nodeType": "Return", + "src": "2729:66:1" + } + ] + }, + "id": 309, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sqrt", + "nameLocation": "2650:4:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 287, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 286, + "mutability": "mutable", + "name": "self", + "nameLocation": "2672:4:1", + "nodeType": "VariableDeclaration", + "scope": 309, + "src": "2655:21:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_memory_ptr", + "typeString": "struct FixedPoint.uq112x112" + }, + "typeName": { + "id": 285, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 284, + "name": "uq112x112", + "nodeType": "IdentifierPath", + "referencedDeclaration": 62, + "src": "2655:9:1" + }, + "referencedDeclaration": 62, + "src": "2655:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_storage_ptr", + "typeString": "struct FixedPoint.uq112x112" + } + }, + "visibility": "internal" + } + ], + "src": "2654:23:1" + }, + "returnParameters": { + "id": 291, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 290, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 309, + "src": "2701:16:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_memory_ptr", + "typeString": "struct FixedPoint.uq112x112" + }, + "typeName": { + "id": 289, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 288, + "name": "uq112x112", + "nodeType": "IdentifierPath", + "referencedDeclaration": 62, + "src": "2701:9:1" + }, + "referencedDeclaration": 62, + "src": "2701:9:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_uq112x112_$62_storage_ptr", + "typeString": "struct FixedPoint.uq112x112" + } + }, + "visibility": "internal" + } + ], + "src": "2700:18:1" + }, + "scope": 310, + "src": "2641:161:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 311, + "src": "190:2614:1", + "usedErrors": [] + } + ], + "src": "32:2772:1" + }, + "id": 1 + } + } + } +} diff --git a/artifacts/contracts/Common/Context.sol/Context.dbg.json b/artifacts/contracts/Common/Context.sol/Context.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/Common/Context.sol/Context.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/Common/Context.sol/Context.json b/artifacts/contracts/Common/Context.sol/Context.json new file mode 100644 index 00000000..7327124e --- /dev/null +++ b/artifacts/contracts/Common/Context.sol/Context.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Context", + "sourceName": "contracts/Common/Context.sol", + "abi": [], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Common/Ownable.sol/Ownable.dbg.json b/artifacts/contracts/Common/Ownable.sol/Ownable.dbg.json new file mode 100644 index 00000000..192eeb47 --- /dev/null +++ b/artifacts/contracts/Common/Ownable.sol/Ownable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/194db023d77d2de1e0a5b1b8667e7a16.json" +} diff --git a/artifacts/contracts/Common/Ownable.sol/Ownable.json b/artifacts/contracts/Common/Ownable.sol/Ownable.json new file mode 100644 index 00000000..f458ac3d --- /dev/null +++ b/artifacts/contracts/Common/Ownable.sol/Ownable.json @@ -0,0 +1,63 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Ownable", + "sourceName": "contracts/Common/Ownable.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/DEI/DEI.sol/DEIStablecoin.dbg.json b/artifacts/contracts/DEI/DEI.sol/DEIStablecoin.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/DEI/DEI.sol/DEIStablecoin.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/DEI/DEI.sol/DEIStablecoin.json b/artifacts/contracts/DEI/DEI.sol/DEIStablecoin.json new file mode 100644 index 00000000..8b3d2310 --- /dev/null +++ b/artifacts/contracts/DEI/DEI.sol/DEIStablecoin.json @@ -0,0 +1,1485 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DEIStablecoin", + "sourceName": "contracts/DEI/DEI.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "_trusty_address", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "global_collateral_ratio", + "type": "uint256" + } + ], + "name": "CollateralRatioRefreshed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "collateral_ratio_paused", + "type": "bool" + } + ], + "name": "CollateralRatioToggled", + "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": "amount", + "type": "uint256" + } + ], + "name": "DEIBurned", + "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": "amount", + "type": "uint256" + } + ], + "name": "DEIMinted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "new_step", + "type": "uint256" + } + ], + "name": "DEIStepSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "deus_address", + "type": "address" + } + ], + "name": "DEUSAddressSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "activate", + "type": "bool" + } + ], + "name": "DIPSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "GR_top_band", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "GR_bottom_band", + "type": "uint256" + } + ], + "name": "GrowthRatioBandSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "name": "NameAndSymbolSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oracle", + "type": "address" + } + ], + "name": "OracleSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "pool_address", + "type": "address" + } + ], + "name": "PoolAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "pool_address", + "type": "address" + } + ], + "name": "PoolRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "top_band", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bottom_band", + "type": "uint256" + } + ], + "name": "PriceBandSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "new_cooldown", + "type": "uint256" + } + ], + "name": "RefreshCooldownSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "reserve_tracker_address", + "type": "address" + } + ], + "name": "ReserveTrackerSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "use_growth_ratio", + "type": "bool" + } + ], + "name": "UseGrowthRatioSet", + "type": "event" + }, + { + "inputs": [], + "name": "COLLATERAL_RATIO_PAUSER", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEI_bottom_band", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEI_top_band", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DIP", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GR_bottom_band", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GR_top_band", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TRUSTY_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_activate", + "type": "bool" + } + ], + "name": "activateDIP", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pool_address", + "type": "address" + } + ], + "name": "addPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "collateral_ratio_paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "collat_usd_price", + "type": "uint256[]" + } + ], + "name": "dei_info", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "dei_pools", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "dei_pools_array", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "dei_step", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "deus_address", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "genesis_supply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getChainID", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "collat_usd_price", + "type": "uint256[]" + } + ], + "name": "globalCollateralValue", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "global_collateral_ratio", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "growth_ratio", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "last_call_time", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "oracle", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "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" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "b_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "b_amount", + "type": "uint256" + } + ], + "name": "pool_burn_from", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "m_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "m_amount", + "type": "uint256" + } + ], + "name": "pool_mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deus_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "dei_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expire_block", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "refreshCollateralRatio", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "refresh_cooldown", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pool_address", + "type": "address" + } + ], + "name": "removePool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "reserve_tracker_address", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_new_step", + "type": "uint256" + } + ], + "name": "setDEIStep", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_deus_address", + "type": "address" + } + ], + "name": "setDEUSAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_GR_top_band", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_GR_bottom_band", + "type": "uint256" + } + ], + "name": "setGrowthRatioBands", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + } + ], + "name": "setNameAndSymbol", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_oracle", + "type": "address" + } + ], + "name": "setOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_top_band", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_bottom_band", + "type": "uint256" + } + ], + "name": "setPriceBands", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_new_cooldown", + "type": "uint256" + } + ], + "name": "setRefreshCooldown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_reserve_tracker_address", + "type": "address" + } + ], + "name": "setReserveTracker", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_use_growth_ratio", + "type": "bool" + } + ], + "name": "setUseGrowthRatio", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "toggleCollateralRatio", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "use_growth_ratio", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "sighash", + "type": "bytes32" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "verify_price", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x6101406040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c961012052600f805460ff191690553480156200004157600080fd5b5060405162004b9038038062004b90833981016040819052620000649162000697565b60068054620000739062000724565b80601f0160208091040260200160405190810160405280929190818152602001828054620000a19062000724565b8015620000f25780601f10620000c657610100808354040283529160200191620000f2565b820191906000526020600020905b815481529060010190602001808311620000d457829003601f168201915b505060408051808201825260018152603160f81b60209182015285519581019590952060c08181527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660e08190524660a081815285517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818c018190528188019690965260608101939093526080808401929092523083820152855180840390910181529190920190935282519290960191909120909452505050610100526001600160a01b0381166200020d5760405162461bcd60e51b815260206004820152601b60248201527f4445493a207a65726f20616464726573732064657465637465642e000000000060448201526064015b60405180910390fd5b82516200022290600690602086019062000524565b5081516200023890600590602085019062000524565b506109c4600d55620c3500600c5561012c600e5562000259600082620002db565b620002857fb25402418ad555013210365a422f9f1206b2dd00719998db06f8a1fbe014641b82620002db565b620002b17f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c82620002db565b620002c78169021e19e0c9bab2400000620002eb565b50506103e860118190556012555062000788565b620002e78282620003e7565b5050565b6001600160a01b038216620003435760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000204565b6200035f816002546200045060201b620029861790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620003929183906200298662000450821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60008281526004602090815260409091206200040e918390620029ff620004bc821b17901c565b15620002e75760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6000806200045f838562000761565b905083811015620004b35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000204565b90505b92915050565b6000620004b3836001600160601b0319606085901b1660008181526001830160205260408120546200051b57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620004b6565b506000620004b6565b828054620005329062000724565b90600052602060002090601f016020900481019282620005565760008555620005a1565b82601f106200057157805160ff1916838001178555620005a1565b82800160010185558215620005a1579182015b82811115620005a157825182559160200191906001019062000584565b50620005af929150620005b3565b5090565b5b80821115620005af5760008155600101620005b4565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620005f257600080fd5b81516001600160401b03808211156200060f576200060f620005ca565b604051601f8301601f19908116603f011681019082821181831017156200063a576200063a620005ca565b816040528381526020925086838588010111156200065757600080fd5b600091505b838210156200067b57858201830151818301840152908201906200065c565b838211156200068d5760008385830101525b9695505050505050565b600080600060608486031215620006ad57600080fd5b83516001600160401b0380821115620006c557600080fd5b620006d387838801620005e0565b94506020860151915080821115620006ea57600080fd5b50620006f986828701620005e0565b604086015190935090506001600160a01b03811681146200071957600080fd5b809150509250925092565b600181811c908216806200073957607f821691505b602082108114156200075b57634e487b7160e01b600052602260045260246000fd5b50919050565b600082198211156200078357634e487b7160e01b600052601160045260246000fd5b500190565b60805160a05160c05160e05161010051610120516143b8620007d860003960006123dd01526000612f1f01526000612f6e01526000612f4901526000612ecd01526000612ef601526143b86000f3fe608060405234801561001057600080fd5b50600436106103d05760003560e01c806379cc6790116101ff578063ae7730291161011a578063d01dd162116100ad578063dd62ed3e1161007c578063dd62ed3e146108b4578063e6344628146108fa578063f1fc1fff1461090d578063f72bd4f01461091657600080fd5b8063d01dd16214610868578063d505accf1461087b578063d547741f1461088e578063d914cd4b146108a157600080fd5b8063c03f7be3116100e9578063c03f7be314610836578063c1e2785b1461083f578063c2593c2714610848578063ca15c8731461085557600080fd5b8063ae773029146107da578063aee06a5e14610808578063b4f56b261461081b578063bef40ec81461082e57600080fd5b80639a6f978d11610192578063a6959f0f11610161578063a6959f0f1461078e578063a8a778ae146107a1578063a9059cbb146107b4578063ab3d1bb6146107c757600080fd5b80639a6f978d1461074e578063a085ea7c14610760578063a217fddf14610773578063a457c2d71461077b57600080fd5b806387a140c3116101ce57806387a140c3146107135780639010d07c1461072057806391d148541461073357806395d89b411461074657600080fd5b806379cc6790146106ba5780637adbf973146106cd5780637dc0d1d0146106e05780637ecebe001461070057600080fd5b8063313ce567116102ef5780634d97897b11610282578063597bf73811610251578063597bf7381461064b5780635a4462151461065e5780636793f0ac1461067157806370a082311461068457600080fd5b80634d97897b146105ed57806351e238e31461060d578063545055171461061e578063564b81ef1461064557600080fd5b806336568abe116102be57806336568abe146105a157806339509351146105b45780633b7d0946146105c757806342966c68146105da57600080fd5b8063313ce5671461054f578063349432d91461056957806334ddb95d146105725780633644e5151461059957600080fd5b80631c5df1e511610367578063248a9ca311610336578063248a9ca3146104cb57806327daf4f8146104ee5780632eb9771b146105335780632f2ff15d1461053c57600080fd5b80631c5df1e5146104895780632258750a1461049c57806323b872dd146104a55780632480fcea146104b857600080fd5b806315ea919c116103a357806315ea919c1461043e57806316b0c8461461046157806318160ddd1461047857806319d05d091461048057600080fd5b806306fdde03146103d5578063095ea7b3146103f35780630c0a25aa1461041657806311af9a4b1461042b575b600080fd5b6103dd61091f565b6040516103ea9190613956565b60405180910390f35b6104066104013660046139f2565b6109ad565b60405190151581526020016103ea565b610429610424366004613a2a565b6109c4565b005b610429610439366004613a47565b610aca565b61040661044c366004613a47565b600b6020526000908152604090205460ff1681565b61046a60105481565b6040519081526020016103ea565b60025461046a565b61046a60135481565b610429610497366004613a62565b610bcd565b61046a60165481565b6104066104b3366004613a7b565b610c92565b61046a6104c6366004613b35565b610d26565b61046a6104d9366004613a62565b60009081526004602052604090206002015490565b60085461050e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103ea565b61046a600c5481565b61042961054a366004613bdb565b610e66565b610557601281565b60405160ff90911681526020016103ea565b61046a60125481565b61046a7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b61046a610f1c565b6104296105af366004613bdb565b610f2b565b6104066105c23660046139f2565b610fda565b6104296105d5366004613a47565b61101d565b6104296105e8366004613a62565b61136c565b60095461050e9073ffffffffffffffffffffffffffffffffffffffff1681565b61046a69021e19e0c9bab240000081565b61046a7fb25402418ad555013210365a422f9f1206b2dd00719998db06f8a1fbe014641b81565b4661046a565b610429610659366004613a62565b611379565b61042961066c366004613c95565b61143e565b61040661067f366004613d45565b611535565b61046a610692366004613a47565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6104296106c83660046139f2565b611616565b6104296106db366004613a47565b611662565b60075461050e9073ffffffffffffffffffffffffffffffffffffffff1681565b61046a61070e366004613a47565b611765565b600f546104069060ff1681565b61050e61072e366004613d91565b611790565b610406610741366004613bdb565b6117af565b6103dd6117c7565b60155461040690610100900460ff1681565b61042961076e366004613d91565b6117d4565b61046a600081565b6104066107893660046139f2565b6118a4565b61042961079c366004613d91565b611900565b6104296107af3660046139f2565b6119d0565b6104066107c23660046139f2565b611ad0565b6104296107d5366004613db3565b611add565b6107ed6107e8366004613b35565b611f3b565b604080519384526020840192909252908201526060016103ea565b610429610816366004613a47565b611f62565b6104296108293660046139f2565b612108565b610429612200565b61046a600e5481565b61046a60145481565b6015546104069060ff1681565b61046a610863366004613a62565b612321565b61050e610876366004613a62565b612338565b610429610889366004613e14565b61236f565b61042961089c366004613bdb565b61252e565b6104296108af366004613a47565b6125d6565b61046a6108c2366004613e87565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b610429610908366004613a2a565b612897565b61046a600d5481565b61046a60115481565b6006805461092c90613eb1565b80601f016020809104026020016040519081016040528092919081815260200182805461095890613eb1565b80156109a55780601f1061097a576101008083540402835291602001916109a5565b820191906000526020600020905b81548152906001019060200180831161098857829003601f168201915b505050505081565b60006109ba338484612a31565b5060015b92915050565b6109ee7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b610a59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e657200000000000060448201526064015b60405180910390fd5b60158054821515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff9091161790556040517fe50bc939dc0e5025414f0f3b58008de090812f288a3670db7e723ef663dcdc5490610abf90831515815260200190565b60405180910390a150565b610af47f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b610b5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd7ab6b495fc0223207243f48d9c9e2c8303180b6d1914be5710ecf209ebd2d1c90602001610abf565b610bf77f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b610c5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b600e8190556040518181527fc7443059c2ed485e2c9efe4e766bef9432a6f0ed6695741ab4afdffab3b9215790602001610abf565b6000610c9f848484612be5565b610d1c8433610d17856040518060600160405280602881526020016143126028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020526040812090335b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190612e0f565b612a31565b5060019392505050565b600080805b600a54811015610e5f57600073ffffffffffffffffffffffffffffffffffffffff16600a8281548110610d6057610d60613eff565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614610e4d57600a8181548110610d9a57610d9a613eff565b600091825260209091200154845173ffffffffffffffffffffffffffffffffffffffff9091169063b6258aaa90869084908110610dd957610dd9613eff565b60200260200101516040518263ffffffff1660e01b8152600401610dff91815260200190565b602060405180830381865afa158015610e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e409190613f2e565b610e4a9083613f76565b91505b80610e5781613f8e565b915050610d2b565b5092915050565b600082815260046020526040902060020154610e8290336117af565b610f0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e7400000000000000000000000000000000006064820152608401610a50565b610f188282612e63565b5050565b6000610f26612ec9565b905090565b73ffffffffffffffffffffffffffffffffffffffff81163314610fd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610a50565b610f188282612fbc565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916109ba918590610d179086612986565b6110477f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b6110ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b73ffffffffffffffffffffffffffffffffffffffff8116611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4445493a3a72656d6f7665506f6f6c3a205a65726f206164647265737320646560448201527f74656374656400000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b602052604090205460ff161515600114611209576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4445493a3a72656d6f7665506f6f6c3a2041646472657373206e6f6e6578697360448201527f74616e74000000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b6020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600a54811015611325578173ffffffffffffffffffffffffffffffffffffffff16600a828154811061128957611289613eff565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415611313576000600a82815481106112c6576112c6613eff565b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611325565b8061131d81613f8e565b915050611255565b5060405173ffffffffffffffffffffffffffffffffffffffff821681527f4106dfdaa577573db51c0ca93f766dbedfa0758faa2e7f5bcdb7c142be803c3f90602001610abf565b6113763382613022565b50565b6113a37f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b600d8190556040518181527f3e2f198539455d04450252bfc103c833ca10d4231da6509e0528bb2383e22b7390602001610abf565b6114687f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b6114ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b81516114e19060069060208501906138bd565b5080516114f59060059060208401906138bd565b507f24a9aef9121ba62598f20f8f80fd406fa1d2d956747e0728068c649f324ddf416006600560405161152992919061409e565b60405180910390a15050565b60075460009073ffffffffffffffffffffffffffffffffffffffff1663fb0fe3f46115ad866040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b85856040518463ffffffff1660e01b81526004016115cd9392919061410c565b602060405180830381865afa1580156115ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160e91906141ee565b949350505050565b60006116468260405180606001604052806024815260200161433a6024913961163f86336108c2565b9190612e0f565b9050611653833383612a31565b61165d8383613022565b505050565b61168c7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b6116f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3f32684a32a11dabdbb8c0177de80aa3ae36a004d75210335b49e544e48cd0aa90602001610abf565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600360205260408120546109be565b60008281526004602052604081206117a89083613190565b9392505050565b60008281526004602052604081206117a890836131a6565b6005805461092c90613eb1565b6117fe7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b6011829055601281905560408051838152602081018390527f36d9a5eb34de8b03405baea3d54341f11312730be6f93d18c932728c9e2250d49101611529565b60006109ba3384610d178560405180606001604052806025815260200161435e6025913933600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d1684529091529020549190612e0f565b61192a7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b611990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b6013829055601481905560408051838152602081018390527f2896b6d714a04536ba6121e132dc3aff2eaca8a2ba3eff2676d6a8b435f317459101611529565b336000908152600b602052604090205460ff161515600114611a74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4445493a206f6e6c792064656920706f6f6c732063616e2063616c6c2074686960448201527f732066756e6374696f6e000000000000000000000000000000000000000000006064820152608401610a50565b611a7e82826131e5565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907f4857273a485c2cfff4b12a1064c50e871b8e0c686cf17f44c16b4f8554ede3b1906020015b60405180910390a35050565b60006109ba338484612be5565b600f5460ff1615611b70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4445493a3a436f6c6c61746572616c20526174696f20686173206265656e207060448201527f61757365640000000000000000000000000000000000000000000000000000006064820152608401610a50565b600060165442611b80919061420b565b9050600e54811015611c14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4445493a3a496e7465726e616c20636f6f6c646f776e206e6f7420706173736560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b600954604080517ea66f1f000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169162a66f1f9160048083019260209291908290030181865afa158015611c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca69190613f2e565b600854604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b8116602080840191909152603483018d90523090941b166054820152606881018a9052608881018990524660a8808301919091528251808303909101815260c89091019091528051910120909150611d2c818686611535565b506000611d398984614222565b90506000611d4660025490565b90506000611d54828461425f565b601554909150610100900460ff1615611e04576013548a1180611d7857506014548a105b611e04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4445493a3a5573652072656672657368436f6c6c61746572616c526174696f2060448201527f7768656e20444549206973206f757473696465206f66207065670000000000006064820152608401610a50565b6013548a1115611e2657600d54600c54611e1e919061420b565b600c55611ed5565b6014548a1015611e4057600d54600c54611e1e9190613f76565b60155460ff1615611ed557620f4240601154620f4240611e609190613f76565b601054611e6d9190614222565b611e77919061425f565b811115611e8e57600d54600c54611e1e919061420b565b620f4240601254620f4240611ea3919061420b565b601054611eb09190614222565b611eba919061425f565b811015611ed557600d54600c54611ed19190613f76565b600c555b601081905542601655600c54620f42401015611ef357620f4240600c555b7fb1200af9b3ac4dec88c9d01e1fb7cc7fa1f0fe55bf4afac1f30cc4fc2b2d1dd2600c54604051611f2691815260200190565b60405180910390a15050505050505050505050565b6000806000611f4960025490565b600c54611f5586610d26565b9250925092509193909250565b611f8c7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b611ff2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b73ffffffffffffffffffffffffffffffffffffffff8116612095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4445493a3a73657444455553416464726573733a205a65726f2061646472657360448201527f73206465746563746564000000000000000000000000000000000000000000006064820152608401610a50565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f40c19b0139e5bc25c64e466d74e6e13ee1095acc65b58faf1932f9583e7d812c90602001610abf565b336000908152600b602052604090205460ff1615156001146121ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4445493a206f6e6c792064656920706f6f6c732063616e2063616c6c2074686960448201527f732066756e6374696f6e000000000000000000000000000000000000000000006064820152608401610a50565b6121b6828261323d565b60405181815273ffffffffffffffffffffffffffffffffffffffff83169033907f97847a1fcbba98b997fb5b6c48f68c2d69b53a19157db1622218a559b95fe9be90602001611ac4565b61222a7fb25402418ad555013210365a422f9f1206b2dd00719998db06f8a1fbe014641b336117af565b6122b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4445493a20796f7520617265206e6f742074686520636f6c6c61746572616c2060448201527f726174696f2070617573657200000000000000000000000000000000000000006064820152608401610a50565b600f805460ff808216157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090921682179092556040519116151581527f209068f7bed5a02fb7695c3e3b61bb8324d1facb25523c6422bfd2105ec44d929060200160405180910390a1565b60008181526004602052604081206109be90613355565b600a818154811061234857600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b834211156123d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610a50565b60007f00000000000000000000000000000000000000000000000000000000000000008888886124088c61335f565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061247082613394565b90506000612480828787876133fd565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610a50565b6125228a8a8a612a31565b50505050505050505050565b60008281526004602052604090206002015461254a90336117af565b610fd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b65000000000000000000000000000000006064820152608401610a50565b6126007f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b612666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b73ffffffffffffffffffffffffffffffffffffffff8116612709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4445493a3a616464506f6f6c3a205a65726f206164647265737320646574656360448201527f74656400000000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b602052604090205460ff16156127be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4445493a3a616464506f6f6c3a204164647265737320616c726561647920657860448201527f69737473000000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff81166000818152600b6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600a805491820181559093527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a890920180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905590519182527f73cca62ab1b520c9715bf4e6c71e3e518c754e7148f65102f43289a7df0efea69101610abf565b6128c17f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b612927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b601580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215159081179091556040519081527fa272b58e328af1078a931ae3f79e96ad602c5fbbf0e953a5651b5e7e107846d290602001610abf565b6000806129938385613f76565b9050838110156117a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a50565b60006117a8837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1661364c565b73ffffffffffffffffffffffffffffffffffffffff8316612ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff8216612b76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316612c88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff8216612d2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610a50565b612d75816040518060600160405280602681526020016142ec6026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190612e0f565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054612db19082612986565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101612bd8565b60008184841115612e4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a509190613956565b506000612e5a848661420b565b95945050505050565b6000828152600460205260409020612e7b90826129ff565b15610f1857604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612f1857507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000828152600460205260409020612fd4908261369b565b15610f1857604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b73ffffffffffffffffffffffffffffffffffffffff82166130c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b61310f816040518060600160405280602281526020016142ca6022913973ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020549190612e0f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205560025461314290826136cd565b60025560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611ac4565b600061319c838361370f565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156117a8565b6131ef8282613022565b610f188233610d178460405180606001604052806024815260200161433a6024913973ffffffffffffffffffffffffffffffffffffffff881660009081526001602052604081209033610ce9565b73ffffffffffffffffffffffffffffffffffffffff82166132ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610a50565b6002546132c79082612986565b60025573ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546132fa9082612986565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611ac4565b60006109be825490565b73ffffffffffffffffffffffffffffffffffffffff811660009081526003602052604090208054600181018255905b50919050565b60006109be6133a1612ec9565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156134af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b8360ff16601b14806134c457508360ff16601c145b613550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b6040805160008082526020820180845288905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156135a4573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116612e5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610a50565b6000818152600183016020526040812054613693575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109be565b5060006109be565b60006117a8837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b166137ca565b60006117a883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612e0f565b815460009082106137a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f64730000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b8260000182815481106137b7576137b7613eff565b9060005260206000200154905092915050565b600081815260018301602052604081205480156138b35760006137ee60018361420b565b85549091506000906138029060019061420b565b9050600086600001828154811061381b5761381b613eff565b906000526020600020015490508087600001848154811061383e5761383e613eff565b600091825260209091200155613855836001613f76565b600082815260018901602052604090205586548790806138775761387761429a565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506109be565b60009150506109be565b8280546138c990613eb1565b90600052602060002090601f0160209004810192826138eb5760008555613931565b82601f1061390457805160ff1916838001178555613931565b82800160010185558215613931579182015b82811115613931578251825591602001919060010190613916565b5061393d929150613941565b5090565b5b8082111561393d5760008155600101613942565b600060208083528351808285015260005b8181101561398357858101830151858201604001528201613967565b81811115613995576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146139ed57600080fd5b919050565b60008060408385031215613a0557600080fd5b613a0e836139c9565b946020939093013593505050565b801515811461137657600080fd5b600060208284031215613a3c57600080fd5b81356117a881613a1c565b600060208284031215613a5957600080fd5b6117a8826139c9565b600060208284031215613a7457600080fd5b5035919050565b600080600060608486031215613a9057600080fd5b613a99846139c9565b9250613aa7602085016139c9565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613b2d57613b2d613ab7565b604052919050565b60006020808385031215613b4857600080fd5b823567ffffffffffffffff80821115613b6057600080fd5b818501915085601f830112613b7457600080fd5b813581811115613b8657613b86613ab7565b8060051b9150613b97848301613ae6565b8181529183018401918481019088841115613bb157600080fd5b938501935b83851015613bcf57843582529385019390850190613bb6565b98975050505050505050565b60008060408385031215613bee57600080fd5b82359150613bfe602084016139c9565b90509250929050565b600082601f830112613c1857600080fd5b813567ffffffffffffffff811115613c3257613c32613ab7565b613c6360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613ae6565b818152846020838601011115613c7857600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215613ca857600080fd5b823567ffffffffffffffff80821115613cc057600080fd5b613ccc86838701613c07565b93506020850135915080821115613ce257600080fd5b50613cef85828601613c07565b9150509250929050565b60008083601f840112613d0b57600080fd5b50813567ffffffffffffffff811115613d2357600080fd5b6020830191508360208260051b8501011115613d3e57600080fd5b9250929050565b600080600060408486031215613d5a57600080fd5b83359250602084013567ffffffffffffffff811115613d7857600080fd5b613d8486828701613cf9565b9497909650939450505050565b60008060408385031215613da457600080fd5b50508035926020909101359150565b600080600080600060808688031215613dcb57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff811115613df757600080fd5b613e0388828901613cf9565b969995985093965092949392505050565b600080600080600080600060e0888a031215613e2f57600080fd5b613e38886139c9565b9650613e46602089016139c9565b95506040880135945060608801359350608088013560ff81168114613e6a57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215613e9a57600080fd5b613ea3836139c9565b9150613bfe602084016139c9565b600181811c90821680613ec557607f821691505b6020821081141561338e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215613f4057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613f8957613f89613f47565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613fc057613fc0613f47565b5060010190565b8054600090600181811c9080831680613fe157607f831692505b602080841082141561401c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b83885260208801828015614037576001811461406657614091565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00871682528282019750614091565b60008981526020902060005b8781101561408b57815484820152908601908401614072565b83019850505b5050505050505092915050565b6040815260006140b16040830185613fc7565b8281036020840152612e5a8185613fc7565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b878110156141e0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18a360301811261419757600080fd5b8901803567ffffffffffffffff8111156141b057600080fd5b8036038b13156141bf57600080fd5b6141cc87828885016140c3565b965050509183019190830190600101614136565b509298975050505050505050565b60006020828403121561420057600080fd5b81516117a881613a1c565b60008282101561421d5761421d613f47565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561425a5761425a613f47565b500290565b600082614295577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e461646f2d503bf780a9f3926215ffa592ef73f33f8529487295fcaf87728f9e64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103d05760003560e01c806379cc6790116101ff578063ae7730291161011a578063d01dd162116100ad578063dd62ed3e1161007c578063dd62ed3e146108b4578063e6344628146108fa578063f1fc1fff1461090d578063f72bd4f01461091657600080fd5b8063d01dd16214610868578063d505accf1461087b578063d547741f1461088e578063d914cd4b146108a157600080fd5b8063c03f7be3116100e9578063c03f7be314610836578063c1e2785b1461083f578063c2593c2714610848578063ca15c8731461085557600080fd5b8063ae773029146107da578063aee06a5e14610808578063b4f56b261461081b578063bef40ec81461082e57600080fd5b80639a6f978d11610192578063a6959f0f11610161578063a6959f0f1461078e578063a8a778ae146107a1578063a9059cbb146107b4578063ab3d1bb6146107c757600080fd5b80639a6f978d1461074e578063a085ea7c14610760578063a217fddf14610773578063a457c2d71461077b57600080fd5b806387a140c3116101ce57806387a140c3146107135780639010d07c1461072057806391d148541461073357806395d89b411461074657600080fd5b806379cc6790146106ba5780637adbf973146106cd5780637dc0d1d0146106e05780637ecebe001461070057600080fd5b8063313ce567116102ef5780634d97897b11610282578063597bf73811610251578063597bf7381461064b5780635a4462151461065e5780636793f0ac1461067157806370a082311461068457600080fd5b80634d97897b146105ed57806351e238e31461060d578063545055171461061e578063564b81ef1461064557600080fd5b806336568abe116102be57806336568abe146105a157806339509351146105b45780633b7d0946146105c757806342966c68146105da57600080fd5b8063313ce5671461054f578063349432d91461056957806334ddb95d146105725780633644e5151461059957600080fd5b80631c5df1e511610367578063248a9ca311610336578063248a9ca3146104cb57806327daf4f8146104ee5780632eb9771b146105335780632f2ff15d1461053c57600080fd5b80631c5df1e5146104895780632258750a1461049c57806323b872dd146104a55780632480fcea146104b857600080fd5b806315ea919c116103a357806315ea919c1461043e57806316b0c8461461046157806318160ddd1461047857806319d05d091461048057600080fd5b806306fdde03146103d5578063095ea7b3146103f35780630c0a25aa1461041657806311af9a4b1461042b575b600080fd5b6103dd61091f565b6040516103ea9190613956565b60405180910390f35b6104066104013660046139f2565b6109ad565b60405190151581526020016103ea565b610429610424366004613a2a565b6109c4565b005b610429610439366004613a47565b610aca565b61040661044c366004613a47565b600b6020526000908152604090205460ff1681565b61046a60105481565b6040519081526020016103ea565b60025461046a565b61046a60135481565b610429610497366004613a62565b610bcd565b61046a60165481565b6104066104b3366004613a7b565b610c92565b61046a6104c6366004613b35565b610d26565b61046a6104d9366004613a62565b60009081526004602052604090206002015490565b60085461050e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103ea565b61046a600c5481565b61042961054a366004613bdb565b610e66565b610557601281565b60405160ff90911681526020016103ea565b61046a60125481565b61046a7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b61046a610f1c565b6104296105af366004613bdb565b610f2b565b6104066105c23660046139f2565b610fda565b6104296105d5366004613a47565b61101d565b6104296105e8366004613a62565b61136c565b60095461050e9073ffffffffffffffffffffffffffffffffffffffff1681565b61046a69021e19e0c9bab240000081565b61046a7fb25402418ad555013210365a422f9f1206b2dd00719998db06f8a1fbe014641b81565b4661046a565b610429610659366004613a62565b611379565b61042961066c366004613c95565b61143e565b61040661067f366004613d45565b611535565b61046a610692366004613a47565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6104296106c83660046139f2565b611616565b6104296106db366004613a47565b611662565b60075461050e9073ffffffffffffffffffffffffffffffffffffffff1681565b61046a61070e366004613a47565b611765565b600f546104069060ff1681565b61050e61072e366004613d91565b611790565b610406610741366004613bdb565b6117af565b6103dd6117c7565b60155461040690610100900460ff1681565b61042961076e366004613d91565b6117d4565b61046a600081565b6104066107893660046139f2565b6118a4565b61042961079c366004613d91565b611900565b6104296107af3660046139f2565b6119d0565b6104066107c23660046139f2565b611ad0565b6104296107d5366004613db3565b611add565b6107ed6107e8366004613b35565b611f3b565b604080519384526020840192909252908201526060016103ea565b610429610816366004613a47565b611f62565b6104296108293660046139f2565b612108565b610429612200565b61046a600e5481565b61046a60145481565b6015546104069060ff1681565b61046a610863366004613a62565b612321565b61050e610876366004613a62565b612338565b610429610889366004613e14565b61236f565b61042961089c366004613bdb565b61252e565b6104296108af366004613a47565b6125d6565b61046a6108c2366004613e87565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b610429610908366004613a2a565b612897565b61046a600d5481565b61046a60115481565b6006805461092c90613eb1565b80601f016020809104026020016040519081016040528092919081815260200182805461095890613eb1565b80156109a55780601f1061097a576101008083540402835291602001916109a5565b820191906000526020600020905b81548152906001019060200180831161098857829003601f168201915b505050505081565b60006109ba338484612a31565b5060015b92915050565b6109ee7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b610a59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e657200000000000060448201526064015b60405180910390fd5b60158054821515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff9091161790556040517fe50bc939dc0e5025414f0f3b58008de090812f288a3670db7e723ef663dcdc5490610abf90831515815260200190565b60405180910390a150565b610af47f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b610b5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd7ab6b495fc0223207243f48d9c9e2c8303180b6d1914be5710ecf209ebd2d1c90602001610abf565b610bf77f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b610c5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b600e8190556040518181527fc7443059c2ed485e2c9efe4e766bef9432a6f0ed6695741ab4afdffab3b9215790602001610abf565b6000610c9f848484612be5565b610d1c8433610d17856040518060600160405280602881526020016143126028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020526040812090335b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190612e0f565b612a31565b5060019392505050565b600080805b600a54811015610e5f57600073ffffffffffffffffffffffffffffffffffffffff16600a8281548110610d6057610d60613eff565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614610e4d57600a8181548110610d9a57610d9a613eff565b600091825260209091200154845173ffffffffffffffffffffffffffffffffffffffff9091169063b6258aaa90869084908110610dd957610dd9613eff565b60200260200101516040518263ffffffff1660e01b8152600401610dff91815260200190565b602060405180830381865afa158015610e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e409190613f2e565b610e4a9083613f76565b91505b80610e5781613f8e565b915050610d2b565b5092915050565b600082815260046020526040902060020154610e8290336117af565b610f0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e7400000000000000000000000000000000006064820152608401610a50565b610f188282612e63565b5050565b6000610f26612ec9565b905090565b73ffffffffffffffffffffffffffffffffffffffff81163314610fd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610a50565b610f188282612fbc565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916109ba918590610d179086612986565b6110477f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b6110ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b73ffffffffffffffffffffffffffffffffffffffff8116611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4445493a3a72656d6f7665506f6f6c3a205a65726f206164647265737320646560448201527f74656374656400000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b602052604090205460ff161515600114611209576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4445493a3a72656d6f7665506f6f6c3a2041646472657373206e6f6e6578697360448201527f74616e74000000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b6020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600a54811015611325578173ffffffffffffffffffffffffffffffffffffffff16600a828154811061128957611289613eff565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415611313576000600a82815481106112c6576112c6613eff565b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611325565b8061131d81613f8e565b915050611255565b5060405173ffffffffffffffffffffffffffffffffffffffff821681527f4106dfdaa577573db51c0ca93f766dbedfa0758faa2e7f5bcdb7c142be803c3f90602001610abf565b6113763382613022565b50565b6113a37f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b600d8190556040518181527f3e2f198539455d04450252bfc103c833ca10d4231da6509e0528bb2383e22b7390602001610abf565b6114687f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b6114ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b81516114e19060069060208501906138bd565b5080516114f59060059060208401906138bd565b507f24a9aef9121ba62598f20f8f80fd406fa1d2d956747e0728068c649f324ddf416006600560405161152992919061409e565b60405180910390a15050565b60075460009073ffffffffffffffffffffffffffffffffffffffff1663fb0fe3f46115ad866040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b85856040518463ffffffff1660e01b81526004016115cd9392919061410c565b602060405180830381865afa1580156115ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160e91906141ee565b949350505050565b60006116468260405180606001604052806024815260200161433a6024913961163f86336108c2565b9190612e0f565b9050611653833383612a31565b61165d8383613022565b505050565b61168c7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b6116f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3f32684a32a11dabdbb8c0177de80aa3ae36a004d75210335b49e544e48cd0aa90602001610abf565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600360205260408120546109be565b60008281526004602052604081206117a89083613190565b9392505050565b60008281526004602052604081206117a890836131a6565b6005805461092c90613eb1565b6117fe7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b6011829055601281905560408051838152602081018390527f36d9a5eb34de8b03405baea3d54341f11312730be6f93d18c932728c9e2250d49101611529565b60006109ba3384610d178560405180606001604052806025815260200161435e6025913933600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d1684529091529020549190612e0f565b61192a7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b611990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b6013829055601481905560408051838152602081018390527f2896b6d714a04536ba6121e132dc3aff2eaca8a2ba3eff2676d6a8b435f317459101611529565b336000908152600b602052604090205460ff161515600114611a74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4445493a206f6e6c792064656920706f6f6c732063616e2063616c6c2074686960448201527f732066756e6374696f6e000000000000000000000000000000000000000000006064820152608401610a50565b611a7e82826131e5565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907f4857273a485c2cfff4b12a1064c50e871b8e0c686cf17f44c16b4f8554ede3b1906020015b60405180910390a35050565b60006109ba338484612be5565b600f5460ff1615611b70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4445493a3a436f6c6c61746572616c20526174696f20686173206265656e207060448201527f61757365640000000000000000000000000000000000000000000000000000006064820152608401610a50565b600060165442611b80919061420b565b9050600e54811015611c14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4445493a3a496e7465726e616c20636f6f6c646f776e206e6f7420706173736560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b600954604080517ea66f1f000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169162a66f1f9160048083019260209291908290030181865afa158015611c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca69190613f2e565b600854604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b8116602080840191909152603483018d90523090941b166054820152606881018a9052608881018990524660a8808301919091528251808303909101815260c89091019091528051910120909150611d2c818686611535565b506000611d398984614222565b90506000611d4660025490565b90506000611d54828461425f565b601554909150610100900460ff1615611e04576013548a1180611d7857506014548a105b611e04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4445493a3a5573652072656672657368436f6c6c61746572616c526174696f2060448201527f7768656e20444549206973206f757473696465206f66207065670000000000006064820152608401610a50565b6013548a1115611e2657600d54600c54611e1e919061420b565b600c55611ed5565b6014548a1015611e4057600d54600c54611e1e9190613f76565b60155460ff1615611ed557620f4240601154620f4240611e609190613f76565b601054611e6d9190614222565b611e77919061425f565b811115611e8e57600d54600c54611e1e919061420b565b620f4240601254620f4240611ea3919061420b565b601054611eb09190614222565b611eba919061425f565b811015611ed557600d54600c54611ed19190613f76565b600c555b601081905542601655600c54620f42401015611ef357620f4240600c555b7fb1200af9b3ac4dec88c9d01e1fb7cc7fa1f0fe55bf4afac1f30cc4fc2b2d1dd2600c54604051611f2691815260200190565b60405180910390a15050505050505050505050565b6000806000611f4960025490565b600c54611f5586610d26565b9250925092509193909250565b611f8c7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b611ff2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b73ffffffffffffffffffffffffffffffffffffffff8116612095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4445493a3a73657444455553416464726573733a205a65726f2061646472657360448201527f73206465746563746564000000000000000000000000000000000000000000006064820152608401610a50565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f40c19b0139e5bc25c64e466d74e6e13ee1095acc65b58faf1932f9583e7d812c90602001610abf565b336000908152600b602052604090205460ff1615156001146121ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4445493a206f6e6c792064656920706f6f6c732063616e2063616c6c2074686960448201527f732066756e6374696f6e000000000000000000000000000000000000000000006064820152608401610a50565b6121b6828261323d565b60405181815273ffffffffffffffffffffffffffffffffffffffff83169033907f97847a1fcbba98b997fb5b6c48f68c2d69b53a19157db1622218a559b95fe9be90602001611ac4565b61222a7fb25402418ad555013210365a422f9f1206b2dd00719998db06f8a1fbe014641b336117af565b6122b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4445493a20796f7520617265206e6f742074686520636f6c6c61746572616c2060448201527f726174696f2070617573657200000000000000000000000000000000000000006064820152608401610a50565b600f805460ff808216157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090921682179092556040519116151581527f209068f7bed5a02fb7695c3e3b61bb8324d1facb25523c6422bfd2105ec44d929060200160405180910390a1565b60008181526004602052604081206109be90613355565b600a818154811061234857600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b834211156123d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610a50565b60007f00000000000000000000000000000000000000000000000000000000000000008888886124088c61335f565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061247082613394565b90506000612480828787876133fd565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610a50565b6125228a8a8a612a31565b50505050505050505050565b60008281526004602052604090206002015461254a90336117af565b610fd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b65000000000000000000000000000000006064820152608401610a50565b6126007f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b612666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b73ffffffffffffffffffffffffffffffffffffffff8116612709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4445493a3a616464506f6f6c3a205a65726f206164647265737320646574656360448201527f74656400000000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b602052604090205460ff16156127be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4445493a3a616464506f6f6c3a204164647265737320616c726561647920657860448201527f69737473000000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff81166000818152600b6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600a805491820181559093527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a890920180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905590519182527f73cca62ab1b520c9715bf4e6c71e3e518c754e7148f65102f43289a7df0efea69101610abf565b6128c17f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336117af565b612927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4445493a20796f7520617265206e6f7420746865206f776e65720000000000006044820152606401610a50565b601580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215159081179091556040519081527fa272b58e328af1078a931ae3f79e96ad602c5fbbf0e953a5651b5e7e107846d290602001610abf565b6000806129938385613f76565b9050838110156117a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a50565b60006117a8837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1661364c565b73ffffffffffffffffffffffffffffffffffffffff8316612ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff8216612b76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316612c88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610a50565b73ffffffffffffffffffffffffffffffffffffffff8216612d2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610a50565b612d75816040518060600160405280602681526020016142ec6026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190612e0f565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054612db19082612986565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101612bd8565b60008184841115612e4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a509190613956565b506000612e5a848661420b565b95945050505050565b6000828152600460205260409020612e7b90826129ff565b15610f1857604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612f1857507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000828152600460205260409020612fd4908261369b565b15610f1857604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b73ffffffffffffffffffffffffffffffffffffffff82166130c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b61310f816040518060600160405280602281526020016142ca6022913973ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020549190612e0f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205560025461314290826136cd565b60025560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611ac4565b600061319c838361370f565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156117a8565b6131ef8282613022565b610f188233610d178460405180606001604052806024815260200161433a6024913973ffffffffffffffffffffffffffffffffffffffff881660009081526001602052604081209033610ce9565b73ffffffffffffffffffffffffffffffffffffffff82166132ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610a50565b6002546132c79082612986565b60025573ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546132fa9082612986565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611ac4565b60006109be825490565b73ffffffffffffffffffffffffffffffffffffffff811660009081526003602052604090208054600181018255905b50919050565b60006109be6133a1612ec9565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156134af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b8360ff16601b14806134c457508360ff16601c145b613550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b6040805160008082526020820180845288905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156135a4573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116612e5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610a50565b6000818152600183016020526040812054613693575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109be565b5060006109be565b60006117a8837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b166137ca565b60006117a883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612e0f565b815460009082106137a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f64730000000000000000000000000000000000000000000000000000000000006064820152608401610a50565b8260000182815481106137b7576137b7613eff565b9060005260206000200154905092915050565b600081815260018301602052604081205480156138b35760006137ee60018361420b565b85549091506000906138029060019061420b565b9050600086600001828154811061381b5761381b613eff565b906000526020600020015490508087600001848154811061383e5761383e613eff565b600091825260209091200155613855836001613f76565b600082815260018901602052604090205586548790806138775761387761429a565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506109be565b60009150506109be565b8280546138c990613eb1565b90600052602060002090601f0160209004810192826138eb5760008555613931565b82601f1061390457805160ff1916838001178555613931565b82800160010185558215613931579182015b82811115613931578251825591602001919060010190613916565b5061393d929150613941565b5090565b5b8082111561393d5760008155600101613942565b600060208083528351808285015260005b8181101561398357858101830151858201604001528201613967565b81811115613995576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146139ed57600080fd5b919050565b60008060408385031215613a0557600080fd5b613a0e836139c9565b946020939093013593505050565b801515811461137657600080fd5b600060208284031215613a3c57600080fd5b81356117a881613a1c565b600060208284031215613a5957600080fd5b6117a8826139c9565b600060208284031215613a7457600080fd5b5035919050565b600080600060608486031215613a9057600080fd5b613a99846139c9565b9250613aa7602085016139c9565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613b2d57613b2d613ab7565b604052919050565b60006020808385031215613b4857600080fd5b823567ffffffffffffffff80821115613b6057600080fd5b818501915085601f830112613b7457600080fd5b813581811115613b8657613b86613ab7565b8060051b9150613b97848301613ae6565b8181529183018401918481019088841115613bb157600080fd5b938501935b83851015613bcf57843582529385019390850190613bb6565b98975050505050505050565b60008060408385031215613bee57600080fd5b82359150613bfe602084016139c9565b90509250929050565b600082601f830112613c1857600080fd5b813567ffffffffffffffff811115613c3257613c32613ab7565b613c6360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613ae6565b818152846020838601011115613c7857600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215613ca857600080fd5b823567ffffffffffffffff80821115613cc057600080fd5b613ccc86838701613c07565b93506020850135915080821115613ce257600080fd5b50613cef85828601613c07565b9150509250929050565b60008083601f840112613d0b57600080fd5b50813567ffffffffffffffff811115613d2357600080fd5b6020830191508360208260051b8501011115613d3e57600080fd5b9250929050565b600080600060408486031215613d5a57600080fd5b83359250602084013567ffffffffffffffff811115613d7857600080fd5b613d8486828701613cf9565b9497909650939450505050565b60008060408385031215613da457600080fd5b50508035926020909101359150565b600080600080600060808688031215613dcb57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff811115613df757600080fd5b613e0388828901613cf9565b969995985093965092949392505050565b600080600080600080600060e0888a031215613e2f57600080fd5b613e38886139c9565b9650613e46602089016139c9565b95506040880135945060608801359350608088013560ff81168114613e6a57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215613e9a57600080fd5b613ea3836139c9565b9150613bfe602084016139c9565b600181811c90821680613ec557607f821691505b6020821081141561338e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215613f4057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613f8957613f89613f47565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613fc057613fc0613f47565b5060010190565b8054600090600181811c9080831680613fe157607f831692505b602080841082141561401c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b83885260208801828015614037576001811461406657614091565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00871682528282019750614091565b60008981526020902060005b8781101561408b57815484820152908601908401614072565b83019850505b5050505050505092915050565b6040815260006140b16040830185613fc7565b8281036020840152612e5a8185613fc7565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b878110156141e0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18a360301811261419757600080fd5b8901803567ffffffffffffffff8111156141b057600080fd5b8036038b13156141bf57600080fd5b6141cc87828885016140c3565b965050509183019190830190600101614136565b509298975050505050505050565b60006020828403121561420057600080fd5b81516117a881613a1c565b60008282101561421d5761421d613f47565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561425a5761425a613f47565b500290565b600082614295577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e461646f2d503bf780a9f3926215ffa592ef73f33f8529487295fcaf87728f9e64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/DEI/IDEI.sol/IDEIStablecoin.dbg.json b/artifacts/contracts/DEI/IDEI.sol/IDEIStablecoin.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/DEI/IDEI.sol/IDEIStablecoin.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/DEI/IDEI.sol/IDEIStablecoin.json b/artifacts/contracts/DEI/IDEI.sol/IDEIStablecoin.json new file mode 100644 index 00000000..ceb2ca8d --- /dev/null +++ b/artifacts/contracts/DEI/IDEI.sol/IDEIStablecoin.json @@ -0,0 +1,422 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IDEIStablecoin", + "sourceName": "contracts/DEI/IDEI.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "bool", + "name": "_activate", + "type": "bool" + } + ], + "name": "activateDIP", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pool_address", + "type": "address" + } + ], + "name": "addPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "collat_usd_price", + "type": "uint256[]" + } + ], + "name": "dei_info", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_address", + "type": "address" + } + ], + "name": "dei_pools", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "dei_pools_array", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getChainID", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "collat_usd_price", + "type": "uint256[]" + } + ], + "name": "globalCollateralValue", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "global_collateral_ratio", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "b_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "b_amount", + "type": "uint256" + } + ], + "name": "pool_burn_from", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "m_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "m_amount", + "type": "uint256" + } + ], + "name": "pool_mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deus_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "dei_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expire_block", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "refreshCollateralRatio", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pool_address", + "type": "address" + } + ], + "name": "removePool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_new_step", + "type": "uint256" + } + ], + "name": "setDEIStep", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_deus_address", + "type": "address" + } + ], + "name": "setDEUSAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_GR_top_band", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_GR_bottom_band", + "type": "uint256" + } + ], + "name": "setGrowthRatioBands", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + } + ], + "name": "setNameAndSymbol", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_oracle", + "type": "address" + } + ], + "name": "setOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_top_band", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_bottom_band", + "type": "uint256" + } + ], + "name": "setPriceBands", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_new_cooldown", + "type": "uint256" + } + ], + "name": "setRefreshCooldown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_reserve_tracker_address", + "type": "address" + } + ], + "name": "setReserveTracker", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "toggleCollateralRatio", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_use_growth_ratio", + "type": "bool" + } + ], + "name": "useGrowthRatio", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "sighash", + "type": "bytes32" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "verify_price", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/DEI/Pools/DEIPool.sol/DEIPool.dbg.json b/artifacts/contracts/DEI/Pools/DEIPool.sol/DEIPool.dbg.json new file mode 100644 index 00000000..b4959490 --- /dev/null +++ b/artifacts/contracts/DEI/Pools/DEIPool.sol/DEIPool.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/DEI/Pools/DEIPool.sol/DEIPool.json b/artifacts/contracts/DEI/Pools/DEIPool.sol/DEIPool.json new file mode 100644 index 00000000..fa05d574 --- /dev/null +++ b/artifacts/contracts/DEI/Pools/DEIPool.sol/DEIPool.json @@ -0,0 +1,1140 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DEIPool", + "sourceName": "contracts/DEI/Pools/DEIPool.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_dei_contract_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_deus_contract_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_collateral_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_trusty_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_admin_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_pool_ceiling", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_library", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "BuybackToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "MintingToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "new_ceiling", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_bonus_rate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_redemption_delay", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_mint_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_redeem_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_buyback_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_recollat_fee", + "type": "uint256" + } + ], + "name": "PoolParametersSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "RecollateralizeToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "RedeemingToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "daoShare", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "daoShareCollected", + "type": "event" + }, + { + "inputs": [], + "name": "DAO_SHARE_COLLECTOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PARAMETER_SETTER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TRUSTY_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "collat_usd_price", + "type": "uint256[]" + } + ], + "name": "availableExcessCollatDV", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bonus_rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEUS_amount", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "collateral_price", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "buyBackDEUS", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "buyBackPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "buyback_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collat_usd_price", + "type": "uint256" + } + ], + "name": "collatDollarBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "collectDaoShare", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "collectRedemption", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "daoShare", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "emergencyWithdrawERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getChainID", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "lastRedeemed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mint1t1DEI", + "outputs": [ + { + "internalType": "uint256", + "name": "dei_amount_d18", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deus_amount_d18", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mintAlgorithmicDEI", + "outputs": [ + { + "internalType": "uint256", + "name": "dei_amount_d18", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mintFractionalDEI", + "outputs": [ + { + "internalType": "uint256", + "name": "mint_amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "mintPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minting_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pausedPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pool_ceiling", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "recollat_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "pool_collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "collateral_price", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "internalType": "struct DEIPool.RecollateralizeDEI", + "name": "inputs", + "type": "tuple" + } + ], + "name": "recollateralizeDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "recollateralizePaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeem1t1DEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeemAlgorithmicDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "redeemCollateralBalances", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "redeemDEUSBalances", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeemFractionalDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "redeemPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "redemption_delay", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "redemption_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "new_ceiling", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_bonus_rate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_redemption_delay", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_mint_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_redeem_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_buyback_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_recollat_fee", + "type": "uint256" + } + ], + "name": "setPoolParameters", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleBuyBack", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleMinting", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleRecollateralize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleRedeeming", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unclaimedPoolCollateral", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unclaimedPoolDEUS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a06040526000600e819055600f819055611d4c60105560026011556012556013805463ffffffff60a01b191690553480156200003b57600080fd5b5060405162006301380380620063018339810160408190526200005e916200041b565b6001600160a01b038716158015906200007f57506001600160a01b03861615155b80156200009457506001600160a01b03851615155b8015620000a957506001600160a01b03841615155b8015620000be57506001600160a01b03831615155b8015620000d357506001600160a01b03811615155b620001245760405162461bcd60e51b815260206004820152601b60248201527f504f4f4c3a3a5a65726f20616464726573732064657465637465640000000000604482015260640160405180910390fd5b601380546001600160a01b038084166001600160a01b031992831617909255600380548a8416908316179055600480548984169083161781556002805493891693831684179055600180549092168317909155600e8490556040805163313ce56760e01b8152905163313ce567928281019260209291908290030181865afa158015620001b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001db9190620004a7565b620001eb9060ff166012620004d3565b608052620001fb60008462000310565b620002277fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b8562000310565b620002537fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c38578562000310565b6200027f7f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f8562000310565b620002ab7f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf8562000310565b620002d77f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c8562000310565b620003037fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f2405098562000310565b50505050505050620004f9565b6200031c828262000320565b5050565b6000828152602081815260409091206200034591839062004aa562000387821b17901c565b156200031c5760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6000620003a3836001600160601b0319606085901b16620003ac565b90505b92915050565b6000818152600183016020526040812054620003f557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620003a6565b506000620003a6565b80516001600160a01b03811681146200041657600080fd5b919050565b600080600080600080600060e0888a0312156200043757600080fd5b6200044288620003fe565b96506200045260208901620003fe565b95506200046260408901620003fe565b94506200047260608901620003fe565b93506200048260808901620003fe565b925060a088015191506200049960c08901620003fe565b905092959891949750929550565b600060208284031215620004ba57600080fd5b815160ff81168114620004cc57600080fd5b9392505050565b600082821015620004f457634e487b7160e01b600052601160045260246000fd5b500390565b608051615dbb6200054660003960008181610c960152818161155a0152818161225601528181612ad201528181612dc40152818161349e0152818161397501526147840152615dbb6000f3fe608060405234801561001057600080fd5b50600436106103205760003560e01c80637b0461e9116101a7578063b6258aaa116100ee578063cb73999f11610097578063e3d84d5e11610071578063e3d84d5e146106d4578063eb2d7461146106e7578063fede5c9c146106fa57600080fd5b8063cb73999f146106b0578063d547741f146106b9578063daa50485146106cc57600080fd5b8063c6301e5d116100c8578063c6301e5d14610681578063c74ec56a14610694578063ca15c8731461069d57600080fd5b8063b6258aaa14610652578063c3355b8d14610665578063c410ca1b1461066e57600080fd5b806391d1485411610150578063a217fddf1161012a578063a217fddf14610604578063abae2c4c1461060c578063b235d4681461062c57600080fd5b806391d14854146105cb578063928d2b31146105de578063978b73b5146105f157600080fd5b80637f877f85116101815780637f877f851461056257806388d19f1b1461058a5780639010d07c1461059357600080fd5b80637b0461e91461052c5780637d55094d146105355780637e4831d31461053d57600080fd5b806340e14b781161026b578063564b81ef116102145780636d2c5615116101ee5780636d2c5615146104bb5780636d82e314146104f25780637901330b1461051957600080fd5b8063564b81ef146104855780635de207cc1461048b5780636526a12a146104b257600080fd5b80634ebbe762116102455780634ebbe7621461045757806350c9ecd91461046a57806354f9769d1461047257600080fd5b806340e14b781461043357806342d15aec146104465780634c6349341461044e57600080fd5b80632f2ff15d116102cd5780633648b7dc116102a75780633648b7dc146103f757806336568abe146104005780633b92da471461041357600080fd5b80632f2ff15d146103aa57806332ad1ee4146103bd57806334ddb95d146103d057600080fd5b806315128425116102fe578063151284251461036b578063248a9ca314610374578063254cd2bd1461039757600080fd5b806308a7493d14610325578063101197c71461035857806312ace5a214610361575b600080fd5b610345610333366004615168565b600a6020526000908152604090205481565b6040519081526020015b60405180910390f35b61034560075481565b610369610703565b005b61034560115481565b610345610382366004615183565b60009081526020819052604090206002015490565b6103696103a53660046151e8565b6108bc565b6103696103b8366004615249565b610fb3565b6103456103cb3660046151e8565b611069565b6103457f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610345600c5481565b61036961040e366004615249565b61173f565b610345610421366004615168565b60096020526000908152604090205481565b6103456104413660046153ab565b6117ee565b610369611a0c565b61034560105481565b6103696104653660046153e8565b611ad3565b610369611c12565b610345610480366004615434565b611cd0565b46610345565b6103457fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f24050981565b610345600e5481565b6013546104e290760100000000000000000000000000000000000000000000900460ff1681565b604051901515815260200161034f565b6103457f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e53081565b610369610527366004615249565b61255b565b610345600b5481565b6103696126ef565b6013546104e29074010000000000000000000000000000000000000000900460ff1681565b6013546104e29077010000000000000000000000000000000000000000000000900460ff1681565b61034560125481565b6105a66105a13660046154a8565b6127aa565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161034f565b6104e26105d9366004615249565b6127cb565b6103696105ec3660046155cc565b6127e3565b6103696105ff3660046151e8565b612eef565b610345600081565b61034561061a366004615168565b600d6020526000908152604090205481565b6013546104e2907501000000000000000000000000000000000000000000900460ff1681565b610345610660366004615183565b613492565b61034560055481565b61036961067c366004615685565b613581565b61034561068f3660046151e8565b613a66565b610345600f5481565b6103456106ab366004615183565b61404e565b61034560065481565b6103696106c7366004615249565b614065565b61036961410d565b6103696106e236600461570c565b6141c9565b6103696106f5366004615748565b6142f2565b61034560085481565b601154336000908152600d60205260409020544391610721916157cf565b11156107da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605b60248201527f504f4f4c3a3a636f6c6c656374526564656d7074696f6e3a204d75737420776160448201527f697420666f7220726564656d7074696f6e5f64656c617920626c6f636b73206260648201527f65666f726520636f6c6c656374696e6720726564656d7074696f6e0000000000608482015260a4015b60405180910390fd5b3360009081526009602052604081205481908190819015610822573360009081526009602052604081208054919055600c5490925061081a9083906157e7565b600c55600193505b336000908152600a6020526040902054156108625750336000908152600a602052604081208054919055600b5461085a9082906157e7565b600b55600192505b831561088c5760045461088c9073ffffffffffffffffffffffffffffffffffffffff163384614ad7565b82156108b6576001546108b69073ffffffffffffffffffffffffffffffffffffffff163383614ad7565b50505050565b6013547501000000000000000000000000000000000000000000900460ff1615610942576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107d1565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa1580156109b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d891906157fe565b14610a3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203d3d203100000060448201526064016107d1565b43831015610acf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107d1565b60025460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90610bc290849087908790600401615860565b602060405180830381865afa158015610bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c039190615942565b610c8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a72656465656d3174314445493a20696e76616c6964207369676e60448201527f617475726573000000000000000000000000000000000000000000000000000060648201526084016107d1565b6000610cbc7f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b610cc69088615a97565b6013546040517f068d54aa000000000000000000000000000000000000000000000000000000008152600481018990526024810183905291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063068d54aa90604401602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6691906157fe565b9050620f4240600654620f4240610d7d91906157e7565b610d879083615ad2565b610d919190615a97565b600b546001546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152929350909173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610e07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2b91906157fe565b610e3591906157e7565b811115610e9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107d1565b336000908152600a6020526040902054610eb99082906157cf565b336000908152600a6020526040902055600b54610ed79082906157cf565b600b55336000908152600d60205260409020439055600654620f424090610efe908a615ad2565b610f089190615a97565b60126000828254610f1991906157cf565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae906044015b600060405180830381600087803b158015610f9157600080fd5b505af1158015610fa5573d6000803e3d6000fd5b505050505050505050505050565b600082815260208190526040902060020154610fcf90336127cb565b61105b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084016107d1565b6110658282614c47565b5050565b60135460009074010000000000000000000000000000000000000000900460ff16156110f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107d1565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015611163573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118791906157fe565b10156111ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203e3d203100000060448201526064016107d1565b600e54600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015289929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611264573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128891906157fe565b61129291906157e7565b61129c91906157cf565b1115611304576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5b506f6f6c277320436c6f7365645d3a204365696c696e67207265616368656460448201526064016107d1565b43841015611394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a6d696e743174314445493a207369676e6174757265206973206560448201527f787069726564000000000000000000000000000000000000000000000000000060648201526084016107d1565b60025460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac9061148790849088908890600401615860565b602060405180830381865afa1580156114a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c89190615942565b611553576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6d696e743174314445493a20696e76616c6964207369676e617460448201527f757265730000000000000000000000000000000000000000000000000000000060648201526084016107d1565b60006115807f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b61158a9089615ad2565b6013546040517f882ab63a000000000000000000000000000000000000000000000000000000008152600481018a90526024810183905291925073ffffffffffffffffffffffffffffffffffffffff169063882ab63a90604401602060405180830381865afa158015611601573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162591906157fe565b9250620f4240600554620f424061163c91906157e7565b6116469085615ad2565b6116509190615a97565b6001549093506116789073ffffffffffffffffffffffffffffffffffffffff1633308b614cad565b620f42406005548461168a9190615ad2565b6116949190615a97565b601260008282546116a591906157cf565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561171c57600080fd5b505af1158015611730573d6000803e3d6000fd5b50505050505095945050505050565b73ffffffffffffffffffffffffffffffffffffffff811633146117e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016107d1565b6110658282614e4b565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561185e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188291906157fe565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191791906157fe565b6003546040517f2480fcea00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690632480fcea90611973908890600401615b0f565b602060405180830381865afa158015611990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b491906157fe565b9050620f42408211156119c857620f424091505b6000620f42406119d88486615ad2565b6119e29190615a97565b905080821115611a00576119f681836157e7565b9695505050505050565b50600095945050505050565b611a367f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f336127cb565b611a3f57600080fd5b6013805460ff76010000000000000000000000000000000000000000000080830482161581027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f2fda313d9b5bb0b73bd003153f2fccbc0dca49791fdd1184dfad82b44f54bd2e93611ac99390049091161515815260200190565b60405180910390a1565b611afd7fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f240509336127cb565b611b89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f504f4f4c3a2043616c6c6572206973206e6f7420504152414d455445525f534560448201527f545445525f524f4c45000000000000000000000000000000000000000000000060648201526084016107d1565b600e8790556010869055601185905560058490556006839055600782905560088190556040805188815260208101889052908101869052606081018590526080810184905260a0810183905260c081018290527f17fe98b66d27bd793ea01bd8a23a54acab8eeb167d9eb016a0c7cd71c573920c9060e00160405180910390a150505050505050565b611c3c7f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf336127cb565b611c4557600080fd5b6013805460ff7701000000000000000000000000000000000000000000000080830482161581027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f4f40fd1c59f78d7a2220da638cd9400daba01e57c7965702f390bf13133cc31f93611ac99390049091161515815260200190565b60135460009074010000000000000000000000000000000000000000900460ff1615611d58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107d1565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015611dc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dec91906157fe565b9050620f424081108015611e005750600081115b611e8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f436f6c6c61746572616c20726174696f206e6565647320746f2062652062657460448201527f7765656e202e30303030303120616e64202e393939393939000000000000000060648201526084016107d1565b600e54600b546001546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528c929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2591906157fe565b611f2f91906157e7565b611f3991906157cf565b1115611fee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f506f6f6c206365696c696e6720726561636865642c206e6f206d6f7265204445908201527f492063616e206265206d696e7465642077697468207468697320636f6c6c617460648201527f6572616c00000000000000000000000000000000000000000000000000000000608482015260a4016107d1565b4385101561207e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a207369676e61747560448201527f726520697320657870697265642e00000000000000000000000000000000000060648201526084016107d1565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018d90529390941b909316605484015260688301899052608883018890524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906121579084908990899060cc01615860565b602060405180830381865afa158015612174573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121989190615942565b612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a20696e76616c696460448201527f207369676e61747572657300000000000000000000000000000000000000000060648201526084016107d1565b61224f6040518060800160405280600081526020016000815260200160008152602001600081525090565b600061227c7f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b612286908d615ad2565b604080516080810182528b8152602081018d9052808201929092526060820186905260135490517f537a30a70000000000000000000000000000000000000000000000000000000081529193506000925073ffffffffffffffffffffffffffffffffffffffff169063537a30a790612302908590600401615b53565b6040805180830381865afa15801561231e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123429190615b7e565b90955090508a8111156123b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e6f7420656e6f756768204445555320696e707574746564000000000000000060448201526064016107d1565b620f4240600554620f42406123c691906157e7565b6123d09087615ad2565b6123da9190615a97565b600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820184905291965073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561245257600080fd5b505af1158015612466573d6000803e3d6000fd5b5050600154612490925073ffffffffffffffffffffffffffffffffffffffff16905033308f614cad565b620f4240600554866124a29190615ad2565b6124ac9190615a97565b601260008282546124bd91906157cf565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810187905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561253457600080fd5b505af1158015612548573d6000803e3d6000fd5b5050505050505050979650505050505050565b6125857f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e530336127cb565b61258e57600080fd5b6012548211156125fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f616d6f756e743c3d64616f53686172650000000000000000000000000000000060448201526064016107d1565b6003546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018590529091169063b4f56b2690604401600060405180830381600087803b15801561266e57600080fd5b505af1158015612682573d6000803e3d6000fd5b50505050816012600082825461269891906157e7565b90915550506040805183815273ffffffffffffffffffffffffffffffffffffffff831660208201527f3a708f2f1c75b12457d207cf1e259ab9f87bbfccb29672903acf4661bd342e49910160405180910390a15050565b6127197fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b336127cb565b61272257600080fd5b6013805460ff7401000000000000000000000000000000000000000080830482161581027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f6bdfe227d5db299c59aa56d5f846f40dbd73b271aaa78e18ed74fc3e00b8aa6b93611ac99390049091161515815260200190565b60008281526020819052604081206127c29083614eb1565b90505b92915050565b60008281526020819052604081206127c29083614ec7565b601354760100000000000000000000000000000000000000000000900460ff1615612890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a205265636f6c6c60448201527f61746572616c697a65206973207061757365640000000000000000000000000060648201526084016107d1565b4381608001511015612924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107d1565b60025460408281015160045460608501516080860151935160009561296d9573ffffffffffffffffffffffffffffffffffffffff91821695949190911692914690602001615ba2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052805160209091012060035460a08501517f6793f0ac00000000000000000000000000000000000000000000000000000000845291935073ffffffffffffffffffffffffffffffffffffffff1691636793f0ac916129fe91859190600401615c4d565b602060405180830381865afa158015612a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a3f9190615942565b612acb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107d1565b6000612af87f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b8351612b049190615ad2565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9991906157fe565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2e91906157fe565b60035460408088015190517f2480fcea00000000000000000000000000000000000000000000000000000000815292935060009273ffffffffffffffffffffffffffffffffffffffff90921691632480fcea91612c8d91600401615b0f565b602060405180830381865afa158015612caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cce91906157fe565b60135460408801518051929350600092839273ffffffffffffffffffffffffffffffffffffffff169163fc01106191899190612d0c906001906157e7565b81518110612d1c57612d1c615d0b565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015260448101869052606481018890526084810187905260a4016040805180830381865afa158015612d94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db89190615b7e565b90925090506000612dea7f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b612df49084615a97565b905060008960600151600854601054620f4240612e1191906157cf565b612e1b91906157e7565b612e259085615ad2565b612e2f9190615a97565b600154909150612e579073ffffffffffffffffffffffffffffffffffffffff16333085614cad565b600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815233928101929092526024820183905273ffffffffffffffffffffffffffffffffffffffff169063b4f56b26906044015b600060405180830381600087803b158015612ecb57600080fd5b505af1158015612edf573d6000803e3d6000fd5b5050505050505050505050505050565b6013547501000000000000000000000000000000000000000000900460ff1615612f75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107d1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fe2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300691906157fe565b15613093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20436f6c6c60448201527f61746572616c20726174696f206d75737420626520300000000000000000000060648201526084016107d1565b43831015613123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4445493a3a72656465656d416c676f726974686d69634445493a207369676e6160448201527f7475726520697320657870697265642e0000000000000000000000000000000060648201526084016107d1565b60045460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac9061321690849087908790600401615860565b602060405180830381865afa158015613233573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132579190615942565b6132e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20696e766160448201527f6c6964207369676e61747572657300000000000000000000000000000000000060648201526084016107d1565b6006548690620f4240906132f790826157e7565b6133019083615ad2565b61330b9190615a97565b905060008661331d620f424084615ad2565b6133279190615a97565b336000908152600960205260409020549091506133459082906157cf565b33600090815260096020526040902055600c546133639082906157cf565b600c55336000908152600d60205260409020439055600654620f42409061338a908a615ad2565b6133949190615a97565b601260008282546133a591906157cf565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561341c57600080fd5b505af1158015613430573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820185905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401610f77565b6000620f4240826134c47f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015613535573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061355991906157fe565b61356391906157e7565b61356d9190615ad2565b6135779190615ad2565b6127c59190615a97565b60135477010000000000000000000000000000000000000000000000900460ff161561362e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6275794261636b444555533a204275796261636b20697320706160448201527f757365640000000000000000000000000000000000000000000000000000000060648201526084016107d1565b438310156136be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4445493a3a6275794261636b444555533a207369676e6174757265206973206560448201527f7870697265642e0000000000000000000000000000000000000000000000000060648201526084016107d1565b60025460045460009173ffffffffffffffffffffffffffffffffffffffff908116918891168787466040516020016136fb96959493929190615ba2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac9061378a90849087908790600401615860565b602060405180830381865afa1580156137a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137cb9190615942565b613857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f504f4f4c3a3a6275794261636b444555533a20696e76616c6964207369676e6160448201527f747572657300000000000000000000000000000000000000000000000000000060648201526084016107d1565b6000604051806080016040528061386d896117ee565b81526020018781526020018860018a5161388791906157e7565b8151811061389757613897615d0b565b602002602001015181526020018981525090506000620f4240600754620f42406138c191906157e7565b6013546040517f3c04af9f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633c04af9f90613917908790600401615b53565b602060405180830381865afa158015613934573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061395891906157fe565b6139629190615ad2565b61396c9190615a97565b9050600061399b7f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b6139a59083615a97565b600480546040517fa8a778ae0000000000000000000000000000000000000000000000000000000081523392810192909252602482018d905291925073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015613a1d57600080fd5b505af1158015613a31573d6000803e3d6000fd5b5050600154613a5a925073ffffffffffffffffffffffffffffffffffffffff1690503383614ad7565b50505050505050505050565b60135460009074010000000000000000000000000000000000000000900460ff1615613aee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107d1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b7f91906157fe565b15613be6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f436f6c6c61746572616c20726174696f206d757374206265203000000000000060448201526064016107d1565b43841015613c76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107d1565b60045460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90613d6990849088908890600401615860565b602060405180830381865afa158015613d86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613daa9190615942565b613e36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107d1565b6013546040517f14da4ee1000000000000000000000000000000000000000000000000000000008152600481018890526024810189905273ffffffffffffffffffffffffffffffffffffffff909116906314da4ee190604401602060405180830381865afa158015613eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ed091906157fe565b9150620f4240600554620f4240613ee791906157e7565b613ef19084615ad2565b613efb9190615a97565b9150620f424060055483613f0f9190615ad2565b613f199190615a97565b60126000828254613f2a91906157cf565b9091555050600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820189905273ffffffffffffffffffffffffffffffffffffffff169063a8a778ae90604401600060405180830381600087803b158015613fa257600080fd5b505af1158015613fb6573d6000803e3d6000fd5b50506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810186905273ffffffffffffffffffffffffffffffffffffffff909116925063b4f56b269150604401600060405180830381600087803b15801561402c57600080fd5b505af1158015614040573d6000803e3d6000fd5b505050505095945050505050565b60008181526020819052604081206127c590614f06565b60008281526020819052604090206002015461408190336127cb565b6117e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b650000000000000000000000000000000060648201526084016107d1565b6141377fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c3857336127cb565b61414057600080fd5b6013805460ff750100000000000000000000000000000000000000000080830482161581027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f5860c5063a65e23cea4e2e2925f1a841bb6d1bc9615bd425f8dd084980b0514193611ac99390049091161515815260200190565b6141f37f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336127cb565b614259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f504f4f4c3a3a796f7520617265206e6f7420747275737479000000000000000060448201526064016107d1565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af11580156142ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b69190615942565b6013547501000000000000000000000000000000000000000000900460ff1615614378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107d1565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa1580156143e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061440c91906157fe565b9050620f4240811080156144205750600081115b6144d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20436f6c6c6160448201527f746572616c20726174696f206e6565647320746f206265206265747765656e2060648201527f2e30303030303120616e64202e39393939393900000000000000000000000000608482015260a4016107d1565b43841015614562576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4445493a3a72656465656d4672616374696f6e616c4445493a207369676e617460448201527f757265206973206578706972656400000000000000000000000000000000000060648201526084016107d1565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018c90529390941b909316605484015260688301889052608883018790524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac9061463b9084908890889060cc01615860565b602060405180830381865afa158015614658573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061467c9190615942565b614708576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20696e76616c60448201527f6964207369676e6174757265730000000000000000000000000000000000000060648201526084016107d1565b60008060008990506000620f4240600654620f424061472791906157e7565b614731908e615ad2565b61473b9190615a97565b90506000620f424061474d8884615ad2565b6147579190615a97565b61476190836157e7565b90508a614771620f424083615ad2565b61477b9190615a97565b945060006147aa7f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b6147b49084615a97565b90506000620f42406147c68a84615ad2565b6147d09190615a97565b9050846147e0620f424083615ad2565b6147ea9190615a97565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015292985090965073ffffffffffffffffffffffffffffffffffffffff1694506370a082319350602401915061484d9050565b602060405180830381865afa15801561486a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061488e91906157fe565b61489891906157e7565b811115614901576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107d1565b336000908152600a602052604090205461491c9082906157cf565b336000908152600a6020526040902055600b5461493a9082906157cf565b600b55336000908152600960205260409020546149589083906157cf565b33600090815260096020526040902055600c546149769083906157cf565b600c55336000908152600d60205260409020439055600654620f42409061499d908c615ad2565b6149a79190615a97565b601260008282546149b891906157cf565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018c905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015614a2f57600080fd5b505af1158015614a43573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820186905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401612eb1565b60006127c2837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16614f10565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691614b6e9190615d3a565b6000604051808303816000865af19150503d8060008114614bab576040519150601f19603f3d011682016040523d82523d6000602084013e614bb0565b606091505b5091509150818015614bda575080511580614bda575080806020019051810190614bda9190615942565b614c40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016107d1565b5050505050565b6000828152602081905260409020614c5f9082614aa5565b1561106557604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691614d4c9190615d3a565b6000604051808303816000865af19150503d8060008114614d89576040519150601f19603f3d011682016040523d82523d6000602084013e614d8e565b606091505b5091509150818015614db8575080511580614db8575080806020019051810190614db89190615942565b614e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016107d1565b505050505050565b6000828152602081905260409020614e639082614f5f565b1561106557604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000614ebd8383614f91565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156127c2565b60006127c5825490565b6000818152600183016020526040812054614f57575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556127c5565b5060006127c5565b60006127c2837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1661504c565b81546000908210615024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f647300000000000000000000000000000000000000000000000000000000000060648201526084016107d1565b82600001828154811061503957615039615d0b565b9060005260206000200154905092915050565b600081815260018301602052604081205480156151355760006150706001836157e7565b8554909150600090615084906001906157e7565b9050600086600001828154811061509d5761509d615d0b565b90600052602060002001549050808760000184815481106150c0576150c0615d0b565b6000918252602090912001556150d78360016157cf565b600082815260018901602052604090205586548790806150f9576150f9615d56565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506127c5565b60009150506127c5565b803573ffffffffffffffffffffffffffffffffffffffff8116811461516357600080fd5b919050565b60006020828403121561517a57600080fd5b6127c28261513f565b60006020828403121561519557600080fd5b5035919050565b60008083601f8401126151ae57600080fd5b50813567ffffffffffffffff8111156151c657600080fd5b6020830191508360208260051b85010111156151e157600080fd5b9250929050565b60008060008060006080868803121561520057600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561522c57600080fd5b6152388882890161519c565b969995985093965092949392505050565b6000806040838503121561525c57600080fd5b8235915061526c6020840161513f565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff811182821017156152c7576152c7615275565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561531457615314615275565b604052919050565b600067ffffffffffffffff82111561533657615336615275565b5060051b60200190565b600082601f83011261535157600080fd5b813560206153666153618361531c565b6152cd565b82815260059290921b8401810191818101908684111561538557600080fd5b8286015b848110156153a05780358352918301918301615389565b509695505050505050565b6000602082840312156153bd57600080fd5b813567ffffffffffffffff8111156153d457600080fd5b6153e084828501615340565b949350505050565b600080600080600080600060e0888a03121561540357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080600080600080600060c0888a03121561544f57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a088013567ffffffffffffffff81111561548957600080fd5b6154958a828b0161519c565b989b979a50959850939692959293505050565b600080604083850312156154bb57600080fd5b50508035926020909101359150565b6000601f83818401126154dc57600080fd5b823560206154ec6153618361531c565b82815260059290921b8501810191818101908784111561550b57600080fd5b8287015b848110156155c057803567ffffffffffffffff808211156155305760008081fd5b818a0191508a603f8301126155455760008081fd5b8582013560408282111561555b5761555b615275565b61558a887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c850116016152cd565b92508183528c818386010111156155a15760008081fd5b818185018985013750600090820187015284525091830191830161550f565b50979650505050505050565b6000602082840312156155de57600080fd5b813567ffffffffffffffff808211156155f657600080fd5b9083019060c0828603121561560a57600080fd5b6156126152a4565b823581526020830135602082015260408301358281111561563257600080fd5b61563e87828601615340565b604083015250606083013560608201526080830135608082015260a08301358281111561566a57600080fd5b615676878286016154ca565b60a08301525095945050505050565b60008060008060008060a0878903121561569e57600080fd5b86359550602087013567ffffffffffffffff808211156156bd57600080fd5b6156c98a838b01615340565b9650604089013595506060890135945060808901359150808211156156ed57600080fd5b506156fa89828a0161519c565b979a9699509497509295939492505050565b60008060006060848603121561572157600080fd5b61572a8461513f565b92506020840135915061573f6040850161513f565b90509250925092565b60008060008060008060a0878903121561576157600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff81111561579457600080fd5b6156fa89828a0161519c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156157e2576157e26157a0565b500190565b6000828210156157f9576157f96157a0565b500390565b60006020828403121561581057600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b87811015615934577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18a36030181126158eb57600080fd5b8901803567ffffffffffffffff81111561590457600080fd5b8036038b131561591357600080fd5b6159208782888501615817565b96505050918301919083019060010161588a565b509298975050505050505050565b60006020828403121561595457600080fd5b8151801515811461596457600080fd5b9392505050565b600181815b808511156159c457817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156159aa576159aa6157a0565b808516156159b757918102915b93841c9390800290615970565b509250929050565b6000826159db575060016127c5565b816159e8575060006127c5565b81600181146159fe5760028114615a0857615a24565b60019150506127c5565b60ff841115615a1957615a196157a0565b50506001821b6127c5565b5060208310610133831016604e8410600b8410161715615a47575081810a6127c5565b615a51838361596b565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615a8357615a836157a0565b029392505050565b60006127c283836159cc565b600082615acd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615b0a57615b0a6157a0565b500290565b6020808252825182820181905260009190848201906040850190845b81811015615b4757835183529284019291840191600101615b2b565b50909695505050505050565b81518152602080830151908201526040808301519082015260608083015190820152608081016127c5565b60008060408385031215615b9157600080fd5b505080516020909101519092909150565b60007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808960601b1683526014830188516020808b0160005b83811015615bf757815185529382019390820190600101615bdb565b5050505060609790971b168652505060148401929092526034830152605482015260740192915050565b60005b83811015615c3c578181015183820152602001615c24565b838111156108b65750506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015615cfd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088870301845281518051808852615cc081888a01898501615c21565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01696909601850195509284019290840190600101615c7b565b509398975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008251615d4c818460208701615c21565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220c79b153746533a6df153629c30a0770abe2f4bca6a754b070e2bc583ce406e7764736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103205760003560e01c80637b0461e9116101a7578063b6258aaa116100ee578063cb73999f11610097578063e3d84d5e11610071578063e3d84d5e146106d4578063eb2d7461146106e7578063fede5c9c146106fa57600080fd5b8063cb73999f146106b0578063d547741f146106b9578063daa50485146106cc57600080fd5b8063c6301e5d116100c8578063c6301e5d14610681578063c74ec56a14610694578063ca15c8731461069d57600080fd5b8063b6258aaa14610652578063c3355b8d14610665578063c410ca1b1461066e57600080fd5b806391d1485411610150578063a217fddf1161012a578063a217fddf14610604578063abae2c4c1461060c578063b235d4681461062c57600080fd5b806391d14854146105cb578063928d2b31146105de578063978b73b5146105f157600080fd5b80637f877f85116101815780637f877f851461056257806388d19f1b1461058a5780639010d07c1461059357600080fd5b80637b0461e91461052c5780637d55094d146105355780637e4831d31461053d57600080fd5b806340e14b781161026b578063564b81ef116102145780636d2c5615116101ee5780636d2c5615146104bb5780636d82e314146104f25780637901330b1461051957600080fd5b8063564b81ef146104855780635de207cc1461048b5780636526a12a146104b257600080fd5b80634ebbe762116102455780634ebbe7621461045757806350c9ecd91461046a57806354f9769d1461047257600080fd5b806340e14b781461043357806342d15aec146104465780634c6349341461044e57600080fd5b80632f2ff15d116102cd5780633648b7dc116102a75780633648b7dc146103f757806336568abe146104005780633b92da471461041357600080fd5b80632f2ff15d146103aa57806332ad1ee4146103bd57806334ddb95d146103d057600080fd5b806315128425116102fe578063151284251461036b578063248a9ca314610374578063254cd2bd1461039757600080fd5b806308a7493d14610325578063101197c71461035857806312ace5a214610361575b600080fd5b610345610333366004615168565b600a6020526000908152604090205481565b6040519081526020015b60405180910390f35b61034560075481565b610369610703565b005b61034560115481565b610345610382366004615183565b60009081526020819052604090206002015490565b6103696103a53660046151e8565b6108bc565b6103696103b8366004615249565b610fb3565b6103456103cb3660046151e8565b611069565b6103457f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610345600c5481565b61036961040e366004615249565b61173f565b610345610421366004615168565b60096020526000908152604090205481565b6103456104413660046153ab565b6117ee565b610369611a0c565b61034560105481565b6103696104653660046153e8565b611ad3565b610369611c12565b610345610480366004615434565b611cd0565b46610345565b6103457fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f24050981565b610345600e5481565b6013546104e290760100000000000000000000000000000000000000000000900460ff1681565b604051901515815260200161034f565b6103457f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e53081565b610369610527366004615249565b61255b565b610345600b5481565b6103696126ef565b6013546104e29074010000000000000000000000000000000000000000900460ff1681565b6013546104e29077010000000000000000000000000000000000000000000000900460ff1681565b61034560125481565b6105a66105a13660046154a8565b6127aa565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161034f565b6104e26105d9366004615249565b6127cb565b6103696105ec3660046155cc565b6127e3565b6103696105ff3660046151e8565b612eef565b610345600081565b61034561061a366004615168565b600d6020526000908152604090205481565b6013546104e2907501000000000000000000000000000000000000000000900460ff1681565b610345610660366004615183565b613492565b61034560055481565b61036961067c366004615685565b613581565b61034561068f3660046151e8565b613a66565b610345600f5481565b6103456106ab366004615183565b61404e565b61034560065481565b6103696106c7366004615249565b614065565b61036961410d565b6103696106e236600461570c565b6141c9565b6103696106f5366004615748565b6142f2565b61034560085481565b601154336000908152600d60205260409020544391610721916157cf565b11156107da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605b60248201527f504f4f4c3a3a636f6c6c656374526564656d7074696f6e3a204d75737420776160448201527f697420666f7220726564656d7074696f6e5f64656c617920626c6f636b73206260648201527f65666f726520636f6c6c656374696e6720726564656d7074696f6e0000000000608482015260a4015b60405180910390fd5b3360009081526009602052604081205481908190819015610822573360009081526009602052604081208054919055600c5490925061081a9083906157e7565b600c55600193505b336000908152600a6020526040902054156108625750336000908152600a602052604081208054919055600b5461085a9082906157e7565b600b55600192505b831561088c5760045461088c9073ffffffffffffffffffffffffffffffffffffffff163384614ad7565b82156108b6576001546108b69073ffffffffffffffffffffffffffffffffffffffff163383614ad7565b50505050565b6013547501000000000000000000000000000000000000000000900460ff1615610942576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107d1565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa1580156109b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d891906157fe565b14610a3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203d3d203100000060448201526064016107d1565b43831015610acf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107d1565b60025460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90610bc290849087908790600401615860565b602060405180830381865afa158015610bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c039190615942565b610c8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a72656465656d3174314445493a20696e76616c6964207369676e60448201527f617475726573000000000000000000000000000000000000000000000000000060648201526084016107d1565b6000610cbc7f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b610cc69088615a97565b6013546040517f068d54aa000000000000000000000000000000000000000000000000000000008152600481018990526024810183905291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063068d54aa90604401602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6691906157fe565b9050620f4240600654620f4240610d7d91906157e7565b610d879083615ad2565b610d919190615a97565b600b546001546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152929350909173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610e07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2b91906157fe565b610e3591906157e7565b811115610e9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107d1565b336000908152600a6020526040902054610eb99082906157cf565b336000908152600a6020526040902055600b54610ed79082906157cf565b600b55336000908152600d60205260409020439055600654620f424090610efe908a615ad2565b610f089190615a97565b60126000828254610f1991906157cf565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae906044015b600060405180830381600087803b158015610f9157600080fd5b505af1158015610fa5573d6000803e3d6000fd5b505050505050505050505050565b600082815260208190526040902060020154610fcf90336127cb565b61105b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084016107d1565b6110658282614c47565b5050565b60135460009074010000000000000000000000000000000000000000900460ff16156110f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107d1565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015611163573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118791906157fe565b10156111ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203e3d203100000060448201526064016107d1565b600e54600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015289929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611264573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128891906157fe565b61129291906157e7565b61129c91906157cf565b1115611304576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5b506f6f6c277320436c6f7365645d3a204365696c696e67207265616368656460448201526064016107d1565b43841015611394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a6d696e743174314445493a207369676e6174757265206973206560448201527f787069726564000000000000000000000000000000000000000000000000000060648201526084016107d1565b60025460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac9061148790849088908890600401615860565b602060405180830381865afa1580156114a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c89190615942565b611553576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6d696e743174314445493a20696e76616c6964207369676e617460448201527f757265730000000000000000000000000000000000000000000000000000000060648201526084016107d1565b60006115807f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b61158a9089615ad2565b6013546040517f882ab63a000000000000000000000000000000000000000000000000000000008152600481018a90526024810183905291925073ffffffffffffffffffffffffffffffffffffffff169063882ab63a90604401602060405180830381865afa158015611601573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162591906157fe565b9250620f4240600554620f424061163c91906157e7565b6116469085615ad2565b6116509190615a97565b6001549093506116789073ffffffffffffffffffffffffffffffffffffffff1633308b614cad565b620f42406005548461168a9190615ad2565b6116949190615a97565b601260008282546116a591906157cf565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561171c57600080fd5b505af1158015611730573d6000803e3d6000fd5b50505050505095945050505050565b73ffffffffffffffffffffffffffffffffffffffff811633146117e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016107d1565b6110658282614e4b565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561185e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188291906157fe565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191791906157fe565b6003546040517f2480fcea00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690632480fcea90611973908890600401615b0f565b602060405180830381865afa158015611990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b491906157fe565b9050620f42408211156119c857620f424091505b6000620f42406119d88486615ad2565b6119e29190615a97565b905080821115611a00576119f681836157e7565b9695505050505050565b50600095945050505050565b611a367f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f336127cb565b611a3f57600080fd5b6013805460ff76010000000000000000000000000000000000000000000080830482161581027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f2fda313d9b5bb0b73bd003153f2fccbc0dca49791fdd1184dfad82b44f54bd2e93611ac99390049091161515815260200190565b60405180910390a1565b611afd7fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f240509336127cb565b611b89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f504f4f4c3a2043616c6c6572206973206e6f7420504152414d455445525f534560448201527f545445525f524f4c45000000000000000000000000000000000000000000000060648201526084016107d1565b600e8790556010869055601185905560058490556006839055600782905560088190556040805188815260208101889052908101869052606081018590526080810184905260a0810183905260c081018290527f17fe98b66d27bd793ea01bd8a23a54acab8eeb167d9eb016a0c7cd71c573920c9060e00160405180910390a150505050505050565b611c3c7f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf336127cb565b611c4557600080fd5b6013805460ff7701000000000000000000000000000000000000000000000080830482161581027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f4f40fd1c59f78d7a2220da638cd9400daba01e57c7965702f390bf13133cc31f93611ac99390049091161515815260200190565b60135460009074010000000000000000000000000000000000000000900460ff1615611d58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107d1565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015611dc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dec91906157fe565b9050620f424081108015611e005750600081115b611e8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f436f6c6c61746572616c20726174696f206e6565647320746f2062652062657460448201527f7765656e202e30303030303120616e64202e393939393939000000000000000060648201526084016107d1565b600e54600b546001546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528c929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2591906157fe565b611f2f91906157e7565b611f3991906157cf565b1115611fee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f506f6f6c206365696c696e6720726561636865642c206e6f206d6f7265204445908201527f492063616e206265206d696e7465642077697468207468697320636f6c6c617460648201527f6572616c00000000000000000000000000000000000000000000000000000000608482015260a4016107d1565b4385101561207e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a207369676e61747560448201527f726520697320657870697265642e00000000000000000000000000000000000060648201526084016107d1565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018d90529390941b909316605484015260688301899052608883018890524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906121579084908990899060cc01615860565b602060405180830381865afa158015612174573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121989190615942565b612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a20696e76616c696460448201527f207369676e61747572657300000000000000000000000000000000000000000060648201526084016107d1565b61224f6040518060800160405280600081526020016000815260200160008152602001600081525090565b600061227c7f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b612286908d615ad2565b604080516080810182528b8152602081018d9052808201929092526060820186905260135490517f537a30a70000000000000000000000000000000000000000000000000000000081529193506000925073ffffffffffffffffffffffffffffffffffffffff169063537a30a790612302908590600401615b53565b6040805180830381865afa15801561231e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123429190615b7e565b90955090508a8111156123b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e6f7420656e6f756768204445555320696e707574746564000000000000000060448201526064016107d1565b620f4240600554620f42406123c691906157e7565b6123d09087615ad2565b6123da9190615a97565b600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820184905291965073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561245257600080fd5b505af1158015612466573d6000803e3d6000fd5b5050600154612490925073ffffffffffffffffffffffffffffffffffffffff16905033308f614cad565b620f4240600554866124a29190615ad2565b6124ac9190615a97565b601260008282546124bd91906157cf565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810187905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561253457600080fd5b505af1158015612548573d6000803e3d6000fd5b5050505050505050979650505050505050565b6125857f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e530336127cb565b61258e57600080fd5b6012548211156125fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f616d6f756e743c3d64616f53686172650000000000000000000000000000000060448201526064016107d1565b6003546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018590529091169063b4f56b2690604401600060405180830381600087803b15801561266e57600080fd5b505af1158015612682573d6000803e3d6000fd5b50505050816012600082825461269891906157e7565b90915550506040805183815273ffffffffffffffffffffffffffffffffffffffff831660208201527f3a708f2f1c75b12457d207cf1e259ab9f87bbfccb29672903acf4661bd342e49910160405180910390a15050565b6127197fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b336127cb565b61272257600080fd5b6013805460ff7401000000000000000000000000000000000000000080830482161581027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f6bdfe227d5db299c59aa56d5f846f40dbd73b271aaa78e18ed74fc3e00b8aa6b93611ac99390049091161515815260200190565b60008281526020819052604081206127c29083614eb1565b90505b92915050565b60008281526020819052604081206127c29083614ec7565b601354760100000000000000000000000000000000000000000000900460ff1615612890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a205265636f6c6c60448201527f61746572616c697a65206973207061757365640000000000000000000000000060648201526084016107d1565b4381608001511015612924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107d1565b60025460408281015160045460608501516080860151935160009561296d9573ffffffffffffffffffffffffffffffffffffffff91821695949190911692914690602001615ba2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052805160209091012060035460a08501517f6793f0ac00000000000000000000000000000000000000000000000000000000845291935073ffffffffffffffffffffffffffffffffffffffff1691636793f0ac916129fe91859190600401615c4d565b602060405180830381865afa158015612a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a3f9190615942565b612acb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107d1565b6000612af87f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b8351612b049190615ad2565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9991906157fe565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2e91906157fe565b60035460408088015190517f2480fcea00000000000000000000000000000000000000000000000000000000815292935060009273ffffffffffffffffffffffffffffffffffffffff90921691632480fcea91612c8d91600401615b0f565b602060405180830381865afa158015612caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cce91906157fe565b60135460408801518051929350600092839273ffffffffffffffffffffffffffffffffffffffff169163fc01106191899190612d0c906001906157e7565b81518110612d1c57612d1c615d0b565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015260448101869052606481018890526084810187905260a4016040805180830381865afa158015612d94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db89190615b7e565b90925090506000612dea7f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b612df49084615a97565b905060008960600151600854601054620f4240612e1191906157cf565b612e1b91906157e7565b612e259085615ad2565b612e2f9190615a97565b600154909150612e579073ffffffffffffffffffffffffffffffffffffffff16333085614cad565b600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815233928101929092526024820183905273ffffffffffffffffffffffffffffffffffffffff169063b4f56b26906044015b600060405180830381600087803b158015612ecb57600080fd5b505af1158015612edf573d6000803e3d6000fd5b5050505050505050505050505050565b6013547501000000000000000000000000000000000000000000900460ff1615612f75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107d1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fe2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300691906157fe565b15613093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20436f6c6c60448201527f61746572616c20726174696f206d75737420626520300000000000000000000060648201526084016107d1565b43831015613123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4445493a3a72656465656d416c676f726974686d69634445493a207369676e6160448201527f7475726520697320657870697265642e0000000000000000000000000000000060648201526084016107d1565b60045460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac9061321690849087908790600401615860565b602060405180830381865afa158015613233573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132579190615942565b6132e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20696e766160448201527f6c6964207369676e61747572657300000000000000000000000000000000000060648201526084016107d1565b6006548690620f4240906132f790826157e7565b6133019083615ad2565b61330b9190615a97565b905060008661331d620f424084615ad2565b6133279190615a97565b336000908152600960205260409020549091506133459082906157cf565b33600090815260096020526040902055600c546133639082906157cf565b600c55336000908152600d60205260409020439055600654620f42409061338a908a615ad2565b6133949190615a97565b601260008282546133a591906157cf565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561341c57600080fd5b505af1158015613430573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820185905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401610f77565b6000620f4240826134c47f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015613535573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061355991906157fe565b61356391906157e7565b61356d9190615ad2565b6135779190615ad2565b6127c59190615a97565b60135477010000000000000000000000000000000000000000000000900460ff161561362e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6275794261636b444555533a204275796261636b20697320706160448201527f757365640000000000000000000000000000000000000000000000000000000060648201526084016107d1565b438310156136be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4445493a3a6275794261636b444555533a207369676e6174757265206973206560448201527f7870697265642e0000000000000000000000000000000000000000000000000060648201526084016107d1565b60025460045460009173ffffffffffffffffffffffffffffffffffffffff908116918891168787466040516020016136fb96959493929190615ba2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac9061378a90849087908790600401615860565b602060405180830381865afa1580156137a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137cb9190615942565b613857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f504f4f4c3a3a6275794261636b444555533a20696e76616c6964207369676e6160448201527f747572657300000000000000000000000000000000000000000000000000000060648201526084016107d1565b6000604051806080016040528061386d896117ee565b81526020018781526020018860018a5161388791906157e7565b8151811061389757613897615d0b565b602002602001015181526020018981525090506000620f4240600754620f42406138c191906157e7565b6013546040517f3c04af9f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633c04af9f90613917908790600401615b53565b602060405180830381865afa158015613934573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061395891906157fe565b6139629190615ad2565b61396c9190615a97565b9050600061399b7f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b6139a59083615a97565b600480546040517fa8a778ae0000000000000000000000000000000000000000000000000000000081523392810192909252602482018d905291925073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015613a1d57600080fd5b505af1158015613a31573d6000803e3d6000fd5b5050600154613a5a925073ffffffffffffffffffffffffffffffffffffffff1690503383614ad7565b50505050505050505050565b60135460009074010000000000000000000000000000000000000000900460ff1615613aee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107d1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b7f91906157fe565b15613be6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f436f6c6c61746572616c20726174696f206d757374206265203000000000000060448201526064016107d1565b43841015613c76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107d1565b60045460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90613d6990849088908890600401615860565b602060405180830381865afa158015613d86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613daa9190615942565b613e36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107d1565b6013546040517f14da4ee1000000000000000000000000000000000000000000000000000000008152600481018890526024810189905273ffffffffffffffffffffffffffffffffffffffff909116906314da4ee190604401602060405180830381865afa158015613eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ed091906157fe565b9150620f4240600554620f4240613ee791906157e7565b613ef19084615ad2565b613efb9190615a97565b9150620f424060055483613f0f9190615ad2565b613f199190615a97565b60126000828254613f2a91906157cf565b9091555050600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820189905273ffffffffffffffffffffffffffffffffffffffff169063a8a778ae90604401600060405180830381600087803b158015613fa257600080fd5b505af1158015613fb6573d6000803e3d6000fd5b50506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810186905273ffffffffffffffffffffffffffffffffffffffff909116925063b4f56b269150604401600060405180830381600087803b15801561402c57600080fd5b505af1158015614040573d6000803e3d6000fd5b505050505095945050505050565b60008181526020819052604081206127c590614f06565b60008281526020819052604090206002015461408190336127cb565b6117e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b650000000000000000000000000000000060648201526084016107d1565b6141377fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c3857336127cb565b61414057600080fd5b6013805460ff750100000000000000000000000000000000000000000080830482161581027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f5860c5063a65e23cea4e2e2925f1a841bb6d1bc9615bd425f8dd084980b0514193611ac99390049091161515815260200190565b6141f37f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336127cb565b614259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f504f4f4c3a3a796f7520617265206e6f7420747275737479000000000000000060448201526064016107d1565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af11580156142ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b69190615942565b6013547501000000000000000000000000000000000000000000900460ff1615614378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107d1565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa1580156143e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061440c91906157fe565b9050620f4240811080156144205750600081115b6144d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20436f6c6c6160448201527f746572616c20726174696f206e6565647320746f206265206265747765656e2060648201527f2e30303030303120616e64202e39393939393900000000000000000000000000608482015260a4016107d1565b43841015614562576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4445493a3a72656465656d4672616374696f6e616c4445493a207369676e617460448201527f757265206973206578706972656400000000000000000000000000000000000060648201526084016107d1565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018c90529390941b909316605484015260688301889052608883018790524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac9061463b9084908890889060cc01615860565b602060405180830381865afa158015614658573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061467c9190615942565b614708576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20696e76616c60448201527f6964207369676e6174757265730000000000000000000000000000000000000060648201526084016107d1565b60008060008990506000620f4240600654620f424061472791906157e7565b614731908e615ad2565b61473b9190615a97565b90506000620f424061474d8884615ad2565b6147579190615a97565b61476190836157e7565b90508a614771620f424083615ad2565b61477b9190615a97565b945060006147aa7f0000000000000000000000000000000000000000000000000000000000000000600a615a8b565b6147b49084615a97565b90506000620f42406147c68a84615ad2565b6147d09190615a97565b9050846147e0620f424083615ad2565b6147ea9190615a97565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015292985090965073ffffffffffffffffffffffffffffffffffffffff1694506370a082319350602401915061484d9050565b602060405180830381865afa15801561486a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061488e91906157fe565b61489891906157e7565b811115614901576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107d1565b336000908152600a602052604090205461491c9082906157cf565b336000908152600a6020526040902055600b5461493a9082906157cf565b600b55336000908152600960205260409020546149589083906157cf565b33600090815260096020526040902055600c546149769083906157cf565b600c55336000908152600d60205260409020439055600654620f42409061499d908c615ad2565b6149a79190615a97565b601260008282546149b891906157cf565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018c905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015614a2f57600080fd5b505af1158015614a43573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820186905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401612eb1565b60006127c2837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16614f10565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691614b6e9190615d3a565b6000604051808303816000865af19150503d8060008114614bab576040519150601f19603f3d011682016040523d82523d6000602084013e614bb0565b606091505b5091509150818015614bda575080511580614bda575080806020019051810190614bda9190615942565b614c40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016107d1565b5050505050565b6000828152602081905260409020614c5f9082614aa5565b1561106557604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691614d4c9190615d3a565b6000604051808303816000865af19150503d8060008114614d89576040519150601f19603f3d011682016040523d82523d6000602084013e614d8e565b606091505b5091509150818015614db8575080511580614db8575080806020019051810190614db89190615942565b614e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016107d1565b505050505050565b6000828152602081905260409020614e639082614f5f565b1561106557604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000614ebd8383614f91565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156127c2565b60006127c5825490565b6000818152600183016020526040812054614f57575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556127c5565b5060006127c5565b60006127c2837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1661504c565b81546000908210615024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f647300000000000000000000000000000000000000000000000000000000000060648201526084016107d1565b82600001828154811061503957615039615d0b565b9060005260206000200154905092915050565b600081815260018301602052604081205480156151355760006150706001836157e7565b8554909150600090615084906001906157e7565b9050600086600001828154811061509d5761509d615d0b565b90600052602060002001549050808760000184815481106150c0576150c0615d0b565b6000918252602090912001556150d78360016157cf565b600082815260018901602052604090205586548790806150f9576150f9615d56565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506127c5565b60009150506127c5565b803573ffffffffffffffffffffffffffffffffffffffff8116811461516357600080fd5b919050565b60006020828403121561517a57600080fd5b6127c28261513f565b60006020828403121561519557600080fd5b5035919050565b60008083601f8401126151ae57600080fd5b50813567ffffffffffffffff8111156151c657600080fd5b6020830191508360208260051b85010111156151e157600080fd5b9250929050565b60008060008060006080868803121561520057600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561522c57600080fd5b6152388882890161519c565b969995985093965092949392505050565b6000806040838503121561525c57600080fd5b8235915061526c6020840161513f565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff811182821017156152c7576152c7615275565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561531457615314615275565b604052919050565b600067ffffffffffffffff82111561533657615336615275565b5060051b60200190565b600082601f83011261535157600080fd5b813560206153666153618361531c565b6152cd565b82815260059290921b8401810191818101908684111561538557600080fd5b8286015b848110156153a05780358352918301918301615389565b509695505050505050565b6000602082840312156153bd57600080fd5b813567ffffffffffffffff8111156153d457600080fd5b6153e084828501615340565b949350505050565b600080600080600080600060e0888a03121561540357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080600080600080600060c0888a03121561544f57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a088013567ffffffffffffffff81111561548957600080fd5b6154958a828b0161519c565b989b979a50959850939692959293505050565b600080604083850312156154bb57600080fd5b50508035926020909101359150565b6000601f83818401126154dc57600080fd5b823560206154ec6153618361531c565b82815260059290921b8501810191818101908784111561550b57600080fd5b8287015b848110156155c057803567ffffffffffffffff808211156155305760008081fd5b818a0191508a603f8301126155455760008081fd5b8582013560408282111561555b5761555b615275565b61558a887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c850116016152cd565b92508183528c818386010111156155a15760008081fd5b818185018985013750600090820187015284525091830191830161550f565b50979650505050505050565b6000602082840312156155de57600080fd5b813567ffffffffffffffff808211156155f657600080fd5b9083019060c0828603121561560a57600080fd5b6156126152a4565b823581526020830135602082015260408301358281111561563257600080fd5b61563e87828601615340565b604083015250606083013560608201526080830135608082015260a08301358281111561566a57600080fd5b615676878286016154ca565b60a08301525095945050505050565b60008060008060008060a0878903121561569e57600080fd5b86359550602087013567ffffffffffffffff808211156156bd57600080fd5b6156c98a838b01615340565b9650604089013595506060890135945060808901359150808211156156ed57600080fd5b506156fa89828a0161519c565b979a9699509497509295939492505050565b60008060006060848603121561572157600080fd5b61572a8461513f565b92506020840135915061573f6040850161513f565b90509250925092565b60008060008060008060a0878903121561576157600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff81111561579457600080fd5b6156fa89828a0161519c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156157e2576157e26157a0565b500190565b6000828210156157f9576157f96157a0565b500390565b60006020828403121561581057600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b87811015615934577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18a36030181126158eb57600080fd5b8901803567ffffffffffffffff81111561590457600080fd5b8036038b131561591357600080fd5b6159208782888501615817565b96505050918301919083019060010161588a565b509298975050505050505050565b60006020828403121561595457600080fd5b8151801515811461596457600080fd5b9392505050565b600181815b808511156159c457817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156159aa576159aa6157a0565b808516156159b757918102915b93841c9390800290615970565b509250929050565b6000826159db575060016127c5565b816159e8575060006127c5565b81600181146159fe5760028114615a0857615a24565b60019150506127c5565b60ff841115615a1957615a196157a0565b50506001821b6127c5565b5060208310610133831016604e8410600b8410161715615a47575081810a6127c5565b615a51838361596b565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615a8357615a836157a0565b029392505050565b60006127c283836159cc565b600082615acd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615b0a57615b0a6157a0565b500290565b6020808252825182820181905260009190848201906040850190845b81811015615b4757835183529284019291840191600101615b2b565b50909695505050505050565b81518152602080830151908201526040808301519082015260608083015190820152608081016127c5565b60008060408385031215615b9157600080fd5b505080516020909101519092909150565b60007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808960601b1683526014830188516020808b0160005b83811015615bf757815185529382019390820190600101615bdb565b5050505060609790971b168652505060148401929092526034830152605482015260740192915050565b60005b83811015615c3c578181015183820152602001615c24565b838111156108b65750506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015615cfd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088870301845281518051808852615cc081888a01898501615c21565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01696909601850195509284019290840190600101615c7b565b509398975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008251615d4c818460208701615c21565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220c79b153746533a6df153629c30a0770abe2f4bca6a754b070e2bc583ce406e7764736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/DEI/Pools/DEIPoolLibrary.sol/DEIPoolLibrary.dbg.json b/artifacts/contracts/DEI/Pools/DEIPoolLibrary.sol/DEIPoolLibrary.dbg.json new file mode 100644 index 00000000..b4959490 --- /dev/null +++ b/artifacts/contracts/DEI/Pools/DEIPoolLibrary.sol/DEIPoolLibrary.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/DEI/Pools/DEIPoolLibrary.sol/DEIPoolLibrary.json b/artifacts/contracts/DEI/Pools/DEIPoolLibrary.sol/DEIPoolLibrary.json new file mode 100644 index 00000000..4c507e22 --- /dev/null +++ b/artifacts/contracts/DEI/Pools/DEIPoolLibrary.sol/DEIPoolLibrary.json @@ -0,0 +1,248 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DEIPoolLibrary", + "sourceName": "contracts/DEI/Pools/DEIPoolLibrary.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "excess_collateral_dollar_value_d18", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_price_usd", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "col_price_usd", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "DEUS_amount", + "type": "uint256" + } + ], + "internalType": "struct DEIPoolLibrary.BuybackDEUS_Params", + "name": "params", + "type": "tuple" + } + ], + "name": "calcBuyBackDEUS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "col_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_amount_d18", + "type": "uint256" + } + ], + "name": "calcMint1t1DEI", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deus_price_usd", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_amount_d18", + "type": "uint256" + } + ], + "name": "calcMintAlgorithmicDEI", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "deus_price_usd", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "col_price_usd", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "col_ratio", + "type": "uint256" + } + ], + "internalType": "struct DEIPoolLibrary.MintFD_Params", + "name": "params", + "type": "tuple" + } + ], + "name": "calcMintFractionalDEI", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "col_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "global_collat_value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "dei_total_supply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "global_collateral_ratio", + "type": "uint256" + } + ], + "name": "calcRecollateralizeDEIInner", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "col_price_usd", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + } + ], + "name": "calcRedeem1t1DEI", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "total_supply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "global_collateral_ratio", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "global_collat_value", + "type": "uint256" + } + ], + "name": "recollateralizeAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5061065f806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80633c04af9f1161005b5780633c04af9f146100ce578063537a30a7146100e1578063882ab63a146100bb578063fc0110611461010957600080fd5b8063068d54aa146100825780630ff24ec1146100a857806314da4ee1146100bb575b600080fd5b610095610090366004610421565b61011c565b6040519081526020015b60405180910390f35b6100956100b6366004610443565b61013d565b6100956100c9366004610421565b61016d565b6100956100dc3660046104fc565b61017d565b6100f46100ef3660046104fc565b6102f2565b6040805192835260208301919091520161009f565b6100f4610117366004610518565b61037c565b60008261012c83620f4240610582565b61013691906105bf565b9392505050565b600080620f424061014e8587610582565b61015891906105bf565b905061016483826105fa565b95945050505050565b6000620f424061012c8484610582565b8051600090610213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4e6f2065786365737320636f6c6c61746572616c20746f20627579206261636b60448201527f210000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000620f42408360200151846060015161022d9190610582565b61023791906105bf565b83519091508111156102cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f596f752061726520747279696e6720746f20627579206261636b206d6f72652060448201527f7468616e20746865206578636573732100000000000000000000000000000000606482015260840161020a565b60408301516000906102e083620f4240610582565b6102ea91906105bf565b949350505050565b6000806000620f42408460200151856040015161030f9190610582565b61031991906105bf565b9050600081856060015183620f42406103329190610582565b61033c91906105bf565b61034691906105fa565b855190915060009061035b83620f4240610582565b61036591906105bf565b90506103718284610611565b969095509350505050565b60008080620f424061038e888a610582565b61039891906105bf565b90506000856103aa88620f4240610582565b6103b491906105bf565b90506000620f42406103c68389610582565b6103d08989610582565b6103da91906105fa565b6103e491906105bf565b905060008184116103f65750826103f9565b50805b8961040782620f4240610582565b61041191906105bf565b9b909a5098505050505050505050565b6000806040838503121561043457600080fd5b50508035926020909101359150565b60008060006060848603121561045857600080fd5b505081359360208301359350604090920135919050565b60006080828403121561048157600080fd5b6040516080810181811067ffffffffffffffff821117156104cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8060405250809150823581526020830135602082015260408301356040820152606083013560608201525092915050565b60006080828403121561050e57600080fd5b610136838361046f565b600080600080600060a0868803121561053057600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156105ba576105ba610553565b500290565b6000826105f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008282101561060c5761060c610553565b500390565b6000821982111561062457610624610553565b50019056fea264697066735822122023606f1c10b6ffc93e9277cc21bb91b620bba1d228b0d578dab52aca944990c664736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80633c04af9f1161005b5780633c04af9f146100ce578063537a30a7146100e1578063882ab63a146100bb578063fc0110611461010957600080fd5b8063068d54aa146100825780630ff24ec1146100a857806314da4ee1146100bb575b600080fd5b610095610090366004610421565b61011c565b6040519081526020015b60405180910390f35b6100956100b6366004610443565b61013d565b6100956100c9366004610421565b61016d565b6100956100dc3660046104fc565b61017d565b6100f46100ef3660046104fc565b6102f2565b6040805192835260208301919091520161009f565b6100f4610117366004610518565b61037c565b60008261012c83620f4240610582565b61013691906105bf565b9392505050565b600080620f424061014e8587610582565b61015891906105bf565b905061016483826105fa565b95945050505050565b6000620f424061012c8484610582565b8051600090610213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4e6f2065786365737320636f6c6c61746572616c20746f20627579206261636b60448201527f210000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000620f42408360200151846060015161022d9190610582565b61023791906105bf565b83519091508111156102cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f596f752061726520747279696e6720746f20627579206261636b206d6f72652060448201527f7468616e20746865206578636573732100000000000000000000000000000000606482015260840161020a565b60408301516000906102e083620f4240610582565b6102ea91906105bf565b949350505050565b6000806000620f42408460200151856040015161030f9190610582565b61031991906105bf565b9050600081856060015183620f42406103329190610582565b61033c91906105bf565b61034691906105fa565b855190915060009061035b83620f4240610582565b61036591906105bf565b90506103718284610611565b969095509350505050565b60008080620f424061038e888a610582565b61039891906105bf565b90506000856103aa88620f4240610582565b6103b491906105bf565b90506000620f42406103c68389610582565b6103d08989610582565b6103da91906105fa565b6103e491906105bf565b905060008184116103f65750826103f9565b50805b8961040782620f4240610582565b61041191906105bf565b9b909a5098505050505050505050565b6000806040838503121561043457600080fd5b50508035926020909101359150565b60008060006060848603121561045857600080fd5b505081359360208301359350604090920135919050565b60006080828403121561048157600080fd5b6040516080810181811067ffffffffffffffff821117156104cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8060405250809150823581526020830135602082015260408301356040820152606083013560608201525092915050565b60006080828403121561050e57600080fd5b610136838361046f565b600080600080600060a0868803121561053057600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156105ba576105ba610553565b500290565b6000826105f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008282101561060c5761060c610553565b500390565b6000821982111561062457610624610553565b50019056fea264697066735822122023606f1c10b6ffc93e9277cc21bb91b620bba1d228b0d578dab52aca944990c664736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/DEI/Pools/DEIPoolV2.sol/DEIPoolV2.dbg.json b/artifacts/contracts/DEI/Pools/DEIPoolV2.sol/DEIPoolV2.dbg.json new file mode 100644 index 00000000..c7f55a35 --- /dev/null +++ b/artifacts/contracts/DEI/Pools/DEIPoolV2.sol/DEIPoolV2.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/4b49a453f903a20ab018cc07dc8ac3ad.json" +} diff --git a/artifacts/contracts/DEI/Pools/DEIPoolV2.sol/DEIPoolV2.json b/artifacts/contracts/DEI/Pools/DEIPoolV2.sol/DEIPoolV2.json new file mode 100644 index 00000000..a336e93f --- /dev/null +++ b/artifacts/contracts/DEI/Pools/DEIPoolV2.sol/DEIPoolV2.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DEIPoolV2", + "sourceName": "contracts/DEI/Pools/DEIPoolV2.sol", + "abi": [], + "bytecode": "0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220b0a38230456adef733f0ffc6d11b53d5d54076da0f208798a1fd7f79532357a064736f6c634300080a0033", + "deployedBytecode": "0x6080604052600080fdfea2646970667358221220b0a38230456adef733f0ffc6d11b53d5d54076da0f208798a1fd7f79532357a064736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/DEI/Pools/IDEIPool.sol/IDEIPool.dbg.json b/artifacts/contracts/DEI/Pools/IDEIPool.sol/IDEIPool.dbg.json new file mode 100644 index 00000000..0f64c1ca --- /dev/null +++ b/artifacts/contracts/DEI/Pools/IDEIPool.sol/IDEIPool.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/c711a20ba259c6a2d94e00a1efe2a0cb.json" +} diff --git a/artifacts/contracts/DEI/Pools/IDEIPool.sol/IDEIPool.json b/artifacts/contracts/DEI/Pools/IDEIPool.sol/IDEIPool.json new file mode 100644 index 00000000..8ca7c4c3 --- /dev/null +++ b/artifacts/contracts/DEI/Pools/IDEIPool.sol/IDEIPool.json @@ -0,0 +1,391 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IDEIPool", + "sourceName": "contracts/DEI/Pools/IDEIPool.sol", + "abi": [ + { + "inputs": [], + "name": "availableExcessCollatDV", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEUS_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "COLLATERAL_out_min", + "type": "uint256" + } + ], + "name": "buyBackDEUS", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "buyback_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "collatDollarBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "collectRedemption", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getCollateralPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "DEI_out_min", + "type": "uint256" + } + ], + "name": "mint1t1DEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deus_amount_d18", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "DEI_out_min", + "type": "uint256" + } + ], + "name": "mintAlgorithmicDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "DEI_out_min", + "type": "uint256" + } + ], + "name": "mintFractionalDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "minting_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "recollat_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "DEUS_out_min", + "type": "uint256" + } + ], + "name": "recollateralizeDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "COLLATERAL_out_min", + "type": "uint256" + } + ], + "name": "redeem1t1DEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "DEUS_out_min", + "type": "uint256" + } + ], + "name": "redeemAlgorithmicDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "DEUS_out_min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "COLLATERAL_out_min", + "type": "uint256" + } + ], + "name": "redeemFractionalDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "redemption_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_collateral_weth_oracle_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_weth_address", + "type": "address" + } + ], + "name": "setCollatETHOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner_address", + "type": "address" + } + ], + "name": "setOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "new_ceiling", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_bonus_rate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_redemption_delay", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_mint_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_redeem_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_buyback_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_recollat_fee", + "type": "uint256" + } + ], + "name": "setPoolParameters", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "new_timelock", + "type": "address" + } + ], + "name": "setTimelock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleBuyBack", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_new_price", + "type": "uint256" + } + ], + "name": "toggleCollateralPrice", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleMinting", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleRecollateralize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleRedeeming", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/DEI/Pools/Pool_DAI.sol/Pool_DAI.dbg.json b/artifacts/contracts/DEI/Pools/Pool_DAI.sol/Pool_DAI.dbg.json new file mode 100644 index 00000000..b4959490 --- /dev/null +++ b/artifacts/contracts/DEI/Pools/Pool_DAI.sol/Pool_DAI.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/DEI/Pools/Pool_DAI.sol/Pool_DAI.json b/artifacts/contracts/DEI/Pools/Pool_DAI.sol/Pool_DAI.json new file mode 100644 index 00000000..3efa16cd --- /dev/null +++ b/artifacts/contracts/DEI/Pools/Pool_DAI.sol/Pool_DAI.json @@ -0,0 +1,1153 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Pool_DAI", + "sourceName": "contracts/DEI/Pools/Pool_DAI.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_dei_contract_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_deus_contract_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_collateral_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_trusty_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_admin_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_pool_ceiling", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_library", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "BuybackToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "MintingToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "new_ceiling", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_bonus_rate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_redemption_delay", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_mint_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_redeem_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_buyback_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_recollat_fee", + "type": "uint256" + } + ], + "name": "PoolParametersSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "RecollateralizeToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "RedeemingToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "daoShare", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "daoShareCollected", + "type": "event" + }, + { + "inputs": [], + "name": "DAI_address", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DAO_SHARE_COLLECTOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PARAMETER_SETTER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TRUSTY_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "collat_usd_price", + "type": "uint256[]" + } + ], + "name": "availableExcessCollatDV", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bonus_rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEUS_amount", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "collateral_price", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "buyBackDEUS", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "buyBackPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "buyback_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collat_usd_price", + "type": "uint256" + } + ], + "name": "collatDollarBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "collectDaoShare", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "collectRedemption", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "daoShare", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "emergencyWithdrawERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getChainID", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "lastRedeemed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mint1t1DEI", + "outputs": [ + { + "internalType": "uint256", + "name": "dei_amount_d18", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deus_amount_d18", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mintAlgorithmicDEI", + "outputs": [ + { + "internalType": "uint256", + "name": "dei_amount_d18", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mintFractionalDEI", + "outputs": [ + { + "internalType": "uint256", + "name": "mint_amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "mintPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minting_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pausedPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pool_ceiling", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "recollat_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "pool_collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "collateral_price", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "internalType": "struct DEIPool.RecollateralizeDEI", + "name": "inputs", + "type": "tuple" + } + ], + "name": "recollateralizeDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "recollateralizePaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeem1t1DEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeemAlgorithmicDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "redeemCollateralBalances", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "redeemDEUSBalances", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeemFractionalDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "redeemPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "redemption_delay", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "redemption_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "new_ceiling", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_bonus_rate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_redemption_delay", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_mint_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_redeem_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_buyback_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_recollat_fee", + "type": "uint256" + } + ], + "name": "setPoolParameters", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleBuyBack", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleMinting", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleRecollateralize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleRedeeming", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unclaimedPoolCollateral", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unclaimedPoolDEUS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a06040526000600e819055600f819055611d4c60105560026011556012556013805463ffffffff60a01b191690553480156200003b57600080fd5b50604051620063c5380380620063c58339810160408190526200005e91620004b4565b868686868686866001600160a01b038716158015906200008657506001600160a01b03861615155b80156200009b57506001600160a01b03851615155b8015620000b057506001600160a01b03841615155b8015620000c557506001600160a01b03831615155b8015620000da57506001600160a01b03811615155b6200012c5760405162461bcd60e51b815260206004820152601b60248201527f504f4f4c3a3a5a65726f2061646472657373206465746563746564000000000060448201526064015b60405180910390fd5b601380546001600160a01b038084166001600160a01b031992831617909255600380548a8416908316179055600480548984169083161781556002805493891693831684179055600180549092168317909155600e8490556040805163313ce56760e01b8152905163313ce567928281019260209291908290030181865afa158015620001bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e3919062000540565b620001f39060ff1660126200056c565b60805262000203600084620003a9565b6200022f7fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b85620003a9565b6200025b7fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c385785620003a9565b620002877f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f85620003a9565b620002b37f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf85620003a9565b620002df7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c85620003a9565b6200030b7fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f24050985620003a9565b50505050506001600160a01b038716151591506200036e90505760405162461bcd60e51b815260206004820152601560248201527f5a65726f20616464726573732064657465637465640000000000000000000000604482015260640162000123565b6200037b600033620003a9565b5050601480546001600160a01b0319166001600160a01b039490941693909317909255506200059292505050565b620003b58282620003b9565b5050565b600082815260208181526040909120620003de91839062004ad062000420821b17901c565b15620003b55760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b60006200043c836001600160601b0319606085901b1662000445565b90505b92915050565b60008181526001830160205260408120546200048e575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200043f565b5060006200043f565b80516001600160a01b0381168114620004af57600080fd5b919050565b600080600080600080600060e0888a031215620004d057600080fd5b620004db8862000497565b9650620004eb6020890162000497565b9550620004fb6040890162000497565b94506200050b6060890162000497565b93506200051b6080890162000497565b925060a088015191506200053260c0890162000497565b905092959891949750929550565b6000602082840312156200055357600080fd5b815160ff811681146200056557600080fd5b9392505050565b6000828210156200058d57634e487b7160e01b600052601160045260246000fd5b500390565b608051615de6620005df60003960008181610cc1015281816115850152818161228101528181612afd01528181612def015281816134c9015281816139a001526147af0152615de66000f3fe608060405234801561001057600080fd5b506004361061032b5760003560e01c80637b0461e9116101b2578063b6258aaa116100f9578063cb73999f116100a2578063e3d84d5e1161007c578063e3d84d5e146106df578063eb2d7461146106f2578063fa4dfa3a14610705578063fede5c9c1461072557600080fd5b8063cb73999f146106bb578063d547741f146106c4578063daa50485146106d757600080fd5b8063c6301e5d116100d3578063c6301e5d1461068c578063c74ec56a1461069f578063ca15c873146106a857600080fd5b8063b6258aaa1461065d578063c3355b8d14610670578063c410ca1b1461067957600080fd5b806391d148541161015b578063a217fddf11610135578063a217fddf1461060f578063abae2c4c14610617578063b235d4681461063757600080fd5b806391d14854146105d6578063928d2b31146105e9578063978b73b5146105fc57600080fd5b80637f877f851161018c5780637f877f851461056d57806388d19f1b146105955780639010d07c1461059e57600080fd5b80637b0461e9146105375780637d55094d146105405780637e4831d31461054857600080fd5b806340e14b7811610276578063564b81ef1161021f5780636d2c5615116101f95780636d2c5615146104c65780636d82e314146104fd5780637901330b1461052457600080fd5b8063564b81ef146104905780635de207cc146104965780636526a12a146104bd57600080fd5b80634ebbe762116102505780634ebbe7621461046257806350c9ecd91461047557806354f9769d1461047d57600080fd5b806340e14b781461043e57806342d15aec146104515780634c6349341461045957600080fd5b80632f2ff15d116102d85780633648b7dc116102b25780633648b7dc1461040257806336568abe1461040b5780633b92da471461041e57600080fd5b80632f2ff15d146103b557806332ad1ee4146103c857806334ddb95d146103db57600080fd5b806315128425116103095780631512842514610376578063248a9ca31461037f578063254cd2bd146103a257600080fd5b806308a7493d14610330578063101197c71461036357806312ace5a21461036c575b600080fd5b61035061033e366004615193565b600a6020526000908152604090205481565b6040519081526020015b60405180910390f35b61035060075481565b61037461072e565b005b61035060115481565b61035061038d3660046151ae565b60009081526020819052604090206002015490565b6103746103b0366004615213565b6108e7565b6103746103c3366004615274565b610fde565b6103506103d6366004615213565b611094565b6103507f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610350600c5481565b610374610419366004615274565b61176a565b61035061042c366004615193565b60096020526000908152604090205481565b61035061044c3660046153d6565b611819565b610374611a37565b61035060105481565b610374610470366004615413565b611afe565b610374611c3d565b61035061048b36600461545f565b611cfb565b46610350565b6103507fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f24050981565b610350600e5481565b6013546104ed90760100000000000000000000000000000000000000000000900460ff1681565b604051901515815260200161035a565b6103507f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e53081565b610374610532366004615274565b612586565b610350600b5481565b61037461271a565b6013546104ed9074010000000000000000000000000000000000000000900460ff1681565b6013546104ed9077010000000000000000000000000000000000000000000000900460ff1681565b61035060125481565b6105b16105ac3660046154d3565b6127d5565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161035a565b6104ed6105e4366004615274565b6127f6565b6103746105f73660046155f7565b61280e565b61037461060a366004615213565b612f1a565b610350600081565b610350610625366004615193565b600d6020526000908152604090205481565b6013546104ed907501000000000000000000000000000000000000000000900460ff1681565b61035061066b3660046151ae565b6134bd565b61035060055481565b6103746106873660046156b0565b6135ac565b61035061069a366004615213565b613a91565b610350600f5481565b6103506106b63660046151ae565b614079565b61035060065481565b6103746106d2366004615274565b614090565b610374614138565b6103746106ed366004615737565b6141f4565b610374610700366004615773565b61431d565b6014546105b19073ffffffffffffffffffffffffffffffffffffffff1681565b61035060085481565b601154336000908152600d6020526040902054439161074c916157fa565b1115610805576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605b60248201527f504f4f4c3a3a636f6c6c656374526564656d7074696f6e3a204d75737420776160448201527f697420666f7220726564656d7074696f6e5f64656c617920626c6f636b73206260648201527f65666f726520636f6c6c656374696e6720726564656d7074696f6e0000000000608482015260a4015b60405180910390fd5b336000908152600960205260408120548190819081901561084d573360009081526009602052604081208054919055600c54909250610845908390615812565b600c55600193505b336000908152600a60205260409020541561088d5750336000908152600a602052604081208054919055600b54610885908290615812565b600b55600192505b83156108b7576004546108b79073ffffffffffffffffffffffffffffffffffffffff163384614b02565b82156108e1576001546108e19073ffffffffffffffffffffffffffffffffffffffff163383614b02565b50505050565b6013547501000000000000000000000000000000000000000000900460ff161561096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa1580156109df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a039190615829565b14610a6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203d3d203100000060448201526064016107fc565b43831015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90610bed9084908790879060040161588b565b602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e919061596d565b610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a72656465656d3174314445493a20696e76616c6964207369676e60448201527f617475726573000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000610ce77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b610cf19088615ac2565b6013546040517f068d54aa000000000000000000000000000000000000000000000000000000008152600481018990526024810183905291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063068d54aa90604401602060405180830381865afa158015610d6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d919190615829565b9050620f4240600654620f4240610da89190615812565b610db29083615afd565b610dbc9190615ac2565b600b546001546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152929350909173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e569190615829565b610e609190615812565b811115610ec9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a6020526040902054610ee49082906157fa565b336000908152600a6020526040902055600b54610f029082906157fa565b600b55336000908152600d60205260409020439055600654620f424090610f29908a615afd565b610f339190615ac2565b60126000828254610f4491906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae906044015b600060405180830381600087803b158015610fbc57600080fd5b505af1158015610fd0573d6000803e3d6000fd5b505050505050505050505050565b600082815260208190526040902060020154610ffa90336127f6565b611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084016107fc565b6110908282614c72565b5050565b60135460009074010000000000000000000000000000000000000000900460ff161561111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa15801561118e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b29190615829565b101561121a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203e3d203100000060448201526064016107fc565b600e54600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015289929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561128f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b39190615829565b6112bd9190615812565b6112c791906157fa565b111561132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5b506f6f6c277320436c6f7365645d3a204365696c696e67207265616368656460448201526064016107fc565b438410156113bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a6d696e743174314445493a207369676e6174757265206973206560448201527f787069726564000000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906114b29084908890889060040161588b565b602060405180830381865afa1580156114cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f3919061596d565b61157e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6d696e743174314445493a20696e76616c6964207369676e617460448201527f757265730000000000000000000000000000000000000000000000000000000060648201526084016107fc565b60006115ab7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6115b59089615afd565b6013546040517f882ab63a000000000000000000000000000000000000000000000000000000008152600481018a90526024810183905291925073ffffffffffffffffffffffffffffffffffffffff169063882ab63a90604401602060405180830381865afa15801561162c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116509190615829565b9250620f4240600554620f42406116679190615812565b6116719085615afd565b61167b9190615ac2565b6001549093506116a39073ffffffffffffffffffffffffffffffffffffffff1633308b614cd8565b620f4240600554846116b59190615afd565b6116bf9190615ac2565b601260008282546116d091906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561174757600080fd5b505af115801561175b573d6000803e3d6000fd5b50505050505095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016107fc565b6110908282614e76565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ad9190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561191e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119429190615829565b6003546040517f2480fcea00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690632480fcea9061199e908890600401615b3a565b602060405180830381865afa1580156119bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119df9190615829565b9050620f42408211156119f357620f424091505b6000620f4240611a038486615afd565b611a0d9190615ac2565b905080821115611a2b57611a218183615812565b9695505050505050565b50600095945050505050565b611a617f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f336127f6565b611a6a57600080fd5b6013805460ff76010000000000000000000000000000000000000000000080830482161581027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f2fda313d9b5bb0b73bd003153f2fccbc0dca49791fdd1184dfad82b44f54bd2e93611af49390049091161515815260200190565b60405180910390a1565b611b287fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f240509336127f6565b611bb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f504f4f4c3a2043616c6c6572206973206e6f7420504152414d455445525f534560448201527f545445525f524f4c45000000000000000000000000000000000000000000000060648201526084016107fc565b600e8790556010869055601185905560058490556006839055600782905560088190556040805188815260208101889052908101869052606081018590526080810184905260a0810183905260c081018290527f17fe98b66d27bd793ea01bd8a23a54acab8eeb167d9eb016a0c7cd71c573920c9060e00160405180910390a150505050505050565b611c677f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf336127f6565b611c7057600080fd5b6013805460ff7701000000000000000000000000000000000000000000000080830482161581027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f4f40fd1c59f78d7a2220da638cd9400daba01e57c7965702f390bf13133cc31f93611af49390049091161515815260200190565b60135460009074010000000000000000000000000000000000000000900460ff1615611d83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015611df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e179190615829565b9050620f424081108015611e2b5750600081115b611eb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f436f6c6c61746572616c20726174696f206e6565647320746f2062652062657460448201527f7765656e202e30303030303120616e64202e393939393939000000000000000060648201526084016107fc565b600e54600b546001546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528c929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f509190615829565b611f5a9190615812565b611f6491906157fa565b1115612019576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f506f6f6c206365696c696e6720726561636865642c206e6f206d6f7265204445908201527f492063616e206265206d696e7465642077697468207468697320636f6c6c617460648201527f6572616c00000000000000000000000000000000000000000000000000000000608482015260a4016107fc565b438510156120a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a207369676e61747560448201527f726520697320657870697265642e00000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018d90529390941b909316605484015260688301899052608883018890524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906121829084908990899060cc0161588b565b602060405180830381865afa15801561219f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c3919061596d565b61224f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a20696e76616c696460448201527f207369676e61747572657300000000000000000000000000000000000000000060648201526084016107fc565b61227a6040518060800160405280600081526020016000815260200160008152602001600081525090565b60006122a77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6122b1908d615afd565b604080516080810182528b8152602081018d9052808201929092526060820186905260135490517f537a30a70000000000000000000000000000000000000000000000000000000081529193506000925073ffffffffffffffffffffffffffffffffffffffff169063537a30a79061232d908590600401615b7e565b6040805180830381865afa158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190615ba9565b90955090508a8111156123dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e6f7420656e6f756768204445555320696e707574746564000000000000000060448201526064016107fc565b620f4240600554620f42406123f19190615812565b6123fb9087615afd565b6124059190615ac2565b600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820184905291965073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561247d57600080fd5b505af1158015612491573d6000803e3d6000fd5b50506001546124bb925073ffffffffffffffffffffffffffffffffffffffff16905033308f614cd8565b620f4240600554866124cd9190615afd565b6124d79190615ac2565b601260008282546124e891906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810187905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561255f57600080fd5b505af1158015612573573d6000803e3d6000fd5b5050505050505050979650505050505050565b6125b07f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e530336127f6565b6125b957600080fd5b601254821115612625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f616d6f756e743c3d64616f53686172650000000000000000000000000000000060448201526064016107fc565b6003546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018590529091169063b4f56b2690604401600060405180830381600087803b15801561269957600080fd5b505af11580156126ad573d6000803e3d6000fd5b5050505081601260008282546126c39190615812565b90915550506040805183815273ffffffffffffffffffffffffffffffffffffffff831660208201527f3a708f2f1c75b12457d207cf1e259ab9f87bbfccb29672903acf4661bd342e49910160405180910390a15050565b6127447fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b336127f6565b61274d57600080fd5b6013805460ff7401000000000000000000000000000000000000000080830482161581027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f6bdfe227d5db299c59aa56d5f846f40dbd73b271aaa78e18ed74fc3e00b8aa6b93611af49390049091161515815260200190565b60008281526020819052604081206127ed9083614edc565b90505b92915050565b60008281526020819052604081206127ed9083614ef2565b601354760100000000000000000000000000000000000000000000900460ff16156128bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a205265636f6c6c60448201527f61746572616c697a65206973207061757365640000000000000000000000000060648201526084016107fc565b438160800151101561294f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b6002546040828101516004546060850151608086015193516000956129989573ffffffffffffffffffffffffffffffffffffffff91821695949190911692914690602001615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052805160209091012060035460a08501517f6793f0ac00000000000000000000000000000000000000000000000000000000845291935073ffffffffffffffffffffffffffffffffffffffff1691636793f0ac91612a2991859190600401615c78565b602060405180830381865afa158015612a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6a919061596d565b612af6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6000612b237f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b8351612b2f9190615afd565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc49190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c599190615829565b60035460408088015190517f2480fcea00000000000000000000000000000000000000000000000000000000815292935060009273ffffffffffffffffffffffffffffffffffffffff90921691632480fcea91612cb891600401615b3a565b602060405180830381865afa158015612cd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf99190615829565b60135460408801518051929350600092839273ffffffffffffffffffffffffffffffffffffffff169163fc01106191899190612d3790600190615812565b81518110612d4757612d47615d36565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015260448101869052606481018890526084810187905260a4016040805180830381865afa158015612dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de39190615ba9565b90925090506000612e157f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b612e1f9084615ac2565b905060008960600151600854601054620f4240612e3c91906157fa565b612e469190615812565b612e509085615afd565b612e5a9190615ac2565b600154909150612e829073ffffffffffffffffffffffffffffffffffffffff16333085614cd8565b600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815233928101929092526024820183905273ffffffffffffffffffffffffffffffffffffffff169063b4f56b26906044015b600060405180830381600087803b158015612ef657600080fd5b505af1158015612f0a573d6000803e3d6000fd5b5050505050505050505050505050565b6013547501000000000000000000000000000000000000000000900460ff1615612fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561300d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130319190615829565b156130be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20436f6c6c60448201527f61746572616c20726174696f206d75737420626520300000000000000000000060648201526084016107fc565b4383101561314e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4445493a3a72656465656d416c676f726974686d69634445493a207369676e6160448201527f7475726520697320657870697265642e0000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906132419084908790879060040161588b565b602060405180830381865afa15801561325e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613282919061596d565b61330e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20696e766160448201527f6c6964207369676e61747572657300000000000000000000000000000000000060648201526084016107fc565b6006548690620f4240906133229082615812565b61332c9083615afd565b6133369190615ac2565b9050600086613348620f424084615afd565b6133529190615ac2565b336000908152600960205260409020549091506133709082906157fa565b33600090815260096020526040902055600c5461338e9082906157fa565b600c55336000908152600d60205260409020439055600654620f4240906133b5908a615afd565b6133bf9190615ac2565b601260008282546133d091906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561344757600080fd5b505af115801561345b573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820185905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401610fa2565b6000620f4240826134ef7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015613560573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135849190615829565b61358e9190615812565b6135989190615afd565b6135a29190615afd565b6127f09190615ac2565b60135477010000000000000000000000000000000000000000000000900460ff1615613659576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6275794261636b444555533a204275796261636b20697320706160448201527f757365640000000000000000000000000000000000000000000000000000000060648201526084016107fc565b438310156136e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4445493a3a6275794261636b444555533a207369676e6174757265206973206560448201527f7870697265642e0000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460045460009173ffffffffffffffffffffffffffffffffffffffff9081169188911687874660405160200161372696959493929190615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906137b59084908790879060040161588b565b602060405180830381865afa1580156137d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f6919061596d565b613882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f504f4f4c3a3a6275794261636b444555533a20696e76616c6964207369676e6160448201527f747572657300000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000604051806080016040528061389889611819565b81526020018781526020018860018a516138b29190615812565b815181106138c2576138c2615d36565b602002602001015181526020018981525090506000620f4240600754620f42406138ec9190615812565b6013546040517f3c04af9f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633c04af9f90613942908790600401615b7e565b602060405180830381865afa15801561395f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139839190615829565b61398d9190615afd565b6139979190615ac2565b905060006139c67f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6139d09083615ac2565b600480546040517fa8a778ae0000000000000000000000000000000000000000000000000000000081523392810192909252602482018d905291925073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015613a4857600080fd5b505af1158015613a5c573d6000803e3d6000fd5b5050600154613a85925073ffffffffffffffffffffffffffffffffffffffff1690503383614b02565b50505050505050505050565b60135460009074010000000000000000000000000000000000000000900460ff1615613b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613baa9190615829565b15613c11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f436f6c6c61746572616c20726174696f206d757374206265203000000000000060448201526064016107fc565b43841015613ca1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90613d949084908890889060040161588b565b602060405180830381865afa158015613db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dd5919061596d565b613e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6013546040517f14da4ee1000000000000000000000000000000000000000000000000000000008152600481018890526024810189905273ffffffffffffffffffffffffffffffffffffffff909116906314da4ee190604401602060405180830381865afa158015613ed7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613efb9190615829565b9150620f4240600554620f4240613f129190615812565b613f1c9084615afd565b613f269190615ac2565b9150620f424060055483613f3a9190615afd565b613f449190615ac2565b60126000828254613f5591906157fa565b9091555050600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820189905273ffffffffffffffffffffffffffffffffffffffff169063a8a778ae90604401600060405180830381600087803b158015613fcd57600080fd5b505af1158015613fe1573d6000803e3d6000fd5b50506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810186905273ffffffffffffffffffffffffffffffffffffffff909116925063b4f56b269150604401600060405180830381600087803b15801561405757600080fd5b505af115801561406b573d6000803e3d6000fd5b505050505095945050505050565b60008181526020819052604081206127f090614f31565b6000828152602081905260409020600201546140ac90336127f6565b61180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b650000000000000000000000000000000060648201526084016107fc565b6141627fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c3857336127f6565b61416b57600080fd5b6013805460ff750100000000000000000000000000000000000000000080830482161581027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f5860c5063a65e23cea4e2e2925f1a841bb6d1bc9615bd425f8dd084980b0514193611af49390049091161515815260200190565b61421e7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336127f6565b614284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f504f4f4c3a3a796f7520617265206e6f7420747275737479000000000000000060448201526064016107fc565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af11580156142f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e1919061596d565b6013547501000000000000000000000000000000000000000000900460ff16156143a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015614413573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144379190615829565b9050620f42408110801561444b5750600081115b6144fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20436f6c6c6160448201527f746572616c20726174696f206e6565647320746f206265206265747765656e2060648201527f2e30303030303120616e64202e39393939393900000000000000000000000000608482015260a4016107fc565b4384101561458d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4445493a3a72656465656d4672616374696f6e616c4445493a207369676e617460448201527f757265206973206578706972656400000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018c90529390941b909316605484015260688301889052608883018790524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906146669084908890889060cc0161588b565b602060405180830381865afa158015614683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146a7919061596d565b614733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20696e76616c60448201527f6964207369676e6174757265730000000000000000000000000000000000000060648201526084016107fc565b60008060008990506000620f4240600654620f42406147529190615812565b61475c908e615afd565b6147669190615ac2565b90506000620f42406147788884615afd565b6147829190615ac2565b61478c9083615812565b90508a61479c620f424083615afd565b6147a69190615ac2565b945060006147d57f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6147df9084615ac2565b90506000620f42406147f18a84615afd565b6147fb9190615ac2565b90508461480b620f424083615afd565b6148159190615ac2565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015292985090965073ffffffffffffffffffffffffffffffffffffffff1694506370a08231935060240191506148789050565b602060405180830381865afa158015614895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148b99190615829565b6148c39190615812565b81111561492c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a60205260409020546149479082906157fa565b336000908152600a6020526040902055600b546149659082906157fa565b600b55336000908152600960205260409020546149839083906157fa565b33600090815260096020526040902055600c546149a19083906157fa565b600c55336000908152600d60205260409020439055600654620f4240906149c8908c615afd565b6149d29190615ac2565b601260008282546149e391906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018c905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015614a5a57600080fd5b505af1158015614a6e573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820186905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401612edc565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16614f3b565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691614b999190615d65565b6000604051808303816000865af19150503d8060008114614bd6576040519150601f19603f3d011682016040523d82523d6000602084013e614bdb565b606091505b5091509150818015614c05575080511580614c05575080806020019051810190614c05919061596d565b614c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016107fc565b5050505050565b6000828152602081905260409020614c8a9082614ad0565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691614d779190615d65565b6000604051808303816000865af19150503d8060008114614db4576040519150601f19603f3d011682016040523d82523d6000602084013e614db9565b606091505b5091509150818015614de3575080511580614de3575080806020019051810190614de3919061596d565b614e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016107fc565b505050505050565b6000828152602081905260409020614e8e9082614f8a565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000614ee88383614fbc565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156127ed565b60006127f0825490565b6000818152600183016020526040812054614f82575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556127f0565b5060006127f0565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16615077565b8154600090821061504f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f647300000000000000000000000000000000000000000000000000000000000060648201526084016107fc565b82600001828154811061506457615064615d36565b9060005260206000200154905092915050565b6000818152600183016020526040812054801561516057600061509b600183615812565b85549091506000906150af90600190615812565b905060008660000182815481106150c8576150c8615d36565b90600052602060002001549050808760000184815481106150eb576150eb615d36565b6000918252602090912001556151028360016157fa565b6000828152600189016020526040902055865487908061512457615124615d81565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506127f0565b60009150506127f0565b803573ffffffffffffffffffffffffffffffffffffffff8116811461518e57600080fd5b919050565b6000602082840312156151a557600080fd5b6127ed8261516a565b6000602082840312156151c057600080fd5b5035919050565b60008083601f8401126151d957600080fd5b50813567ffffffffffffffff8111156151f157600080fd5b6020830191508360208260051b850101111561520c57600080fd5b9250929050565b60008060008060006080868803121561522b57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561525757600080fd5b615263888289016151c7565b969995985093965092949392505050565b6000806040838503121561528757600080fd5b823591506152976020840161516a565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff811182821017156152f2576152f26152a0565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561533f5761533f6152a0565b604052919050565b600067ffffffffffffffff821115615361576153616152a0565b5060051b60200190565b600082601f83011261537c57600080fd5b8135602061539161538c83615347565b6152f8565b82815260059290921b840181019181810190868411156153b057600080fd5b8286015b848110156153cb57803583529183019183016153b4565b509695505050505050565b6000602082840312156153e857600080fd5b813567ffffffffffffffff8111156153ff57600080fd5b61540b8482850161536b565b949350505050565b600080600080600080600060e0888a03121561542e57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080600080600080600060c0888a03121561547a57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a088013567ffffffffffffffff8111156154b457600080fd5b6154c08a828b016151c7565b989b979a50959850939692959293505050565b600080604083850312156154e657600080fd5b50508035926020909101359150565b6000601f838184011261550757600080fd5b8235602061551761538c83615347565b82815260059290921b8501810191818101908784111561553657600080fd5b8287015b848110156155eb57803567ffffffffffffffff8082111561555b5760008081fd5b818a0191508a603f8301126155705760008081fd5b85820135604082821115615586576155866152a0565b6155b5887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c850116016152f8565b92508183528c818386010111156155cc5760008081fd5b818185018985013750600090820187015284525091830191830161553a565b50979650505050505050565b60006020828403121561560957600080fd5b813567ffffffffffffffff8082111561562157600080fd5b9083019060c0828603121561563557600080fd5b61563d6152cf565b823581526020830135602082015260408301358281111561565d57600080fd5b6156698782860161536b565b604083015250606083013560608201526080830135608082015260a08301358281111561569557600080fd5b6156a1878286016154f5565b60a08301525095945050505050565b60008060008060008060a087890312156156c957600080fd5b86359550602087013567ffffffffffffffff808211156156e857600080fd5b6156f48a838b0161536b565b96506040890135955060608901359450608089013591508082111561571857600080fd5b5061572589828a016151c7565b979a9699509497509295939492505050565b60008060006060848603121561574c57600080fd5b6157558461516a565b92506020840135915061576a6040850161516a565b90509250925092565b60008060008060008060a0878903121561578c57600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff8111156157bf57600080fd5b61572589828a016151c7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561580d5761580d6157cb565b500190565b600082821015615824576158246157cb565b500390565b60006020828403121561583b57600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b8781101561595f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18a360301811261591657600080fd5b8901803567ffffffffffffffff81111561592f57600080fd5b8036038b131561593e57600080fd5b61594b8782888501615842565b9650505091830191908301906001016158b5565b509298975050505050505050565b60006020828403121561597f57600080fd5b8151801515811461598f57600080fd5b9392505050565b600181815b808511156159ef57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156159d5576159d56157cb565b808516156159e257918102915b93841c939080029061599b565b509250929050565b600082615a06575060016127f0565b81615a13575060006127f0565b8160018114615a295760028114615a3357615a4f565b60019150506127f0565b60ff841115615a4457615a446157cb565b50506001821b6127f0565b5060208310610133831016604e8410600b8410161715615a72575081810a6127f0565b615a7c8383615996565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615aae57615aae6157cb565b029392505050565b60006127ed83836159f7565b600082615af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615b3557615b356157cb565b500290565b6020808252825182820181905260009190848201906040850190845b81811015615b7257835183529284019291840191600101615b56565b50909695505050505050565b81518152602080830151908201526040808301519082015260608083015190820152608081016127f0565b60008060408385031215615bbc57600080fd5b505080516020909101519092909150565b60007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808960601b1683526014830188516020808b0160005b83811015615c2257815185529382019390820190600101615c06565b5050505060609790971b168652505060148401929092526034830152605482015260740192915050565b60005b83811015615c67578181015183820152602001615c4f565b838111156108e15750506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015615d28577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088870301845281518051808852615ceb81888a01898501615c4c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01696909601850195509284019290840190600101615ca6565b509398975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008251615d77818460208701615c4c565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212202c9b857d563f37079c55cac8650b11b2ed95e9e47dc81d7ea1fc60ca817bdec064736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061032b5760003560e01c80637b0461e9116101b2578063b6258aaa116100f9578063cb73999f116100a2578063e3d84d5e1161007c578063e3d84d5e146106df578063eb2d7461146106f2578063fa4dfa3a14610705578063fede5c9c1461072557600080fd5b8063cb73999f146106bb578063d547741f146106c4578063daa50485146106d757600080fd5b8063c6301e5d116100d3578063c6301e5d1461068c578063c74ec56a1461069f578063ca15c873146106a857600080fd5b8063b6258aaa1461065d578063c3355b8d14610670578063c410ca1b1461067957600080fd5b806391d148541161015b578063a217fddf11610135578063a217fddf1461060f578063abae2c4c14610617578063b235d4681461063757600080fd5b806391d14854146105d6578063928d2b31146105e9578063978b73b5146105fc57600080fd5b80637f877f851161018c5780637f877f851461056d57806388d19f1b146105955780639010d07c1461059e57600080fd5b80637b0461e9146105375780637d55094d146105405780637e4831d31461054857600080fd5b806340e14b7811610276578063564b81ef1161021f5780636d2c5615116101f95780636d2c5615146104c65780636d82e314146104fd5780637901330b1461052457600080fd5b8063564b81ef146104905780635de207cc146104965780636526a12a146104bd57600080fd5b80634ebbe762116102505780634ebbe7621461046257806350c9ecd91461047557806354f9769d1461047d57600080fd5b806340e14b781461043e57806342d15aec146104515780634c6349341461045957600080fd5b80632f2ff15d116102d85780633648b7dc116102b25780633648b7dc1461040257806336568abe1461040b5780633b92da471461041e57600080fd5b80632f2ff15d146103b557806332ad1ee4146103c857806334ddb95d146103db57600080fd5b806315128425116103095780631512842514610376578063248a9ca31461037f578063254cd2bd146103a257600080fd5b806308a7493d14610330578063101197c71461036357806312ace5a21461036c575b600080fd5b61035061033e366004615193565b600a6020526000908152604090205481565b6040519081526020015b60405180910390f35b61035060075481565b61037461072e565b005b61035060115481565b61035061038d3660046151ae565b60009081526020819052604090206002015490565b6103746103b0366004615213565b6108e7565b6103746103c3366004615274565b610fde565b6103506103d6366004615213565b611094565b6103507f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610350600c5481565b610374610419366004615274565b61176a565b61035061042c366004615193565b60096020526000908152604090205481565b61035061044c3660046153d6565b611819565b610374611a37565b61035060105481565b610374610470366004615413565b611afe565b610374611c3d565b61035061048b36600461545f565b611cfb565b46610350565b6103507fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f24050981565b610350600e5481565b6013546104ed90760100000000000000000000000000000000000000000000900460ff1681565b604051901515815260200161035a565b6103507f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e53081565b610374610532366004615274565b612586565b610350600b5481565b61037461271a565b6013546104ed9074010000000000000000000000000000000000000000900460ff1681565b6013546104ed9077010000000000000000000000000000000000000000000000900460ff1681565b61035060125481565b6105b16105ac3660046154d3565b6127d5565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161035a565b6104ed6105e4366004615274565b6127f6565b6103746105f73660046155f7565b61280e565b61037461060a366004615213565b612f1a565b610350600081565b610350610625366004615193565b600d6020526000908152604090205481565b6013546104ed907501000000000000000000000000000000000000000000900460ff1681565b61035061066b3660046151ae565b6134bd565b61035060055481565b6103746106873660046156b0565b6135ac565b61035061069a366004615213565b613a91565b610350600f5481565b6103506106b63660046151ae565b614079565b61035060065481565b6103746106d2366004615274565b614090565b610374614138565b6103746106ed366004615737565b6141f4565b610374610700366004615773565b61431d565b6014546105b19073ffffffffffffffffffffffffffffffffffffffff1681565b61035060085481565b601154336000908152600d6020526040902054439161074c916157fa565b1115610805576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605b60248201527f504f4f4c3a3a636f6c6c656374526564656d7074696f6e3a204d75737420776160448201527f697420666f7220726564656d7074696f6e5f64656c617920626c6f636b73206260648201527f65666f726520636f6c6c656374696e6720726564656d7074696f6e0000000000608482015260a4015b60405180910390fd5b336000908152600960205260408120548190819081901561084d573360009081526009602052604081208054919055600c54909250610845908390615812565b600c55600193505b336000908152600a60205260409020541561088d5750336000908152600a602052604081208054919055600b54610885908290615812565b600b55600192505b83156108b7576004546108b79073ffffffffffffffffffffffffffffffffffffffff163384614b02565b82156108e1576001546108e19073ffffffffffffffffffffffffffffffffffffffff163383614b02565b50505050565b6013547501000000000000000000000000000000000000000000900460ff161561096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa1580156109df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a039190615829565b14610a6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203d3d203100000060448201526064016107fc565b43831015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90610bed9084908790879060040161588b565b602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e919061596d565b610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a72656465656d3174314445493a20696e76616c6964207369676e60448201527f617475726573000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000610ce77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b610cf19088615ac2565b6013546040517f068d54aa000000000000000000000000000000000000000000000000000000008152600481018990526024810183905291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063068d54aa90604401602060405180830381865afa158015610d6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d919190615829565b9050620f4240600654620f4240610da89190615812565b610db29083615afd565b610dbc9190615ac2565b600b546001546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152929350909173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e569190615829565b610e609190615812565b811115610ec9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a6020526040902054610ee49082906157fa565b336000908152600a6020526040902055600b54610f029082906157fa565b600b55336000908152600d60205260409020439055600654620f424090610f29908a615afd565b610f339190615ac2565b60126000828254610f4491906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae906044015b600060405180830381600087803b158015610fbc57600080fd5b505af1158015610fd0573d6000803e3d6000fd5b505050505050505050505050565b600082815260208190526040902060020154610ffa90336127f6565b611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084016107fc565b6110908282614c72565b5050565b60135460009074010000000000000000000000000000000000000000900460ff161561111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa15801561118e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b29190615829565b101561121a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203e3d203100000060448201526064016107fc565b600e54600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015289929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561128f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b39190615829565b6112bd9190615812565b6112c791906157fa565b111561132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5b506f6f6c277320436c6f7365645d3a204365696c696e67207265616368656460448201526064016107fc565b438410156113bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a6d696e743174314445493a207369676e6174757265206973206560448201527f787069726564000000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906114b29084908890889060040161588b565b602060405180830381865afa1580156114cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f3919061596d565b61157e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6d696e743174314445493a20696e76616c6964207369676e617460448201527f757265730000000000000000000000000000000000000000000000000000000060648201526084016107fc565b60006115ab7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6115b59089615afd565b6013546040517f882ab63a000000000000000000000000000000000000000000000000000000008152600481018a90526024810183905291925073ffffffffffffffffffffffffffffffffffffffff169063882ab63a90604401602060405180830381865afa15801561162c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116509190615829565b9250620f4240600554620f42406116679190615812565b6116719085615afd565b61167b9190615ac2565b6001549093506116a39073ffffffffffffffffffffffffffffffffffffffff1633308b614cd8565b620f4240600554846116b59190615afd565b6116bf9190615ac2565b601260008282546116d091906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561174757600080fd5b505af115801561175b573d6000803e3d6000fd5b50505050505095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016107fc565b6110908282614e76565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ad9190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561191e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119429190615829565b6003546040517f2480fcea00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690632480fcea9061199e908890600401615b3a565b602060405180830381865afa1580156119bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119df9190615829565b9050620f42408211156119f357620f424091505b6000620f4240611a038486615afd565b611a0d9190615ac2565b905080821115611a2b57611a218183615812565b9695505050505050565b50600095945050505050565b611a617f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f336127f6565b611a6a57600080fd5b6013805460ff76010000000000000000000000000000000000000000000080830482161581027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f2fda313d9b5bb0b73bd003153f2fccbc0dca49791fdd1184dfad82b44f54bd2e93611af49390049091161515815260200190565b60405180910390a1565b611b287fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f240509336127f6565b611bb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f504f4f4c3a2043616c6c6572206973206e6f7420504152414d455445525f534560448201527f545445525f524f4c45000000000000000000000000000000000000000000000060648201526084016107fc565b600e8790556010869055601185905560058490556006839055600782905560088190556040805188815260208101889052908101869052606081018590526080810184905260a0810183905260c081018290527f17fe98b66d27bd793ea01bd8a23a54acab8eeb167d9eb016a0c7cd71c573920c9060e00160405180910390a150505050505050565b611c677f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf336127f6565b611c7057600080fd5b6013805460ff7701000000000000000000000000000000000000000000000080830482161581027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f4f40fd1c59f78d7a2220da638cd9400daba01e57c7965702f390bf13133cc31f93611af49390049091161515815260200190565b60135460009074010000000000000000000000000000000000000000900460ff1615611d83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015611df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e179190615829565b9050620f424081108015611e2b5750600081115b611eb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f436f6c6c61746572616c20726174696f206e6565647320746f2062652062657460448201527f7765656e202e30303030303120616e64202e393939393939000000000000000060648201526084016107fc565b600e54600b546001546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528c929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f509190615829565b611f5a9190615812565b611f6491906157fa565b1115612019576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f506f6f6c206365696c696e6720726561636865642c206e6f206d6f7265204445908201527f492063616e206265206d696e7465642077697468207468697320636f6c6c617460648201527f6572616c00000000000000000000000000000000000000000000000000000000608482015260a4016107fc565b438510156120a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a207369676e61747560448201527f726520697320657870697265642e00000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018d90529390941b909316605484015260688301899052608883018890524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906121829084908990899060cc0161588b565b602060405180830381865afa15801561219f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c3919061596d565b61224f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a20696e76616c696460448201527f207369676e61747572657300000000000000000000000000000000000000000060648201526084016107fc565b61227a6040518060800160405280600081526020016000815260200160008152602001600081525090565b60006122a77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6122b1908d615afd565b604080516080810182528b8152602081018d9052808201929092526060820186905260135490517f537a30a70000000000000000000000000000000000000000000000000000000081529193506000925073ffffffffffffffffffffffffffffffffffffffff169063537a30a79061232d908590600401615b7e565b6040805180830381865afa158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190615ba9565b90955090508a8111156123dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e6f7420656e6f756768204445555320696e707574746564000000000000000060448201526064016107fc565b620f4240600554620f42406123f19190615812565b6123fb9087615afd565b6124059190615ac2565b600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820184905291965073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561247d57600080fd5b505af1158015612491573d6000803e3d6000fd5b50506001546124bb925073ffffffffffffffffffffffffffffffffffffffff16905033308f614cd8565b620f4240600554866124cd9190615afd565b6124d79190615ac2565b601260008282546124e891906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810187905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561255f57600080fd5b505af1158015612573573d6000803e3d6000fd5b5050505050505050979650505050505050565b6125b07f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e530336127f6565b6125b957600080fd5b601254821115612625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f616d6f756e743c3d64616f53686172650000000000000000000000000000000060448201526064016107fc565b6003546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018590529091169063b4f56b2690604401600060405180830381600087803b15801561269957600080fd5b505af11580156126ad573d6000803e3d6000fd5b5050505081601260008282546126c39190615812565b90915550506040805183815273ffffffffffffffffffffffffffffffffffffffff831660208201527f3a708f2f1c75b12457d207cf1e259ab9f87bbfccb29672903acf4661bd342e49910160405180910390a15050565b6127447fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b336127f6565b61274d57600080fd5b6013805460ff7401000000000000000000000000000000000000000080830482161581027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f6bdfe227d5db299c59aa56d5f846f40dbd73b271aaa78e18ed74fc3e00b8aa6b93611af49390049091161515815260200190565b60008281526020819052604081206127ed9083614edc565b90505b92915050565b60008281526020819052604081206127ed9083614ef2565b601354760100000000000000000000000000000000000000000000900460ff16156128bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a205265636f6c6c60448201527f61746572616c697a65206973207061757365640000000000000000000000000060648201526084016107fc565b438160800151101561294f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b6002546040828101516004546060850151608086015193516000956129989573ffffffffffffffffffffffffffffffffffffffff91821695949190911692914690602001615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052805160209091012060035460a08501517f6793f0ac00000000000000000000000000000000000000000000000000000000845291935073ffffffffffffffffffffffffffffffffffffffff1691636793f0ac91612a2991859190600401615c78565b602060405180830381865afa158015612a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6a919061596d565b612af6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6000612b237f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b8351612b2f9190615afd565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc49190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c599190615829565b60035460408088015190517f2480fcea00000000000000000000000000000000000000000000000000000000815292935060009273ffffffffffffffffffffffffffffffffffffffff90921691632480fcea91612cb891600401615b3a565b602060405180830381865afa158015612cd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf99190615829565b60135460408801518051929350600092839273ffffffffffffffffffffffffffffffffffffffff169163fc01106191899190612d3790600190615812565b81518110612d4757612d47615d36565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015260448101869052606481018890526084810187905260a4016040805180830381865afa158015612dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de39190615ba9565b90925090506000612e157f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b612e1f9084615ac2565b905060008960600151600854601054620f4240612e3c91906157fa565b612e469190615812565b612e509085615afd565b612e5a9190615ac2565b600154909150612e829073ffffffffffffffffffffffffffffffffffffffff16333085614cd8565b600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815233928101929092526024820183905273ffffffffffffffffffffffffffffffffffffffff169063b4f56b26906044015b600060405180830381600087803b158015612ef657600080fd5b505af1158015612f0a573d6000803e3d6000fd5b5050505050505050505050505050565b6013547501000000000000000000000000000000000000000000900460ff1615612fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561300d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130319190615829565b156130be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20436f6c6c60448201527f61746572616c20726174696f206d75737420626520300000000000000000000060648201526084016107fc565b4383101561314e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4445493a3a72656465656d416c676f726974686d69634445493a207369676e6160448201527f7475726520697320657870697265642e0000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906132419084908790879060040161588b565b602060405180830381865afa15801561325e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613282919061596d565b61330e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20696e766160448201527f6c6964207369676e61747572657300000000000000000000000000000000000060648201526084016107fc565b6006548690620f4240906133229082615812565b61332c9083615afd565b6133369190615ac2565b9050600086613348620f424084615afd565b6133529190615ac2565b336000908152600960205260409020549091506133709082906157fa565b33600090815260096020526040902055600c5461338e9082906157fa565b600c55336000908152600d60205260409020439055600654620f4240906133b5908a615afd565b6133bf9190615ac2565b601260008282546133d091906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561344757600080fd5b505af115801561345b573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820185905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401610fa2565b6000620f4240826134ef7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015613560573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135849190615829565b61358e9190615812565b6135989190615afd565b6135a29190615afd565b6127f09190615ac2565b60135477010000000000000000000000000000000000000000000000900460ff1615613659576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6275794261636b444555533a204275796261636b20697320706160448201527f757365640000000000000000000000000000000000000000000000000000000060648201526084016107fc565b438310156136e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4445493a3a6275794261636b444555533a207369676e6174757265206973206560448201527f7870697265642e0000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460045460009173ffffffffffffffffffffffffffffffffffffffff9081169188911687874660405160200161372696959493929190615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906137b59084908790879060040161588b565b602060405180830381865afa1580156137d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f6919061596d565b613882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f504f4f4c3a3a6275794261636b444555533a20696e76616c6964207369676e6160448201527f747572657300000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000604051806080016040528061389889611819565b81526020018781526020018860018a516138b29190615812565b815181106138c2576138c2615d36565b602002602001015181526020018981525090506000620f4240600754620f42406138ec9190615812565b6013546040517f3c04af9f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633c04af9f90613942908790600401615b7e565b602060405180830381865afa15801561395f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139839190615829565b61398d9190615afd565b6139979190615ac2565b905060006139c67f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6139d09083615ac2565b600480546040517fa8a778ae0000000000000000000000000000000000000000000000000000000081523392810192909252602482018d905291925073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015613a4857600080fd5b505af1158015613a5c573d6000803e3d6000fd5b5050600154613a85925073ffffffffffffffffffffffffffffffffffffffff1690503383614b02565b50505050505050505050565b60135460009074010000000000000000000000000000000000000000900460ff1615613b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613baa9190615829565b15613c11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f436f6c6c61746572616c20726174696f206d757374206265203000000000000060448201526064016107fc565b43841015613ca1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90613d949084908890889060040161588b565b602060405180830381865afa158015613db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dd5919061596d565b613e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6013546040517f14da4ee1000000000000000000000000000000000000000000000000000000008152600481018890526024810189905273ffffffffffffffffffffffffffffffffffffffff909116906314da4ee190604401602060405180830381865afa158015613ed7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613efb9190615829565b9150620f4240600554620f4240613f129190615812565b613f1c9084615afd565b613f269190615ac2565b9150620f424060055483613f3a9190615afd565b613f449190615ac2565b60126000828254613f5591906157fa565b9091555050600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820189905273ffffffffffffffffffffffffffffffffffffffff169063a8a778ae90604401600060405180830381600087803b158015613fcd57600080fd5b505af1158015613fe1573d6000803e3d6000fd5b50506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810186905273ffffffffffffffffffffffffffffffffffffffff909116925063b4f56b269150604401600060405180830381600087803b15801561405757600080fd5b505af115801561406b573d6000803e3d6000fd5b505050505095945050505050565b60008181526020819052604081206127f090614f31565b6000828152602081905260409020600201546140ac90336127f6565b61180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b650000000000000000000000000000000060648201526084016107fc565b6141627fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c3857336127f6565b61416b57600080fd5b6013805460ff750100000000000000000000000000000000000000000080830482161581027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f5860c5063a65e23cea4e2e2925f1a841bb6d1bc9615bd425f8dd084980b0514193611af49390049091161515815260200190565b61421e7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336127f6565b614284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f504f4f4c3a3a796f7520617265206e6f7420747275737479000000000000000060448201526064016107fc565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af11580156142f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e1919061596d565b6013547501000000000000000000000000000000000000000000900460ff16156143a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015614413573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144379190615829565b9050620f42408110801561444b5750600081115b6144fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20436f6c6c6160448201527f746572616c20726174696f206e6565647320746f206265206265747765656e2060648201527f2e30303030303120616e64202e39393939393900000000000000000000000000608482015260a4016107fc565b4384101561458d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4445493a3a72656465656d4672616374696f6e616c4445493a207369676e617460448201527f757265206973206578706972656400000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018c90529390941b909316605484015260688301889052608883018790524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906146669084908890889060cc0161588b565b602060405180830381865afa158015614683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146a7919061596d565b614733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20696e76616c60448201527f6964207369676e6174757265730000000000000000000000000000000000000060648201526084016107fc565b60008060008990506000620f4240600654620f42406147529190615812565b61475c908e615afd565b6147669190615ac2565b90506000620f42406147788884615afd565b6147829190615ac2565b61478c9083615812565b90508a61479c620f424083615afd565b6147a69190615ac2565b945060006147d57f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6147df9084615ac2565b90506000620f42406147f18a84615afd565b6147fb9190615ac2565b90508461480b620f424083615afd565b6148159190615ac2565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015292985090965073ffffffffffffffffffffffffffffffffffffffff1694506370a08231935060240191506148789050565b602060405180830381865afa158015614895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148b99190615829565b6148c39190615812565b81111561492c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a60205260409020546149479082906157fa565b336000908152600a6020526040902055600b546149659082906157fa565b600b55336000908152600960205260409020546149839083906157fa565b33600090815260096020526040902055600c546149a19083906157fa565b600c55336000908152600d60205260409020439055600654620f4240906149c8908c615afd565b6149d29190615ac2565b601260008282546149e391906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018c905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015614a5a57600080fd5b505af1158015614a6e573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820186905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401612edc565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16614f3b565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691614b999190615d65565b6000604051808303816000865af19150503d8060008114614bd6576040519150601f19603f3d011682016040523d82523d6000602084013e614bdb565b606091505b5091509150818015614c05575080511580614c05575080806020019051810190614c05919061596d565b614c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016107fc565b5050505050565b6000828152602081905260409020614c8a9082614ad0565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691614d779190615d65565b6000604051808303816000865af19150503d8060008114614db4576040519150601f19603f3d011682016040523d82523d6000602084013e614db9565b606091505b5091509150818015614de3575080511580614de3575080806020019051810190614de3919061596d565b614e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016107fc565b505050505050565b6000828152602081905260409020614e8e9082614f8a565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000614ee88383614fbc565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156127ed565b60006127f0825490565b6000818152600183016020526040812054614f82575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556127f0565b5060006127f0565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16615077565b8154600090821061504f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f647300000000000000000000000000000000000000000000000000000000000060648201526084016107fc565b82600001828154811061506457615064615d36565b9060005260206000200154905092915050565b6000818152600183016020526040812054801561516057600061509b600183615812565b85549091506000906150af90600190615812565b905060008660000182815481106150c8576150c8615d36565b90600052602060002001549050808760000184815481106150eb576150eb615d36565b6000918252602090912001556151028360016157fa565b6000828152600189016020526040902055865487908061512457615124615d81565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506127f0565b60009150506127f0565b803573ffffffffffffffffffffffffffffffffffffffff8116811461518e57600080fd5b919050565b6000602082840312156151a557600080fd5b6127ed8261516a565b6000602082840312156151c057600080fd5b5035919050565b60008083601f8401126151d957600080fd5b50813567ffffffffffffffff8111156151f157600080fd5b6020830191508360208260051b850101111561520c57600080fd5b9250929050565b60008060008060006080868803121561522b57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561525757600080fd5b615263888289016151c7565b969995985093965092949392505050565b6000806040838503121561528757600080fd5b823591506152976020840161516a565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff811182821017156152f2576152f26152a0565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561533f5761533f6152a0565b604052919050565b600067ffffffffffffffff821115615361576153616152a0565b5060051b60200190565b600082601f83011261537c57600080fd5b8135602061539161538c83615347565b6152f8565b82815260059290921b840181019181810190868411156153b057600080fd5b8286015b848110156153cb57803583529183019183016153b4565b509695505050505050565b6000602082840312156153e857600080fd5b813567ffffffffffffffff8111156153ff57600080fd5b61540b8482850161536b565b949350505050565b600080600080600080600060e0888a03121561542e57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080600080600080600060c0888a03121561547a57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a088013567ffffffffffffffff8111156154b457600080fd5b6154c08a828b016151c7565b989b979a50959850939692959293505050565b600080604083850312156154e657600080fd5b50508035926020909101359150565b6000601f838184011261550757600080fd5b8235602061551761538c83615347565b82815260059290921b8501810191818101908784111561553657600080fd5b8287015b848110156155eb57803567ffffffffffffffff8082111561555b5760008081fd5b818a0191508a603f8301126155705760008081fd5b85820135604082821115615586576155866152a0565b6155b5887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c850116016152f8565b92508183528c818386010111156155cc5760008081fd5b818185018985013750600090820187015284525091830191830161553a565b50979650505050505050565b60006020828403121561560957600080fd5b813567ffffffffffffffff8082111561562157600080fd5b9083019060c0828603121561563557600080fd5b61563d6152cf565b823581526020830135602082015260408301358281111561565d57600080fd5b6156698782860161536b565b604083015250606083013560608201526080830135608082015260a08301358281111561569557600080fd5b6156a1878286016154f5565b60a08301525095945050505050565b60008060008060008060a087890312156156c957600080fd5b86359550602087013567ffffffffffffffff808211156156e857600080fd5b6156f48a838b0161536b565b96506040890135955060608901359450608089013591508082111561571857600080fd5b5061572589828a016151c7565b979a9699509497509295939492505050565b60008060006060848603121561574c57600080fd5b6157558461516a565b92506020840135915061576a6040850161516a565b90509250925092565b60008060008060008060a0878903121561578c57600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff8111156157bf57600080fd5b61572589828a016151c7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561580d5761580d6157cb565b500190565b600082821015615824576158246157cb565b500390565b60006020828403121561583b57600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b8781101561595f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18a360301811261591657600080fd5b8901803567ffffffffffffffff81111561592f57600080fd5b8036038b131561593e57600080fd5b61594b8782888501615842565b9650505091830191908301906001016158b5565b509298975050505050505050565b60006020828403121561597f57600080fd5b8151801515811461598f57600080fd5b9392505050565b600181815b808511156159ef57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156159d5576159d56157cb565b808516156159e257918102915b93841c939080029061599b565b509250929050565b600082615a06575060016127f0565b81615a13575060006127f0565b8160018114615a295760028114615a3357615a4f565b60019150506127f0565b60ff841115615a4457615a446157cb565b50506001821b6127f0565b5060208310610133831016604e8410600b8410161715615a72575081810a6127f0565b615a7c8383615996565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615aae57615aae6157cb565b029392505050565b60006127ed83836159f7565b600082615af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615b3557615b356157cb565b500290565b6020808252825182820181905260009190848201906040850190845b81811015615b7257835183529284019291840191600101615b56565b50909695505050505050565b81518152602080830151908201526040808301519082015260608083015190820152608081016127f0565b60008060408385031215615bbc57600080fd5b505080516020909101519092909150565b60007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808960601b1683526014830188516020808b0160005b83811015615c2257815185529382019390820190600101615c06565b5050505060609790971b168652505060148401929092526034830152605482015260740192915050565b60005b83811015615c67578181015183820152602001615c4f565b838111156108e15750506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015615d28577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088870301845281518051808852615ceb81888a01898501615c4c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01696909601850195509284019290840190600101615ca6565b509398975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008251615d77818460208701615c4c565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212202c9b857d563f37079c55cac8650b11b2ed95e9e47dc81d7ea1fc60ca817bdec064736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/DEI/Pools/Pool_HUSD.sol/Pool_HUSD.dbg.json b/artifacts/contracts/DEI/Pools/Pool_HUSD.sol/Pool_HUSD.dbg.json new file mode 100644 index 00000000..b4959490 --- /dev/null +++ b/artifacts/contracts/DEI/Pools/Pool_HUSD.sol/Pool_HUSD.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/DEI/Pools/Pool_HUSD.sol/Pool_HUSD.json b/artifacts/contracts/DEI/Pools/Pool_HUSD.sol/Pool_HUSD.json new file mode 100644 index 00000000..4f6f924f --- /dev/null +++ b/artifacts/contracts/DEI/Pools/Pool_HUSD.sol/Pool_HUSD.json @@ -0,0 +1,1153 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Pool_HUSD", + "sourceName": "contracts/DEI/Pools/Pool_HUSD.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_dei_contract_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_deus_contract_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_collateral_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_trusty_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_admin_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_pool_ceiling", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_library", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "BuybackToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "MintingToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "new_ceiling", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_bonus_rate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_redemption_delay", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_mint_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_redeem_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_buyback_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_recollat_fee", + "type": "uint256" + } + ], + "name": "PoolParametersSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "RecollateralizeToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "RedeemingToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "daoShare", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "daoShareCollected", + "type": "event" + }, + { + "inputs": [], + "name": "DAO_SHARE_COLLECTOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "HUSD_address", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PARAMETER_SETTER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TRUSTY_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "collat_usd_price", + "type": "uint256[]" + } + ], + "name": "availableExcessCollatDV", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bonus_rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEUS_amount", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "collateral_price", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "buyBackDEUS", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "buyBackPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "buyback_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collat_usd_price", + "type": "uint256" + } + ], + "name": "collatDollarBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "collectDaoShare", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "collectRedemption", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "daoShare", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "emergencyWithdrawERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getChainID", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "lastRedeemed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mint1t1DEI", + "outputs": [ + { + "internalType": "uint256", + "name": "dei_amount_d18", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deus_amount_d18", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mintAlgorithmicDEI", + "outputs": [ + { + "internalType": "uint256", + "name": "dei_amount_d18", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mintFractionalDEI", + "outputs": [ + { + "internalType": "uint256", + "name": "mint_amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "mintPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minting_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pausedPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pool_ceiling", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "recollat_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "pool_collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "collateral_price", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "internalType": "struct DEIPool.RecollateralizeDEI", + "name": "inputs", + "type": "tuple" + } + ], + "name": "recollateralizeDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "recollateralizePaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeem1t1DEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeemAlgorithmicDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "redeemCollateralBalances", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "redeemDEUSBalances", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeemFractionalDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "redeemPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "redemption_delay", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "redemption_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "new_ceiling", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_bonus_rate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_redemption_delay", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_mint_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_redeem_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_buyback_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_recollat_fee", + "type": "uint256" + } + ], + "name": "setPoolParameters", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleBuyBack", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleMinting", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleRecollateralize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleRedeeming", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unclaimedPoolCollateral", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unclaimedPoolDEUS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a06040526000600e819055600f819055611d4c60105560026011556012556013805463ffffffff60a01b191690553480156200003b57600080fd5b50604051620063c5380380620063c58339810160408190526200005e91620004b4565b868686868686866001600160a01b038716158015906200008657506001600160a01b03861615155b80156200009b57506001600160a01b03851615155b8015620000b057506001600160a01b03841615155b8015620000c557506001600160a01b03831615155b8015620000da57506001600160a01b03811615155b6200012c5760405162461bcd60e51b815260206004820152601b60248201527f504f4f4c3a3a5a65726f2061646472657373206465746563746564000000000060448201526064015b60405180910390fd5b601380546001600160a01b038084166001600160a01b031992831617909255600380548a8416908316179055600480548984169083161781556002805493891693831684179055600180549092168317909155600e8490556040805163313ce56760e01b8152905163313ce567928281019260209291908290030181865afa158015620001bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e3919062000540565b620001f39060ff1660126200056c565b60805262000203600084620003a9565b6200022f7fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b85620003a9565b6200025b7fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c385785620003a9565b620002877f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f85620003a9565b620002b37f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf85620003a9565b620002df7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c85620003a9565b6200030b7fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f24050985620003a9565b50505050506001600160a01b038716151591506200036e90505760405162461bcd60e51b815260206004820152601560248201527f5a65726f20616464726573732064657465637465640000000000000000000000604482015260640162000123565b6200037b600033620003a9565b5050601480546001600160a01b0319166001600160a01b039490941693909317909255506200059292505050565b620003b58282620003b9565b5050565b600082815260208181526040909120620003de91839062004ad062000420821b17901c565b15620003b55760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b60006200043c836001600160601b0319606085901b1662000445565b90505b92915050565b60008181526001830160205260408120546200048e575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200043f565b5060006200043f565b80516001600160a01b0381168114620004af57600080fd5b919050565b600080600080600080600060e0888a031215620004d057600080fd5b620004db8862000497565b9650620004eb6020890162000497565b9550620004fb6040890162000497565b94506200050b6060890162000497565b93506200051b6080890162000497565b925060a088015191506200053260c0890162000497565b905092959891949750929550565b6000602082840312156200055357600080fd5b815160ff811681146200056557600080fd5b9392505050565b6000828210156200058d57634e487b7160e01b600052601160045260246000fd5b500390565b608051615de6620005df60003960008181610cc1015281816115850152818161228101528181612afd01528181612def015281816134c9015281816139a001526147af0152615de66000f3fe608060405234801561001057600080fd5b506004361061032b5760003560e01c80637901330b116101b2578063b235d468116100f9578063ca15c873116100a2578063daa504851161007c578063daa50485146106f7578063e3d84d5e146106ff578063eb2d746114610712578063fede5c9c1461072557600080fd5b8063ca15c873146106c8578063cb73999f146106db578063d547741f146106e457600080fd5b8063c410ca1b116100d3578063c410ca1b14610699578063c6301e5d146106ac578063c74ec56a146106bf57600080fd5b8063b235d46814610657578063b6258aaa1461067d578063c3355b8d1461069057600080fd5b80639010d07c1161015b578063978b73b511610135578063978b73b51461061c578063a217fddf1461062f578063abae2c4c1461063757600080fd5b80639010d07c146105e357806391d14854146105f6578063928d2b311461060957600080fd5b80637e4831d31161018c5780637e4831d31461058d5780637f877f85146105b257806388d19f1b146105da57600080fd5b80637901330b146105695780637b0461e91461057c5780637d55094d1461058557600080fd5b806340e14b7811610276578063564b81ef1161021f5780636d2c5615116101f95780636d2c5615146104c65780636d82e314146104fd57806374347c441461052457600080fd5b8063564b81ef146104905780635de207cc146104965780636526a12a146104bd57600080fd5b80634ebbe762116102505780634ebbe7621461046257806350c9ecd91461047557806354f9769d1461047d57600080fd5b806340e14b781461043e57806342d15aec146104515780634c6349341461045957600080fd5b80632f2ff15d116102d85780633648b7dc116102b25780633648b7dc1461040257806336568abe1461040b5780633b92da471461041e57600080fd5b80632f2ff15d146103b557806332ad1ee4146103c857806334ddb95d146103db57600080fd5b806315128425116103095780631512842514610376578063248a9ca31461037f578063254cd2bd146103a257600080fd5b806308a7493d14610330578063101197c71461036357806312ace5a21461036c575b600080fd5b61035061033e366004615193565b600a6020526000908152604090205481565b6040519081526020015b60405180910390f35b61035060075481565b61037461072e565b005b61035060115481565b61035061038d3660046151ae565b60009081526020819052604090206002015490565b6103746103b0366004615213565b6108e7565b6103746103c3366004615274565b610fde565b6103506103d6366004615213565b611094565b6103507f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610350600c5481565b610374610419366004615274565b61176a565b61035061042c366004615193565b60096020526000908152604090205481565b61035061044c3660046153d6565b611819565b610374611a37565b61035060105481565b610374610470366004615413565b611afe565b610374611c3d565b61035061048b36600461545f565b611cfb565b46610350565b6103507fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f24050981565b610350600e5481565b6013546104ed90760100000000000000000000000000000000000000000000900460ff1681565b604051901515815260200161035a565b6103507f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e53081565b6014546105449073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161035a565b610374610577366004615274565b612586565b610350600b5481565b61037461271a565b6013546104ed9074010000000000000000000000000000000000000000900460ff1681565b6013546104ed9077010000000000000000000000000000000000000000000000900460ff1681565b61035060125481565b6105446105f13660046154d3565b6127d5565b6104ed610604366004615274565b6127f6565b6103746106173660046155f7565b61280e565b61037461062a366004615213565b612f1a565b610350600081565b610350610645366004615193565b600d6020526000908152604090205481565b6013546104ed907501000000000000000000000000000000000000000000900460ff1681565b61035061068b3660046151ae565b6134bd565b61035060055481565b6103746106a73660046156b0565b6135ac565b6103506106ba366004615213565b613a91565b610350600f5481565b6103506106d63660046151ae565b614079565b61035060065481565b6103746106f2366004615274565b614090565b610374614138565b61037461070d366004615737565b6141f4565b610374610720366004615773565b61431d565b61035060085481565b601154336000908152600d6020526040902054439161074c916157fa565b1115610805576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605b60248201527f504f4f4c3a3a636f6c6c656374526564656d7074696f6e3a204d75737420776160448201527f697420666f7220726564656d7074696f6e5f64656c617920626c6f636b73206260648201527f65666f726520636f6c6c656374696e6720726564656d7074696f6e0000000000608482015260a4015b60405180910390fd5b336000908152600960205260408120548190819081901561084d573360009081526009602052604081208054919055600c54909250610845908390615812565b600c55600193505b336000908152600a60205260409020541561088d5750336000908152600a602052604081208054919055600b54610885908290615812565b600b55600192505b83156108b7576004546108b79073ffffffffffffffffffffffffffffffffffffffff163384614b02565b82156108e1576001546108e19073ffffffffffffffffffffffffffffffffffffffff163383614b02565b50505050565b6013547501000000000000000000000000000000000000000000900460ff161561096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa1580156109df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a039190615829565b14610a6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203d3d203100000060448201526064016107fc565b43831015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90610bed9084908790879060040161588b565b602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e919061596d565b610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a72656465656d3174314445493a20696e76616c6964207369676e60448201527f617475726573000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000610ce77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b610cf19088615ac2565b6013546040517f068d54aa000000000000000000000000000000000000000000000000000000008152600481018990526024810183905291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063068d54aa90604401602060405180830381865afa158015610d6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d919190615829565b9050620f4240600654620f4240610da89190615812565b610db29083615afd565b610dbc9190615ac2565b600b546001546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152929350909173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e569190615829565b610e609190615812565b811115610ec9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a6020526040902054610ee49082906157fa565b336000908152600a6020526040902055600b54610f029082906157fa565b600b55336000908152600d60205260409020439055600654620f424090610f29908a615afd565b610f339190615ac2565b60126000828254610f4491906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae906044015b600060405180830381600087803b158015610fbc57600080fd5b505af1158015610fd0573d6000803e3d6000fd5b505050505050505050505050565b600082815260208190526040902060020154610ffa90336127f6565b611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084016107fc565b6110908282614c72565b5050565b60135460009074010000000000000000000000000000000000000000900460ff161561111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa15801561118e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b29190615829565b101561121a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203e3d203100000060448201526064016107fc565b600e54600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015289929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561128f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b39190615829565b6112bd9190615812565b6112c791906157fa565b111561132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5b506f6f6c277320436c6f7365645d3a204365696c696e67207265616368656460448201526064016107fc565b438410156113bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a6d696e743174314445493a207369676e6174757265206973206560448201527f787069726564000000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906114b29084908890889060040161588b565b602060405180830381865afa1580156114cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f3919061596d565b61157e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6d696e743174314445493a20696e76616c6964207369676e617460448201527f757265730000000000000000000000000000000000000000000000000000000060648201526084016107fc565b60006115ab7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6115b59089615afd565b6013546040517f882ab63a000000000000000000000000000000000000000000000000000000008152600481018a90526024810183905291925073ffffffffffffffffffffffffffffffffffffffff169063882ab63a90604401602060405180830381865afa15801561162c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116509190615829565b9250620f4240600554620f42406116679190615812565b6116719085615afd565b61167b9190615ac2565b6001549093506116a39073ffffffffffffffffffffffffffffffffffffffff1633308b614cd8565b620f4240600554846116b59190615afd565b6116bf9190615ac2565b601260008282546116d091906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561174757600080fd5b505af115801561175b573d6000803e3d6000fd5b50505050505095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016107fc565b6110908282614e76565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ad9190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561191e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119429190615829565b6003546040517f2480fcea00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690632480fcea9061199e908890600401615b3a565b602060405180830381865afa1580156119bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119df9190615829565b9050620f42408211156119f357620f424091505b6000620f4240611a038486615afd565b611a0d9190615ac2565b905080821115611a2b57611a218183615812565b9695505050505050565b50600095945050505050565b611a617f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f336127f6565b611a6a57600080fd5b6013805460ff76010000000000000000000000000000000000000000000080830482161581027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f2fda313d9b5bb0b73bd003153f2fccbc0dca49791fdd1184dfad82b44f54bd2e93611af49390049091161515815260200190565b60405180910390a1565b611b287fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f240509336127f6565b611bb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f504f4f4c3a2043616c6c6572206973206e6f7420504152414d455445525f534560448201527f545445525f524f4c45000000000000000000000000000000000000000000000060648201526084016107fc565b600e8790556010869055601185905560058490556006839055600782905560088190556040805188815260208101889052908101869052606081018590526080810184905260a0810183905260c081018290527f17fe98b66d27bd793ea01bd8a23a54acab8eeb167d9eb016a0c7cd71c573920c9060e00160405180910390a150505050505050565b611c677f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf336127f6565b611c7057600080fd5b6013805460ff7701000000000000000000000000000000000000000000000080830482161581027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f4f40fd1c59f78d7a2220da638cd9400daba01e57c7965702f390bf13133cc31f93611af49390049091161515815260200190565b60135460009074010000000000000000000000000000000000000000900460ff1615611d83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015611df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e179190615829565b9050620f424081108015611e2b5750600081115b611eb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f436f6c6c61746572616c20726174696f206e6565647320746f2062652062657460448201527f7765656e202e30303030303120616e64202e393939393939000000000000000060648201526084016107fc565b600e54600b546001546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528c929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f509190615829565b611f5a9190615812565b611f6491906157fa565b1115612019576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f506f6f6c206365696c696e6720726561636865642c206e6f206d6f7265204445908201527f492063616e206265206d696e7465642077697468207468697320636f6c6c617460648201527f6572616c00000000000000000000000000000000000000000000000000000000608482015260a4016107fc565b438510156120a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a207369676e61747560448201527f726520697320657870697265642e00000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018d90529390941b909316605484015260688301899052608883018890524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906121829084908990899060cc0161588b565b602060405180830381865afa15801561219f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c3919061596d565b61224f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a20696e76616c696460448201527f207369676e61747572657300000000000000000000000000000000000000000060648201526084016107fc565b61227a6040518060800160405280600081526020016000815260200160008152602001600081525090565b60006122a77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6122b1908d615afd565b604080516080810182528b8152602081018d9052808201929092526060820186905260135490517f537a30a70000000000000000000000000000000000000000000000000000000081529193506000925073ffffffffffffffffffffffffffffffffffffffff169063537a30a79061232d908590600401615b7e565b6040805180830381865afa158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190615ba9565b90955090508a8111156123dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e6f7420656e6f756768204445555320696e707574746564000000000000000060448201526064016107fc565b620f4240600554620f42406123f19190615812565b6123fb9087615afd565b6124059190615ac2565b600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820184905291965073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561247d57600080fd5b505af1158015612491573d6000803e3d6000fd5b50506001546124bb925073ffffffffffffffffffffffffffffffffffffffff16905033308f614cd8565b620f4240600554866124cd9190615afd565b6124d79190615ac2565b601260008282546124e891906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810187905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561255f57600080fd5b505af1158015612573573d6000803e3d6000fd5b5050505050505050979650505050505050565b6125b07f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e530336127f6565b6125b957600080fd5b601254821115612625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f616d6f756e743c3d64616f53686172650000000000000000000000000000000060448201526064016107fc565b6003546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018590529091169063b4f56b2690604401600060405180830381600087803b15801561269957600080fd5b505af11580156126ad573d6000803e3d6000fd5b5050505081601260008282546126c39190615812565b90915550506040805183815273ffffffffffffffffffffffffffffffffffffffff831660208201527f3a708f2f1c75b12457d207cf1e259ab9f87bbfccb29672903acf4661bd342e49910160405180910390a15050565b6127447fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b336127f6565b61274d57600080fd5b6013805460ff7401000000000000000000000000000000000000000080830482161581027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f6bdfe227d5db299c59aa56d5f846f40dbd73b271aaa78e18ed74fc3e00b8aa6b93611af49390049091161515815260200190565b60008281526020819052604081206127ed9083614edc565b90505b92915050565b60008281526020819052604081206127ed9083614ef2565b601354760100000000000000000000000000000000000000000000900460ff16156128bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a205265636f6c6c60448201527f61746572616c697a65206973207061757365640000000000000000000000000060648201526084016107fc565b438160800151101561294f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b6002546040828101516004546060850151608086015193516000956129989573ffffffffffffffffffffffffffffffffffffffff91821695949190911692914690602001615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052805160209091012060035460a08501517f6793f0ac00000000000000000000000000000000000000000000000000000000845291935073ffffffffffffffffffffffffffffffffffffffff1691636793f0ac91612a2991859190600401615c78565b602060405180830381865afa158015612a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6a919061596d565b612af6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6000612b237f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b8351612b2f9190615afd565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc49190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c599190615829565b60035460408088015190517f2480fcea00000000000000000000000000000000000000000000000000000000815292935060009273ffffffffffffffffffffffffffffffffffffffff90921691632480fcea91612cb891600401615b3a565b602060405180830381865afa158015612cd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf99190615829565b60135460408801518051929350600092839273ffffffffffffffffffffffffffffffffffffffff169163fc01106191899190612d3790600190615812565b81518110612d4757612d47615d36565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015260448101869052606481018890526084810187905260a4016040805180830381865afa158015612dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de39190615ba9565b90925090506000612e157f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b612e1f9084615ac2565b905060008960600151600854601054620f4240612e3c91906157fa565b612e469190615812565b612e509085615afd565b612e5a9190615ac2565b600154909150612e829073ffffffffffffffffffffffffffffffffffffffff16333085614cd8565b600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815233928101929092526024820183905273ffffffffffffffffffffffffffffffffffffffff169063b4f56b26906044015b600060405180830381600087803b158015612ef657600080fd5b505af1158015612f0a573d6000803e3d6000fd5b5050505050505050505050505050565b6013547501000000000000000000000000000000000000000000900460ff1615612fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561300d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130319190615829565b156130be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20436f6c6c60448201527f61746572616c20726174696f206d75737420626520300000000000000000000060648201526084016107fc565b4383101561314e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4445493a3a72656465656d416c676f726974686d69634445493a207369676e6160448201527f7475726520697320657870697265642e0000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906132419084908790879060040161588b565b602060405180830381865afa15801561325e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613282919061596d565b61330e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20696e766160448201527f6c6964207369676e61747572657300000000000000000000000000000000000060648201526084016107fc565b6006548690620f4240906133229082615812565b61332c9083615afd565b6133369190615ac2565b9050600086613348620f424084615afd565b6133529190615ac2565b336000908152600960205260409020549091506133709082906157fa565b33600090815260096020526040902055600c5461338e9082906157fa565b600c55336000908152600d60205260409020439055600654620f4240906133b5908a615afd565b6133bf9190615ac2565b601260008282546133d091906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561344757600080fd5b505af115801561345b573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820185905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401610fa2565b6000620f4240826134ef7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015613560573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135849190615829565b61358e9190615812565b6135989190615afd565b6135a29190615afd565b6127f09190615ac2565b60135477010000000000000000000000000000000000000000000000900460ff1615613659576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6275794261636b444555533a204275796261636b20697320706160448201527f757365640000000000000000000000000000000000000000000000000000000060648201526084016107fc565b438310156136e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4445493a3a6275794261636b444555533a207369676e6174757265206973206560448201527f7870697265642e0000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460045460009173ffffffffffffffffffffffffffffffffffffffff9081169188911687874660405160200161372696959493929190615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906137b59084908790879060040161588b565b602060405180830381865afa1580156137d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f6919061596d565b613882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f504f4f4c3a3a6275794261636b444555533a20696e76616c6964207369676e6160448201527f747572657300000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000604051806080016040528061389889611819565b81526020018781526020018860018a516138b29190615812565b815181106138c2576138c2615d36565b602002602001015181526020018981525090506000620f4240600754620f42406138ec9190615812565b6013546040517f3c04af9f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633c04af9f90613942908790600401615b7e565b602060405180830381865afa15801561395f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139839190615829565b61398d9190615afd565b6139979190615ac2565b905060006139c67f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6139d09083615ac2565b600480546040517fa8a778ae0000000000000000000000000000000000000000000000000000000081523392810192909252602482018d905291925073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015613a4857600080fd5b505af1158015613a5c573d6000803e3d6000fd5b5050600154613a85925073ffffffffffffffffffffffffffffffffffffffff1690503383614b02565b50505050505050505050565b60135460009074010000000000000000000000000000000000000000900460ff1615613b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613baa9190615829565b15613c11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f436f6c6c61746572616c20726174696f206d757374206265203000000000000060448201526064016107fc565b43841015613ca1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90613d949084908890889060040161588b565b602060405180830381865afa158015613db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dd5919061596d565b613e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6013546040517f14da4ee1000000000000000000000000000000000000000000000000000000008152600481018890526024810189905273ffffffffffffffffffffffffffffffffffffffff909116906314da4ee190604401602060405180830381865afa158015613ed7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613efb9190615829565b9150620f4240600554620f4240613f129190615812565b613f1c9084615afd565b613f269190615ac2565b9150620f424060055483613f3a9190615afd565b613f449190615ac2565b60126000828254613f5591906157fa565b9091555050600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820189905273ffffffffffffffffffffffffffffffffffffffff169063a8a778ae90604401600060405180830381600087803b158015613fcd57600080fd5b505af1158015613fe1573d6000803e3d6000fd5b50506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810186905273ffffffffffffffffffffffffffffffffffffffff909116925063b4f56b269150604401600060405180830381600087803b15801561405757600080fd5b505af115801561406b573d6000803e3d6000fd5b505050505095945050505050565b60008181526020819052604081206127f090614f31565b6000828152602081905260409020600201546140ac90336127f6565b61180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b650000000000000000000000000000000060648201526084016107fc565b6141627fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c3857336127f6565b61416b57600080fd5b6013805460ff750100000000000000000000000000000000000000000080830482161581027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f5860c5063a65e23cea4e2e2925f1a841bb6d1bc9615bd425f8dd084980b0514193611af49390049091161515815260200190565b61421e7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336127f6565b614284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f504f4f4c3a3a796f7520617265206e6f7420747275737479000000000000000060448201526064016107fc565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af11580156142f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e1919061596d565b6013547501000000000000000000000000000000000000000000900460ff16156143a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015614413573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144379190615829565b9050620f42408110801561444b5750600081115b6144fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20436f6c6c6160448201527f746572616c20726174696f206e6565647320746f206265206265747765656e2060648201527f2e30303030303120616e64202e39393939393900000000000000000000000000608482015260a4016107fc565b4384101561458d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4445493a3a72656465656d4672616374696f6e616c4445493a207369676e617460448201527f757265206973206578706972656400000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018c90529390941b909316605484015260688301889052608883018790524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906146669084908890889060cc0161588b565b602060405180830381865afa158015614683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146a7919061596d565b614733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20696e76616c60448201527f6964207369676e6174757265730000000000000000000000000000000000000060648201526084016107fc565b60008060008990506000620f4240600654620f42406147529190615812565b61475c908e615afd565b6147669190615ac2565b90506000620f42406147788884615afd565b6147829190615ac2565b61478c9083615812565b90508a61479c620f424083615afd565b6147a69190615ac2565b945060006147d57f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6147df9084615ac2565b90506000620f42406147f18a84615afd565b6147fb9190615ac2565b90508461480b620f424083615afd565b6148159190615ac2565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015292985090965073ffffffffffffffffffffffffffffffffffffffff1694506370a08231935060240191506148789050565b602060405180830381865afa158015614895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148b99190615829565b6148c39190615812565b81111561492c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a60205260409020546149479082906157fa565b336000908152600a6020526040902055600b546149659082906157fa565b600b55336000908152600960205260409020546149839083906157fa565b33600090815260096020526040902055600c546149a19083906157fa565b600c55336000908152600d60205260409020439055600654620f4240906149c8908c615afd565b6149d29190615ac2565b601260008282546149e391906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018c905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015614a5a57600080fd5b505af1158015614a6e573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820186905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401612edc565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16614f3b565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691614b999190615d65565b6000604051808303816000865af19150503d8060008114614bd6576040519150601f19603f3d011682016040523d82523d6000602084013e614bdb565b606091505b5091509150818015614c05575080511580614c05575080806020019051810190614c05919061596d565b614c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016107fc565b5050505050565b6000828152602081905260409020614c8a9082614ad0565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691614d779190615d65565b6000604051808303816000865af19150503d8060008114614db4576040519150601f19603f3d011682016040523d82523d6000602084013e614db9565b606091505b5091509150818015614de3575080511580614de3575080806020019051810190614de3919061596d565b614e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016107fc565b505050505050565b6000828152602081905260409020614e8e9082614f8a565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000614ee88383614fbc565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156127ed565b60006127f0825490565b6000818152600183016020526040812054614f82575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556127f0565b5060006127f0565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16615077565b8154600090821061504f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f647300000000000000000000000000000000000000000000000000000000000060648201526084016107fc565b82600001828154811061506457615064615d36565b9060005260206000200154905092915050565b6000818152600183016020526040812054801561516057600061509b600183615812565b85549091506000906150af90600190615812565b905060008660000182815481106150c8576150c8615d36565b90600052602060002001549050808760000184815481106150eb576150eb615d36565b6000918252602090912001556151028360016157fa565b6000828152600189016020526040902055865487908061512457615124615d81565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506127f0565b60009150506127f0565b803573ffffffffffffffffffffffffffffffffffffffff8116811461518e57600080fd5b919050565b6000602082840312156151a557600080fd5b6127ed8261516a565b6000602082840312156151c057600080fd5b5035919050565b60008083601f8401126151d957600080fd5b50813567ffffffffffffffff8111156151f157600080fd5b6020830191508360208260051b850101111561520c57600080fd5b9250929050565b60008060008060006080868803121561522b57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561525757600080fd5b615263888289016151c7565b969995985093965092949392505050565b6000806040838503121561528757600080fd5b823591506152976020840161516a565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff811182821017156152f2576152f26152a0565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561533f5761533f6152a0565b604052919050565b600067ffffffffffffffff821115615361576153616152a0565b5060051b60200190565b600082601f83011261537c57600080fd5b8135602061539161538c83615347565b6152f8565b82815260059290921b840181019181810190868411156153b057600080fd5b8286015b848110156153cb57803583529183019183016153b4565b509695505050505050565b6000602082840312156153e857600080fd5b813567ffffffffffffffff8111156153ff57600080fd5b61540b8482850161536b565b949350505050565b600080600080600080600060e0888a03121561542e57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080600080600080600060c0888a03121561547a57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a088013567ffffffffffffffff8111156154b457600080fd5b6154c08a828b016151c7565b989b979a50959850939692959293505050565b600080604083850312156154e657600080fd5b50508035926020909101359150565b6000601f838184011261550757600080fd5b8235602061551761538c83615347565b82815260059290921b8501810191818101908784111561553657600080fd5b8287015b848110156155eb57803567ffffffffffffffff8082111561555b5760008081fd5b818a0191508a603f8301126155705760008081fd5b85820135604082821115615586576155866152a0565b6155b5887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c850116016152f8565b92508183528c818386010111156155cc5760008081fd5b818185018985013750600090820187015284525091830191830161553a565b50979650505050505050565b60006020828403121561560957600080fd5b813567ffffffffffffffff8082111561562157600080fd5b9083019060c0828603121561563557600080fd5b61563d6152cf565b823581526020830135602082015260408301358281111561565d57600080fd5b6156698782860161536b565b604083015250606083013560608201526080830135608082015260a08301358281111561569557600080fd5b6156a1878286016154f5565b60a08301525095945050505050565b60008060008060008060a087890312156156c957600080fd5b86359550602087013567ffffffffffffffff808211156156e857600080fd5b6156f48a838b0161536b565b96506040890135955060608901359450608089013591508082111561571857600080fd5b5061572589828a016151c7565b979a9699509497509295939492505050565b60008060006060848603121561574c57600080fd5b6157558461516a565b92506020840135915061576a6040850161516a565b90509250925092565b60008060008060008060a0878903121561578c57600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff8111156157bf57600080fd5b61572589828a016151c7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561580d5761580d6157cb565b500190565b600082821015615824576158246157cb565b500390565b60006020828403121561583b57600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b8781101561595f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18a360301811261591657600080fd5b8901803567ffffffffffffffff81111561592f57600080fd5b8036038b131561593e57600080fd5b61594b8782888501615842565b9650505091830191908301906001016158b5565b509298975050505050505050565b60006020828403121561597f57600080fd5b8151801515811461598f57600080fd5b9392505050565b600181815b808511156159ef57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156159d5576159d56157cb565b808516156159e257918102915b93841c939080029061599b565b509250929050565b600082615a06575060016127f0565b81615a13575060006127f0565b8160018114615a295760028114615a3357615a4f565b60019150506127f0565b60ff841115615a4457615a446157cb565b50506001821b6127f0565b5060208310610133831016604e8410600b8410161715615a72575081810a6127f0565b615a7c8383615996565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615aae57615aae6157cb565b029392505050565b60006127ed83836159f7565b600082615af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615b3557615b356157cb565b500290565b6020808252825182820181905260009190848201906040850190845b81811015615b7257835183529284019291840191600101615b56565b50909695505050505050565b81518152602080830151908201526040808301519082015260608083015190820152608081016127f0565b60008060408385031215615bbc57600080fd5b505080516020909101519092909150565b60007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808960601b1683526014830188516020808b0160005b83811015615c2257815185529382019390820190600101615c06565b5050505060609790971b168652505060148401929092526034830152605482015260740192915050565b60005b83811015615c67578181015183820152602001615c4f565b838111156108e15750506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015615d28577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088870301845281518051808852615ceb81888a01898501615c4c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01696909601850195509284019290840190600101615ca6565b509398975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008251615d77818460208701615c4c565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212208bd28fcfbed5a24578c595e017ee34784a20bfadc993a68f08b4cf792d075a2c64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061032b5760003560e01c80637901330b116101b2578063b235d468116100f9578063ca15c873116100a2578063daa504851161007c578063daa50485146106f7578063e3d84d5e146106ff578063eb2d746114610712578063fede5c9c1461072557600080fd5b8063ca15c873146106c8578063cb73999f146106db578063d547741f146106e457600080fd5b8063c410ca1b116100d3578063c410ca1b14610699578063c6301e5d146106ac578063c74ec56a146106bf57600080fd5b8063b235d46814610657578063b6258aaa1461067d578063c3355b8d1461069057600080fd5b80639010d07c1161015b578063978b73b511610135578063978b73b51461061c578063a217fddf1461062f578063abae2c4c1461063757600080fd5b80639010d07c146105e357806391d14854146105f6578063928d2b311461060957600080fd5b80637e4831d31161018c5780637e4831d31461058d5780637f877f85146105b257806388d19f1b146105da57600080fd5b80637901330b146105695780637b0461e91461057c5780637d55094d1461058557600080fd5b806340e14b7811610276578063564b81ef1161021f5780636d2c5615116101f95780636d2c5615146104c65780636d82e314146104fd57806374347c441461052457600080fd5b8063564b81ef146104905780635de207cc146104965780636526a12a146104bd57600080fd5b80634ebbe762116102505780634ebbe7621461046257806350c9ecd91461047557806354f9769d1461047d57600080fd5b806340e14b781461043e57806342d15aec146104515780634c6349341461045957600080fd5b80632f2ff15d116102d85780633648b7dc116102b25780633648b7dc1461040257806336568abe1461040b5780633b92da471461041e57600080fd5b80632f2ff15d146103b557806332ad1ee4146103c857806334ddb95d146103db57600080fd5b806315128425116103095780631512842514610376578063248a9ca31461037f578063254cd2bd146103a257600080fd5b806308a7493d14610330578063101197c71461036357806312ace5a21461036c575b600080fd5b61035061033e366004615193565b600a6020526000908152604090205481565b6040519081526020015b60405180910390f35b61035060075481565b61037461072e565b005b61035060115481565b61035061038d3660046151ae565b60009081526020819052604090206002015490565b6103746103b0366004615213565b6108e7565b6103746103c3366004615274565b610fde565b6103506103d6366004615213565b611094565b6103507f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610350600c5481565b610374610419366004615274565b61176a565b61035061042c366004615193565b60096020526000908152604090205481565b61035061044c3660046153d6565b611819565b610374611a37565b61035060105481565b610374610470366004615413565b611afe565b610374611c3d565b61035061048b36600461545f565b611cfb565b46610350565b6103507fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f24050981565b610350600e5481565b6013546104ed90760100000000000000000000000000000000000000000000900460ff1681565b604051901515815260200161035a565b6103507f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e53081565b6014546105449073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161035a565b610374610577366004615274565b612586565b610350600b5481565b61037461271a565b6013546104ed9074010000000000000000000000000000000000000000900460ff1681565b6013546104ed9077010000000000000000000000000000000000000000000000900460ff1681565b61035060125481565b6105446105f13660046154d3565b6127d5565b6104ed610604366004615274565b6127f6565b6103746106173660046155f7565b61280e565b61037461062a366004615213565b612f1a565b610350600081565b610350610645366004615193565b600d6020526000908152604090205481565b6013546104ed907501000000000000000000000000000000000000000000900460ff1681565b61035061068b3660046151ae565b6134bd565b61035060055481565b6103746106a73660046156b0565b6135ac565b6103506106ba366004615213565b613a91565b610350600f5481565b6103506106d63660046151ae565b614079565b61035060065481565b6103746106f2366004615274565b614090565b610374614138565b61037461070d366004615737565b6141f4565b610374610720366004615773565b61431d565b61035060085481565b601154336000908152600d6020526040902054439161074c916157fa565b1115610805576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605b60248201527f504f4f4c3a3a636f6c6c656374526564656d7074696f6e3a204d75737420776160448201527f697420666f7220726564656d7074696f6e5f64656c617920626c6f636b73206260648201527f65666f726520636f6c6c656374696e6720726564656d7074696f6e0000000000608482015260a4015b60405180910390fd5b336000908152600960205260408120548190819081901561084d573360009081526009602052604081208054919055600c54909250610845908390615812565b600c55600193505b336000908152600a60205260409020541561088d5750336000908152600a602052604081208054919055600b54610885908290615812565b600b55600192505b83156108b7576004546108b79073ffffffffffffffffffffffffffffffffffffffff163384614b02565b82156108e1576001546108e19073ffffffffffffffffffffffffffffffffffffffff163383614b02565b50505050565b6013547501000000000000000000000000000000000000000000900460ff161561096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa1580156109df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a039190615829565b14610a6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203d3d203100000060448201526064016107fc565b43831015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90610bed9084908790879060040161588b565b602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e919061596d565b610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a72656465656d3174314445493a20696e76616c6964207369676e60448201527f617475726573000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000610ce77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b610cf19088615ac2565b6013546040517f068d54aa000000000000000000000000000000000000000000000000000000008152600481018990526024810183905291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063068d54aa90604401602060405180830381865afa158015610d6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d919190615829565b9050620f4240600654620f4240610da89190615812565b610db29083615afd565b610dbc9190615ac2565b600b546001546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152929350909173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e569190615829565b610e609190615812565b811115610ec9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a6020526040902054610ee49082906157fa565b336000908152600a6020526040902055600b54610f029082906157fa565b600b55336000908152600d60205260409020439055600654620f424090610f29908a615afd565b610f339190615ac2565b60126000828254610f4491906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae906044015b600060405180830381600087803b158015610fbc57600080fd5b505af1158015610fd0573d6000803e3d6000fd5b505050505050505050505050565b600082815260208190526040902060020154610ffa90336127f6565b611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084016107fc565b6110908282614c72565b5050565b60135460009074010000000000000000000000000000000000000000900460ff161561111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa15801561118e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b29190615829565b101561121a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203e3d203100000060448201526064016107fc565b600e54600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015289929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561128f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b39190615829565b6112bd9190615812565b6112c791906157fa565b111561132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5b506f6f6c277320436c6f7365645d3a204365696c696e67207265616368656460448201526064016107fc565b438410156113bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a6d696e743174314445493a207369676e6174757265206973206560448201527f787069726564000000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906114b29084908890889060040161588b565b602060405180830381865afa1580156114cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f3919061596d565b61157e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6d696e743174314445493a20696e76616c6964207369676e617460448201527f757265730000000000000000000000000000000000000000000000000000000060648201526084016107fc565b60006115ab7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6115b59089615afd565b6013546040517f882ab63a000000000000000000000000000000000000000000000000000000008152600481018a90526024810183905291925073ffffffffffffffffffffffffffffffffffffffff169063882ab63a90604401602060405180830381865afa15801561162c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116509190615829565b9250620f4240600554620f42406116679190615812565b6116719085615afd565b61167b9190615ac2565b6001549093506116a39073ffffffffffffffffffffffffffffffffffffffff1633308b614cd8565b620f4240600554846116b59190615afd565b6116bf9190615ac2565b601260008282546116d091906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561174757600080fd5b505af115801561175b573d6000803e3d6000fd5b50505050505095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016107fc565b6110908282614e76565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ad9190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561191e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119429190615829565b6003546040517f2480fcea00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690632480fcea9061199e908890600401615b3a565b602060405180830381865afa1580156119bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119df9190615829565b9050620f42408211156119f357620f424091505b6000620f4240611a038486615afd565b611a0d9190615ac2565b905080821115611a2b57611a218183615812565b9695505050505050565b50600095945050505050565b611a617f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f336127f6565b611a6a57600080fd5b6013805460ff76010000000000000000000000000000000000000000000080830482161581027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f2fda313d9b5bb0b73bd003153f2fccbc0dca49791fdd1184dfad82b44f54bd2e93611af49390049091161515815260200190565b60405180910390a1565b611b287fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f240509336127f6565b611bb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f504f4f4c3a2043616c6c6572206973206e6f7420504152414d455445525f534560448201527f545445525f524f4c45000000000000000000000000000000000000000000000060648201526084016107fc565b600e8790556010869055601185905560058490556006839055600782905560088190556040805188815260208101889052908101869052606081018590526080810184905260a0810183905260c081018290527f17fe98b66d27bd793ea01bd8a23a54acab8eeb167d9eb016a0c7cd71c573920c9060e00160405180910390a150505050505050565b611c677f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf336127f6565b611c7057600080fd5b6013805460ff7701000000000000000000000000000000000000000000000080830482161581027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f4f40fd1c59f78d7a2220da638cd9400daba01e57c7965702f390bf13133cc31f93611af49390049091161515815260200190565b60135460009074010000000000000000000000000000000000000000900460ff1615611d83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015611df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e179190615829565b9050620f424081108015611e2b5750600081115b611eb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f436f6c6c61746572616c20726174696f206e6565647320746f2062652062657460448201527f7765656e202e30303030303120616e64202e393939393939000000000000000060648201526084016107fc565b600e54600b546001546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528c929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f509190615829565b611f5a9190615812565b611f6491906157fa565b1115612019576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f506f6f6c206365696c696e6720726561636865642c206e6f206d6f7265204445908201527f492063616e206265206d696e7465642077697468207468697320636f6c6c617460648201527f6572616c00000000000000000000000000000000000000000000000000000000608482015260a4016107fc565b438510156120a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a207369676e61747560448201527f726520697320657870697265642e00000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018d90529390941b909316605484015260688301899052608883018890524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906121829084908990899060cc0161588b565b602060405180830381865afa15801561219f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c3919061596d565b61224f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a20696e76616c696460448201527f207369676e61747572657300000000000000000000000000000000000000000060648201526084016107fc565b61227a6040518060800160405280600081526020016000815260200160008152602001600081525090565b60006122a77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6122b1908d615afd565b604080516080810182528b8152602081018d9052808201929092526060820186905260135490517f537a30a70000000000000000000000000000000000000000000000000000000081529193506000925073ffffffffffffffffffffffffffffffffffffffff169063537a30a79061232d908590600401615b7e565b6040805180830381865afa158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190615ba9565b90955090508a8111156123dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e6f7420656e6f756768204445555320696e707574746564000000000000000060448201526064016107fc565b620f4240600554620f42406123f19190615812565b6123fb9087615afd565b6124059190615ac2565b600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820184905291965073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561247d57600080fd5b505af1158015612491573d6000803e3d6000fd5b50506001546124bb925073ffffffffffffffffffffffffffffffffffffffff16905033308f614cd8565b620f4240600554866124cd9190615afd565b6124d79190615ac2565b601260008282546124e891906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810187905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561255f57600080fd5b505af1158015612573573d6000803e3d6000fd5b5050505050505050979650505050505050565b6125b07f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e530336127f6565b6125b957600080fd5b601254821115612625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f616d6f756e743c3d64616f53686172650000000000000000000000000000000060448201526064016107fc565b6003546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018590529091169063b4f56b2690604401600060405180830381600087803b15801561269957600080fd5b505af11580156126ad573d6000803e3d6000fd5b5050505081601260008282546126c39190615812565b90915550506040805183815273ffffffffffffffffffffffffffffffffffffffff831660208201527f3a708f2f1c75b12457d207cf1e259ab9f87bbfccb29672903acf4661bd342e49910160405180910390a15050565b6127447fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b336127f6565b61274d57600080fd5b6013805460ff7401000000000000000000000000000000000000000080830482161581027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f6bdfe227d5db299c59aa56d5f846f40dbd73b271aaa78e18ed74fc3e00b8aa6b93611af49390049091161515815260200190565b60008281526020819052604081206127ed9083614edc565b90505b92915050565b60008281526020819052604081206127ed9083614ef2565b601354760100000000000000000000000000000000000000000000900460ff16156128bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a205265636f6c6c60448201527f61746572616c697a65206973207061757365640000000000000000000000000060648201526084016107fc565b438160800151101561294f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b6002546040828101516004546060850151608086015193516000956129989573ffffffffffffffffffffffffffffffffffffffff91821695949190911692914690602001615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052805160209091012060035460a08501517f6793f0ac00000000000000000000000000000000000000000000000000000000845291935073ffffffffffffffffffffffffffffffffffffffff1691636793f0ac91612a2991859190600401615c78565b602060405180830381865afa158015612a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6a919061596d565b612af6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6000612b237f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b8351612b2f9190615afd565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc49190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c599190615829565b60035460408088015190517f2480fcea00000000000000000000000000000000000000000000000000000000815292935060009273ffffffffffffffffffffffffffffffffffffffff90921691632480fcea91612cb891600401615b3a565b602060405180830381865afa158015612cd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf99190615829565b60135460408801518051929350600092839273ffffffffffffffffffffffffffffffffffffffff169163fc01106191899190612d3790600190615812565b81518110612d4757612d47615d36565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015260448101869052606481018890526084810187905260a4016040805180830381865afa158015612dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de39190615ba9565b90925090506000612e157f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b612e1f9084615ac2565b905060008960600151600854601054620f4240612e3c91906157fa565b612e469190615812565b612e509085615afd565b612e5a9190615ac2565b600154909150612e829073ffffffffffffffffffffffffffffffffffffffff16333085614cd8565b600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815233928101929092526024820183905273ffffffffffffffffffffffffffffffffffffffff169063b4f56b26906044015b600060405180830381600087803b158015612ef657600080fd5b505af1158015612f0a573d6000803e3d6000fd5b5050505050505050505050505050565b6013547501000000000000000000000000000000000000000000900460ff1615612fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561300d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130319190615829565b156130be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20436f6c6c60448201527f61746572616c20726174696f206d75737420626520300000000000000000000060648201526084016107fc565b4383101561314e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4445493a3a72656465656d416c676f726974686d69634445493a207369676e6160448201527f7475726520697320657870697265642e0000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906132419084908790879060040161588b565b602060405180830381865afa15801561325e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613282919061596d565b61330e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20696e766160448201527f6c6964207369676e61747572657300000000000000000000000000000000000060648201526084016107fc565b6006548690620f4240906133229082615812565b61332c9083615afd565b6133369190615ac2565b9050600086613348620f424084615afd565b6133529190615ac2565b336000908152600960205260409020549091506133709082906157fa565b33600090815260096020526040902055600c5461338e9082906157fa565b600c55336000908152600d60205260409020439055600654620f4240906133b5908a615afd565b6133bf9190615ac2565b601260008282546133d091906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561344757600080fd5b505af115801561345b573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820185905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401610fa2565b6000620f4240826134ef7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015613560573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135849190615829565b61358e9190615812565b6135989190615afd565b6135a29190615afd565b6127f09190615ac2565b60135477010000000000000000000000000000000000000000000000900460ff1615613659576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6275794261636b444555533a204275796261636b20697320706160448201527f757365640000000000000000000000000000000000000000000000000000000060648201526084016107fc565b438310156136e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4445493a3a6275794261636b444555533a207369676e6174757265206973206560448201527f7870697265642e0000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460045460009173ffffffffffffffffffffffffffffffffffffffff9081169188911687874660405160200161372696959493929190615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906137b59084908790879060040161588b565b602060405180830381865afa1580156137d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f6919061596d565b613882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f504f4f4c3a3a6275794261636b444555533a20696e76616c6964207369676e6160448201527f747572657300000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000604051806080016040528061389889611819565b81526020018781526020018860018a516138b29190615812565b815181106138c2576138c2615d36565b602002602001015181526020018981525090506000620f4240600754620f42406138ec9190615812565b6013546040517f3c04af9f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633c04af9f90613942908790600401615b7e565b602060405180830381865afa15801561395f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139839190615829565b61398d9190615afd565b6139979190615ac2565b905060006139c67f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6139d09083615ac2565b600480546040517fa8a778ae0000000000000000000000000000000000000000000000000000000081523392810192909252602482018d905291925073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015613a4857600080fd5b505af1158015613a5c573d6000803e3d6000fd5b5050600154613a85925073ffffffffffffffffffffffffffffffffffffffff1690503383614b02565b50505050505050505050565b60135460009074010000000000000000000000000000000000000000900460ff1615613b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613baa9190615829565b15613c11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f436f6c6c61746572616c20726174696f206d757374206265203000000000000060448201526064016107fc565b43841015613ca1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90613d949084908890889060040161588b565b602060405180830381865afa158015613db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dd5919061596d565b613e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6013546040517f14da4ee1000000000000000000000000000000000000000000000000000000008152600481018890526024810189905273ffffffffffffffffffffffffffffffffffffffff909116906314da4ee190604401602060405180830381865afa158015613ed7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613efb9190615829565b9150620f4240600554620f4240613f129190615812565b613f1c9084615afd565b613f269190615ac2565b9150620f424060055483613f3a9190615afd565b613f449190615ac2565b60126000828254613f5591906157fa565b9091555050600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820189905273ffffffffffffffffffffffffffffffffffffffff169063a8a778ae90604401600060405180830381600087803b158015613fcd57600080fd5b505af1158015613fe1573d6000803e3d6000fd5b50506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810186905273ffffffffffffffffffffffffffffffffffffffff909116925063b4f56b269150604401600060405180830381600087803b15801561405757600080fd5b505af115801561406b573d6000803e3d6000fd5b505050505095945050505050565b60008181526020819052604081206127f090614f31565b6000828152602081905260409020600201546140ac90336127f6565b61180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b650000000000000000000000000000000060648201526084016107fc565b6141627fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c3857336127f6565b61416b57600080fd5b6013805460ff750100000000000000000000000000000000000000000080830482161581027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f5860c5063a65e23cea4e2e2925f1a841bb6d1bc9615bd425f8dd084980b0514193611af49390049091161515815260200190565b61421e7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336127f6565b614284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f504f4f4c3a3a796f7520617265206e6f7420747275737479000000000000000060448201526064016107fc565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af11580156142f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e1919061596d565b6013547501000000000000000000000000000000000000000000900460ff16156143a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015614413573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144379190615829565b9050620f42408110801561444b5750600081115b6144fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20436f6c6c6160448201527f746572616c20726174696f206e6565647320746f206265206265747765656e2060648201527f2e30303030303120616e64202e39393939393900000000000000000000000000608482015260a4016107fc565b4384101561458d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4445493a3a72656465656d4672616374696f6e616c4445493a207369676e617460448201527f757265206973206578706972656400000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018c90529390941b909316605484015260688301889052608883018790524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906146669084908890889060cc0161588b565b602060405180830381865afa158015614683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146a7919061596d565b614733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20696e76616c60448201527f6964207369676e6174757265730000000000000000000000000000000000000060648201526084016107fc565b60008060008990506000620f4240600654620f42406147529190615812565b61475c908e615afd565b6147669190615ac2565b90506000620f42406147788884615afd565b6147829190615ac2565b61478c9083615812565b90508a61479c620f424083615afd565b6147a69190615ac2565b945060006147d57f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6147df9084615ac2565b90506000620f42406147f18a84615afd565b6147fb9190615ac2565b90508461480b620f424083615afd565b6148159190615ac2565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015292985090965073ffffffffffffffffffffffffffffffffffffffff1694506370a08231935060240191506148789050565b602060405180830381865afa158015614895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148b99190615829565b6148c39190615812565b81111561492c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a60205260409020546149479082906157fa565b336000908152600a6020526040902055600b546149659082906157fa565b600b55336000908152600960205260409020546149839083906157fa565b33600090815260096020526040902055600c546149a19083906157fa565b600c55336000908152600d60205260409020439055600654620f4240906149c8908c615afd565b6149d29190615ac2565b601260008282546149e391906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018c905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015614a5a57600080fd5b505af1158015614a6e573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820186905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401612edc565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16614f3b565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691614b999190615d65565b6000604051808303816000865af19150503d8060008114614bd6576040519150601f19603f3d011682016040523d82523d6000602084013e614bdb565b606091505b5091509150818015614c05575080511580614c05575080806020019051810190614c05919061596d565b614c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016107fc565b5050505050565b6000828152602081905260409020614c8a9082614ad0565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691614d779190615d65565b6000604051808303816000865af19150503d8060008114614db4576040519150601f19603f3d011682016040523d82523d6000602084013e614db9565b606091505b5091509150818015614de3575080511580614de3575080806020019051810190614de3919061596d565b614e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016107fc565b505050505050565b6000828152602081905260409020614e8e9082614f8a565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000614ee88383614fbc565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156127ed565b60006127f0825490565b6000818152600183016020526040812054614f82575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556127f0565b5060006127f0565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16615077565b8154600090821061504f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f647300000000000000000000000000000000000000000000000000000000000060648201526084016107fc565b82600001828154811061506457615064615d36565b9060005260206000200154905092915050565b6000818152600183016020526040812054801561516057600061509b600183615812565b85549091506000906150af90600190615812565b905060008660000182815481106150c8576150c8615d36565b90600052602060002001549050808760000184815481106150eb576150eb615d36565b6000918252602090912001556151028360016157fa565b6000828152600189016020526040902055865487908061512457615124615d81565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506127f0565b60009150506127f0565b803573ffffffffffffffffffffffffffffffffffffffff8116811461518e57600080fd5b919050565b6000602082840312156151a557600080fd5b6127ed8261516a565b6000602082840312156151c057600080fd5b5035919050565b60008083601f8401126151d957600080fd5b50813567ffffffffffffffff8111156151f157600080fd5b6020830191508360208260051b850101111561520c57600080fd5b9250929050565b60008060008060006080868803121561522b57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561525757600080fd5b615263888289016151c7565b969995985093965092949392505050565b6000806040838503121561528757600080fd5b823591506152976020840161516a565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff811182821017156152f2576152f26152a0565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561533f5761533f6152a0565b604052919050565b600067ffffffffffffffff821115615361576153616152a0565b5060051b60200190565b600082601f83011261537c57600080fd5b8135602061539161538c83615347565b6152f8565b82815260059290921b840181019181810190868411156153b057600080fd5b8286015b848110156153cb57803583529183019183016153b4565b509695505050505050565b6000602082840312156153e857600080fd5b813567ffffffffffffffff8111156153ff57600080fd5b61540b8482850161536b565b949350505050565b600080600080600080600060e0888a03121561542e57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080600080600080600060c0888a03121561547a57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a088013567ffffffffffffffff8111156154b457600080fd5b6154c08a828b016151c7565b989b979a50959850939692959293505050565b600080604083850312156154e657600080fd5b50508035926020909101359150565b6000601f838184011261550757600080fd5b8235602061551761538c83615347565b82815260059290921b8501810191818101908784111561553657600080fd5b8287015b848110156155eb57803567ffffffffffffffff8082111561555b5760008081fd5b818a0191508a603f8301126155705760008081fd5b85820135604082821115615586576155866152a0565b6155b5887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c850116016152f8565b92508183528c818386010111156155cc5760008081fd5b818185018985013750600090820187015284525091830191830161553a565b50979650505050505050565b60006020828403121561560957600080fd5b813567ffffffffffffffff8082111561562157600080fd5b9083019060c0828603121561563557600080fd5b61563d6152cf565b823581526020830135602082015260408301358281111561565d57600080fd5b6156698782860161536b565b604083015250606083013560608201526080830135608082015260a08301358281111561569557600080fd5b6156a1878286016154f5565b60a08301525095945050505050565b60008060008060008060a087890312156156c957600080fd5b86359550602087013567ffffffffffffffff808211156156e857600080fd5b6156f48a838b0161536b565b96506040890135955060608901359450608089013591508082111561571857600080fd5b5061572589828a016151c7565b979a9699509497509295939492505050565b60008060006060848603121561574c57600080fd5b6157558461516a565b92506020840135915061576a6040850161516a565b90509250925092565b60008060008060008060a0878903121561578c57600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff8111156157bf57600080fd5b61572589828a016151c7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561580d5761580d6157cb565b500190565b600082821015615824576158246157cb565b500390565b60006020828403121561583b57600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b8781101561595f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18a360301811261591657600080fd5b8901803567ffffffffffffffff81111561592f57600080fd5b8036038b131561593e57600080fd5b61594b8782888501615842565b9650505091830191908301906001016158b5565b509298975050505050505050565b60006020828403121561597f57600080fd5b8151801515811461598f57600080fd5b9392505050565b600181815b808511156159ef57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156159d5576159d56157cb565b808516156159e257918102915b93841c939080029061599b565b509250929050565b600082615a06575060016127f0565b81615a13575060006127f0565b8160018114615a295760028114615a3357615a4f565b60019150506127f0565b60ff841115615a4457615a446157cb565b50506001821b6127f0565b5060208310610133831016604e8410600b8410161715615a72575081810a6127f0565b615a7c8383615996565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615aae57615aae6157cb565b029392505050565b60006127ed83836159f7565b600082615af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615b3557615b356157cb565b500290565b6020808252825182820181905260009190848201906040850190845b81811015615b7257835183529284019291840191600101615b56565b50909695505050505050565b81518152602080830151908201526040808301519082015260608083015190820152608081016127f0565b60008060408385031215615bbc57600080fd5b505080516020909101519092909150565b60007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808960601b1683526014830188516020808b0160005b83811015615c2257815185529382019390820190600101615c06565b5050505060609790971b168652505060148401929092526034830152605482015260740192915050565b60005b83811015615c67578181015183820152602001615c4f565b838111156108e15750506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015615d28577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088870301845281518051808852615ceb81888a01898501615c4c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01696909601850195509284019290840190600101615ca6565b509398975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008251615d77818460208701615c4c565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212208bd28fcfbed5a24578c595e017ee34784a20bfadc993a68f08b4cf792d075a2c64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/DEI/Pools/Pool_USDC.sol/Pool_USDC.dbg.json b/artifacts/contracts/DEI/Pools/Pool_USDC.sol/Pool_USDC.dbg.json new file mode 100644 index 00000000..b4959490 --- /dev/null +++ b/artifacts/contracts/DEI/Pools/Pool_USDC.sol/Pool_USDC.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/DEI/Pools/Pool_USDC.sol/Pool_USDC.json b/artifacts/contracts/DEI/Pools/Pool_USDC.sol/Pool_USDC.json new file mode 100644 index 00000000..f9f21072 --- /dev/null +++ b/artifacts/contracts/DEI/Pools/Pool_USDC.sol/Pool_USDC.json @@ -0,0 +1,1153 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Pool_USDC", + "sourceName": "contracts/DEI/Pools/Pool_USDC.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_dei_contract_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_deus_contract_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_collateral_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_trusty_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_admin_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_pool_ceiling", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_library", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "BuybackToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "MintingToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "new_ceiling", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_bonus_rate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_redemption_delay", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_mint_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_redeem_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_buyback_fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "new_recollat_fee", + "type": "uint256" + } + ], + "name": "PoolParametersSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "RecollateralizeToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "toggled", + "type": "bool" + } + ], + "name": "RedeemingToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "daoShare", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "daoShareCollected", + "type": "event" + }, + { + "inputs": [], + "name": "DAO_SHARE_COLLECTOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PARAMETER_SETTER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TRUSTY_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "USDC_address", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "collat_usd_price", + "type": "uint256[]" + } + ], + "name": "availableExcessCollatDV", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bonus_rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEUS_amount", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "collateral_price", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "buyBackDEUS", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "buyBackPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "buyback_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collat_usd_price", + "type": "uint256" + } + ], + "name": "collatDollarBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "collectDaoShare", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "collectRedemption", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "daoShare", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "emergencyWithdrawERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getChainID", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "lastRedeemed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mint1t1DEI", + "outputs": [ + { + "internalType": "uint256", + "name": "dei_amount_d18", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deus_amount_d18", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mintAlgorithmicDEI", + "outputs": [ + { + "internalType": "uint256", + "name": "dei_amount_d18", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "mintFractionalDEI", + "outputs": [ + { + "internalType": "uint256", + "name": "mint_amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "mintPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minting_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pausedPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pool_ceiling", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "recollat_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "collateral_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "pool_collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "collateral_price", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "internalType": "struct DEIPool.RecollateralizeDEI", + "name": "inputs", + "type": "tuple" + } + ], + "name": "recollateralizeDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "recollateralizePaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeem1t1DEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeemAlgorithmicDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "redeemCollateralBalances", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "redeemDEUSBalances", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "DEI_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateral_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deus_current_price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expireBlock", + "type": "uint256" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "redeemFractionalDEI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "redeemPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "redemption_delay", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "redemption_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "new_ceiling", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_bonus_rate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_redemption_delay", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_mint_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_redeem_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_buyback_fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "new_recollat_fee", + "type": "uint256" + } + ], + "name": "setPoolParameters", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleBuyBack", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleMinting", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleRecollateralize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleRedeeming", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unclaimedPoolCollateral", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unclaimedPoolDEUS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a06040526000600e819055600f819055611d4c60105560026011556012556013805463ffffffff60a01b191690553480156200003b57600080fd5b50604051620063c5380380620063c58339810160408190526200005e91620004b4565b868686868686866001600160a01b038716158015906200008657506001600160a01b03861615155b80156200009b57506001600160a01b03851615155b8015620000b057506001600160a01b03841615155b8015620000c557506001600160a01b03831615155b8015620000da57506001600160a01b03811615155b6200012c5760405162461bcd60e51b815260206004820152601b60248201527f504f4f4c3a3a5a65726f2061646472657373206465746563746564000000000060448201526064015b60405180910390fd5b601380546001600160a01b038084166001600160a01b031992831617909255600380548a8416908316179055600480548984169083161781556002805493891693831684179055600180549092168317909155600e8490556040805163313ce56760e01b8152905163313ce567928281019260209291908290030181865afa158015620001bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e3919062000540565b620001f39060ff1660126200056c565b60805262000203600084620003a9565b6200022f7fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b85620003a9565b6200025b7fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c385785620003a9565b620002877f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f85620003a9565b620002b37f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf85620003a9565b620002df7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c85620003a9565b6200030b7fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f24050985620003a9565b50505050506001600160a01b038716151591506200036e90505760405162461bcd60e51b815260206004820152601560248201527f5a65726f20616464726573732064657465637465640000000000000000000000604482015260640162000123565b6200037b600033620003a9565b5050601480546001600160a01b0319166001600160a01b039490941693909317909255506200059292505050565b620003b58282620003b9565b5050565b600082815260208181526040909120620003de91839062004ad062000420821b17901c565b15620003b55760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b60006200043c836001600160601b0319606085901b1662000445565b90505b92915050565b60008181526001830160205260408120546200048e575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200043f565b5060006200043f565b80516001600160a01b0381168114620004af57600080fd5b919050565b600080600080600080600060e0888a031215620004d057600080fd5b620004db8862000497565b9650620004eb6020890162000497565b9550620004fb6040890162000497565b94506200050b6060890162000497565b93506200051b6080890162000497565b925060a088015191506200053260c0890162000497565b905092959891949750929550565b6000602082840312156200055357600080fd5b815160ff811681146200056557600080fd5b9392505050565b6000828210156200058d57634e487b7160e01b600052601160045260246000fd5b500390565b608051615de6620005df60003960008181610cc1015281816115850152818161228101528181612afd01528181612def015281816134c9015281816139a001526147af0152615de66000f3fe608060405234801561001057600080fd5b506004361061032b5760003560e01c80637b0461e9116101b2578063b6258aaa116100f9578063cb73999f116100a2578063e3d84d5e1161007c578063e3d84d5e146106df578063eb2d7461146106f2578063f9abd26c14610705578063fede5c9c1461072557600080fd5b8063cb73999f146106bb578063d547741f146106c4578063daa50485146106d757600080fd5b8063c6301e5d116100d3578063c6301e5d1461068c578063c74ec56a1461069f578063ca15c873146106a857600080fd5b8063b6258aaa1461065d578063c3355b8d14610670578063c410ca1b1461067957600080fd5b806391d148541161015b578063a217fddf11610135578063a217fddf1461060f578063abae2c4c14610617578063b235d4681461063757600080fd5b806391d14854146105d6578063928d2b31146105e9578063978b73b5146105fc57600080fd5b80637f877f851161018c5780637f877f851461056d57806388d19f1b146105955780639010d07c1461059e57600080fd5b80637b0461e9146105375780637d55094d146105405780637e4831d31461054857600080fd5b806340e14b7811610276578063564b81ef1161021f5780636d2c5615116101f95780636d2c5615146104c65780636d82e314146104fd5780637901330b1461052457600080fd5b8063564b81ef146104905780635de207cc146104965780636526a12a146104bd57600080fd5b80634ebbe762116102505780634ebbe7621461046257806350c9ecd91461047557806354f9769d1461047d57600080fd5b806340e14b781461043e57806342d15aec146104515780634c6349341461045957600080fd5b80632f2ff15d116102d85780633648b7dc116102b25780633648b7dc1461040257806336568abe1461040b5780633b92da471461041e57600080fd5b80632f2ff15d146103b557806332ad1ee4146103c857806334ddb95d146103db57600080fd5b806315128425116103095780631512842514610376578063248a9ca31461037f578063254cd2bd146103a257600080fd5b806308a7493d14610330578063101197c71461036357806312ace5a21461036c575b600080fd5b61035061033e366004615193565b600a6020526000908152604090205481565b6040519081526020015b60405180910390f35b61035060075481565b61037461072e565b005b61035060115481565b61035061038d3660046151ae565b60009081526020819052604090206002015490565b6103746103b0366004615213565b6108e7565b6103746103c3366004615274565b610fde565b6103506103d6366004615213565b611094565b6103507f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610350600c5481565b610374610419366004615274565b61176a565b61035061042c366004615193565b60096020526000908152604090205481565b61035061044c3660046153d6565b611819565b610374611a37565b61035060105481565b610374610470366004615413565b611afe565b610374611c3d565b61035061048b36600461545f565b611cfb565b46610350565b6103507fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f24050981565b610350600e5481565b6013546104ed90760100000000000000000000000000000000000000000000900460ff1681565b604051901515815260200161035a565b6103507f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e53081565b610374610532366004615274565b612586565b610350600b5481565b61037461271a565b6013546104ed9074010000000000000000000000000000000000000000900460ff1681565b6013546104ed9077010000000000000000000000000000000000000000000000900460ff1681565b61035060125481565b6105b16105ac3660046154d3565b6127d5565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161035a565b6104ed6105e4366004615274565b6127f6565b6103746105f73660046155f7565b61280e565b61037461060a366004615213565b612f1a565b610350600081565b610350610625366004615193565b600d6020526000908152604090205481565b6013546104ed907501000000000000000000000000000000000000000000900460ff1681565b61035061066b3660046151ae565b6134bd565b61035060055481565b6103746106873660046156b0565b6135ac565b61035061069a366004615213565b613a91565b610350600f5481565b6103506106b63660046151ae565b614079565b61035060065481565b6103746106d2366004615274565b614090565b610374614138565b6103746106ed366004615737565b6141f4565b610374610700366004615773565b61431d565b6014546105b19073ffffffffffffffffffffffffffffffffffffffff1681565b61035060085481565b601154336000908152600d6020526040902054439161074c916157fa565b1115610805576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605b60248201527f504f4f4c3a3a636f6c6c656374526564656d7074696f6e3a204d75737420776160448201527f697420666f7220726564656d7074696f6e5f64656c617920626c6f636b73206260648201527f65666f726520636f6c6c656374696e6720726564656d7074696f6e0000000000608482015260a4015b60405180910390fd5b336000908152600960205260408120548190819081901561084d573360009081526009602052604081208054919055600c54909250610845908390615812565b600c55600193505b336000908152600a60205260409020541561088d5750336000908152600a602052604081208054919055600b54610885908290615812565b600b55600192505b83156108b7576004546108b79073ffffffffffffffffffffffffffffffffffffffff163384614b02565b82156108e1576001546108e19073ffffffffffffffffffffffffffffffffffffffff163383614b02565b50505050565b6013547501000000000000000000000000000000000000000000900460ff161561096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa1580156109df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a039190615829565b14610a6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203d3d203100000060448201526064016107fc565b43831015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90610bed9084908790879060040161588b565b602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e919061596d565b610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a72656465656d3174314445493a20696e76616c6964207369676e60448201527f617475726573000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000610ce77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b610cf19088615ac2565b6013546040517f068d54aa000000000000000000000000000000000000000000000000000000008152600481018990526024810183905291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063068d54aa90604401602060405180830381865afa158015610d6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d919190615829565b9050620f4240600654620f4240610da89190615812565b610db29083615afd565b610dbc9190615ac2565b600b546001546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152929350909173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e569190615829565b610e609190615812565b811115610ec9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a6020526040902054610ee49082906157fa565b336000908152600a6020526040902055600b54610f029082906157fa565b600b55336000908152600d60205260409020439055600654620f424090610f29908a615afd565b610f339190615ac2565b60126000828254610f4491906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae906044015b600060405180830381600087803b158015610fbc57600080fd5b505af1158015610fd0573d6000803e3d6000fd5b505050505050505050505050565b600082815260208190526040902060020154610ffa90336127f6565b611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084016107fc565b6110908282614c72565b5050565b60135460009074010000000000000000000000000000000000000000900460ff161561111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa15801561118e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b29190615829565b101561121a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203e3d203100000060448201526064016107fc565b600e54600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015289929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561128f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b39190615829565b6112bd9190615812565b6112c791906157fa565b111561132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5b506f6f6c277320436c6f7365645d3a204365696c696e67207265616368656460448201526064016107fc565b438410156113bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a6d696e743174314445493a207369676e6174757265206973206560448201527f787069726564000000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906114b29084908890889060040161588b565b602060405180830381865afa1580156114cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f3919061596d565b61157e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6d696e743174314445493a20696e76616c6964207369676e617460448201527f757265730000000000000000000000000000000000000000000000000000000060648201526084016107fc565b60006115ab7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6115b59089615afd565b6013546040517f882ab63a000000000000000000000000000000000000000000000000000000008152600481018a90526024810183905291925073ffffffffffffffffffffffffffffffffffffffff169063882ab63a90604401602060405180830381865afa15801561162c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116509190615829565b9250620f4240600554620f42406116679190615812565b6116719085615afd565b61167b9190615ac2565b6001549093506116a39073ffffffffffffffffffffffffffffffffffffffff1633308b614cd8565b620f4240600554846116b59190615afd565b6116bf9190615ac2565b601260008282546116d091906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561174757600080fd5b505af115801561175b573d6000803e3d6000fd5b50505050505095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016107fc565b6110908282614e76565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ad9190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561191e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119429190615829565b6003546040517f2480fcea00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690632480fcea9061199e908890600401615b3a565b602060405180830381865afa1580156119bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119df9190615829565b9050620f42408211156119f357620f424091505b6000620f4240611a038486615afd565b611a0d9190615ac2565b905080821115611a2b57611a218183615812565b9695505050505050565b50600095945050505050565b611a617f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f336127f6565b611a6a57600080fd5b6013805460ff76010000000000000000000000000000000000000000000080830482161581027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f2fda313d9b5bb0b73bd003153f2fccbc0dca49791fdd1184dfad82b44f54bd2e93611af49390049091161515815260200190565b60405180910390a1565b611b287fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f240509336127f6565b611bb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f504f4f4c3a2043616c6c6572206973206e6f7420504152414d455445525f534560448201527f545445525f524f4c45000000000000000000000000000000000000000000000060648201526084016107fc565b600e8790556010869055601185905560058490556006839055600782905560088190556040805188815260208101889052908101869052606081018590526080810184905260a0810183905260c081018290527f17fe98b66d27bd793ea01bd8a23a54acab8eeb167d9eb016a0c7cd71c573920c9060e00160405180910390a150505050505050565b611c677f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf336127f6565b611c7057600080fd5b6013805460ff7701000000000000000000000000000000000000000000000080830482161581027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f4f40fd1c59f78d7a2220da638cd9400daba01e57c7965702f390bf13133cc31f93611af49390049091161515815260200190565b60135460009074010000000000000000000000000000000000000000900460ff1615611d83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015611df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e179190615829565b9050620f424081108015611e2b5750600081115b611eb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f436f6c6c61746572616c20726174696f206e6565647320746f2062652062657460448201527f7765656e202e30303030303120616e64202e393939393939000000000000000060648201526084016107fc565b600e54600b546001546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528c929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f509190615829565b611f5a9190615812565b611f6491906157fa565b1115612019576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f506f6f6c206365696c696e6720726561636865642c206e6f206d6f7265204445908201527f492063616e206265206d696e7465642077697468207468697320636f6c6c617460648201527f6572616c00000000000000000000000000000000000000000000000000000000608482015260a4016107fc565b438510156120a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a207369676e61747560448201527f726520697320657870697265642e00000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018d90529390941b909316605484015260688301899052608883018890524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906121829084908990899060cc0161588b565b602060405180830381865afa15801561219f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c3919061596d565b61224f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a20696e76616c696460448201527f207369676e61747572657300000000000000000000000000000000000000000060648201526084016107fc565b61227a6040518060800160405280600081526020016000815260200160008152602001600081525090565b60006122a77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6122b1908d615afd565b604080516080810182528b8152602081018d9052808201929092526060820186905260135490517f537a30a70000000000000000000000000000000000000000000000000000000081529193506000925073ffffffffffffffffffffffffffffffffffffffff169063537a30a79061232d908590600401615b7e565b6040805180830381865afa158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190615ba9565b90955090508a8111156123dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e6f7420656e6f756768204445555320696e707574746564000000000000000060448201526064016107fc565b620f4240600554620f42406123f19190615812565b6123fb9087615afd565b6124059190615ac2565b600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820184905291965073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561247d57600080fd5b505af1158015612491573d6000803e3d6000fd5b50506001546124bb925073ffffffffffffffffffffffffffffffffffffffff16905033308f614cd8565b620f4240600554866124cd9190615afd565b6124d79190615ac2565b601260008282546124e891906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810187905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561255f57600080fd5b505af1158015612573573d6000803e3d6000fd5b5050505050505050979650505050505050565b6125b07f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e530336127f6565b6125b957600080fd5b601254821115612625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f616d6f756e743c3d64616f53686172650000000000000000000000000000000060448201526064016107fc565b6003546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018590529091169063b4f56b2690604401600060405180830381600087803b15801561269957600080fd5b505af11580156126ad573d6000803e3d6000fd5b5050505081601260008282546126c39190615812565b90915550506040805183815273ffffffffffffffffffffffffffffffffffffffff831660208201527f3a708f2f1c75b12457d207cf1e259ab9f87bbfccb29672903acf4661bd342e49910160405180910390a15050565b6127447fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b336127f6565b61274d57600080fd5b6013805460ff7401000000000000000000000000000000000000000080830482161581027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f6bdfe227d5db299c59aa56d5f846f40dbd73b271aaa78e18ed74fc3e00b8aa6b93611af49390049091161515815260200190565b60008281526020819052604081206127ed9083614edc565b90505b92915050565b60008281526020819052604081206127ed9083614ef2565b601354760100000000000000000000000000000000000000000000900460ff16156128bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a205265636f6c6c60448201527f61746572616c697a65206973207061757365640000000000000000000000000060648201526084016107fc565b438160800151101561294f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b6002546040828101516004546060850151608086015193516000956129989573ffffffffffffffffffffffffffffffffffffffff91821695949190911692914690602001615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052805160209091012060035460a08501517f6793f0ac00000000000000000000000000000000000000000000000000000000845291935073ffffffffffffffffffffffffffffffffffffffff1691636793f0ac91612a2991859190600401615c78565b602060405180830381865afa158015612a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6a919061596d565b612af6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6000612b237f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b8351612b2f9190615afd565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc49190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c599190615829565b60035460408088015190517f2480fcea00000000000000000000000000000000000000000000000000000000815292935060009273ffffffffffffffffffffffffffffffffffffffff90921691632480fcea91612cb891600401615b3a565b602060405180830381865afa158015612cd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf99190615829565b60135460408801518051929350600092839273ffffffffffffffffffffffffffffffffffffffff169163fc01106191899190612d3790600190615812565b81518110612d4757612d47615d36565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015260448101869052606481018890526084810187905260a4016040805180830381865afa158015612dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de39190615ba9565b90925090506000612e157f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b612e1f9084615ac2565b905060008960600151600854601054620f4240612e3c91906157fa565b612e469190615812565b612e509085615afd565b612e5a9190615ac2565b600154909150612e829073ffffffffffffffffffffffffffffffffffffffff16333085614cd8565b600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815233928101929092526024820183905273ffffffffffffffffffffffffffffffffffffffff169063b4f56b26906044015b600060405180830381600087803b158015612ef657600080fd5b505af1158015612f0a573d6000803e3d6000fd5b5050505050505050505050505050565b6013547501000000000000000000000000000000000000000000900460ff1615612fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561300d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130319190615829565b156130be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20436f6c6c60448201527f61746572616c20726174696f206d75737420626520300000000000000000000060648201526084016107fc565b4383101561314e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4445493a3a72656465656d416c676f726974686d69634445493a207369676e6160448201527f7475726520697320657870697265642e0000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906132419084908790879060040161588b565b602060405180830381865afa15801561325e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613282919061596d565b61330e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20696e766160448201527f6c6964207369676e61747572657300000000000000000000000000000000000060648201526084016107fc565b6006548690620f4240906133229082615812565b61332c9083615afd565b6133369190615ac2565b9050600086613348620f424084615afd565b6133529190615ac2565b336000908152600960205260409020549091506133709082906157fa565b33600090815260096020526040902055600c5461338e9082906157fa565b600c55336000908152600d60205260409020439055600654620f4240906133b5908a615afd565b6133bf9190615ac2565b601260008282546133d091906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561344757600080fd5b505af115801561345b573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820185905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401610fa2565b6000620f4240826134ef7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015613560573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135849190615829565b61358e9190615812565b6135989190615afd565b6135a29190615afd565b6127f09190615ac2565b60135477010000000000000000000000000000000000000000000000900460ff1615613659576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6275794261636b444555533a204275796261636b20697320706160448201527f757365640000000000000000000000000000000000000000000000000000000060648201526084016107fc565b438310156136e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4445493a3a6275794261636b444555533a207369676e6174757265206973206560448201527f7870697265642e0000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460045460009173ffffffffffffffffffffffffffffffffffffffff9081169188911687874660405160200161372696959493929190615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906137b59084908790879060040161588b565b602060405180830381865afa1580156137d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f6919061596d565b613882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f504f4f4c3a3a6275794261636b444555533a20696e76616c6964207369676e6160448201527f747572657300000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000604051806080016040528061389889611819565b81526020018781526020018860018a516138b29190615812565b815181106138c2576138c2615d36565b602002602001015181526020018981525090506000620f4240600754620f42406138ec9190615812565b6013546040517f3c04af9f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633c04af9f90613942908790600401615b7e565b602060405180830381865afa15801561395f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139839190615829565b61398d9190615afd565b6139979190615ac2565b905060006139c67f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6139d09083615ac2565b600480546040517fa8a778ae0000000000000000000000000000000000000000000000000000000081523392810192909252602482018d905291925073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015613a4857600080fd5b505af1158015613a5c573d6000803e3d6000fd5b5050600154613a85925073ffffffffffffffffffffffffffffffffffffffff1690503383614b02565b50505050505050505050565b60135460009074010000000000000000000000000000000000000000900460ff1615613b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613baa9190615829565b15613c11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f436f6c6c61746572616c20726174696f206d757374206265203000000000000060448201526064016107fc565b43841015613ca1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90613d949084908890889060040161588b565b602060405180830381865afa158015613db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dd5919061596d565b613e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6013546040517f14da4ee1000000000000000000000000000000000000000000000000000000008152600481018890526024810189905273ffffffffffffffffffffffffffffffffffffffff909116906314da4ee190604401602060405180830381865afa158015613ed7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613efb9190615829565b9150620f4240600554620f4240613f129190615812565b613f1c9084615afd565b613f269190615ac2565b9150620f424060055483613f3a9190615afd565b613f449190615ac2565b60126000828254613f5591906157fa565b9091555050600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820189905273ffffffffffffffffffffffffffffffffffffffff169063a8a778ae90604401600060405180830381600087803b158015613fcd57600080fd5b505af1158015613fe1573d6000803e3d6000fd5b50506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810186905273ffffffffffffffffffffffffffffffffffffffff909116925063b4f56b269150604401600060405180830381600087803b15801561405757600080fd5b505af115801561406b573d6000803e3d6000fd5b505050505095945050505050565b60008181526020819052604081206127f090614f31565b6000828152602081905260409020600201546140ac90336127f6565b61180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b650000000000000000000000000000000060648201526084016107fc565b6141627fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c3857336127f6565b61416b57600080fd5b6013805460ff750100000000000000000000000000000000000000000080830482161581027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f5860c5063a65e23cea4e2e2925f1a841bb6d1bc9615bd425f8dd084980b0514193611af49390049091161515815260200190565b61421e7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336127f6565b614284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f504f4f4c3a3a796f7520617265206e6f7420747275737479000000000000000060448201526064016107fc565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af11580156142f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e1919061596d565b6013547501000000000000000000000000000000000000000000900460ff16156143a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015614413573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144379190615829565b9050620f42408110801561444b5750600081115b6144fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20436f6c6c6160448201527f746572616c20726174696f206e6565647320746f206265206265747765656e2060648201527f2e30303030303120616e64202e39393939393900000000000000000000000000608482015260a4016107fc565b4384101561458d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4445493a3a72656465656d4672616374696f6e616c4445493a207369676e617460448201527f757265206973206578706972656400000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018c90529390941b909316605484015260688301889052608883018790524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906146669084908890889060cc0161588b565b602060405180830381865afa158015614683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146a7919061596d565b614733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20696e76616c60448201527f6964207369676e6174757265730000000000000000000000000000000000000060648201526084016107fc565b60008060008990506000620f4240600654620f42406147529190615812565b61475c908e615afd565b6147669190615ac2565b90506000620f42406147788884615afd565b6147829190615ac2565b61478c9083615812565b90508a61479c620f424083615afd565b6147a69190615ac2565b945060006147d57f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6147df9084615ac2565b90506000620f42406147f18a84615afd565b6147fb9190615ac2565b90508461480b620f424083615afd565b6148159190615ac2565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015292985090965073ffffffffffffffffffffffffffffffffffffffff1694506370a08231935060240191506148789050565b602060405180830381865afa158015614895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148b99190615829565b6148c39190615812565b81111561492c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a60205260409020546149479082906157fa565b336000908152600a6020526040902055600b546149659082906157fa565b600b55336000908152600960205260409020546149839083906157fa565b33600090815260096020526040902055600c546149a19083906157fa565b600c55336000908152600d60205260409020439055600654620f4240906149c8908c615afd565b6149d29190615ac2565b601260008282546149e391906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018c905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015614a5a57600080fd5b505af1158015614a6e573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820186905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401612edc565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16614f3b565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691614b999190615d65565b6000604051808303816000865af19150503d8060008114614bd6576040519150601f19603f3d011682016040523d82523d6000602084013e614bdb565b606091505b5091509150818015614c05575080511580614c05575080806020019051810190614c05919061596d565b614c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016107fc565b5050505050565b6000828152602081905260409020614c8a9082614ad0565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691614d779190615d65565b6000604051808303816000865af19150503d8060008114614db4576040519150601f19603f3d011682016040523d82523d6000602084013e614db9565b606091505b5091509150818015614de3575080511580614de3575080806020019051810190614de3919061596d565b614e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016107fc565b505050505050565b6000828152602081905260409020614e8e9082614f8a565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000614ee88383614fbc565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156127ed565b60006127f0825490565b6000818152600183016020526040812054614f82575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556127f0565b5060006127f0565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16615077565b8154600090821061504f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f647300000000000000000000000000000000000000000000000000000000000060648201526084016107fc565b82600001828154811061506457615064615d36565b9060005260206000200154905092915050565b6000818152600183016020526040812054801561516057600061509b600183615812565b85549091506000906150af90600190615812565b905060008660000182815481106150c8576150c8615d36565b90600052602060002001549050808760000184815481106150eb576150eb615d36565b6000918252602090912001556151028360016157fa565b6000828152600189016020526040902055865487908061512457615124615d81565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506127f0565b60009150506127f0565b803573ffffffffffffffffffffffffffffffffffffffff8116811461518e57600080fd5b919050565b6000602082840312156151a557600080fd5b6127ed8261516a565b6000602082840312156151c057600080fd5b5035919050565b60008083601f8401126151d957600080fd5b50813567ffffffffffffffff8111156151f157600080fd5b6020830191508360208260051b850101111561520c57600080fd5b9250929050565b60008060008060006080868803121561522b57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561525757600080fd5b615263888289016151c7565b969995985093965092949392505050565b6000806040838503121561528757600080fd5b823591506152976020840161516a565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff811182821017156152f2576152f26152a0565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561533f5761533f6152a0565b604052919050565b600067ffffffffffffffff821115615361576153616152a0565b5060051b60200190565b600082601f83011261537c57600080fd5b8135602061539161538c83615347565b6152f8565b82815260059290921b840181019181810190868411156153b057600080fd5b8286015b848110156153cb57803583529183019183016153b4565b509695505050505050565b6000602082840312156153e857600080fd5b813567ffffffffffffffff8111156153ff57600080fd5b61540b8482850161536b565b949350505050565b600080600080600080600060e0888a03121561542e57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080600080600080600060c0888a03121561547a57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a088013567ffffffffffffffff8111156154b457600080fd5b6154c08a828b016151c7565b989b979a50959850939692959293505050565b600080604083850312156154e657600080fd5b50508035926020909101359150565b6000601f838184011261550757600080fd5b8235602061551761538c83615347565b82815260059290921b8501810191818101908784111561553657600080fd5b8287015b848110156155eb57803567ffffffffffffffff8082111561555b5760008081fd5b818a0191508a603f8301126155705760008081fd5b85820135604082821115615586576155866152a0565b6155b5887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c850116016152f8565b92508183528c818386010111156155cc5760008081fd5b818185018985013750600090820187015284525091830191830161553a565b50979650505050505050565b60006020828403121561560957600080fd5b813567ffffffffffffffff8082111561562157600080fd5b9083019060c0828603121561563557600080fd5b61563d6152cf565b823581526020830135602082015260408301358281111561565d57600080fd5b6156698782860161536b565b604083015250606083013560608201526080830135608082015260a08301358281111561569557600080fd5b6156a1878286016154f5565b60a08301525095945050505050565b60008060008060008060a087890312156156c957600080fd5b86359550602087013567ffffffffffffffff808211156156e857600080fd5b6156f48a838b0161536b565b96506040890135955060608901359450608089013591508082111561571857600080fd5b5061572589828a016151c7565b979a9699509497509295939492505050565b60008060006060848603121561574c57600080fd5b6157558461516a565b92506020840135915061576a6040850161516a565b90509250925092565b60008060008060008060a0878903121561578c57600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff8111156157bf57600080fd5b61572589828a016151c7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561580d5761580d6157cb565b500190565b600082821015615824576158246157cb565b500390565b60006020828403121561583b57600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b8781101561595f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18a360301811261591657600080fd5b8901803567ffffffffffffffff81111561592f57600080fd5b8036038b131561593e57600080fd5b61594b8782888501615842565b9650505091830191908301906001016158b5565b509298975050505050505050565b60006020828403121561597f57600080fd5b8151801515811461598f57600080fd5b9392505050565b600181815b808511156159ef57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156159d5576159d56157cb565b808516156159e257918102915b93841c939080029061599b565b509250929050565b600082615a06575060016127f0565b81615a13575060006127f0565b8160018114615a295760028114615a3357615a4f565b60019150506127f0565b60ff841115615a4457615a446157cb565b50506001821b6127f0565b5060208310610133831016604e8410600b8410161715615a72575081810a6127f0565b615a7c8383615996565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615aae57615aae6157cb565b029392505050565b60006127ed83836159f7565b600082615af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615b3557615b356157cb565b500290565b6020808252825182820181905260009190848201906040850190845b81811015615b7257835183529284019291840191600101615b56565b50909695505050505050565b81518152602080830151908201526040808301519082015260608083015190820152608081016127f0565b60008060408385031215615bbc57600080fd5b505080516020909101519092909150565b60007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808960601b1683526014830188516020808b0160005b83811015615c2257815185529382019390820190600101615c06565b5050505060609790971b168652505060148401929092526034830152605482015260740192915050565b60005b83811015615c67578181015183820152602001615c4f565b838111156108e15750506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015615d28577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088870301845281518051808852615ceb81888a01898501615c4c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01696909601850195509284019290840190600101615ca6565b509398975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008251615d77818460208701615c4c565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212204622a05d75c89b78cbc019e8eea4cfb3dfa44f6208b9d4d768626026b70bda0b64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061032b5760003560e01c80637b0461e9116101b2578063b6258aaa116100f9578063cb73999f116100a2578063e3d84d5e1161007c578063e3d84d5e146106df578063eb2d7461146106f2578063f9abd26c14610705578063fede5c9c1461072557600080fd5b8063cb73999f146106bb578063d547741f146106c4578063daa50485146106d757600080fd5b8063c6301e5d116100d3578063c6301e5d1461068c578063c74ec56a1461069f578063ca15c873146106a857600080fd5b8063b6258aaa1461065d578063c3355b8d14610670578063c410ca1b1461067957600080fd5b806391d148541161015b578063a217fddf11610135578063a217fddf1461060f578063abae2c4c14610617578063b235d4681461063757600080fd5b806391d14854146105d6578063928d2b31146105e9578063978b73b5146105fc57600080fd5b80637f877f851161018c5780637f877f851461056d57806388d19f1b146105955780639010d07c1461059e57600080fd5b80637b0461e9146105375780637d55094d146105405780637e4831d31461054857600080fd5b806340e14b7811610276578063564b81ef1161021f5780636d2c5615116101f95780636d2c5615146104c65780636d82e314146104fd5780637901330b1461052457600080fd5b8063564b81ef146104905780635de207cc146104965780636526a12a146104bd57600080fd5b80634ebbe762116102505780634ebbe7621461046257806350c9ecd91461047557806354f9769d1461047d57600080fd5b806340e14b781461043e57806342d15aec146104515780634c6349341461045957600080fd5b80632f2ff15d116102d85780633648b7dc116102b25780633648b7dc1461040257806336568abe1461040b5780633b92da471461041e57600080fd5b80632f2ff15d146103b557806332ad1ee4146103c857806334ddb95d146103db57600080fd5b806315128425116103095780631512842514610376578063248a9ca31461037f578063254cd2bd146103a257600080fd5b806308a7493d14610330578063101197c71461036357806312ace5a21461036c575b600080fd5b61035061033e366004615193565b600a6020526000908152604090205481565b6040519081526020015b60405180910390f35b61035060075481565b61037461072e565b005b61035060115481565b61035061038d3660046151ae565b60009081526020819052604090206002015490565b6103746103b0366004615213565b6108e7565b6103746103c3366004615274565b610fde565b6103506103d6366004615213565b611094565b6103507f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610350600c5481565b610374610419366004615274565b61176a565b61035061042c366004615193565b60096020526000908152604090205481565b61035061044c3660046153d6565b611819565b610374611a37565b61035060105481565b610374610470366004615413565b611afe565b610374611c3d565b61035061048b36600461545f565b611cfb565b46610350565b6103507fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f24050981565b610350600e5481565b6013546104ed90760100000000000000000000000000000000000000000000900460ff1681565b604051901515815260200161035a565b6103507f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e53081565b610374610532366004615274565b612586565b610350600b5481565b61037461271a565b6013546104ed9074010000000000000000000000000000000000000000900460ff1681565b6013546104ed9077010000000000000000000000000000000000000000000000900460ff1681565b61035060125481565b6105b16105ac3660046154d3565b6127d5565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161035a565b6104ed6105e4366004615274565b6127f6565b6103746105f73660046155f7565b61280e565b61037461060a366004615213565b612f1a565b610350600081565b610350610625366004615193565b600d6020526000908152604090205481565b6013546104ed907501000000000000000000000000000000000000000000900460ff1681565b61035061066b3660046151ae565b6134bd565b61035060055481565b6103746106873660046156b0565b6135ac565b61035061069a366004615213565b613a91565b610350600f5481565b6103506106b63660046151ae565b614079565b61035060065481565b6103746106d2366004615274565b614090565b610374614138565b6103746106ed366004615737565b6141f4565b610374610700366004615773565b61431d565b6014546105b19073ffffffffffffffffffffffffffffffffffffffff1681565b61035060085481565b601154336000908152600d6020526040902054439161074c916157fa565b1115610805576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605b60248201527f504f4f4c3a3a636f6c6c656374526564656d7074696f6e3a204d75737420776160448201527f697420666f7220726564656d7074696f6e5f64656c617920626c6f636b73206260648201527f65666f726520636f6c6c656374696e6720726564656d7074696f6e0000000000608482015260a4015b60405180910390fd5b336000908152600960205260408120548190819081901561084d573360009081526009602052604081208054919055600c54909250610845908390615812565b600c55600193505b336000908152600a60205260409020541561088d5750336000908152600a602052604081208054919055600b54610885908290615812565b600b55600192505b83156108b7576004546108b79073ffffffffffffffffffffffffffffffffffffffff163384614b02565b82156108e1576001546108e19073ffffffffffffffffffffffffffffffffffffffff163383614b02565b50505050565b6013547501000000000000000000000000000000000000000000900460ff161561096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa1580156109df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a039190615829565b14610a6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203d3d203100000060448201526064016107fc565b43831015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90610bed9084908790879060040161588b565b602060405180830381865afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e919061596d565b610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a72656465656d3174314445493a20696e76616c6964207369676e60448201527f617475726573000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000610ce77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b610cf19088615ac2565b6013546040517f068d54aa000000000000000000000000000000000000000000000000000000008152600481018990526024810183905291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063068d54aa90604401602060405180830381865afa158015610d6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d919190615829565b9050620f4240600654620f4240610da89190615812565b610db29083615afd565b610dbc9190615ac2565b600b546001546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152929350909173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e569190615829565b610e609190615812565b811115610ec9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a6020526040902054610ee49082906157fa565b336000908152600a6020526040902055600b54610f029082906157fa565b600b55336000908152600d60205260409020439055600654620f424090610f29908a615afd565b610f339190615ac2565b60126000828254610f4491906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae906044015b600060405180830381600087803b158015610fbc57600080fd5b505af1158015610fd0573d6000803e3d6000fd5b505050505050505050505050565b600082815260208190526040902060020154610ffa90336127f6565b611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084016107fc565b6110908282614c72565b5050565b60135460009074010000000000000000000000000000000000000000900460ff161561111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b0000000000000000000000000000000000000000000000000000000081529051620f42409273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa15801561118e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b29190615829565b101561121a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f436f6c6c61746572616c20726174696f206d757374206265203e3d203100000060448201526064016107fc565b600e54600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015289929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561128f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b39190615829565b6112bd9190615812565b6112c791906157fa565b111561132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5b506f6f6c277320436c6f7365645d3a204365696c696e67207265616368656460448201526064016107fc565b438410156113bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f504f4f4c3a3a6d696e743174314445493a207369676e6174757265206973206560448201527f787069726564000000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906114b29084908890889060040161588b565b602060405180830381865afa1580156114cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f3919061596d565b61157e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6d696e743174314445493a20696e76616c6964207369676e617460448201527f757265730000000000000000000000000000000000000000000000000000000060648201526084016107fc565b60006115ab7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6115b59089615afd565b6013546040517f882ab63a000000000000000000000000000000000000000000000000000000008152600481018a90526024810183905291925073ffffffffffffffffffffffffffffffffffffffff169063882ab63a90604401602060405180830381865afa15801561162c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116509190615829565b9250620f4240600554620f42406116679190615812565b6116719085615afd565b61167b9190615ac2565b6001549093506116a39073ffffffffffffffffffffffffffffffffffffffff1633308b614cd8565b620f4240600554846116b59190615afd565b6116bf9190615ac2565b601260008282546116d091906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561174757600080fd5b505af115801561175b573d6000803e3d6000fd5b50505050505095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016107fc565b6110908282614e76565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ad9190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561191e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119429190615829565b6003546040517f2480fcea00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690632480fcea9061199e908890600401615b3a565b602060405180830381865afa1580156119bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119df9190615829565b9050620f42408211156119f357620f424091505b6000620f4240611a038486615afd565b611a0d9190615ac2565b905080821115611a2b57611a218183615812565b9695505050505050565b50600095945050505050565b611a617f8118eeb5231a5fe4008a55b62860f6a0db4f6c3ac04f8141927a9b3fedd86d2f336127f6565b611a6a57600080fd5b6013805460ff76010000000000000000000000000000000000000000000080830482161581027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f2fda313d9b5bb0b73bd003153f2fccbc0dca49791fdd1184dfad82b44f54bd2e93611af49390049091161515815260200190565b60405180910390a1565b611b287fe08e6e8e2e796f02419355c6fa268d1461fe6f2f34114a881a2db47c0f240509336127f6565b611bb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f504f4f4c3a2043616c6c6572206973206e6f7420504152414d455445525f534560448201527f545445525f524f4c45000000000000000000000000000000000000000000000060648201526084016107fc565b600e8790556010869055601185905560058490556006839055600782905560088190556040805188815260208101889052908101869052606081018590526080810184905260a0810183905260c081018290527f17fe98b66d27bd793ea01bd8a23a54acab8eeb167d9eb016a0c7cd71c573920c9060e00160405180910390a150505050505050565b611c677f103da79ff3755ff7a17a557d28b73d37cb4de0b3c3cc02fa6c48df0f35071fbf336127f6565b611c7057600080fd5b6013805460ff7701000000000000000000000000000000000000000000000080830482161581027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f4f40fd1c59f78d7a2220da638cd9400daba01e57c7965702f390bf13133cc31f93611af49390049091161515815260200190565b60135460009074010000000000000000000000000000000000000000900460ff1615611d83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015611df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e179190615829565b9050620f424081108015611e2b5750600081115b611eb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f436f6c6c61746572616c20726174696f206e6565647320746f2062652062657460448201527f7765656e202e30303030303120616e64202e393939393939000000000000000060648201526084016107fc565b600e54600b546001546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528c929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f509190615829565b611f5a9190615812565b611f6491906157fa565b1115612019576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f506f6f6c206365696c696e6720726561636865642c206e6f206d6f7265204445908201527f492063616e206265206d696e7465642077697468207468697320636f6c6c617460648201527f6572616c00000000000000000000000000000000000000000000000000000000608482015260a4016107fc565b438510156120a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a207369676e61747560448201527f726520697320657870697265642e00000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018d90529390941b909316605484015260688301899052608883018890524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906121829084908990899060cc0161588b565b602060405180830381865afa15801561219f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c3919061596d565b61224f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f504f4f4c3a3a6d696e744672616374696f6e616c4445493a20696e76616c696460448201527f207369676e61747572657300000000000000000000000000000000000000000060648201526084016107fc565b61227a6040518060800160405280600081526020016000815260200160008152602001600081525090565b60006122a77f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6122b1908d615afd565b604080516080810182528b8152602081018d9052808201929092526060820186905260135490517f537a30a70000000000000000000000000000000000000000000000000000000081529193506000925073ffffffffffffffffffffffffffffffffffffffff169063537a30a79061232d908590600401615b7e565b6040805180830381865afa158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190615ba9565b90955090508a8111156123dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e6f7420656e6f756768204445555320696e707574746564000000000000000060448201526064016107fc565b620f4240600554620f42406123f19190615812565b6123fb9087615afd565b6124059190615ac2565b600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820184905291965073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561247d57600080fd5b505af1158015612491573d6000803e3d6000fd5b50506001546124bb925073ffffffffffffffffffffffffffffffffffffffff16905033308f614cd8565b620f4240600554866124cd9190615afd565b6124d79190615ac2565b601260008282546124e891906157fa565b90915550506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810187905273ffffffffffffffffffffffffffffffffffffffff9091169063b4f56b2690604401600060405180830381600087803b15801561255f57600080fd5b505af1158015612573573d6000803e3d6000fd5b5050505050505050979650505050505050565b6125b07f0d4a2989857a24de9c91e1daffe87d051d59f52b68729413d1ef656ec487e530336127f6565b6125b957600080fd5b601254821115612625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f616d6f756e743c3d64616f53686172650000000000000000000000000000000060448201526064016107fc565b6003546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018590529091169063b4f56b2690604401600060405180830381600087803b15801561269957600080fd5b505af11580156126ad573d6000803e3d6000fd5b5050505081601260008282546126c39190615812565b90915550506040805183815273ffffffffffffffffffffffffffffffffffffffff831660208201527f3a708f2f1c75b12457d207cf1e259ab9f87bbfccb29672903acf4661bd342e49910160405180910390a15050565b6127447fc65532185ed70b2e999433e2e9fac124e083acb13ec183a4e05944da0792337b336127f6565b61274d57600080fd5b6013805460ff7401000000000000000000000000000000000000000080830482161581027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f6bdfe227d5db299c59aa56d5f846f40dbd73b271aaa78e18ed74fc3e00b8aa6b93611af49390049091161515815260200190565b60008281526020819052604081206127ed9083614edc565b90505b92915050565b60008281526020819052604081206127ed9083614ef2565b601354760100000000000000000000000000000000000000000000900460ff16156128bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a205265636f6c6c60448201527f61746572616c697a65206973207061757365640000000000000000000000000060648201526084016107fc565b438160800151101561294f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b6002546040828101516004546060850151608086015193516000956129989573ffffffffffffffffffffffffffffffffffffffff91821695949190911692914690602001615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052805160209091012060035460a08501517f6793f0ac00000000000000000000000000000000000000000000000000000000845291935073ffffffffffffffffffffffffffffffffffffffff1691636793f0ac91612a2991859190600401615c78565b602060405180830381865afa158015612a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6a919061596d565b612af6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a7265636f6c6c61746572616c697a654445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6000612b237f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b8351612b2f9190615afd565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc49190615829565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c599190615829565b60035460408088015190517f2480fcea00000000000000000000000000000000000000000000000000000000815292935060009273ffffffffffffffffffffffffffffffffffffffff90921691632480fcea91612cb891600401615b3a565b602060405180830381865afa158015612cd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf99190615829565b60135460408801518051929350600092839273ffffffffffffffffffffffffffffffffffffffff169163fc01106191899190612d3790600190615812565b81518110612d4757612d47615d36565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015260448101869052606481018890526084810187905260a4016040805180830381865afa158015612dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de39190615ba9565b90925090506000612e157f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b612e1f9084615ac2565b905060008960600151600854601054620f4240612e3c91906157fa565b612e469190615812565b612e509085615afd565b612e5a9190615ac2565b600154909150612e829073ffffffffffffffffffffffffffffffffffffffff16333085614cd8565b600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815233928101929092526024820183905273ffffffffffffffffffffffffffffffffffffffff169063b4f56b26906044015b600060405180830381600087803b158015612ef657600080fd5b505af1158015612f0a573d6000803e3d6000fd5b5050505050505050505050505050565b6013547501000000000000000000000000000000000000000000900460ff1615612fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561300d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130319190615829565b156130be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20436f6c6c60448201527f61746572616c20726174696f206d75737420626520300000000000000000000060648201526084016107fc565b4383101561314e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4445493a3a72656465656d416c676f726974686d69634445493a207369676e6160448201527f7475726520697320657870697265642e0000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1685854660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906132419084908790879060040161588b565b602060405180830381865afa15801561325e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613282919061596d565b61330e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f504f4f4c3a3a72656465656d416c676f726974686d69634445493a20696e766160448201527f6c6964207369676e61747572657300000000000000000000000000000000000060648201526084016107fc565b6006548690620f4240906133229082615812565b61332c9083615afd565b6133369190615ac2565b9050600086613348620f424084615afd565b6133529190615ac2565b336000908152600960205260409020549091506133709082906157fa565b33600090815260096020526040902055600c5461338e9082906157fa565b600c55336000908152600d60205260409020439055600654620f4240906133b5908a615afd565b6133bf9190615ac2565b601260008282546133d091906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018a905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b15801561344757600080fd5b505af115801561345b573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820185905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401610fa2565b6000620f4240826134ef7f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015613560573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135849190615829565b61358e9190615812565b6135989190615afd565b6135a29190615afd565b6127f09190615ac2565b60135477010000000000000000000000000000000000000000000000900460ff1615613659576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f504f4f4c3a3a6275794261636b444555533a204275796261636b20697320706160448201527f757365640000000000000000000000000000000000000000000000000000000060648201526084016107fc565b438310156136e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4445493a3a6275794261636b444555533a207369676e6174757265206973206560448201527f7870697265642e0000000000000000000000000000000000000000000000000060648201526084016107fc565b60025460045460009173ffffffffffffffffffffffffffffffffffffffff9081169188911687874660405160200161372696959493929190615bcd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac906137b59084908790879060040161588b565b602060405180830381865afa1580156137d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f6919061596d565b613882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f504f4f4c3a3a6275794261636b444555533a20696e76616c6964207369676e6160448201527f747572657300000000000000000000000000000000000000000000000000000060648201526084016107fc565b6000604051806080016040528061389889611819565b81526020018781526020018860018a516138b29190615812565b815181106138c2576138c2615d36565b602002602001015181526020018981525090506000620f4240600754620f42406138ec9190615812565b6013546040517f3c04af9f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633c04af9f90613942908790600401615b7e565b602060405180830381865afa15801561395f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139839190615829565b61398d9190615afd565b6139979190615ac2565b905060006139c67f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6139d09083615ac2565b600480546040517fa8a778ae0000000000000000000000000000000000000000000000000000000081523392810192909252602482018d905291925073ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015613a4857600080fd5b505af1158015613a5c573d6000803e3d6000fd5b5050600154613a85925073ffffffffffffffffffffffffffffffffffffffff1690503383614b02565b50505050505050505050565b60135460009074010000000000000000000000000000000000000000900460ff1615613b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f504f4f4c3a3a4d696e74696e672069732070617573656400000000000000000060448201526064016107fc565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb9771b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613baa9190615829565b15613c11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f436f6c6c61746572616c20726174696f206d757374206265203000000000000060448201526064016107fc565b43841015613ca1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a207369676e617460448201527f75726520697320657870697265642e000000000000000000000000000000000060648201526084016107fc565b60045460009073ffffffffffffffffffffffffffffffffffffffff1686864660405160609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019290925260548301526074820152609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101206003547f6793f0ac00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff1690636793f0ac90613d949084908890889060040161588b565b602060405180830381865afa158015613db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dd5919061596d565b613e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f504f4f4c3a3a6d696e74416c676f726974686d69634445493a20696e76616c6960448201527f64207369676e617475726573000000000000000000000000000000000000000060648201526084016107fc565b6013546040517f14da4ee1000000000000000000000000000000000000000000000000000000008152600481018890526024810189905273ffffffffffffffffffffffffffffffffffffffff909116906314da4ee190604401602060405180830381865afa158015613ed7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613efb9190615829565b9150620f4240600554620f4240613f129190615812565b613f1c9084615afd565b613f269190615ac2565b9150620f424060055483613f3a9190615afd565b613f449190615ac2565b60126000828254613f5591906157fa565b9091555050600480546040517fa8a778ae00000000000000000000000000000000000000000000000000000000815233928101929092526024820189905273ffffffffffffffffffffffffffffffffffffffff169063a8a778ae90604401600060405180830381600087803b158015613fcd57600080fd5b505af1158015613fe1573d6000803e3d6000fd5b50506003546040517fb4f56b260000000000000000000000000000000000000000000000000000000081523360048201526024810186905273ffffffffffffffffffffffffffffffffffffffff909116925063b4f56b269150604401600060405180830381600087803b15801561405757600080fd5b505af115801561406b573d6000803e3d6000fd5b505050505095945050505050565b60008181526020819052604081206127f090614f31565b6000828152602081905260409020600201546140ac90336127f6565b61180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b650000000000000000000000000000000060648201526084016107fc565b6141627fa84a5389ad41f9aab0831b01e5384cae76e7a7fd09131c206ff7927c201c3857336127f6565b61416b57600080fd5b6013805460ff750100000000000000000000000000000000000000000080830482161581027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f5860c5063a65e23cea4e2e2925f1a841bb6d1bc9615bd425f8dd084980b0514193611af49390049091161515815260200190565b61421e7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336127f6565b614284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f504f4f4c3a3a796f7520617265206e6f7420747275737479000000000000000060448201526064016107fc565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af11580156142f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e1919061596d565b6013547501000000000000000000000000000000000000000000900460ff16156143a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f504f4f4c3a3a52656465656d696e67206973207061757365640000000000000060448201526064016107fc565b600354604080517f2eb9771b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632eb9771b9160048083019260209291908290030181865afa158015614413573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144379190615829565b9050620f42408110801561444b5750600081115b6144fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20436f6c6c6160448201527f746572616c20726174696f206e6565647320746f206265206265747765656e2060648201527f2e30303030303120616e64202e39393939393900000000000000000000000000608482015260a4016107fc565b4384101561458d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4445493a3a72656465656d4672616374696f6e616c4445493a207369676e617460448201527f757265206973206578706972656400000000000000000000000000000000000060648201526084016107fc565b600254600454604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602080840191909152603483018c90529390941b909316605484015260688301889052608883018790524660a8808501919091528151808503909101815260c884019182905280519201919091206003547f6793f0ac000000000000000000000000000000000000000000000000000000009092529173ffffffffffffffffffffffffffffffffffffffff90911690636793f0ac906146669084908890889060cc0161588b565b602060405180830381865afa158015614683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146a7919061596d565b614733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f504f4f4c3a3a72656465656d4672616374696f6e616c4445493a20696e76616c60448201527f6964207369676e6174757265730000000000000000000000000000000000000060648201526084016107fc565b60008060008990506000620f4240600654620f42406147529190615812565b61475c908e615afd565b6147669190615ac2565b90506000620f42406147788884615afd565b6147829190615ac2565b61478c9083615812565b90508a61479c620f424083615afd565b6147a69190615ac2565b945060006147d57f0000000000000000000000000000000000000000000000000000000000000000600a615ab6565b6147df9084615ac2565b90506000620f42406147f18a84615afd565b6147fb9190615ac2565b90508461480b620f424083615afd565b6148159190615ac2565b600b546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015292985090965073ffffffffffffffffffffffffffffffffffffffff1694506370a08231935060240191506148789050565b602060405180830381865afa158015614895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148b99190615829565b6148c39190615812565b81111561492c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420656e6f75676820636f6c6c61746572616c20696e20706f6f6c00000060448201526064016107fc565b336000908152600a60205260409020546149479082906157fa565b336000908152600a6020526040902055600b546149659082906157fa565b600b55336000908152600960205260409020546149839083906157fa565b33600090815260096020526040902055600c546149a19083906157fa565b600c55336000908152600d60205260409020439055600654620f4240906149c8908c615afd565b6149d29190615ac2565b601260008282546149e391906157fa565b90915550506003546040517fa8a778ae000000000000000000000000000000000000000000000000000000008152336004820152602481018c905273ffffffffffffffffffffffffffffffffffffffff9091169063a8a778ae90604401600060405180830381600087803b158015614a5a57600080fd5b505af1158015614a6e573d6000803e3d6000fd5b5050600480546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815230928101929092526024820186905273ffffffffffffffffffffffffffffffffffffffff16925063b4f56b269150604401612edc565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16614f3b565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691614b999190615d65565b6000604051808303816000865af19150503d8060008114614bd6576040519150601f19603f3d011682016040523d82523d6000602084013e614bdb565b606091505b5091509150818015614c05575080511580614c05575080806020019051810190614c05919061596d565b614c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016107fc565b5050505050565b6000828152602081905260409020614c8a9082614ad0565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691614d779190615d65565b6000604051808303816000865af19150503d8060008114614db4576040519150601f19603f3d011682016040523d82523d6000602084013e614db9565b606091505b5091509150818015614de3575080511580614de3575080806020019051810190614de3919061596d565b614e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016107fc565b505050505050565b6000828152602081905260409020614e8e9082614f8a565b1561109057604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000614ee88383614fbc565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156127ed565b60006127f0825490565b6000818152600183016020526040812054614f82575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556127f0565b5060006127f0565b60006127ed837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16615077565b8154600090821061504f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f647300000000000000000000000000000000000000000000000000000000000060648201526084016107fc565b82600001828154811061506457615064615d36565b9060005260206000200154905092915050565b6000818152600183016020526040812054801561516057600061509b600183615812565b85549091506000906150af90600190615812565b905060008660000182815481106150c8576150c8615d36565b90600052602060002001549050808760000184815481106150eb576150eb615d36565b6000918252602090912001556151028360016157fa565b6000828152600189016020526040902055865487908061512457615124615d81565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506127f0565b60009150506127f0565b803573ffffffffffffffffffffffffffffffffffffffff8116811461518e57600080fd5b919050565b6000602082840312156151a557600080fd5b6127ed8261516a565b6000602082840312156151c057600080fd5b5035919050565b60008083601f8401126151d957600080fd5b50813567ffffffffffffffff8111156151f157600080fd5b6020830191508360208260051b850101111561520c57600080fd5b9250929050565b60008060008060006080868803121561522b57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561525757600080fd5b615263888289016151c7565b969995985093965092949392505050565b6000806040838503121561528757600080fd5b823591506152976020840161516a565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff811182821017156152f2576152f26152a0565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561533f5761533f6152a0565b604052919050565b600067ffffffffffffffff821115615361576153616152a0565b5060051b60200190565b600082601f83011261537c57600080fd5b8135602061539161538c83615347565b6152f8565b82815260059290921b840181019181810190868411156153b057600080fd5b8286015b848110156153cb57803583529183019183016153b4565b509695505050505050565b6000602082840312156153e857600080fd5b813567ffffffffffffffff8111156153ff57600080fd5b61540b8482850161536b565b949350505050565b600080600080600080600060e0888a03121561542e57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080600080600080600060c0888a03121561547a57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a088013567ffffffffffffffff8111156154b457600080fd5b6154c08a828b016151c7565b989b979a50959850939692959293505050565b600080604083850312156154e657600080fd5b50508035926020909101359150565b6000601f838184011261550757600080fd5b8235602061551761538c83615347565b82815260059290921b8501810191818101908784111561553657600080fd5b8287015b848110156155eb57803567ffffffffffffffff8082111561555b5760008081fd5b818a0191508a603f8301126155705760008081fd5b85820135604082821115615586576155866152a0565b6155b5887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c850116016152f8565b92508183528c818386010111156155cc5760008081fd5b818185018985013750600090820187015284525091830191830161553a565b50979650505050505050565b60006020828403121561560957600080fd5b813567ffffffffffffffff8082111561562157600080fd5b9083019060c0828603121561563557600080fd5b61563d6152cf565b823581526020830135602082015260408301358281111561565d57600080fd5b6156698782860161536b565b604083015250606083013560608201526080830135608082015260a08301358281111561569557600080fd5b6156a1878286016154f5565b60a08301525095945050505050565b60008060008060008060a087890312156156c957600080fd5b86359550602087013567ffffffffffffffff808211156156e857600080fd5b6156f48a838b0161536b565b96506040890135955060608901359450608089013591508082111561571857600080fd5b5061572589828a016151c7565b979a9699509497509295939492505050565b60008060006060848603121561574c57600080fd5b6157558461516a565b92506020840135915061576a6040850161516a565b90509250925092565b60008060008060008060a0878903121561578c57600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff8111156157bf57600080fd5b61572589828a016151c7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561580d5761580d6157cb565b500190565b600082821015615824576158246157cb565b500390565b60006020828403121561583b57600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b8781101561595f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18a360301811261591657600080fd5b8901803567ffffffffffffffff81111561592f57600080fd5b8036038b131561593e57600080fd5b61594b8782888501615842565b9650505091830191908301906001016158b5565b509298975050505050505050565b60006020828403121561597f57600080fd5b8151801515811461598f57600080fd5b9392505050565b600181815b808511156159ef57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156159d5576159d56157cb565b808516156159e257918102915b93841c939080029061599b565b509250929050565b600082615a06575060016127f0565b81615a13575060006127f0565b8160018114615a295760028114615a3357615a4f565b60019150506127f0565b60ff841115615a4457615a446157cb565b50506001821b6127f0565b5060208310610133831016604e8410600b8410161715615a72575081810a6127f0565b615a7c8383615996565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615aae57615aae6157cb565b029392505050565b60006127ed83836159f7565b600082615af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615b3557615b356157cb565b500290565b6020808252825182820181905260009190848201906040850190845b81811015615b7257835183529284019291840191600101615b56565b50909695505050505050565b81518152602080830151908201526040808301519082015260608083015190820152608081016127f0565b60008060408385031215615bbc57600080fd5b505080516020909101519092909150565b60007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808960601b1683526014830188516020808b0160005b83811015615c2257815185529382019390820190600101615c06565b5050505060609790971b168652505060148401929092526034830152605482015260740192915050565b60005b83811015615c67578181015183820152602001615c4f565b838111156108e15750506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015615d28577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088870301845281518051808852615ceb81888a01898501615c4c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01696909601850195509284019290840190600101615ca6565b509398975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008251615d77818460208701615c4c565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212204622a05d75c89b78cbc019e8eea4cfb3dfa44f6208b9d4d768626026b70bda0b64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/DEUS/DEUS.sol/DEUSToken.dbg.json b/artifacts/contracts/DEUS/DEUS.sol/DEUSToken.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/DEUS/DEUS.sol/DEUSToken.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/DEUS/DEUS.sol/DEUSToken.json b/artifacts/contracts/DEUS/DEUS.sol/DEUSToken.json new file mode 100644 index 00000000..68f6f138 --- /dev/null +++ b/artifacts/contracts/DEUS/DEUS.sol/DEUSToken.json @@ -0,0 +1,855 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DEUSToken", + "sourceName": "contracts/DEUS/DEUS.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "_trusty_address", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "DEIAddressSet", + "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": "amount", + "type": "uint256" + } + ], + "name": "DEUSBurned", + "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": "amount", + "type": "uint256" + } + ], + "name": "DEUSMinted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "name": "NameAndSymbolSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MINTER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TRUSTY_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "dei_contract_address", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "genesis_supply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "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" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "b_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "b_amount", + "type": "uint256" + } + ], + "name": "pool_burn_from", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "m_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "m_amount", + "type": "uint256" + } + ], + "name": "pool_mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dei_contract_address", + "type": "address" + } + ], + "name": "setDEIAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + } + ], + "name": "setNameAndSymbol", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6101406040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610120523480156200003757600080fd5b506040516200300f3803806200300f8339810160408190526200005a9162000653565b600680546200006990620006e0565b80601f01602080910402602001604051908101604052809291908181526020018280546200009790620006e0565b8015620000e85780601f10620000bc57610100808354040283529160200191620000e8565b820191906000526020600020905b815481529060010190602001808311620000ca57829003601f168201915b505060408051808201825260018152603160f81b60209182015285519581019590952060c08181527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660e08190524660a081815285517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818c018190528188019690965260608101939093526080808401929092523083820152855180840390910181529190920190935282519290960191909120909452505050610100526001600160a01b038116620002145760405162461bcd60e51b815260206004820152602860248201527f444555533a3a636f6e7374727563746f723a207a65726f20616464726573732060448201526719195d1958dd195960c21b60648201526084015b60405180910390fd5b825162000229906006906020860190620004e0565b5081516200023f906005906020850190620004e0565b506200024d60008262000297565b620002797f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c8262000297565b6200028e8168056bc75e2d63100000620002a7565b50505062000744565b620002a38282620003a3565b5050565b6001600160a01b038216620002ff5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200020b565b6200031b816002546200040c60201b620012351790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200034e918390620012356200040c821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6000828152600460209081526040909120620003ca918390620012ae62000478821b17901c565b15620002a35760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6000806200041b83856200071d565b9050838110156200046f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016200020b565b90505b92915050565b60006200046f836001600160601b0319606085901b166000818152600183016020526040812054620004d75750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000472565b50600062000472565b828054620004ee90620006e0565b90600052602060002090601f0160209004810192826200051257600085556200055d565b82601f106200052d57805160ff19168380011785556200055d565b828001600101855582156200055d579182015b828111156200055d57825182559160200191906001019062000540565b506200056b9291506200056f565b5090565b5b808211156200056b576000815560010162000570565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620005ae57600080fd5b81516001600160401b0380821115620005cb57620005cb62000586565b604051601f8301601f19908116603f01168101908282118183101715620005f657620005f662000586565b816040528381526020925086838588010111156200061357600080fd5b600091505b8382101562000637578582018301518183018401529082019062000618565b83821115620006495760008385830101525b9695505050505050565b6000806000606084860312156200066957600080fd5b83516001600160401b03808211156200068157600080fd5b6200068f878388016200059c565b94506020860151915080821115620006a657600080fd5b50620006b5868287016200059c565b604086015190935090506001600160a01b0381168114620006d557600080fd5b809150509250925092565b600181811c90821680620006f557607f821691505b602082108114156200071757634e487b7160e01b600052602260045260246000fd5b50919050565b600082198211156200073f57634e487b7160e01b600052601160045260246000fd5b500190565b60805160a05160c05160e051610100516101205161287b620007946000396000610e90015260006117ce0152600061181d015260006117f80152600061177c015260006117a5015261287b6000f3fe608060405234801561001057600080fd5b506004361061020b5760003560e01c806379cc67901161012a578063a8a778ae116100bd578063d505accf1161008c578063d547741f11610071578063d547741f146104d6578063dd62ed3e146104e9578063efa007361461052f57600080fd5b8063d505accf1461049c578063d5391393146104af57600080fd5b8063a8a778ae14610450578063a9059cbb14610463578063b4f56b2614610476578063ca15c8731461048957600080fd5b806391d14854116100f957806391d148541461041a57806395d89b411461042d578063a217fddf14610435578063a457c2d71461043d57600080fd5b806379cc67901461039c5780637ecebe00146103af57806383e2d870146103c25780639010d07c1461040757600080fd5b80633644e515116101a257806342966c681161017157806342966c681461033057806351e238e3146103435780635a4462151461035357806370a082311461036657600080fd5b80633644e515146102ef57806336568abe146102f7578063395093511461030a57806340c10f191461031d57600080fd5b8063248a9ca3116101de578063248a9ca3146102765780632f2ff15d14610299578063313ce567146102ae57806334ddb95d146102c857600080fd5b806306fdde0314610210578063095ea7b31461022e57806318160ddd1461025157806323b872dd14610263575b600080fd5b610218610542565b6040516102259190612205565b60405180910390f35b61024161023c3660046122a1565b6105d0565b6040519015158152602001610225565b6002545b604051908152602001610225565b6102416102713660046122cb565b6105e7565b610255610284366004612307565b60009081526004602052604090206002015490565b6102ac6102a7366004612320565b61067b565b005b6102b6601281565b60405160ff9091168152602001610225565b6102557f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610255610736565b6102ac610305366004612320565b610745565b6102416103183660046122a1565b6107f4565b6102ac61032b3660046122a1565b610837565b6102ac61033e366004612307565b6108f7565b61025568056bc75e2d6310000081565b6102ac610361366004612426565b610904565b61025561037436600461248a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6102ac6103aa3660046122a1565b6109fb565b6102556103bd36600461248a565b610a47565b6007546103e29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610225565b6103e26104153660046124a5565b610a72565b610241610428366004612320565b610a91565b610218610aa9565b610255600081565b61024161044b3660046122a1565b610ab6565b6102ac61045e3660046122a1565b610b12565b6102416104713660046122a1565b610c8c565b6102ac6104843660046122a1565b610c99565b610255610497366004612307565b610e0b565b6102ac6104aa3660046124c7565b610e22565b6102557f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102ac6104e4366004612320565b610fe1565b6102556104f736600461253a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6102ac61053d36600461248a565b611089565b6006805461054f90612564565b80601f016020809104026020016040519081016040528092919081815260200182805461057b90612564565b80156105c85780601f1061059d576101008083540402835291602001916105c8565b820191906000526020600020905b8154815290600101906020018083116105ab57829003601f168201915b505050505081565b60006105dd3384846112e0565b5060015b92915050565b60006105f4848484611494565b610671843361066c856040518060600160405280602881526020016127d56028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020526040812090335b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205491906116be565b6112e0565b5060019392505050565b6000828152600460205260409020600201546106979033610a91565b610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084015b60405180910390fd5b6107328282611712565b5050565b6000610740611778565b905090565b73ffffffffffffffffffffffffffffffffffffffff811633146107ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c660000000000000000000000000000000000606482015260840161071f565b610732828261186b565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105dd91859061066c9086611235565b6108617f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610a91565b6108ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f444555533a204f6e6c79206d696e746572732061726520616c6c6f776564207460448201527f6f20646f2074686973206f7065726174696f6e00000000000000000000000000606482015260840161071f565b61073282826118d1565b61090133826119e9565b50565b61092e7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610a91565b610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f444555533a20596f7520617265206e6f74207472757374790000000000000000604482015260640161071f565b81516109a790600690602085019061216c565b5080516109bb90600590602084019061216c565b507f24a9aef9121ba62598f20f8f80fd406fa1d2d956747e0728068c649f324ddf41600660056040516109ef929190612689565b60405180910390a15050565b6000610a2b826040518060600160405280602481526020016127fd60249139610a2486336104f7565b91906116be565b9050610a388333836112e0565b610a4283836119e9565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600360205260408120546105e1565b6000828152600460205260408120610a8a9083611b57565b9392505050565b6000828152600460205260408120610a8a9083611b6d565b6005805461054f90612564565b60006105dd338461066c856040518060600160405280602581526020016128216025913933600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d16845290915290205491906116be565b6007546040517f15ea919c00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff909116906315ea919c90602401602060405180830381865afa158015610b80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba491906126ae565b610c30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f444555533a204f6e6c792064656920706f6f6c732061726520616c6c6f77656460448201527f20746f20646f2074686973206f7065726174696f6e0000000000000000000000606482015260840161071f565b610c3a8282611bac565b604051818152309073ffffffffffffffffffffffffffffffffffffffff8416907ffea1faea8b86058686e38c71a510e9ba19bc719a67a74e590aa5f68dfdfc21be906020015b60405180910390a35050565b60006105dd338484611494565b6007546040517f15ea919c00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff909116906315ea919c90602401602060405180830381865afa158015610d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2b91906126ae565b610db7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f444555533a204f6e6c792064656920706f6f6c732061726520616c6c6f77656460448201527f20746f20646f2074686973206f7065726174696f6e0000000000000000000000606482015260840161071f565b610dc182826118d1565b60405181815273ffffffffffffffffffffffffffffffffffffffff83169030907fdcdaf2f9efb1a9727c667bcd34ba547e3ce5ec7f3af304aa8829a5e590211d7e90602001610c80565b60008181526004602052604081206105e190611c04565b83421115610e8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161071f565b60007f0000000000000000000000000000000000000000000000000000000000000000888888610ebb8c611c0e565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610f2382611c43565b90506000610f3382878787611cac565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610fca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161071f565b610fd58a8a8a6112e0565b50505050505050505050565b600082815260046020526040902060020154610ffd9033610a91565b6107ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b6500000000000000000000000000000000606482015260840161071f565b6110b37f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610a91565b611119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f444555533a20596f7520617265206e6f74207472757374790000000000000000604482015260640161071f565b73ffffffffffffffffffffffffffffffffffffffff81166111bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f444555533a3a736574444549416464726573733a205a65726f2061646472657360448201527f7320646574656374656400000000000000000000000000000000000000000000606482015260840161071f565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f0692ea78a01b96b5abe8a744eae1de9f7f001f685fd013f0c552220d563d4ba79060200160405180910390a150565b60008061124283856126ff565b905083811015610a8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161071f565b6000610a8a837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16611efb565b73ffffffffffffffffffffffffffffffffffffffff8316611382576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161071f565b73ffffffffffffffffffffffffffffffffffffffff8216611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161071f565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161071f565b73ffffffffffffffffffffffffffffffffffffffff82166115da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161071f565b611624816040518060600160405280602681526020016127af6026913973ffffffffffffffffffffffffffffffffffffffff861660009081526020819052604090205491906116be565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546116609082611235565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611487565b600081848411156116fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f9190612205565b5060006117098486612717565b95945050505050565b600082815260046020526040902061172a90826112ae565b1561073257604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b60007f00000000000000000000000000000000000000000000000000000000000000004614156117c757507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008281526004602052604090206118839082611f4a565b1561073257604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b73ffffffffffffffffffffffffffffffffffffffff821661194e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161071f565b60025461195b9082611235565b60025573ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461198e9082611235565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610c80565b73ffffffffffffffffffffffffffffffffffffffff8216611a8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161071f565b611ad68160405180606001604052806022815260200161278d6022913973ffffffffffffffffffffffffffffffffffffffff851660009081526020819052604090205491906116be565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055600254611b099082611f7c565b60025560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610c80565b6000611b638383611fbe565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660009081526001830160205260408120541515610a8a565b611bb682826119e9565b610732823361066c846040518060600160405280602481526020016127fd6024913973ffffffffffffffffffffffffffffffffffffffff88166000908152600160205260408120903361063e565b60006105e1825490565b73ffffffffffffffffffffffffffffffffffffffff811660009081526003602052604090208054600181018255905b50919050565b60006105e1611c50611778565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115611d5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161071f565b8360ff16601b1480611d7357508360ff16601c145b611dff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161071f565b6040805160008082526020820180845288905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa158015611e53573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161071f565b6000818152600183016020526040812054611f42575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105e1565b5060006105e1565b6000610a8a837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16612079565b6000610a8a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116be565b81546000908210612051576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f6473000000000000000000000000000000000000000000000000000000000000606482015260840161071f565b8260000182815481106120665761206661272e565b9060005260206000200154905092915050565b6000818152600183016020526040812054801561216257600061209d600183612717565b85549091506000906120b190600190612717565b905060008660000182815481106120ca576120ca61272e565b90600052602060002001549050808760000184815481106120ed576120ed61272e565b6000918252602090912001556121048360016126ff565b600082815260018901602052604090205586548790806121265761212661275d565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506105e1565b60009150506105e1565b82805461217890612564565b90600052602060002090601f01602090048101928261219a57600085556121e0565b82601f106121b357805160ff19168380011785556121e0565b828001600101855582156121e0579182015b828111156121e05782518255916020019190600101906121c5565b506121ec9291506121f0565b5090565b5b808211156121ec57600081556001016121f1565b600060208083528351808285015260005b8181101561223257858101830151858201604001528201612216565b81811115612244576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461229c57600080fd5b919050565b600080604083850312156122b457600080fd5b6122bd83612278565b946020939093013593505050565b6000806000606084860312156122e057600080fd5b6122e984612278565b92506122f760208501612278565b9150604084013590509250925092565b60006020828403121561231957600080fd5b5035919050565b6000806040838503121561233357600080fd5b8235915061234360208401612278565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261238c57600080fd5b813567ffffffffffffffff808211156123a7576123a761234c565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156123ed576123ed61234c565b8160405283815286602085880101111561240657600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561243957600080fd5b823567ffffffffffffffff8082111561245157600080fd5b61245d8683870161237b565b9350602085013591508082111561247357600080fd5b506124808582860161237b565b9150509250929050565b60006020828403121561249c57600080fd5b610a8a82612278565b600080604083850312156124b857600080fd5b50508035926020909101359150565b600080600080600080600060e0888a0312156124e257600080fd5b6124eb88612278565b96506124f960208901612278565b95506040880135945060608801359350608088013560ff8116811461251d57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561254d57600080fd5b61255683612278565b915061234360208401612278565b600181811c9082168061257857607f821691505b60208210811415611c3d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b8054600090600181811c90808316806125cc57607f831692505b6020808410821415612607577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b8388526020880182801561262257600181146126515761267c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0087168252828201975061267c565b60008981526020902060005b878110156126765781548482015290860190840161265d565b83019850505b5050505050505092915050565b60408152600061269c60408301856125b2565b828103602084015261170981856125b2565b6000602082840312156126c057600080fd5b81518015158114610a8a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115612712576127126126d0565b500190565b600082821015612729576127296126d0565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201bee284b4d8e4bb789461cb33680ff61e63852e0240a14da24cf01309182f12a64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061020b5760003560e01c806379cc67901161012a578063a8a778ae116100bd578063d505accf1161008c578063d547741f11610071578063d547741f146104d6578063dd62ed3e146104e9578063efa007361461052f57600080fd5b8063d505accf1461049c578063d5391393146104af57600080fd5b8063a8a778ae14610450578063a9059cbb14610463578063b4f56b2614610476578063ca15c8731461048957600080fd5b806391d14854116100f957806391d148541461041a57806395d89b411461042d578063a217fddf14610435578063a457c2d71461043d57600080fd5b806379cc67901461039c5780637ecebe00146103af57806383e2d870146103c25780639010d07c1461040757600080fd5b80633644e515116101a257806342966c681161017157806342966c681461033057806351e238e3146103435780635a4462151461035357806370a082311461036657600080fd5b80633644e515146102ef57806336568abe146102f7578063395093511461030a57806340c10f191461031d57600080fd5b8063248a9ca3116101de578063248a9ca3146102765780632f2ff15d14610299578063313ce567146102ae57806334ddb95d146102c857600080fd5b806306fdde0314610210578063095ea7b31461022e57806318160ddd1461025157806323b872dd14610263575b600080fd5b610218610542565b6040516102259190612205565b60405180910390f35b61024161023c3660046122a1565b6105d0565b6040519015158152602001610225565b6002545b604051908152602001610225565b6102416102713660046122cb565b6105e7565b610255610284366004612307565b60009081526004602052604090206002015490565b6102ac6102a7366004612320565b61067b565b005b6102b6601281565b60405160ff9091168152602001610225565b6102557f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610255610736565b6102ac610305366004612320565b610745565b6102416103183660046122a1565b6107f4565b6102ac61032b3660046122a1565b610837565b6102ac61033e366004612307565b6108f7565b61025568056bc75e2d6310000081565b6102ac610361366004612426565b610904565b61025561037436600461248a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6102ac6103aa3660046122a1565b6109fb565b6102556103bd36600461248a565b610a47565b6007546103e29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610225565b6103e26104153660046124a5565b610a72565b610241610428366004612320565b610a91565b610218610aa9565b610255600081565b61024161044b3660046122a1565b610ab6565b6102ac61045e3660046122a1565b610b12565b6102416104713660046122a1565b610c8c565b6102ac6104843660046122a1565b610c99565b610255610497366004612307565b610e0b565b6102ac6104aa3660046124c7565b610e22565b6102557f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102ac6104e4366004612320565b610fe1565b6102556104f736600461253a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6102ac61053d36600461248a565b611089565b6006805461054f90612564565b80601f016020809104026020016040519081016040528092919081815260200182805461057b90612564565b80156105c85780601f1061059d576101008083540402835291602001916105c8565b820191906000526020600020905b8154815290600101906020018083116105ab57829003601f168201915b505050505081565b60006105dd3384846112e0565b5060015b92915050565b60006105f4848484611494565b610671843361066c856040518060600160405280602881526020016127d56028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020526040812090335b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205491906116be565b6112e0565b5060019392505050565b6000828152600460205260409020600201546106979033610a91565b610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084015b60405180910390fd5b6107328282611712565b5050565b6000610740611778565b905090565b73ffffffffffffffffffffffffffffffffffffffff811633146107ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c660000000000000000000000000000000000606482015260840161071f565b610732828261186b565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105dd91859061066c9086611235565b6108617f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610a91565b6108ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f444555533a204f6e6c79206d696e746572732061726520616c6c6f776564207460448201527f6f20646f2074686973206f7065726174696f6e00000000000000000000000000606482015260840161071f565b61073282826118d1565b61090133826119e9565b50565b61092e7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610a91565b610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f444555533a20596f7520617265206e6f74207472757374790000000000000000604482015260640161071f565b81516109a790600690602085019061216c565b5080516109bb90600590602084019061216c565b507f24a9aef9121ba62598f20f8f80fd406fa1d2d956747e0728068c649f324ddf41600660056040516109ef929190612689565b60405180910390a15050565b6000610a2b826040518060600160405280602481526020016127fd60249139610a2486336104f7565b91906116be565b9050610a388333836112e0565b610a4283836119e9565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600360205260408120546105e1565b6000828152600460205260408120610a8a9083611b57565b9392505050565b6000828152600460205260408120610a8a9083611b6d565b6005805461054f90612564565b60006105dd338461066c856040518060600160405280602581526020016128216025913933600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d16845290915290205491906116be565b6007546040517f15ea919c00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff909116906315ea919c90602401602060405180830381865afa158015610b80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba491906126ae565b610c30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f444555533a204f6e6c792064656920706f6f6c732061726520616c6c6f77656460448201527f20746f20646f2074686973206f7065726174696f6e0000000000000000000000606482015260840161071f565b610c3a8282611bac565b604051818152309073ffffffffffffffffffffffffffffffffffffffff8416907ffea1faea8b86058686e38c71a510e9ba19bc719a67a74e590aa5f68dfdfc21be906020015b60405180910390a35050565b60006105dd338484611494565b6007546040517f15ea919c00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff909116906315ea919c90602401602060405180830381865afa158015610d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2b91906126ae565b610db7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f444555533a204f6e6c792064656920706f6f6c732061726520616c6c6f77656460448201527f20746f20646f2074686973206f7065726174696f6e0000000000000000000000606482015260840161071f565b610dc182826118d1565b60405181815273ffffffffffffffffffffffffffffffffffffffff83169030907fdcdaf2f9efb1a9727c667bcd34ba547e3ce5ec7f3af304aa8829a5e590211d7e90602001610c80565b60008181526004602052604081206105e190611c04565b83421115610e8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161071f565b60007f0000000000000000000000000000000000000000000000000000000000000000888888610ebb8c611c0e565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610f2382611c43565b90506000610f3382878787611cac565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610fca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161071f565b610fd58a8a8a6112e0565b50505050505050505050565b600082815260046020526040902060020154610ffd9033610a91565b6107ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b6500000000000000000000000000000000606482015260840161071f565b6110b37f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610a91565b611119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f444555533a20596f7520617265206e6f74207472757374790000000000000000604482015260640161071f565b73ffffffffffffffffffffffffffffffffffffffff81166111bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f444555533a3a736574444549416464726573733a205a65726f2061646472657360448201527f7320646574656374656400000000000000000000000000000000000000000000606482015260840161071f565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f0692ea78a01b96b5abe8a744eae1de9f7f001f685fd013f0c552220d563d4ba79060200160405180910390a150565b60008061124283856126ff565b905083811015610a8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161071f565b6000610a8a837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16611efb565b73ffffffffffffffffffffffffffffffffffffffff8316611382576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161071f565b73ffffffffffffffffffffffffffffffffffffffff8216611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161071f565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161071f565b73ffffffffffffffffffffffffffffffffffffffff82166115da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161071f565b611624816040518060600160405280602681526020016127af6026913973ffffffffffffffffffffffffffffffffffffffff861660009081526020819052604090205491906116be565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546116609082611235565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611487565b600081848411156116fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f9190612205565b5060006117098486612717565b95945050505050565b600082815260046020526040902061172a90826112ae565b1561073257604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b60007f00000000000000000000000000000000000000000000000000000000000000004614156117c757507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008281526004602052604090206118839082611f4a565b1561073257604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b73ffffffffffffffffffffffffffffffffffffffff821661194e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161071f565b60025461195b9082611235565b60025573ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461198e9082611235565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610c80565b73ffffffffffffffffffffffffffffffffffffffff8216611a8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161071f565b611ad68160405180606001604052806022815260200161278d6022913973ffffffffffffffffffffffffffffffffffffffff851660009081526020819052604090205491906116be565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055600254611b099082611f7c565b60025560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610c80565b6000611b638383611fbe565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660009081526001830160205260408120541515610a8a565b611bb682826119e9565b610732823361066c846040518060600160405280602481526020016127fd6024913973ffffffffffffffffffffffffffffffffffffffff88166000908152600160205260408120903361063e565b60006105e1825490565b73ffffffffffffffffffffffffffffffffffffffff811660009081526003602052604090208054600181018255905b50919050565b60006105e1611c50611778565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115611d5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161071f565b8360ff16601b1480611d7357508360ff16601c145b611dff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161071f565b6040805160008082526020820180845288905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa158015611e53573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161071f565b6000818152600183016020526040812054611f42575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105e1565b5060006105e1565b6000610a8a837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16612079565b6000610a8a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116be565b81546000908210612051576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f6473000000000000000000000000000000000000000000000000000000000000606482015260840161071f565b8260000182815481106120665761206661272e565b9060005260206000200154905092915050565b6000818152600183016020526040812054801561216257600061209d600183612717565b85549091506000906120b190600190612717565b905060008660000182815481106120ca576120ca61272e565b90600052602060002001549050808760000184815481106120ed576120ed61272e565b6000918252602090912001556121048360016126ff565b600082815260018901602052604090205586548790806121265761212661275d565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506105e1565b60009150506105e1565b82805461217890612564565b90600052602060002090601f01602090048101928261219a57600085556121e0565b82601f106121b357805160ff19168380011785556121e0565b828001600101855582156121e0579182015b828111156121e05782518255916020019190600101906121c5565b506121ec9291506121f0565b5090565b5b808211156121ec57600081556001016121f1565b600060208083528351808285015260005b8181101561223257858101830151858201604001528201612216565b81811115612244576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461229c57600080fd5b919050565b600080604083850312156122b457600080fd5b6122bd83612278565b946020939093013593505050565b6000806000606084860312156122e057600080fd5b6122e984612278565b92506122f760208501612278565b9150604084013590509250925092565b60006020828403121561231957600080fd5b5035919050565b6000806040838503121561233357600080fd5b8235915061234360208401612278565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261238c57600080fd5b813567ffffffffffffffff808211156123a7576123a761234c565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156123ed576123ed61234c565b8160405283815286602085880101111561240657600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561243957600080fd5b823567ffffffffffffffff8082111561245157600080fd5b61245d8683870161237b565b9350602085013591508082111561247357600080fd5b506124808582860161237b565b9150509250929050565b60006020828403121561249c57600080fd5b610a8a82612278565b600080604083850312156124b857600080fd5b50508035926020909101359150565b600080600080600080600060e0888a0312156124e257600080fd5b6124eb88612278565b96506124f960208901612278565b95506040880135945060608801359350608088013560ff8116811461251d57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561254d57600080fd5b61255683612278565b915061234360208401612278565b600181811c9082168061257857607f821691505b60208210811415611c3d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b8054600090600181811c90808316806125cc57607f831692505b6020808410821415612607577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b8388526020880182801561262257600181146126515761267c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0087168252828201975061267c565b60008981526020902060005b878110156126765781548482015290860190840161265d565b83019850505b5050505050505092915050565b60408152600061269c60408301856125b2565b828103602084015261170981856125b2565b6000602082840312156126c057600080fd5b81518015158114610a8a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115612712576127126126d0565b500190565b600082821015612729576127296126d0565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201bee284b4d8e4bb789461cb33680ff61e63852e0240a14da24cf01309182f12a64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/DEUS/IDEUS.sol/IDEUSToken.dbg.json b/artifacts/contracts/DEUS/IDEUS.sol/IDEUSToken.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/DEUS/IDEUS.sol/IDEUSToken.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/DEUS/IDEUS.sol/IDEUSToken.json b/artifacts/contracts/DEUS/IDEUS.sol/IDEUSToken.json new file mode 100644 index 00000000..5ca736e5 --- /dev/null +++ b/artifacts/contracts/DEUS/IDEUS.sol/IDEUSToken.json @@ -0,0 +1,122 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IDEUSToken", + "sourceName": "contracts/DEUS/IDEUS.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "b_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "b_amount", + "type": "uint256" + } + ], + "name": "pool_burn_from", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "m_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "m_amount", + "type": "uint256" + } + ], + "name": "pool_mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "dei_contract_address", + "type": "address" + } + ], + "name": "setDEIAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + } + ], + "name": "setNameAndSymbol", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/ERC165/ERC165.sol/ERC165.dbg.json b/artifacts/contracts/ERC165/ERC165.sol/ERC165.dbg.json new file mode 100644 index 00000000..c0e3889e --- /dev/null +++ b/artifacts/contracts/ERC165/ERC165.sol/ERC165.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/4379f7a7e90ec4224805b9ed7de86d97.json" +} diff --git a/artifacts/contracts/ERC165/ERC165.sol/ERC165.json b/artifacts/contracts/ERC165/ERC165.sol/ERC165.json new file mode 100644 index 00000000..f6aa58e0 --- /dev/null +++ b/artifacts/contracts/ERC165/ERC165.sol/ERC165.json @@ -0,0 +1,30 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC165", + "sourceName": "contracts/ERC165/ERC165.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/ERC165/IERC165.sol/IERC165.dbg.json b/artifacts/contracts/ERC165/IERC165.sol/IERC165.dbg.json new file mode 100644 index 00000000..c0e3889e --- /dev/null +++ b/artifacts/contracts/ERC165/IERC165.sol/IERC165.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/4379f7a7e90ec4224805b9ed7de86d97.json" +} diff --git a/artifacts/contracts/ERC165/IERC165.sol/IERC165.json b/artifacts/contracts/ERC165/IERC165.sol/IERC165.json new file mode 100644 index 00000000..fd8f4888 --- /dev/null +++ b/artifacts/contracts/ERC165/IERC165.sol/IERC165.json @@ -0,0 +1,30 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC165", + "sourceName": "contracts/ERC165/IERC165.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/ERC20/ERC20.sol/ERC20.dbg.json b/artifacts/contracts/ERC20/ERC20.sol/ERC20.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/ERC20/ERC20.sol/ERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/ERC20/ERC20.sol/ERC20.json b/artifacts/contracts/ERC20/ERC20.sol/ERC20.json new file mode 100644 index 00000000..b570b8d8 --- /dev/null +++ b/artifacts/contracts/ERC20/ERC20.sol/ERC20.json @@ -0,0 +1,328 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC20", + "sourceName": "contracts/ERC20/ERC20.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "__name", + "type": "string" + }, + { + "internalType": "string", + "name": "__symbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b506040516200108d3803806200108d8339810160408190526200003491620001e8565b81516200004990600390602085019062000075565b5080516200005f90600490602084019062000075565b50506005805460ff19166012179055506200028f565b828054620000839062000252565b90600052602060002090601f016020900481019282620000a75760008555620000f2565b82601f10620000c257805160ff1916838001178555620000f2565b82800160010185558215620000f2579182015b82811115620000f2578251825591602001919060010190620000d5565b506200010092915062000104565b5090565b5b8082111562000100576000815560010162000105565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200014357600080fd5b81516001600160401b03808211156200016057620001606200011b565b604051601f8301601f19908116603f011681019082821181831017156200018b576200018b6200011b565b81604052838152602092508683858801011115620001a857600080fd5b600091505b83821015620001cc5785820183015181830184015290820190620001ad565b83821115620001de5760008385830101525b9695505050505050565b60008060408385031215620001fc57600080fd5b82516001600160401b03808211156200021457600080fd5b620002228683870162000131565b935060208501519150808211156200023957600080fd5b50620002488582860162000131565b9150509250929050565b600181811c908216806200026757607f821691505b602082108114156200028957634e487b7160e01b600052602260045260246000fd5b50919050565b610dee806200029f6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101d0578063a457c2d7146101d8578063a9059cbb146101eb578063dd62ed3e146101fe57600080fd5b806342966c681461017257806370a082311461018757806379cc6790146101bd57600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a578063395093511461015f57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610244565b6040516100f99190610ae4565b60405180910390f35b610115610110366004610b80565b6102d6565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610baa565b6102ec565b60055460405160ff90911681526020016100f9565b61011561016d366004610b80565b610362565b610185610180366004610be6565b6103a5565b005b610129610195366004610bff565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101856101cb366004610b80565b6103b2565b6100ec6103fe565b6101156101e6366004610b80565b61040d565b6101156101f9366004610b80565b610469565b61012961020c366004610c1a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461025390610c4d565b80601f016020809104026020016040519081016040528092919081815260200182805461027f90610c4d565b80156102cc5780601f106102a1576101008083540402835291602001916102cc565b820191906000526020600020905b8154815290600101906020018083116102af57829003601f168201915b5050505050905090565b60006102e3338484610476565b50600192915050565b60006102f984848461062f565b610358843361035385604051806060016040528060288152602001610d486028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602090815260408083203384529091529020549190610859565b610476565b5060019392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916102e391859061035390866108ad565b6103af338261092d565b50565b60006103e282604051806060016040528060248152602001610d70602491396103db863361020c565b9190610859565b90506103ef833383610476565b6103f9838361092d565b505050565b60606004805461025390610c4d565b60006102e3338461035385604051806060016040528060258152602001610d946025913933600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d1684529091529020549190610859565b60006102e333848461062f565b73ffffffffffffffffffffffffffffffffffffffff831661051d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166105c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610514565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166106d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610514565b73ffffffffffffffffffffffffffffffffffffffff8216610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610514565b6107bf81604051806060016040528060268152602001610d226026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610859565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546107fb90826108ad565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610622565b60008184841115610897576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105149190610ae4565b5060006108a48486610cd0565b95945050505050565b6000806108ba8385610ce7565b905083811015610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610514565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166109d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610514565b610a1a81604051806060016040528060228152602001610d006022913973ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020549190610859565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055600254610a4d9082610aa2565b60025560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600061092683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610859565b600060208083528351808285015260005b81811015610b1157858101830151858201604001528201610af5565b81811115610b23576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b7b57600080fd5b919050565b60008060408385031215610b9357600080fd5b610b9c83610b57565b946020939093013593505050565b600080600060608486031215610bbf57600080fd5b610bc884610b57565b9250610bd660208501610b57565b9150604084013590509250925092565b600060208284031215610bf857600080fd5b5035919050565b600060208284031215610c1157600080fd5b61092682610b57565b60008060408385031215610c2d57600080fd5b610c3683610b57565b9150610c4460208401610b57565b90509250929050565b600181811c90821680610c6157607f821691505b60208210811415610c9b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015610ce257610ce2610ca1565b500390565b60008219821115610cfa57610cfa610ca1565b50019056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f8f41df83324fe1a4cbabff272a02d5b798e1c83a21e4e426ec7cebbc8be6fbf64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100df5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101d0578063a457c2d7146101d8578063a9059cbb146101eb578063dd62ed3e146101fe57600080fd5b806342966c681461017257806370a082311461018757806379cc6790146101bd57600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a578063395093511461015f57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610244565b6040516100f99190610ae4565b60405180910390f35b610115610110366004610b80565b6102d6565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610baa565b6102ec565b60055460405160ff90911681526020016100f9565b61011561016d366004610b80565b610362565b610185610180366004610be6565b6103a5565b005b610129610195366004610bff565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101856101cb366004610b80565b6103b2565b6100ec6103fe565b6101156101e6366004610b80565b61040d565b6101156101f9366004610b80565b610469565b61012961020c366004610c1a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461025390610c4d565b80601f016020809104026020016040519081016040528092919081815260200182805461027f90610c4d565b80156102cc5780601f106102a1576101008083540402835291602001916102cc565b820191906000526020600020905b8154815290600101906020018083116102af57829003601f168201915b5050505050905090565b60006102e3338484610476565b50600192915050565b60006102f984848461062f565b610358843361035385604051806060016040528060288152602001610d486028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602090815260408083203384529091529020549190610859565b610476565b5060019392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916102e391859061035390866108ad565b6103af338261092d565b50565b60006103e282604051806060016040528060248152602001610d70602491396103db863361020c565b9190610859565b90506103ef833383610476565b6103f9838361092d565b505050565b60606004805461025390610c4d565b60006102e3338461035385604051806060016040528060258152602001610d946025913933600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d1684529091529020549190610859565b60006102e333848461062f565b73ffffffffffffffffffffffffffffffffffffffff831661051d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166105c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610514565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166106d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610514565b73ffffffffffffffffffffffffffffffffffffffff8216610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610514565b6107bf81604051806060016040528060268152602001610d226026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610859565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546107fb90826108ad565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610622565b60008184841115610897576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105149190610ae4565b5060006108a48486610cd0565b95945050505050565b6000806108ba8385610ce7565b905083811015610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610514565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166109d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610514565b610a1a81604051806060016040528060228152602001610d006022913973ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020549190610859565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055600254610a4d9082610aa2565b60025560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600061092683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610859565b600060208083528351808285015260005b81811015610b1157858101830151858201604001528201610af5565b81811115610b23576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b7b57600080fd5b919050565b60008060408385031215610b9357600080fd5b610b9c83610b57565b946020939093013593505050565b600080600060608486031215610bbf57600080fd5b610bc884610b57565b9250610bd660208501610b57565b9150604084013590509250925092565b600060208284031215610bf857600080fd5b5035919050565b600060208284031215610c1157600080fd5b61092682610b57565b60008060408385031215610c2d57600080fd5b610c3683610b57565b9150610c4460208401610b57565b90509250929050565b600181811c90821680610c6157607f821691505b60208210811415610c9b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015610ce257610ce2610ca1565b500390565b60008219821115610cfa57610cfa610ca1565b50019056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f8f41df83324fe1a4cbabff272a02d5b798e1c83a21e4e426ec7cebbc8be6fbf64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/ERC20/ERC20Custom.sol/ERC20Custom.dbg.json b/artifacts/contracts/ERC20/ERC20Custom.sol/ERC20Custom.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/ERC20/ERC20Custom.sol/ERC20Custom.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/ERC20/ERC20Custom.sol/ERC20Custom.json b/artifacts/contracts/ERC20/ERC20Custom.sol/ERC20Custom.json new file mode 100644 index 00000000..18f249e5 --- /dev/null +++ b/artifacts/contracts/ERC20/ERC20Custom.sol/ERC20Custom.json @@ -0,0 +1,273 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC20Custom", + "sourceName": "contracts/ERC20/ERC20Custom.sol", + "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": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "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" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610ca2806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806370a0823111610076578063a457c2d71161005b578063a457c2d714610181578063a9059cbb14610194578063dd62ed3e146101a757600080fd5b806370a082311461013857806379cc67901461016e57600080fd5b806323b872dd116100a757806323b872dd146100fd578063395093511461011057806342966c681461012357600080fd5b8063095ea7b3146100c357806318160ddd146100eb575b600080fd5b6100d66100d1366004610a15565b6101ed565b60405190151581526020015b60405180910390f35b6002545b6040519081526020016100e2565b6100d661010b366004610a3f565b610203565b6100d661011e366004610a15565b610279565b610136610131366004610a7b565b6102bc565b005b6100ef610146366004610a94565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61013661017c366004610a15565b6102c9565b6100d661018f366004610a15565b610315565b6100d66101a2366004610a15565b610371565b6100ef6101b5366004610aaf565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60006101fa33848461037e565b50600192915050565b6000610210848484610537565b61026f843361026a85604051806060016040528060288152602001610bfc6028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602090815260408083203384529091529020549190610761565b61037e565b5060019392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916101fa91859061026a90866107b5565b6102c63382610835565b50565b60006102f982604051806060016040528060248152602001610c24602491396102f286336101b5565b9190610761565b905061030683338361037e565b6103108383610835565b505050565b60006101fa338461026a85604051806060016040528060258152602001610c486025913933600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d1684529091529020549190610761565b60006101fa338484610537565b73ffffffffffffffffffffffffffffffffffffffff8316610425576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166104c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161041c565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166105da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161041c565b73ffffffffffffffffffffffffffffffffffffffff821661067d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161041c565b6106c781604051806060016040528060268152602001610bd66026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610761565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220939093559084168152205461070390826107b5565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161052a565b6000818484111561079f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041c9190610ae2565b5060006107ac8486610b84565b95945050505050565b6000806107c28385610b9b565b90508381101561082e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161041c565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166108d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161041c565b61092281604051806060016040528060228152602001610bb46022913973ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020549190610761565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205560025461095590826109aa565b60025560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600061082e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610761565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a1057600080fd5b919050565b60008060408385031215610a2857600080fd5b610a31836109ec565b946020939093013593505050565b600080600060608486031215610a5457600080fd5b610a5d846109ec565b9250610a6b602085016109ec565b9150604084013590509250925092565b600060208284031215610a8d57600080fd5b5035919050565b600060208284031215610aa657600080fd5b61082e826109ec565b60008060408385031215610ac257600080fd5b610acb836109ec565b9150610ad9602084016109ec565b90509250929050565b600060208083528351808285015260005b81811015610b0f57858101830151858201604001528201610af3565b81811115610b21576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015610b9657610b96610b55565b500390565b60008219821115610bae57610bae610b55565b50019056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203df39b758a01ee8ffab594575934b755c8f8548a12a047f39510eb3256aff33b64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100be5760003560e01c806370a0823111610076578063a457c2d71161005b578063a457c2d714610181578063a9059cbb14610194578063dd62ed3e146101a757600080fd5b806370a082311461013857806379cc67901461016e57600080fd5b806323b872dd116100a757806323b872dd146100fd578063395093511461011057806342966c681461012357600080fd5b8063095ea7b3146100c357806318160ddd146100eb575b600080fd5b6100d66100d1366004610a15565b6101ed565b60405190151581526020015b60405180910390f35b6002545b6040519081526020016100e2565b6100d661010b366004610a3f565b610203565b6100d661011e366004610a15565b610279565b610136610131366004610a7b565b6102bc565b005b6100ef610146366004610a94565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61013661017c366004610a15565b6102c9565b6100d661018f366004610a15565b610315565b6100d66101a2366004610a15565b610371565b6100ef6101b5366004610aaf565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60006101fa33848461037e565b50600192915050565b6000610210848484610537565b61026f843361026a85604051806060016040528060288152602001610bfc6028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526001602090815260408083203384529091529020549190610761565b61037e565b5060019392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916101fa91859061026a90866107b5565b6102c63382610835565b50565b60006102f982604051806060016040528060248152602001610c24602491396102f286336101b5565b9190610761565b905061030683338361037e565b6103108383610835565b505050565b60006101fa338461026a85604051806060016040528060258152602001610c486025913933600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d1684529091529020549190610761565b60006101fa338484610537565b73ffffffffffffffffffffffffffffffffffffffff8316610425576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166104c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161041c565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166105da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161041c565b73ffffffffffffffffffffffffffffffffffffffff821661067d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161041c565b6106c781604051806060016040528060268152602001610bd66026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610761565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220939093559084168152205461070390826107b5565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161052a565b6000818484111561079f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041c9190610ae2565b5060006107ac8486610b84565b95945050505050565b6000806107c28385610b9b565b90508381101561082e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161041c565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166108d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161041c565b61092281604051806060016040528060228152602001610bb46022913973ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020549190610761565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205560025461095590826109aa565b60025560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600061082e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610761565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a1057600080fd5b919050565b60008060408385031215610a2857600080fd5b610a31836109ec565b946020939093013593505050565b600080600060608486031215610a5457600080fd5b610a5d846109ec565b9250610a6b602085016109ec565b9150604084013590509250925092565b600060208284031215610a8d57600080fd5b5035919050565b600060208284031215610aa657600080fd5b61082e826109ec565b60008060408385031215610ac257600080fd5b610acb836109ec565b9150610ad9602084016109ec565b90509250929050565b600060208083528351808285015260005b81811015610b0f57858101830151858201604001528201610af3565b81811115610b21576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015610b9657610b96610b55565b500390565b60008219821115610bae57610bae610b55565b50019056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203df39b758a01ee8ffab594575934b755c8f8548a12a047f39510eb3256aff33b64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/ERC20/IERC20.sol/IERC20.dbg.json b/artifacts/contracts/ERC20/IERC20.sol/IERC20.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/ERC20/IERC20.sol/IERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/ERC20/IERC20.sol/IERC20.json b/artifacts/contracts/ERC20/IERC20.sol/IERC20.json new file mode 100644 index 00000000..c060f6db --- /dev/null +++ b/artifacts/contracts/ERC20/IERC20.sol/IERC20.json @@ -0,0 +1,194 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC20", + "sourceName": "contracts/ERC20/IERC20.sol", + "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" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/ERC20/IERC20_Detailed.sol/IERC20_Detailed.dbg.json b/artifacts/contracts/ERC20/IERC20_Detailed.sol/IERC20_Detailed.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/ERC20/IERC20_Detailed.sol/IERC20_Detailed.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/ERC20/IERC20_Detailed.sol/IERC20_Detailed.json b/artifacts/contracts/ERC20/IERC20_Detailed.sol/IERC20_Detailed.json new file mode 100644 index 00000000..ee7e4926 --- /dev/null +++ b/artifacts/contracts/ERC20/IERC20_Detailed.sol/IERC20_Detailed.json @@ -0,0 +1,233 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC20_Detailed", + "sourceName": "contracts/ERC20/IERC20_Detailed.sol", + "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": [], + "name": "_decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "_name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "_symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "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" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/ERC20/IWETH.sol/IWETH.dbg.json b/artifacts/contracts/ERC20/IWETH.sol/IWETH.dbg.json new file mode 100644 index 00000000..e4eaeef6 --- /dev/null +++ b/artifacts/contracts/ERC20/IWETH.sol/IWETH.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/bb8d59f3a7a2a485b603276e00bcd4a5.json" +} diff --git a/artifacts/contracts/ERC20/IWETH.sol/IWETH.json b/artifacts/contracts/ERC20/IWETH.sol/IWETH.json new file mode 100644 index 00000000..4f988781 --- /dev/null +++ b/artifacts/contracts/ERC20/IWETH.sol/IWETH.json @@ -0,0 +1,84 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IWETH", + "sourceName": "contracts/ERC20/IWETH.sol", + "abi": [ + { + "inputs": [], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "wad", + "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" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/ERC20/SafeERC20.sol/SafeERC20.dbg.json b/artifacts/contracts/ERC20/SafeERC20.sol/SafeERC20.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/ERC20/SafeERC20.sol/SafeERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/ERC20/SafeERC20.sol/SafeERC20.json b/artifacts/contracts/ERC20/SafeERC20.sol/SafeERC20.json new file mode 100644 index 00000000..0495bf45 --- /dev/null +++ b/artifacts/contracts/ERC20/SafeERC20.sol/SafeERC20.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SafeERC20", + "sourceName": "contracts/ERC20/SafeERC20.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ec8286e5eb87da5a9c4d95867d03d290fa8c7c52889b1c94fb5902616732b3a164736f6c634300080a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ec8286e5eb87da5a9c4d95867d03d290fa8c7c52889b1c94fb5902616732b3a164736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/ERC20/WETH.sol/WETH.dbg.json b/artifacts/contracts/ERC20/WETH.sol/WETH.dbg.json new file mode 100644 index 00000000..a38a553d --- /dev/null +++ b/artifacts/contracts/ERC20/WETH.sol/WETH.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/36a19eee347e9afe5dc7fbfa349bb293.json" +} diff --git a/artifacts/contracts/ERC20/WETH.sol/WETH.json b/artifacts/contracts/ERC20/WETH.sol/WETH.json new file mode 100644 index 00000000..402e2fdd --- /dev/null +++ b/artifacts/contracts/ERC20/WETH.sol/WETH.json @@ -0,0 +1,310 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "WETH", + "sourceName": "contracts/ERC20/WETH.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_creator_address", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "guy", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Withdrawal", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "guy", + "type": "address" + }, + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x60c0604052600d60808190526c2bb930b83832b21022ba3432b960991b60a090815261002e91600091906100c2565b50604080518082019091526004808252630ae8aa8960e31b602090920191825261005a916001916100c2565b506002805460ff1916601217905534801561007457600080fd5b506040516109713803806109718339818101604052602081101561009757600080fd5b50516001600160a01b0316600090815260036020526040902069d3c21bcecceda1000000905561015d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061010357805160ff1916838001178555610130565b82800160010185558215610130579182015b82811115610130578251825591602001919060010190610115565b5061013c929150610140565b5090565b61015a91905b8082111561013c5760008155600101610146565b90565b6108058061016c6000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102d6578063d0e30db0146100c7578063dd62ed3e1461031c576100c7565b8063313ce5671461025657806370a082311461028157806395d89b41146102c1576100c7565b806318160ddd116100a557806318160ddd146101b557806323b872dd146101dc5780632e1a7d4d1461022c576100c7565b806306fdde03146100d1578063095ea7b31461015b576100c7565b366100c757005b6100cf610364565b005b3480156100dd57600080fd5b506100e66103b3565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610120578181015183820152602001610108565b50505050905090810190601f16801561014d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561016757600080fd5b506101a16004803603604081101561017e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561045f565b604080519115158252519081900360200190f35b3480156101c157600080fd5b506101ca6104d2565b60408051918252519081900360200190f35b3480156101e857600080fd5b506101a1600480360360608110156101ff57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104d6565b34801561023857600080fd5b506100cf6004803603602081101561024f57600080fd5b5035610676565b34801561026257600080fd5b5061026b61070b565b6040805160ff9092168252519081900360200190f35b34801561028d57600080fd5b506101ca600480360360208110156102a457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610714565b3480156102cd57600080fd5b506100e6610726565b3480156102e257600080fd5b506101a1600480360360408110156102f957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561079e565b34801561032857600080fd5b506101ca6004803603604081101561033f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166107b2565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104575780601f1061042c57610100808354040283529160200191610457565b820191906000526020600020905b81548152906001019060200180831161043a57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561050857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8416331480159061057e575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105f85773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156105c057600080fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b3360009081526003602052604090205481111561069257600080fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f193505050501580156106d1573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104575780601f1061042c57610100808354040283529160200191610457565b60006107ab3384846104d6565b9392505050565b60046020908152600092835260408084209091529082529020548156fea264697066735822122089c90773a69db399af1f4646178030964dee586890599a9aae37e0270441a7c164736f6c634300060b0033", + "deployedBytecode": "0x6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102d6578063d0e30db0146100c7578063dd62ed3e1461031c576100c7565b8063313ce5671461025657806370a082311461028157806395d89b41146102c1576100c7565b806318160ddd116100a557806318160ddd146101b557806323b872dd146101dc5780632e1a7d4d1461022c576100c7565b806306fdde03146100d1578063095ea7b31461015b576100c7565b366100c757005b6100cf610364565b005b3480156100dd57600080fd5b506100e66103b3565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610120578181015183820152602001610108565b50505050905090810190601f16801561014d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561016757600080fd5b506101a16004803603604081101561017e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561045f565b604080519115158252519081900360200190f35b3480156101c157600080fd5b506101ca6104d2565b60408051918252519081900360200190f35b3480156101e857600080fd5b506101a1600480360360608110156101ff57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104d6565b34801561023857600080fd5b506100cf6004803603602081101561024f57600080fd5b5035610676565b34801561026257600080fd5b5061026b61070b565b6040805160ff9092168252519081900360200190f35b34801561028d57600080fd5b506101ca600480360360208110156102a457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610714565b3480156102cd57600080fd5b506100e6610726565b3480156102e257600080fd5b506101a1600480360360408110156102f957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561079e565b34801561032857600080fd5b506101ca6004803603604081101561033f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166107b2565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104575780601f1061042c57610100808354040283529160200191610457565b820191906000526020600020905b81548152906001019060200180831161043a57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561050857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8416331480159061057e575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105f85773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156105c057600080fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b3360009081526003602052604090205481111561069257600080fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f193505050501580156106d1573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104575780601f1061042c57610100808354040283529160200191610457565b60006107ab3384846104d6565b9392505050565b60046020908152600092835260408084209091529082529020548156fea264697066735822122089c90773a69db399af1f4646178030964dee586890599a9aae37e0270441a7c164736f6c634300060b0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/ERC20/draft-ERC20Permit.sol/ERC20Permit.dbg.json b/artifacts/contracts/ERC20/draft-ERC20Permit.sol/ERC20Permit.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/ERC20/draft-ERC20Permit.sol/ERC20Permit.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/ERC20/draft-ERC20Permit.sol/ERC20Permit.json b/artifacts/contracts/ERC20/draft-ERC20Permit.sol/ERC20Permit.json new file mode 100644 index 00000000..5d870b91 --- /dev/null +++ b/artifacts/contracts/ERC20/draft-ERC20Permit.sol/ERC20Permit.json @@ -0,0 +1,348 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC20Permit", + "sourceName": "contracts/ERC20/draft-ERC20Permit.sol", + "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": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "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" + }, + { + "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" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/ERC721/ERC721.sol/ERC721.dbg.json b/artifacts/contracts/ERC721/ERC721.sol/ERC721.dbg.json new file mode 100644 index 00000000..c0e3889e --- /dev/null +++ b/artifacts/contracts/ERC721/ERC721.sol/ERC721.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/4379f7a7e90ec4224805b9ed7de86d97.json" +} diff --git a/artifacts/contracts/ERC721/ERC721.sol/ERC721.json b/artifacts/contracts/ERC721/ERC721.sol/ERC721.json new file mode 100644 index 00000000..d9d671c1 --- /dev/null +++ b/artifacts/contracts/ERC721/ERC721.sol/ERC721.json @@ -0,0 +1,426 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC721", + "sourceName": "contracts/ERC721/ERC721.sol", + "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" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b506040516200211f3803806200211f8339810160408190526200003491620002a7565b620000466301ffc9a760e01b620000b0565b81516200005b90600690602085019062000134565b5080516200007190600790602084019062000134565b50620000846380ac58cd60e01b620000b0565b62000096635b5e139f60e01b620000b0565b620000a863780e9d6360e01b620000b0565b50506200034e565b6001600160e01b031980821614156200010f5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640160405180910390fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b828054620001429062000311565b90600052602060002090601f016020900481019282620001665760008555620001b1565b82601f106200018157805160ff1916838001178555620001b1565b82800160010185558215620001b1579182015b82811115620001b157825182559160200191906001019062000194565b50620001bf929150620001c3565b5090565b5b80821115620001bf5760008155600101620001c4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020257600080fd5b81516001600160401b03808211156200021f576200021f620001da565b604051601f8301601f19908116603f011681019082821181831017156200024a576200024a620001da565b816040528381526020925086838588010111156200026757600080fd5b600091505b838210156200028b57858201830151818301840152908201906200026c565b838211156200029d5760008385830101525b9695505050505050565b60008060408385031215620002bb57600080fd5b82516001600160401b0380821115620002d357600080fd5b620002e186838701620001f0565b93506020850151915080821115620002f857600080fd5b506200030785828601620001f0565b9150509250929050565b600181811c908216806200032657607f821691505b602082108114156200034857634e487b7160e01b600052602260045260246000fd5b50919050565b611dc1806200035e6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80634f6ccce7116100b257806395d89b4111610081578063b88d4fde11610066578063b88d4fde14610287578063c87b56dd1461029a578063e985e9c5146102ad57600080fd5b806395d89b411461026c578063a22cb4651461027457600080fd5b80634f6ccce71461022b5780636352211e1461023e5780636c0360eb1461025157806370a082311461025957600080fd5b806318160ddd116100ee57806318160ddd146101dc57806323b872dd146101f25780632f745c591461020557806342842e0e1461021857600080fd5b806301ffc9a71461012057806306fdde031461017a578063081812fc1461018f578063095ea7b3146101c7575b600080fd5b61016561012e36600461182c565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101826102f6565b60405161017191906118bf565b6101a261019d3660046118d2565b610388565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610171565b6101da6101d5366004611914565b61044d565b005b6101e46105da565b604051908152602001610171565b6101da61020036600461193e565b6105eb565b6101e4610213366004611914565b61068c565b6101da61022636600461193e565b6106c4565b6101e46102393660046118d2565b6106df565b6101a261024c3660046118d2565b6106f5565b61018261071d565b6101e461026736600461197a565b61072c565b6101826107ff565b6101da610282366004611995565b61080e565b6101da610295366004611a00565b610925565b6101826102a83660046118d2565b6109cd565b6101656102bb366004611afa565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60606006805461030590611b2d565b80601f016020809104026020016040519081016040528092919081815260200182805461033190611b2d565b801561037e5780601f106103535761010080835404028352916020019161037e565b820191906000526020600020905b81548152906001019060200180831161036157829003601f168201915b5050505050905090565b600061039382610b67565b610424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6000610458826106f5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161041b565b3373ffffffffffffffffffffffffffffffffffffffff8216148061053f575061053f81336102bb565b6105cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161041b565b6105d58383610b74565b505050565b60006105e66002610c14565b905090565b6105f53382610c1e565b610681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161041b565b6105d5838383610d74565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081206106bb9083610fb1565b90505b92915050565b6105d583838360405180602001604052806000815250610925565b6000806106ed600284610fbd565b509392505050565b60006106be82604051806060016040528060298152602001611d636029913960029190610fd9565b60606009805461030590611b2d565b600073ffffffffffffffffffffffffffffffffffffffff82166107d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f206164647265737300000000000000000000000000000000000000000000606482015260840161041b565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090206106be90610c14565b60606007805461030590611b2d565b73ffffffffffffffffffffffffffffffffffffffff821633141561088e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161041b565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61092f3383610c1e565b6109bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161041b565b6109c784848484610ff0565b50505050565b60606109d882610b67565b610a64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606482015260840161041b565b60008281526008602052604081208054610a7d90611b2d565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa990611b2d565b8015610af65780601f10610acb57610100808354040283529160200191610af6565b820191906000526020600020905b815481529060010190602001808311610ad957829003601f168201915b505050505090506000610b0761071d565b9050805160001415610b1a575092915050565b815115610b4c578082604051602001610b34929190611b81565b60405160208183030381529060405292505050919050565b80610b5685611093565b604051602001610b34929190611b81565b60006106be6002836111c5565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610bce826106f5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006106be825490565b6000610c2982610b67565b610cb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e0000000000000000000000000000000000000000606482015260840161041b565b6000610cc0836106f5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610d2f57508373ffffffffffffffffffffffffffffffffffffffff16610d1784610388565b73ffffffffffffffffffffffffffffffffffffffff16145b80610d6c575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610d94826106f5565b73ffffffffffffffffffffffffffffffffffffffff1614610e37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e0000000000000000000000000000000000000000000000606482015260840161041b565b73ffffffffffffffffffffffffffffffffffffffff8216610ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161041b565b610ee4600082610b74565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020610f1390826111dd565b5073ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020610f4390826111e9565b50610f50600282846111f5565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006106bb8383611218565b6000808080610fcc86866112d3565b9097909650945050505050565b6000610fe68484846113a5565b90505b9392505050565b610ffb848484610d74565b61100784848484611428565b6109c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161041b565b6060816110d357505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156110fd57806110e781611bdf565b91506110f69050600a83611c47565b91506110d7565b60008167ffffffffffffffff811115611118576111186119d1565b6040519080825280601f01601f191660200182016040528015611142576020820181803683370190505b5090505b8415610d6c57611157600183611c5b565b9150611164600a86611c72565b61116f906030611c86565b60f81b81838151811061118457611184611c9e565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506111be600a86611c47565b9450611146565b600081815260018301602052604081205415156106bb565b60006106bb8383611618565b60006106bb838361170b565b6000610fe6848473ffffffffffffffffffffffffffffffffffffffff851661175a565b815460009082106112ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f6473000000000000000000000000000000000000000000000000000000000000606482015260840161041b565b8260000182815481106112c0576112c0611c9e565b9060005260206000200154905092915050565b815460009081908310611368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e60448201527f6473000000000000000000000000000000000000000000000000000000000000606482015260840161041b565b600084600001848154811061137f5761137f611c9e565b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816113ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041b91906118bf565b50846113fc600183611c5b565b8154811061140c5761140c611c9e565b9060005260206000209060020201600101549150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff84163b1561160d576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061149f903390899088908890600401611ccd565b6020604051808303816000875af19250505080156114f8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526114f591810190611d16565b60015b6115c2573d808015611526576040519150601f19603f3d011682016040523d82523d6000602084013e61152b565b606091505b5080516115ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161041b565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610d6c565b506001949350505050565b6000818152600183016020526040812054801561170157600061163c600183611c5b565b855490915060009061165090600190611c5b565b9050600086600001828154811061166957611669611c9e565b906000526020600020015490508087600001848154811061168c5761168c611c9e565b6000918252602090912001556116a3836001611c86565b600082815260018901602052604090205586548790806116c5576116c5611d33565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506106be565b60009150506106be565b6000818152600183016020526040812054611752575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106be565b5060006106be565b6000828152600184016020526040812054806117bf575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055610fe9565b82856117cc600184611c5b565b815481106117dc576117dc611c9e565b9060005260206000209060020201600101819055506000915050610fe9565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461182957600080fd5b50565b60006020828403121561183e57600080fd5b8135610fe9816117fb565b60005b8381101561186457818101518382015260200161184c565b838111156109c75750506000910152565b6000815180845261188d816020860160208601611849565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106bb6020830184611875565b6000602082840312156118e457600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461190f57600080fd5b919050565b6000806040838503121561192757600080fd5b611930836118eb565b946020939093013593505050565b60008060006060848603121561195357600080fd5b61195c846118eb565b925061196a602085016118eb565b9150604084013590509250925092565b60006020828403121561198c57600080fd5b6106bb826118eb565b600080604083850312156119a857600080fd5b6119b1836118eb565b9150602083013580151581146119c657600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060008060808587031215611a1657600080fd5b611a1f856118eb565b9350611a2d602086016118eb565b925060408501359150606085013567ffffffffffffffff80821115611a5157600080fd5b818701915087601f830112611a6557600080fd5b813581811115611a7757611a776119d1565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611abd57611abd6119d1565b816040528281528a6020848701011115611ad657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215611b0d57600080fd5b611b16836118eb565b9150611b24602084016118eb565b90509250929050565b600181811c90821680611b4157607f821691505b60208210811415611b7b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008351611b93818460208801611849565b835190830190611ba7818360208801611849565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611c1157611c11611bb0565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611c5657611c56611c18565b500490565b600082821015611c6d57611c6d611bb0565b500390565b600082611c8157611c81611c18565b500690565b60008219821115611c9957611c99611bb0565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611d0c6080830184611875565b9695505050505050565b600060208284031215611d2857600080fd5b8151610fe9816117fb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656ea26469706673582212207229241f25a41b6a857a52c690f26ed58f410a000e7f8f5e7d46e4e7cc6fc9bf64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061011b5760003560e01c80634f6ccce7116100b257806395d89b4111610081578063b88d4fde11610066578063b88d4fde14610287578063c87b56dd1461029a578063e985e9c5146102ad57600080fd5b806395d89b411461026c578063a22cb4651461027457600080fd5b80634f6ccce71461022b5780636352211e1461023e5780636c0360eb1461025157806370a082311461025957600080fd5b806318160ddd116100ee57806318160ddd146101dc57806323b872dd146101f25780632f745c591461020557806342842e0e1461021857600080fd5b806301ffc9a71461012057806306fdde031461017a578063081812fc1461018f578063095ea7b3146101c7575b600080fd5b61016561012e36600461182c565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101826102f6565b60405161017191906118bf565b6101a261019d3660046118d2565b610388565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610171565b6101da6101d5366004611914565b61044d565b005b6101e46105da565b604051908152602001610171565b6101da61020036600461193e565b6105eb565b6101e4610213366004611914565b61068c565b6101da61022636600461193e565b6106c4565b6101e46102393660046118d2565b6106df565b6101a261024c3660046118d2565b6106f5565b61018261071d565b6101e461026736600461197a565b61072c565b6101826107ff565b6101da610282366004611995565b61080e565b6101da610295366004611a00565b610925565b6101826102a83660046118d2565b6109cd565b6101656102bb366004611afa565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60606006805461030590611b2d565b80601f016020809104026020016040519081016040528092919081815260200182805461033190611b2d565b801561037e5780601f106103535761010080835404028352916020019161037e565b820191906000526020600020905b81548152906001019060200180831161036157829003601f168201915b5050505050905090565b600061039382610b67565b610424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6000610458826106f5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161041b565b3373ffffffffffffffffffffffffffffffffffffffff8216148061053f575061053f81336102bb565b6105cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161041b565b6105d58383610b74565b505050565b60006105e66002610c14565b905090565b6105f53382610c1e565b610681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161041b565b6105d5838383610d74565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081206106bb9083610fb1565b90505b92915050565b6105d583838360405180602001604052806000815250610925565b6000806106ed600284610fbd565b509392505050565b60006106be82604051806060016040528060298152602001611d636029913960029190610fd9565b60606009805461030590611b2d565b600073ffffffffffffffffffffffffffffffffffffffff82166107d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f206164647265737300000000000000000000000000000000000000000000606482015260840161041b565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090206106be90610c14565b60606007805461030590611b2d565b73ffffffffffffffffffffffffffffffffffffffff821633141561088e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161041b565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61092f3383610c1e565b6109bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161041b565b6109c784848484610ff0565b50505050565b60606109d882610b67565b610a64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606482015260840161041b565b60008281526008602052604081208054610a7d90611b2d565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa990611b2d565b8015610af65780601f10610acb57610100808354040283529160200191610af6565b820191906000526020600020905b815481529060010190602001808311610ad957829003601f168201915b505050505090506000610b0761071d565b9050805160001415610b1a575092915050565b815115610b4c578082604051602001610b34929190611b81565b60405160208183030381529060405292505050919050565b80610b5685611093565b604051602001610b34929190611b81565b60006106be6002836111c5565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610bce826106f5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006106be825490565b6000610c2982610b67565b610cb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e0000000000000000000000000000000000000000606482015260840161041b565b6000610cc0836106f5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610d2f57508373ffffffffffffffffffffffffffffffffffffffff16610d1784610388565b73ffffffffffffffffffffffffffffffffffffffff16145b80610d6c575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610d94826106f5565b73ffffffffffffffffffffffffffffffffffffffff1614610e37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e0000000000000000000000000000000000000000000000606482015260840161041b565b73ffffffffffffffffffffffffffffffffffffffff8216610ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161041b565b610ee4600082610b74565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020610f1390826111dd565b5073ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020610f4390826111e9565b50610f50600282846111f5565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006106bb8383611218565b6000808080610fcc86866112d3565b9097909650945050505050565b6000610fe68484846113a5565b90505b9392505050565b610ffb848484610d74565b61100784848484611428565b6109c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161041b565b6060816110d357505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156110fd57806110e781611bdf565b91506110f69050600a83611c47565b91506110d7565b60008167ffffffffffffffff811115611118576111186119d1565b6040519080825280601f01601f191660200182016040528015611142576020820181803683370190505b5090505b8415610d6c57611157600183611c5b565b9150611164600a86611c72565b61116f906030611c86565b60f81b81838151811061118457611184611c9e565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506111be600a86611c47565b9450611146565b600081815260018301602052604081205415156106bb565b60006106bb8383611618565b60006106bb838361170b565b6000610fe6848473ffffffffffffffffffffffffffffffffffffffff851661175a565b815460009082106112ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f6473000000000000000000000000000000000000000000000000000000000000606482015260840161041b565b8260000182815481106112c0576112c0611c9e565b9060005260206000200154905092915050565b815460009081908310611368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e60448201527f6473000000000000000000000000000000000000000000000000000000000000606482015260840161041b565b600084600001848154811061137f5761137f611c9e565b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816113ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041b91906118bf565b50846113fc600183611c5b565b8154811061140c5761140c611c9e565b9060005260206000209060020201600101549150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff84163b1561160d576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061149f903390899088908890600401611ccd565b6020604051808303816000875af19250505080156114f8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526114f591810190611d16565b60015b6115c2573d808015611526576040519150601f19603f3d011682016040523d82523d6000602084013e61152b565b606091505b5080516115ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161041b565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610d6c565b506001949350505050565b6000818152600183016020526040812054801561170157600061163c600183611c5b565b855490915060009061165090600190611c5b565b9050600086600001828154811061166957611669611c9e565b906000526020600020015490508087600001848154811061168c5761168c611c9e565b6000918252602090912001556116a3836001611c86565b600082815260018901602052604090205586548790806116c5576116c5611d33565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506106be565b60009150506106be565b6000818152600183016020526040812054611752575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106be565b5060006106be565b6000828152600184016020526040812054806117bf575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055610fe9565b82856117cc600184611c5b565b815481106117dc576117dc611c9e565b9060005260206000209060020201600101819055506000915050610fe9565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461182957600080fd5b50565b60006020828403121561183e57600080fd5b8135610fe9816117fb565b60005b8381101561186457818101518382015260200161184c565b838111156109c75750506000910152565b6000815180845261188d816020860160208601611849565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106bb6020830184611875565b6000602082840312156118e457600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461190f57600080fd5b919050565b6000806040838503121561192757600080fd5b611930836118eb565b946020939093013593505050565b60008060006060848603121561195357600080fd5b61195c846118eb565b925061196a602085016118eb565b9150604084013590509250925092565b60006020828403121561198c57600080fd5b6106bb826118eb565b600080604083850312156119a857600080fd5b6119b1836118eb565b9150602083013580151581146119c657600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060008060808587031215611a1657600080fd5b611a1f856118eb565b9350611a2d602086016118eb565b925060408501359150606085013567ffffffffffffffff80821115611a5157600080fd5b818701915087601f830112611a6557600080fd5b813581811115611a7757611a776119d1565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611abd57611abd6119d1565b816040528281528a6020848701011115611ad657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215611b0d57600080fd5b611b16836118eb565b9150611b24602084016118eb565b90509250929050565b600181811c90821680611b4157607f821691505b60208210811415611b7b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008351611b93818460208801611849565b835190830190611ba7818360208801611849565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611c1157611c11611bb0565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611c5657611c56611c18565b500490565b600082821015611c6d57611c6d611bb0565b500390565b600082611c8157611c81611c18565b500690565b60008219821115611c9957611c99611bb0565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611d0c6080830184611875565b9695505050505050565b600060208284031215611d2857600080fd5b8151610fe9816117fb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656ea26469706673582212207229241f25a41b6a857a52c690f26ed58f410a000e7f8f5e7d46e4e7cc6fc9bf64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/ERC721/IERC721.sol/IERC721.dbg.json b/artifacts/contracts/ERC721/IERC721.sol/IERC721.dbg.json new file mode 100644 index 00000000..c0e3889e --- /dev/null +++ b/artifacts/contracts/ERC721/IERC721.sol/IERC721.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/4379f7a7e90ec4224805b9ed7de86d97.json" +} diff --git a/artifacts/contracts/ERC721/IERC721.sol/IERC721.json b/artifacts/contracts/ERC721/IERC721.sol/IERC721.json new file mode 100644 index 00000000..af4ea82d --- /dev/null +++ b/artifacts/contracts/ERC721/IERC721.sol/IERC721.json @@ -0,0 +1,296 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC721", + "sourceName": "contracts/ERC721/IERC721.sol", + "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" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/ERC721/IERC721Enumerable.sol/IERC721Enumerable.dbg.json b/artifacts/contracts/ERC721/IERC721Enumerable.sol/IERC721Enumerable.dbg.json new file mode 100644 index 00000000..c0e3889e --- /dev/null +++ b/artifacts/contracts/ERC721/IERC721Enumerable.sol/IERC721Enumerable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/4379f7a7e90ec4224805b9ed7de86d97.json" +} diff --git a/artifacts/contracts/ERC721/IERC721Enumerable.sol/IERC721Enumerable.json b/artifacts/contracts/ERC721/IERC721Enumerable.sol/IERC721Enumerable.json new file mode 100644 index 00000000..912678a7 --- /dev/null +++ b/artifacts/contracts/ERC721/IERC721Enumerable.sol/IERC721Enumerable.json @@ -0,0 +1,352 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC721Enumerable", + "sourceName": "contracts/ERC721/IERC721Enumerable.sol", + "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" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/ERC721/IERC721Metadata.sol/IERC721Metadata.dbg.json b/artifacts/contracts/ERC721/IERC721Metadata.sol/IERC721Metadata.dbg.json new file mode 100644 index 00000000..c0e3889e --- /dev/null +++ b/artifacts/contracts/ERC721/IERC721Metadata.sol/IERC721Metadata.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/4379f7a7e90ec4224805b9ed7de86d97.json" +} diff --git a/artifacts/contracts/ERC721/IERC721Metadata.sol/IERC721Metadata.json b/artifacts/contracts/ERC721/IERC721Metadata.sol/IERC721Metadata.json new file mode 100644 index 00000000..a5e6bf0a --- /dev/null +++ b/artifacts/contracts/ERC721/IERC721Metadata.sol/IERC721Metadata.json @@ -0,0 +1,341 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC721Metadata", + "sourceName": "contracts/ERC721/IERC721Metadata.sol", + "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" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/ERC721/IERC721Receiver.sol/IERC721Receiver.dbg.json b/artifacts/contracts/ERC721/IERC721Receiver.sol/IERC721Receiver.dbg.json new file mode 100644 index 00000000..c0e3889e --- /dev/null +++ b/artifacts/contracts/ERC721/IERC721Receiver.sol/IERC721Receiver.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/4379f7a7e90ec4224805b9ed7de86d97.json" +} diff --git a/artifacts/contracts/ERC721/IERC721Receiver.sol/IERC721Receiver.json b/artifacts/contracts/ERC721/IERC721Receiver.sol/IERC721Receiver.json new file mode 100644 index 00000000..e60f11f8 --- /dev/null +++ b/artifacts/contracts/ERC721/IERC721Receiver.sol/IERC721Receiver.json @@ -0,0 +1,45 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC721Receiver", + "sourceName": "contracts/ERC721/IERC721Receiver.sol", + "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" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/ERC721/V8_0_0/Common/Context.sol/Context.dbg.json b/artifacts/contracts/ERC721/V8_0_0/Common/Context.sol/Context.dbg.json new file mode 100644 index 00000000..b6cb0a3e --- /dev/null +++ b/artifacts/contracts/ERC721/V8_0_0/Common/Context.sol/Context.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/4379f7a7e90ec4224805b9ed7de86d97.json" +} diff --git a/artifacts/contracts/ERC721/V8_0_0/Common/Context.sol/Context.json b/artifacts/contracts/ERC721/V8_0_0/Common/Context.sol/Context.json new file mode 100644 index 00000000..af2b5bea --- /dev/null +++ b/artifacts/contracts/ERC721/V8_0_0/Common/Context.sol/Context.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Context", + "sourceName": "contracts/ERC721/V8_0_0/Common/Context.sol", + "abi": [], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/ERC721/V8_0_0/Governance/AccessControl.sol/AccessControl.dbg.json b/artifacts/contracts/ERC721/V8_0_0/Governance/AccessControl.sol/AccessControl.dbg.json new file mode 100644 index 00000000..b6cb0a3e --- /dev/null +++ b/artifacts/contracts/ERC721/V8_0_0/Governance/AccessControl.sol/AccessControl.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/4379f7a7e90ec4224805b9ed7de86d97.json" +} diff --git a/artifacts/contracts/ERC721/V8_0_0/Governance/AccessControl.sol/AccessControl.json b/artifacts/contracts/ERC721/V8_0_0/Governance/AccessControl.sol/AccessControl.json new file mode 100644 index 00000000..573fcf73 --- /dev/null +++ b/artifacts/contracts/ERC721/V8_0_0/Governance/AccessControl.sol/AccessControl.json @@ -0,0 +1,239 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AccessControl", + "sourceName": "contracts/ERC721/V8_0_0/Governance/AccessControl.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/ERC721/V8_0_0/Math/SafeMath.sol/SafeMath.dbg.json b/artifacts/contracts/ERC721/V8_0_0/Math/SafeMath.sol/SafeMath.dbg.json new file mode 100644 index 00000000..1866c383 --- /dev/null +++ b/artifacts/contracts/ERC721/V8_0_0/Math/SafeMath.sol/SafeMath.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/4307b0d46cd92cef19f6019223420ca5.json" +} diff --git a/artifacts/contracts/ERC721/V8_0_0/Math/SafeMath.sol/SafeMath.json b/artifacts/contracts/ERC721/V8_0_0/Math/SafeMath.sol/SafeMath.json new file mode 100644 index 00000000..02f75f43 --- /dev/null +++ b/artifacts/contracts/ERC721/V8_0_0/Math/SafeMath.sol/SafeMath.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SafeMath", + "sourceName": "contracts/ERC721/V8_0_0/Math/SafeMath.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203e35baa8bb769f3aea652aea08ca0c0cd527c6aa52d519f890cb179814cdf66064736f6c634300080a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203e35baa8bb769f3aea652aea08ca0c0cd527c6aa52d519f890cb179814cdf66064736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/ERC721/V8_0_0/Utils/Address.sol/Address.dbg.json b/artifacts/contracts/ERC721/V8_0_0/Utils/Address.sol/Address.dbg.json new file mode 100644 index 00000000..b6cb0a3e --- /dev/null +++ b/artifacts/contracts/ERC721/V8_0_0/Utils/Address.sol/Address.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/4379f7a7e90ec4224805b9ed7de86d97.json" +} diff --git a/artifacts/contracts/ERC721/V8_0_0/Utils/Address.sol/Address.json b/artifacts/contracts/ERC721/V8_0_0/Utils/Address.sol/Address.json new file mode 100644 index 00000000..626a1054 --- /dev/null +++ b/artifacts/contracts/ERC721/V8_0_0/Utils/Address.sol/Address.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Address", + "sourceName": "contracts/ERC721/V8_0_0/Utils/Address.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220123c585b2efb84544482ecf1b2d8ef56fa1e82dee7c9a85da7b26acb64d6f67b64736f6c634300080a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220123c585b2efb84544482ecf1b2d8ef56fa1e82dee7c9a85da7b26acb64d6f67b64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol/EnumerableMap.dbg.json b/artifacts/contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol/EnumerableMap.dbg.json new file mode 100644 index 00000000..b6cb0a3e --- /dev/null +++ b/artifacts/contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol/EnumerableMap.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/4379f7a7e90ec4224805b9ed7de86d97.json" +} diff --git a/artifacts/contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol/EnumerableMap.json b/artifacts/contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol/EnumerableMap.json new file mode 100644 index 00000000..556c1ed3 --- /dev/null +++ b/artifacts/contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol/EnumerableMap.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "EnumerableMap", + "sourceName": "contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dbaf9f7accd3e983dbcd0aee0d9e955beb4eb121a0addd93ca0faa15832b5e8b64736f6c634300080a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dbaf9f7accd3e983dbcd0aee0d9e955beb4eb121a0addd93ca0faa15832b5e8b64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol/EnumerableSet.dbg.json b/artifacts/contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol/EnumerableSet.dbg.json new file mode 100644 index 00000000..b6cb0a3e --- /dev/null +++ b/artifacts/contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol/EnumerableSet.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/4379f7a7e90ec4224805b9ed7de86d97.json" +} diff --git a/artifacts/contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol/EnumerableSet.json b/artifacts/contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol/EnumerableSet.json new file mode 100644 index 00000000..4af53cb7 --- /dev/null +++ b/artifacts/contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol/EnumerableSet.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "EnumerableSet", + "sourceName": "contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220279700431b0f46fd21681afe79dcca451f4ff41d64d4ba884aeed23d954e882f64736f6c634300080a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220279700431b0f46fd21681afe79dcca451f4ff41d64d4ba884aeed23d954e882f64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/ERC721/V8_0_0/Utils/Strings.sol/Strings.dbg.json b/artifacts/contracts/ERC721/V8_0_0/Utils/Strings.sol/Strings.dbg.json new file mode 100644 index 00000000..b6cb0a3e --- /dev/null +++ b/artifacts/contracts/ERC721/V8_0_0/Utils/Strings.sol/Strings.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/4379f7a7e90ec4224805b9ed7de86d97.json" +} diff --git a/artifacts/contracts/ERC721/V8_0_0/Utils/Strings.sol/Strings.json b/artifacts/contracts/ERC721/V8_0_0/Utils/Strings.sol/Strings.json new file mode 100644 index 00000000..4edb187a --- /dev/null +++ b/artifacts/contracts/ERC721/V8_0_0/Utils/Strings.sol/Strings.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Strings", + "sourceName": "contracts/ERC721/V8_0_0/Utils/Strings.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203e6f15c1cd7301ba658350fcc06cdd5e9b2026885e737fbb79b381e516ab377064736f6c634300080a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203e6f15c1cd7301ba658350fcc06cdd5e9b2026885e737fbb79b381e516ab377064736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Governance/AccessControl.sol/AccessControl.dbg.json b/artifacts/contracts/Governance/AccessControl.sol/AccessControl.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/Governance/AccessControl.sol/AccessControl.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/Governance/AccessControl.sol/AccessControl.json b/artifacts/contracts/Governance/AccessControl.sol/AccessControl.json new file mode 100644 index 00000000..b6abd2e9 --- /dev/null +++ b/artifacts/contracts/Governance/AccessControl.sol/AccessControl.json @@ -0,0 +1,239 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AccessControl", + "sourceName": "contracts/Governance/AccessControl.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Math/Babylonian.sol/Babylonian.dbg.json b/artifacts/contracts/Math/Babylonian.sol/Babylonian.dbg.json new file mode 100644 index 00000000..4770415f --- /dev/null +++ b/artifacts/contracts/Math/Babylonian.sol/Babylonian.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/fa9e1c7854482b87fad8afb999ef0119.json" +} diff --git a/artifacts/contracts/Math/Babylonian.sol/Babylonian.json b/artifacts/contracts/Math/Babylonian.sol/Babylonian.json new file mode 100644 index 00000000..701939c3 --- /dev/null +++ b/artifacts/contracts/Math/Babylonian.sol/Babylonian.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Babylonian", + "sourceName": "contracts/Math/Babylonian.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220592ad3a6cb4f6ed574151ee0d89b9db818c31036f54d2d5f8783b392b37a2bf464736f6c634300080a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220592ad3a6cb4f6ed574151ee0d89b9db818c31036f54d2d5f8783b392b37a2bf464736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Math/FixedPoint.sol/FixedPoint.dbg.json b/artifacts/contracts/Math/FixedPoint.sol/FixedPoint.dbg.json new file mode 100644 index 00000000..4770415f --- /dev/null +++ b/artifacts/contracts/Math/FixedPoint.sol/FixedPoint.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/fa9e1c7854482b87fad8afb999ef0119.json" +} diff --git a/artifacts/contracts/Math/FixedPoint.sol/FixedPoint.json b/artifacts/contracts/Math/FixedPoint.sol/FixedPoint.json new file mode 100644 index 00000000..2b7e69cd --- /dev/null +++ b/artifacts/contracts/Math/FixedPoint.sol/FixedPoint.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "FixedPoint", + "sourceName": "contracts/Math/FixedPoint.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122090052643163b1e9e619b8b743fb3b346c52731cc23aace4e7e6f25bd742031e464736f6c634300080a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122090052643163b1e9e619b8b743fb3b346c52731cc23aace4e7e6f25bd742031e464736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Math/MagnitudesAndPowers.sol/MagnitudesAndPowers.dbg.json b/artifacts/contracts/Math/MagnitudesAndPowers.sol/MagnitudesAndPowers.dbg.json new file mode 100644 index 00000000..cb098fab --- /dev/null +++ b/artifacts/contracts/Math/MagnitudesAndPowers.sol/MagnitudesAndPowers.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/808708eefcf7951d3fef300aa4bbb87e.json" +} diff --git a/artifacts/contracts/Math/MagnitudesAndPowers.sol/MagnitudesAndPowers.json b/artifacts/contracts/Math/MagnitudesAndPowers.sol/MagnitudesAndPowers.json new file mode 100644 index 00000000..b1993e32 --- /dev/null +++ b/artifacts/contracts/Math/MagnitudesAndPowers.sol/MagnitudesAndPowers.json @@ -0,0 +1,30 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MagnitudesAndPowers", + "sourceName": "contracts/Math/MagnitudesAndPowers.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "magnitude", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x61024461003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c80632ba96f631461003a575b600080fd5b61004d61004836600461011f565b61005f565b60405190815260200160405180910390f35b600080821161006d57600080fd5b6000604d5b818111156100c257600060016100888385610167565b610093906001610167565b901c90506100a0816100c9565b85106100ae578092506100bc565b6100b960018261017f565b91505b50610072565b5092915050565b60006001600a5b83156100c2576100e1600285610196565b60011415610107576100f381836101d1565b915061010060018561017f565b93506100d0565b61011181806101d1565b9050600184901c93506100d0565b60006020828403121561013157600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561017a5761017a610138565b500190565b60008282101561019157610191610138565b500390565b6000826101cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561020957610209610138565b50029056fea2646970667358221220f4b57d48c7c6315f8c36d1657c41c85b24284cac6a480aa1624613069b5d214264736f6c634300080a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c80632ba96f631461003a575b600080fd5b61004d61004836600461011f565b61005f565b60405190815260200160405180910390f35b600080821161006d57600080fd5b6000604d5b818111156100c257600060016100888385610167565b610093906001610167565b901c90506100a0816100c9565b85106100ae578092506100bc565b6100b960018261017f565b91505b50610072565b5092915050565b60006001600a5b83156100c2576100e1600285610196565b60011415610107576100f381836101d1565b915061010060018561017f565b93506100d0565b61011181806101d1565b9050600184901c93506100d0565b60006020828403121561013157600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561017a5761017a610138565b500190565b60008282101561019157610191610138565b500390565b6000826101cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561020957610209610138565b50029056fea2646970667358221220f4b57d48c7c6315f8c36d1657c41c85b24284cac6a480aa1624613069b5d214264736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Math/Math.sol/Math.dbg.json b/artifacts/contracts/Math/Math.sol/Math.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/Math/Math.sol/Math.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/Math/Math.sol/Math.json b/artifacts/contracts/Math/Math.sol/Math.json new file mode 100644 index 00000000..5cdaeb4d --- /dev/null +++ b/artifacts/contracts/Math/Math.sol/Math.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Math", + "sourceName": "contracts/Math/Math.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122011bcc7808de1dbb8a67c6beb4dd419b8145be7b49017b503ee4e8797271f641b64736f6c634300080a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122011bcc7808de1dbb8a67c6beb4dd419b8145be7b49017b503ee4e8797271f641b64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Math/SafeDecimalMath.sol/SafeDecimalMath.dbg.json b/artifacts/contracts/Math/SafeDecimalMath.sol/SafeDecimalMath.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/Math/SafeDecimalMath.sol/SafeDecimalMath.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/Math/SafeDecimalMath.sol/SafeDecimalMath.json b/artifacts/contracts/Math/SafeDecimalMath.sol/SafeDecimalMath.json new file mode 100644 index 00000000..a2f4817c --- /dev/null +++ b/artifacts/contracts/Math/SafeDecimalMath.sol/SafeDecimalMath.json @@ -0,0 +1,89 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SafeDecimalMath", + "sourceName": "contracts/Math/SafeDecimalMath.sol", + "abi": [ + { + "inputs": [], + "name": "PRECISE_UNIT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNIT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "highPrecisionDecimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "preciseUnit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "unit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x6102ac61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061007c5760003560e01c80639d8e21771161005a5780639d8e2177146100be578063d5e5e6e6146100c6578063def4419d146100ce57600080fd5b8063313ce56714610081578063864029e7146100a0578063907af6c0146100b6575b600080fd5b610089601281565b60405160ff90911681526020015b60405180910390f35b6100a86100d6565b604051908152602001610097565b6100a86100e5565b6100a86100f8565b6100a8610104565b610089601b81565b6100e2601b600a610263565b81565b60006100f36012600a610263565b905090565b6100e26012600a610263565b60006100f3601b600a610263565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b8085111561019a57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561018057610180610112565b8085161561018d57918102915b93841c9390800290610146565b509250929050565b6000826101b15750600161025d565b816101be5750600061025d565b81600181146101d457600281146101de576101fa565b600191505061025d565b60ff8411156101ef576101ef610112565b50506001821b61025d565b5060208310610133831016604e8410600b841016171561021d575081810a61025d565b6102278383610141565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561025957610259610112565b0290505b92915050565b600061026f83836101a2565b939250505056fea2646970667358221220bf8edb58e6261c6a41b5d9a0a20c7bafb6d67dd0d05036f4fbe640f188a2a20d64736f6c634300080a0033", + "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040526004361061007c5760003560e01c80639d8e21771161005a5780639d8e2177146100be578063d5e5e6e6146100c6578063def4419d146100ce57600080fd5b8063313ce56714610081578063864029e7146100a0578063907af6c0146100b6575b600080fd5b610089601281565b60405160ff90911681526020015b60405180910390f35b6100a86100d6565b604051908152602001610097565b6100a86100e5565b6100a86100f8565b6100a8610104565b610089601b81565b6100e2601b600a610263565b81565b60006100f36012600a610263565b905090565b6100e26012600a610263565b60006100f3601b600a610263565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b8085111561019a57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561018057610180610112565b8085161561018d57918102915b93841c9390800290610146565b509250929050565b6000826101b15750600161025d565b816101be5750600061025d565b81600181146101d457600281146101de576101fa565b600191505061025d565b60ff8411156101ef576101ef610112565b50506001821b61025d565b5060208310610133831016604e8410600b841016171561021d575081810a61025d565b6102278383610141565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561025957610259610112565b0290505b92915050565b600061026f83836101a2565b939250505056fea2646970667358221220bf8edb58e6261c6a41b5d9a0a20c7bafb6d67dd0d05036f4fbe640f188a2a20d64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Math/SafeMath.sol/SafeMath.dbg.json b/artifacts/contracts/Math/SafeMath.sol/SafeMath.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/Math/SafeMath.sol/SafeMath.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/Math/SafeMath.sol/SafeMath.json b/artifacts/contracts/Math/SafeMath.sol/SafeMath.json new file mode 100644 index 00000000..d98b8857 --- /dev/null +++ b/artifacts/contracts/Math/SafeMath.sol/SafeMath.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SafeMath", + "sourceName": "contracts/Math/SafeMath.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206af44b8542a7888d55485cfef2984255efbc29d3004ae6aaa6393d6fe5d480ae64736f6c634300080a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206af44b8542a7888d55485cfef2984255efbc29d3004ae6aaa6393d6fe5d480ae64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Math/SignedSafeMath.sol/SignedSafeMath.dbg.json b/artifacts/contracts/Math/SignedSafeMath.sol/SignedSafeMath.dbg.json new file mode 100644 index 00000000..242bd776 --- /dev/null +++ b/artifacts/contracts/Math/SignedSafeMath.sol/SignedSafeMath.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/a5c2336dcd813008d0af5fd231e1eb45.json" +} diff --git a/artifacts/contracts/Math/SignedSafeMath.sol/SignedSafeMath.json b/artifacts/contracts/Math/SignedSafeMath.sol/SignedSafeMath.json new file mode 100644 index 00000000..a43df74b --- /dev/null +++ b/artifacts/contracts/Math/SignedSafeMath.sol/SignedSafeMath.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SignedSafeMath", + "sourceName": "contracts/Math/SignedSafeMath.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f6b1bc39a6e0d6666f91dbec23ad323c9c67160cf85b3653f6eac2abb5218bbf64736f6c634300080a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f6b1bc39a6e0d6666f91dbec23ad323c9c67160cf85b3653f6eac2abb5218bbf64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Math/UQ112x112.sol/UQ112x112.dbg.json b/artifacts/contracts/Math/UQ112x112.sol/UQ112x112.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/Math/UQ112x112.sol/UQ112x112.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/Math/UQ112x112.sol/UQ112x112.json b/artifacts/contracts/Math/UQ112x112.sol/UQ112x112.json new file mode 100644 index 00000000..fec65d5f --- /dev/null +++ b/artifacts/contracts/Math/UQ112x112.sol/UQ112x112.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "UQ112x112", + "sourceName": "contracts/Math/UQ112x112.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122005619b07b9df41b346785529fe7368d8530bd06e452dc1b96433886d98334e2364736f6c634300080a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122005619b07b9df41b346785529fe7368d8530bd06e452dc1b96433886d98334e2364736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Oracle/Oracle.sol/Oracle.dbg.json b/artifacts/contracts/Oracle/Oracle.sol/Oracle.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/Oracle/Oracle.sol/Oracle.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/Oracle/Oracle.sol/Oracle.json b/artifacts/contracts/Oracle/Oracle.sol/Oracle.json new file mode 100644 index 00000000..0091bf81 --- /dev/null +++ b/artifacts/contracts/Oracle/Oracle.sol/Oracle.json @@ -0,0 +1,336 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Oracle", + "sourceName": "contracts/Oracle/Oracle.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_admin", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_minimumRequiredSignature", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_trusty_address", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "minimumRequiredSignature", + "type": "uint256" + } + ], + "name": "MinimumRequiredSignatureSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ORACLE_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TRUSTY_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_minimumRequiredSignature", + "type": "uint256" + } + ], + "name": "setMinimumRequiredSignature", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "bytes[]", + "name": "sigs", + "type": "bytes[]" + } + ], + "name": "verify", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b5060405162001329380380620013298339810160408190526200003491620001f1565b6001600160a01b038316620000a25760405162461bcd60e51b815260206004820152602a60248201527f4f5241434c453a3a636f6e7374727563746f723a205a65726f206164647265736044820152691cc819195d1958dd195960b21b606482015260840160405180910390fd5b620000af600084620000e6565b620000db7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c82620000e6565b506001555062000232565b620000f28282620000f6565b5050565b6000828152602081815260409091206200011b918390620007686200015d821b17901c565b15620000f25760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b600062000179836001600160601b0319606085901b1662000182565b90505b92915050565b6000818152600183016020526040812054620001cb575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200017c565b5060006200017c565b80516001600160a01b0381168114620001ec57600080fd5b919050565b6000806000606084860312156200020757600080fd5b6200021284620001d4565b9250602084015191506200022960408501620001d4565b90509250925092565b6110e780620002426000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80639010d07c11610081578063ca15c8731161005b578063ca15c873146101fb578063d547741f1461020e578063fb0fe3f41461022157600080fd5b80639010d07c1461019857806391d14854146101d0578063a217fddf146101f357600080fd5b806334ddb95d116100b257806334ddb95d1461014b57806336568abe1461017257806380f341ed1461018557600080fd5b806307e2cea5146100d9578063248a9ca3146101135780632f2ff15d14610136575b600080fd5b6101007f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef181565b6040519081526020015b60405180910390f35b610100610121366004610e4d565b60009081526020819052604090206002015490565b610149610144366004610e66565b610234565b005b6101007f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610149610180366004610e66565b6102ef565b610149610193366004610e4d565b61039e565b6101ab6101a6366004610eaf565b61048f565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010a565b6101e36101de366004610e66565b6104b0565b604051901515815260200161010a565b610100600081565b610100610209366004610e4d565b6104c8565b61014961021c366004610e66565b6104df565b6101e361022f366004610ed1565b610587565b60008281526020819052604090206002015461025090336104b0565b6102e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084015b60405180910390fd5b6102eb828261079a565b5050565b73ffffffffffffffffffffffffffffffffffffffff81163314610394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016102d8565b6102eb8282610800565b6103c87f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336104b0565b610454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f5241434c453a3a7365744d696e696d756d52657175697265645369676e617460448201527f7572653a20596f7520617265206e6f742074727573747900000000000000000060648201526084016102d8565b60018190556040518181527f56d6e071fcef02790d62fce568ce7db2a2417110238a7bdbbd55a0d59c7d51cd9060200160405180910390a150565b60008281526020819052604081206104a79083610866565b90505b92915050565b60008281526020819052604081206104a7908361087c565b60008181526020819052604081206104aa906108bb565b6000828152602081905260409020600201546104fb90336104b0565b610394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b650000000000000000000000000000000060648201526084016102d8565b60008060005b60015481101561075c5760006105fd8686848181106105ae576105ae610f50565b90506020028101906105c09190610f7f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b939250506108c59050565b90506106297f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef1826104b0565b6106b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4f5241434c453a3a7665726966793a205369676e6572206973206e6f7420766160448201527f6c6964000000000000000000000000000000000000000000000000000000000060648201526084016102d8565b8273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161161074a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f5241434c453a3a7665726966793a205369676e657273206172652073616d6560448201526064016102d8565b91506107558161101a565b905061058d565b50600195945050505050565b60006104a7837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16610983565b60008281526020819052604090206107b29082610768565b156102eb57604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b600082815260208190526040902061081890826109d2565b156102eb57604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b60006108728383610a04565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156104a7565b60006104aa825490565b60008151604114156108f95760208201516040830151606084015160001a6108ef86828585610abf565b93505050506104aa565b8151604014156109215760208201516040830151610918858383610d17565b925050506104aa565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016102d8565b60008181526001830160205260408120546109ca575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556104aa565b5060006104aa565b60006104a7837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16610d5a565b81546000908210610a97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f647300000000000000000000000000000000000000000000000000000000000060648201526084016102d8565b826000018281548110610aac57610aac610f50565b9060005260206000200154905092915050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115610b71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016102d8565b8360ff16601b1480610b8657508360ff16601c145b610c12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016102d8565b6040805160008082526020820180845288905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa158015610c66573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610d0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016102d8565b95945050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821660ff83901c601b01610d5086828785610abf565b9695505050505050565b60008181526001830160205260408120548015610e43576000610d7e600183611053565b8554909150600090610d9290600190611053565b90506000866000018281548110610dab57610dab610f50565b9060005260206000200154905080876000018481548110610dce57610dce610f50565b600091825260209091200155610de583600161106a565b60008281526001890160205260409020558654879080610e0757610e07611082565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506104aa565b60009150506104aa565b600060208284031215610e5f57600080fd5b5035919050565b60008060408385031215610e7957600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff81168114610ea457600080fd5b809150509250929050565b60008060408385031215610ec257600080fd5b50508035926020909101359150565b600080600060408486031215610ee657600080fd5b83359250602084013567ffffffffffffffff80821115610f0557600080fd5b818601915086601f830112610f1957600080fd5b813581811115610f2857600080fd5b8760208260051b8501011115610f3d57600080fd5b6020830194508093505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610fb457600080fd5b83018035915067ffffffffffffffff821115610fcf57600080fd5b602001915036819003821315610fe457600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561104c5761104c610feb565b5060010190565b60008282101561106557611065610feb565b500390565b6000821982111561107d5761107d610feb565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220808e25e8d69927bddf64938db333e3534c464eda7b5eb78e5e1d4aa15a1c9ceb64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100d45760003560e01c80639010d07c11610081578063ca15c8731161005b578063ca15c873146101fb578063d547741f1461020e578063fb0fe3f41461022157600080fd5b80639010d07c1461019857806391d14854146101d0578063a217fddf146101f357600080fd5b806334ddb95d116100b257806334ddb95d1461014b57806336568abe1461017257806380f341ed1461018557600080fd5b806307e2cea5146100d9578063248a9ca3146101135780632f2ff15d14610136575b600080fd5b6101007f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef181565b6040519081526020015b60405180910390f35b610100610121366004610e4d565b60009081526020819052604090206002015490565b610149610144366004610e66565b610234565b005b6101007f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b610149610180366004610e66565b6102ef565b610149610193366004610e4d565b61039e565b6101ab6101a6366004610eaf565b61048f565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010a565b6101e36101de366004610e66565b6104b0565b604051901515815260200161010a565b610100600081565b610100610209366004610e4d565b6104c8565b61014961021c366004610e66565b6104df565b6101e361022f366004610ed1565b610587565b60008281526020819052604090206002015461025090336104b0565b6102e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084015b60405180910390fd5b6102eb828261079a565b5050565b73ffffffffffffffffffffffffffffffffffffffff81163314610394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016102d8565b6102eb8282610800565b6103c87f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336104b0565b610454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f5241434c453a3a7365744d696e696d756d52657175697265645369676e617460448201527f7572653a20596f7520617265206e6f742074727573747900000000000000000060648201526084016102d8565b60018190556040518181527f56d6e071fcef02790d62fce568ce7db2a2417110238a7bdbbd55a0d59c7d51cd9060200160405180910390a150565b60008281526020819052604081206104a79083610866565b90505b92915050565b60008281526020819052604081206104a7908361087c565b60008181526020819052604081206104aa906108bb565b6000828152602081905260409020600201546104fb90336104b0565b610394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b650000000000000000000000000000000060648201526084016102d8565b60008060005b60015481101561075c5760006105fd8686848181106105ae576105ae610f50565b90506020028101906105c09190610f7f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b939250506108c59050565b90506106297f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef1826104b0565b6106b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4f5241434c453a3a7665726966793a205369676e6572206973206e6f7420766160448201527f6c6964000000000000000000000000000000000000000000000000000000000060648201526084016102d8565b8273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161161074a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f5241434c453a3a7665726966793a205369676e657273206172652073616d6560448201526064016102d8565b91506107558161101a565b905061058d565b50600195945050505050565b60006104a7837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16610983565b60008281526020819052604090206107b29082610768565b156102eb57604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b600082815260208190526040902061081890826109d2565b156102eb57604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b60006108728383610a04565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156104a7565b60006104aa825490565b60008151604114156108f95760208201516040830151606084015160001a6108ef86828585610abf565b93505050506104aa565b8151604014156109215760208201516040830151610918858383610d17565b925050506104aa565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016102d8565b60008181526001830160205260408120546109ca575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556104aa565b5060006104aa565b60006104a7837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16610d5a565b81546000908210610a97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f647300000000000000000000000000000000000000000000000000000000000060648201526084016102d8565b826000018281548110610aac57610aac610f50565b9060005260206000200154905092915050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115610b71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016102d8565b8360ff16601b1480610b8657508360ff16601c145b610c12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016102d8565b6040805160008082526020820180845288905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa158015610c66573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610d0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016102d8565b95945050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821660ff83901c601b01610d5086828785610abf565b9695505050505050565b60008181526001830160205260408120548015610e43576000610d7e600183611053565b8554909150600090610d9290600190611053565b90506000866000018281548110610dab57610dab610f50565b9060005260206000200154905080876000018481548110610dce57610dce610f50565b600091825260209091200155610de583600161106a565b60008281526001890160205260409020558654879080610e0757610e07611082565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506104aa565b60009150506104aa565b600060208284031215610e5f57600080fd5b5035919050565b60008060408385031215610e7957600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff81168114610ea457600080fd5b809150509250929050565b60008060408385031215610ec257600080fd5b50508035926020909101359150565b600080600060408486031215610ee657600080fd5b83359250602084013567ffffffffffffffff80821115610f0557600080fd5b818601915086601f830112610f1957600080fd5b813581811115610f2857600080fd5b8760208260051b8501011115610f3d57600080fd5b6020830194508093505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610fb457600080fd5b83018035915067ffffffffffffffff821115610fcf57600080fd5b602001915036819003821315610fe457600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561104c5761104c610feb565b5060010190565b60008282101561106557611065610feb565b500390565b6000821982111561107d5761107d610feb565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220808e25e8d69927bddf64938db333e3534c464eda7b5eb78e5e1d4aa15a1c9ceb64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Oracle/ReserveTracker.sol/ReserveTracker.dbg.json b/artifacts/contracts/Oracle/ReserveTracker.sol/ReserveTracker.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/Oracle/ReserveTracker.sol/ReserveTracker.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/Oracle/ReserveTracker.sol/ReserveTracker.json b/artifacts/contracts/Oracle/ReserveTracker.sol/ReserveTracker.json new file mode 100644 index 00000000..b6bfb416 --- /dev/null +++ b/artifacts/contracts/Oracle/ReserveTracker.sol/ReserveTracker.json @@ -0,0 +1,345 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ReserveTracker", + "sourceName": "contracts/Oracle/ReserveTracker.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_dei_contract_address", + "type": "address" + }, + { + "internalType": "address", + "name": "_deus_contract_address", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TRUSTY_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pair_address", + "type": "address" + } + ], + "name": "addDEUSPair", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "deus_pairs", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "deus_pairs_array", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDEUSReserves", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pair_address", + "type": "address" + } + ], + "name": "removeDEUSPair", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6080604052620f42406001553480156200001857600080fd5b50604051620014e1380380620014e18339810160408190526200003b91620001b7565b600280546001600160a01b038085166001600160a01b031992831617909255600380549284169290911691909117905562000078600033620000ac565b620000a47f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33620000ac565b5050620001ef565b620000b88282620000bc565b5050565b600082815260208181526040909120620000e191839062000ce762000123821b17901c565b15620000b85760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b60006200013f836001600160601b0319606085901b1662000148565b90505b92915050565b6000818152600183016020526040812054620001915750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000142565b50600062000142565b80516001600160a01b0381168114620001b257600080fd5b919050565b60008060408385031215620001cb57600080fd5b620001d6836200019a565b9150620001e6602084016200019a565b90509250929050565b6112e280620001ff6000396000f3fe608060405234801561001057600080fd5b50600436106100e95760003560e01c806336568abe1161008c578063a217fddf11610066578063a217fddf1461021f578063b28e750e14610227578063ca15c8731461023a578063d547741f1461024d57600080fd5b806336568abe146101e65780639010d07c146101f957806391d148541461020c57600080fd5b806328bb931d116100c857806328bb931d146101645780632f2ff15d1461019757806331738fcc146101ac57806334ddb95d146101bf57600080fd5b8062a66f1f146100ee57806303e63f1014610109578063248a9ca314610141575b600080fd5b6100f6610260565b6040519081526020015b60405180910390f35b61011c610117366004611073565b610646565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610100565b6100f661014f366004611073565b60009081526020819052604090206002015490565b6101876101723660046110b1565b60056020526000908152604090205460ff1681565b6040519015158152602001610100565b6101aa6101a53660046110d5565b61067d565b005b6101aa6101ba3660046110b1565b610738565b6100f67f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b6101aa6101f43660046110d5565b610901565b61011c610207366004611105565b6109b0565b61018761021a3660046110d5565b6109d1565b6100f6600081565b6101aa6102353660046110b1565b6109e9565b6100f6610248366004611073565b610c28565b6101aa61025b3660046110d5565b610c3f565b600080805b60045481101561064057600073ffffffffffffffffffffffffffffffffffffffff166004828154811061029a5761029a611127565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161461062e576003546004805473ffffffffffffffffffffffffffffffffffffffff90921691839081106102f1576102f1611127565b60009182526020918290200154604080517f0dfe1681000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921692630dfe1681926004808401938290030181865afa158015610365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103899190611156565b73ffffffffffffffffffffffffffffffffffffffff161415610479576000600482815481106103ba576103ba611127565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561042f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104539190611196565b50506dffffffffffffffffffffffffffff1690506104718184611215565b92505061062e565b6003546004805473ffffffffffffffffffffffffffffffffffffffff90921691839081106104a9576104a9611127565b60009182526020918290200154604080517fd21220a7000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263d21220a7926004808401938290030181865afa15801561051d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105419190611156565b73ffffffffffffffffffffffffffffffffffffffff16141561062e5760006004828154811061057257610572611127565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156105e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060b9190611196565b506dffffffffffffffffffffffffffff16915061062a90508184611215565b9250505b806106388161122d565b915050610265565b50919050565b6004818154811061065657600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60008281526020819052604090206002015461069990336109d1565b61072a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084015b60405180910390fd5b6107348282610d19565b5050565b6107627f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336109d1565b6107c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f43616c6c6572206973206e6f74207472757374790000000000000000000000006044820152606401610721565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604090205460ff1615610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4164647265737320616c726561647920657869737473000000000000000000006044820152606401610721565b73ffffffffffffffffffffffffffffffffffffffff16600081815260056020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b73ffffffffffffffffffffffffffffffffffffffff811633146109a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610721565b6107348282610d7f565b60008281526020819052604081206109c89083610de5565b90505b92915050565b60008281526020819052604081206109c89083610dfb565b610a137f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336109d1565b610a79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f43616c6c6572206973206e6f74207472757374790000000000000000000000006044820152606401610721565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604090205460ff161515600114610b0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f41646472657373206e6f6e6578697374616e74000000000000000000000000006044820152606401610721565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260056020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600454811015610734578173ffffffffffffffffffffffffffffffffffffffff1660048281548110610b8d57610b8d611127565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415610c1657600060048281548110610bca57610bca611127565b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b80610c208161122d565b915050610b59565b60008181526020819052604081206109cb90610e3a565b600082815260208190526040902060020154610c5b90336109d1565b6109a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b65000000000000000000000000000000006064820152608401610721565b60006109c8837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16610e44565b6000828152602081905260409020610d319082610ce7565b1561073457604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6000828152602081905260409020610d979082610e93565b1561073457604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000610df18383610ec5565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156109c8565b60006109cb825490565b6000818152600183016020526040812054610e8b575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109cb565b5060006109cb565b60006109c8837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16610f80565b81546000908210610f58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f64730000000000000000000000000000000000000000000000000000000000006064820152608401610721565b826000018281548110610f6d57610f6d611127565b9060005260206000200154905092915050565b60008181526001830160205260408120548015611069576000610fa4600183611266565b8554909150600090610fb890600190611266565b90506000866000018281548110610fd157610fd1611127565b9060005260206000200154905080876000018481548110610ff457610ff4611127565b60009182526020909120015561100b836001611215565b6000828152600189016020526040902055865487908061102d5761102d61127d565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506109cb565b60009150506109cb565b60006020828403121561108557600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146110ae57600080fd5b50565b6000602082840312156110c357600080fd5b81356110ce8161108c565b9392505050565b600080604083850312156110e857600080fd5b8235915060208301356110fa8161108c565b809150509250929050565b6000806040838503121561111857600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561116857600080fd5b81516110ce8161108c565b80516dffffffffffffffffffffffffffff8116811461119157600080fd5b919050565b6000806000606084860312156111ab57600080fd5b6111b484611173565b92506111c260208501611173565b9150604084015163ffffffff811681146111db57600080fd5b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611228576112286111e6565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561125f5761125f6111e6565b5060010190565b600082821015611278576112786111e6565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220aadf88649a2994cacf03cdf9ee652efa1f717f92bb550e513a0b41f19678198864736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100e95760003560e01c806336568abe1161008c578063a217fddf11610066578063a217fddf1461021f578063b28e750e14610227578063ca15c8731461023a578063d547741f1461024d57600080fd5b806336568abe146101e65780639010d07c146101f957806391d148541461020c57600080fd5b806328bb931d116100c857806328bb931d146101645780632f2ff15d1461019757806331738fcc146101ac57806334ddb95d146101bf57600080fd5b8062a66f1f146100ee57806303e63f1014610109578063248a9ca314610141575b600080fd5b6100f6610260565b6040519081526020015b60405180910390f35b61011c610117366004611073565b610646565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610100565b6100f661014f366004611073565b60009081526020819052604090206002015490565b6101876101723660046110b1565b60056020526000908152604090205460ff1681565b6040519015158152602001610100565b6101aa6101a53660046110d5565b61067d565b005b6101aa6101ba3660046110b1565b610738565b6100f67f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b6101aa6101f43660046110d5565b610901565b61011c610207366004611105565b6109b0565b61018761021a3660046110d5565b6109d1565b6100f6600081565b6101aa6102353660046110b1565b6109e9565b6100f6610248366004611073565b610c28565b6101aa61025b3660046110d5565b610c3f565b600080805b60045481101561064057600073ffffffffffffffffffffffffffffffffffffffff166004828154811061029a5761029a611127565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161461062e576003546004805473ffffffffffffffffffffffffffffffffffffffff90921691839081106102f1576102f1611127565b60009182526020918290200154604080517f0dfe1681000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921692630dfe1681926004808401938290030181865afa158015610365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103899190611156565b73ffffffffffffffffffffffffffffffffffffffff161415610479576000600482815481106103ba576103ba611127565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561042f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104539190611196565b50506dffffffffffffffffffffffffffff1690506104718184611215565b92505061062e565b6003546004805473ffffffffffffffffffffffffffffffffffffffff90921691839081106104a9576104a9611127565b60009182526020918290200154604080517fd21220a7000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263d21220a7926004808401938290030181865afa15801561051d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105419190611156565b73ffffffffffffffffffffffffffffffffffffffff16141561062e5760006004828154811061057257610572611127565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156105e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060b9190611196565b506dffffffffffffffffffffffffffff16915061062a90508184611215565b9250505b806106388161122d565b915050610265565b50919050565b6004818154811061065657600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60008281526020819052604090206002015461069990336109d1565b61072a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e74000000000000000000000000000000000060648201526084015b60405180910390fd5b6107348282610d19565b5050565b6107627f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336109d1565b6107c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f43616c6c6572206973206e6f74207472757374790000000000000000000000006044820152606401610721565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604090205460ff1615610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4164647265737320616c726561647920657869737473000000000000000000006044820152606401610721565b73ffffffffffffffffffffffffffffffffffffffff16600081815260056020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b73ffffffffffffffffffffffffffffffffffffffff811633146109a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610721565b6107348282610d7f565b60008281526020819052604081206109c89083610de5565b90505b92915050565b60008281526020819052604081206109c89083610dfb565b610a137f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c336109d1565b610a79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f43616c6c6572206973206e6f74207472757374790000000000000000000000006044820152606401610721565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604090205460ff161515600114610b0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f41646472657373206e6f6e6578697374616e74000000000000000000000000006044820152606401610721565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260056020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600454811015610734578173ffffffffffffffffffffffffffffffffffffffff1660048281548110610b8d57610b8d611127565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415610c1657600060048281548110610bca57610bca611127565b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b80610c208161122d565b915050610b59565b60008181526020819052604081206109cb90610e3a565b600082815260208190526040902060020154610c5b90336109d1565b6109a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b65000000000000000000000000000000006064820152608401610721565b60006109c8837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16610e44565b6000828152602081905260409020610d319082610ce7565b1561073457604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6000828152602081905260409020610d979082610e93565b1561073457604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000610df18383610ec5565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600090815260018301602052604081205415156109c8565b60006109cb825490565b6000818152600183016020526040812054610e8b575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109cb565b5060006109cb565b60006109c8837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16610f80565b81546000908210610f58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f64730000000000000000000000000000000000000000000000000000000000006064820152608401610721565b826000018281548110610f6d57610f6d611127565b9060005260206000200154905092915050565b60008181526001830160205260408120548015611069576000610fa4600183611266565b8554909150600090610fb890600190611266565b90506000866000018281548110610fd157610fd1611127565b9060005260206000200154905080876000018481548110610ff457610ff4611127565b60009182526020909120015561100b836001611215565b6000828152600189016020526040902055865487908061102d5761102d61127d565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506109cb565b60009150506109cb565b60006020828403121561108557600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146110ae57600080fd5b50565b6000602082840312156110c357600080fd5b81356110ce8161108c565b9392505050565b600080604083850312156110e857600080fd5b8235915060208301356110fa8161108c565b809150509250929050565b6000806040838503121561111857600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561116857600080fd5b81516110ce8161108c565b80516dffffffffffffffffffffffffffff8116811461119157600080fd5b919050565b6000806000606084860312156111ab57600080fd5b6111b484611173565b92506111c260208501611173565b9150604084015163ffffffff811681146111db57600080fd5b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611228576112286111e6565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561125f5761125f6111e6565b5060010190565b600082821015611278576112786111e6565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220aadf88649a2994cacf03cdf9ee652efa1f717f92bb550e513a0b41f19678198864736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Staking/Owned.sol/Owned.dbg.json b/artifacts/contracts/Staking/Owned.sol/Owned.dbg.json new file mode 100644 index 00000000..5aca4c08 --- /dev/null +++ b/artifacts/contracts/Staking/Owned.sol/Owned.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/51a26ee47a81853244b8cbfafc116d4f.json" +} diff --git a/artifacts/contracts/Staking/Owned.sol/Owned.json b/artifacts/contracts/Staking/Owned.sol/Owned.json new file mode 100644 index 00000000..da6235b6 --- /dev/null +++ b/artifacts/contracts/Staking/Owned.sol/Owned.json @@ -0,0 +1,100 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Owned", + "sourceName": "contracts/Staking/Owned.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldOwner", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnerChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnerNominated", + "type": "event" + }, + { + "inputs": [], + "name": "acceptOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "name": "nominateNewOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "nominatedOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506040516104df3803806104df83398101604081905261002f916100e6565b6001600160a01b0381166100895760405162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f74206265203000000000000000604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b03831690811782556040805192835260208301919091527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a150610116565b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b9392505050565b6103ba806101256000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80631627540c1461005157806353a47bb71461006657806379ba5097146100af5780638da5cb5b146100b7575b600080fd5b61006461005f366004610347565b6100d7565b005b6001546100869073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100646101fc565b6000546100869073ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201527f6f726d207468697320616374696f6e000000000000000000000000000000000060648201526084015b60405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527f2063616e20616363657074206f776e6572736869700000000000000000000000606482015260840161017a565b6000546001546040805173ffffffffffffffffffffffffffffffffffffffff93841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b60006020828403121561035957600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461037d57600080fd5b939250505056fea264697066735822122063122e6c6449141bf34b22412efe7f1ced698395b40a277548d3fa98f92fd57f64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80631627540c1461005157806353a47bb71461006657806379ba5097146100af5780638da5cb5b146100b7575b600080fd5b61006461005f366004610347565b6100d7565b005b6001546100869073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100646101fc565b6000546100869073ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201527f6f726d207468697320616374696f6e000000000000000000000000000000000060648201526084015b60405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527f2063616e20616363657074206f776e6572736869700000000000000000000000606482015260840161017a565b6000546001546040805173ffffffffffffffffffffffffffffffffffffffff93841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b60006020828403121561035957600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461037d57600080fd5b939250505056fea264697066735822122063122e6c6449141bf34b22412efe7f1ced698395b40a277548d3fa98f92fd57f64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Staking/Staking.sol/DEUSToken.dbg.json b/artifacts/contracts/Staking/Staking.sol/DEUSToken.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/Staking/Staking.sol/DEUSToken.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/Staking/Staking.sol/DEUSToken.json b/artifacts/contracts/Staking/Staking.sol/DEUSToken.json new file mode 100644 index 00000000..fac3ce98 --- /dev/null +++ b/artifacts/contracts/Staking/Staking.sol/DEUSToken.json @@ -0,0 +1,29 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DEUSToken", + "sourceName": "contracts/Staking/Staking.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "m_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "m_amount", + "type": "uint256" + } + ], + "name": "pool_mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Staking/Staking.sol/IERC20.dbg.json b/artifacts/contracts/Staking/Staking.sol/IERC20.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/Staking/Staking.sol/IERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/Staking/Staking.sol/IERC20.json b/artifacts/contracts/Staking/Staking.sol/IERC20.json new file mode 100644 index 00000000..1b458f50 --- /dev/null +++ b/artifacts/contracts/Staking/Staking.sol/IERC20.json @@ -0,0 +1,83 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC20", + "sourceName": "contracts/Staking/Staking.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "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" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Staking/Staking.sol/Staking.dbg.json b/artifacts/contracts/Staking/Staking.sol/Staking.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/Staking/Staking.sol/Staking.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/Staking/Staking.sol/Staking.json b/artifacts/contracts/Staking/Staking.sol/Staking.json new file mode 100644 index 00000000..8e63e9e6 --- /dev/null +++ b/artifacts/contracts/Staking/Staking.sol/Staking.json @@ -0,0 +1,875 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Staking", + "sourceName": "contracts/Staking/Staking.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_stakedToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_rewardToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_rewardPerBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_daoShare", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_earlyFoundersShare", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_daoWallet", + "type": "address" + }, + { + "internalType": "address", + "name": "_earlyFoundersWallet", + "type": "address" + }, + { + "internalType": "address", + "name": "_rewardPerBlockSetter", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "EmergencyWithdraw", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "RewardClaimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldValue", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newValue", + "type": "uint256" + } + ], + "name": "RewardPerBlockChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_daoShare", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_earlyFoundersShare", + "type": "uint256" + } + ], + "name": "SharesSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_stakedToken", + "type": "address" + } + ], + "name": "StakedTokenSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_daoWallet", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_earlyFoundersWallet", + "type": "address" + } + ], + "name": "WalletsSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_earlyFoundersShare", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_daoShare", + "type": "uint256" + } + ], + "name": "WithdrawParticleCollectorAmount", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "totalStakedTokens", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "withdrawStakedtokens", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "REWARD_PER_BLOCK_SETTER", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TRUSTY_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "daoShare", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "daoWallet", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "depositFor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "earlyFoundersShare", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "earlyFoundersWallet", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "emergencyWithdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "emergencyWithdrawERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "emergencyWithdrawETH", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lastUpdatedBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "particleCollector", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "pendingReward", + "outputs": [ + { + "internalType": "uint256", + "name": "reward", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rewardPerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardTillNowPerToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "scale", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_rewardPerBlock", + "type": "uint256" + } + ], + "name": "setRewardPerBlock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_daoShare", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_earlyFoundersShare", + "type": "uint256" + } + ], + "name": "setShares", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_stakedToken", + "type": "address" + } + ], + "name": "setStakedToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_daoWallet", + "type": "address" + }, + { + "internalType": "address", + "name": "_earlyFoundersWallet", + "type": "address" + } + ], + "name": "setWallets", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "stakedToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalStakedToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "update", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "users", + "outputs": [ + { + "internalType": "uint256", + "name": "depositAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "paidReward", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "withdrawAllStakedtokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "withdrawParticleCollector", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040526000600255670de0b6b3a764000060055560006006556001600b553480156200002c57600080fd5b50604051620022a9380380620022a98339810160408190526200004f91620002d6565b6001600160a01b038816158015906200007057506001600160a01b03871615155b80156200008557506001600160a01b03831615155b80156200009a57506001600160a01b03821615155b620000ff5760405162461bcd60e51b815260206004820152602b60248201527f5354414b494e473a3a636f6e7374727563746f723a205a65726f20616464726560448201526a1cdcc819195d1958dd195960aa1b606482015260840160405180910390fd5b6200010c600033620001cb565b620001387fee33494882c15ef16fd46d90287d1d71c5808d5681b5d0ee0567fbc8f9b0100b82620001cb565b620001647f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33620001cb565b50600c80546001600160a01b039889166001600160a01b031991821617909155600d8054978916978216979097179096556004949094556007929092556008554360035560098054918516918416919091179055600a805491909316911617905562000363565b620001d78282620001db565b5050565b60008281526020818152604090912062000200918390620017e062000242821b17901c565b15620001d75760405133906001600160a01b0383169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b60006200025e836001600160601b0319606085901b1662000267565b90505b92915050565b6000818152600183016020526040812054620002b05750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000261565b50600062000261565b80516001600160a01b0381168114620002d157600080fd5b919050565b600080600080600080600080610100898b031215620002f457600080fd5b620002ff89620002b9565b97506200030f60208a01620002b9565b96506040890151955060608901519450608089015193506200033460a08a01620002b9565b92506200034460c08a01620002b9565b91506200035460e08a01620002b9565b90509295985092959890939650565b611f3680620003736000396000f3fe608060405234801561001057600080fd5b50600436106102775760003560e01c8063995d9b6011610160578063cc7a262e116100d8578063db2e21bc1161008c578063f51e181a11610071578063f51e181a1461056c578063f7c618c114610575578063f90ce5ba1461059557600080fd5b8063db2e21bc14610551578063f40f0f521461055957600080fd5b8063d3f6a157116100bd578063d3f6a15714610518578063d547741f1461052b578063d79e85671461053e57600080fd5b8063cc7a262e146104e5578063cee66f631461050557600080fd5b8063a87430ba1161012f578063bb872b4a11610114578063bb872b4a146104b6578063ca15c873146104c9578063cb6d8ee6146104dc57600080fd5b8063a87430ba14610467578063b6b55f25146104a357600080fd5b8063995d9b6014610427578063a217fddf14610430578063a2e6204514610438578063a43c7e7e1461044057600080fd5b806352e9c6d4116101f357806388d19f1b116101c25780639010d07c116101a75780639010d07c146103e957806391d14854146103fc5780639378c6d41461041f57600080fd5b806388d19f1b146103d75780638ae39cac146103e057600080fd5b806352e9c6d41461038857806355b8fb811461039b57806360c6cdac146103ae578063698a5897146103b757600080fd5b80632f2ff15d1161024a57806334ddb95d1161022f57806334ddb95d1461034557806336568abe1461036c578063481af4aa1461037f57600080fd5b80632f2ff15d1461031f5780632f4f21e21461033257600080fd5b8063079a57051461027c578063248a9ca3146102c65780632aca3e7d146102f75780632e1a7d4d1461030c575b600080fd5b600a5461029c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6102e96102d4366004611c45565b60009081526020819052604090206002015490565b6040519081526020016102bd565b61030a610305366004611c5e565b61059e565b005b61030a61031a366004611c45565b610683565b61030a61032d366004611ca2565b6108c9565b61030a610340366004611cd2565b61097f565b6102e97f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b61030a61037a366004611ca2565b610b29565b6102e960085481565b61030a610396366004611cfe565b610bd8565b61030a6103a9366004611d22565b610ce1565b6102e960025481565b60095461029c9073ffffffffffffffffffffffffffffffffffffffff1681565b6102e960075481565b6102e960045481565b61029c6103f7366004611c5e565b610e10565b61040f61040a366004611ca2565b610e31565b60405190151581526020016102bd565b61030a610e49565b6102e960065481565b6102e9600081565b61030a610ffc565b6102e97fee33494882c15ef16fd46d90287d1d71c5808d5681b5d0ee0567fbc8f9b0100b81565b61048e610475366004611cfe565b6001602081905260009182526040909120805491015482565b604080519283526020830191909152016102bd565b61030a6104b1366004611c45565b611058565b61030a6104c4366004611c45565b611065565b6102e96104d7366004611c45565b611166565b6102e9600b5481565b600c5461029c9073ffffffffffffffffffffffffffffffffffffffff1681565b61030a610513366004611cfe565b61117d565b61030a610526366004611d63565b611390565b61030a610539366004611ca2565b6114ac565b61030a61054c366004611cd2565b611554565b61030a61162c565b6102e9610567366004611cfe565b611735565b6102e960055481565b600d5461029c9073ffffffffffffffffffffffffffffffffffffffff1681565b6102e960035481565b6105c87f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b610633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f7420612074727573747960448201526064015b60405180910390fd5b61063b610e49565b6007829055600881905560408051838152602081018390527f635fab9ef42704636ceacfc3756d45c820dc77e2b15e0f46d436e9ec6f5a708991015b60405180910390a15050565b3360009081526001602052604090208054821115610723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f5354414b494e473a3a77697468647261773a20776974686472617720616d6f7560448201527f6e742065786365656473206465706f736974656420616d6f756e740000000000606482015260840161062a565b61072b610ffc565b6000816001015460055460025484600001546107479190611dc0565b6107519190611dfd565b61075b9190611e38565b90506107673382611812565b600060055460085460075461077c9190611e4f565b6107869084611dc0565b6107909190611dfd565b9050806006546107a09190611e4f565b600655831561089f5782546107b6908590611e38565b8355600c546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810186905273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb906044016020604051808303816000875af115801561082f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108539190611e67565b5083600b546108629190611e38565b600b5560408051338152602081018690527f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364910160405180910390a15b60055460025484546108b19190611dc0565b6108bb9190611dfd565b836001018190555050505050565b6000828152602081905260409020600201546108e59033610e31565b610971576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e740000000000000000000000000000000000606482015260840161062a565b61097b82826118eb565b5050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090206109ac610ffc565b8054156109f1576000816001015460055460025484600001546109cf9190611dc0565b6109d99190611dfd565b6109e39190611e38565b90506109ef8482611812565b505b80546109fe908390611e4f565b8082556005546002549091610a139190611dc0565b610a1d9190611dfd565b6001820155600c546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810184905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af1158015610a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac39190611e67565b5081600b54610ad29190611e4f565b600b556040805173ffffffffffffffffffffffffffffffffffffffff85168152602081018490527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c910160405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610bce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c660000000000000000000000000000000000606482015260840161062a565b61097b8282611951565b610c027f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b610c68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f74206120747275737479604482015260640161062a565b600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f793c5d6d63836324edea9ae9eb434d37862194427d3060862215257245a0c9299060200160405180910390a150565b610d0b7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b610d71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f74206120747275737479604482015260640161062a565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820183905283169063a9059cbb906044016020604051808303816000875af1158015610de6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0a9190611e67565b50505050565b6000828152602081905260408120610e2890836119b7565b90505b92915050565b6000828152602081905260408120610e2890836119cd565b6000600854600754610e5b9190611e4f565b600754600654610e6b9190611dc0565b610e759190611dfd565b600d546009546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260248101849052929350169063b4f56b2690604401600060405180830381600087803b158015610eed57600080fd5b505af1158015610f01573d6000803e3d6000fd5b505050506000600854600754610f179190611e4f565b600854600654610f279190611dc0565b610f319190611dfd565b600d54600a546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260248101849052929350169063b4f56b2690604401600060405180830381600087803b158015610fa957600080fd5b505af1158015610fbd573d6000803e3d6000fd5b50506000600655505060408051828152602081018490527fd7efc4cdd0ec299514928105db63bae6f4b6734397925b15fe9df3db233ceb519101610677565b600354431161100757565b60006004546003544361101a9190611e38565b6110249190611dc0565b9050600b54600554826110379190611dc0565b6110419190611dfd565b60025461104e9190611e4f565b6002555043600355565b611062338261097f565b50565b61108f7fee33494882c15ef16fd46d90287d1d71c5808d5681b5d0ee0567fbc8f9b0100b33610e31565b61111d57604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f5354414b494e473a3a736574526577617264506572426c6f636b3a2043616c6c60448201527f6572206973206e6f74206120726577617264506572426c6f636b536574746572606482015260840161062a565b611125610ffc565b60045460408051918252602082018390527f79a5349732f93288abbb68e251c3dfc325bf3ee6fde7786d919155d39733e0f5910160405180910390a1600455565b6000818152602081905260408120610e2b90611a0c565b6111a77f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b61120d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f74206120747275737479604482015260640161062a565b600c546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a09190611e89565b6001600b55600c546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015611320573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113449190611e67565b506040805182815273ffffffffffffffffffffffffffffffffffffffff841660208201527f5a13955452e0668a1ad79cebe6a7578b8561b92374f0749286d41c9805b75b429101610677565b6113ba7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b611420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f74206120747275737479604482015260640161062a565b6009805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909355600a80549185169190921681179091556040805192835260208301919091527ff5ce80a04fffb5058766b1d6b907c8b27d37be009f9bd418117cf9fa16dfc9b99101610677565b6000828152602081905260409020600201546114c89033610e31565b610bce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b6500000000000000000000000000000000606482015260840161062a565b61157e7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b6115e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f74206120747275737479604482015260640161062a565b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f19350505050158015611627573d6000803e3d6000fd5b505050565b3360009081526001602052604090208054600b5461164a9190611e38565b600b55600c5481546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481019190915273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb906044016020604051808303816000875af11580156116c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116eb9190611e67565b5080546040805133815260208101929092527f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd9695910160405180910390a16000808255600190910155565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604081206002546003544311156117af5760006004546003544361177a9190611e38565b6117849190611dc0565b9050600b54600554826117979190611dc0565b6117a19190611dfd565b6117ab9083611e4f565b9150505b600182015460055483546117c4908490611dc0565b6117ce9190611dfd565b6117d89190611e38565b949350505050565b6000610e28837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16611a16565b600d546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490529091169063b4f56b2690604401600060405180830381600087803b15801561188657600080fd5b505af115801561189a573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff86168152602081018590527f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f72419350019050610677565b600082815260208190526040902061190390826117e0565b1561097b57604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b60008281526020819052604090206119699082611a65565b1561097b57604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b60006119c38383611a97565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660009081526001830160205260408120541515610e28565b6000610e2b825490565b6000818152600183016020526040812054611a5d57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610e2b565b506000610e2b565b6000610e28837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16611b52565b81546000908210611b2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f6473000000000000000000000000000000000000000000000000000000000000606482015260840161062a565b826000018281548110611b3f57611b3f611ea2565b9060005260206000200154905092915050565b60008181526001830160205260408120548015611c3b576000611b76600183611e38565b8554909150600090611b8a90600190611e38565b90506000866000018281548110611ba357611ba3611ea2565b9060005260206000200154905080876000018481548110611bc657611bc6611ea2565b600091825260209091200155611bdd836001611e4f565b60008281526001890160205260409020558654879080611bff57611bff611ed1565b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610e2b565b6000915050610e2b565b600060208284031215611c5757600080fd5b5035919050565b60008060408385031215611c7157600080fd5b50508035926020909101359150565b73ffffffffffffffffffffffffffffffffffffffff8116811461106257600080fd5b60008060408385031215611cb557600080fd5b823591506020830135611cc781611c80565b809150509250929050565b60008060408385031215611ce557600080fd5b8235611cf081611c80565b946020939093013593505050565b600060208284031215611d1057600080fd5b8135611d1b81611c80565b9392505050565b600080600060608486031215611d3757600080fd5b8335611d4281611c80565b92506020840135611d5281611c80565b929592945050506040919091013590565b60008060408385031215611d7657600080fd5b8235611d8181611c80565b91506020830135611cc781611c80565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611df857611df8611d91565b500290565b600082611e33577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015611e4a57611e4a611d91565b500390565b60008219821115611e6257611e62611d91565b500190565b600060208284031215611e7957600080fd5b81518015158114611d1b57600080fd5b600060208284031215611e9b57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122012956ab11e279b37a46f390efbcb57ea3b3e7d98b6d602a71af5698b75b7d90d64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102775760003560e01c8063995d9b6011610160578063cc7a262e116100d8578063db2e21bc1161008c578063f51e181a11610071578063f51e181a1461056c578063f7c618c114610575578063f90ce5ba1461059557600080fd5b8063db2e21bc14610551578063f40f0f521461055957600080fd5b8063d3f6a157116100bd578063d3f6a15714610518578063d547741f1461052b578063d79e85671461053e57600080fd5b8063cc7a262e146104e5578063cee66f631461050557600080fd5b8063a87430ba1161012f578063bb872b4a11610114578063bb872b4a146104b6578063ca15c873146104c9578063cb6d8ee6146104dc57600080fd5b8063a87430ba14610467578063b6b55f25146104a357600080fd5b8063995d9b6014610427578063a217fddf14610430578063a2e6204514610438578063a43c7e7e1461044057600080fd5b806352e9c6d4116101f357806388d19f1b116101c25780639010d07c116101a75780639010d07c146103e957806391d14854146103fc5780639378c6d41461041f57600080fd5b806388d19f1b146103d75780638ae39cac146103e057600080fd5b806352e9c6d41461038857806355b8fb811461039b57806360c6cdac146103ae578063698a5897146103b757600080fd5b80632f2ff15d1161024a57806334ddb95d1161022f57806334ddb95d1461034557806336568abe1461036c578063481af4aa1461037f57600080fd5b80632f2ff15d1461031f5780632f4f21e21461033257600080fd5b8063079a57051461027c578063248a9ca3146102c65780632aca3e7d146102f75780632e1a7d4d1461030c575b600080fd5b600a5461029c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6102e96102d4366004611c45565b60009081526020819052604090206002015490565b6040519081526020016102bd565b61030a610305366004611c5e565b61059e565b005b61030a61031a366004611c45565b610683565b61030a61032d366004611ca2565b6108c9565b61030a610340366004611cd2565b61097f565b6102e97f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c81565b61030a61037a366004611ca2565b610b29565b6102e960085481565b61030a610396366004611cfe565b610bd8565b61030a6103a9366004611d22565b610ce1565b6102e960025481565b60095461029c9073ffffffffffffffffffffffffffffffffffffffff1681565b6102e960075481565b6102e960045481565b61029c6103f7366004611c5e565b610e10565b61040f61040a366004611ca2565b610e31565b60405190151581526020016102bd565b61030a610e49565b6102e960065481565b6102e9600081565b61030a610ffc565b6102e97fee33494882c15ef16fd46d90287d1d71c5808d5681b5d0ee0567fbc8f9b0100b81565b61048e610475366004611cfe565b6001602081905260009182526040909120805491015482565b604080519283526020830191909152016102bd565b61030a6104b1366004611c45565b611058565b61030a6104c4366004611c45565b611065565b6102e96104d7366004611c45565b611166565b6102e9600b5481565b600c5461029c9073ffffffffffffffffffffffffffffffffffffffff1681565b61030a610513366004611cfe565b61117d565b61030a610526366004611d63565b611390565b61030a610539366004611ca2565b6114ac565b61030a61054c366004611cd2565b611554565b61030a61162c565b6102e9610567366004611cfe565b611735565b6102e960055481565b600d5461029c9073ffffffffffffffffffffffffffffffffffffffff1681565b6102e960035481565b6105c87f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b610633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f7420612074727573747960448201526064015b60405180910390fd5b61063b610e49565b6007829055600881905560408051838152602081018390527f635fab9ef42704636ceacfc3756d45c820dc77e2b15e0f46d436e9ec6f5a708991015b60405180910390a15050565b3360009081526001602052604090208054821115610723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f5354414b494e473a3a77697468647261773a20776974686472617720616d6f7560448201527f6e742065786365656473206465706f736974656420616d6f756e740000000000606482015260840161062a565b61072b610ffc565b6000816001015460055460025484600001546107479190611dc0565b6107519190611dfd565b61075b9190611e38565b90506107673382611812565b600060055460085460075461077c9190611e4f565b6107869084611dc0565b6107909190611dfd565b9050806006546107a09190611e4f565b600655831561089f5782546107b6908590611e38565b8355600c546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810186905273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb906044016020604051808303816000875af115801561082f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108539190611e67565b5083600b546108629190611e38565b600b5560408051338152602081018690527f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364910160405180910390a15b60055460025484546108b19190611dc0565b6108bb9190611dfd565b836001018190555050505050565b6000828152602081905260409020600201546108e59033610e31565b610971576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f206772616e740000000000000000000000000000000000606482015260840161062a565b61097b82826118eb565b5050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090206109ac610ffc565b8054156109f1576000816001015460055460025484600001546109cf9190611dc0565b6109d99190611dfd565b6109e39190611e38565b90506109ef8482611812565b505b80546109fe908390611e4f565b8082556005546002549091610a139190611dc0565b610a1d9190611dfd565b6001820155600c546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810184905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af1158015610a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac39190611e67565b5081600b54610ad29190611e4f565b600b556040805173ffffffffffffffffffffffffffffffffffffffff85168152602081018490527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c910160405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610bce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c660000000000000000000000000000000000606482015260840161062a565b61097b8282611951565b610c027f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b610c68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f74206120747275737479604482015260640161062a565b600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f793c5d6d63836324edea9ae9eb434d37862194427d3060862215257245a0c9299060200160405180910390a150565b610d0b7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b610d71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f74206120747275737479604482015260640161062a565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820183905283169063a9059cbb906044016020604051808303816000875af1158015610de6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0a9190611e67565b50505050565b6000828152602081905260408120610e2890836119b7565b90505b92915050565b6000828152602081905260408120610e2890836119cd565b6000600854600754610e5b9190611e4f565b600754600654610e6b9190611dc0565b610e759190611dfd565b600d546009546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260248101849052929350169063b4f56b2690604401600060405180830381600087803b158015610eed57600080fd5b505af1158015610f01573d6000803e3d6000fd5b505050506000600854600754610f179190611e4f565b600854600654610f279190611dc0565b610f319190611dfd565b600d54600a546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260248101849052929350169063b4f56b2690604401600060405180830381600087803b158015610fa957600080fd5b505af1158015610fbd573d6000803e3d6000fd5b50506000600655505060408051828152602081018490527fd7efc4cdd0ec299514928105db63bae6f4b6734397925b15fe9df3db233ceb519101610677565b600354431161100757565b60006004546003544361101a9190611e38565b6110249190611dc0565b9050600b54600554826110379190611dc0565b6110419190611dfd565b60025461104e9190611e4f565b6002555043600355565b611062338261097f565b50565b61108f7fee33494882c15ef16fd46d90287d1d71c5808d5681b5d0ee0567fbc8f9b0100b33610e31565b61111d57604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f5354414b494e473a3a736574526577617264506572426c6f636b3a2043616c6c60448201527f6572206973206e6f74206120726577617264506572426c6f636b536574746572606482015260840161062a565b611125610ffc565b60045460408051918252602082018390527f79a5349732f93288abbb68e251c3dfc325bf3ee6fde7786d919155d39733e0f5910160405180910390a1600455565b6000818152602081905260408120610e2b90611a0c565b6111a77f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b61120d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f74206120747275737479604482015260640161062a565b600c546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a09190611e89565b6001600b55600c546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015611320573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113449190611e67565b506040805182815273ffffffffffffffffffffffffffffffffffffffff841660208201527f5a13955452e0668a1ad79cebe6a7578b8561b92374f0749286d41c9805b75b429101610677565b6113ba7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b611420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f74206120747275737479604482015260640161062a565b6009805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909355600a80549185169190921681179091556040805192835260208301919091527ff5ce80a04fffb5058766b1d6b907c8b27d37be009f9bd418117cf9fa16dfc9b99101610677565b6000828152602081905260409020600201546114c89033610e31565b610bce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201527f2061646d696e20746f207265766f6b6500000000000000000000000000000000606482015260840161062a565b61157e7f0db189261133fd7647d3308512b693b47bed44004cac80fb59aa64b63a231e2c33610e31565b6115e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5354414b494e473a3a2043616c6c6572206973206e6f74206120747275737479604482015260640161062a565b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f19350505050158015611627573d6000803e3d6000fd5b505050565b3360009081526001602052604090208054600b5461164a9190611e38565b600b55600c5481546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481019190915273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb906044016020604051808303816000875af11580156116c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116eb9190611e67565b5080546040805133815260208101929092527f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd9695910160405180910390a16000808255600190910155565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604081206002546003544311156117af5760006004546003544361177a9190611e38565b6117849190611dc0565b9050600b54600554826117979190611dc0565b6117a19190611dfd565b6117ab9083611e4f565b9150505b600182015460055483546117c4908490611dc0565b6117ce9190611dfd565b6117d89190611e38565b949350505050565b6000610e28837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16611a16565b600d546040517fb4f56b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490529091169063b4f56b2690604401600060405180830381600087803b15801561188657600080fd5b505af115801561189a573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff86168152602081018590527f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f72419350019050610677565b600082815260208190526040902061190390826117e0565b1561097b57604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b60008281526020819052604090206119699082611a65565b1561097b57604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b60006119c38383611a97565b60601c9392505050565b606081901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660009081526001830160205260408120541515610e28565b6000610e2b825490565b6000818152600183016020526040812054611a5d57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610e2b565b506000610e2b565b6000610e28837fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16611b52565b81546000908210611b2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60448201527f6473000000000000000000000000000000000000000000000000000000000000606482015260840161062a565b826000018281548110611b3f57611b3f611ea2565b9060005260206000200154905092915050565b60008181526001830160205260408120548015611c3b576000611b76600183611e38565b8554909150600090611b8a90600190611e38565b90506000866000018281548110611ba357611ba3611ea2565b9060005260206000200154905080876000018481548110611bc657611bc6611ea2565b600091825260209091200155611bdd836001611e4f565b60008281526001890160205260409020558654879080611bff57611bff611ed1565b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610e2b565b6000915050610e2b565b600060208284031215611c5757600080fd5b5035919050565b60008060408385031215611c7157600080fd5b50508035926020909101359150565b73ffffffffffffffffffffffffffffffffffffffff8116811461106257600080fd5b60008060408385031215611cb557600080fd5b823591506020830135611cc781611c80565b809150509250929050565b60008060408385031215611ce557600080fd5b8235611cf081611c80565b946020939093013593505050565b600060208284031215611d1057600080fd5b8135611d1b81611c80565b9392505050565b600080600060608486031215611d3757600080fd5b8335611d4281611c80565b92506020840135611d5281611c80565b929592945050506040919091013590565b60008060408385031215611d7657600080fd5b8235611d8181611c80565b91506020830135611cc781611c80565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611df857611df8611d91565b500290565b600082611e33577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015611e4a57611e4a611d91565b500390565b60008219821115611e6257611e62611d91565b500190565b600060208284031215611e7957600080fd5b81518015158114611d1b57600080fd5b600060208284031215611e9b57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122012956ab11e279b37a46f390efbcb57ea3b3e7d98b6d602a71af5698b75b7d90d64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Callee.sol/IUniswapV2Callee.dbg.json b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Callee.sol/IUniswapV2Callee.dbg.json new file mode 100644 index 00000000..b4959490 --- /dev/null +++ b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Callee.sol/IUniswapV2Callee.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Callee.sol/IUniswapV2Callee.json b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Callee.sol/IUniswapV2Callee.json new file mode 100644 index 00000000..6e2e56df --- /dev/null +++ b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Callee.sol/IUniswapV2Callee.json @@ -0,0 +1,39 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IUniswapV2Callee", + "sourceName": "contracts/Uniswap/Interfaces/IUniswapV2Callee.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "uniswapV2Call", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol/IUniswapV2ERC20.dbg.json b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol/IUniswapV2ERC20.dbg.json new file mode 100644 index 00000000..b4959490 --- /dev/null +++ b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol/IUniswapV2ERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol/IUniswapV2ERC20.json b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol/IUniswapV2ERC20.json new file mode 100644 index 00000000..afe3c5dd --- /dev/null +++ b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol/IUniswapV2ERC20.json @@ -0,0 +1,321 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IUniswapV2ERC20", + "sourceName": "contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol", + "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": [], + "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": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "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" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Factory.sol/IUniswapV2Factory.dbg.json b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Factory.sol/IUniswapV2Factory.dbg.json new file mode 100644 index 00000000..b4959490 --- /dev/null +++ b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Factory.sol/IUniswapV2Factory.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Factory.sol/IUniswapV2Factory.json b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Factory.sol/IUniswapV2Factory.json new file mode 100644 index 00000000..cdfff736 --- /dev/null +++ b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Factory.sol/IUniswapV2Factory.json @@ -0,0 +1,174 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IUniswapV2Factory", + "sourceName": "contracts/Uniswap/Interfaces/IUniswapV2Factory.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token0", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token1", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "pair", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "PairCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "allPairs", + "outputs": [ + { + "internalType": "address", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "allPairsLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + } + ], + "name": "createPair", + "outputs": [ + { + "internalType": "address", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "feeTo", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "feeToSetter", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + } + ], + "name": "getPair", + "outputs": [ + { + "internalType": "address", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "setFeeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "setFeeToSetter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Pair.sol/IUniswapV2Pair.dbg.json b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Pair.sol/IUniswapV2Pair.dbg.json new file mode 100644 index 00000000..b4959490 --- /dev/null +++ b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Pair.sol/IUniswapV2Pair.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Pair.sol/IUniswapV2Pair.json b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Pair.sol/IUniswapV2Pair.json new file mode 100644 index 00000000..80c268f0 --- /dev/null +++ b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Pair.sol/IUniswapV2Pair.json @@ -0,0 +1,662 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IUniswapV2Pair", + "sourceName": "contracts/Uniswap/Interfaces/IUniswapV2Pair.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Burn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "Mint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0In", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1In", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0Out", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1Out", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Swap", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint112", + "name": "reserve0", + "type": "uint112" + }, + { + "indexed": false, + "internalType": "uint112", + "name": "reserve1", + "type": "uint112" + } + ], + "name": "Sync", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MINIMUM_LIQUIDITY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "burn", + "outputs": [ + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getReserves", + "outputs": [ + { + "internalType": "uint112", + "name": "reserve0", + "type": "uint112" + }, + { + "internalType": "uint112", + "name": "reserve1", + "type": "uint112" + }, + { + "internalType": "uint32", + "name": "blockTimestampLast", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "kLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "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" + }, + { + "inputs": [], + "name": "price0CumulativeLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "price1CumulativeLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "skim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount0Out", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Out", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "swap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "sync", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "token0", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token1", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Router01.sol/IUniswapV2Router01.dbg.json b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Router01.sol/IUniswapV2Router01.dbg.json new file mode 100644 index 00000000..ae873b1b --- /dev/null +++ b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Router01.sol/IUniswapV2Router01.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/f9073a711ac5d4ac2bdf81541504b7c4.json" +} diff --git a/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Router01.sol/IUniswapV2Router01.json b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Router01.sol/IUniswapV2Router01.json new file mode 100644 index 00000000..268c8423 --- /dev/null +++ b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Router01.sol/IUniswapV2Router01.json @@ -0,0 +1,760 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IUniswapV2Router01", + "sourceName": "contracts/Uniswap/Interfaces/IUniswapV2Router01.sol", + "abi": [ + { + "inputs": [], + "name": "WETH", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountTokenDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveB", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapETHForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Router02.sol/IUniswapV2Router02.dbg.json b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Router02.sol/IUniswapV2Router02.dbg.json new file mode 100644 index 00000000..ae873b1b --- /dev/null +++ b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Router02.sol/IUniswapV2Router02.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/f9073a711ac5d4ac2bdf81541504b7c4.json" +} diff --git a/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Router02.sol/IUniswapV2Router02.json b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Router02.sol/IUniswapV2Router02.json new file mode 100644 index 00000000..3b5d9fdf --- /dev/null +++ b/artifacts/contracts/Uniswap/Interfaces/IUniswapV2Router02.sol/IUniswapV2Router02.json @@ -0,0 +1,962 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IUniswapV2Router02", + "sourceName": "contracts/Uniswap/Interfaces/IUniswapV2Router02.sol", + "abi": [ + { + "inputs": [], + "name": "WETH", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountTokenDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveB", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETHSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapETHForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETHSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Uniswap/TransferHelper.sol/TransferHelper.dbg.json b/artifacts/contracts/Uniswap/TransferHelper.sol/TransferHelper.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/Uniswap/TransferHelper.sol/TransferHelper.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/Uniswap/TransferHelper.sol/TransferHelper.json b/artifacts/contracts/Uniswap/TransferHelper.sol/TransferHelper.json new file mode 100644 index 00000000..8eba8066 --- /dev/null +++ b/artifacts/contracts/Uniswap/TransferHelper.sol/TransferHelper.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TransferHelper", + "sourceName": "contracts/Uniswap/TransferHelper.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a6282b57b9d46c2bec6307bc4197a03af927aea7be9123c0eaeb456dd682b30e64736f6c634300080a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a6282b57b9d46c2bec6307bc4197a03af927aea7be9123c0eaeb456dd682b30e64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Uniswap/UniswapV2ERC20.sol/UniswapV2ERC20.dbg.json b/artifacts/contracts/Uniswap/UniswapV2ERC20.sol/UniswapV2ERC20.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2ERC20.sol/UniswapV2ERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/Uniswap/UniswapV2ERC20.sol/UniswapV2ERC20.json b/artifacts/contracts/Uniswap/UniswapV2ERC20.sol/UniswapV2ERC20.json new file mode 100644 index 00000000..b70dbead --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2ERC20.sol/UniswapV2ERC20.json @@ -0,0 +1,326 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "UniswapV2ERC20", + "sourceName": "contracts/Uniswap/UniswapV2ERC20.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "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" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50604080518082018252600a8152692ab734b9bbb0b8102b1960b11b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fbfcc8ef98ffbf7b6c3fec7bf5185b566b9863e35a9d83acd49ad6824b5969738818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355610b6a806100f16000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461020d578063a9059cbb14610249578063d505accf1461025c578063dd62ed3e1461027157600080fd5b80633644e515146101c457806370a08231146101cd5780637ecebe00146101ed57600080fd5b806323b872dd116100bd57806323b872dd1461017057806330adf81f14610183578063313ce567146101aa57600080fd5b806306fdde03146100e4578063095ea7b31461013657806318160ddd14610159575b600080fd5b6101206040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b60405161012d91906108da565b60405180910390f35b610149610144366004610976565b61029c565b604051901515815260200161012d565b61016260005481565b60405190815260200161012d565b61014961017e3660046109a0565b6102b2565b6101627f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6101b2601281565b60405160ff909116815260200161012d565b61016260035481565b6101626101db3660046109dc565b60016020526000908152604090205481565b6101626101fb3660046109dc565b60046020526000908152604090205481565b6101206040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b610149610257366004610976565b61038b565b61026f61026a3660046109f7565b610398565b005b61016261027f366004610a6a565b600260209081526000928352604080842090915290825290205481565b60006102a9338484610688565b50600192915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146103765773ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832033845290915290205461034490836106f7565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610381848484610740565b5060019392505050565b60006102a9338484610740565b42841015610407576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a2045585049524544000000000000000000000000000060448201526064015b60405180910390fd5b60035473ffffffffffffffffffffffffffffffffffffffff8816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91908761046783610acc565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016105089291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015610591573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061060c57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e41545552450000000060448201526064016103fe565b61067d898989610688565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061073983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061080d565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461077090826106f7565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546107ac9082610861565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106ea9085815260200190565b6000818484111561084b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103fe91906108da565b5060006108588486610b05565b95945050505050565b60008061086e8385610b1c565b905083811015610739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103fe565b600060208083528351808285015260005b81811015610907578581018301518582016040015282016108eb565b81811115610919576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461097157600080fd5b919050565b6000806040838503121561098957600080fd5b6109928361094d565b946020939093013593505050565b6000806000606084860312156109b557600080fd5b6109be8461094d565b92506109cc6020850161094d565b9150604084013590509250925092565b6000602082840312156109ee57600080fd5b6107398261094d565b600080600080600080600060e0888a031215610a1257600080fd5b610a1b8861094d565b9650610a296020890161094d565b95506040880135945060608801359350608088013560ff81168114610a4d57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610a7d57600080fd5b610a868361094d565b9150610a946020840161094d565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610afe57610afe610a9d565b5060010190565b600082821015610b1757610b17610a9d565b500390565b60008219821115610b2f57610b2f610a9d565b50019056fea26469706673582212207d530be318861bbecf7973d3c9c261befd1af1931b347ea8f34df61076ae97bf64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461020d578063a9059cbb14610249578063d505accf1461025c578063dd62ed3e1461027157600080fd5b80633644e515146101c457806370a08231146101cd5780637ecebe00146101ed57600080fd5b806323b872dd116100bd57806323b872dd1461017057806330adf81f14610183578063313ce567146101aa57600080fd5b806306fdde03146100e4578063095ea7b31461013657806318160ddd14610159575b600080fd5b6101206040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b60405161012d91906108da565b60405180910390f35b610149610144366004610976565b61029c565b604051901515815260200161012d565b61016260005481565b60405190815260200161012d565b61014961017e3660046109a0565b6102b2565b6101627f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6101b2601281565b60405160ff909116815260200161012d565b61016260035481565b6101626101db3660046109dc565b60016020526000908152604090205481565b6101626101fb3660046109dc565b60046020526000908152604090205481565b6101206040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b610149610257366004610976565b61038b565b61026f61026a3660046109f7565b610398565b005b61016261027f366004610a6a565b600260209081526000928352604080842090915290825290205481565b60006102a9338484610688565b50600192915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146103765773ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832033845290915290205461034490836106f7565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610381848484610740565b5060019392505050565b60006102a9338484610740565b42841015610407576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a2045585049524544000000000000000000000000000060448201526064015b60405180910390fd5b60035473ffffffffffffffffffffffffffffffffffffffff8816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91908761046783610acc565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016105089291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015610591573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061060c57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e41545552450000000060448201526064016103fe565b61067d898989610688565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061073983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061080d565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461077090826106f7565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546107ac9082610861565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106ea9085815260200190565b6000818484111561084b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103fe91906108da565b5060006108588486610b05565b95945050505050565b60008061086e8385610b1c565b905083811015610739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103fe565b600060208083528351808285015260005b81811015610907578581018301518582016040015282016108eb565b81811115610919576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461097157600080fd5b919050565b6000806040838503121561098957600080fd5b6109928361094d565b946020939093013593505050565b6000806000606084860312156109b557600080fd5b6109be8461094d565b92506109cc6020850161094d565b9150604084013590509250925092565b6000602082840312156109ee57600080fd5b6107398261094d565b600080600080600080600060e0888a031215610a1257600080fd5b610a1b8861094d565b9650610a296020890161094d565b95506040880135945060608801359350608088013560ff81168114610a4d57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610a7d57600080fd5b610a868361094d565b9150610a946020840161094d565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610afe57610afe610a9d565b5060010190565b600082821015610b1757610b17610a9d565b500390565b60008219821115610b2f57610b2f610a9d565b50019056fea26469706673582212207d530be318861bbecf7973d3c9c261befd1af1931b347ea8f34df61076ae97bf64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Factory.sol/UniswapV2Factory.dbg.json b/artifacts/contracts/Uniswap/UniswapV2Factory.sol/UniswapV2Factory.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Factory.sol/UniswapV2Factory.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Factory.sol/UniswapV2Factory.json b/artifacts/contracts/Uniswap/UniswapV2Factory.sol/UniswapV2Factory.json new file mode 100644 index 00000000..d4218449 --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Factory.sol/UniswapV2Factory.json @@ -0,0 +1,185 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "UniswapV2Factory", + "sourceName": "contracts/Uniswap/UniswapV2Factory.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_feeToSetter", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token0", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token1", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "pair", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "PairCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "allPairs", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "allPairsLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + } + ], + "name": "createPair", + "outputs": [ + { + "internalType": "address", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "feeTo", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "feeToSetter", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "getPair", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_feeTo", + "type": "address" + } + ], + "name": "setFeeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_feeToSetter", + "type": "address" + } + ], + "name": "setFeeToSetter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506040516136d73803806136d783398101604081905261002f91610054565b600180546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b613644806100936000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063a2e74af61161005b578063a2e74af61461011b578063c9c6539614610130578063e6a4390514610143578063f46901ed1461018457600080fd5b8063017e7e581461008d578063094b7415146100d75780631e3dd18b146100f7578063574f2ba31461010a575b600080fd5b6000546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6001546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100ad61010536600461078e565b610197565b6003546040519081526020016100ce565b61012e6101293660046107d0565b6101ce565b005b6100ad61013e3660046107f2565b61029b565b6100ad6101513660046107f2565b600260209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b61012e6101923660046107d0565b6106b9565b600381815481106101a757600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60015473ffffffffffffffffffffffffffffffffffffffff163314610254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e00000000000000000000000060448201526064015b60405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015260640161024b565b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610610370578385610373565b84845b909250905073ffffffffffffffffffffffffffffffffffffffff82166103f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015260640161024b565b73ffffffffffffffffffffffffffffffffffffffff828116600090815260026020908152604080832085851684529091529020541615610491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f556e697377617056323a20504149525f45584953545300000000000000000000604482015260640161024b565b6000604051806020016104a390610781565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f9091011660408190527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086811b8216602084015285901b166034820152909150600090604801604051602081830303815290604052805190602001209050808251602084016000f56040517f485cc95500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015285811660248301529196509086169063485cc95590604401600060405180830381600087803b1580156105ac57600080fd5b505af11580156105c0573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526002602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff000000000000000000000000000000000000000098891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9095018054909716841790965592548351928352908201527f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9910160405180910390a35050505092915050565b60015473ffffffffffffffffffffffffffffffffffffffff16331461073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015260640161024b565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612de98061082683390190565b6000602082840312156107a057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107cb57600080fd5b919050565b6000602082840312156107e257600080fd5b6107eb826107a7565b9392505050565b6000806040838503121561080557600080fd5b61080e836107a7565b915061081c602084016107a7565b9050925092905056fe60806040526001600c5534801561001557600080fd5b50600580546001600160a01b03191633179055612db2806100376000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a71461049b578063d505accf146104bb578063dd62ed3e146104ce578063fff6cae9146104f957600080fd5b8063ba9a7a561461045f578063bc25cf7714610468578063c45a01551461047b57600080fd5b80637ecebe00116100d35780637ecebe00146103c857806389afcb44146103e857806395d89b4114610410578063a9059cbb1461044c57600080fd5b80636a6278421461038c57806370a082311461039f5780637464fc3d146103bf57600080fd5b806323b872dd116101665780633644e515116101405780633644e5151461035e578063485cc955146103675780635909c0d51461037a5780635a3d54931461038357600080fd5b806323b872dd1461030a57806330adf81f1461031d578063313ce5671461034457600080fd5b8063095ea7b311610197578063095ea7b31461028b5780630dfe1681146102ae57806318160ddd146102f357600080fd5b8063022c0d9f146101be57806306fdde03146101d35780630902f1ac14610225575b600080fd5b6101d16101cc366004612870565b610501565b005b61020f6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b60405161021c9190612936565b60405180910390f35b600854604080516dffffffffffffffffffffffffffff80841682526e01000000000000000000000000000084041660208201527c010000000000000000000000000000000000000000000000000000000090920463ffffffff169082015260600161021c565b61029e610299366004612987565b610c5d565b604051901515815260200161021c565b6006546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021c565b6102fc60005481565b60405190815260200161021c565b61029e6103183660046129b3565b610c74565b6102fc7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61034c601281565b60405160ff909116815260200161021c565b6102fc60035481565b6101d16103753660046129f4565b610d4d565b6102fc60095481565b6102fc600a5481565b6102fc61039a366004612a2d565b610e21565b6102fc6103ad366004612a2d565b60016020526000908152604090205481565b6102fc600b5481565b6102fc6103d6366004612a2d565b60046020526000908152604090205481565b6103fb6103f6366004612a2d565b6111f7565b6040805192835260208301919091520161021c565b61020f6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b61029e61045a366004612987565b6116af565b6102fc6103e881565b6101d1610476366004612a2d565b6116bc565b6005546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b6007546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b6101d16104c9366004612a4a565b61187f565b6102fc6104dc3660046129f4565b600260209081526000928352604080842090915290825290205481565b6101d1611b6a565b600c54600114610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b454400000000000000000000000000000060448201526064015b60405180910390fd5b6000600c55841515806105855750600084115b610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f556e697377617056323a20494e53554646494349454e545f4f55545055545f4160448201527f4d4f554e540000000000000000000000000000000000000000000000000000006064820152608401610569565b60008061066d6008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b5091509150816dffffffffffffffffffffffffffff16871080156106a05750806dffffffffffffffffffffffffffff1686105b61072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f59000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061079157508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6107f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f00000000000000000000006044820152606401610569565b8a1561080857610808828a8d611d36565b891561081957610819818a8c611d36565b86156108ac576040517f10d1e85c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a16906310d1e85c906108799033908f908f908e908e90600401612ac1565b600060405180830381600087803b15801561089357600080fd5b505af11580156108a7573d6000803e3d6000fd5b505050505b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015610916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093a9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290945073ffffffffffffffffffffffffffffffffffffffff8216906370a0823190602401602060405180830381865afa1580156109a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb9190612b39565b92505050600089856dffffffffffffffffffffffffffff166109ed9190612b81565b83116109fa576000610a1e565b610a148a6dffffffffffffffffffffffffffff8716612b81565b610a1e9084612b81565b90506000610a3c8a6dffffffffffffffffffffffffffff8716612b81565b8311610a49576000610a6d565b610a638a6dffffffffffffffffffffffffffff8716612b81565b610a6d9084612b81565b90506000821180610a7e5750600081115b610b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f556e697377617056323a20494e53554646494349454e545f494e5055545f414d60448201527f4f554e54000000000000000000000000000000000000000000000000000000006064820152608401610569565b6000610b2b610b19846003611ed6565b610b25876103e8611ed6565b90611f92565b90506000610b3d610b19846003611ed6565b9050610b69620f4240610b636dffffffffffffffffffffffffffff8b8116908b16611ed6565b90611ed6565b610b738383611ed6565b1015610bdb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b00000000000000000000000000000000000000006044820152606401610569565b5050610be984848888611fd4565b60408051838152602081018390529081018c9052606081018b905273ffffffffffffffffffffffffffffffffffffffff8a169033907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229060800160405180910390a350506001600c55505050505050505050565b6000610c6a3384846122b0565b5060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610d385773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610d069083611f92565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610d4384848461231f565b5060019392505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610dce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e0000000000000000000000006044820152606401610569565b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b6000600c54600114610e8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c819055600854600654604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808516956e01000000000000000000000000000090950416939273ffffffffffffffffffffffffffffffffffffffff16916370a082319160248083019260209291908290030181865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190612b39565b6007546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291925060009173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff19190612b39565b9050600061100f836dffffffffffffffffffffffffffff8716611f92565b9050600061102d836dffffffffffffffffffffffffffff8716611f92565b9050600061103b87876123ec565b600054909150806110725761105e6103e8610b256110598787611ed6565b612557565b985061106d60006103e86125c7565b6110c7565b6110c46dffffffffffffffffffffffffffff89166110908684611ed6565b61109a9190612bc7565b6dffffffffffffffffffffffffffff89166110b58685611ed6565b6110bf9190612bc7565b612670565b98505b60008911611157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f595f4d494e5445440000000000000000000000000000000000000000000000006064820152608401610569565b6111618a8a6125c7565b61116d86868a8a611fd4565b81156111a9576008546111a5906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611ed6565b600b555b604080518581526020810185905233917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a250506001600c5550949695505050505050565b600080600c54600114611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c819055600854600654600754604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808616966e010000000000000000000000000000909604169473ffffffffffffffffffffffffffffffffffffffff94851694909316929184916370a08231916024808201926020929091908290030181865afa158015611318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133c9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa1580156113ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d09190612b39565b306000908152600160205260408120549192506113ed88886123ec565b600054909150806113fe8487611ed6565b6114089190612bc7565b9a50806114158486611ed6565b61141f9190612bc7565b995060008b118015611431575060008a115b6114bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f595f4255524e45440000000000000000000000000000000000000000000000006064820152608401610569565b6114c73084612686565b6114d2878d8d611d36565b6114dd868d8c611d36565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290955073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa1580156115d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fc9190612b39565b935061160a85858b8b611fd4565b811561164657600854611642906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611ed6565b600b555b604080518c8152602081018c905273ffffffffffffffffffffffffffffffffffffffff8e169133917fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496910160405180910390a35050505050505050506001600c81905550915091565b6000610c6a33848461231f565b600c54600114611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c556006546007546008546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff93841693909216916117f091849186916117eb916dffffffffffffffffffffffffffff9091169084906370a08231906024015b602060405180830381865afa1580156117c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b259190612b39565b611d36565b6008546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015261187591839186916117eb916e0100000000000000000000000000009091046dffffffffffffffffffffffffffff169073ffffffffffffffffffffffffffffffffffffffff8516906370a08231906024016117aa565b50506001600c5550565b428410156118e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a204558504952454400000000000000000000000000006044820152606401610569565b60035473ffffffffffffffffffffffffffffffffffffffff8816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91908761194983612bdb565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016119ea9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611a73573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611aee57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e4154555245000000006044820152606401610569565b611b5f8989896122b0565b505050505050505050565b600c54600114611bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c556006546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152611d2f9173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611c4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6f9190612b39565b6007546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015611cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d019190612b39565b6008546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611fd4565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392871691611dfd9190612c14565b6000604051808303816000865af19150503d8060008114611e3a576040519150601f19603f3d011682016040523d82523d6000602084013e611e3f565b606091505b5091509150818015611e69575080511580611e69575080806020019051810190611e699190612c30565b611ecf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c45440000000000006044820152606401610569565b5050505050565b600082611ee557506000610c6e565b6000611ef18385612c52565b905082611efe8583612bc7565b14611f8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b9392505050565b6000611f8b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612737565b6dffffffffffffffffffffffffffff841180159061200057506dffffffffffffffffffffffffffff8311155b612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f57000000000000000000000000006044820152606401610569565b600061207764010000000042612c8f565b6008549091506000906120b0907c0100000000000000000000000000000000000000000000000000000000900463ffffffff1683612ca3565b905060008163ffffffff161180156120d757506dffffffffffffffffffffffffffff841615155b80156120f257506dffffffffffffffffffffffffffff831615155b156121c0578063ffffffff1661212f8561210b8661278b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906127b6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166121579190612c52565b600960008282546121689190612cc8565b909155505063ffffffff81166121818461210b8761278b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166121a99190612c52565b600a60008282546121ba9190612cc8565b90915550505b6008805463ffffffff84167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8981166e0100000000000000000000000000009081027fffffffff000000000000000000000000000000000000000000000000000000009095168c83161794909417918216831794859055604080519382169282169290921783529290930490911660208201527f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1910160405180910390a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461234f9082611f92565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461238b90826127d2565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123129085815260200190565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa15801561245c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124809190612ce0565b600b5473ffffffffffffffffffffffffffffffffffffffff821615801594509192509061254357801561253e5760006124cf6110596dffffffffffffffffffffffffffff888116908816611ed6565b905060006124dc83612557565b90508082111561253b5760006124fe6124f58484611f92565b60005490611ed6565b9050600061251783612511866005611ed6565b906127d2565b905060006125258284612bc7565b905080156125375761253787826125c7565b5050505b50505b61254f565b801561254f576000600b555b505092915050565b600060038211156125b85750806000612571600283612bc7565b61257c906001612cc8565b90505b818110156125b2579050806002816125978186612bc7565b6125a19190612cc8565b6125ab9190612bc7565b905061257f565b50919050565b81156125c2575060015b919050565b6000546125d490826127d2565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461260690826127d2565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126649085815260200190565b60405180910390a35050565b600081831061267f5781611f8b565b5090919050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546126b69082611f92565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040812091909155546126ea9082611f92565b600090815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612664565b60008184841115612775576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105699190612936565b5060006127828486612b81565b95945050505050565b6000610c6e6e0100000000000000000000000000006dffffffffffffffffffffffffffff8416612cfd565b6000611f8b6dffffffffffffffffffffffffffff831684612d41565b6000806127df8385612cc8565b905083811015611f8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8116811461286d57600080fd5b50565b60008060008060006080868803121561288857600080fd5b853594506020860135935060408601356128a18161284b565b9250606086013567ffffffffffffffff808211156128be57600080fd5b818801915088601f8301126128d257600080fd5b8135818111156128e157600080fd5b8960208285010111156128f357600080fd5b9699959850939650602001949392505050565b60005b83811015612921578181015183820152602001612909565b83811115612930576000848401525b50505050565b6020815260008251806020840152612955816040850160208701612906565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806040838503121561299a57600080fd5b82356129a58161284b565b946020939093013593505050565b6000806000606084860312156129c857600080fd5b83356129d38161284b565b925060208401356129e38161284b565b929592945050506040919091013590565b60008060408385031215612a0757600080fd5b8235612a128161284b565b91506020830135612a228161284b565b809150509250929050565b600060208284031215612a3f57600080fd5b8135611f8b8161284b565b600080600080600080600060e0888a031215612a6557600080fd5b8735612a708161284b565b96506020880135612a808161284b565b95506040880135945060608801359350608088013560ff81168114612aa457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015283604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101949350505050565b600060208284031215612b4b57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612b9357612b93612b52565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612bd657612bd6612b98565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612c0d57612c0d612b52565b5060010190565b60008251612c26818460208701612906565b9190910192915050565b600060208284031215612c4257600080fd5b81518015158114611f8b57600080fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c8a57612c8a612b52565b500290565b600082612c9e57612c9e612b98565b500690565b600063ffffffff83811690831681811015612cc057612cc0612b52565b039392505050565b60008219821115612cdb57612cdb612b52565b500190565b600060208284031215612cf257600080fd5b8151611f8b8161284b565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80831681851681830481118215151615612d3857612d38612b52565b02949350505050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80841680612d7057612d70612b98565b9216919091049291505056fea2646970667358221220738f09b9235788d5f6c3ff0250c6b0722c6d84358a084017dffe70343b7c638b64736f6c634300080a0033a26469706673582212204d51ece745f031a009593a07e5bae4f2787ccc9616fb9acf99f5c1f9b75525ce64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063a2e74af61161005b578063a2e74af61461011b578063c9c6539614610130578063e6a4390514610143578063f46901ed1461018457600080fd5b8063017e7e581461008d578063094b7415146100d75780631e3dd18b146100f7578063574f2ba31461010a575b600080fd5b6000546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6001546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100ad61010536600461078e565b610197565b6003546040519081526020016100ce565b61012e6101293660046107d0565b6101ce565b005b6100ad61013e3660046107f2565b61029b565b6100ad6101513660046107f2565b600260209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b61012e6101923660046107d0565b6106b9565b600381815481106101a757600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60015473ffffffffffffffffffffffffffffffffffffffff163314610254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e00000000000000000000000060448201526064015b60405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015260640161024b565b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610610370578385610373565b84845b909250905073ffffffffffffffffffffffffffffffffffffffff82166103f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015260640161024b565b73ffffffffffffffffffffffffffffffffffffffff828116600090815260026020908152604080832085851684529091529020541615610491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f556e697377617056323a20504149525f45584953545300000000000000000000604482015260640161024b565b6000604051806020016104a390610781565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f9091011660408190527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086811b8216602084015285901b166034820152909150600090604801604051602081830303815290604052805190602001209050808251602084016000f56040517f485cc95500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015285811660248301529196509086169063485cc95590604401600060405180830381600087803b1580156105ac57600080fd5b505af11580156105c0573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526002602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff000000000000000000000000000000000000000098891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9095018054909716841790965592548351928352908201527f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9910160405180910390a35050505092915050565b60015473ffffffffffffffffffffffffffffffffffffffff16331461073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015260640161024b565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612de98061082683390190565b6000602082840312156107a057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107cb57600080fd5b919050565b6000602082840312156107e257600080fd5b6107eb826107a7565b9392505050565b6000806040838503121561080557600080fd5b61080e836107a7565b915061081c602084016107a7565b9050925092905056fe60806040526001600c5534801561001557600080fd5b50600580546001600160a01b03191633179055612db2806100376000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a71461049b578063d505accf146104bb578063dd62ed3e146104ce578063fff6cae9146104f957600080fd5b8063ba9a7a561461045f578063bc25cf7714610468578063c45a01551461047b57600080fd5b80637ecebe00116100d35780637ecebe00146103c857806389afcb44146103e857806395d89b4114610410578063a9059cbb1461044c57600080fd5b80636a6278421461038c57806370a082311461039f5780637464fc3d146103bf57600080fd5b806323b872dd116101665780633644e515116101405780633644e5151461035e578063485cc955146103675780635909c0d51461037a5780635a3d54931461038357600080fd5b806323b872dd1461030a57806330adf81f1461031d578063313ce5671461034457600080fd5b8063095ea7b311610197578063095ea7b31461028b5780630dfe1681146102ae57806318160ddd146102f357600080fd5b8063022c0d9f146101be57806306fdde03146101d35780630902f1ac14610225575b600080fd5b6101d16101cc366004612870565b610501565b005b61020f6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b60405161021c9190612936565b60405180910390f35b600854604080516dffffffffffffffffffffffffffff80841682526e01000000000000000000000000000084041660208201527c010000000000000000000000000000000000000000000000000000000090920463ffffffff169082015260600161021c565b61029e610299366004612987565b610c5d565b604051901515815260200161021c565b6006546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021c565b6102fc60005481565b60405190815260200161021c565b61029e6103183660046129b3565b610c74565b6102fc7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61034c601281565b60405160ff909116815260200161021c565b6102fc60035481565b6101d16103753660046129f4565b610d4d565b6102fc60095481565b6102fc600a5481565b6102fc61039a366004612a2d565b610e21565b6102fc6103ad366004612a2d565b60016020526000908152604090205481565b6102fc600b5481565b6102fc6103d6366004612a2d565b60046020526000908152604090205481565b6103fb6103f6366004612a2d565b6111f7565b6040805192835260208301919091520161021c565b61020f6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b61029e61045a366004612987565b6116af565b6102fc6103e881565b6101d1610476366004612a2d565b6116bc565b6005546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b6007546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b6101d16104c9366004612a4a565b61187f565b6102fc6104dc3660046129f4565b600260209081526000928352604080842090915290825290205481565b6101d1611b6a565b600c54600114610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b454400000000000000000000000000000060448201526064015b60405180910390fd5b6000600c55841515806105855750600084115b610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f556e697377617056323a20494e53554646494349454e545f4f55545055545f4160448201527f4d4f554e540000000000000000000000000000000000000000000000000000006064820152608401610569565b60008061066d6008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b5091509150816dffffffffffffffffffffffffffff16871080156106a05750806dffffffffffffffffffffffffffff1686105b61072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f59000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061079157508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6107f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f00000000000000000000006044820152606401610569565b8a1561080857610808828a8d611d36565b891561081957610819818a8c611d36565b86156108ac576040517f10d1e85c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a16906310d1e85c906108799033908f908f908e908e90600401612ac1565b600060405180830381600087803b15801561089357600080fd5b505af11580156108a7573d6000803e3d6000fd5b505050505b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015610916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093a9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290945073ffffffffffffffffffffffffffffffffffffffff8216906370a0823190602401602060405180830381865afa1580156109a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb9190612b39565b92505050600089856dffffffffffffffffffffffffffff166109ed9190612b81565b83116109fa576000610a1e565b610a148a6dffffffffffffffffffffffffffff8716612b81565b610a1e9084612b81565b90506000610a3c8a6dffffffffffffffffffffffffffff8716612b81565b8311610a49576000610a6d565b610a638a6dffffffffffffffffffffffffffff8716612b81565b610a6d9084612b81565b90506000821180610a7e5750600081115b610b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f556e697377617056323a20494e53554646494349454e545f494e5055545f414d60448201527f4f554e54000000000000000000000000000000000000000000000000000000006064820152608401610569565b6000610b2b610b19846003611ed6565b610b25876103e8611ed6565b90611f92565b90506000610b3d610b19846003611ed6565b9050610b69620f4240610b636dffffffffffffffffffffffffffff8b8116908b16611ed6565b90611ed6565b610b738383611ed6565b1015610bdb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b00000000000000000000000000000000000000006044820152606401610569565b5050610be984848888611fd4565b60408051838152602081018390529081018c9052606081018b905273ffffffffffffffffffffffffffffffffffffffff8a169033907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229060800160405180910390a350506001600c55505050505050505050565b6000610c6a3384846122b0565b5060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610d385773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610d069083611f92565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610d4384848461231f565b5060019392505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610dce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e0000000000000000000000006044820152606401610569565b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b6000600c54600114610e8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c819055600854600654604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808516956e01000000000000000000000000000090950416939273ffffffffffffffffffffffffffffffffffffffff16916370a082319160248083019260209291908290030181865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190612b39565b6007546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291925060009173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff19190612b39565b9050600061100f836dffffffffffffffffffffffffffff8716611f92565b9050600061102d836dffffffffffffffffffffffffffff8716611f92565b9050600061103b87876123ec565b600054909150806110725761105e6103e8610b256110598787611ed6565b612557565b985061106d60006103e86125c7565b6110c7565b6110c46dffffffffffffffffffffffffffff89166110908684611ed6565b61109a9190612bc7565b6dffffffffffffffffffffffffffff89166110b58685611ed6565b6110bf9190612bc7565b612670565b98505b60008911611157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f595f4d494e5445440000000000000000000000000000000000000000000000006064820152608401610569565b6111618a8a6125c7565b61116d86868a8a611fd4565b81156111a9576008546111a5906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611ed6565b600b555b604080518581526020810185905233917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a250506001600c5550949695505050505050565b600080600c54600114611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c819055600854600654600754604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808616966e010000000000000000000000000000909604169473ffffffffffffffffffffffffffffffffffffffff94851694909316929184916370a08231916024808201926020929091908290030181865afa158015611318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133c9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa1580156113ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d09190612b39565b306000908152600160205260408120549192506113ed88886123ec565b600054909150806113fe8487611ed6565b6114089190612bc7565b9a50806114158486611ed6565b61141f9190612bc7565b995060008b118015611431575060008a115b6114bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f595f4255524e45440000000000000000000000000000000000000000000000006064820152608401610569565b6114c73084612686565b6114d2878d8d611d36565b6114dd868d8c611d36565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290955073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa1580156115d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fc9190612b39565b935061160a85858b8b611fd4565b811561164657600854611642906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611ed6565b600b555b604080518c8152602081018c905273ffffffffffffffffffffffffffffffffffffffff8e169133917fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496910160405180910390a35050505050505050506001600c81905550915091565b6000610c6a33848461231f565b600c54600114611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c556006546007546008546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff93841693909216916117f091849186916117eb916dffffffffffffffffffffffffffff9091169084906370a08231906024015b602060405180830381865afa1580156117c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b259190612b39565b611d36565b6008546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015261187591839186916117eb916e0100000000000000000000000000009091046dffffffffffffffffffffffffffff169073ffffffffffffffffffffffffffffffffffffffff8516906370a08231906024016117aa565b50506001600c5550565b428410156118e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a204558504952454400000000000000000000000000006044820152606401610569565b60035473ffffffffffffffffffffffffffffffffffffffff8816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91908761194983612bdb565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016119ea9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611a73573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611aee57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e4154555245000000006044820152606401610569565b611b5f8989896122b0565b505050505050505050565b600c54600114611bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c556006546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152611d2f9173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611c4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6f9190612b39565b6007546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015611cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d019190612b39565b6008546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611fd4565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392871691611dfd9190612c14565b6000604051808303816000865af19150503d8060008114611e3a576040519150601f19603f3d011682016040523d82523d6000602084013e611e3f565b606091505b5091509150818015611e69575080511580611e69575080806020019051810190611e699190612c30565b611ecf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c45440000000000006044820152606401610569565b5050505050565b600082611ee557506000610c6e565b6000611ef18385612c52565b905082611efe8583612bc7565b14611f8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b9392505050565b6000611f8b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612737565b6dffffffffffffffffffffffffffff841180159061200057506dffffffffffffffffffffffffffff8311155b612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f57000000000000000000000000006044820152606401610569565b600061207764010000000042612c8f565b6008549091506000906120b0907c0100000000000000000000000000000000000000000000000000000000900463ffffffff1683612ca3565b905060008163ffffffff161180156120d757506dffffffffffffffffffffffffffff841615155b80156120f257506dffffffffffffffffffffffffffff831615155b156121c0578063ffffffff1661212f8561210b8661278b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906127b6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166121579190612c52565b600960008282546121689190612cc8565b909155505063ffffffff81166121818461210b8761278b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166121a99190612c52565b600a60008282546121ba9190612cc8565b90915550505b6008805463ffffffff84167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8981166e0100000000000000000000000000009081027fffffffff000000000000000000000000000000000000000000000000000000009095168c83161794909417918216831794859055604080519382169282169290921783529290930490911660208201527f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1910160405180910390a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461234f9082611f92565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461238b90826127d2565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123129085815260200190565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa15801561245c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124809190612ce0565b600b5473ffffffffffffffffffffffffffffffffffffffff821615801594509192509061254357801561253e5760006124cf6110596dffffffffffffffffffffffffffff888116908816611ed6565b905060006124dc83612557565b90508082111561253b5760006124fe6124f58484611f92565b60005490611ed6565b9050600061251783612511866005611ed6565b906127d2565b905060006125258284612bc7565b905080156125375761253787826125c7565b5050505b50505b61254f565b801561254f576000600b555b505092915050565b600060038211156125b85750806000612571600283612bc7565b61257c906001612cc8565b90505b818110156125b2579050806002816125978186612bc7565b6125a19190612cc8565b6125ab9190612bc7565b905061257f565b50919050565b81156125c2575060015b919050565b6000546125d490826127d2565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461260690826127d2565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126649085815260200190565b60405180910390a35050565b600081831061267f5781611f8b565b5090919050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546126b69082611f92565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040812091909155546126ea9082611f92565b600090815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612664565b60008184841115612775576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105699190612936565b5060006127828486612b81565b95945050505050565b6000610c6e6e0100000000000000000000000000006dffffffffffffffffffffffffffff8416612cfd565b6000611f8b6dffffffffffffffffffffffffffff831684612d41565b6000806127df8385612cc8565b905083811015611f8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8116811461286d57600080fd5b50565b60008060008060006080868803121561288857600080fd5b853594506020860135935060408601356128a18161284b565b9250606086013567ffffffffffffffff808211156128be57600080fd5b818801915088601f8301126128d257600080fd5b8135818111156128e157600080fd5b8960208285010111156128f357600080fd5b9699959850939650602001949392505050565b60005b83811015612921578181015183820152602001612909565b83811115612930576000848401525b50505050565b6020815260008251806020840152612955816040850160208701612906565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806040838503121561299a57600080fd5b82356129a58161284b565b946020939093013593505050565b6000806000606084860312156129c857600080fd5b83356129d38161284b565b925060208401356129e38161284b565b929592945050506040919091013590565b60008060408385031215612a0757600080fd5b8235612a128161284b565b91506020830135612a228161284b565b809150509250929050565b600060208284031215612a3f57600080fd5b8135611f8b8161284b565b600080600080600080600060e0888a031215612a6557600080fd5b8735612a708161284b565b96506020880135612a808161284b565b95506040880135945060608801359350608088013560ff81168114612aa457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015283604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101949350505050565b600060208284031215612b4b57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612b9357612b93612b52565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612bd657612bd6612b98565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612c0d57612c0d612b52565b5060010190565b60008251612c26818460208701612906565b9190910192915050565b600060208284031215612c4257600080fd5b81518015158114611f8b57600080fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c8a57612c8a612b52565b500290565b600082612c9e57612c9e612b98565b500690565b600063ffffffff83811690831681811015612cc057612cc0612b52565b039392505050565b60008219821115612cdb57612cdb612b52565b500190565b600060208284031215612cf257600080fd5b8151611f8b8161284b565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80831681851681830481118215151615612d3857612d38612b52565b02949350505050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80841680612d7057612d70612b98565b9216919091049291505056fea2646970667358221220738f09b9235788d5f6c3ff0250c6b0722c6d84358a084017dffe70343b7c638b64736f6c634300080a0033a26469706673582212204d51ece745f031a009593a07e5bae4f2787ccc9616fb9acf99f5c1f9b75525ce64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Library.sol/UniswapV2Library.dbg.json b/artifacts/contracts/Uniswap/UniswapV2Library.sol/UniswapV2Library.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Library.sol/UniswapV2Library.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Library.sol/UniswapV2Library.json b/artifacts/contracts/Uniswap/UniswapV2Library.sol/UniswapV2Library.json new file mode 100644 index 00000000..dcd2bfd1 --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Library.sol/UniswapV2Library.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "UniswapV2Library", + "sourceName": "contracts/Uniswap/UniswapV2Library.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204fba4b079fca9165b84325ebb9a7b540237d3f4a63f7cb4b9f342b8fb9941d0364736f6c634300080a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204fba4b079fca9165b84325ebb9a7b540237d3f4a63f7cb4b9f342b8fb9941d0364736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Pair.sol/UniswapV2Pair.dbg.json b/artifacts/contracts/Uniswap/UniswapV2Pair.sol/UniswapV2Pair.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Pair.sol/UniswapV2Pair.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Pair.sol/UniswapV2Pair.json b/artifacts/contracts/Uniswap/UniswapV2Pair.sol/UniswapV2Pair.json new file mode 100644 index 00000000..deaccf4f --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Pair.sol/UniswapV2Pair.json @@ -0,0 +1,667 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "UniswapV2Pair", + "sourceName": "contracts/Uniswap/UniswapV2Pair.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Burn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "Mint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0In", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1In", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0Out", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1Out", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Swap", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint112", + "name": "reserve0", + "type": "uint112" + }, + { + "indexed": false, + "internalType": "uint112", + "name": "reserve1", + "type": "uint112" + } + ], + "name": "Sync", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MINIMUM_LIQUIDITY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "burn", + "outputs": [ + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getReserves", + "outputs": [ + { + "internalType": "uint112", + "name": "_reserve0", + "type": "uint112" + }, + { + "internalType": "uint112", + "name": "_reserve1", + "type": "uint112" + }, + { + "internalType": "uint32", + "name": "_blockTimestampLast", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_token0", + "type": "address" + }, + { + "internalType": "address", + "name": "_token1", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "kLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "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" + }, + { + "inputs": [], + "name": "price0CumulativeLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "price1CumulativeLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "skim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount0Out", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Out", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "swap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "sync", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "token0", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token1", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040526001600c5534801561001557600080fd5b50600580546001600160a01b03191633179055612db2806100376000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a71461049b578063d505accf146104bb578063dd62ed3e146104ce578063fff6cae9146104f957600080fd5b8063ba9a7a561461045f578063bc25cf7714610468578063c45a01551461047b57600080fd5b80637ecebe00116100d35780637ecebe00146103c857806389afcb44146103e857806395d89b4114610410578063a9059cbb1461044c57600080fd5b80636a6278421461038c57806370a082311461039f5780637464fc3d146103bf57600080fd5b806323b872dd116101665780633644e515116101405780633644e5151461035e578063485cc955146103675780635909c0d51461037a5780635a3d54931461038357600080fd5b806323b872dd1461030a57806330adf81f1461031d578063313ce5671461034457600080fd5b8063095ea7b311610197578063095ea7b31461028b5780630dfe1681146102ae57806318160ddd146102f357600080fd5b8063022c0d9f146101be57806306fdde03146101d35780630902f1ac14610225575b600080fd5b6101d16101cc366004612870565b610501565b005b61020f6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b60405161021c9190612936565b60405180910390f35b600854604080516dffffffffffffffffffffffffffff80841682526e01000000000000000000000000000084041660208201527c010000000000000000000000000000000000000000000000000000000090920463ffffffff169082015260600161021c565b61029e610299366004612987565b610c5d565b604051901515815260200161021c565b6006546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021c565b6102fc60005481565b60405190815260200161021c565b61029e6103183660046129b3565b610c74565b6102fc7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61034c601281565b60405160ff909116815260200161021c565b6102fc60035481565b6101d16103753660046129f4565b610d4d565b6102fc60095481565b6102fc600a5481565b6102fc61039a366004612a2d565b610e21565b6102fc6103ad366004612a2d565b60016020526000908152604090205481565b6102fc600b5481565b6102fc6103d6366004612a2d565b60046020526000908152604090205481565b6103fb6103f6366004612a2d565b6111f7565b6040805192835260208301919091520161021c565b61020f6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b61029e61045a366004612987565b6116af565b6102fc6103e881565b6101d1610476366004612a2d565b6116bc565b6005546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b6007546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b6101d16104c9366004612a4a565b61187f565b6102fc6104dc3660046129f4565b600260209081526000928352604080842090915290825290205481565b6101d1611b6a565b600c54600114610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b454400000000000000000000000000000060448201526064015b60405180910390fd5b6000600c55841515806105855750600084115b610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f556e697377617056323a20494e53554646494349454e545f4f55545055545f4160448201527f4d4f554e540000000000000000000000000000000000000000000000000000006064820152608401610569565b60008061066d6008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b5091509150816dffffffffffffffffffffffffffff16871080156106a05750806dffffffffffffffffffffffffffff1686105b61072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f59000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061079157508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6107f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f00000000000000000000006044820152606401610569565b8a1561080857610808828a8d611d36565b891561081957610819818a8c611d36565b86156108ac576040517f10d1e85c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a16906310d1e85c906108799033908f908f908e908e90600401612ac1565b600060405180830381600087803b15801561089357600080fd5b505af11580156108a7573d6000803e3d6000fd5b505050505b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015610916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093a9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290945073ffffffffffffffffffffffffffffffffffffffff8216906370a0823190602401602060405180830381865afa1580156109a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb9190612b39565b92505050600089856dffffffffffffffffffffffffffff166109ed9190612b81565b83116109fa576000610a1e565b610a148a6dffffffffffffffffffffffffffff8716612b81565b610a1e9084612b81565b90506000610a3c8a6dffffffffffffffffffffffffffff8716612b81565b8311610a49576000610a6d565b610a638a6dffffffffffffffffffffffffffff8716612b81565b610a6d9084612b81565b90506000821180610a7e5750600081115b610b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f556e697377617056323a20494e53554646494349454e545f494e5055545f414d60448201527f4f554e54000000000000000000000000000000000000000000000000000000006064820152608401610569565b6000610b2b610b19846003611ed6565b610b25876103e8611ed6565b90611f92565b90506000610b3d610b19846003611ed6565b9050610b69620f4240610b636dffffffffffffffffffffffffffff8b8116908b16611ed6565b90611ed6565b610b738383611ed6565b1015610bdb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b00000000000000000000000000000000000000006044820152606401610569565b5050610be984848888611fd4565b60408051838152602081018390529081018c9052606081018b905273ffffffffffffffffffffffffffffffffffffffff8a169033907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229060800160405180910390a350506001600c55505050505050505050565b6000610c6a3384846122b0565b5060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610d385773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610d069083611f92565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610d4384848461231f565b5060019392505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610dce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e0000000000000000000000006044820152606401610569565b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b6000600c54600114610e8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c819055600854600654604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808516956e01000000000000000000000000000090950416939273ffffffffffffffffffffffffffffffffffffffff16916370a082319160248083019260209291908290030181865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190612b39565b6007546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291925060009173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff19190612b39565b9050600061100f836dffffffffffffffffffffffffffff8716611f92565b9050600061102d836dffffffffffffffffffffffffffff8716611f92565b9050600061103b87876123ec565b600054909150806110725761105e6103e8610b256110598787611ed6565b612557565b985061106d60006103e86125c7565b6110c7565b6110c46dffffffffffffffffffffffffffff89166110908684611ed6565b61109a9190612bc7565b6dffffffffffffffffffffffffffff89166110b58685611ed6565b6110bf9190612bc7565b612670565b98505b60008911611157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f595f4d494e5445440000000000000000000000000000000000000000000000006064820152608401610569565b6111618a8a6125c7565b61116d86868a8a611fd4565b81156111a9576008546111a5906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611ed6565b600b555b604080518581526020810185905233917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a250506001600c5550949695505050505050565b600080600c54600114611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c819055600854600654600754604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808616966e010000000000000000000000000000909604169473ffffffffffffffffffffffffffffffffffffffff94851694909316929184916370a08231916024808201926020929091908290030181865afa158015611318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133c9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa1580156113ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d09190612b39565b306000908152600160205260408120549192506113ed88886123ec565b600054909150806113fe8487611ed6565b6114089190612bc7565b9a50806114158486611ed6565b61141f9190612bc7565b995060008b118015611431575060008a115b6114bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f595f4255524e45440000000000000000000000000000000000000000000000006064820152608401610569565b6114c73084612686565b6114d2878d8d611d36565b6114dd868d8c611d36565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290955073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa1580156115d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fc9190612b39565b935061160a85858b8b611fd4565b811561164657600854611642906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611ed6565b600b555b604080518c8152602081018c905273ffffffffffffffffffffffffffffffffffffffff8e169133917fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496910160405180910390a35050505050505050506001600c81905550915091565b6000610c6a33848461231f565b600c54600114611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c556006546007546008546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff93841693909216916117f091849186916117eb916dffffffffffffffffffffffffffff9091169084906370a08231906024015b602060405180830381865afa1580156117c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b259190612b39565b611d36565b6008546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015261187591839186916117eb916e0100000000000000000000000000009091046dffffffffffffffffffffffffffff169073ffffffffffffffffffffffffffffffffffffffff8516906370a08231906024016117aa565b50506001600c5550565b428410156118e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a204558504952454400000000000000000000000000006044820152606401610569565b60035473ffffffffffffffffffffffffffffffffffffffff8816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91908761194983612bdb565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016119ea9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611a73573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611aee57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e4154555245000000006044820152606401610569565b611b5f8989896122b0565b505050505050505050565b600c54600114611bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c556006546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152611d2f9173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611c4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6f9190612b39565b6007546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015611cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d019190612b39565b6008546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611fd4565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392871691611dfd9190612c14565b6000604051808303816000865af19150503d8060008114611e3a576040519150601f19603f3d011682016040523d82523d6000602084013e611e3f565b606091505b5091509150818015611e69575080511580611e69575080806020019051810190611e699190612c30565b611ecf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c45440000000000006044820152606401610569565b5050505050565b600082611ee557506000610c6e565b6000611ef18385612c52565b905082611efe8583612bc7565b14611f8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b9392505050565b6000611f8b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612737565b6dffffffffffffffffffffffffffff841180159061200057506dffffffffffffffffffffffffffff8311155b612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f57000000000000000000000000006044820152606401610569565b600061207764010000000042612c8f565b6008549091506000906120b0907c0100000000000000000000000000000000000000000000000000000000900463ffffffff1683612ca3565b905060008163ffffffff161180156120d757506dffffffffffffffffffffffffffff841615155b80156120f257506dffffffffffffffffffffffffffff831615155b156121c0578063ffffffff1661212f8561210b8661278b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906127b6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166121579190612c52565b600960008282546121689190612cc8565b909155505063ffffffff81166121818461210b8761278b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166121a99190612c52565b600a60008282546121ba9190612cc8565b90915550505b6008805463ffffffff84167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8981166e0100000000000000000000000000009081027fffffffff000000000000000000000000000000000000000000000000000000009095168c83161794909417918216831794859055604080519382169282169290921783529290930490911660208201527f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1910160405180910390a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461234f9082611f92565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461238b90826127d2565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123129085815260200190565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa15801561245c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124809190612ce0565b600b5473ffffffffffffffffffffffffffffffffffffffff821615801594509192509061254357801561253e5760006124cf6110596dffffffffffffffffffffffffffff888116908816611ed6565b905060006124dc83612557565b90508082111561253b5760006124fe6124f58484611f92565b60005490611ed6565b9050600061251783612511866005611ed6565b906127d2565b905060006125258284612bc7565b905080156125375761253787826125c7565b5050505b50505b61254f565b801561254f576000600b555b505092915050565b600060038211156125b85750806000612571600283612bc7565b61257c906001612cc8565b90505b818110156125b2579050806002816125978186612bc7565b6125a19190612cc8565b6125ab9190612bc7565b905061257f565b50919050565b81156125c2575060015b919050565b6000546125d490826127d2565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461260690826127d2565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126649085815260200190565b60405180910390a35050565b600081831061267f5781611f8b565b5090919050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546126b69082611f92565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040812091909155546126ea9082611f92565b600090815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612664565b60008184841115612775576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105699190612936565b5060006127828486612b81565b95945050505050565b6000610c6e6e0100000000000000000000000000006dffffffffffffffffffffffffffff8416612cfd565b6000611f8b6dffffffffffffffffffffffffffff831684612d41565b6000806127df8385612cc8565b905083811015611f8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8116811461286d57600080fd5b50565b60008060008060006080868803121561288857600080fd5b853594506020860135935060408601356128a18161284b565b9250606086013567ffffffffffffffff808211156128be57600080fd5b818801915088601f8301126128d257600080fd5b8135818111156128e157600080fd5b8960208285010111156128f357600080fd5b9699959850939650602001949392505050565b60005b83811015612921578181015183820152602001612909565b83811115612930576000848401525b50505050565b6020815260008251806020840152612955816040850160208701612906565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806040838503121561299a57600080fd5b82356129a58161284b565b946020939093013593505050565b6000806000606084860312156129c857600080fd5b83356129d38161284b565b925060208401356129e38161284b565b929592945050506040919091013590565b60008060408385031215612a0757600080fd5b8235612a128161284b565b91506020830135612a228161284b565b809150509250929050565b600060208284031215612a3f57600080fd5b8135611f8b8161284b565b600080600080600080600060e0888a031215612a6557600080fd5b8735612a708161284b565b96506020880135612a808161284b565b95506040880135945060608801359350608088013560ff81168114612aa457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015283604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101949350505050565b600060208284031215612b4b57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612b9357612b93612b52565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612bd657612bd6612b98565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612c0d57612c0d612b52565b5060010190565b60008251612c26818460208701612906565b9190910192915050565b600060208284031215612c4257600080fd5b81518015158114611f8b57600080fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c8a57612c8a612b52565b500290565b600082612c9e57612c9e612b98565b500690565b600063ffffffff83811690831681811015612cc057612cc0612b52565b039392505050565b60008219821115612cdb57612cdb612b52565b500190565b600060208284031215612cf257600080fd5b8151611f8b8161284b565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80831681851681830481118215151615612d3857612d38612b52565b02949350505050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80841680612d7057612d70612b98565b9216919091049291505056fea2646970667358221220738f09b9235788d5f6c3ff0250c6b0722c6d84358a084017dffe70343b7c638b64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a71461049b578063d505accf146104bb578063dd62ed3e146104ce578063fff6cae9146104f957600080fd5b8063ba9a7a561461045f578063bc25cf7714610468578063c45a01551461047b57600080fd5b80637ecebe00116100d35780637ecebe00146103c857806389afcb44146103e857806395d89b4114610410578063a9059cbb1461044c57600080fd5b80636a6278421461038c57806370a082311461039f5780637464fc3d146103bf57600080fd5b806323b872dd116101665780633644e515116101405780633644e5151461035e578063485cc955146103675780635909c0d51461037a5780635a3d54931461038357600080fd5b806323b872dd1461030a57806330adf81f1461031d578063313ce5671461034457600080fd5b8063095ea7b311610197578063095ea7b31461028b5780630dfe1681146102ae57806318160ddd146102f357600080fd5b8063022c0d9f146101be57806306fdde03146101d35780630902f1ac14610225575b600080fd5b6101d16101cc366004612870565b610501565b005b61020f6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b60405161021c9190612936565b60405180910390f35b600854604080516dffffffffffffffffffffffffffff80841682526e01000000000000000000000000000084041660208201527c010000000000000000000000000000000000000000000000000000000090920463ffffffff169082015260600161021c565b61029e610299366004612987565b610c5d565b604051901515815260200161021c565b6006546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021c565b6102fc60005481565b60405190815260200161021c565b61029e6103183660046129b3565b610c74565b6102fc7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61034c601281565b60405160ff909116815260200161021c565b6102fc60035481565b6101d16103753660046129f4565b610d4d565b6102fc60095481565b6102fc600a5481565b6102fc61039a366004612a2d565b610e21565b6102fc6103ad366004612a2d565b60016020526000908152604090205481565b6102fc600b5481565b6102fc6103d6366004612a2d565b60046020526000908152604090205481565b6103fb6103f6366004612a2d565b6111f7565b6040805192835260208301919091520161021c565b61020f6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b61029e61045a366004612987565b6116af565b6102fc6103e881565b6101d1610476366004612a2d565b6116bc565b6005546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b6007546102ce9073ffffffffffffffffffffffffffffffffffffffff1681565b6101d16104c9366004612a4a565b61187f565b6102fc6104dc3660046129f4565b600260209081526000928352604080842090915290825290205481565b6101d1611b6a565b600c54600114610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b454400000000000000000000000000000060448201526064015b60405180910390fd5b6000600c55841515806105855750600084115b610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f556e697377617056323a20494e53554646494349454e545f4f55545055545f4160448201527f4d4f554e540000000000000000000000000000000000000000000000000000006064820152608401610569565b60008061066d6008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b5091509150816dffffffffffffffffffffffffffff16871080156106a05750806dffffffffffffffffffffffffffff1686105b61072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f59000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061079157508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6107f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f00000000000000000000006044820152606401610569565b8a1561080857610808828a8d611d36565b891561081957610819818a8c611d36565b86156108ac576040517f10d1e85c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a16906310d1e85c906108799033908f908f908e908e90600401612ac1565b600060405180830381600087803b15801561089357600080fd5b505af11580156108a7573d6000803e3d6000fd5b505050505b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015610916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093a9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290945073ffffffffffffffffffffffffffffffffffffffff8216906370a0823190602401602060405180830381865afa1580156109a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb9190612b39565b92505050600089856dffffffffffffffffffffffffffff166109ed9190612b81565b83116109fa576000610a1e565b610a148a6dffffffffffffffffffffffffffff8716612b81565b610a1e9084612b81565b90506000610a3c8a6dffffffffffffffffffffffffffff8716612b81565b8311610a49576000610a6d565b610a638a6dffffffffffffffffffffffffffff8716612b81565b610a6d9084612b81565b90506000821180610a7e5750600081115b610b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f556e697377617056323a20494e53554646494349454e545f494e5055545f414d60448201527f4f554e54000000000000000000000000000000000000000000000000000000006064820152608401610569565b6000610b2b610b19846003611ed6565b610b25876103e8611ed6565b90611f92565b90506000610b3d610b19846003611ed6565b9050610b69620f4240610b636dffffffffffffffffffffffffffff8b8116908b16611ed6565b90611ed6565b610b738383611ed6565b1015610bdb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b00000000000000000000000000000000000000006044820152606401610569565b5050610be984848888611fd4565b60408051838152602081018390529081018c9052606081018b905273ffffffffffffffffffffffffffffffffffffffff8a169033907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229060800160405180910390a350506001600c55505050505050505050565b6000610c6a3384846122b0565b5060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610d385773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610d069083611f92565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610d4384848461231f565b5060019392505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610dce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e0000000000000000000000006044820152606401610569565b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b6000600c54600114610e8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c819055600854600654604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808516956e01000000000000000000000000000090950416939273ffffffffffffffffffffffffffffffffffffffff16916370a082319160248083019260209291908290030181865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190612b39565b6007546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291925060009173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff19190612b39565b9050600061100f836dffffffffffffffffffffffffffff8716611f92565b9050600061102d836dffffffffffffffffffffffffffff8716611f92565b9050600061103b87876123ec565b600054909150806110725761105e6103e8610b256110598787611ed6565b612557565b985061106d60006103e86125c7565b6110c7565b6110c46dffffffffffffffffffffffffffff89166110908684611ed6565b61109a9190612bc7565b6dffffffffffffffffffffffffffff89166110b58685611ed6565b6110bf9190612bc7565b612670565b98505b60008911611157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f595f4d494e5445440000000000000000000000000000000000000000000000006064820152608401610569565b6111618a8a6125c7565b61116d86868a8a611fd4565b81156111a9576008546111a5906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611ed6565b600b555b604080518581526020810185905233917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a250506001600c5550949695505050505050565b600080600c54600114611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c819055600854600654600754604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808616966e010000000000000000000000000000909604169473ffffffffffffffffffffffffffffffffffffffff94851694909316929184916370a08231916024808201926020929091908290030181865afa158015611318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133c9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa1580156113ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d09190612b39565b306000908152600160205260408120549192506113ed88886123ec565b600054909150806113fe8487611ed6565b6114089190612bc7565b9a50806114158486611ed6565b61141f9190612bc7565b995060008b118015611431575060008a115b6114bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f595f4255524e45440000000000000000000000000000000000000000000000006064820152608401610569565b6114c73084612686565b6114d2878d8d611d36565b6114dd868d8c611d36565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b9190612b39565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290955073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa1580156115d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fc9190612b39565b935061160a85858b8b611fd4565b811561164657600854611642906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611ed6565b600b555b604080518c8152602081018c905273ffffffffffffffffffffffffffffffffffffffff8e169133917fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496910160405180910390a35050505050505050506001600c81905550915091565b6000610c6a33848461231f565b600c54600114611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c556006546007546008546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff93841693909216916117f091849186916117eb916dffffffffffffffffffffffffffff9091169084906370a08231906024015b602060405180830381865afa1580156117c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b259190612b39565b611d36565b6008546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015261187591839186916117eb916e0100000000000000000000000000009091046dffffffffffffffffffffffffffff169073ffffffffffffffffffffffffffffffffffffffff8516906370a08231906024016117aa565b50506001600c5550565b428410156118e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a204558504952454400000000000000000000000000006044820152606401610569565b60035473ffffffffffffffffffffffffffffffffffffffff8816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91908761194983612bdb565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016119ea9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611a73573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611aee57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e4154555245000000006044820152606401610569565b611b5f8989896122b0565b505050505050505050565b600c54600114611bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b45440000000000000000000000000000006044820152606401610569565b6000600c556006546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152611d2f9173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611c4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6f9190612b39565b6007546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015611cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d019190612b39565b6008546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611fd4565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392871691611dfd9190612c14565b6000604051808303816000865af19150503d8060008114611e3a576040519150601f19603f3d011682016040523d82523d6000602084013e611e3f565b606091505b5091509150818015611e69575080511580611e69575080806020019051810190611e699190612c30565b611ecf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c45440000000000006044820152606401610569565b5050505050565b600082611ee557506000610c6e565b6000611ef18385612c52565b905082611efe8583612bc7565b14611f8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b9392505050565b6000611f8b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612737565b6dffffffffffffffffffffffffffff841180159061200057506dffffffffffffffffffffffffffff8311155b612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f57000000000000000000000000006044820152606401610569565b600061207764010000000042612c8f565b6008549091506000906120b0907c0100000000000000000000000000000000000000000000000000000000900463ffffffff1683612ca3565b905060008163ffffffff161180156120d757506dffffffffffffffffffffffffffff841615155b80156120f257506dffffffffffffffffffffffffffff831615155b156121c0578063ffffffff1661212f8561210b8661278b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906127b6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166121579190612c52565b600960008282546121689190612cc8565b909155505063ffffffff81166121818461210b8761278b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166121a99190612c52565b600a60008282546121ba9190612cc8565b90915550505b6008805463ffffffff84167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8981166e0100000000000000000000000000009081027fffffffff000000000000000000000000000000000000000000000000000000009095168c83161794909417918216831794859055604080519382169282169290921783529290930490911660208201527f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1910160405180910390a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461234f9082611f92565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461238b90826127d2565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123129085815260200190565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa15801561245c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124809190612ce0565b600b5473ffffffffffffffffffffffffffffffffffffffff821615801594509192509061254357801561253e5760006124cf6110596dffffffffffffffffffffffffffff888116908816611ed6565b905060006124dc83612557565b90508082111561253b5760006124fe6124f58484611f92565b60005490611ed6565b9050600061251783612511866005611ed6565b906127d2565b905060006125258284612bc7565b905080156125375761253787826125c7565b5050505b50505b61254f565b801561254f576000600b555b505092915050565b600060038211156125b85750806000612571600283612bc7565b61257c906001612cc8565b90505b818110156125b2579050806002816125978186612bc7565b6125a19190612cc8565b6125ab9190612bc7565b905061257f565b50919050565b81156125c2575060015b919050565b6000546125d490826127d2565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461260690826127d2565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126649085815260200190565b60405180910390a35050565b600081831061267f5781611f8b565b5090919050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546126b69082611f92565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040812091909155546126ea9082611f92565b600090815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612664565b60008184841115612775576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105699190612936565b5060006127828486612b81565b95945050505050565b6000610c6e6e0100000000000000000000000000006dffffffffffffffffffffffffffff8416612cfd565b6000611f8b6dffffffffffffffffffffffffffff831684612d41565b6000806127df8385612cc8565b905083811015611f8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8116811461286d57600080fd5b50565b60008060008060006080868803121561288857600080fd5b853594506020860135935060408601356128a18161284b565b9250606086013567ffffffffffffffff808211156128be57600080fd5b818801915088601f8301126128d257600080fd5b8135818111156128e157600080fd5b8960208285010111156128f357600080fd5b9699959850939650602001949392505050565b60005b83811015612921578181015183820152602001612909565b83811115612930576000848401525b50505050565b6020815260008251806020840152612955816040850160208701612906565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806040838503121561299a57600080fd5b82356129a58161284b565b946020939093013593505050565b6000806000606084860312156129c857600080fd5b83356129d38161284b565b925060208401356129e38161284b565b929592945050506040919091013590565b60008060408385031215612a0757600080fd5b8235612a128161284b565b91506020830135612a228161284b565b809150509250929050565b600060208284031215612a3f57600080fd5b8135611f8b8161284b565b600080600080600080600060e0888a031215612a6557600080fd5b8735612a708161284b565b96506020880135612a808161284b565b95506040880135945060608801359350608088013560ff81168114612aa457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015283604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101949350505050565b600060208284031215612b4b57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612b9357612b93612b52565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612bd657612bd6612b98565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612c0d57612c0d612b52565b5060010190565b60008251612c26818460208701612906565b9190910192915050565b600060208284031215612c4257600080fd5b81518015158114611f8b57600080fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c8a57612c8a612b52565b500290565b600082612c9e57612c9e612b98565b500690565b600063ffffffff83811690831681811015612cc057612cc0612b52565b039392505050565b60008219821115612cdb57612cdb612b52565b500190565b600060208284031215612cf257600080fd5b8151611f8b8161284b565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80831681851681830481118215151615612d3857612d38612b52565b02949350505050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80841680612d7057612d70612b98565b9216919091049291505056fea2646970667358221220738f09b9235788d5f6c3ff0250c6b0722c6d84358a084017dffe70343b7c638b64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IERC20.dbg.json b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IERC20.dbg.json new file mode 100644 index 00000000..dc157d7e --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/182b41f591ef2465d6c9bbd4fc5b26a9.json" +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IERC20.json b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IERC20.json new file mode 100644 index 00000000..ff4fbda1 --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IERC20.json @@ -0,0 +1,233 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC20", + "sourceName": "contracts/Uniswap/UniswapV2Router02.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Factory.dbg.json b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Factory.dbg.json new file mode 100644 index 00000000..dc157d7e --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Factory.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/182b41f591ef2465d6c9bbd4fc5b26a9.json" +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Factory.json b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Factory.json new file mode 100644 index 00000000..0155c4d5 --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Factory.json @@ -0,0 +1,174 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IUniswapV2Factory", + "sourceName": "contracts/Uniswap/UniswapV2Router02.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token0", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token1", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "pair", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "PairCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "allPairs", + "outputs": [ + { + "internalType": "address", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "allPairsLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + } + ], + "name": "createPair", + "outputs": [ + { + "internalType": "address", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "feeTo", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "feeToSetter", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + } + ], + "name": "getPair", + "outputs": [ + { + "internalType": "address", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "setFeeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "setFeeToSetter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Pair.dbg.json b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Pair.dbg.json new file mode 100644 index 00000000..dc157d7e --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Pair.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/182b41f591ef2465d6c9bbd4fc5b26a9.json" +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Pair.json b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Pair.json new file mode 100644 index 00000000..aa740fa9 --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Pair.json @@ -0,0 +1,662 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IUniswapV2Pair", + "sourceName": "contracts/Uniswap/UniswapV2Router02.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Burn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "Mint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0In", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1In", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0Out", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1Out", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Swap", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint112", + "name": "reserve0", + "type": "uint112" + }, + { + "indexed": false, + "internalType": "uint112", + "name": "reserve1", + "type": "uint112" + } + ], + "name": "Sync", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MINIMUM_LIQUIDITY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "burn", + "outputs": [ + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getReserves", + "outputs": [ + { + "internalType": "uint112", + "name": "reserve0", + "type": "uint112" + }, + { + "internalType": "uint112", + "name": "reserve1", + "type": "uint112" + }, + { + "internalType": "uint32", + "name": "blockTimestampLast", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "kLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "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" + }, + { + "inputs": [], + "name": "price0CumulativeLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "price1CumulativeLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "skim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount0Out", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Out", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "swap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "sync", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "token0", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token1", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Router01.dbg.json b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Router01.dbg.json new file mode 100644 index 00000000..dc157d7e --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Router01.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/182b41f591ef2465d6c9bbd4fc5b26a9.json" +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Router01.json b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Router01.json new file mode 100644 index 00000000..025a84d1 --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Router01.json @@ -0,0 +1,760 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IUniswapV2Router01", + "sourceName": "contracts/Uniswap/UniswapV2Router02.sol", + "abi": [ + { + "inputs": [], + "name": "WETH", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountTokenDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveB", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapETHForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Router02.dbg.json b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Router02.dbg.json new file mode 100644 index 00000000..dc157d7e --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Router02.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/182b41f591ef2465d6c9bbd4fc5b26a9.json" +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Router02.json b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Router02.json new file mode 100644 index 00000000..86345d82 --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IUniswapV2Router02.json @@ -0,0 +1,962 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IUniswapV2Router02", + "sourceName": "contracts/Uniswap/UniswapV2Router02.sol", + "abi": [ + { + "inputs": [], + "name": "WETH", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountTokenDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveB", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETHSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapETHForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETHSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IWETH.dbg.json b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IWETH.dbg.json new file mode 100644 index 00000000..dc157d7e --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IWETH.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/182b41f591ef2465d6c9bbd4fc5b26a9.json" +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IWETH.json b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IWETH.json new file mode 100644 index 00000000..1de84bee --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/IWETH.json @@ -0,0 +1,55 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IWETH", + "sourceName": "contracts/Uniswap/UniswapV2Router02.sol", + "abi": [ + { + "inputs": [], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Router02.sol/SafeMath.dbg.json b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/SafeMath.dbg.json new file mode 100644 index 00000000..dc157d7e --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/SafeMath.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/182b41f591ef2465d6c9bbd4fc5b26a9.json" +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Router02.sol/SafeMath.json b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/SafeMath.json new file mode 100644 index 00000000..d1883bc9 --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/SafeMath.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SafeMath", + "sourceName": "contracts/Uniswap/UniswapV2Router02.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122033876a1c1abe5eaa36ed395a807d77365456cbe4ec38e7959bdef0c9d93ae17064736f6c63430006060033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122033876a1c1abe5eaa36ed395a807d77365456cbe4ec38e7959bdef0c9d93ae17064736f6c63430006060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Router02.sol/TransferHelper.dbg.json b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/TransferHelper.dbg.json new file mode 100644 index 00000000..dc157d7e --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/TransferHelper.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/182b41f591ef2465d6c9bbd4fc5b26a9.json" +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Router02.sol/TransferHelper.json b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/TransferHelper.json new file mode 100644 index 00000000..ad07d727 --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/TransferHelper.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TransferHelper", + "sourceName": "contracts/Uniswap/UniswapV2Router02.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220520ecb59f8e3e0bad2bb202479a16cd7c603f854ade7d2f068d7cf5eda9feaf864736f6c63430006060033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220520ecb59f8e3e0bad2bb202479a16cd7c603f854ade7d2f068d7cf5eda9feaf864736f6c63430006060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Router02.sol/UniswapV2Library.dbg.json b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/UniswapV2Library.dbg.json new file mode 100644 index 00000000..dc157d7e --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/UniswapV2Library.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/182b41f591ef2465d6c9bbd4fc5b26a9.json" +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Router02.sol/UniswapV2Library.json b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/UniswapV2Library.json new file mode 100644 index 00000000..8792a611 --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/UniswapV2Library.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "UniswapV2Library", + "sourceName": "contracts/Uniswap/UniswapV2Router02.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c7f3ad9bdfa35e5089e23c07e70e12889d54bb59d10a0760a91900de8262b5a664736f6c63430006060033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c7f3ad9bdfa35e5089e23c07e70e12889d54bb59d10a0760a91900de8262b5a664736f6c63430006060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Router02.sol/UniswapV2Router02.dbg.json b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/UniswapV2Router02.dbg.json new file mode 100644 index 00000000..dc157d7e --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/UniswapV2Router02.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/182b41f591ef2465d6c9bbd4fc5b26a9.json" +} diff --git a/artifacts/contracts/Uniswap/UniswapV2Router02.sol/UniswapV2Router02.json b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/UniswapV2Router02.json new file mode 100644 index 00000000..af3f5b0d --- /dev/null +++ b/artifacts/contracts/Uniswap/UniswapV2Router02.sol/UniswapV2Router02.json @@ -0,0 +1,982 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "UniswapV2Router02", + "sourceName": "contracts/Uniswap/UniswapV2Router02.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_factory", + "type": "address" + }, + { + "internalType": "address", + "name": "_WETH", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "WETH", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountTokenDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveB", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETHSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapETHForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETHSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x60c06040523480156200001157600080fd5b506040516200573e3803806200573e833981810160405260408110156200003757600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c6155b762000187600039806101ac5280610e5d5280610e985280610fd5528061129852806116f252806118d65280611e1e5280611fa252806120725280612179528061232c52806123c15280612673528061271a52806127ef52806128f452806129dc5280612a5d52806130ec5280613422528061347852806134ac528061352d528061374752806138f7528061398c5250806110c752806111c5528061136b52806113a4528061154f52806117e452806118b45280611aa1528061225f528061240052806125a95280612a9c5280612ddf5280613071528061309a52806130ca52806132a75280613456528061382d52806139cb528061444a528061448d52806147ed52806149ce5280614f49528061502a52806150aa52506155b76000f3fe60806040526004361061018f5760003560e01c80638803dbee116100d6578063c45a01551161007f578063e8e3370011610059578063e8e3370014610c71578063f305d71914610cfe578063fb3bdb4114610d51576101d5565b8063c45a015514610b25578063d06ca61f14610b3a578063ded9382a14610bf1576101d5565b8063af2979eb116100b0578063af2979eb146109c8578063b6f9de9514610a28578063baa2abde14610abb576101d5565b80638803dbee146108af578063ad5c464814610954578063ad615dec14610992576101d5565b80634a25d94a11610138578063791ac94711610112578063791ac947146107415780637ff36ab5146107e657806385f8c25914610879576101d5565b80634a25d94a146105775780635b0d59841461061c5780635c11d7951461069c576101d5565b80631f00ca74116101695780631f00ca74146103905780632195995c1461044757806338ed1739146104d2576101d5565b806302751cec146101da578063054d50d41461025357806318cbafe51461029b576101d5565b366101d5573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101d357fe5b005b600080fd5b3480156101e657600080fd5b5061023a600480360360c08110156101fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610de4565b6040805192835260208301919091528051918290030190f35b34801561025f57600080fd5b506102896004803603606081101561027657600080fd5b5080359060208101359060400135610f37565b60408051918252519081900360200190f35b3480156102a757600080fd5b50610340600480360360a08110156102be57600080fd5b8135916020810135918101906060810160408201356401000000008111156102e557600080fd5b8201836020820111156102f757600080fd5b8035906020019184602083028401116401000000008311171561031957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f4c565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561037c578181015183820152602001610364565b505050509050019250505060405180910390f35b34801561039c57600080fd5b50610340600480360360408110156103b357600080fd5b813591908101906040810160208201356401000000008111156103d557600080fd5b8201836020820111156103e757600080fd5b8035906020019184602083028401116401000000008311171561040957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611364945050505050565b34801561045357600080fd5b5061023a600480360361016081101561046b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561139a565b3480156104de57600080fd5b50610340600480360360a08110156104f557600080fd5b81359160208101359181019060608101604082013564010000000081111561051c57600080fd5b82018360208201111561052e57600080fd5b8035906020019184602083028401116401000000008311171561055057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356114d8565b34801561058357600080fd5b50610340600480360360a081101561059a57600080fd5b8135916020810135918101906060810160408201356401000000008111156105c157600080fd5b8201836020820111156105d357600080fd5b803590602001918460208302840111640100000000831117156105f557600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611669565b34801561062857600080fd5b50610289600480360361014081101561064057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356118ac565b3480156106a857600080fd5b506101d3600480360360a08110156106bf57600080fd5b8135916020810135918101906060810160408201356401000000008111156106e657600080fd5b8201836020820111156106f857600080fd5b8035906020019184602083028401116401000000008311171561071a57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356119fe565b34801561074d57600080fd5b506101d3600480360360a081101561076457600080fd5b81359160208101359181019060608101604082013564010000000081111561078b57600080fd5b82018360208201111561079d57600080fd5b803590602001918460208302840111640100000000831117156107bf57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611d97565b610340600480360360808110156107fc57600080fd5b8135919081019060408101602082013564010000000081111561081e57600080fd5b82018360208201111561083057600080fd5b8035906020019184602083028401116401000000008311171561085257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612105565b34801561088557600080fd5b506102896004803603606081101561089c57600080fd5b5080359060208101359060400135612525565b3480156108bb57600080fd5b50610340600480360360a08110156108d257600080fd5b8135916020810135918101906060810160408201356401000000008111156108f957600080fd5b82018360208201111561090b57600080fd5b8035906020019184602083028401116401000000008311171561092d57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612532565b34801561096057600080fd5b50610969612671565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561099e57600080fd5b50610289600480360360608110156109b557600080fd5b5080359060208101359060400135612695565b3480156109d457600080fd5b50610289600480360360c08110156109eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356126a2565b6101d360048036036080811015610a3e57600080fd5b81359190810190604081016020820135640100000000811115610a6057600080fd5b820183602082011115610a7257600080fd5b80359060200191846020830284011164010000000083111715610a9457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612882565b348015610ac757600080fd5b5061023a600480360360e0811015610ade57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612d65565b348015610b3157600080fd5b5061096961306f565b348015610b4657600080fd5b5061034060048036036040811015610b5d57600080fd5b81359190810190604081016020820135640100000000811115610b7f57600080fd5b820183602082011115610b9157600080fd5b80359060200191846020830284011164010000000083111715610bb357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613093945050505050565b348015610bfd57600080fd5b5061023a6004803603610140811015610c1557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356130c0565b348015610c7d57600080fd5b50610ce06004803603610100811015610c9557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135613218565b60408051938452602084019290925282820152519081900360600190f35b610ce0600480360360c0811015610d1457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356133a7565b61034060048036036080811015610d6757600080fd5b81359190810190604081016020820135640100000000811115610d8957600080fd5b820183602082011115610d9b57600080fd5b80359060200191846020830284011164010000000083111715610dbd57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356136d3565b6000808242811015610e5757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b610e86897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a612d65565b9093509150610e96898685613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050610f2b8583613cff565b50965096945050505050565b6000610f44848484613e3c565b949350505050565b60608142811015610fbe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061102357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6111207f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b9150868260018451038151811061113357fe5b60200260200101511015611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b611257868660008181106111a257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff163361123d7f00000000000000000000000000000000000000000000000000000000000000008a8a60008181106111f157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b600181811061121b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166140c6565b8560008151811061124a57fe5b60200260200101516141b1565b61129682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614381915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836001855103815181106112e257fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561132057600080fd5b505af1158015611334573d6000803e3d6000fd5b50505050611359848360018551038151811061134c57fe5b6020026020010151613cff565b509695505050505050565b60606113917f00000000000000000000000000000000000000000000000000000000000000008484614608565b90505b92915050565b60008060006113ca7f00000000000000000000000000000000000000000000000000000000000000008f8f6140c6565b90506000876113d9578c6113fb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561149757600080fd5b505af11580156114ab573d6000803e3d6000fd5b505050506114be8f8f8f8f8f8f8f612d65565b809450819550505050509b509b9950505050505050505050565b6060814281101561154a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6115a87f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b915086826001845103815181106115bb57fe5b6020026020010151101561161a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b61162a868660008181106111a257fe5b61135982878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b606081428110156116db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061174057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117df57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b61183d7f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150868260008151811061184d57fe5b60200260200101511115611192576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b6000806118fa7f00000000000000000000000000000000000000000000000000000000000000008d7f00000000000000000000000000000000000000000000000000000000000000006140c6565b9050600086611909578b61192b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c48101879052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156119c757600080fd5b505af11580156119db573d6000803e3d6000fd5b505050506119ed8d8d8d8d8d8d6126a2565b9d9c50505050505050505050505050565b8042811015611a6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b611afd85856000818110611a7e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633611af77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a600181811061121b57fe5b8a6141b1565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611b2d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bc657600080fd5b505afa158015611bda573d6000803e3d6000fd5b505050506040513d6020811015611bf057600080fd5b50516040805160208881028281018201909352888252929350611c32929091899189918291850190849080828437600092019190915250889250614796915050565b86611d368288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611c6557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b505afa158015611d12573d6000803e3d6000fd5b505050506040513d6020811015611d2857600080fd5b50519063ffffffff614b2916565b1015611d8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b5050505050505050565b8042811015611e0757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611e6c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b611f1b85856000818110611a7e57fe5b611f59858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614796915050565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015611fe957600080fd5b505afa158015611ffd573d6000803e3d6000fd5b505050506040513d602081101561201357600080fd5b5051905086811015612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156120e357600080fd5b505af11580156120f7573d6000803e3d6000fd5b50505050611d8d8482613cff565b6060814281101561217757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16868660008181106121bb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6122b87f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b915086826001845103815181106122cb57fe5b6020026020010151101561232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061237357fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156123a657600080fd5b505af11580156123ba573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61242c7f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b8460008151811061243957fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156124aa57600080fd5b505af11580156124be573d6000803e3d6000fd5b505050506040513d60208110156124d457600080fd5b50516124dc57fe5b61251b82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b5095945050505050565b6000610f44848484614b9b565b606081428110156125a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6126027f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150868260008151811061261257fe5b6020026020010151111561161a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610f44848484614cbf565b6000814281101561271457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b612743887f00000000000000000000000000000000000000000000000000000000000000008989893089612d65565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519194506127ed92508a91879173ffffffffffffffffffffffffffffffffffffffff8416916370a0823191602480820192602092909190829003018186803b1580156127bc57600080fd5b505afa1580156127d0573d6000803e3d6000fd5b505050506040513d60208110156127e657600080fd5b5051613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b505050506113598483613cff565b80428110156128f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168585600081811061293657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b60003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a4257600080fd5b505af1158015612a56573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612ac87f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b3257600080fd5b505af1158015612b46573d6000803e3d6000fd5b505050506040513d6020811015612b5c57600080fd5b5051612b6457fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612b9457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c2d57600080fd5b505afa158015612c41573d6000803e3d6000fd5b505050506040513d6020811015612c5757600080fd5b50516040805160208981028281018201909352898252929350612c999290918a918a918291850190849080828437600092019190915250899250614796915050565b87611d368289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612ccc57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b6000808242811015612dd857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000612e057f00000000000000000000000000000000000000000000000000000000000000008c8c6140c6565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612e8657600080fd5b505af1158015612e9a573d6000803e3d6000fd5b505050506040513d6020811015612eb057600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b505050506040513d6040811015612f4d57600080fd5b50805160209091015190925090506000612f678e8e614d9f565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614612fa4578183612fa7565b82825b90975095508a871015613005576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154bf6026913960400191505060405180910390fd5b8986101561305e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154256026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606113917f00000000000000000000000000000000000000000000000000000000000000008484613f60565b60008060006131107f00000000000000000000000000000000000000000000000000000000000000008e7f00000000000000000000000000000000000000000000000000000000000000006140c6565b905060008761311f578c613141565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050506132038e8e8e8e8e8e610de4565b909f909e509c50505050505050505050505050565b6000806000834281101561328d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61329b8c8c8c8c8c8c614ef2565b909450925060006132cd7f00000000000000000000000000000000000000000000000000000000000000008e8e6140c6565b90506132db8d3383886141b1565b6132e78c3383876141b1565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561336657600080fd5b505af115801561337a573d6000803e3d6000fd5b505050506040513d602081101561339057600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561341c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61344a8a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c614ef2565b9094509250600061349c7f00000000000000000000000000000000000000000000000000000000000000008c7f00000000000000000000000000000000000000000000000000000000000000006140c6565b90506134aa8b3383886141b1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561351257600080fd5b505af1158015613526573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156135d257600080fd5b505af11580156135e6573d6000803e3d6000fd5b505050506040513d60208110156135fc57600080fd5b505161360457fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561368357600080fd5b505af1158015613697573d6000803e3d6000fd5b505050506040513d60208110156136ad57600080fd5b50519250348410156136c5576136c533853403613cff565b505096509650969350505050565b6060814281101561374557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061378957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461382857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6138867f00000000000000000000000000000000000000000000000000000000000000008888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150348260008151811061389657fe5b602002602001015111156138f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061393e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561397157600080fd5b505af1158015613985573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6139f77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b84600081518110613a0457fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613a7557600080fd5b505af1158015613a89573d6000803e3d6000fd5b505050506040513d6020811015613a9f57600080fd5b5051613aa757fe5b613ae682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b81600081518110613af357fe5b602002602001015134111561251b5761251b3383600081518110613b1357fe5b60200260200101513403613cff565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613bf857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613bbb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c5a576040519150601f19603f3d011682016040523d82523d6000602084013e613c5f565b606091505b5091509150818015613c8d575080511580613c8d5750808060200190516020811015613c8a57600080fd5b50515b613cf857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310613d7657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613d39565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613dd8576040519150601f19603f3d011682016040523d82523d6000602084013e613ddd565b606091505b5050905080613e37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806154e56023913960400191505060405180910390fd5b505050565b6000808411613e96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615557602b913960400191505060405180910390fd5b600083118015613ea65750600082115b613efb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b6000613f0f856103e563ffffffff6151f316565b90506000613f23828563ffffffff6151f316565b90506000613f4983613f3d886103e863ffffffff6151f316565b9063ffffffff61527916565b9050808281613f5457fe5b04979650505050505050565b6060600282511015613fd357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff81118015613feb57600080fd5b50604051908082528060200260200182016040528015614015578160200160208202803683370190505b509050828160008151811061402657fe5b60200260200101818152505060005b60018351038110156140be576000806140788786858151811061405457fe5b602002602001015187866001018151811061406b57fe5b60200260200101516152eb565b9150915061409a84848151811061408b57fe5b60200260200101518383613e3c565b8484600101815181106140a957fe5b60209081029190910101525050600101614035565b509392505050565b60008060006140d58585614d9f565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061428f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101614252565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146142f1576040519150601f19603f3d011682016040523d82523d6000602084013e6142f6565b606091505b5091509150818015614324575080511580614324575080806020019051602081101561432157600080fd5b50515b614379576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806155336024913960400191505060405180910390fd5b505050505050565b60005b60018351038110156146025760008084838151811061439f57fe5b60200260200101518584600101815181106143b657fe5b60200260200101519150915060006143ce8383614d9f565b50905060008785600101815181106143e257fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461442a5782600061442e565b6000835b91509150600060028a510388106144455788614486565b6144867f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061447957fe5b60200260200101516140c6565b90506144b37f000000000000000000000000000000000000000000000000000000000000000088886140c6565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156144fd576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614588578181015183820152602001614570565b50505050905090810190601f1680156145b55780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156145d757600080fd5b505af11580156145eb573d6000803e3d6000fd5b505060019099019850614384975050505050505050565b50505050565b606060028251101561467b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561469357600080fd5b506040519080825280602002602001820160405280156146bd578160200160208202803683370190505b50905082816001835103815181106146d157fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b80156140be576000806147318786600186038151811061471d57fe5b602002602001015187868151811061406b57fe5b9150915061475384848151811061474457fe5b60200260200101518383614b9b565b84600185038151811061476257fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01614701565b60005b6001835103811015613e37576000808483815181106147b457fe5b60200260200101518584600101815181106147cb57fe5b60200260200101519150915060006147e38383614d9f565b50905060006148137f000000000000000000000000000000000000000000000000000000000000000085856140c6565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561486157600080fd5b505afa158015614875573d6000803e3d6000fd5b505050506040513d606081101561488b57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060008073ffffffffffffffffffffffffffffffffffffffff8a8116908916146148d55782846148d8565b83835b9150915061495d828b73ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b955061496a868383613e3c565b9450505050506000808573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146149ae578260006149b2565b6000835b91509150600060028c51038a106149c9578a6149fd565b6149fd7f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061447957fe5b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018781526044830187905273ffffffffffffffffffffffffffffffffffffffff8086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015614aad578181015183820152602001614a95565b50505050905090810190601f168015614ada5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614afc57600080fd5b505af1158015614b10573d6000803e3d6000fd5b50506001909b019a506147999950505050505050505050565b8082038281111561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6000808411614bf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806153d4602c913960400191505060405180910390fd5b600083118015614c055750600082115b614c5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b6000614c7e6103e8614c72868863ffffffff6151f316565b9063ffffffff6151f316565b90506000614c986103e5614c72868963ffffffff614b2916565b9050614cb56001828481614ca857fe5b049063ffffffff61527916565b9695505050505050565b6000808411614d19576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154736025913960400191505060405180910390fd5b600083118015614d295750600082115b614d7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b82614d8f858463ffffffff6151f316565b81614d9657fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614e27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154006025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610614e61578284614e64565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216614eeb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015614f9257600080fd5b505afa158015614fa6573d6000803e3d6000fd5b505050506040513d6020811015614fbc57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614156150a257604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b15801561507557600080fd5b505af1158015615089573d6000803e3d6000fd5b505050506040513d602081101561509f57600080fd5b50505b6000806150d07f00000000000000000000000000000000000000000000000000000000000000008b8b6152eb565b915091508160001480156150e2575080155b156150f2578793508692506151e6565b60006150ff898484614cbf565b905087811161516c5785811015615161576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154256026913960400191505060405180910390fd5b8894509250826151e4565b6000615179898486614cbf565b90508981111561518557fe5b878110156151de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154bf6026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b600081158061520e5750508082028282828161520b57fe5b04145b61139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60008060006152fa8585614d9f565b50905060008061530b8888886140c6565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561535057600080fd5b505afa158015615364573d6000803e3d6000fd5b505050506040513d606081101561537a57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146153c15780826153c4565b81815b9099909850965050505050505056fe556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553556e69737761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459556e697377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54556e69737761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f415f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54a2646970667358221220bcafbb1ae9cb5c3e22b6cc4ee4df3fcf6660cbbf0a654915003877e42ba956ac64736f6c63430006060033", + "deployedBytecode": "0x60806040526004361061018f5760003560e01c80638803dbee116100d6578063c45a01551161007f578063e8e3370011610059578063e8e3370014610c71578063f305d71914610cfe578063fb3bdb4114610d51576101d5565b8063c45a015514610b25578063d06ca61f14610b3a578063ded9382a14610bf1576101d5565b8063af2979eb116100b0578063af2979eb146109c8578063b6f9de9514610a28578063baa2abde14610abb576101d5565b80638803dbee146108af578063ad5c464814610954578063ad615dec14610992576101d5565b80634a25d94a11610138578063791ac94711610112578063791ac947146107415780637ff36ab5146107e657806385f8c25914610879576101d5565b80634a25d94a146105775780635b0d59841461061c5780635c11d7951461069c576101d5565b80631f00ca74116101695780631f00ca74146103905780632195995c1461044757806338ed1739146104d2576101d5565b806302751cec146101da578063054d50d41461025357806318cbafe51461029b576101d5565b366101d5573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101d357fe5b005b600080fd5b3480156101e657600080fd5b5061023a600480360360c08110156101fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610de4565b6040805192835260208301919091528051918290030190f35b34801561025f57600080fd5b506102896004803603606081101561027657600080fd5b5080359060208101359060400135610f37565b60408051918252519081900360200190f35b3480156102a757600080fd5b50610340600480360360a08110156102be57600080fd5b8135916020810135918101906060810160408201356401000000008111156102e557600080fd5b8201836020820111156102f757600080fd5b8035906020019184602083028401116401000000008311171561031957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f4c565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561037c578181015183820152602001610364565b505050509050019250505060405180910390f35b34801561039c57600080fd5b50610340600480360360408110156103b357600080fd5b813591908101906040810160208201356401000000008111156103d557600080fd5b8201836020820111156103e757600080fd5b8035906020019184602083028401116401000000008311171561040957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611364945050505050565b34801561045357600080fd5b5061023a600480360361016081101561046b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561139a565b3480156104de57600080fd5b50610340600480360360a08110156104f557600080fd5b81359160208101359181019060608101604082013564010000000081111561051c57600080fd5b82018360208201111561052e57600080fd5b8035906020019184602083028401116401000000008311171561055057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356114d8565b34801561058357600080fd5b50610340600480360360a081101561059a57600080fd5b8135916020810135918101906060810160408201356401000000008111156105c157600080fd5b8201836020820111156105d357600080fd5b803590602001918460208302840111640100000000831117156105f557600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611669565b34801561062857600080fd5b50610289600480360361014081101561064057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356118ac565b3480156106a857600080fd5b506101d3600480360360a08110156106bf57600080fd5b8135916020810135918101906060810160408201356401000000008111156106e657600080fd5b8201836020820111156106f857600080fd5b8035906020019184602083028401116401000000008311171561071a57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356119fe565b34801561074d57600080fd5b506101d3600480360360a081101561076457600080fd5b81359160208101359181019060608101604082013564010000000081111561078b57600080fd5b82018360208201111561079d57600080fd5b803590602001918460208302840111640100000000831117156107bf57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611d97565b610340600480360360808110156107fc57600080fd5b8135919081019060408101602082013564010000000081111561081e57600080fd5b82018360208201111561083057600080fd5b8035906020019184602083028401116401000000008311171561085257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612105565b34801561088557600080fd5b506102896004803603606081101561089c57600080fd5b5080359060208101359060400135612525565b3480156108bb57600080fd5b50610340600480360360a08110156108d257600080fd5b8135916020810135918101906060810160408201356401000000008111156108f957600080fd5b82018360208201111561090b57600080fd5b8035906020019184602083028401116401000000008311171561092d57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612532565b34801561096057600080fd5b50610969612671565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561099e57600080fd5b50610289600480360360608110156109b557600080fd5b5080359060208101359060400135612695565b3480156109d457600080fd5b50610289600480360360c08110156109eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356126a2565b6101d360048036036080811015610a3e57600080fd5b81359190810190604081016020820135640100000000811115610a6057600080fd5b820183602082011115610a7257600080fd5b80359060200191846020830284011164010000000083111715610a9457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612882565b348015610ac757600080fd5b5061023a600480360360e0811015610ade57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612d65565b348015610b3157600080fd5b5061096961306f565b348015610b4657600080fd5b5061034060048036036040811015610b5d57600080fd5b81359190810190604081016020820135640100000000811115610b7f57600080fd5b820183602082011115610b9157600080fd5b80359060200191846020830284011164010000000083111715610bb357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613093945050505050565b348015610bfd57600080fd5b5061023a6004803603610140811015610c1557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356130c0565b348015610c7d57600080fd5b50610ce06004803603610100811015610c9557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135613218565b60408051938452602084019290925282820152519081900360600190f35b610ce0600480360360c0811015610d1457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356133a7565b61034060048036036080811015610d6757600080fd5b81359190810190604081016020820135640100000000811115610d8957600080fd5b820183602082011115610d9b57600080fd5b80359060200191846020830284011164010000000083111715610dbd57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356136d3565b6000808242811015610e5757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b610e86897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a612d65565b9093509150610e96898685613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050610f2b8583613cff565b50965096945050505050565b6000610f44848484613e3c565b949350505050565b60608142811015610fbe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061102357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6111207f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b9150868260018451038151811061113357fe5b60200260200101511015611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b611257868660008181106111a257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff163361123d7f00000000000000000000000000000000000000000000000000000000000000008a8a60008181106111f157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b600181811061121b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166140c6565b8560008151811061124a57fe5b60200260200101516141b1565b61129682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614381915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836001855103815181106112e257fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561132057600080fd5b505af1158015611334573d6000803e3d6000fd5b50505050611359848360018551038151811061134c57fe5b6020026020010151613cff565b509695505050505050565b60606113917f00000000000000000000000000000000000000000000000000000000000000008484614608565b90505b92915050565b60008060006113ca7f00000000000000000000000000000000000000000000000000000000000000008f8f6140c6565b90506000876113d9578c6113fb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561149757600080fd5b505af11580156114ab573d6000803e3d6000fd5b505050506114be8f8f8f8f8f8f8f612d65565b809450819550505050509b509b9950505050505050505050565b6060814281101561154a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6115a87f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b915086826001845103815181106115bb57fe5b6020026020010151101561161a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b61162a868660008181106111a257fe5b61135982878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b606081428110156116db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061174057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117df57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b61183d7f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150868260008151811061184d57fe5b60200260200101511115611192576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b6000806118fa7f00000000000000000000000000000000000000000000000000000000000000008d7f00000000000000000000000000000000000000000000000000000000000000006140c6565b9050600086611909578b61192b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c48101879052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156119c757600080fd5b505af11580156119db573d6000803e3d6000fd5b505050506119ed8d8d8d8d8d8d6126a2565b9d9c50505050505050505050505050565b8042811015611a6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b611afd85856000818110611a7e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633611af77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a600181811061121b57fe5b8a6141b1565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611b2d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bc657600080fd5b505afa158015611bda573d6000803e3d6000fd5b505050506040513d6020811015611bf057600080fd5b50516040805160208881028281018201909352888252929350611c32929091899189918291850190849080828437600092019190915250889250614796915050565b86611d368288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611c6557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b505afa158015611d12573d6000803e3d6000fd5b505050506040513d6020811015611d2857600080fd5b50519063ffffffff614b2916565b1015611d8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b5050505050505050565b8042811015611e0757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611e6c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b611f1b85856000818110611a7e57fe5b611f59858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614796915050565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015611fe957600080fd5b505afa158015611ffd573d6000803e3d6000fd5b505050506040513d602081101561201357600080fd5b5051905086811015612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156120e357600080fd5b505af11580156120f7573d6000803e3d6000fd5b50505050611d8d8482613cff565b6060814281101561217757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16868660008181106121bb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6122b87f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b915086826001845103815181106122cb57fe5b6020026020010151101561232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061237357fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156123a657600080fd5b505af11580156123ba573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61242c7f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b8460008151811061243957fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156124aa57600080fd5b505af11580156124be573d6000803e3d6000fd5b505050506040513d60208110156124d457600080fd5b50516124dc57fe5b61251b82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b5095945050505050565b6000610f44848484614b9b565b606081428110156125a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6126027f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150868260008151811061261257fe5b6020026020010151111561161a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610f44848484614cbf565b6000814281101561271457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b612743887f00000000000000000000000000000000000000000000000000000000000000008989893089612d65565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519194506127ed92508a91879173ffffffffffffffffffffffffffffffffffffffff8416916370a0823191602480820192602092909190829003018186803b1580156127bc57600080fd5b505afa1580156127d0573d6000803e3d6000fd5b505050506040513d60208110156127e657600080fd5b5051613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b505050506113598483613cff565b80428110156128f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168585600081811061293657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b60003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a4257600080fd5b505af1158015612a56573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612ac87f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b3257600080fd5b505af1158015612b46573d6000803e3d6000fd5b505050506040513d6020811015612b5c57600080fd5b5051612b6457fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612b9457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c2d57600080fd5b505afa158015612c41573d6000803e3d6000fd5b505050506040513d6020811015612c5757600080fd5b50516040805160208981028281018201909352898252929350612c999290918a918a918291850190849080828437600092019190915250899250614796915050565b87611d368289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612ccc57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b6000808242811015612dd857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000612e057f00000000000000000000000000000000000000000000000000000000000000008c8c6140c6565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612e8657600080fd5b505af1158015612e9a573d6000803e3d6000fd5b505050506040513d6020811015612eb057600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b505050506040513d6040811015612f4d57600080fd5b50805160209091015190925090506000612f678e8e614d9f565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614612fa4578183612fa7565b82825b90975095508a871015613005576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154bf6026913960400191505060405180910390fd5b8986101561305e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154256026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606113917f00000000000000000000000000000000000000000000000000000000000000008484613f60565b60008060006131107f00000000000000000000000000000000000000000000000000000000000000008e7f00000000000000000000000000000000000000000000000000000000000000006140c6565b905060008761311f578c613141565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050506132038e8e8e8e8e8e610de4565b909f909e509c50505050505050505050505050565b6000806000834281101561328d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61329b8c8c8c8c8c8c614ef2565b909450925060006132cd7f00000000000000000000000000000000000000000000000000000000000000008e8e6140c6565b90506132db8d3383886141b1565b6132e78c3383876141b1565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561336657600080fd5b505af115801561337a573d6000803e3d6000fd5b505050506040513d602081101561339057600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561341c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61344a8a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c614ef2565b9094509250600061349c7f00000000000000000000000000000000000000000000000000000000000000008c7f00000000000000000000000000000000000000000000000000000000000000006140c6565b90506134aa8b3383886141b1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561351257600080fd5b505af1158015613526573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156135d257600080fd5b505af11580156135e6573d6000803e3d6000fd5b505050506040513d60208110156135fc57600080fd5b505161360457fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561368357600080fd5b505af1158015613697573d6000803e3d6000fd5b505050506040513d60208110156136ad57600080fd5b50519250348410156136c5576136c533853403613cff565b505096509650969350505050565b6060814281101561374557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061378957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461382857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6138867f00000000000000000000000000000000000000000000000000000000000000008888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150348260008151811061389657fe5b602002602001015111156138f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061393e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561397157600080fd5b505af1158015613985573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6139f77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b84600081518110613a0457fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613a7557600080fd5b505af1158015613a89573d6000803e3d6000fd5b505050506040513d6020811015613a9f57600080fd5b5051613aa757fe5b613ae682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b81600081518110613af357fe5b602002602001015134111561251b5761251b3383600081518110613b1357fe5b60200260200101513403613cff565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613bf857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613bbb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c5a576040519150601f19603f3d011682016040523d82523d6000602084013e613c5f565b606091505b5091509150818015613c8d575080511580613c8d5750808060200190516020811015613c8a57600080fd5b50515b613cf857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310613d7657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613d39565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613dd8576040519150601f19603f3d011682016040523d82523d6000602084013e613ddd565b606091505b5050905080613e37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806154e56023913960400191505060405180910390fd5b505050565b6000808411613e96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615557602b913960400191505060405180910390fd5b600083118015613ea65750600082115b613efb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b6000613f0f856103e563ffffffff6151f316565b90506000613f23828563ffffffff6151f316565b90506000613f4983613f3d886103e863ffffffff6151f316565b9063ffffffff61527916565b9050808281613f5457fe5b04979650505050505050565b6060600282511015613fd357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff81118015613feb57600080fd5b50604051908082528060200260200182016040528015614015578160200160208202803683370190505b509050828160008151811061402657fe5b60200260200101818152505060005b60018351038110156140be576000806140788786858151811061405457fe5b602002602001015187866001018151811061406b57fe5b60200260200101516152eb565b9150915061409a84848151811061408b57fe5b60200260200101518383613e3c565b8484600101815181106140a957fe5b60209081029190910101525050600101614035565b509392505050565b60008060006140d58585614d9f565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061428f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101614252565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146142f1576040519150601f19603f3d011682016040523d82523d6000602084013e6142f6565b606091505b5091509150818015614324575080511580614324575080806020019051602081101561432157600080fd5b50515b614379576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806155336024913960400191505060405180910390fd5b505050505050565b60005b60018351038110156146025760008084838151811061439f57fe5b60200260200101518584600101815181106143b657fe5b60200260200101519150915060006143ce8383614d9f565b50905060008785600101815181106143e257fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461442a5782600061442e565b6000835b91509150600060028a510388106144455788614486565b6144867f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061447957fe5b60200260200101516140c6565b90506144b37f000000000000000000000000000000000000000000000000000000000000000088886140c6565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156144fd576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614588578181015183820152602001614570565b50505050905090810190601f1680156145b55780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156145d757600080fd5b505af11580156145eb573d6000803e3d6000fd5b505060019099019850614384975050505050505050565b50505050565b606060028251101561467b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561469357600080fd5b506040519080825280602002602001820160405280156146bd578160200160208202803683370190505b50905082816001835103815181106146d157fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b80156140be576000806147318786600186038151811061471d57fe5b602002602001015187868151811061406b57fe5b9150915061475384848151811061474457fe5b60200260200101518383614b9b565b84600185038151811061476257fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01614701565b60005b6001835103811015613e37576000808483815181106147b457fe5b60200260200101518584600101815181106147cb57fe5b60200260200101519150915060006147e38383614d9f565b50905060006148137f000000000000000000000000000000000000000000000000000000000000000085856140c6565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561486157600080fd5b505afa158015614875573d6000803e3d6000fd5b505050506040513d606081101561488b57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060008073ffffffffffffffffffffffffffffffffffffffff8a8116908916146148d55782846148d8565b83835b9150915061495d828b73ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b955061496a868383613e3c565b9450505050506000808573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146149ae578260006149b2565b6000835b91509150600060028c51038a106149c9578a6149fd565b6149fd7f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061447957fe5b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018781526044830187905273ffffffffffffffffffffffffffffffffffffffff8086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015614aad578181015183820152602001614a95565b50505050905090810190601f168015614ada5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614afc57600080fd5b505af1158015614b10573d6000803e3d6000fd5b50506001909b019a506147999950505050505050505050565b8082038281111561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6000808411614bf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806153d4602c913960400191505060405180910390fd5b600083118015614c055750600082115b614c5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b6000614c7e6103e8614c72868863ffffffff6151f316565b9063ffffffff6151f316565b90506000614c986103e5614c72868963ffffffff614b2916565b9050614cb56001828481614ca857fe5b049063ffffffff61527916565b9695505050505050565b6000808411614d19576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154736025913960400191505060405180910390fd5b600083118015614d295750600082115b614d7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b82614d8f858463ffffffff6151f316565b81614d9657fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614e27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154006025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610614e61578284614e64565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216614eeb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015614f9257600080fd5b505afa158015614fa6573d6000803e3d6000fd5b505050506040513d6020811015614fbc57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614156150a257604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b15801561507557600080fd5b505af1158015615089573d6000803e3d6000fd5b505050506040513d602081101561509f57600080fd5b50505b6000806150d07f00000000000000000000000000000000000000000000000000000000000000008b8b6152eb565b915091508160001480156150e2575080155b156150f2578793508692506151e6565b60006150ff898484614cbf565b905087811161516c5785811015615161576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154256026913960400191505060405180910390fd5b8894509250826151e4565b6000615179898486614cbf565b90508981111561518557fe5b878110156151de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154bf6026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b600081158061520e5750508082028282828161520b57fe5b04145b61139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60008060006152fa8585614d9f565b50905060008061530b8888886140c6565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561535057600080fd5b505afa158015615364573d6000803e3d6000fd5b505050506040513d606081101561537a57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146153c15780826153c4565b81815b9099909850965050505050505056fe556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553556e69737761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459556e697377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54556e69737761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f415f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54a2646970667358221220bcafbb1ae9cb5c3e22b6cc4ee4df3fcf6660cbbf0a654915003877e42ba956ac64736f6c63430006060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Utils/Address.sol/Address.dbg.json b/artifacts/contracts/Utils/Address.sol/Address.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/Utils/Address.sol/Address.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/Utils/Address.sol/Address.json b/artifacts/contracts/Utils/Address.sol/Address.json new file mode 100644 index 00000000..d137db87 --- /dev/null +++ b/artifacts/contracts/Utils/Address.sol/Address.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Address", + "sourceName": "contracts/Utils/Address.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b07e2b842d23154292b6693ef26c9ada9d7711c6c05e794c4a0e1da45b0229a764736f6c634300080a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b07e2b842d23154292b6693ef26c9ada9d7711c6c05e794c4a0e1da45b0229a764736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Utils/BlockMiner.sol/BlockMiner.dbg.json b/artifacts/contracts/Utils/BlockMiner.sol/BlockMiner.dbg.json new file mode 100644 index 00000000..a0c5edfc --- /dev/null +++ b/artifacts/contracts/Utils/BlockMiner.sol/BlockMiner.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/45f74077c6313ac919099b51529f6569.json" +} diff --git a/artifacts/contracts/Utils/BlockMiner.sol/BlockMiner.json b/artifacts/contracts/Utils/BlockMiner.sol/BlockMiner.json new file mode 100644 index 00000000..59aeb92c --- /dev/null +++ b/artifacts/contracts/Utils/BlockMiner.sol/BlockMiner.json @@ -0,0 +1,49 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BlockMiner", + "sourceName": "contracts/Utils/BlockMiner.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "blockTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "blocksMined", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "mine", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506000805560f0806100236000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c806348b151661460415780638c4afaf614605557806399f4b25114605d575b600080fd5b425b60405190815260200160405180910390f35b604360005481565b60636065565b005b600160008082825460759190607c565b9091555050565b6000821982111560b5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea26469706673582212205d62149ee9071faf10f1c0291af1db38c0f14ad8bfa0b0e3ba123769b06bf38664736f6c634300080a0033", + "deployedBytecode": "0x6080604052348015600f57600080fd5b5060043610603c5760003560e01c806348b151661460415780638c4afaf614605557806399f4b25114605d575b600080fd5b425b60405190815260200160405180910390f35b604360005481565b60636065565b005b600160008082825460759190607c565b9091555050565b6000821982111560b5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea26469706673582212205d62149ee9071faf10f1c0291af1db38c0f14ad8bfa0b0e3ba123769b06bf38664736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Utils/BundleUtils.sol/BundleUtils.dbg.json b/artifacts/contracts/Utils/BundleUtils.sol/BundleUtils.dbg.json new file mode 100644 index 00000000..98a90d47 --- /dev/null +++ b/artifacts/contracts/Utils/BundleUtils.sol/BundleUtils.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/c887ad884643e1c706a3fa87fe50383e.json" +} diff --git a/artifacts/contracts/Utils/BundleUtils.sol/BundleUtils.json b/artifacts/contracts/Utils/BundleUtils.sol/BundleUtils.json new file mode 100644 index 00000000..a9904b54 --- /dev/null +++ b/artifacts/contracts/Utils/BundleUtils.sol/BundleUtils.json @@ -0,0 +1,54 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BundleUtils", + "sourceName": "contracts/Utils/BundleUtils.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_parent_hash", + "type": "bytes32" + } + ], + "name": "checkParentHash", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount_wei", + "type": "uint256" + } + ], + "name": "payFlashbotsMiner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506101bc806100206000396000f3fe6080604052600436106100295760003560e01c80633456913f1461002e578063d66f5fba14610055575b600080fd5b61004161003c36600461012f565b610075565b604051901515815260200160405180910390f35b34801561006157600080fd5b5061004161007036600461012f565b6100ad565b604051600090419083156108fc0290849084818181858888f193505050501580156100a4573d6000803e3d6000fd5b50600192915050565b6000816100bb600143610148565b4014610127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7374616c652062756e646c650000000000000000000000000000000000000000604482015260640160405180910390fd5b506001919050565b60006020828403121561014157600080fd5b5035919050565b600082821015610181577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50039056fea2646970667358221220d20f7e2eb12c5d5007280ed03bdec488281c1349962a7efcc13ed8acfca7a80464736f6c634300080a0033", + "deployedBytecode": "0x6080604052600436106100295760003560e01c80633456913f1461002e578063d66f5fba14610055575b600080fd5b61004161003c36600461012f565b610075565b604051901515815260200160405180910390f35b34801561006157600080fd5b5061004161007036600461012f565b6100ad565b604051600090419083156108fc0290849084818181858888f193505050501580156100a4573d6000803e3d6000fd5b50600192915050565b6000816100bb600143610148565b4014610127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7374616c652062756e646c650000000000000000000000000000000000000000604482015260640160405180910390fd5b506001919050565b60006020828403121561014157600080fd5b5035919050565b600082821015610181577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50039056fea2646970667358221220d20f7e2eb12c5d5007280ed03bdec488281c1349962a7efcc13ed8acfca7a80464736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Utils/EnumerableSet.sol/EnumerableSet.dbg.json b/artifacts/contracts/Utils/EnumerableSet.sol/EnumerableSet.dbg.json new file mode 100644 index 00000000..85b5b03d --- /dev/null +++ b/artifacts/contracts/Utils/EnumerableSet.sol/EnumerableSet.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/e442c70280793b4492ada7e044c0460f.json" +} diff --git a/artifacts/contracts/Utils/EnumerableSet.sol/EnumerableSet.json b/artifacts/contracts/Utils/EnumerableSet.sol/EnumerableSet.json new file mode 100644 index 00000000..a12348a3 --- /dev/null +++ b/artifacts/contracts/Utils/EnumerableSet.sol/EnumerableSet.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "EnumerableSet", + "sourceName": "contracts/Utils/EnumerableSet.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205dfa9ea66c5892e2fda9d9ba1edb1c5a38f3deb78aa2abba2a7d560fb22124d064736f6c634300080a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205dfa9ea66c5892e2fda9d9ba1edb1c5a38f3deb78aa2abba2a7d560fb22124d064736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Utils/MigrationHelper.sol/MigrationHelper.dbg.json b/artifacts/contracts/Utils/MigrationHelper.sol/MigrationHelper.dbg.json new file mode 100644 index 00000000..cad05c32 --- /dev/null +++ b/artifacts/contracts/Utils/MigrationHelper.sol/MigrationHelper.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/86b4065249f5a55fd00cca9c75aad057.json" +} diff --git a/artifacts/contracts/Utils/MigrationHelper.sol/MigrationHelper.json b/artifacts/contracts/Utils/MigrationHelper.sol/MigrationHelper.json new file mode 100644 index 00000000..9a0f1496 --- /dev/null +++ b/artifacts/contracts/Utils/MigrationHelper.sol/MigrationHelper.json @@ -0,0 +1,61 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MigrationHelper", + "sourceName": "contracts/Utils/MigrationHelper.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "gov_to_timelock_eta", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_eta", + "type": "uint256" + } + ], + "name": "setGovToTimeLockETA", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506040516101b93803806101b983398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610126806100936000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c806324403c991460415780638da5cb5b146052578063b179bafc14609b575b600080fd5b6050604c36600460d8565b60b0565b005b60005460719073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b60a360015481565b6040519081526020016092565b60005473ffffffffffffffffffffffffffffffffffffffff1633141560d55760018190555b50565b60006020828403121560e957600080fd5b503591905056fea26469706673582212203e14453934514a861ac871b60aece10346ec9bd3cc40fd38965fc20ad8de0f0164736f6c634300080a0033", + "deployedBytecode": "0x6080604052348015600f57600080fd5b5060043610603c5760003560e01c806324403c991460415780638da5cb5b146052578063b179bafc14609b575b600080fd5b6050604c36600460d8565b60b0565b005b60005460719073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b60a360015481565b6040519081526020016092565b60005473ffffffffffffffffffffffffffffffffffffffff1633141560d55760018190555b50565b60006020828403121560e957600080fd5b503591905056fea26469706673582212203e14453934514a861ac871b60aece10346ec9bd3cc40fd38965fc20ad8de0f0164736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Utils/Migrations.sol/Migrations.dbg.json b/artifacts/contracts/Utils/Migrations.sol/Migrations.dbg.json new file mode 100644 index 00000000..46b5d124 --- /dev/null +++ b/artifacts/contracts/Utils/Migrations.sol/Migrations.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/d1ece953ed017d623e632c196097c6c1.json" +} diff --git a/artifacts/contracts/Utils/Migrations.sol/Migrations.json b/artifacts/contracts/Utils/Migrations.sol/Migrations.json new file mode 100644 index 00000000..6801c321 --- /dev/null +++ b/artifacts/contracts/Utils/Migrations.sol/Migrations.json @@ -0,0 +1,55 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Migrations", + "sourceName": "contracts/Utils/Migrations.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "last_completed_migration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "completed", + "type": "uint256" + } + ], + "name": "setCompleted", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b03191633179055610126806100326000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c8063445df0ac1460415780638da5cb5b14605c578063fdacd57614609f575b600080fd5b604960015481565b6040519081526020015b60405180910390f35b600054607b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016053565b60ae60aa36600460d8565b60b0565b005b60005473ffffffffffffffffffffffffffffffffffffffff1633141560d55760018190555b50565b60006020828403121560e957600080fd5b503591905056fea264697066735822122017d1325a47fe1c9e09fe6cbb0b555a5bf2ad937453db9b4be6f31f73bf0abe8b64736f6c634300080a0033", + "deployedBytecode": "0x6080604052348015600f57600080fd5b5060043610603c5760003560e01c8063445df0ac1460415780638da5cb5b14605c578063fdacd57614609f575b600080fd5b604960015481565b6040519081526020015b60405180910390f35b600054607b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016053565b60ae60aa36600460d8565b60b0565b005b60005473ffffffffffffffffffffffffffffffffffffffff1633141560d55760018190555b50565b60006020828403121560e957600080fd5b503591905056fea264697066735822122017d1325a47fe1c9e09fe6cbb0b555a5bf2ad937453db9b4be6f31f73bf0abe8b64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Utils/ReentrancyGuard.sol/ReentrancyGuard.dbg.json b/artifacts/contracts/Utils/ReentrancyGuard.sol/ReentrancyGuard.dbg.json new file mode 100644 index 00000000..d894b5a6 --- /dev/null +++ b/artifacts/contracts/Utils/ReentrancyGuard.sol/ReentrancyGuard.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/3bb7c9fe44c5918ab8079a758e4f3c18.json" +} diff --git a/artifacts/contracts/Utils/ReentrancyGuard.sol/ReentrancyGuard.json b/artifacts/contracts/Utils/ReentrancyGuard.sol/ReentrancyGuard.json new file mode 100644 index 00000000..176694ac --- /dev/null +++ b/artifacts/contracts/Utils/ReentrancyGuard.sol/ReentrancyGuard.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ReentrancyGuard", + "sourceName": "contracts/Utils/ReentrancyGuard.sol", + "abi": [], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Utils/StorageSlot.sol/StorageSlot.dbg.json b/artifacts/contracts/Utils/StorageSlot.sol/StorageSlot.dbg.json new file mode 100644 index 00000000..2a7354c0 --- /dev/null +++ b/artifacts/contracts/Utils/StorageSlot.sol/StorageSlot.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/58bd5ffd63228c61538fb821e8a2de3d.json" +} diff --git a/artifacts/contracts/Utils/StorageSlot.sol/StorageSlot.json b/artifacts/contracts/Utils/StorageSlot.sol/StorageSlot.json new file mode 100644 index 00000000..6426e5b8 --- /dev/null +++ b/artifacts/contracts/Utils/StorageSlot.sol/StorageSlot.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "StorageSlot", + "sourceName": "contracts/Utils/StorageSlot.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122037a2c995ba78dd8150d0ea5aa5c2a120adec3d13d56af33186d4625e2d3b5e0464736f6c634300080a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122037a2c995ba78dd8150d0ea5aa5c2a120adec3d13d56af33186d4625e2d3b5e0464736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/Utils/StringHelpers.sol/StringHelpers.dbg.json b/artifacts/contracts/Utils/StringHelpers.sol/StringHelpers.dbg.json new file mode 100644 index 00000000..6b0ca68f --- /dev/null +++ b/artifacts/contracts/Utils/StringHelpers.sol/StringHelpers.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/97e70caa3e02ef80482beb1782c00554.json" +} diff --git a/artifacts/contracts/Utils/StringHelpers.sol/StringHelpers.json b/artifacts/contracts/Utils/StringHelpers.sol/StringHelpers.json new file mode 100644 index 00000000..01151e52 --- /dev/null +++ b/artifacts/contracts/Utils/StringHelpers.sol/StringHelpers.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "StringHelpers", + "sourceName": "contracts/Utils/StringHelpers.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122052b325089c55d59a014f1bd1410e959032fcc3cd3886af6fc664c4722780346e64736f6c634300060b0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122052b325089c55d59a014f1bd1410e959032fcc3cd3886af6fc664c4722780346e64736f6c634300060b0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/cache/solidity-files-cache.json b/cache/solidity-files-cache.json new file mode 100644 index 00000000..c801a087 --- /dev/null +++ b/cache/solidity-files-cache.json @@ -0,0 +1,3194 @@ +{ + "_format": "hh-sol-cache-2", + "files": { + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Uniswap/UniswapV2Router02.sol": { + "lastModificationDate": 1640014911544, + "contentHash": "8ab71bf788d291841b890f8b13ce5938", + "sourceName": "contracts/Uniswap/UniswapV2Router02.sol", + "solcConfig": { + "version": "0.6.6", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "=0.6.6" + ], + "artifacts": [ + "IERC20", + "IUniswapV2Factory", + "IUniswapV2Pair", + "IUniswapV2Router01", + "IUniswapV2Router02", + "IWETH", + "SafeMath", + "TransferHelper", + "UniswapV2Library", + "UniswapV2Router02" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Common/Ownable.sol": { + "lastModificationDate": 1640014911518, + "contentHash": "e99ab2bc369b55fcbfcaddccf87c7d6f", + "sourceName": "contracts/Common/Ownable.sol", + "solcConfig": { + "version": "0.6.11", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./Context.sol" + ], + "versionPragmas": [ + "0.6.11" + ], + "artifacts": [ + "Ownable" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/ERC20/WETH.sol": { + "lastModificationDate": 1640014911529, + "contentHash": "66a759a8a26069b6eb28acfd89a44cb0", + "sourceName": "contracts/ERC20/WETH.sol", + "solcConfig": { + "version": "0.6.11", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./IWETH.sol" + ], + "versionPragmas": [ + "0.6.11" + ], + "artifacts": [ + "WETH" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Utils/StringHelpers.sol": { + "lastModificationDate": 1640014911547, + "contentHash": "86993d314fb9a292a2e71ab73ad32240", + "sourceName": "contracts/Utils/StringHelpers.sol", + "solcConfig": { + "version": "0.6.11", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "0.6.11" + ], + "artifacts": [ + "StringHelpers" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Common/Context.sol": { + "lastModificationDate": 1640014911518, + "contentHash": "34c90732395e322a3d55bde02731b25a", + "sourceName": "contracts/Common/Context.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "Context" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/ERC20/IERC20_Detailed.sol": { + "lastModificationDate": 1640014911527, + "contentHash": "9aa2129505ed3c3d818d6802eaf858e8", + "sourceName": "contracts/ERC20/IERC20_Detailed.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "../Common/Context.sol", + "../Math/SafeMath.sol" + ], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "IERC20_Detailed" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Math/SafeMath.sol": { + "lastModificationDate": 1640014911536, + "contentHash": "14c0abfa84c66c5928c26566691a82c8", + "sourceName": "contracts/Math/SafeMath.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "SafeMath" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Uniswap/UniswapV2Library.sol": { + "lastModificationDate": 1640014911543, + "contentHash": "c7be692e40c7407fd5e6374005066aac", + "sourceName": "contracts/Uniswap/UniswapV2Library.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./Interfaces/IUniswapV2Pair.sol", + "./Interfaces/IUniswapV2Factory.sol", + "../Math/SafeMath.sol" + ], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "UniswapV2Library" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Uniswap/Interfaces/IUniswapV2Pair.sol": { + "lastModificationDate": 1640014911542, + "contentHash": "8c44bdfcb7d99247042cb4f5c00aa29a", + "sourceName": "contracts/Uniswap/Interfaces/IUniswapV2Pair.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "IUniswapV2Pair" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Uniswap/Interfaces/IUniswapV2Factory.sol": { + "lastModificationDate": 1640014911541, + "contentHash": "dfd684aaf67b5e3d7632f934e1384820", + "sourceName": "contracts/Uniswap/Interfaces/IUniswapV2Factory.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "IUniswapV2Factory" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Uniswap/UniswapV2Pair.sol": { + "lastModificationDate": 1640014911543, + "contentHash": "ca066fb5c42a2e1405290908ed0d3a3f", + "sourceName": "contracts/Uniswap/UniswapV2Pair.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./Interfaces/IUniswapV2Pair.sol", + "./UniswapV2ERC20.sol", + "../Math/Math.sol", + "../Math/UQ112x112.sol", + "../ERC20/IERC20.sol", + "./Interfaces/IUniswapV2Factory.sol", + "./Interfaces/IUniswapV2Callee.sol" + ], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "UniswapV2Pair" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Uniswap/UniswapV2ERC20.sol": { + "lastModificationDate": 1640014911543, + "contentHash": "7e4c3ec7348c564cfdab75e66af751dc", + "sourceName": "contracts/Uniswap/UniswapV2ERC20.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./Interfaces/IUniswapV2ERC20.sol", + "../Math/SafeMath.sol" + ], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "UniswapV2ERC20" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Math/Math.sol": { + "lastModificationDate": 1640014911535, + "contentHash": "4b105df2bb6cc4d411b7676532b4504a", + "sourceName": "contracts/Math/Math.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "Math" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Math/UQ112x112.sol": { + "lastModificationDate": 1640014911536, + "contentHash": "0eec991ff90b1ee30fc12a573f01632e", + "sourceName": "contracts/Math/UQ112x112.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "UQ112x112" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/ERC20/IERC20.sol": { + "lastModificationDate": 1640014911527, + "contentHash": "abecc523da5d600a7fd745ac00993fe6", + "sourceName": "contracts/ERC20/IERC20.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "../Common/Context.sol", + "../Math/SafeMath.sol" + ], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "IERC20" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Uniswap/Interfaces/IUniswapV2Callee.sol": { + "lastModificationDate": 1640014911541, + "contentHash": "5ac3e9618e2c9868e438ab0b9bf130a6", + "sourceName": "contracts/Uniswap/Interfaces/IUniswapV2Callee.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "IUniswapV2Callee" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol": { + "lastModificationDate": 1640014911541, + "contentHash": "e9672a8ae046701ca14a154b0a489c9b", + "sourceName": "contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "IUniswapV2ERC20" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/ERC20/SafeERC20.sol": { + "lastModificationDate": 1640014911528, + "contentHash": "3abff10bbbfdf7c6aa0b76e8788885d3", + "sourceName": "contracts/ERC20/SafeERC20.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./IERC20.sol", + "../Math/SafeMath.sol", + "../Utils/Address.sol" + ], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "SafeERC20" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Utils/Address.sol": { + "lastModificationDate": 1640014911545, + "contentHash": "efeb3c899f5d998dc6ed2d60d175e441", + "sourceName": "contracts/Utils/Address.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.6.11 <0.9.0" + ], + "artifacts": [ + "Address" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/ERC20/ERC20Custom.sol": { + "lastModificationDate": 1640014911526, + "contentHash": "f8f442f2d65545ee52ab7486188efc72", + "sourceName": "contracts/ERC20/ERC20Custom.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "../Common/Context.sol", + "./IERC20.sol", + "../Math/SafeMath.sol", + "../Utils/Address.sol" + ], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "ERC20Custom" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/ERC20/draft-ERC20Permit.sol": { + "lastModificationDate": 1640014911530, + "contentHash": "bfa6b9f8ec2c897c3d1bacb3619768b8", + "sourceName": "contracts/ERC20/draft-ERC20Permit.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./ERC20Custom.sol", + "@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol", + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", + "@openzeppelin/contracts/utils/Counters.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "ERC20Permit" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/node_modules/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol": { + "lastModificationDate": 1627342576346, + "contentHash": "0266cd0875ab6ce1b05e87cce62120c0", + "sourceName": "@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "IERC20Permit" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/node_modules/@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol": { + "lastModificationDate": 1627342576340, + "contentHash": "549712dc273f006b866af22f6fb3cadc", + "sourceName": "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./ECDSA.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "EIP712" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol": { + "lastModificationDate": 1627342576351, + "contentHash": "87ad64d143162461c01c2c9ef4020f5d", + "sourceName": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "ECDSA" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/node_modules/@openzeppelin/contracts/utils/Counters.sol": { + "lastModificationDate": 1627342576303, + "contentHash": "b7811964d33f23b2d45ed3ebb76a4548", + "sourceName": "@openzeppelin/contracts/utils/Counters.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "Counters" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/DEUS/DEUS.sol": { + "lastModificationDate": 1640014911523, + "contentHash": "d22df71df24b2100733357b48aa21944", + "sourceName": "contracts/DEUS/DEUS.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "../DEI/IDEI.sol", + "../ERC20/draft-ERC20Permit.sol", + "../Governance/AccessControl.sol" + ], + "versionPragmas": [ + "^0.8.10" + ], + "artifacts": [ + "DEUSToken" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/DEI/IDEI.sol": { + "lastModificationDate": 1640014911520, + "contentHash": "8f371fdc9f6242c81263dbfcef4521bf", + "sourceName": "contracts/DEI/IDEI.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [], + "artifacts": [ + "IDEIStablecoin" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Governance/AccessControl.sol": { + "lastModificationDate": 1640014911534, + "contentHash": "9ead00edfcad727f6e9afaf01055a6ed", + "sourceName": "contracts/Governance/AccessControl.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "../Utils/EnumerableSet.sol", + "../Utils/Address.sol", + "../Common/Context.sol" + ], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "AccessControl" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Utils/EnumerableSet.sol": { + "lastModificationDate": 1640014911546, + "contentHash": "a28193f7f21d96ca03459b652542a1af", + "sourceName": "contracts/Utils/EnumerableSet.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "EnumerableSet" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Staking/Staking.sol": { + "lastModificationDate": 1640014911540, + "contentHash": "a085a8741a7ab0cc5888bba070a5f26c", + "sourceName": "contracts/Staking/Staking.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "../Governance/AccessControl.sol" + ], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "DEUSToken", + "IERC20", + "Staking" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Oracle/ReserveTracker.sol": { + "lastModificationDate": 1640014911539, + "contentHash": "cb7a9832a5507faddb2f901df245e548", + "sourceName": "contracts/Oracle/ReserveTracker.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "../Math/SafeMath.sol", + "../Math/Math.sol", + "../Uniswap/Interfaces/IUniswapV2Pair.sol", + "../Governance/AccessControl.sol" + ], + "versionPragmas": [ + "^0.8.7" + ], + "artifacts": [ + "ReserveTracker" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/DEI/DEI.sol": { + "lastModificationDate": 1640014911519, + "contentHash": "a0bce61238469e47277e002810f0b869", + "sourceName": "contracts/DEI/DEI.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./Pools/DEIPool.sol", + "../Oracle/Oracle.sol", + "../Oracle/ReserveTracker.sol", + "../ERC20/draft-ERC20Permit.sol", + "../Governance/AccessControl.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "DEIStablecoin" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/DEI/Pools/DEIPool.sol": { + "lastModificationDate": 1640014911520, + "contentHash": "ae2397d3cb5e1a9ed6bc481b23edb2b5", + "sourceName": "contracts/DEI/Pools/DEIPool.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "../../Uniswap/TransferHelper.sol", + "../../DEUS/IDEUS.sol", + "../../DEI/IDEI.sol", + "../../ERC20/ERC20.sol", + "../../Governance/AccessControl.sol", + "./DEIPoolLibrary.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "DEIPool" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Oracle/Oracle.sol": { + "lastModificationDate": 1640014911537, + "contentHash": "0197eaa7a4a15f22bc52542b9d3eac33", + "sourceName": "contracts/Oracle/Oracle.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "../Governance/AccessControl.sol", + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol" + ], + "versionPragmas": [ + ">=0.6.12" + ], + "artifacts": [ + "Oracle" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Uniswap/TransferHelper.sol": { + "lastModificationDate": 1640014911542, + "contentHash": "b01ec314a5111e09abe723b667a47a55", + "sourceName": "contracts/Uniswap/TransferHelper.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "TransferHelper" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/DEUS/IDEUS.sol": { + "lastModificationDate": 1640014911524, + "contentHash": "e5755c257c0f206edd1722a40b00819c", + "sourceName": "contracts/DEUS/IDEUS.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [], + "artifacts": [ + "IDEUSToken" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/ERC20/ERC20.sol": { + "lastModificationDate": 1640014911525, + "contentHash": "752f8ed6456f902b47ca36b00fdb2c62", + "sourceName": "contracts/ERC20/ERC20.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "../Common/Context.sol", + "./IERC20.sol", + "../Math/SafeMath.sol", + "../Utils/Address.sol" + ], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "ERC20" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/DEI/Pools/DEIPoolLibrary.sol": { + "lastModificationDate": 1640014911521, + "contentHash": "3e0df8871a905747fc7098249d2c957a", + "sourceName": "contracts/DEI/Pools/DEIPoolLibrary.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.8.0" + ], + "artifacts": [ + "DEIPoolLibrary" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/DEI/Pools/Pool_USDC.sol": { + "lastModificationDate": 1640014911523, + "contentHash": "13210e5a8c30da32123dfc18aa29e421", + "sourceName": "contracts/DEI/Pools/Pool_USDC.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./DEIPool.sol" + ], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "Pool_USDC" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/DEI/Pools/Pool_HUSD.sol": { + "lastModificationDate": 1640014911523, + "contentHash": "7459384abc5a13b3d9761bfee6c9024b", + "sourceName": "contracts/DEI/Pools/Pool_HUSD.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./DEIPool.sol" + ], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "Pool_HUSD" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/DEI/Pools/Pool_DAI.sol": { + "lastModificationDate": 1640014911522, + "contentHash": "d0f51a95300e5611a19328165faaa638", + "sourceName": "contracts/DEI/Pools/Pool_DAI.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./DEIPool.sol" + ], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "Pool_DAI" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Uniswap/UniswapV2Factory.sol": { + "lastModificationDate": 1640014911543, + "contentHash": "dc0287460751a56f6bdaa90765e14452", + "sourceName": "contracts/Uniswap/UniswapV2Factory.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./Interfaces/IUniswapV2Factory.sol", + "./UniswapV2Pair.sol" + ], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "UniswapV2Factory" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Math/SafeDecimalMath.sol": { + "lastModificationDate": 1640014911536, + "contentHash": "f07d9f64b493e6df2fc2a9d9d43c5351", + "sourceName": "contracts/Math/SafeDecimalMath.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./SafeMath.sol" + ], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "SafeDecimalMath" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/DEI/Pools/DEIPoolV2.sol": { + "lastModificationDate": 1640014911522, + "contentHash": "618f904c26e7f0f7886fb78d27b6b422", + "sourceName": "contracts/DEI/Pools/DEIPoolV2.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "DEIPoolV2" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/DEI/Pools/IDEIPool.sol": { + "lastModificationDate": 1640014911522, + "contentHash": "fa207f16dfc261ef1aa2880956d5e081", + "sourceName": "contracts/DEI/Pools/IDEIPool.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "IDEIPool" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/ERC165/ERC165.sol": { + "lastModificationDate": 1640014911524, + "contentHash": "d31c046f86708c5f9d34448168d8bf82", + "sourceName": "contracts/ERC165/ERC165.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./IERC165.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "ERC165" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/ERC165/IERC165.sol": { + "lastModificationDate": 1640014911525, + "contentHash": "8575e4b7d617deb2b7adbfa42a2bd325", + "sourceName": "contracts/ERC165/IERC165.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "IERC165" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/ERC721/ERC721.sol": { + "lastModificationDate": 1640014911530, + "contentHash": "b0f921afbedafcdf83113a35b40ad3f8", + "sourceName": "contracts/ERC721/ERC721.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./V8_0_0/Common/Context.sol", + "./IERC721.sol", + "./IERC721Metadata.sol", + "./IERC721Enumerable.sol", + "./IERC721Receiver.sol", + "../ERC165/ERC165.sol", + "./V8_0_0/Utils/Address.sol", + "./V8_0_0/Utils/EnumerableSet.sol", + "./V8_0_0/Utils/EnumerableMap.sol", + "./V8_0_0/Utils/Strings.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "ERC721" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/ERC721/V8_0_0/Common/Context.sol": { + "lastModificationDate": 1640014911532, + "contentHash": "d8f46c03b92451f7686b76adcd0c6e4e", + "sourceName": "contracts/ERC721/V8_0_0/Common/Context.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "Context" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/ERC721/IERC721.sol": { + "lastModificationDate": 1640014911530, + "contentHash": "2e5548b4210ef04056a6af053cd5b9e2", + "sourceName": "contracts/ERC721/IERC721.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "../ERC165/IERC165.sol" + ], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "IERC721" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/ERC721/IERC721Metadata.sol": { + "lastModificationDate": 1640014911531, + "contentHash": "874acaff1053ccf163c6b9c5e6e113dd", + "sourceName": "contracts/ERC721/IERC721Metadata.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./IERC721.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "IERC721Metadata" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/ERC721/IERC721Enumerable.sol": { + "lastModificationDate": 1640014911531, + "contentHash": "1af6c7fa7b957bffc0030c4cb2a55ca0", + "sourceName": "contracts/ERC721/IERC721Enumerable.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./IERC721.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "IERC721Enumerable" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/ERC721/IERC721Receiver.sol": { + "lastModificationDate": 1640014911531, + "contentHash": "2d92cd688336c0373fdf1f11d81fc2fc", + "sourceName": "contracts/ERC721/IERC721Receiver.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "IERC721Receiver" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/ERC721/V8_0_0/Utils/Address.sol": { + "lastModificationDate": 1640014911533, + "contentHash": "814be9319f446615e8525705ee270db5", + "sourceName": "contracts/ERC721/V8_0_0/Utils/Address.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "Address" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol": { + "lastModificationDate": 1640014911533, + "contentHash": "0d6f4cf9842327ec4f643acba0204932", + "sourceName": "contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "EnumerableSet" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol": { + "lastModificationDate": 1640014911533, + "contentHash": "71173ed5dad67b2400394d0e798d7e59", + "sourceName": "contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "EnumerableMap" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/ERC721/V8_0_0/Utils/Strings.sol": { + "lastModificationDate": 1640014911534, + "contentHash": "0c921ced37a8cce7ac5071f9dd2e8f45", + "sourceName": "contracts/ERC721/V8_0_0/Utils/Strings.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "Strings" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/ERC721/V8_0_0/Governance/AccessControl.sol": { + "lastModificationDate": 1640014911532, + "contentHash": "99cd20b16e44027e1ea35b32e13ecd39", + "sourceName": "contracts/ERC721/V8_0_0/Governance/AccessControl.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "../Utils/EnumerableSet.sol", + "../Utils/Address.sol", + "../Common/Context.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "AccessControl" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/ERC20/IWETH.sol": { + "lastModificationDate": 1640014911527, + "contentHash": "cf2c7f0b143316760b8afc019135d722", + "sourceName": "contracts/ERC20/IWETH.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "IWETH" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/ERC721/V8_0_0/Math/SafeMath.sol": { + "lastModificationDate": 1640014911532, + "contentHash": "4898799a296bf39f9f099f34fb92083a", + "sourceName": "contracts/ERC721/V8_0_0/Math/SafeMath.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "SafeMath" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Math/Babylonian.sol": { + "lastModificationDate": 1640014911535, + "contentHash": "896cc42d4dd5f44f1da035f70de8119c", + "sourceName": "contracts/Math/Babylonian.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "Babylonian" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Math/FixedPoint.sol": { + "lastModificationDate": 1640014911535, + "contentHash": "5b88e06aa64de059991487fe7d51e8b2", + "sourceName": "contracts/Math/FixedPoint.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./Babylonian.sol" + ], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "FixedPoint" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Math/MagnitudesAndPowers.sol": { + "lastModificationDate": 1640014911535, + "contentHash": "bd481d96855b1305e20d019d05a04b2b", + "sourceName": "contracts/Math/MagnitudesAndPowers.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "MagnitudesAndPowers" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Math/SignedSafeMath.sol": { + "lastModificationDate": 1640014911536, + "contentHash": "e0c366a9aaaba1ce24a292477b035aa8", + "sourceName": "contracts/Math/SignedSafeMath.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "SignedSafeMath" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Staking/Owned.sol": { + "lastModificationDate": 1640014911539, + "contentHash": "84edb0a8cfd0ffe98a4e9a638b7f2581", + "sourceName": "contracts/Staking/Owned.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "Owned" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Uniswap/Interfaces/IUniswapV2Router01.sol": { + "lastModificationDate": 1640014911542, + "contentHash": "420c4502c714b054e6530e6f3c5f0ef0", + "sourceName": "contracts/Uniswap/Interfaces/IUniswapV2Router01.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "IUniswapV2Router01" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Uniswap/Interfaces/IUniswapV2Router02.sol": { + "lastModificationDate": 1640014911542, + "contentHash": "8225b93654ee37ce105f693e10c57ef1", + "sourceName": "contracts/Uniswap/Interfaces/IUniswapV2Router02.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./IUniswapV2Router01.sol" + ], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "IUniswapV2Router02" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Utils/BlockMiner.sol": { + "lastModificationDate": 1640014911545, + "contentHash": "a118156b211afab788fc2b4b6378c790", + "sourceName": "contracts/Utils/BlockMiner.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "BlockMiner" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Utils/BundleUtils.sol": { + "lastModificationDate": 1640014911546, + "contentHash": "7ca476f5fc1f79776213e3d2786e41fb", + "sourceName": "contracts/Utils/BundleUtils.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "BundleUtils" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Utils/MigrationHelper.sol": { + "lastModificationDate": 1640014911546, + "contentHash": "4a29c54591012a27f2aa9ed503a5eac4", + "sourceName": "contracts/Utils/MigrationHelper.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "MigrationHelper" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Utils/Migrations.sol": { + "lastModificationDate": 1640014911546, + "contentHash": "54d68fc2ce1bea11dde142670827a0bd", + "sourceName": "contracts/Utils/Migrations.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "Migrations" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Utils/ReentrancyGuard.sol": { + "lastModificationDate": 1640014911546, + "contentHash": "61bfd302c31459378cb8e01583c8746c", + "sourceName": "contracts/Utils/ReentrancyGuard.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + ">=0.6.11" + ], + "artifacts": [ + "ReentrancyGuard" + ] + }, + "/Users/apple/Documents/Projects/DEUS/DEI-solidity/src/hardhat/contracts/Utils/StorageSlot.sol": { + "lastModificationDate": 1640014911547, + "contentHash": "e1ee3f453f5153fb79e128ee469cc19c", + "sourceName": "contracts/Utils/StorageSlot.sol", + "solcConfig": { + "version": "0.8.10", + "settings": { + "optimizer": { + "enabled": true, + "runs": 100000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "StorageSlot" + ] + } + } +} diff --git a/cache/validations.json b/cache/validations.json new file mode 100644 index 00000000..74f278b0 --- /dev/null +++ b/cache/validations.json @@ -0,0 +1,3528 @@ +{ + "version": "3.2", + "log": [ + { + "StorageSlot": { + "src": "contracts/Utils/StorageSlot.sol:31", + "version": { + "withMetadata": "49b55db269d2e7b89e291828d648866d083f72264ee1e3ff7b6abf973ce5c1d3", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + } + }, + { + "ReentrancyGuard": { + "src": "contracts/Utils/ReentrancyGuard.sol:20", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "ReentrancyGuard", + "src": "contracts/Utils/ReentrancyGuard.sol:37" + } + ], + "layout": { + "storage": [ + { + "contract": "ReentrancyGuard", + "label": "_status", + "type": "t_uint256", + "src": "contracts/Utils/ReentrancyGuard.sol:35" + } + ], + "types": { + "t_uint256": { + "label": "uint256" + } + }, + "layoutVersion": "1.1" + } + } + }, + { + "Migrations": { + "src": "contracts/Utils/Migrations.sol:4", + "version": { + "withMetadata": "2cc525c8a590a81db627d7d5cecc0aa77b27d03c4a4aedfad45c0e7b26df972c", + "withoutMetadata": "3a3848af323b348fe9957be4f884ac614bf1e57e280303b42998feb934cc1af4", + "linkedWithoutMetadata": "3a3848af323b348fe9957be4f884ac614bf1e57e280303b42998feb934cc1af4" + }, + "inherit": [], + "libraries": [], + "methods": [ + "()", + "setCompleted(uint256)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "Migrations", + "src": "contracts/Utils/Migrations.sol:12" + } + ], + "layout": { + "storage": [ + { + "contract": "Migrations", + "label": "owner", + "type": "t_address", + "src": "contracts/Utils/Migrations.sol:5" + }, + { + "contract": "Migrations", + "label": "last_completed_migration", + "type": "t_uint256", + "src": "contracts/Utils/Migrations.sol:6" + } + ], + "types": { + "t_address": { + "label": "address" + }, + "t_uint256": { + "label": "uint256" + } + }, + "layoutVersion": "1.1" + } + } + }, + { + "MigrationHelper": { + "src": "contracts/Utils/MigrationHelper.sol:4", + "version": { + "withMetadata": "b4f7fcb491fb6e917de491b50b9bf8e681bf2ff251c787fc15e1ef490f38dfe8", + "withoutMetadata": "6af586746689f7101f88e7d213c8537df18a174b476286896ffb7e044b1591d1", + "linkedWithoutMetadata": "6af586746689f7101f88e7d213c8537df18a174b476286896ffb7e044b1591d1" + }, + "inherit": [], + "libraries": [], + "methods": [ + "(address)", + "setGovToTimeLockETA(uint256)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "MigrationHelper", + "src": "contracts/Utils/MigrationHelper.sol:12" + } + ], + "layout": { + "storage": [ + { + "contract": "MigrationHelper", + "label": "owner", + "type": "t_address", + "src": "contracts/Utils/MigrationHelper.sol:5" + }, + { + "contract": "MigrationHelper", + "label": "gov_to_timelock_eta", + "type": "t_uint256", + "src": "contracts/Utils/MigrationHelper.sol:6" + } + ], + "types": { + "t_address": { + "label": "address" + }, + "t_uint256": { + "label": "uint256" + } + }, + "layoutVersion": "1.1" + } + } + }, + { + "BundleUtils": { + "src": "contracts/Utils/BundleUtils.sol:5", + "version": { + "withMetadata": "1dbbb5d5483fb633276307ff28e6a2807aec5e02dedd98964bf158ed873a48a9", + "withoutMetadata": "16b214adfcc12626117acdd18b188906026c43605458e73e8e2e3208e4231f59", + "linkedWithoutMetadata": "16b214adfcc12626117acdd18b188906026c43605458e73e8e2e3208e4231f59" + }, + "inherit": [], + "libraries": [], + "methods": [ + "()", + "checkParentHash(bytes32)", + "payFlashbotsMiner(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + } + }, + { + "BlockMiner": { + "src": "contracts/Utils/BlockMiner.sol:6", + "version": { + "withMetadata": "94c6136b89552831992306ba41e28e70d1216850c3473244b7e7feb6e0080d11", + "withoutMetadata": "e4399d11e7b0c3099c671a2b031673b1bbb9ddb6b77b4f9517471273a31b2926", + "linkedWithoutMetadata": "e4399d11e7b0c3099c671a2b031673b1bbb9ddb6b77b4f9517471273a31b2926" + }, + "inherit": [], + "libraries": [], + "methods": [ + "()", + "mine()", + "blockTime()" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "BlockMiner", + "src": "contracts/Utils/BlockMiner.sol:9" + } + ], + "layout": { + "storage": [ + { + "contract": "BlockMiner", + "label": "blocksMined", + "type": "t_uint256", + "src": "contracts/Utils/BlockMiner.sol:7" + } + ], + "types": { + "t_uint256": { + "label": "uint256" + } + }, + "layoutVersion": "1.1" + } + } + }, + { + "IUniswapV2Router01": { + "src": "contracts/Uniswap/Interfaces/IUniswapV2Router01.sol:4", + "inherit": [], + "libraries": [], + "methods": [ + "factory()", + "WETH()", + "addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)", + "addLiquidityETH(address,uint256,uint256,uint256,address,uint256)", + "removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)", + "removeLiquidityETH(address,uint256,uint256,uint256,address,uint256)", + "removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)", + "removeLiquidityETHWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)", + "swapExactTokensForTokens(uint256,uint256,address[],address,uint256)", + "swapTokensForExactTokens(uint256,uint256,address[],address,uint256)", + "swapExactETHForTokens(uint256,address[],address,uint256)", + "swapTokensForExactETH(uint256,uint256,address[],address,uint256)", + "swapExactTokensForETH(uint256,uint256,address[],address,uint256)", + "swapETHForExactTokens(uint256,address[],address,uint256)", + "quote(uint256,uint256,uint256)", + "getAmountOut(uint256,uint256,uint256)", + "getAmountIn(uint256,uint256,uint256)", + "getAmountsOut(uint256,address[])", + "getAmountsIn(uint256,address[])" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "IUniswapV2Router02": { + "src": "contracts/Uniswap/Interfaces/IUniswapV2Router02.sol:6", + "inherit": [ + "IUniswapV2Router01" + ], + "libraries": [], + "methods": [ + "removeLiquidityETHSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256)", + "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)", + "swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)", + "swapExactETHForTokensSupportingFeeOnTransferTokens(uint256,address[],address,uint256)", + "swapExactTokensForETHSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + } + }, + { + "Owned": { + "src": "contracts/Staking/Owned.sol:5", + "version": { + "withMetadata": "6f027aad26d53b6f335ffb528cc0e562e1096124ccc84d05d9af1b32282b6bc5", + "withoutMetadata": "e969fb0631cc8a0b18db51a9f31be1602579304c187d81049ae69941364dfe2a", + "linkedWithoutMetadata": "e969fb0631cc8a0b18db51a9f31be1602579304c187d81049ae69941364dfe2a" + }, + "inherit": [], + "libraries": [], + "methods": [ + "(address)", + "nominateNewOwner(address)", + "acceptOwnership()" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "Owned", + "src": "contracts/Staking/Owned.sol:9" + } + ], + "layout": { + "storage": [ + { + "contract": "Owned", + "label": "owner", + "type": "t_address", + "src": "contracts/Staking/Owned.sol:6" + }, + { + "contract": "Owned", + "label": "nominatedOwner", + "type": "t_address", + "src": "contracts/Staking/Owned.sol:7" + } + ], + "types": { + "t_address": { + "label": "address" + } + }, + "layoutVersion": "1.1" + } + } + }, + { + "SignedSafeMath": { + "src": "contracts/Math/SignedSafeMath.sol:11", + "version": { + "withMetadata": "94dcd5a2160c474b86bafce68ddd4ca6359b28ea57d75a41d638782f7d158a6e", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + } + }, + { + "MagnitudesAndPowers": { + "src": "contracts/Math/MagnitudesAndPowers.sol:5", + "version": { + "withMetadata": "1eeffad39b2d2429dd07503f74b0fa857e3e8270dd04c3cb71ce784f792b8e21", + "withoutMetadata": "52a07590c4d2722bbde1c469cb4032a17bed0dc1912b0aa5180f93021e41d6b5", + "linkedWithoutMetadata": "52a07590c4d2722bbde1c469cb4032a17bed0dc1912b0aa5180f93021e41d6b5" + }, + "inherit": [], + "libraries": [], + "methods": [ + "magnitude(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + } + }, + { + "Babylonian": { + "src": "contracts/Math/Babylonian.sol:6", + "version": { + "withMetadata": "f2f5737ab81e1d51bc90587ea1cb65683001bf3b3a78019fbc683662dd25a1e8", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "FixedPoint": { + "src": "contracts/Math/FixedPoint.sol:7", + "version": { + "withMetadata": "60086c775de5c0473b670575fbbb5d41babc892d328106609c95a00682287372", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "Babylonian" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + } + }, + { + "SafeMath": { + "src": "contracts/ERC721/V8_0_0/Math/SafeMath.sol:17", + "version": { + "withMetadata": "dffb8c32669472445ae175a56c1f3cc4312cb615bb7690cb0ae51660e4f778e1", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + } + }, + { + "IWETH": { + "src": "contracts/ERC20/IWETH.sol:4", + "inherit": [], + "libraries": [], + "methods": [ + "deposit()", + "transfer(address,uint256)", + "transferFrom(address,address,uint256)", + "withdraw(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + } + }, + { + "ERC165": { + "src": "contracts/ERC165/ERC165.sol:13", + "inherit": [ + "IERC165" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "ERC165", + "src": "contracts/ERC165/ERC165.sol:19" + } + ], + "layout": { + "storage": [ + { + "contract": "ERC165", + "label": "_supportedInterfaces", + "type": "t_mapping(t_bytes4,t_bool)", + "src": "contracts/ERC165/ERC165.sol:17" + } + ], + "types": { + "t_mapping(t_bytes4,t_bool)": { + "label": "mapping(bytes4 => bool)" + }, + "t_bytes4": { + "label": "bytes4" + }, + "t_bool": { + "label": "bool" + } + }, + "layoutVersion": "1.1" + } + }, + "IERC165": { + "src": "contracts/ERC165/IERC165.sol:14", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "ERC721": { + "src": "contracts/ERC721/ERC721.sol:20", + "version": { + "withMetadata": "62d50a655abd5fd13b9cbea8e860b7f32c6017ee69165197a82aec7767106417", + "withoutMetadata": "af59b7b6d6568d03c69c727132fe6b37fc5084fbd091d73e3b374db777af8f98", + "linkedWithoutMetadata": "af59b7b6d6568d03c69c727132fe6b37fc5084fbd091d73e3b374db777af8f98" + }, + "inherit": [ + "IERC721Enumerable", + "IERC721Metadata", + "IERC721", + "ERC165", + "IERC165", + "Context" + ], + "libraries": [ + "Address", + "EnumerableSet", + "EnumerableMap", + "Strings" + ], + "methods": [ + "(string,string)", + "balanceOf(address)", + "ownerOf(uint256)", + "name()", + "symbol()", + "tokenURI(uint256)", + "baseURI()", + "tokenOfOwnerByIndex(address,uint256)", + "totalSupply()", + "tokenByIndex(uint256)", + "approve(address,uint256)", + "getApproved(uint256)", + "setApprovalForAll(address,bool)", + "isApprovedForAll(address,address)", + "transferFrom(address,address,uint256)", + "safeTransferFrom(address,address,uint256)", + "safeTransferFrom(address,address,uint256,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "ERC721", + "src": "contracts/ERC721/ERC721.sol:53" + } + ], + "layout": { + "storage": [ + { + "contract": "ERC721", + "label": "_holderTokens", + "type": "t_mapping(t_address,t_struct(UintSet)2806_storage)", + "src": "contracts/ERC721/ERC721.sol:27" + }, + { + "contract": "ERC721", + "label": "_tokenOwners", + "type": "t_struct(UintToAddressMap)2157_storage", + "src": "contracts/ERC721/ERC721.sol:30" + }, + { + "contract": "ERC721", + "label": "_tokenApprovals", + "type": "t_mapping(t_uint256,t_address)", + "src": "contracts/ERC721/ERC721.sol:33" + }, + { + "contract": "ERC721", + "label": "_operatorApprovals", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "src": "contracts/ERC721/ERC721.sol:36" + }, + { + "contract": "ERC721", + "label": "_name", + "type": "t_string_storage", + "src": "contracts/ERC721/ERC721.sol:39" + }, + { + "contract": "ERC721", + "label": "_symbol", + "type": "t_string_storage", + "src": "contracts/ERC721/ERC721.sol:42" + }, + { + "contract": "ERC721", + "label": "_tokenURIs", + "type": "t_mapping(t_uint256,t_string_storage)", + "src": "contracts/ERC721/ERC721.sol:45" + }, + { + "contract": "ERC721", + "label": "_baseURI", + "type": "t_string_storage", + "src": "contracts/ERC721/ERC721.sol:48" + } + ], + "types": { + "t_mapping(t_address,t_struct(UintSet)2806_storage)": { + "label": "mapping(address => struct EnumerableSet.UintSet)" + }, + "t_address": { + "label": "address" + }, + "t_struct(UintSet)2806_storage": { + "label": "struct EnumerableSet.UintSet", + "members": [ + { + "label": "_inner", + "type": "t_struct(Set)2402_storage" + } + ] + }, + "t_struct(Set)2402_storage": { + "label": "struct EnumerableSet.Set", + "members": [ + { + "label": "_values", + "type": "t_array(t_bytes32)dyn_storage" + }, + { + "label": "_indexes", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ] + }, + "t_array(t_bytes32)dyn_storage": { + "label": "bytes32[]" + }, + "t_bytes32": { + "label": "bytes32" + }, + "t_mapping(t_bytes32,t_uint256)": { + "label": "mapping(bytes32 => uint256)" + }, + "t_uint256": { + "label": "uint256" + }, + "t_struct(UintToAddressMap)2157_storage": { + "label": "struct EnumerableMap.UintToAddressMap", + "members": [ + { + "label": "_inner", + "type": "t_struct(Map)1828_storage" + } + ] + }, + "t_struct(Map)1828_storage": { + "label": "struct EnumerableMap.Map", + "members": [ + { + "label": "_entries", + "type": "t_array(t_struct(MapEntry)1819_storage)dyn_storage" + }, + { + "label": "_indexes", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ] + }, + "t_array(t_struct(MapEntry)1819_storage)dyn_storage": { + "label": "struct EnumerableMap.MapEntry[]" + }, + "t_struct(MapEntry)1819_storage": { + "label": "struct EnumerableMap.MapEntry", + "members": [ + { + "label": "_key", + "type": "t_bytes32" + }, + { + "label": "_value", + "type": "t_bytes32" + } + ] + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)" + }, + "t_bool": { + "label": "bool" + }, + "t_string_storage": { + "label": "string" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)" + } + }, + "layoutVersion": "1.1" + } + }, + "IERC721": { + "src": "contracts/ERC721/IERC721.sol:10", + "inherit": [ + "IERC165" + ], + "libraries": [], + "methods": [ + "balanceOf(address)", + "ownerOf(uint256)", + "safeTransferFrom(address,address,uint256)", + "transferFrom(address,address,uint256)", + "approve(address,uint256)", + "getApproved(uint256)", + "setApprovalForAll(address,bool)", + "isApprovedForAll(address,address)", + "safeTransferFrom(address,address,uint256,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "IERC721Enumerable": { + "src": "contracts/ERC721/IERC721Enumerable.sol:11", + "inherit": [ + "IERC721", + "IERC165" + ], + "libraries": [], + "methods": [ + "totalSupply()", + "tokenOfOwnerByIndex(address,uint256)", + "tokenByIndex(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "IERC721Metadata": { + "src": "contracts/ERC721/IERC721Metadata.sol:11", + "inherit": [ + "IERC721", + "IERC165" + ], + "libraries": [], + "methods": [ + "name()", + "symbol()", + "tokenURI(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "IERC721Receiver": { + "src": "contracts/ERC721/IERC721Receiver.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "onERC721Received(address,address,uint256,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "Context": { + "src": "contracts/ERC721/V8_0_0/Common/Context.sol:15", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "AccessControl": { + "src": "contracts/ERC721/V8_0_0/Governance/AccessControl.sol:44", + "inherit": [ + "Context" + ], + "libraries": [ + "EnumerableSet", + "Address" + ], + "methods": [ + "hasRole(bytes32,address)", + "getRoleMemberCount(bytes32)", + "getRoleMember(bytes32,uint256)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "contract": "AccessControl", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)1250_storage)", + "src": "contracts/ERC721/V8_0_0/Governance/AccessControl.sol:53" + } + ], + "types": { + "t_mapping(t_bytes32,t_struct(RoleData)1250_storage)": { + "label": "mapping(bytes32 => struct AccessControl.RoleData)" + }, + "t_bytes32": { + "label": "bytes32" + }, + "t_struct(RoleData)1250_storage": { + "label": "struct AccessControl.RoleData", + "members": [ + { + "label": "members", + "type": "t_struct(AddressSet)2679_storage" + }, + { + "label": "adminRole", + "type": "t_bytes32" + } + ] + }, + "t_struct(AddressSet)2679_storage": { + "label": "struct EnumerableSet.AddressSet", + "members": [ + { + "label": "_inner", + "type": "t_struct(Set)2402_storage" + } + ] + }, + "t_struct(Set)2402_storage": { + "label": "struct EnumerableSet.Set", + "members": [ + { + "label": "_values", + "type": "t_array(t_bytes32)dyn_storage" + }, + { + "label": "_indexes", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ] + }, + "t_array(t_bytes32)dyn_storage": { + "label": "bytes32[]" + }, + "t_mapping(t_bytes32,t_uint256)": { + "label": "mapping(bytes32 => uint256)" + }, + "t_uint256": { + "label": "uint256" + } + }, + "layoutVersion": "1.1" + } + }, + "Address": { + "src": "contracts/ERC721/V8_0_0/Utils/Address.sol:8", + "version": { + "withMetadata": "c7f5c8fdfd2580d65cbb9e98e40c10dcb0247436a287f683fd78284a1746ac70", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "contracts/ERC721/V8_0_0/Utils/Address.sol:167" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "EnumerableMap": { + "src": "contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol:29", + "version": { + "withMetadata": "a147d5b240a91705447c76b0e1fa4f63c0c89bdc9499610e2adea3a7d23131fc", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "EnumerableSet": { + "src": "contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol:29", + "version": { + "withMetadata": "b1a34a4eb727ad383d3748f8fa59f627ea1478ca3e9a41ffe4195c89130864ca", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "Strings": { + "src": "contracts/ERC721/V8_0_0/Utils/Strings.sol:8", + "version": { + "withMetadata": "397e2fe639748267202bbdae35b984f6d1bb2baca15185ffdb8c245ac22f41ad", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + } + }, + { + "IDEIPool": { + "src": "contracts/DEI/Pools/IDEIPool.sol:7", + "inherit": [], + "libraries": [], + "methods": [ + "minting_fee()", + "redemption_fee()", + "buyback_fee()", + "recollat_fee()", + "collatDollarBalance()", + "availableExcessCollatDV()", + "getCollateralPrice()", + "setCollatETHOracle(address,address)", + "mint1t1DEI(uint256,uint256)", + "mintAlgorithmicDEI(uint256,uint256)", + "mintFractionalDEI(uint256,uint256,uint256)", + "redeem1t1DEI(uint256,uint256)", + "redeemFractionalDEI(uint256,uint256,uint256)", + "redeemAlgorithmicDEI(uint256,uint256)", + "collectRedemption()", + "recollateralizeDEI(uint256,uint256)", + "buyBackDEUS(uint256,uint256)", + "toggleMinting()", + "toggleRedeeming()", + "toggleRecollateralize()", + "toggleBuyBack()", + "toggleCollateralPrice(uint256)", + "setPoolParameters(uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + "setTimelock(address)", + "setOwner(address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + } + }, + { + "DEIPoolV2": { + "src": "contracts/DEI/Pools/DEIPoolV2.sol:25", + "version": { + "withMetadata": "deb6422627c48a5a81030ceecb49addd4bb716121a048f8167e213a834b44940", + "withoutMetadata": "ac0db523ddc3e330f735df7b3b0b24460531c71290a891170e840f8f67d5ff6b", + "linkedWithoutMetadata": "ac0db523ddc3e330f735df7b3b0b24460531c71290a891170e840f8f67d5ff6b" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + } + }, + { + "IERC20Permit": { + "src": "@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol:13", + "inherit": [], + "libraries": [], + "methods": [ + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", + "nonces(address)", + "DOMAIN_SEPARATOR()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "Counters": { + "src": "@openzeppelin/contracts/utils/Counters.sol:13", + "version": { + "withMetadata": "05e10138a04ffa83ef998b1fc672bc392b4cc7dce271eac7724cb8844ff64855", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "ECDSA": { + "src": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol:11", + "version": { + "withMetadata": "40defc8bb2b662d686ccbbe5a0a5cb9174e7f5acdc9eb5d53008f6ff3af04086", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "EIP712": { + "src": "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol:26", + "inherit": [], + "libraries": [ + "ECDSA" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "EIP712", + "src": "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol:51" + }, + { + "kind": "state-variable-immutable", + "name": "_CACHED_DOMAIN_SEPARATOR", + "src": "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol:30" + }, + { + "kind": "state-variable-immutable", + "name": "_CACHED_CHAIN_ID", + "src": "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol:31" + }, + { + "kind": "state-variable-immutable", + "name": "_HASHED_NAME", + "src": "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol:33" + }, + { + "kind": "state-variable-immutable", + "name": "_HASHED_VERSION", + "src": "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol:34" + }, + { + "kind": "state-variable-immutable", + "name": "_TYPE_HASH", + "src": "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol:35" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "Context": { + "src": "contracts/Common/Context.sol:14", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "DEIStablecoin": { + "src": "contracts/DEI/DEI.sol:34", + "version": { + "withMetadata": "6b0bbd9ca91a33ed32b44574852a8c6b15d2849c0b66cfc0d9072c349a237c90", + "withoutMetadata": "9d29f129f5a808c085dc70ec14594955b302e02775550dd52003f1f42f98890c", + "linkedWithoutMetadata": "9d29f129f5a808c085dc70ec14594955b302e02775550dd52003f1f42f98890c" + }, + "inherit": [ + "AccessControl", + "ERC20Permit", + "EIP712", + "IERC20Permit", + "ERC20Custom", + "IERC20", + "Context" + ], + "libraries": [ + "ECDSA" + ], + "methods": [ + "(string,string,address)", + "verify_price(bytes32,bytes[])", + "dei_info(uint256[])", + "globalCollateralValue(uint256[])", + "getChainID()", + "refreshCollateralRatio(uint256,uint256,uint256,bytes[])", + "setUseGrowthRatio(bool)", + "setGrowthRatioBands(uint256,uint256)", + "setPriceBands(uint256,uint256)", + "activateDIP(bool)", + "pool_burn_from(address,uint256)", + "pool_mint(address,uint256)", + "addPool(address)", + "removePool(address)", + "setNameAndSymbol(string,string)", + "setOracle(address)", + "setDEIStep(uint256)", + "setReserveTracker(address)", + "setRefreshCooldown(uint256)", + "setDEUSAddress(address)", + "toggleCollateralRatio()" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "DEIStablecoin", + "src": "contracts/DEI/DEI.sol:98" + }, + { + "kind": "state-variable-assignment", + "name": "collateral_ratio_paused", + "src": "contracts/DEI/DEI.sol:61" + } + ], + "layout": { + "storage": [ + { + "contract": "DEIStablecoin", + "label": "symbol", + "type": "t_string_storage", + "src": "contracts/DEI/DEI.sol:38" + }, + { + "contract": "DEIStablecoin", + "label": "name", + "type": "t_string_storage", + "src": "contracts/DEI/DEI.sol:39" + }, + { + "contract": "DEIStablecoin", + "label": "oracle", + "type": "t_address", + "src": "contracts/DEI/DEI.sol:41" + }, + { + "contract": "DEIStablecoin", + "label": "deus_address", + "type": "t_address", + "src": "contracts/DEI/DEI.sol:42" + }, + { + "contract": "DEIStablecoin", + "label": "reserve_tracker_address", + "type": "t_address", + "src": "contracts/DEI/DEI.sol:44" + }, + { + "contract": "DEIStablecoin", + "label": "dei_pools_array", + "type": "t_array(t_address)dyn_storage", + "src": "contracts/DEI/DEI.sol:47" + }, + { + "contract": "DEIStablecoin", + "label": "dei_pools", + "type": "t_mapping(t_address,t_bool)", + "src": "contracts/DEI/DEI.sol:50" + }, + { + "contract": "DEIStablecoin", + "label": "global_collateral_ratio", + "type": "t_uint256", + "src": "contracts/DEI/DEI.sol:55" + }, + { + "contract": "DEIStablecoin", + "label": "dei_step", + "type": "t_uint256", + "src": "contracts/DEI/DEI.sol:56" + }, + { + "contract": "DEIStablecoin", + "label": "refresh_cooldown", + "type": "t_uint256", + "src": "contracts/DEI/DEI.sol:57" + }, + { + "contract": "DEIStablecoin", + "label": "collateral_ratio_paused", + "type": "t_bool", + "src": "contracts/DEI/DEI.sol:61" + }, + { + "contract": "DEIStablecoin", + "label": "growth_ratio", + "type": "t_uint256", + "src": "contracts/DEI/DEI.sol:65" + }, + { + "contract": "DEIStablecoin", + "label": "GR_top_band", + "type": "t_uint256", + "src": "contracts/DEI/DEI.sol:66" + }, + { + "contract": "DEIStablecoin", + "label": "GR_bottom_band", + "type": "t_uint256", + "src": "contracts/DEI/DEI.sol:67" + }, + { + "contract": "DEIStablecoin", + "label": "DEI_top_band", + "type": "t_uint256", + "src": "contracts/DEI/DEI.sol:70" + }, + { + "contract": "DEIStablecoin", + "label": "DEI_bottom_band", + "type": "t_uint256", + "src": "contracts/DEI/DEI.sol:71" + }, + { + "contract": "DEIStablecoin", + "label": "use_growth_ratio", + "type": "t_bool", + "src": "contracts/DEI/DEI.sol:74" + }, + { + "contract": "DEIStablecoin", + "label": "DIP", + "type": "t_bool", + "src": "contracts/DEI/DEI.sol:75" + }, + { + "contract": "DEIStablecoin", + "label": "last_call_time", + "type": "t_uint256", + "src": "contracts/DEI/DEI.sol:175" + } + ], + "types": { + "t_string_storage": { + "label": "string" + }, + "t_address": { + "label": "address" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)" + }, + "t_bool": { + "label": "bool" + }, + "t_uint256": { + "label": "uint256" + } + }, + "layoutVersion": "1.1" + } + }, + "IDEIStablecoin": { + "src": "contracts/DEI/IDEI.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "name()", + "symbol()", + "totalSupply()", + "global_collateral_ratio()", + "dei_pools(address)", + "dei_pools_array()", + "verify_price(bytes32,bytes[])", + "dei_info(uint256[])", + "getChainID()", + "globalCollateralValue(uint256[])", + "refreshCollateralRatio(uint256,uint256,uint256,bytes[])", + "useGrowthRatio(bool)", + "setGrowthRatioBands(uint256,uint256)", + "setPriceBands(uint256,uint256)", + "activateDIP(bool)", + "pool_burn_from(address,uint256)", + "pool_mint(address,uint256)", + "addPool(address)", + "removePool(address)", + "setNameAndSymbol(string,string)", + "setOracle(address)", + "setDEIStep(uint256)", + "setReserveTracker(address)", + "setRefreshCooldown(uint256)", + "setDEUSAddress(address)", + "toggleCollateralRatio()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "DEIPool": { + "src": "contracts/DEI/Pools/DEIPool.sol:35", + "version": { + "withMetadata": "70507a850ae5f3afe15444204f2227c7ad6e988805bcd89392368bc29f532700", + "withoutMetadata": "78b4796ec7368739ac1cbb84371af6cbe6876befc5c51c02e90fbda2e745793a", + "linkedWithoutMetadata": "78b4796ec7368739ac1cbb84371af6cbe6876befc5c51c02e90fbda2e745793a" + }, + "inherit": [ + "AccessControl", + "Context" + ], + "libraries": [ + "TransferHelper" + ], + "methods": [ + "(address,address,address,address,address,uint256,address)", + "collatDollarBalance(uint256)", + "availableExcessCollatDV(uint256[])", + "getChainID()", + "mint1t1DEI(uint256,uint256,uint256,bytes[])", + "mintAlgorithmicDEI(uint256,uint256,uint256,bytes[])", + "mintFractionalDEI(uint256,uint256,uint256,uint256,uint256,bytes[])", + "redeem1t1DEI(uint256,uint256,uint256,bytes[])", + "redeemFractionalDEI(uint256,uint256,uint256,uint256,bytes[])", + "redeemAlgorithmicDEI(uint256,uint256,uint256,bytes[])", + "collectRedemption()", + "recollateralizeDEI((uint256,uint256,uint256[],uint256,uint256,bytes[]))", + "buyBackDEUS(uint256,uint256[],uint256,uint256,bytes[])", + "collectDaoShare(uint256,address)", + "emergencyWithdrawERC20(address,uint256,address)", + "toggleMinting()", + "toggleRedeeming()", + "toggleRecollateralize()", + "toggleBuyBack()", + "setPoolParameters(uint256,uint256,uint256,uint256,uint256,uint256,uint256)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "DEIPool", + "src": "contracts/DEI/Pools/DEIPool.sol:127" + }, + { + "kind": "state-variable-immutable", + "name": "missing_decimals", + "src": "contracts/DEI/Pools/DEIPool.sol:71" + }, + { + "kind": "state-variable-assignment", + "name": "pool_ceiling", + "src": "contracts/DEI/Pools/DEIPool.sol:74" + }, + { + "kind": "state-variable-assignment", + "name": "pausedPrice", + "src": "contracts/DEI/Pools/DEIPool.sol:77" + }, + { + "kind": "state-variable-assignment", + "name": "bonus_rate", + "src": "contracts/DEI/Pools/DEIPool.sol:80" + }, + { + "kind": "state-variable-assignment", + "name": "redemption_delay", + "src": "contracts/DEI/Pools/DEIPool.sol:83" + }, + { + "kind": "state-variable-assignment", + "name": "daoShare", + "src": "contracts/DEI/Pools/DEIPool.sol:86" + }, + { + "kind": "state-variable-assignment", + "name": "mintPaused", + "src": "contracts/DEI/Pools/DEIPool.sol:100" + }, + { + "kind": "state-variable-assignment", + "name": "redeemPaused", + "src": "contracts/DEI/Pools/DEIPool.sol:101" + }, + { + "kind": "state-variable-assignment", + "name": "recollateralizePaused", + "src": "contracts/DEI/Pools/DEIPool.sol:102" + }, + { + "kind": "state-variable-assignment", + "name": "buyBackPaused", + "src": "contracts/DEI/Pools/DEIPool.sol:103" + } + ], + "layout": { + "storage": [ + { + "contract": "DEIPool", + "label": "collateral_token", + "type": "t_contract(ERC20)4919", + "src": "contracts/DEI/Pools/DEIPool.sol:48" + }, + { + "contract": "DEIPool", + "label": "collateral_address", + "type": "t_address", + "src": "contracts/DEI/Pools/DEIPool.sol:49" + }, + { + "contract": "DEIPool", + "label": "dei_contract_address", + "type": "t_address", + "src": "contracts/DEI/Pools/DEIPool.sol:51" + }, + { + "contract": "DEIPool", + "label": "deus_contract_address", + "type": "t_address", + "src": "contracts/DEI/Pools/DEIPool.sol:52" + }, + { + "contract": "DEIPool", + "label": "minting_fee", + "type": "t_uint256", + "src": "contracts/DEI/Pools/DEIPool.sol:54" + }, + { + "contract": "DEIPool", + "label": "redemption_fee", + "type": "t_uint256", + "src": "contracts/DEI/Pools/DEIPool.sol:55" + }, + { + "contract": "DEIPool", + "label": "buyback_fee", + "type": "t_uint256", + "src": "contracts/DEI/Pools/DEIPool.sol:56" + }, + { + "contract": "DEIPool", + "label": "recollat_fee", + "type": "t_uint256", + "src": "contracts/DEI/Pools/DEIPool.sol:57" + }, + { + "contract": "DEIPool", + "label": "redeemDEUSBalances", + "type": "t_mapping(t_address,t_uint256)", + "src": "contracts/DEI/Pools/DEIPool.sol:59" + }, + { + "contract": "DEIPool", + "label": "redeemCollateralBalances", + "type": "t_mapping(t_address,t_uint256)", + "src": "contracts/DEI/Pools/DEIPool.sol:60" + }, + { + "contract": "DEIPool", + "label": "unclaimedPoolCollateral", + "type": "t_uint256", + "src": "contracts/DEI/Pools/DEIPool.sol:61" + }, + { + "contract": "DEIPool", + "label": "unclaimedPoolDEUS", + "type": "t_uint256", + "src": "contracts/DEI/Pools/DEIPool.sol:62" + }, + { + "contract": "DEIPool", + "label": "lastRedeemed", + "type": "t_mapping(t_address,t_uint256)", + "src": "contracts/DEI/Pools/DEIPool.sol:63" + }, + { + "contract": "DEIPool", + "label": "pool_ceiling", + "type": "t_uint256", + "src": "contracts/DEI/Pools/DEIPool.sol:74" + }, + { + "contract": "DEIPool", + "label": "pausedPrice", + "type": "t_uint256", + "src": "contracts/DEI/Pools/DEIPool.sol:77" + }, + { + "contract": "DEIPool", + "label": "bonus_rate", + "type": "t_uint256", + "src": "contracts/DEI/Pools/DEIPool.sol:80" + }, + { + "contract": "DEIPool", + "label": "redemption_delay", + "type": "t_uint256", + "src": "contracts/DEI/Pools/DEIPool.sol:83" + }, + { + "contract": "DEIPool", + "label": "daoShare", + "type": "t_uint256", + "src": "contracts/DEI/Pools/DEIPool.sol:86" + }, + { + "contract": "DEIPool", + "label": "poolLibrary", + "type": "t_contract(DEIPoolLibrary)3879", + "src": "contracts/DEI/Pools/DEIPool.sol:88" + }, + { + "contract": "DEIPool", + "label": "mintPaused", + "type": "t_bool", + "src": "contracts/DEI/Pools/DEIPool.sol:100" + }, + { + "contract": "DEIPool", + "label": "redeemPaused", + "type": "t_bool", + "src": "contracts/DEI/Pools/DEIPool.sol:101" + }, + { + "contract": "DEIPool", + "label": "recollateralizePaused", + "type": "t_bool", + "src": "contracts/DEI/Pools/DEIPool.sol:102" + }, + { + "contract": "DEIPool", + "label": "buyBackPaused", + "type": "t_bool", + "src": "contracts/DEI/Pools/DEIPool.sol:103" + } + ], + "types": { + "t_contract(ERC20)4919": { + "label": "contract ERC20" + }, + "t_address": { + "label": "address" + }, + "t_uint256": { + "label": "uint256" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)" + }, + "t_contract(DEIPoolLibrary)3879": { + "label": "contract DEIPoolLibrary" + }, + "t_bool": { + "label": "bool" + } + }, + "layoutVersion": "1.1" + } + }, + "DEIPoolLibrary": { + "src": "contracts/DEI/Pools/DEIPoolLibrary.sol:7", + "version": { + "withMetadata": "7948edd31eb10a395fa14bd90b2e48e21dbb40f6a673a5548db9d36ada962a20", + "withoutMetadata": "60a6eb9f160524b159f56ef86b374a540d14da66e9faf0b7be834b7a949cd6db", + "linkedWithoutMetadata": "60a6eb9f160524b159f56ef86b374a540d14da66e9faf0b7be834b7a949cd6db" + }, + "inherit": [], + "libraries": [], + "methods": [ + "()", + "calcMint1t1DEI(uint256,uint256)", + "calcMintAlgorithmicDEI(uint256,uint256)", + "calcMintFractionalDEI((uint256,uint256,uint256,uint256))", + "calcRedeem1t1DEI(uint256,uint256)", + "calcBuyBackDEUS((uint256,uint256,uint256,uint256))", + "recollateralizeAmount(uint256,uint256,uint256)", + "calcRecollateralizeDEIInner(uint256,uint256,uint256,uint256,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "Pool_DAI": { + "src": "contracts/DEI/Pools/Pool_DAI.sol:9", + "version": { + "withMetadata": "abc53d6d95a2a13e2cd2e2b4cb03f66e1155feab5dc6ee87178b862d2aed4514", + "withoutMetadata": "943c1e79b5e29fb2ec67d81df59b53fbf646c95758fc88ea2f64ce2c52c98d5a", + "linkedWithoutMetadata": "943c1e79b5e29fb2ec67d81df59b53fbf646c95758fc88ea2f64ce2c52c98d5a" + }, + "inherit": [ + "DEIPool", + "AccessControl", + "Context" + ], + "libraries": [], + "methods": [ + "(address,address,address,address,address,uint256,address)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "Pool_DAI", + "src": "contracts/DEI/Pools/Pool_DAI.sol:11" + } + ], + "layout": { + "storage": [ + { + "contract": "Pool_DAI", + "label": "DAI_address", + "type": "t_address", + "src": "contracts/DEI/Pools/Pool_DAI.sol:10" + } + ], + "types": { + "t_address": { + "label": "address" + } + }, + "layoutVersion": "1.1" + } + }, + "Pool_HUSD": { + "src": "contracts/DEI/Pools/Pool_HUSD.sol:9", + "version": { + "withMetadata": "fc9912691d36d6a3814d770432f2c740943fbc8164e92efadce3f3520e7ade4b", + "withoutMetadata": "e2684bc0b62181f27d208c962347fef8ee45f2ae4334db37f18e96a53900bd9f", + "linkedWithoutMetadata": "e2684bc0b62181f27d208c962347fef8ee45f2ae4334db37f18e96a53900bd9f" + }, + "inherit": [ + "DEIPool", + "AccessControl", + "Context" + ], + "libraries": [], + "methods": [ + "(address,address,address,address,address,uint256,address)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "Pool_HUSD", + "src": "contracts/DEI/Pools/Pool_HUSD.sol:11" + } + ], + "layout": { + "storage": [ + { + "contract": "Pool_HUSD", + "label": "HUSD_address", + "type": "t_address", + "src": "contracts/DEI/Pools/Pool_HUSD.sol:10" + } + ], + "types": { + "t_address": { + "label": "address" + } + }, + "layoutVersion": "1.1" + } + }, + "Pool_USDC": { + "src": "contracts/DEI/Pools/Pool_USDC.sol:9", + "version": { + "withMetadata": "73d0ac905fb085eb661f1d6c8e851b0338d0f45429b2cf52b8ccbdb01440d6fa", + "withoutMetadata": "d9ef9326a377df8fbcdc038a818eece225f9efcb60878e1aa010044a96a53382", + "linkedWithoutMetadata": "d9ef9326a377df8fbcdc038a818eece225f9efcb60878e1aa010044a96a53382" + }, + "inherit": [ + "DEIPool", + "AccessControl", + "Context" + ], + "libraries": [], + "methods": [ + "(address,address,address,address,address,uint256,address)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "Pool_USDC", + "src": "contracts/DEI/Pools/Pool_USDC.sol:11" + } + ], + "layout": { + "storage": [ + { + "contract": "Pool_USDC", + "label": "USDC_address", + "type": "t_address", + "src": "contracts/DEI/Pools/Pool_USDC.sol:10" + } + ], + "types": { + "t_address": { + "label": "address" + } + }, + "layoutVersion": "1.1" + } + }, + "DEUSToken": { + "src": "contracts/Staking/Staking.sol:33", + "inherit": [], + "libraries": [], + "methods": [ + "pool_mint(address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "IDEUSToken": { + "src": "contracts/DEUS/IDEUS.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "name()", + "symbol()", + "pool_burn_from(address,uint256)", + "pool_mint(address,uint256)", + "mint(address,uint256)", + "setDEIAddress(address)", + "setNameAndSymbol(string,string)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "ERC20": { + "src": "contracts/ERC20/ERC20.sol:35", + "version": { + "withMetadata": "0ef6b767abb24b95f2f7d6a53d09a8cdd1c0d30da515c59245eae24f9a0822ab", + "withoutMetadata": "bff440c6afdf1eeb3b9768ee0d78222b4d98ffa09d27364057098313ca1ab933", + "linkedWithoutMetadata": "bff440c6afdf1eeb3b9768ee0d78222b4d98ffa09d27364057098313ca1ab933" + }, + "inherit": [ + "IERC20", + "Context" + ], + "libraries": [ + "SafeMath" + ], + "methods": [ + "(string,string)", + "name()", + "symbol()", + "decimals()", + "totalSupply()", + "balanceOf(address)", + "transfer(address,uint256)", + "allowance(address,address)", + "approve(address,uint256)", + "transferFrom(address,address,uint256)", + "increaseAllowance(address,uint256)", + "decreaseAllowance(address,uint256)", + "burn(uint256)", + "burnFrom(address,uint256)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "ERC20", + "src": "contracts/ERC20/ERC20.sol:57" + } + ], + "layout": { + "storage": [ + { + "contract": "ERC20", + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "src": "contracts/ERC20/ERC20.sol:38" + }, + { + "contract": "ERC20", + "label": "_allowances", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))", + "src": "contracts/ERC20/ERC20.sol:40" + }, + { + "contract": "ERC20", + "label": "_totalSupply", + "type": "t_uint256", + "src": "contracts/ERC20/ERC20.sol:42" + }, + { + "contract": "ERC20", + "label": "_name", + "type": "t_string_storage", + "src": "contracts/ERC20/ERC20.sol:44" + }, + { + "contract": "ERC20", + "label": "_symbol", + "type": "t_string_storage", + "src": "contracts/ERC20/ERC20.sol:45" + }, + { + "contract": "ERC20", + "label": "_decimals", + "type": "t_uint8", + "src": "contracts/ERC20/ERC20.sol:46" + } + ], + "types": { + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)" + }, + "t_address": { + "label": "address" + }, + "t_uint256": { + "label": "uint256" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "label": "mapping(address => mapping(address => uint256))" + }, + "t_string_storage": { + "label": "string" + }, + "t_uint8": { + "label": "uint8" + } + }, + "layoutVersion": "1.1" + } + }, + "ERC20Custom": { + "src": "contracts/ERC20/ERC20Custom.sol:36", + "version": { + "withMetadata": "a58fd4cd4faeddfd1d6987a4ccbc36c1027221cee330dd881c278212598e8f76", + "withoutMetadata": "4d400bf71bb102860eea4ebb3bd4121fb7e35f5e64656cace60b7fb724d9ee2d", + "linkedWithoutMetadata": "4d400bf71bb102860eea4ebb3bd4121fb7e35f5e64656cace60b7fb724d9ee2d" + }, + "inherit": [ + "IERC20", + "Context" + ], + "libraries": [ + "SafeMath" + ], + "methods": [ + "totalSupply()", + "balanceOf(address)", + "transfer(address,uint256)", + "allowance(address,address)", + "approve(address,uint256)", + "transferFrom(address,address,uint256)", + "increaseAllowance(address,uint256)", + "decreaseAllowance(address,uint256)", + "burn(uint256)", + "burnFrom(address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "contract": "ERC20Custom", + "label": "_balances", + "type": "t_mapping(t_address,t_uint256)", + "src": "contracts/ERC20/ERC20Custom.sol:39" + }, + { + "contract": "ERC20Custom", + "label": "_allowances", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))", + "src": "contracts/ERC20/ERC20Custom.sol:41" + }, + { + "contract": "ERC20Custom", + "label": "_totalSupply", + "type": "t_uint256", + "src": "contracts/ERC20/ERC20Custom.sol:43" + } + ], + "types": { + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)" + }, + "t_address": { + "label": "address" + }, + "t_uint256": { + "label": "uint256" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "label": "mapping(address => mapping(address => uint256))" + } + }, + "layoutVersion": "1.1" + } + }, + "IERC20": { + "src": "contracts/Staking/Staking.sol:27", + "inherit": [], + "libraries": [], + "methods": [ + "balanceOf(address)", + "transfer(address,uint256)", + "transferFrom(address,address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "IERC20_Detailed": { + "src": "contracts/ERC20/IERC20_Detailed.sol:11", + "inherit": [], + "libraries": [], + "methods": [ + "_name()", + "_symbol()", + "_decimals()", + "totalSupply()", + "balanceOf(address)", + "transfer(address,uint256)", + "allowance(address,address)", + "approve(address,uint256)", + "transferFrom(address,address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "SafeERC20": { + "src": "contracts/ERC20/SafeERC20.sol:17", + "version": { + "withMetadata": "6961326594f33844b6d5b9135c4fccb87032f3209963132ca59538231ab8879c", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "SafeMath", + "Address" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "ERC20Permit": { + "src": "contracts/ERC20/draft-ERC20Permit.sol:21", + "inherit": [ + "EIP712", + "IERC20Permit", + "ERC20Custom", + "IERC20", + "Context" + ], + "libraries": [ + "Counters", + "ECDSA" + ], + "methods": [ + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", + "nonces(address)", + "DOMAIN_SEPARATOR()" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "ERC20Permit", + "src": "contracts/ERC20/draft-ERC20Permit.sol:34" + }, + { + "kind": "state-variable-assignment", + "name": "_PERMIT_TYPEHASH", + "src": "contracts/ERC20/draft-ERC20Permit.sol:27" + }, + { + "kind": "state-variable-immutable", + "name": "_PERMIT_TYPEHASH", + "src": "contracts/ERC20/draft-ERC20Permit.sol:27" + } + ], + "layout": { + "storage": [ + { + "contract": "ERC20Permit", + "label": "_nonces", + "type": "t_mapping(t_address,t_struct(Counter)41_storage)", + "src": "contracts/ERC20/draft-ERC20Permit.sol:24" + } + ], + "types": { + "t_mapping(t_address,t_struct(Counter)41_storage)": { + "label": "mapping(address => struct Counters.Counter)" + }, + "t_address": { + "label": "address" + }, + "t_struct(Counter)41_storage": { + "label": "struct Counters.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256" + } + ] + }, + "t_uint256": { + "label": "uint256" + } + }, + "layoutVersion": "1.1" + } + }, + "AccessControl": { + "src": "contracts/Governance/AccessControl.sol:44", + "inherit": [ + "Context" + ], + "libraries": [ + "EnumerableSet", + "Address" + ], + "methods": [ + "hasRole(bytes32,address)", + "getRoleMemberCount(bytes32)", + "getRoleMember(bytes32,uint256)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "contract": "AccessControl", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)6018_storage)", + "src": "contracts/Governance/AccessControl.sol:53" + } + ], + "types": { + "t_mapping(t_bytes32,t_struct(RoleData)6018_storage)": { + "label": "mapping(bytes32 => struct AccessControl.RoleData)" + }, + "t_bytes32": { + "label": "bytes32" + }, + "t_struct(RoleData)6018_storage": { + "label": "struct AccessControl.RoleData", + "members": [ + { + "label": "members", + "type": "t_struct(AddressSet)11740_storage" + }, + { + "label": "adminRole", + "type": "t_bytes32" + } + ] + }, + "t_struct(AddressSet)11740_storage": { + "label": "struct EnumerableSet.AddressSet", + "members": [ + { + "label": "_inner", + "type": "t_struct(Set)11554_storage" + } + ] + }, + "t_struct(Set)11554_storage": { + "label": "struct EnumerableSet.Set", + "members": [ + { + "label": "_values", + "type": "t_array(t_bytes32)dyn_storage" + }, + { + "label": "_indexes", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ] + }, + "t_array(t_bytes32)dyn_storage": { + "label": "bytes32[]" + }, + "t_mapping(t_bytes32,t_uint256)": { + "label": "mapping(bytes32 => uint256)" + }, + "t_uint256": { + "label": "uint256" + } + }, + "layoutVersion": "1.1" + } + }, + "Math": { + "src": "contracts/Math/Math.sol:7", + "version": { + "withMetadata": "82f72d436f6e1e915d78e46216c9f1802363554dd3851c2fa449032be7529486", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "SafeDecimalMath": { + "src": "contracts/Math/SafeDecimalMath.sol:9", + "version": { + "withMetadata": "17b292d80fac75bf8a25e12d13fcebc7f8a734d744b2ecebf6d73bc9a73e2977", + "withoutMetadata": "6eb4e6808d4d09e692e39e2835f685450ee999068585dcac810cefdc33104775", + "linkedWithoutMetadata": "6eb4e6808d4d09e692e39e2835f685450ee999068585dcac810cefdc33104775" + }, + "inherit": [], + "libraries": [ + "SafeMath" + ], + "methods": [ + "unit()", + "preciseUnit()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "SafeMath": { + "src": "contracts/Math/SafeMath.sol:17", + "version": { + "withMetadata": "c7fa0128d7d675fffd4ee48eaa8f7cb02832138a279bc6210a5a007753ec2437", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "UQ112x112": { + "src": "contracts/Math/UQ112x112.sol:9", + "version": { + "withMetadata": "f437c48eb3c214263d247df27045262fcc704c6f7f557651125842f484449ebd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "Oracle": { + "src": "contracts/Oracle/Oracle.sol:9", + "version": { + "withMetadata": "5eb7582e31bf742d21a8012b30c948565c86fbb57300eb9a280a403f4254e51d", + "withoutMetadata": "32d240ac032555886a6fcaa99b0106b4e23b7607165334e888c95173bf897e05", + "linkedWithoutMetadata": "32d240ac032555886a6fcaa99b0106b4e23b7607165334e888c95173bf897e05" + }, + "inherit": [ + "AccessControl", + "Context" + ], + "libraries": [ + "ECDSA" + ], + "methods": [ + "(address,uint256,address)", + "verify(bytes32,bytes[])", + "setMinimumRequiredSignature(uint256)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "Oracle", + "src": "contracts/Oracle/Oracle.sol:20" + } + ], + "layout": { + "storage": [ + { + "contract": "Oracle", + "label": "minimumRequiredSignature", + "type": "t_uint256", + "src": "contracts/Oracle/Oracle.sol:16" + } + ], + "types": { + "t_uint256": { + "label": "uint256" + } + }, + "layoutVersion": "1.1" + } + }, + "ReserveTracker": { + "src": "contracts/Oracle/ReserveTracker.sol:33", + "version": { + "withMetadata": "a82c0194668dcffb311ca3bdff54f782df27069942475a6c62500b59cb568002", + "withoutMetadata": "5b180a0c2fbd81ecb2414b3752d1e27fce00e34ee2a2c505793677097923d1e1", + "linkedWithoutMetadata": "5b180a0c2fbd81ecb2414b3752d1e27fce00e34ee2a2c505793677097923d1e1" + }, + "inherit": [ + "AccessControl", + "Context" + ], + "libraries": [], + "methods": [ + "(address,address)", + "getDEUSReserves()", + "addDEUSPair(address)", + "removeDEUSPair(address)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "ReserveTracker", + "src": "contracts/Oracle/ReserveTracker.sol:60" + }, + { + "kind": "state-variable-assignment", + "name": "PRICE_PRECISION", + "src": "contracts/Oracle/ReserveTracker.sol:39" + } + ], + "layout": { + "storage": [ + { + "contract": "ReserveTracker", + "label": "PRICE_PRECISION", + "type": "t_uint256", + "src": "contracts/Oracle/ReserveTracker.sol:39" + }, + { + "contract": "ReserveTracker", + "label": "dei_contract_address", + "type": "t_address", + "src": "contracts/Oracle/ReserveTracker.sol:42" + }, + { + "contract": "ReserveTracker", + "label": "deus_contract_address", + "type": "t_address", + "src": "contracts/Oracle/ReserveTracker.sol:43" + }, + { + "contract": "ReserveTracker", + "label": "deus_pairs_array", + "type": "t_array(t_address)dyn_storage", + "src": "contracts/Oracle/ReserveTracker.sol:46" + }, + { + "contract": "ReserveTracker", + "label": "deus_pairs", + "type": "t_mapping(t_address,t_bool)", + "src": "contracts/Oracle/ReserveTracker.sol:49" + } + ], + "types": { + "t_uint256": { + "label": "uint256" + }, + "t_address": { + "label": "address" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)" + }, + "t_bool": { + "label": "bool" + } + }, + "layoutVersion": "1.1" + } + }, + "Staking": { + "src": "contracts/Staking/Staking.sol:37", + "version": { + "withMetadata": "2a07989ac11bd3f369b49d4b33d128d60dad771f102579fb95c5c79466ec4517", + "withoutMetadata": "e6502322f8aff4320cc30a560764a658286c01584504f0d9f9b25c0ba40a7b54", + "linkedWithoutMetadata": "e6502322f8aff4320cc30a560764a658286c01584504f0d9f9b25c0ba40a7b54" + }, + "inherit": [ + "AccessControl", + "Context" + ], + "libraries": [], + "methods": [ + "(address,address,uint256,uint256,uint256,address,address,address)", + "pendingReward(address)", + "update()", + "deposit(uint256)", + "depositFor(address,uint256)", + "withdraw(uint256)", + "withdrawParticleCollector()", + "emergencyWithdraw()", + "withdrawAllStakedtokens(address)", + "setStakedToken(address)", + "emergencyWithdrawERC20(address,address,uint256)", + "emergencyWithdrawETH(address payable,uint256)", + "setWallets(address,address)", + "setShares(uint256,uint256)", + "setRewardPerBlock(uint256)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "Staking", + "src": "contracts/Staking/Staking.sol:66" + }, + { + "kind": "state-variable-assignment", + "name": "rewardTillNowPerToken", + "src": "contracts/Staking/Staking.sol:46" + }, + { + "kind": "state-variable-assignment", + "name": "scale", + "src": "contracts/Staking/Staking.sol:49" + }, + { + "kind": "state-variable-assignment", + "name": "particleCollector", + "src": "contracts/Staking/Staking.sol:51" + }, + { + "kind": "state-variable-assignment", + "name": "totalStakedToken", + "src": "contracts/Staking/Staking.sol:56" + } + ], + "layout": { + "storage": [ + { + "contract": "Staking", + "label": "users", + "type": "t_mapping(t_address,t_struct(User)7363_storage)", + "src": "contracts/Staking/Staking.sol:44" + }, + { + "contract": "Staking", + "label": "rewardTillNowPerToken", + "type": "t_uint256", + "src": "contracts/Staking/Staking.sol:46" + }, + { + "contract": "Staking", + "label": "lastUpdatedBlock", + "type": "t_uint256", + "src": "contracts/Staking/Staking.sol:47" + }, + { + "contract": "Staking", + "label": "rewardPerBlock", + "type": "t_uint256", + "src": "contracts/Staking/Staking.sol:48" + }, + { + "contract": "Staking", + "label": "scale", + "type": "t_uint256", + "src": "contracts/Staking/Staking.sol:49" + }, + { + "contract": "Staking", + "label": "particleCollector", + "type": "t_uint256", + "src": "contracts/Staking/Staking.sol:51" + }, + { + "contract": "Staking", + "label": "daoShare", + "type": "t_uint256", + "src": "contracts/Staking/Staking.sol:52" + }, + { + "contract": "Staking", + "label": "earlyFoundersShare", + "type": "t_uint256", + "src": "contracts/Staking/Staking.sol:53" + }, + { + "contract": "Staking", + "label": "daoWallet", + "type": "t_address", + "src": "contracts/Staking/Staking.sol:54" + }, + { + "contract": "Staking", + "label": "earlyFoundersWallet", + "type": "t_address", + "src": "contracts/Staking/Staking.sol:55" + }, + { + "contract": "Staking", + "label": "totalStakedToken", + "type": "t_uint256", + "src": "contracts/Staking/Staking.sol:56" + }, + { + "contract": "Staking", + "label": "stakedToken", + "type": "t_address", + "src": "contracts/Staking/Staking.sol:58" + }, + { + "contract": "Staking", + "label": "rewardToken", + "type": "t_address", + "src": "contracts/Staking/Staking.sol:59" + } + ], + "types": { + "t_mapping(t_address,t_struct(User)7363_storage)": { + "label": "mapping(address => struct Staking.User)" + }, + "t_address": { + "label": "address" + }, + "t_struct(User)7363_storage": { + "label": "struct Staking.User", + "members": [ + { + "label": "depositAmount", + "type": "t_uint256" + }, + { + "label": "paidReward", + "type": "t_uint256" + } + ] + }, + "t_uint256": { + "label": "uint256" + } + }, + "layoutVersion": "1.1" + } + }, + "IUniswapV2Callee": { + "src": "contracts/Uniswap/Interfaces/IUniswapV2Callee.sol:4", + "inherit": [], + "libraries": [], + "methods": [ + "uniswapV2Call(address,uint256,uint256,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "IUniswapV2ERC20": { + "src": "contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol:4", + "inherit": [], + "libraries": [], + "methods": [ + "name()", + "symbol()", + "decimals()", + "totalSupply()", + "balanceOf(address)", + "allowance(address,address)", + "approve(address,uint256)", + "transfer(address,uint256)", + "transferFrom(address,address,uint256)", + "DOMAIN_SEPARATOR()", + "PERMIT_TYPEHASH()", + "nonces(address)", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "IUniswapV2Factory": { + "src": "contracts/Uniswap/Interfaces/IUniswapV2Factory.sol:4", + "inherit": [], + "libraries": [], + "methods": [ + "feeTo()", + "feeToSetter()", + "getPair(address,address)", + "allPairs(uint256)", + "allPairsLength()", + "createPair(address,address)", + "setFeeTo(address)", + "setFeeToSetter(address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "IUniswapV2Pair": { + "src": "contracts/Uniswap/Interfaces/IUniswapV2Pair.sol:4", + "inherit": [], + "libraries": [], + "methods": [ + "name()", + "symbol()", + "decimals()", + "totalSupply()", + "balanceOf(address)", + "allowance(address,address)", + "approve(address,uint256)", + "transfer(address,uint256)", + "transferFrom(address,address,uint256)", + "DOMAIN_SEPARATOR()", + "PERMIT_TYPEHASH()", + "nonces(address)", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", + "MINIMUM_LIQUIDITY()", + "factory()", + "token0()", + "token1()", + "getReserves()", + "price0CumulativeLast()", + "price1CumulativeLast()", + "kLast()", + "mint(address)", + "burn(address)", + "swap(uint256,uint256,address,bytes)", + "skim(address)", + "sync()", + "initialize(address,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "TransferHelper": { + "src": "contracts/Uniswap/TransferHelper.sol:5", + "version": { + "withMetadata": "6cb5edc9170dc31babb33947d143a4d8f83cd7499c502293be9bb91eb59591fa", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "UniswapV2ERC20": { + "src": "contracts/Uniswap/UniswapV2ERC20.sol:7", + "version": { + "withMetadata": "6b4796c98898ac118c2c0c79f37afa313f974972436a98894f1e60b2ba5966bd", + "withoutMetadata": "b7dc7b0687bb1b7d738dd61fe529eb63e208c80ba943ed3ef755be5e625c1f60", + "linkedWithoutMetadata": "b7dc7b0687bb1b7d738dd61fe529eb63e208c80ba943ed3ef755be5e625c1f60" + }, + "inherit": [ + "IUniswapV2ERC20" + ], + "libraries": [ + "SafeMath" + ], + "methods": [ + "()", + "approve(address,uint256)", + "transfer(address,uint256)", + "transferFrom(address,address,uint256)", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "UniswapV2ERC20", + "src": "contracts/Uniswap/UniswapV2ERC20.sol:25" + } + ], + "layout": { + "storage": [ + { + "contract": "UniswapV2ERC20", + "label": "totalSupply", + "type": "t_uint256", + "src": "contracts/Uniswap/UniswapV2ERC20.sol:13" + }, + { + "contract": "UniswapV2ERC20", + "label": "balanceOf", + "type": "t_mapping(t_address,t_uint256)", + "src": "contracts/Uniswap/UniswapV2ERC20.sol:14" + }, + { + "contract": "UniswapV2ERC20", + "label": "allowance", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))", + "src": "contracts/Uniswap/UniswapV2ERC20.sol:15" + }, + { + "contract": "UniswapV2ERC20", + "label": "DOMAIN_SEPARATOR", + "type": "t_bytes32", + "src": "contracts/Uniswap/UniswapV2ERC20.sol:17" + }, + { + "contract": "UniswapV2ERC20", + "label": "nonces", + "type": "t_mapping(t_address,t_uint256)", + "src": "contracts/Uniswap/UniswapV2ERC20.sol:20" + } + ], + "types": { + "t_uint256": { + "label": "uint256" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)" + }, + "t_address": { + "label": "address" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "label": "mapping(address => mapping(address => uint256))" + }, + "t_bytes32": { + "label": "bytes32" + } + }, + "layoutVersion": "1.1" + } + }, + "UniswapV2Factory": { + "src": "contracts/Uniswap/UniswapV2Factory.sol:7", + "version": { + "withMetadata": "852d8c9c83a05f88c39f1f571b43597dff05a49babb109034db8d914cff73fcb", + "withoutMetadata": "48667f8b6389d33937799ada5e28ddca5df3381a969b9c02e53e716bc512051e", + "linkedWithoutMetadata": "48667f8b6389d33937799ada5e28ddca5df3381a969b9c02e53e716bc512051e" + }, + "inherit": [ + "IUniswapV2Factory" + ], + "libraries": [], + "methods": [ + "(address)", + "allPairsLength()", + "createPair(address,address)", + "setFeeTo(address)", + "setFeeToSetter(address)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "UniswapV2Factory", + "src": "contracts/Uniswap/UniswapV2Factory.sol:16" + } + ], + "layout": { + "storage": [ + { + "contract": "UniswapV2Factory", + "label": "feeTo", + "type": "t_address", + "src": "contracts/Uniswap/UniswapV2Factory.sol:8" + }, + { + "contract": "UniswapV2Factory", + "label": "feeToSetter", + "type": "t_address", + "src": "contracts/Uniswap/UniswapV2Factory.sol:9" + }, + { + "contract": "UniswapV2Factory", + "label": "getPair", + "type": "t_mapping(t_address,t_mapping(t_address,t_address))", + "src": "contracts/Uniswap/UniswapV2Factory.sol:11" + }, + { + "contract": "UniswapV2Factory", + "label": "allPairs", + "type": "t_array(t_address)dyn_storage", + "src": "contracts/Uniswap/UniswapV2Factory.sol:12" + } + ], + "types": { + "t_address": { + "label": "address" + }, + "t_mapping(t_address,t_mapping(t_address,t_address))": { + "label": "mapping(address => mapping(address => address))" + }, + "t_mapping(t_address,t_address)": { + "label": "mapping(address => address)" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]" + } + }, + "layoutVersion": "1.1" + } + }, + "UniswapV2Library": { + "src": "contracts/Uniswap/UniswapV2Library.sol:9", + "version": { + "withMetadata": "c03943ad9a0fa5c6c947c1e3d946360b8167e2de0b58fa4af08715019c635bb3", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "SafeMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "UniswapV2Pair": { + "src": "contracts/Uniswap/UniswapV2Pair.sol:13", + "version": { + "withMetadata": "066c22a98c46f02e73750e68d353ffac2120af4f28673371dddae5a85c475702", + "withoutMetadata": "3497c8b8c1f9b89a67de55e911406e9d98a55c000fa801d108c5f3b3c33492ed", + "linkedWithoutMetadata": "3497c8b8c1f9b89a67de55e911406e9d98a55c000fa801d108c5f3b3c33492ed" + }, + "inherit": [ + "IUniswapV2Pair" + ], + "libraries": [ + "SafeMath", + "UQ112x112", + "Math" + ], + "methods": [ + "getReserves()", + "()", + "initialize(address,address)", + "mint(address)", + "burn(address)", + "swap(uint256,uint256,address,bytes)", + "skim(address)", + "sync()", + "approve(address,uint256)", + "transfer(address,uint256)", + "transferFrom(address,address,uint256)", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "UniswapV2Pair", + "src": "contracts/Uniswap/UniswapV2Pair.sol:77" + }, + { + "kind": "state-variable-assignment", + "name": "unlocked", + "src": "contracts/Uniswap/UniswapV2Pair.sol:46" + } + ], + "layout": { + "storage": [ + { + "contract": "UniswapV2Pair", + "label": "totalSupply", + "type": "t_uint256", + "src": "contracts/Uniswap/UniswapV2Pair.sol:20" + }, + { + "contract": "UniswapV2Pair", + "label": "balanceOf", + "type": "t_mapping(t_address,t_uint256)", + "src": "contracts/Uniswap/UniswapV2Pair.sol:21" + }, + { + "contract": "UniswapV2Pair", + "label": "allowance", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))", + "src": "contracts/Uniswap/UniswapV2Pair.sol:22" + }, + { + "contract": "UniswapV2Pair", + "label": "DOMAIN_SEPARATOR", + "type": "t_bytes32", + "src": "contracts/Uniswap/UniswapV2Pair.sol:26" + }, + { + "contract": "UniswapV2Pair", + "label": "nonces", + "type": "t_mapping(t_address,t_uint256)", + "src": "contracts/Uniswap/UniswapV2Pair.sol:29" + }, + { + "contract": "UniswapV2Pair", + "label": "factory", + "type": "t_address", + "src": "contracts/Uniswap/UniswapV2Pair.sol:34" + }, + { + "contract": "UniswapV2Pair", + "label": "token0", + "type": "t_address", + "src": "contracts/Uniswap/UniswapV2Pair.sol:35" + }, + { + "contract": "UniswapV2Pair", + "label": "token1", + "type": "t_address", + "src": "contracts/Uniswap/UniswapV2Pair.sol:36" + }, + { + "contract": "UniswapV2Pair", + "label": "reserve0", + "type": "t_uint112", + "src": "contracts/Uniswap/UniswapV2Pair.sol:38" + }, + { + "contract": "UniswapV2Pair", + "label": "reserve1", + "type": "t_uint112", + "src": "contracts/Uniswap/UniswapV2Pair.sol:39" + }, + { + "contract": "UniswapV2Pair", + "label": "blockTimestampLast", + "type": "t_uint32", + "src": "contracts/Uniswap/UniswapV2Pair.sol:40" + }, + { + "contract": "UniswapV2Pair", + "label": "price0CumulativeLast", + "type": "t_uint256", + "src": "contracts/Uniswap/UniswapV2Pair.sol:42" + }, + { + "contract": "UniswapV2Pair", + "label": "price1CumulativeLast", + "type": "t_uint256", + "src": "contracts/Uniswap/UniswapV2Pair.sol:43" + }, + { + "contract": "UniswapV2Pair", + "label": "kLast", + "type": "t_uint256", + "src": "contracts/Uniswap/UniswapV2Pair.sol:44" + }, + { + "contract": "UniswapV2Pair", + "label": "unlocked", + "type": "t_uint256", + "src": "contracts/Uniswap/UniswapV2Pair.sol:46" + } + ], + "types": { + "t_uint256": { + "label": "uint256" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)" + }, + "t_address": { + "label": "address" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "label": "mapping(address => mapping(address => uint256))" + }, + "t_bytes32": { + "label": "bytes32" + }, + "t_uint112": { + "label": "uint112" + }, + "t_uint32": { + "label": "uint32" + } + }, + "layoutVersion": "1.1" + } + }, + "Address": { + "src": "contracts/Utils/Address.sol:7", + "version": { + "withMetadata": "94e3dc99d6801dfffdd2a2c39c892f823a801b4bd49903108bd35f1d3609bc47", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "contracts/Utils/Address.sol:166" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "EnumerableSet": { + "src": "contracts/Utils/EnumerableSet.sol:29", + "version": { + "withMetadata": "71b0c4c1a520bb747b211b13d5529af1b757c5d898fe4dc5a11c1c9db89ca225", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + } + }, + { + "StringHelpers": { + "src": "contracts/Utils/StringHelpers.sol:5", + "version": { + "withMetadata": "4ad3e11b699537e5af8e1470ef1bddccd7c19016cdcaffb1b69256a8f4886432", + "withoutMetadata": "aaa148c474cd10e1a6cd0a52c0b55f1aa9b7bb7b42d7f1cb5acaea4f42f04bc8", + "linkedWithoutMetadata": "aaa148c474cd10e1a6cd0a52c0b55f1aa9b7bb7b42d7f1cb5acaea4f42f04bc8" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + } + }, + { + "IWETH": { + "src": "contracts/ERC20/IWETH.sol:4", + "inherit": [], + "libraries": [], + "methods": [ + "deposit()", + "transfer(address,uint256)", + "transferFrom(address,address,uint256)", + "withdraw(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "WETH": { + "src": "contracts/ERC20/WETH.sol:21", + "version": { + "withMetadata": "2d3c12a9333d7cc9d767d50b18d9d90657eb3ddbe37b69f9732f31697de986b5", + "withoutMetadata": "baa15d1813148d5280c69c42a538cc8c9588054c6024166bb2fea3f52044f218", + "linkedWithoutMetadata": "baa15d1813148d5280c69c42a538cc8c9588054c6024166bb2fea3f52044f218" + }, + "inherit": [ + "IWETH" + ], + "libraries": [], + "methods": [ + "()", + "()", + "(address)", + "deposit()", + "withdraw(uint256)", + "totalSupply()", + "approve(address,uint256)", + "transfer(address,uint256)", + "transferFrom(address,address,uint256)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "WETH", + "src": "contracts/ERC20/WETH.sol:40" + }, + { + "kind": "state-variable-assignment", + "name": "name", + "src": "contracts/ERC20/WETH.sol:22" + }, + { + "kind": "state-variable-assignment", + "name": "symbol", + "src": "contracts/ERC20/WETH.sol:23" + }, + { + "kind": "state-variable-assignment", + "name": "decimals", + "src": "contracts/ERC20/WETH.sol:24" + } + ], + "layout": { + "storage": [ + { + "contract": "WETH", + "label": "name", + "type": "t_string_storage", + "src": "contracts/ERC20/WETH.sol:22" + }, + { + "contract": "WETH", + "label": "symbol", + "type": "t_string_storage", + "src": "contracts/ERC20/WETH.sol:23" + }, + { + "contract": "WETH", + "label": "decimals", + "type": "t_uint8", + "src": "contracts/ERC20/WETH.sol:24" + }, + { + "contract": "WETH", + "label": "balanceOf", + "type": "t_mapping(t_address,t_uint256)", + "src": "contracts/ERC20/WETH.sol:31" + }, + { + "contract": "WETH", + "label": "allowance", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))", + "src": "contracts/ERC20/WETH.sol:32" + } + ], + "types": { + "t_string_storage": { + "label": "string" + }, + "t_uint8": { + "label": "uint8" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)" + }, + "t_address": { + "label": "address" + }, + "t_uint256": { + "label": "uint256" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "label": "mapping(address => mapping(address => uint256))" + } + }, + "layoutVersion": "1.1" + } + } + }, + { + "Context": { + "src": "contracts/Common/Context.sol:14", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "Ownable": { + "src": "contracts/Common/Ownable.sol:17", + "inherit": [ + "Context" + ], + "libraries": [], + "methods": [ + "owner()", + "renounceOwnership()", + "transferOwnership(address)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "Ownable", + "src": "contracts/Common/Ownable.sol:25" + } + ], + "layout": { + "storage": [ + { + "contract": "Ownable", + "label": "_owner", + "type": "t_address", + "src": "contracts/Common/Ownable.sol:18" + } + ], + "types": { + "t_address": { + "label": "address" + } + }, + "layoutVersion": "1.1" + } + } + }, + { + "IERC20": { + "src": "contracts/Uniswap/UniswapV2Router02.sol:209", + "inherit": [], + "libraries": [], + "methods": [ + "name()", + "symbol()", + "decimals()", + "totalSupply()", + "balanceOf(address)", + "allowance(address,address)", + "approve(address,uint256)", + "transfer(address,uint256)", + "transferFrom(address,address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "IUniswapV2Factory": { + "src": "contracts/Uniswap/UniswapV2Router02.sol:7", + "inherit": [], + "libraries": [], + "methods": [ + "feeTo()", + "feeToSetter()", + "getPair(address,address)", + "allPairs(uint256)", + "allPairsLength()", + "createPair(address,address)", + "setFeeTo(address)", + "setFeeToSetter(address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "IUniswapV2Pair": { + "src": "contracts/Uniswap/UniswapV2Router02.sol:23", + "inherit": [], + "libraries": [], + "methods": [ + "name()", + "symbol()", + "decimals()", + "totalSupply()", + "balanceOf(address)", + "allowance(address,address)", + "approve(address,uint256)", + "transfer(address,uint256)", + "transferFrom(address,address,uint256)", + "DOMAIN_SEPARATOR()", + "PERMIT_TYPEHASH()", + "nonces(address)", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", + "MINIMUM_LIQUIDITY()", + "factory()", + "token0()", + "token1()", + "getReserves()", + "price0CumulativeLast()", + "price1CumulativeLast()", + "kLast()", + "mint(address)", + "burn(address)", + "swap(uint256,uint256,address,bytes)", + "skim(address)", + "sync()", + "initialize(address,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "IUniswapV2Router01": { + "src": "contracts/Uniswap/UniswapV2Router02.sol:74", + "inherit": [], + "libraries": [], + "methods": [ + "factory()", + "WETH()", + "addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)", + "addLiquidityETH(address,uint256,uint256,uint256,address,uint256)", + "removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)", + "removeLiquidityETH(address,uint256,uint256,uint256,address,uint256)", + "removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)", + "removeLiquidityETHWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)", + "swapExactTokensForTokens(uint256,uint256,address[],address,uint256)", + "swapTokensForExactTokens(uint256,uint256,address[],address,uint256)", + "swapExactETHForTokens(uint256,address[],address,uint256)", + "swapTokensForExactETH(uint256,uint256,address[],address,uint256)", + "swapExactTokensForETH(uint256,uint256,address[],address,uint256)", + "swapETHForExactTokens(uint256,address[],address,uint256)", + "quote(uint256,uint256,uint256)", + "getAmountOut(uint256,uint256,uint256)", + "getAmountIn(uint256,uint256,uint256)", + "getAmountsOut(uint256,address[])", + "getAmountsIn(uint256,address[])" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "IUniswapV2Router02": { + "src": "contracts/Uniswap/UniswapV2Router02.sol:168", + "inherit": [ + "IUniswapV2Router01" + ], + "libraries": [], + "methods": [ + "removeLiquidityETHSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256)", + "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)", + "swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)", + "swapExactETHForTokensSupportingFeeOnTransferTokens(uint256,address[],address,uint256)", + "swapExactTokensForETHSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "IWETH": { + "src": "contracts/Uniswap/UniswapV2Router02.sol:225", + "inherit": [], + "libraries": [], + "methods": [ + "deposit()", + "transfer(address,uint256)", + "withdraw(uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "SafeMath": { + "src": "contracts/Uniswap/UniswapV2Router02.sol:669", + "version": { + "withMetadata": "064854d519a032ab8ef5c0477008a46c44720eb3f28f86f39cf0a97a544a194b", + "withoutMetadata": "aaa148c474cd10e1a6cd0a52c0b55f1aa9b7bb7b42d7f1cb5acaea4f42f04bc8", + "linkedWithoutMetadata": "aaa148c474cd10e1a6cd0a52c0b55f1aa9b7bb7b42d7f1cb5acaea4f42f04bc8" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "TransferHelper": { + "src": "contracts/Uniswap/UniswapV2Router02.sol:761", + "version": { + "withMetadata": "1bde91093a11af6785d92fd6ba9e48a1fb6817fd78b43e87611d8c9980f3551b", + "withoutMetadata": "aaa148c474cd10e1a6cd0a52c0b55f1aa9b7bb7b42d7f1cb5acaea4f42f04bc8", + "linkedWithoutMetadata": "aaa148c474cd10e1a6cd0a52c0b55f1aa9b7bb7b42d7f1cb5acaea4f42f04bc8" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "UniswapV2Library": { + "src": "contracts/Uniswap/UniswapV2Router02.sol:683", + "version": { + "withMetadata": "c79d254ae4358b5b1c211763e7344ad60ae21e9003528857ed4e0dd1625cc0fc", + "withoutMetadata": "aaa148c474cd10e1a6cd0a52c0b55f1aa9b7bb7b42d7f1cb5acaea4f42f04bc8", + "linkedWithoutMetadata": "aaa148c474cd10e1a6cd0a52c0b55f1aa9b7bb7b42d7f1cb5acaea4f42f04bc8" + }, + "inherit": [], + "libraries": [ + "SafeMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + }, + "UniswapV2Router02": { + "src": "contracts/Uniswap/UniswapV2Router02.sol:231", + "version": { + "withMetadata": "0babff3ea0a36c9d50048bdb7ab705ae29a115c84b8997167faceabfd6dabd68", + "withoutMetadata": "b13f9853253fbb79f7860e9f6d98e7fed441f10e375def627be93ee195976a83", + "linkedWithoutMetadata": "b13f9853253fbb79f7860e9f6d98e7fed441f10e375def627be93ee195976a83" + }, + "inherit": [ + "IUniswapV2Router02", + "IUniswapV2Router01" + ], + "libraries": [ + "SafeMath", + "UniswapV2Library", + "TransferHelper" + ], + "methods": [ + "(address,address)", + "()", + "addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)", + "addLiquidityETH(address,uint256,uint256,uint256,address,uint256)", + "removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)", + "removeLiquidityETH(address,uint256,uint256,uint256,address,uint256)", + "removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)", + "removeLiquidityETHWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)", + "removeLiquidityETHSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256)", + "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)", + "swapExactTokensForTokens(uint256,uint256,address[],address,uint256)", + "swapTokensForExactTokens(uint256,uint256,address[],address,uint256)", + "swapExactETHForTokens(uint256,address[],address,uint256)", + "swapTokensForExactETH(uint256,uint256,address[],address,uint256)", + "swapExactTokensForETH(uint256,uint256,address[],address,uint256)", + "swapETHForExactTokens(uint256,address[],address,uint256)", + "swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)", + "swapExactETHForTokensSupportingFeeOnTransferTokens(uint256,address[],address,uint256)", + "swapExactTokensForETHSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)", + "quote(uint256,uint256,uint256)", + "getAmountOut(uint256,uint256,uint256)", + "getAmountIn(uint256,uint256,uint256)", + "getAmountsOut(uint256,address[])", + "getAmountsIn(uint256,address[])" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "UniswapV2Router02", + "src": "contracts/Uniswap/UniswapV2Router02.sol:242" + }, + { + "kind": "state-variable-immutable", + "name": "factory", + "src": "contracts/Uniswap/UniswapV2Router02.sol:234" + }, + { + "kind": "state-variable-immutable", + "name": "WETH", + "src": "contracts/Uniswap/UniswapV2Router02.sol:235" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.1" + } + } + } + ] +} \ No newline at end of file diff --git a/src/hardhat/contracts/Common/Context.sol b/contracts/Common/Context.sol similarity index 100% rename from src/hardhat/contracts/Common/Context.sol rename to contracts/Common/Context.sol diff --git a/src/hardhat/contracts/Common/Ownable.sol b/contracts/Common/Ownable.sol similarity index 100% rename from src/hardhat/contracts/Common/Ownable.sol rename to contracts/Common/Ownable.sol diff --git a/src/hardhat/contracts/DEI/DEI.sol b/contracts/DEI/DEI.sol similarity index 100% rename from src/hardhat/contracts/DEI/DEI.sol rename to contracts/DEI/DEI.sol diff --git a/src/hardhat/contracts/DEI/IDEI.sol b/contracts/DEI/IDEI.sol similarity index 100% rename from src/hardhat/contracts/DEI/IDEI.sol rename to contracts/DEI/IDEI.sol diff --git a/src/hardhat/contracts/DEI/Pools/DEIPool.sol b/contracts/DEI/Pools/DEIPool.sol similarity index 100% rename from src/hardhat/contracts/DEI/Pools/DEIPool.sol rename to contracts/DEI/Pools/DEIPool.sol diff --git a/src/hardhat/contracts/DEI/Pools/DEIPoolLibrary.sol b/contracts/DEI/Pools/DEIPoolLibrary.sol similarity index 100% rename from src/hardhat/contracts/DEI/Pools/DEIPoolLibrary.sol rename to contracts/DEI/Pools/DEIPoolLibrary.sol diff --git a/src/hardhat/contracts/DEI/Pools/IDEIPool.sol b/contracts/DEI/Pools/IDEIPool.sol similarity index 100% rename from src/hardhat/contracts/DEI/Pools/IDEIPool.sol rename to contracts/DEI/Pools/IDEIPool.sol diff --git a/src/hardhat/contracts/DEI/Pools/Pool_USDC.sol b/contracts/DEI/Pools/Pool_USDC.sol similarity index 100% rename from src/hardhat/contracts/DEI/Pools/Pool_USDC.sol rename to contracts/DEI/Pools/Pool_USDC.sol diff --git a/src/hardhat/contracts/DEI/Pools/readme.md b/contracts/DEI/Pools/readme.md similarity index 100% rename from src/hardhat/contracts/DEI/Pools/readme.md rename to contracts/DEI/Pools/readme.md diff --git a/src/hardhat/contracts/DEI/readme.md b/contracts/DEI/readme.md similarity index 100% rename from src/hardhat/contracts/DEI/readme.md rename to contracts/DEI/readme.md diff --git a/src/hardhat/contracts/DEUS/DEUS.sol b/contracts/DEUS/DEUS.sol similarity index 100% rename from src/hardhat/contracts/DEUS/DEUS.sol rename to contracts/DEUS/DEUS.sol diff --git a/src/hardhat/contracts/DEUS/IDEUS.sol b/contracts/DEUS/IDEUS.sol similarity index 100% rename from src/hardhat/contracts/DEUS/IDEUS.sol rename to contracts/DEUS/IDEUS.sol diff --git a/src/hardhat/contracts/DEUS/readme.md b/contracts/DEUS/readme.md similarity index 100% rename from src/hardhat/contracts/DEUS/readme.md rename to contracts/DEUS/readme.md diff --git a/src/hardhat/contracts/ERC165/ERC165.sol b/contracts/ERC165/ERC165.sol similarity index 100% rename from src/hardhat/contracts/ERC165/ERC165.sol rename to contracts/ERC165/ERC165.sol diff --git a/src/hardhat/contracts/ERC165/IERC165.sol b/contracts/ERC165/IERC165.sol similarity index 100% rename from src/hardhat/contracts/ERC165/IERC165.sol rename to contracts/ERC165/IERC165.sol diff --git a/src/hardhat/contracts/ERC20/ERC20.sol b/contracts/ERC20/ERC20.sol similarity index 100% rename from src/hardhat/contracts/ERC20/ERC20.sol rename to contracts/ERC20/ERC20.sol diff --git a/src/hardhat/contracts/ERC20/ERC20Custom.sol b/contracts/ERC20/ERC20Custom.sol similarity index 100% rename from src/hardhat/contracts/ERC20/ERC20Custom.sol rename to contracts/ERC20/ERC20Custom.sol diff --git a/src/hardhat/contracts/ERC20/IERC20.sol b/contracts/ERC20/IERC20.sol similarity index 100% rename from src/hardhat/contracts/ERC20/IERC20.sol rename to contracts/ERC20/IERC20.sol diff --git a/src/hardhat/contracts/ERC20/IERC20_Detailed.sol b/contracts/ERC20/IERC20_Detailed.sol similarity index 100% rename from src/hardhat/contracts/ERC20/IERC20_Detailed.sol rename to contracts/ERC20/IERC20_Detailed.sol diff --git a/src/hardhat/contracts/ERC20/IWETH.sol b/contracts/ERC20/IWETH.sol similarity index 100% rename from src/hardhat/contracts/ERC20/IWETH.sol rename to contracts/ERC20/IWETH.sol diff --git a/src/hardhat/contracts/ERC20/SafeERC20.sol b/contracts/ERC20/SafeERC20.sol similarity index 100% rename from src/hardhat/contracts/ERC20/SafeERC20.sol rename to contracts/ERC20/SafeERC20.sol diff --git a/src/hardhat/contracts/ERC20/WETH.sol b/contracts/ERC20/WETH.sol similarity index 100% rename from src/hardhat/contracts/ERC20/WETH.sol rename to contracts/ERC20/WETH.sol diff --git a/src/hardhat/contracts/ERC20/draft-ERC20Permit.sol b/contracts/ERC20/draft-ERC20Permit.sol similarity index 100% rename from src/hardhat/contracts/ERC20/draft-ERC20Permit.sol rename to contracts/ERC20/draft-ERC20Permit.sol diff --git a/src/hardhat/contracts/ERC721/ERC721.sol b/contracts/ERC721/ERC721.sol similarity index 100% rename from src/hardhat/contracts/ERC721/ERC721.sol rename to contracts/ERC721/ERC721.sol diff --git a/src/hardhat/contracts/ERC721/IERC721.sol b/contracts/ERC721/IERC721.sol similarity index 100% rename from src/hardhat/contracts/ERC721/IERC721.sol rename to contracts/ERC721/IERC721.sol diff --git a/src/hardhat/contracts/ERC721/IERC721Enumerable.sol b/contracts/ERC721/IERC721Enumerable.sol similarity index 100% rename from src/hardhat/contracts/ERC721/IERC721Enumerable.sol rename to contracts/ERC721/IERC721Enumerable.sol diff --git a/src/hardhat/contracts/ERC721/IERC721Metadata.sol b/contracts/ERC721/IERC721Metadata.sol similarity index 100% rename from src/hardhat/contracts/ERC721/IERC721Metadata.sol rename to contracts/ERC721/IERC721Metadata.sol diff --git a/src/hardhat/contracts/ERC721/IERC721Receiver.sol b/contracts/ERC721/IERC721Receiver.sol similarity index 100% rename from src/hardhat/contracts/ERC721/IERC721Receiver.sol rename to contracts/ERC721/IERC721Receiver.sol diff --git a/src/hardhat/contracts/ERC721/V8_0_0/Common/Context.sol b/contracts/ERC721/V8_0_0/Common/Context.sol similarity index 100% rename from src/hardhat/contracts/ERC721/V8_0_0/Common/Context.sol rename to contracts/ERC721/V8_0_0/Common/Context.sol diff --git a/src/hardhat/contracts/ERC721/V8_0_0/Governance/AccessControl.sol b/contracts/ERC721/V8_0_0/Governance/AccessControl.sol similarity index 100% rename from src/hardhat/contracts/ERC721/V8_0_0/Governance/AccessControl.sol rename to contracts/ERC721/V8_0_0/Governance/AccessControl.sol diff --git a/src/hardhat/contracts/ERC721/V8_0_0/Math/SafeMath.sol b/contracts/ERC721/V8_0_0/Math/SafeMath.sol similarity index 100% rename from src/hardhat/contracts/ERC721/V8_0_0/Math/SafeMath.sol rename to contracts/ERC721/V8_0_0/Math/SafeMath.sol diff --git a/src/hardhat/contracts/ERC721/V8_0_0/Utils/Address.sol b/contracts/ERC721/V8_0_0/Utils/Address.sol similarity index 100% rename from src/hardhat/contracts/ERC721/V8_0_0/Utils/Address.sol rename to contracts/ERC721/V8_0_0/Utils/Address.sol diff --git a/src/hardhat/contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol b/contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol similarity index 100% rename from src/hardhat/contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol rename to contracts/ERC721/V8_0_0/Utils/EnumerableMap.sol diff --git a/src/hardhat/contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol b/contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol similarity index 100% rename from src/hardhat/contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol rename to contracts/ERC721/V8_0_0/Utils/EnumerableSet.sol diff --git a/src/hardhat/contracts/ERC721/V8_0_0/Utils/Strings.sol b/contracts/ERC721/V8_0_0/Utils/Strings.sol similarity index 100% rename from src/hardhat/contracts/ERC721/V8_0_0/Utils/Strings.sol rename to contracts/ERC721/V8_0_0/Utils/Strings.sol diff --git a/src/hardhat/contracts/Governance/AccessControl.sol b/contracts/Governance/AccessControl.sol similarity index 100% rename from src/hardhat/contracts/Governance/AccessControl.sol rename to contracts/Governance/AccessControl.sol diff --git a/src/hardhat/contracts/Math/Babylonian.sol b/contracts/Math/Babylonian.sol similarity index 100% rename from src/hardhat/contracts/Math/Babylonian.sol rename to contracts/Math/Babylonian.sol diff --git a/src/hardhat/contracts/Math/FixedPoint.sol b/contracts/Math/FixedPoint.sol similarity index 100% rename from src/hardhat/contracts/Math/FixedPoint.sol rename to contracts/Math/FixedPoint.sol diff --git a/src/hardhat/contracts/Math/MagnitudesAndPowers.sol b/contracts/Math/MagnitudesAndPowers.sol similarity index 100% rename from src/hardhat/contracts/Math/MagnitudesAndPowers.sol rename to contracts/Math/MagnitudesAndPowers.sol diff --git a/src/hardhat/contracts/Math/Math.sol b/contracts/Math/Math.sol similarity index 100% rename from src/hardhat/contracts/Math/Math.sol rename to contracts/Math/Math.sol diff --git a/src/hardhat/contracts/Math/SafeDecimalMath.sol b/contracts/Math/SafeDecimalMath.sol similarity index 100% rename from src/hardhat/contracts/Math/SafeDecimalMath.sol rename to contracts/Math/SafeDecimalMath.sol diff --git a/src/hardhat/contracts/Math/SafeMath.sol b/contracts/Math/SafeMath.sol similarity index 100% rename from src/hardhat/contracts/Math/SafeMath.sol rename to contracts/Math/SafeMath.sol diff --git a/src/hardhat/contracts/Math/SignedSafeMath.sol b/contracts/Math/SignedSafeMath.sol similarity index 100% rename from src/hardhat/contracts/Math/SignedSafeMath.sol rename to contracts/Math/SignedSafeMath.sol diff --git a/src/hardhat/contracts/Math/UQ112x112.sol b/contracts/Math/UQ112x112.sol similarity index 100% rename from src/hardhat/contracts/Math/UQ112x112.sol rename to contracts/Math/UQ112x112.sol diff --git a/src/hardhat/contracts/Oracle/Oracle.sol b/contracts/Oracle/Oracle.sol similarity index 100% rename from src/hardhat/contracts/Oracle/Oracle.sol rename to contracts/Oracle/Oracle.sol diff --git a/src/hardhat/contracts/Oracle/ReserveTracker.sol b/contracts/Oracle/ReserveTracker.sol similarity index 100% rename from src/hardhat/contracts/Oracle/ReserveTracker.sol rename to contracts/Oracle/ReserveTracker.sol diff --git a/src/hardhat/contracts/Staking/Owned.sol b/contracts/Staking/Owned.sol similarity index 100% rename from src/hardhat/contracts/Staking/Owned.sol rename to contracts/Staking/Owned.sol diff --git a/src/hardhat/contracts/Staking/Staking.sol b/contracts/Staking/Staking.sol similarity index 100% rename from src/hardhat/contracts/Staking/Staking.sol rename to contracts/Staking/Staking.sol diff --git a/src/hardhat/contracts/Staking/readme.md b/contracts/Staking/readme.md similarity index 100% rename from src/hardhat/contracts/Staking/readme.md rename to contracts/Staking/readme.md diff --git a/src/hardhat/contracts/Uniswap/Interfaces/IUniswapV2Callee.sol b/contracts/Uniswap/Interfaces/IUniswapV2Callee.sol similarity index 100% rename from src/hardhat/contracts/Uniswap/Interfaces/IUniswapV2Callee.sol rename to contracts/Uniswap/Interfaces/IUniswapV2Callee.sol diff --git a/src/hardhat/contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol b/contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol similarity index 100% rename from src/hardhat/contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol rename to contracts/Uniswap/Interfaces/IUniswapV2ERC20.sol diff --git a/src/hardhat/contracts/Uniswap/Interfaces/IUniswapV2Factory.sol b/contracts/Uniswap/Interfaces/IUniswapV2Factory.sol similarity index 100% rename from src/hardhat/contracts/Uniswap/Interfaces/IUniswapV2Factory.sol rename to contracts/Uniswap/Interfaces/IUniswapV2Factory.sol diff --git a/src/hardhat/contracts/Uniswap/Interfaces/IUniswapV2Pair.sol b/contracts/Uniswap/Interfaces/IUniswapV2Pair.sol similarity index 100% rename from src/hardhat/contracts/Uniswap/Interfaces/IUniswapV2Pair.sol rename to contracts/Uniswap/Interfaces/IUniswapV2Pair.sol diff --git a/src/hardhat/contracts/Uniswap/Interfaces/IUniswapV2Router01.sol b/contracts/Uniswap/Interfaces/IUniswapV2Router01.sol similarity index 100% rename from src/hardhat/contracts/Uniswap/Interfaces/IUniswapV2Router01.sol rename to contracts/Uniswap/Interfaces/IUniswapV2Router01.sol diff --git a/src/hardhat/contracts/Uniswap/Interfaces/IUniswapV2Router02.sol b/contracts/Uniswap/Interfaces/IUniswapV2Router02.sol similarity index 100% rename from src/hardhat/contracts/Uniswap/Interfaces/IUniswapV2Router02.sol rename to contracts/Uniswap/Interfaces/IUniswapV2Router02.sol diff --git a/src/hardhat/contracts/Uniswap/TransferHelper.sol b/contracts/Uniswap/TransferHelper.sol similarity index 100% rename from src/hardhat/contracts/Uniswap/TransferHelper.sol rename to contracts/Uniswap/TransferHelper.sol diff --git a/src/hardhat/contracts/Uniswap/UniswapV2ERC20.sol b/contracts/Uniswap/UniswapV2ERC20.sol similarity index 100% rename from src/hardhat/contracts/Uniswap/UniswapV2ERC20.sol rename to contracts/Uniswap/UniswapV2ERC20.sol diff --git a/src/hardhat/contracts/Uniswap/UniswapV2Factory.sol b/contracts/Uniswap/UniswapV2Factory.sol similarity index 100% rename from src/hardhat/contracts/Uniswap/UniswapV2Factory.sol rename to contracts/Uniswap/UniswapV2Factory.sol diff --git a/src/hardhat/contracts/Uniswap/UniswapV2Library.sol b/contracts/Uniswap/UniswapV2Library.sol similarity index 100% rename from src/hardhat/contracts/Uniswap/UniswapV2Library.sol rename to contracts/Uniswap/UniswapV2Library.sol diff --git a/src/hardhat/contracts/Uniswap/UniswapV2Pair.sol b/contracts/Uniswap/UniswapV2Pair.sol similarity index 100% rename from src/hardhat/contracts/Uniswap/UniswapV2Pair.sol rename to contracts/Uniswap/UniswapV2Pair.sol diff --git a/src/hardhat/contracts/Uniswap/UniswapV2Router02.sol b/contracts/Uniswap/UniswapV2Router02.sol similarity index 100% rename from src/hardhat/contracts/Uniswap/UniswapV2Router02.sol rename to contracts/Uniswap/UniswapV2Router02.sol diff --git a/src/hardhat/contracts/Utils/Address.sol b/contracts/Utils/Address.sol similarity index 100% rename from src/hardhat/contracts/Utils/Address.sol rename to contracts/Utils/Address.sol diff --git a/src/hardhat/contracts/Utils/BlockMiner.sol b/contracts/Utils/BlockMiner.sol similarity index 100% rename from src/hardhat/contracts/Utils/BlockMiner.sol rename to contracts/Utils/BlockMiner.sol diff --git a/src/hardhat/contracts/Utils/BundleUtils.sol b/contracts/Utils/BundleUtils.sol similarity index 100% rename from src/hardhat/contracts/Utils/BundleUtils.sol rename to contracts/Utils/BundleUtils.sol diff --git a/src/hardhat/contracts/Utils/EnumerableSet.sol b/contracts/Utils/EnumerableSet.sol similarity index 100% rename from src/hardhat/contracts/Utils/EnumerableSet.sol rename to contracts/Utils/EnumerableSet.sol diff --git a/src/hardhat/contracts/Utils/MigrationHelper.sol b/contracts/Utils/MigrationHelper.sol similarity index 100% rename from src/hardhat/contracts/Utils/MigrationHelper.sol rename to contracts/Utils/MigrationHelper.sol diff --git a/src/hardhat/contracts/Utils/Migrations.sol b/contracts/Utils/Migrations.sol similarity index 100% rename from src/hardhat/contracts/Utils/Migrations.sol rename to contracts/Utils/Migrations.sol diff --git a/src/hardhat/contracts/Utils/ReentrancyGuard.sol b/contracts/Utils/ReentrancyGuard.sol similarity index 100% rename from src/hardhat/contracts/Utils/ReentrancyGuard.sol rename to contracts/Utils/ReentrancyGuard.sol diff --git a/src/hardhat/contracts/Utils/StorageSlot.sol b/contracts/Utils/StorageSlot.sol similarity index 100% rename from src/hardhat/contracts/Utils/StorageSlot.sol rename to contracts/Utils/StorageSlot.sol diff --git a/src/hardhat/contracts/Utils/StringHelpers.sol b/contracts/Utils/StringHelpers.sol similarity index 100% rename from src/hardhat/contracts/Utils/StringHelpers.sol rename to contracts/Utils/StringHelpers.sol diff --git a/src/hardhat/hardhat.config.js b/hardhat.config.js similarity index 100% rename from src/hardhat/hardhat.config.js rename to hardhat.config.js diff --git a/package.json b/package.json deleted file mode 100755 index 90663316..00000000 --- a/package.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "name": "frax-price-feed", - "version": "1.0.0", - "description": "a price feed that queries the Ethereum blockchain for on-chain events which update the FRAX, FXS, and collateral prices", - "main": "src/index.js", - "scripts": { - "start-nodemon": "tsc && nodemon dist/index.js", - "start-no-nodemon-watch": "tsc && node dist/index.js", - "start-no-nodemon": "tsc && node dist/index.js > /dev/null 2>&1 &", - "start-no-nodemon-logged": "tsc && node dist/index.js 2>&1 | tee npm.txt", - "server-graphql": "tsc && nodemon dist/server/server-graphql.js", - "server-rest": "tsc && nodemon dist/server/server-rest.js", - "deploy-ropsten": "tsc && nodemon src/truffle/deploy/ropsten/deploy-ropsten.js", - "retro-update-fxs-burned": "tsc && node dist/misc-scripts/retro-update-fxs-burned.js 2>&1 | tee retro.txt", - "update-locked-stakes": "tsc && node dist/misc-scripts/update-locked-stakes.js 2>&1 | tee update_locked_stakes.txt", - "update-locked-vefxs": "tsc && node dist/misc-scripts/update-locked-vefxs.js 2>&1 | tee update_locked_vefxs.txt", - "re-bucket-locked-stakes": "tsc && node dist/misc-scripts/re-bucket-locked-stakes.js 2>&1 | tee rebucket_locked_stakes.txt", - "re-bucket-locked-vefxs": "tsc && node dist/misc-scripts/re-bucket-locked-vefxs.js 2>&1 | tee rebucket_locked_vefxs.txt", - "test": "npm test", - "tsc": "tsc" - }, - "keywords": [ - "ethereum", - "frax", - "stablecoin", - "defi" - ], - "author": "Jason Huan (github.com/jasonhuan) & Travis Moore (github.com/FortisFortuna)", - "license": "ISC", - "dependencies": { - "@babel/core": "^7.14.6", - "@chainlink/contracts": "0.1.7", - "@ethereumjs/common": "^2.3.1", - "@ethereumjs/tx": "^3.2.1", - "@ethersproject/hardware-wallets": "^5.4.0", - "@flashbots/ethers-provider-bundle": "^0.3.1", - "@openzeppelin/contracts": "^4.1.0", - "@openzeppelin/hardhat-upgrades": "^1.8.2", - "@truffle/hdwallet-provider": "^1.4.0", - "@types/d3-array": "^2.9.0", - "@types/express": "^4.17.12", - "@types/node": "^15.12.2", - "@types/web3": "^1.2.2", - "@uniswap/v3-core": "^1.0.0", - "@urql/core": "^2.1.3", - "apollo-server-express": "^2.25.1", - "bignumber.js": "^9.0.1", - "chalk": "^4.1.1", - "cli-graph": "^3.2.2", - "cli-table": "^0.3.6", - "cors": "^2.8.5", - "crypto-random-string": "^4.0.0", - "d3-array": "^2.12.1", - "dotenv": "^10.0.0", - "esm": "^3.2.25", - "ethereumjs-tx": "^2.1.2", - "express": "^4.17.1", - "express-graphql": "^0.12.0", - "flashbots": "^1.0.0", - "ganache-core": "^2.13.2", - "graphql": "^15.5.0", - "hardhat-contract-sizer": "^2.0.3", - "https": "^1.0.0", - "mongoose": "^5.12.13", - "node-fetch": "^2.6.1", - "node-rest-client-promise": "^3.1.1", - "node-telegram-bot-api": "^0.53.0", - "nodemon": "^2.0.7", - "path": "^0.12.7", - "randomcolor": "^0.6.2", - "require-from-string": "^2.0.2", - "seedrandom": "^3.0.5", - "sleep": "^6.3.0", - "solc": "0.8.5", - "to-hex": "0.0.17", - "truffle-contract-size": "^2.0.1", - "truffle-hdwallet-provider": "^1.0.17", - "tslib": "^2.3.0", - "typescript": "^4.3.2", - "util": "^0.12.4", - "web3-eth-contract": "^1.3.6", - "web3-utils": "^1.3.6" - }, - "devDependencies": { - "@nomiclabs/hardhat-ethers": "^2.0.2", - "@nomiclabs/hardhat-etherscan": "^2.1.3", - "@nomiclabs/hardhat-truffle5": "^2.0.0", - "@nomiclabs/hardhat-vyper": "^2.0.1", - "@nomiclabs/hardhat-waffle": "^2.0.1", - "@nomiclabs/hardhat-web3": "^2.0.0", - "@openzeppelin/hardhat-upgrades": "^1.8.2", - "@openzeppelin/test-helpers": "^0.5.11", - "chai": "^4.3.4", - "ethereum-waffle": "^3.3.0", - "ethers": "^5.3.1", - "hardhat": "^2.6.2", - "hardhat-deploy": "^0.8.11", - "husky": "^6.0.0", - "web3": "^1.3.6" - } -} diff --git a/src/hardhat/scripts/deploy_arbitrum.js b/scripts/deploy_arbitrum.js similarity index 100% rename from src/hardhat/scripts/deploy_arbitrum.js rename to scripts/deploy_arbitrum.js diff --git a/src/hardhat/scripts/deploy_bsc.js b/scripts/deploy_bsc.js similarity index 100% rename from src/hardhat/scripts/deploy_bsc.js rename to scripts/deploy_bsc.js diff --git a/src/hardhat/scripts/deploy_bsctest.js b/scripts/deploy_bsctest.js similarity index 100% rename from src/hardhat/scripts/deploy_bsctest.js rename to scripts/deploy_bsctest.js diff --git a/src/hardhat/scripts/deploy_contracts/deploy_dei.js b/scripts/deploy_contracts/deploy_dei.js similarity index 100% rename from src/hardhat/scripts/deploy_contracts/deploy_dei.js rename to scripts/deploy_contracts/deploy_dei.js diff --git a/src/hardhat/scripts/deploy_contracts/deploy_dei_pool_library.js b/scripts/deploy_contracts/deploy_dei_pool_library.js similarity index 100% rename from src/hardhat/scripts/deploy_contracts/deploy_dei_pool_library.js rename to scripts/deploy_contracts/deploy_dei_pool_library.js diff --git a/src/hardhat/scripts/deploy_contracts/deploy_deus.js b/scripts/deploy_contracts/deploy_deus.js similarity index 100% rename from src/hardhat/scripts/deploy_contracts/deploy_deus.js rename to scripts/deploy_contracts/deploy_deus.js diff --git a/src/hardhat/scripts/deploy_contracts/deploy_oracle.js b/scripts/deploy_contracts/deploy_oracle.js similarity index 100% rename from src/hardhat/scripts/deploy_contracts/deploy_oracle.js rename to scripts/deploy_contracts/deploy_oracle.js diff --git a/src/hardhat/scripts/deploy_contracts/deploy_reserve_tracker.js b/scripts/deploy_contracts/deploy_reserve_tracker.js similarity index 100% rename from src/hardhat/scripts/deploy_contracts/deploy_reserve_tracker.js rename to scripts/deploy_contracts/deploy_reserve_tracker.js diff --git a/src/hardhat/scripts/deploy_contracts/deploy_staking.js b/scripts/deploy_contracts/deploy_staking.js similarity index 100% rename from src/hardhat/scripts/deploy_contracts/deploy_staking.js rename to scripts/deploy_contracts/deploy_staking.js diff --git a/src/hardhat/scripts/deploy_contracts/deploy_usdc_pool.js b/scripts/deploy_contracts/deploy_usdc_pool.js similarity index 100% rename from src/hardhat/scripts/deploy_contracts/deploy_usdc_pool.js rename to scripts/deploy_contracts/deploy_usdc_pool.js diff --git a/src/hardhat/scripts/deploy_fantom.js b/scripts/deploy_fantom.js similarity index 100% rename from src/hardhat/scripts/deploy_fantom.js rename to scripts/deploy_fantom.js diff --git a/src/hardhat/scripts/deploy_mainnet.js b/scripts/deploy_mainnet.js similarity index 100% rename from src/hardhat/scripts/deploy_mainnet.js rename to scripts/deploy_mainnet.js diff --git a/src/hardhat/scripts/deploy_metis.js b/scripts/deploy_metis.js similarity index 100% rename from src/hardhat/scripts/deploy_metis.js rename to scripts/deploy_metis.js diff --git a/src/hardhat/scripts/deploy_rinkeby.js b/scripts/deploy_rinkeby.js similarity index 100% rename from src/hardhat/scripts/deploy_rinkeby.js rename to scripts/deploy_rinkeby.js diff --git a/src/hardhat/scripts/helpers/deploy_contract.js b/scripts/helpers/deploy_contract.js similarity index 100% rename from src/hardhat/scripts/helpers/deploy_contract.js rename to scripts/helpers/deploy_contract.js diff --git a/src/hardhat/scripts/helpers/modify_chain.js b/scripts/helpers/modify_chain.js similarity index 100% rename from src/hardhat/scripts/helpers/modify_chain.js rename to scripts/helpers/modify_chain.js diff --git a/src/hardhat/scripts/helpers/skip_nonce.js b/scripts/helpers/skip_nonce.js similarity index 100% rename from src/hardhat/scripts/helpers/skip_nonce.js rename to scripts/helpers/skip_nonce.js diff --git a/src/misc/utilities.ts b/src/misc/utilities.ts deleted file mode 100644 index 05e0f6bb..00000000 --- a/src/misc/utilities.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { INVESTOR_ALLOCATIONS, INVESTOR_REWARDS } from '../types/constants'; -const BigNumber = require('bignumber.js'); -const fetch = require('node-fetch'); -const chalk = require('chalk'); -const BIG6 = new BigNumber("1e6"); -const BIG18 = new BigNumber("1e18"); - -export const printAllocations = (key: string, allocations: number[]) => { - - console.log(chalk.bold.blue(`----ALLOCATIONS----`)); - allocations.forEach((val, idx) => { - const the_alloc = INVESTOR_ALLOCATIONS[key][idx]; - if (the_alloc){ - console.log(`${the_alloc.title}: `, chalk.yellow(`${new BigNumber(val).div(the_alloc.big_base).toPrecision(9)} ${the_alloc.symbol}`)); - }; - }) - console.log(chalk.bold.blue(`-------------------`)); - -} - -export const printRewards = (key: string, rewards: number[]) => { - - console.log(chalk.bold.blue(`----REWARDS----`)); - rewards.forEach((val, idx) => { - const the_reward = INVESTOR_REWARDS[key][idx]; - if (the_reward){ - console.log(`${the_reward.title}: `, chalk.yellow(`${new BigNumber(val).div(the_reward.big_base).toPrecision(9)} ${the_reward.symbol}`)); - }; - }) - console.log(chalk.bold.blue(`-------------------`)); - -} - -export const getTokenPriceFromCoinGecko = async (ticker: string): Promise => { - // Don't forget the ?x_cg_pro_api_key=YOUR_API_KEY here - const resp: Response = await fetch(`https://api.coingecko.com/api/v3/coins/${ticker}?tickers=false&market_data=true&community_data=false&developer_data=false&sparkline=false`, { - method: 'GET', - }); - const coingecko_response = resp.ok ? await resp.json() : null; - return coingecko_response.market_data.current_price.usd; -}; - -export const printVeFXS_Points = async (vefxs_instance: any, epoch: any, addr: any) => { - // Global Point - const point = await vefxs_instance.point_history(epoch); - const converted_point = { - bias: new BigNumber(point.bias).toNumber(), - slope: new BigNumber(point.slope).toNumber(), - ts: new BigNumber(point.ts).toNumber(), - blk: new BigNumber(point.blk).toNumber(), - fxs_amt: (new BigNumber(point.fxs_amt)).div(BIG18).toNumber(), - } - console.log("Point: ", converted_point); - - // User Point - const user_point = await vefxs_instance.user_point_history(addr, epoch); - const converted_user_point = { - bias: new BigNumber(user_point.bias).toNumber(), - slope: new BigNumber(user_point.slope).toNumber(), - ts: new BigNumber(user_point.ts).toNumber(), - blk: new BigNumber(user_point.blk).toNumber(), - fxs_amt: (new BigNumber(user_point.fxs_amt)).div(BIG18).toNumber(), - } - console.log(`User Point ${addr}: `, converted_user_point); -} - -export const printCalcCurCombinedWeight = async (contract: any, addr: any) => { - const pack = await contract.calcCurCombinedWeight(addr); - const converted_pack = { - old_combined_weight: (new BigNumber(pack[0])).div(BIG18).toNumber(), - new_vefxs_multiplier: (new BigNumber(pack[1])).div(BIG18).toNumber(), - new_combined_weight: (new BigNumber(pack[2])).div(BIG18).toNumber(), - } - console.log(`CalcCurCombinedWeight [${addr}]: `, converted_pack); -} - -export const printCalcCurCombinedWeightNoVeFXS = async (contract: any, addr: any) => { - const pack = await contract.calcCurCombinedWeight(addr); - const converted_pack = { - old_combined_weight: (new BigNumber(pack[0])).div(BIG18).toNumber(), - new_combined_weight: (new BigNumber(pack[1])).div(BIG18).toNumber(), - } - console.log(`CalcCurCombinedWeight [${addr}]: `, converted_pack); -} \ No newline at end of file diff --git a/src/types/constants.ts b/src/types/constants.ts deleted file mode 100755 index f71f5020..00000000 --- a/src/types/constants.ts +++ /dev/null @@ -1,944 +0,0 @@ -const BigNumber = require('bignumber.js'); - -export const BIG6 = new BigNumber("1e6"); -export const BIG12 = new BigNumber("1e12"); -export const BIG18 = new BigNumber("1e18"); -export const ONE_E18 = 10**18; - -// For getPastLogs -export const PAST_LOGS_BATCH_SIZE = 10000; - -// FXS contract created in block 11465584 -export const LAST_GOOD_FXS_BURNED_SYNC_BLOCK = 12474737; // 12340690 -export const LAST_GOOD_LOCKED_STAKES_SYNC_BLOCK = 12731400; -export const LAST_GOOD_LOCKED_VEFXS_SYNC_BLOCK = 12377613; // Contract created at 12377613 - -export function omit(key, obj) { - const { [key]: omitted, ...rest } = obj; - return rest; -} - -export type GraphTimeFrame = keyof typeof GraphTimeFramePack; -export const GraphTimeFramePack = { - 'All Time': 1576800000, - '1 Year': 31556952, - '6 Months': 15778476, - '3 Months': 7889238, - '1 Month': 2629746, - '1 Week': 604800, - '1 Day': 86400, - '8 Hours': 28800, - '1 Hour': 3600, - '15 Minutes': 900, -} - -export const GraphTimeFramePackLowercased = { - 'all-time': 1576800000, - '1-year': 31556952, - '6-months': 15778476, - '3-months': 7889238, - '1-month': 2629746, - '1-week': 604800, - '1-day': 86400, - '8-hours': 28800, - '1-hour': 3600, - '15-minutes': 900, -} - -export type LockedStakeBucket = keyof typeof LockedStakeBucketPack; -export const LockedStakeBucketPack = { - 'Unlocked': { idx: 0, min: 0, max: 1 }, - '≤ 15 days': { idx: 1, min: 1, max: 1296000 }, - '15 - 30 Days': { idx: 2, min: 1296001, max: 2592000 }, - '30 - 60 Days': { idx: 3, min: 2592001, max: 5184000 }, - '60 - 90 Days': { idx: 4, min: 5184001, max: 7776000 }, - '90 Days - 180 Days': { idx: 5, min: 7776001, max: 15552000 }, - '180 Days - 1 Year': { idx: 6, min: 15552001, max: 31536000 }, - '1 Year - 2 Years': { idx: 7, min: 31536001, max: 63113904 }, - '2 Years - 3 Years': { idx: 8, min: 63113905, max: 94608000 }, - '3 Years - 4 Years': { idx: 9, min: 94608001, max: 900000000 }, // includes 9999 day locks -} - -export type GraphTimeNumPoints = keyof typeof GraphTimeNumPointsPack; -export const GraphTimeNumPointsPack = { - 'all-time': 1095, // Assuming 3 years, each day - '1-year': 365, // One point per day - '6-months': 180, // One point per day - '3-months': 180, // One point per half day - '1-month': 120, // One point per 6 hrs - '1-week': 126, // One point per 2 hrs - '1-day': 96, // One point per 15 min - '8-hours': 96, // One point per 5 min - '1-hour': 120, // One point per 30 sec - '15-minutes': 90, // One point per block (~15 seconds) -} - -// Used to limit the return size of the data to it is faster -export type GraphTimeModulusPoints = keyof typeof GraphTimeNumPointsPack; -export const GraphTimeModulusPointsPack = { - 'all-time': 20, - '1-year': 10, - '6-months': 10, - '3-months': 5, - '1-month': 4, - '1-week': 3, - '1-day': 2, - '8-hours': 1, - '1-hour': 1, - '15-minutes': 1, -} - -export const CollateralDetailsPack = { - 'yUSD': { - name: 'LP-yCurve', - dd_name: 'yCRV DAI+USDC+USDT+TUSD', - decimals: 18 - }, - 'USDC': { - name: 'USDC', - dd_name: 'USDC', - decimals: 18 - }, - 'USDT': { - name: 'USDT', - dd_name: 'USDT', - decimals: 18 - }, -}; - -export const COLLATERAL_TYPES = Object.keys(CollateralDetailsPack); - - - -export const StakeChoices = { - 'Snowball S3F (FRAX + TUSD + USDT)': { - logo: 'snowball', - name: 'Snowball S3F (FRAX + TUSD + USDT)', - label: 'Snowball S3F (FRAX + TUSD + USDT)', - chain: 'avalanche', - external_contract: true, - farming_link: 'https://app.snowball.network/earn_v2/' - }, - 'SpiritSwap FRAX/FTM': { - logo: 'spiritswap', - name: 'SpiritSwap FRAX/FTM', - label: 'SpiritSwap FRAX/FTM', - chain: 'fantom', - external_contract: true, - farming_link: 'https://app.spiritswap.finance/#/farms' - }, - 'SpiritSwap FRAX/FXS': { - logo: 'spiritswap', - name: 'SpiritSwap FRAX/FXS', - label: 'SpiritSwap FRAX/FXS', - chain: 'fantom', - external_contract: true, - farming_link: 'https://app.spiritswap.finance/#/farms' - }, - // 'PancakeSwap FRAX/FXS': { - // logo: 'pancakeswap', - // slug: "PancakeSwap_FRAX_FXS", - // name: 'PancakeSwap FRAX/FXS', - // label: 'PancakeSwap FRAX/FXS [Deprecated]', - // oracle: 'PANCAKESWAP_FRAX_FXS', - // info_link: 'https://pancakeswap.info/pair/0x444be928a0091affe2be000f3ff904bc51b0172c', - // add_liq_link: 'https://v1exchange.pancakeswap.finance/#/add/0x29ced01c447166958605519f10dcf8b0255fb379/0xde2f075f6f14eb9d96755b24e416a53e736ca363', - // trade_link: 'https://v1exchange.pancakeswap.finance/#/swap?inputCurrency=0x29ced01c447166958605519f10dcf8b0255fb379&outputCurrency=0xde2f075f6f14eb9d96755b24e416a53e736ca363', - // precision_to_show: 6, - // staking_enabled: true, - // fxs_rewards: true, - // dual_rewards: true, - // token1_symbol: 'CAKE', - // token1_coingecko_ticker: 'pancakeswap-token', - // token1_logo: 'cake', - // chain: 'bsc', - // external_contract: false, - // version: 2 - // }, - 'QuickSwap FRAX/QUICK': { - logo: 'quickswap', - name: 'QuickSwap FRAX/QUICK', - label: 'QuickSwap FRAX/QUICK', - chain: 'polygon', - external_contract: true, - farming_link: 'https://quickswap.exchange/#/quick' - }, - 'QuickSwap FRAX/FXS': { - logo: 'quickswap', - name: 'QuickSwap FRAX/FXS', - label: 'QuickSwap FRAX/FXS', - chain: 'polygon', - external_contract: true, - farming_link: 'https://quickswap.exchange/#/quick' - }, - 'Cream FRAX Lending': { - logo: 'cream', - name: 'Cream FRAX Lending', - label: 'Cream FRAX Lending', - chain: 'mainnet', - external_contract: true, - farming_link: 'https://app.cream.finance/' - }, - 'Yearn crvFRAX Vault (V2)': { - logo: 'yearn', - name: 'Yearn crvFRAX Vault (V2)', - label: 'Yearn crvFRAX Vault (V2)', - chain: 'mainnet', - external_contract: true, - farming_link: 'https://yearn.finance/vaults/0xB4AdA607B9d6b2c9Ee07A275e9616B84AC560139' - }, - 'Curve FRAX3CRV-f-2': { - logo: 'curve', - slug: "Curve_FRAX3CRV_F_2", - name: 'Curve FRAX3CRV-f-2', - label: 'Curve FRAX3CRV-f V2 (Metapool) [Deprecated, use Curve.fi]', - oracle: 'CURVE_FRAX_DAI_USDC_USDT', - info_link: 'https://curve.fi/frax/stats', - add_liq_link: 'https://curve.fi/frax/deposit', - trade_link: 'https://curve.fi/frax/', - external_contract: true, - farming_link: 'https://curve.fi/pools' - // precision_to_show: 6, - // staking_enabled: true, - // fxs_rewards: true, - // dual_rewards: false, - // token1_symbol: 'CRV', - // token1_coingecko_ticker: 'curve-dao-token', - // chain: 'mainnet', - // external_contract: false, - // version: 2 - }, - // 'FinNexus FRAX Lending': { - // logo: 'finnexus', - // name: 'FinNexus FRAX Lending', - // label: 'FinNexus FRAX Lending', - // chain: 'mainnet', - // external_contract: true, - // farming_link: 'https://options.finnexus.io' - // }, - // 'SakeSwap FRAX/FXS': { - // logo: 'sakeswap', - // name: 'SakeSwap FRAX/FXS', - // label: 'SakeSwap FRAX/FXS', - // chain: 'mainnet', - // external_contract: true, - // farming_link: 'https://app.sakeswap.finance/#/farm-v2/FXS_FRAXV2_lp' - // }, - 'Sushi FRAX/FXS [Polygon]': { - logo: 'sushiswap', - name: 'Sushi FRAX/FXS [Polygon]', - label: 'Sushi FRAX/FXS [Polygon]', - chain: 'polygon', - external_contract: true, - farming_link: 'https://app.sushi.com/yield' - }, - 'Sushi FRAX/USDC [Polygon]': { - logo: 'sushiswap', - name: 'Sushi FRAX/USDC [Polygon]', - label: 'Sushi FRAX/USDC [Polygon]', - chain: 'polygon', - external_contract: true, - farming_link: 'https://app.sushi.com/yield' - }, - // 'Sushi FRAX/FXS': { - // logo: 'sushiswap', - // slug: "Sushi_FRAX_FXS", - // name: 'Sushi FRAX/FXS', - // label: 'SushiSwap FRAX/FXS [Deprecated]', - // oracle: 'FRAX_FXS', // Should move to Sushi oracle later? - // info_link: 'https://analytics.sushiswap.fi/pairs/0xc218001e3d102e3d1de9bf2c0f7d9626d76c6f30', - // add_liq_link: 'https://app.sushiswap.fi/pair/0xc218001e3d102e3d1de9bf2c0f7d9626d76c6f30', - // trade_link: 'https://app.sushiswap.fi/pair/0xc218001e3d102e3d1de9bf2c0f7d9626d76c6f30', - // precision_to_show: 6, - // staking_enabled: false, - // fxs_rewards: false, - // dual_rewards: true, - // token1_symbol: 'SUSHI', - // token1_coingecko_ticker: 'sushi', - // token1_logo: 'sushi', - // chain: 'mainnet', - // external_contract: false, - // version: 1 - // }, - // 'Sushi FXS/WETH': { - // logo: 'sushiswap', - // slug: "Sushi_FXS_WETH", - // name: 'Sushi FXS/WETH', - // label: 'SushiSwap FXS/WETH [Deprecated]', - // oracle: 'FXS_WETH', // Should move to Sushi oracle later? - // info_link: 'https://analytics.sushiswap.fi/pairs/0x61eb53ee427ab4e007d78a9134aacb3101a2dc23', - // add_liq_link: 'https://app.sushiswap.fi/pair/0x61eb53ee427ab4e007d78a9134aacb3101a2dc23', - // trade_link: 'https://app.sushiswap.fi/pair/0x61eb53ee427ab4e007d78a9134aacb3101a2dc23', - // precision_to_show: 6, - // staking_enabled: false, - // fxs_rewards: false, - // dual_rewards: true, - // token1_symbol: 'SUSHI', - // token1_coingecko_ticker: 'sushi', - // token1_logo: 'sushi', - // chain: 'mainnet', - // external_contract: false, - // version: 1 - // }, - 'Uniswap FRAX/USDC': { - logo: 'uniswap', - slug: "Uniswap_FRAX_USDC", - name: 'Uniswap FRAX/USDC', - label: 'Uniswap FRAX/USDC', - oracle: 'FRAX_USDC', - info_link: "https://v2.info.uniswap.org/pair/0x97c4adc5d28a86f9470c70dd91dc6cc2f20d2d4d", - add_liq_link: 'https://app.uniswap.org/#/add/v2/0x853d955acef822db058eb8505911ed77f175b99e/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - trade_link: 'https://app.uniswap.org/#/swap?use=V2&inputCurrency=0x853d955acef822db058eb8505911ed77f175b99e&outputCurrency=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - precision_to_show: 6, - staking_enabled: true, - fxs_rewards: true, - dual_rewards: false, - chain: 'mainnet', - external_contract: false, - version: 1 - }, - 'Uniswap V3 FRAX/USDC': { - logo: 'uniswap', - slug: "Uniswap_V3_FRAX_USDC", - name: 'Uniswap V3 FRAX/USDC', - label: 'Uniswap V3 FRAX/USDC', - oracle: 'FRAX_USDC', - info_link: "https://info.uniswap.org/#/pools/0xc63b0708e2f7e69cb8a1df0e1389a98c35a76d52", - add_liq_link: 'https://app.uniswap.org/#/add/0x853d955acef822db058eb8505911ed77f175b99e/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/500', - trade_link: 'https://app.uniswap.org/#/swap?inputCurrency=0x853d955acef822db058eb8505911ed77f175b99e&outputCurrency=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - precision_to_show: 6, - staking_enabled: true, - fxs_rewards: true, - dual_rewards: false, - chain: 'mainnet', - external_contract: false, - version: 1000, - pair_token0_decimals: 18, - pair_token1_decimals: 6 - }, - 'Uniswap FRAX/WETH': { - logo: 'uniswap', - slug: "Uniswap_FRAX_WETH", - name: 'Uniswap FRAX/WETH', - label: 'Uniswap FRAX/WETH', - oracle: 'FRAX_WETH', - info_link: "https://v2.info.uniswap.org/pair/0xfd0a40bc83c5fae4203dec7e5929b446b07d1c76", - add_liq_link: 'https://app.uniswap.org/#/add/v2/0x853d955acef822db058eb8505911ed77f175b99e/ETH', - trade_link: 'https://app.uniswap.org/#/swap?use=V2&inputCurrency=0x853d955acef822db058eb8505911ed77f175b99e&outputCurrency=ETH', - precision_to_show: 6, - staking_enabled: true, - fxs_rewards: true, - dual_rewards: false, - chain: 'mainnet', - external_contract: false, - version: 1 - }, - 'Uniswap FRAX/FXS': { - logo: 'uniswap', - slug: "Uniswap_FRAX_FXS", - name: 'Uniswap FRAX/FXS', - label: 'Uniswap FRAX/FXS', - oracle: 'FRAX_FXS', - info_link: "https://v2.info.uniswap.org/pair/0xe1573b9d29e2183b1af0e743dc2754979a40d237", - add_liq_link: 'https://app.uniswap.org/#/add/v2/0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0/0x853d955acef822db058eb8505911ed77f175b99e', - trade_link: 'https://app.uniswap.org/#/swap?use=V2&inputCurrency=0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0&outputCurrency=0x853d955acef822db058eb8505911ed77f175b99e', - precision_to_show: 6, - staking_enabled: true, - fxs_rewards: true, - dual_rewards: false, - chain: 'mainnet', - external_contract: false, - version: 1 - }, - 'Uniswap FRAX/IQ': { - logo: 'uniswap', - slug: "Uniswap_FRAX_IQ", - name: 'Uniswap FRAX/IQ', - label: 'Uniswap FRAX/IQ', - oracle: 'FRAX_FXS', - info_link: "https://v2.info.uniswap.org/pair/0xd6c783b257e662ca949b441a4fcb08a53fc49914", - add_liq_link: 'https://app.uniswap.org/#/add/v2/0x853d955acef822db058eb8505911ed77f175b99e/0x579cea1889991f68acc35ff5c3dd0621ff29b0c9', - trade_link: 'https://app.uniswap.org/#/swap?use=V2&inputCurrency=0x853d955acef822db058eb8505911ed77f175b99e&outputCurrency=0x579cea1889991f68acc35ff5c3dd0621ff29b0c9', - precision_to_show: 6, - staking_enabled: true, - fxs_rewards: true, - dual_rewards: true, - vefxs_enabled: true, - token1_symbol: 'IQ', - token1_coingecko_ticker: 'everipedia', - token1_logo: 'everipedia', - chain: 'mainnet', - external_contract: false, - version: 3 - }, - 'Uniswap FRAX/OHM': { - logo: 'uniswap', - slug: "Uniswap_FRAX_OHM", - name: 'Uniswap FRAX/OHM', - label: 'Uniswap FRAX/OHM', - oracle: 'FRAX_FXS', - info_link: "https://v2.info.uniswap.org/pair/0x2dce0dda1c2f98e0f171de8333c3c6fe1bbf4877", - add_liq_link: 'https://app.uniswap.org/#/add/v2/0x853d955acef822db058eb8505911ed77f175b99e/0x383518188c0c6d7730d91b2c03a03c837814a899', - trade_link: 'https://app.uniswap.org/#/swap?use=V2&inputCurrency=0x853d955acef822db058eb8505911ed77f175b99e&outputCurrency=0x383518188c0c6d7730d91b2c03a03c837814a899', - precision_to_show: 6, - staking_enabled: true, - fxs_rewards: true, - dual_rewards: true, - vefxs_enabled: true, - token1_symbol: 'OHM', - token1_coingecko_ticker: 'olympus', - token1_logo: 'olympus', - token1_decimals: 9, - chain: 'mainnet', - external_contract: false, - version: 4 - }, - // 'XDEFI XDEX-WETH-FXS-FRAX': { - // logo: 'xdefi', - // name: 'XDEFI XDEX-WETH-FXS-FRAX', - // label: 'XDEFI XDEX-WETH-FXS-FRAX', - // chain: 'mainnet', - // external_contract: true, - // farming_link: 'https://farm.xdefi.com/#/farms/46' - // }, - // 'Uniswap FXS/WETH': { - // logo: 'uniswap', - // name: 'Uniswap FXS/WETH', - // label: 'Uniswap FXS/WETH [Deprecated]', - // oracle: 'FXS_WETH', - // info_link: "https://v2.info.uniswap.org/pair/0xecba967d84fcf0405f6b32bc45f4d36bfdbb2e81", - // add_liq_link: 'https://app.uniswap.org/#/add/0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0/ETH', - // trade_link: 'https://app.uniswap.org/#/swap?inputCurrency=0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0&outputCurrency=ETH', - // precision_to_show: 6, - // staking_enabled: false, - // fxs_rewards: true, - // dual_rewards: false, - // chain: 'mainnet', - // external_contract: false, - // version: 1 - // }, - // 'Curve FRAX-DAI-USDC-USDT': { - // logo: 'curve', - // name: 'Curve FRAX-DAI-USDC-USDT', - // label: 'Curve FRAX-DAI-USDC-USDT V1 [Deprecated]', - // oracle: 'CURVE_FRAX_DAI_USDC_USDT', - // info_link: 'https://crv.finance/', - // add_liq_link: 'https://crv.to/pool', - // trade_link: 'https://crv.to/swap', - // precision_to_show: 6, - // staking_enabled: true, - // fxs_rewards: true, - // dual_rewards: false, - // token1_symbol: 'CRV', - // token1_coingecko_ticker: 'curve-dao-token', - // chain: 'mainnet', - // external_contract: false, - // version: 1 - // }, -}; - -export const GovernanceHistoryCodes = { - "Created": 0, - "Active": 1, - "Rejected": 2, - "Succeeded": 3, - "Queued": 4, - "Executed": 5 -} - -export const govHistStringFromCode = (code: number) => { - const theKeys = Object.keys(GovernanceHistoryCodes); - for (let i = 0; i < theKeys.length; i++){ - const key = theKeys[i]; - if (GovernanceHistoryCodes[key] == code) return key; - } - return null; -} - -export const INVESTOR_ALLOCATIONS = { - 'Investor_V1': [ - { title: "Unallocated", big_base: BIG6, symbol: 'USDC' }, - { title: "yearn", big_base: BIG6, symbol: 'USDC' }, - { title: "AAVE", big_base: BIG6, symbol: 'USDC' }, - { title: "Compound", big_base: BIG6, symbol: 'USDC' }, - { title: "Total", big_base: BIG6, symbol: 'USDC' } - ], - 'Investor_V2': [ - { title: "Unallocated", big_base: BIG6, symbol: 'USDC' }, - { title: "yearn", big_base: BIG6, symbol: 'USDC' }, - { title: "AAVE", big_base: BIG6, symbol: 'USDC' }, - { title: "Compound", big_base: BIG6, symbol: 'USDC' }, - { title: "Total", big_base: BIG6, symbol: 'USDC' } - ], - 'LendingAMO_V1': [ - { title: "Unallocated FRAX", big_base: BIG18, symbol: 'FRAX' }, - { title: "crFRAX", big_base: BIG18, symbol: 'FRAX' }, - { title: "Staked FPT-FRAX", big_base: BIG18, symbol: 'FRAX' }, - { title: "Free FPT-FRAX", big_base: BIG18, symbol: 'FRAX' }, - { title: "Unwinding CFNX", big_base: BIG18, symbol: 'CFNX' }, - { title: "Claimable Unwound FNX", big_base: BIG18, symbol: 'FNX' }, - { title: "Free FNX", big_base: BIG18, symbol: 'FNX' }, - { title: "FNX Total", big_base: BIG18, symbol: 'FNX' }, - { title: "FRAX Total", big_base: BIG18, symbol: 'FRAX' }, - { title: "CollatDollarBalance", big_base: BIG18, symbol: 'USD' }, - ], - 'CurveAMO_V1': [ - { title: "Unallocated FRAX", big_base: BIG18, symbol: 'FRAX' }, - { title: "FRAX withdrawable from LP", big_base: BIG18, symbol: 'FRAX' }, - { title: "Total FRAX", big_base: BIG18, symbol: 'FRAX' }, - { title: "Free Collateral", big_base: BIG6, symbol: 'USDC' }, - { title: "Collateral withdrawable from LP", big_base: BIG6, symbol: 'USDC' }, - { title: "Subtotal Collateral", big_base: BIG6, symbol: 'USDC' }, - { title: "Total Collateral", big_base: BIG6, symbol: 'USDC' }, - { title: "FRAX3CRV-2-f Free and Owned", big_base: BIG18, symbol: 'FRAX3CRV' }, - { title: "FRAX3CRV-2-f Total Supply", big_base: BIG18, symbol: 'FRAX3CRV' }, - { title: "3CRV Withdrawable", big_base: BIG18, symbol: '3CRV' }, - ], - 'CurveAMO_V2': [ - { title: "Unallocated FRAX", big_base: BIG18, symbol: 'FRAX' }, - { title: "FRAX withdrawable from LP", big_base: BIG18, symbol: 'FRAX' }, - { title: "Total FRAX", big_base: BIG18, symbol: 'FRAX' }, - { title: "Free Collateral", big_base: BIG6, symbol: 'USDC' }, - { title: "Collateral withdrawable from LP", big_base: BIG6, symbol: 'USDC' }, - { title: "Subtotal Collateral", big_base: BIG6, symbol: 'USDC' }, - { title: "Total Collateral", big_base: BIG6, symbol: 'USDC' }, - { title: "FRAX3CRV-2-f Free and Owned", big_base: BIG18, symbol: 'FRAX3CRV' }, - { title: "FRAX3CRV-2-f Total Supply", big_base: BIG18, symbol: 'FRAX3CRV' }, - { title: "3CRV Withdrawable", big_base: BIG18, symbol: '3CRV' }, - { title: "FRAX3CRV-2-f in Gauge", big_base: BIG18, symbol: 'FRAX3CRV' }, - { title: "FRAX3CRV-2-f lent to Voter", big_base: BIG18, symbol: 'FRAX3CRV' }, - ], - 'CurveAMO_V3': [ - { title: "Unallocated FRAX", big_base: BIG18, symbol: 'FRAX' }, - { title: "FRAX withdrawable from LP", big_base: BIG18, symbol: 'FRAX' }, - { title: "Total FRAX", big_base: BIG18, symbol: 'FRAX' }, - { title: "Free Collateral", big_base: BIG6, symbol: 'USDC' }, - { title: "Collateral withdrawable from LP", big_base: BIG6, symbol: 'USDC' }, - { title: "Subtotal Collateral", big_base: BIG6, symbol: 'USDC' }, - { title: "Total Collateral", big_base: BIG6, symbol: 'USDC' }, - { title: "FRAX3CRV-2-f Free and Owned", big_base: BIG18, symbol: 'FRAX3CRV' }, - { title: "FRAX3CRV-2-f Total Supply", big_base: BIG18, symbol: 'FRAX3CRV' }, - { title: "3CRV Withdrawable", big_base: BIG18, symbol: '3CRV' }, - { title: "FRAX3CRV in Vault", big_base: BIG18, symbol: 'USD' }, - ], - 'CurveAMO_V4': [ - { title: "Unallocated FRAX", big_base: BIG18, symbol: 'FRAX' }, - { title: "FRAX withdrawable from LP", big_base: BIG18, symbol: 'FRAX' }, - { title: "Total FRAX", big_base: BIG18, symbol: 'FRAX' }, - { title: "Free Collateral", big_base: BIG6, symbol: 'USDC' }, - { title: "Collateral withdrawable from LP", big_base: BIG6, symbol: 'USDC' }, - { title: "Subtotal Collateral", big_base: BIG6, symbol: 'USDC' }, - { title: "Total Collateral", big_base: BIG6, symbol: 'USDC' }, - { title: "FRAX3CRV-2-f Free and Owned", big_base: BIG18, symbol: 'FRAX3CRV' }, - { title: "FRAX3CRV-2-f Total Supply", big_base: BIG18, symbol: 'FRAX3CRV' }, - { title: "3CRV Withdrawable", big_base: BIG18, symbol: '3CRV' }, - { title: "FRAX3CRV in Vault", big_base: BIG18, symbol: 'USD' }, - ], - 'StakeDAO_AMO': [ - { title: "Unallocated FRAX", big_base: BIG18, symbol: 'FRAX' }, - { title: "FRAX withdrawable from LP", big_base: BIG18, symbol: 'FRAX' }, - { title: "Total FRAX", big_base: BIG18, symbol: 'FRAX' }, - { title: "Free Collateral", big_base: BIG6, symbol: 'USDC' }, - { title: "Collateral withdrawable from LP", big_base: BIG6, symbol: 'USDC' }, - { title: "Subtotal Collateral", big_base: BIG6, symbol: 'USDC' }, - { title: "Total Collateral", big_base: BIG6, symbol: 'USDC' }, - { title: "FRAX3CRV-2-f Free and Owned", big_base: BIG18, symbol: 'FRAX3CRV' }, - { title: "FRAX3CRV-2-f Total Supply", big_base: BIG18, symbol: 'FRAX3CRV' }, - { title: "3CRV Withdrawable", big_base: BIG18, symbol: '3CRV' }, - { title: "FRAX3CRV in Vault", big_base: BIG18, symbol: 'USD' }, - ], - 'OHM_AMO': [ - { title: "Unallocated FRAX", big_base: BIG18, symbol: 'FRAX' }, - { title: "OHM Value", big_base: BIG18, symbol: 'FRAX' }, - { title: "sOHM Value", big_base: BIG18, symbol: 'FRAX' }, - { title: "Bonded OHM Value", big_base: BIG18, symbol: 'FRAX' }, - { title: "Total USD Value", big_base: BIG18, symbol: 'FRAX' }, - ], - 'Convex_AMO': [ - { title: "Unallocated FRAX", big_base: BIG18, symbol: 'FRAX' }, - { title: "FRAX withdrawable from LP", big_base: BIG18, symbol: 'FRAX' }, - { title: "Total FRAX", big_base: BIG18, symbol: 'FRAX' }, - { title: "Free Collateral", big_base: BIG6, symbol: 'USDC' }, - { title: "Collateral withdrawable from LP", big_base: BIG6, symbol: 'USDC' }, - { title: "Subtotal Collateral", big_base: BIG6, symbol: 'USDC' }, - { title: "Total Collateral", big_base: BIG6, symbol: 'USDC' }, - { title: "FRAX3CRV-2-f Free and Owned", big_base: BIG18, symbol: 'FRAX3CRV' }, - { title: "FRAX3CRV-2-f Total Supply", big_base: BIG18, symbol: 'FRAX3CRV' }, - { title: "3CRV Withdrawable", big_base: BIG18, symbol: '3CRV' }, - { title: "FRAX3CRV in Vault", big_base: BIG18, symbol: 'USD' }, - ], -}; - -export const INVESTOR_REWARDS = { - 'Investor_V1': [ - { title: "COMP", big_base: BIG18, symbol: 'COMP' } - ], - 'Investor_V2': [ - { title: "COMP", big_base: BIG18, symbol: 'COMP' }, - { title: "stkAAVE", big_base: BIG18, symbol: 'stkAAVE' }, - { title: "AAVE", big_base: BIG18, symbol: 'AAVE' } - ], - 'LendingAMO_V1': [ - { title: "FNX", big_base: BIG18, symbol: 'FNX' } - ], - 'CurveAMO_V1': [ - { title: "CRV", big_base: BIG18, symbol: 'CRV' } - ], - 'Convex_AMO': [ - // { title: "CRV in contract", big_base: BIG18, symbol: 'CRV' }, - { title: "CRV claimable", big_base: BIG18, symbol: 'CRV' }, - // { title: "CVX in contract", big_base: BIG18, symbol: 'CVX' }, - { title: "CVX claimable", big_base: BIG18, symbol: 'CVX' }, - // { title: "cvxCRV in contract", big_base: BIG18, symbol: 'cvxCRV' }, - { title: "cvxCRV claimable", big_base: BIG18, symbol: 'cvxCRV' }, - // { title: "FXS in contract", big_base: BIG18, symbol: 'FXS' }, - { title: "FXS claimable", big_base: BIG18, symbol: 'FXS' }, - ] -}; - -export const CONTRACT_ADDRESSES = { - mainnet: { - main: { - FRAX: '0x853d955aCEf822Db058eb8505911ED77F175b99e', - FXS: '0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0', - FXB: '', - vesting: 'NOT_DEPLOYED_YET', - veFXS: '0xc8418aF6358FFddA74e09Ca9CC3Fe03Ca6aDC5b0', // Old: '0xcb75A1655c84589652D0f3A4605e5dDA8431F0a6' - veFXS_whitelist_checker: '' - }, - weth: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', - oracles: { - FRAX_WETH: '0x9b1A56A2E7164c43384448d82253781c1318A77E', // V1: 0xD18660Ab8d4eF5bE062652133fe4348e0cB996DA - // FRAX_USDC: '0x2E45C589A9F301A2061f6567B9F432690368E3C6', // V1: 0x2AD064cEBA948A2B062ba9AfF91c98B9F0a1f608 - // FRAX_FXS: '0x4b85bD29f71b364ae6183C9721Ae5f596E7Bfd3d', // V1: 0xD0435BF68dF2B516C6382caE8847Ab5cdC5c3Ea7 - FXS_WETH: '0x3B11DA52030420c663d263Ad4415a8A02E5f8cf8', // V1: '0x9e483C76D7a66F7E1feeBEAb54c349Df2F00eBdE' - // FXS_USDC: '0x1F70Af31D041f9C183E23EC6809c04eb8CA006a4', //V1: 0x28fdA30a6Cf71d5fC7Ce17D6d20c788D98Ff2c46 - USDC_WETH: '0x69B9E922ecA72Cda644a8e32B8427000059388c6', // V1: '0x5e48C34f1005a514DaF0E1aEc53Dbb70fdC2C9F9' - FRAX_USDC: '0x2E45C589A9F301A2061f6567B9F432690368E3C6', // V1: 0x2AD064cEBA948A2B062ba9AfF91c98B9F0a1f608 - }, - oracles_other: { - FRAX_FXS: '0x4b85bD29f71b364ae6183C9721Ae5f596E7Bfd3d', // V1: 0xD0435BF68dF2B516C6382caE8847Ab5cdC5c3Ea7 - FXS_USDC: '0x1F70Af31D041f9C183E23EC6809c04eb8CA006a4', //V1: 0x28fdA30a6Cf71d5fC7Ce17D6d20c788D98Ff2c46 - FXS_USDC_PAIR: '0x9BAC32D4f3322bC7588BB119283bAd7073145355' - }, - pid_related: { - pid_controller: "0x6de667F424E2b1b8fD39fC2e1b9a14c0103E9879", // V1: "0x60A315E04419290449dB4866481cb33d39df03A3", - reserve_tracker: "0x7215F84FE2f2F1726fFb42da923f3F04A72CF5E8" // V1: "0xF96882Dd0a4c8b2469084d2Db48768AA83B4a2f5" - }, - investments: { - "yearn_yUSDC_V2": '0x5f18C75AbDAe578b483E5F43f12a39cF75b973a9', - "aave_aUSDC_Pool": '0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9', - "aave_aUSDC_Token": '0xBcca60bB61934080951369a648Fb03DF4F96263C', - 'aave_incentives_controller': '0xd784927Ff2f95ba542BfC824c8a8a98F3495f6b5', - "compound_cUSDC": '0x39AA39c021dfbaE8faC545936693aC917d5E7563', - "compound_controller": '0x3d9819210A31b4961b30EF54bE2aeD79B9c9Cd3B', - "cream_crFRAX": '0xb092b4601850E23903A42EaCBc9D8A0EeC26A4d5', - "fnx_FPT_FRAX": '0x39ad661bA8a7C9D3A7E4808fb9f9D5223E22F763', - "fnx_FPT_B": '0x7E605Fb638983A448096D82fFD2958ba012F30Cd', // B = FNX - 'fnx_IntegratedStake': '0x23e54F9bBe26eD55F93F19541bC30AAc2D5569b2', - 'fnx_MinePool': '0x4e6005396F80a737cE80d50B2162C0a7296c9620', - 'fnx_TokenConverter': '0x955282b82440F8F69E901380BeF2b603Fba96F3b', - 'fnx_ManagerProxy': '0xa2904Fd151C9d9D634dFA8ECd856E6B9517F9785', - 'fnx_CFNX': '0x9d7beb4265817a4923FAD9Ca9EF8af138499615d', - // "bzx_iUSDC_Fulcrum": '0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15', - // "keeper_Pool_V2": '0x53463cd0b074E5FDafc55DcE7B1C82ADF1a43B2E', - // "keeper_kUSDC_Token": '0xac826952bc30504359a099c3a486d44E97415c77', - // "harvest_fUSDC": '0xf0358e8c3CD5Fa238a29301d0bEa3D63A17bEdBE', - // "harvest_DepositHelper": '0xF8ce90c2710713552fb564869694B2505Bfc0846', - // "harvest_NoMintRewardPool": '0x4F7c28cCb0F1Dbd1388209C67eEc234273C878Bd' - }, - collateral: { - USDC: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', - USDC_V2: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', - USDT: '0xdAC17F958D2ee523a2206206994597C13D831ec7' - }, - governance: '0xd74034C6109A23B6c7657144cAcBbBB82BDCB00E', - bond_issuers: { - issuer_v1: '' - }, - pools: { - USDC: '0x3C2982CA260e870eee70c423818010DfeF212659', - USDC_V2: '0x1864Ca3d47AaB98Ee78D11fc9DCC5E7bADdA1c0d', - USDT: '0x7d3FCd3825AE54E8E8FFD3d0ce95882330d54968' - }, - uniswap_other: { - router: '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D', - factory: '0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f', - v3_positions_NFT: '0xC36442b4a4522E871399CD717aBDD847Ab11FE88' - }, - pricing: { - swap_to_price: '0xa61cBe7E326B13A8dbA11D00f42531BE704DF51B', - chainlink_eth_usd: '0xBa6C6EaC41a24F9D39032513f66D738B3559f15a', - chainlink_fxs_usd: '0x679a15fe8B2108fdA30f292C92abCDE3a1246324' - - }, - bridges: { - eth_side: { - frax: { - avalanche: "", - bsc: "0x533e3c0e6b48010873B947bddC4721b1bDFF9648", - fantom: "0xC564EE9f21Ed8A2d8E7e76c085740d5e4c5FaFbE", - polygon: "0x40ec5B33f54e0E8A33A975908C5BA1c14e5BbbDf", - xdai: "0x88ad09518695c6c3712ac10a214be5109a655671" - }, - fxs: { - avalanche: "", - bsc: "", - fantom: "0xC564EE9f21Ed8A2d8E7e76c085740d5e4c5FaFbE", - polygon: "0x40ec5B33f54e0E8A33A975908C5BA1c14e5BbbDf" - } - }, - other_side: { - frax: { - avalanche: "0xDC42728B0eA910349ed3c6e1c9Dc06b5FB591f98", - bsc: "0x29cED01C447166958605519F10DcF8b0255fB379", - fantom: "0xaf319E5789945197e365E7f7fbFc56B130523B33", - polygon: "0x104592a158490a9228070E0A8e5343B499e125D0" - }, - fxs: { - avalanche: "0xD67de0e0a0Fd7b15dC8348Bb9BE742F3c5850454", - bsc: "0xDE2F075f6F14EB9D96755b24E416A53E736Ca363", - fantom: "0x82F8Cb20c14F134fe6Ebf7aC3B903B2117aAfa62", - polygon: "0x3e121107F6F22DA4911079845a470757aF4e1A1b" - } - } - }, - misc: { - timelock: '0x8412ebf45bAC1B340BbE8F318b928C466c4E39CA', - migration_helper: '0xe16723A08Ae054a8F20BDc0395389569011e78D6', - mint_utilities: '0xE054C1ab5D548E0144ab3F89a8f5809137819906', - staking_utilities: '0xE4de6E1DF1FE135D6462554d0Fd36A14d787f689', - investor_amo_V1: '0xEE5825d5185a1D512706f9068E69146A54B6e076', - investor_amo: '0xB8315Af919729c823B2d996B1A6DDE381E7444f1', // Old proxy: 0x2B4d259a8f6E765AD881C4C1D04045D629dA01b4 - // investor_amo_impl: '0xde3c8aa7f53a69c595b7720045000a68cb9cb341', // Old V3: 0xEccA5a27B4f8f92a2bFFd006F20168A7188C0A0C, Old V2: '0xEE5825d5185a1D512706f9068E69146A54B6e076', // Old: 0xe09394AE14d7c3b1798e4dbEa4c280973B2689A4 - // investor_amo_admin: '0x069c24600c2A03147D4E1D9b04d193151676F577', - lending_amo: '0x9507189f5B6D820cd93d970d67893006968825ef', // Old: 0xDA9d06166c2085988920Fb35EB2d322B4aaDF1EE - curve_amo_V1: '0xbd061885260F176e05699fED9C5a4604fc7F2BDC', - curve_amo_V2: '0xD103FEf74D05FbC20B5184FE85c7187735355DB3', //0xeF8c0b4902b985bF64B8cfF6BbCD0AC1FDc8d5d3', // Proxy: '0x7e983e4f98b16cee76f8f9a6a1e87b5861de8769' - curve_amo: '0x72170Cdc48C33a6AE6B3E83CD387ca3Fb9105da2', // Impl: 0xC3204838aF4CE0597476aDF367B4C9a3cf9a1B51 - // curve_amo_impl: '0x5840db064e17480f8e8e74fd6714c9c316f7ddfe', // Old2: 0xbd061885260F176e05699fED9C5a4604fc7F2BDC', Old1: 0x77746DC37Deae008c7149EDc1b1A8D6d63e08Be5, Old2: 0x25e9702359bAf56E505F0BA981eeBFA23ceB030A, Old3: 0x19a47F38D39692617C9D9012eC0176C9ead00a5e - curve_amo_admin: '0x900909C07c2761d84C5d863FF5905102916DF69C', - fxs_1559_amo: '0x9C6a04871D11b33645ab592f68C41bb2B41F51EE', // Old1: '0xaf02be5968D8Fe9536e24E4c7e888C59A58Bc077' - fxs_1559_amo_v2: '0xC80C48862E4254F37047235298eDb6AA35717C24', // Proxy - stakedao_amo: '0x375278D3C65f29C1A90E8550888f1439cFeFe465', // Impl: 0xcf1e6926b2167f83ec3300bed04a672abd93e646 - ohm_amo: '0x5699d20732a2EFa9A895EF04bb210aa751C4dB96', // Impl: 0x89a5CeC88598c0CE4d4E331D0b027499edd3dfFa - ohm_amo_admin: "0xE53d45ABe10Ce20427D20c5a1b6360Fa5BA0cE0A", - convex_amo: '0x49ee75278820f409ecd67063D8D717B38d66bd71', // Impl: 0x49f77ddd4d57636ab4c98d8f18ca5f4b5210983d - convex_amo_admin: "0xE53d45ABe10Ce20427D20c5a1b6360Fa5BA0cE0A", - // fxs_1559_amo_v2_impl: '0xCDe9A4e885B87a893b8817D136FD2F404B54294f'. - fxs_1559_amo_v2_admin: '0xCaa487D113ad1C34Ce128c4f3a2A437614C6a692', // Proxy admin - frax_gauge_v2: '0x72e158d38dbd50a483501c24f792bdaaa3e7d55c', - crvFRAX_vault: '0xB4AdA607B9d6b2c9Ee07A275e9616B84AC560139', - multisig: '0xFa27873EA2F0eA9DcD2052848C4A7F8ADE8a3936', - vefxs_yield_distributor: "0x19a0a70a68fbC604Bf20A03b787df8f7AC1d50f0", - vefxs_yield_distributor_v2: "0x62C4cf364078C98fA08AfDB4D3d8D87e780Ebd45", - vefxs_yield_distributor_v3: "0xed2647Bbf875b2936AAF95a3F5bbc82819e3d3FE", - frax3crv_curve_fxs_distributor: "0xBBbAf1adf4d39B2843928CCa1E65564e5ce99ccC", // MAY NEED TO CALL APPROVE FIRST - migration_bundle_utils: '0x239c957d42343B3d91FABc7c16E7F1e30Bc32E5B' - - }, - libraries: { - UniswapV2OracleLibrary: '0xeB85Dd2374a44F80342AcF8010d585Bda32B77a0', - UniswapV2Library: '0xC805D4126C3Ac9d0AD7bb94c3D5cD72E3CbCd6f6', - FraxPoolLibrary: '0xA11B9C88e4Bf89aD9A70f5d408ffB5A6d5FEb6A4', - FraxPoolLibrary_V2: '0xe1C3218134E7c69f3443bbd96A5851d193224f78', - }, - reward_tokens: { - sushi: '0x6b3595068778dd592e39a122f4f5a5cf09c90fe2', - curve_dao: '0xd533a949740bb3306d119cc777fa900ba034cd52', - comp: '0xc00e94Cb662C3520282E6f5717214004A7f26888', - fnx: '0xeF9Cd7882c067686691B6fF49e650b43AFBBCC6B', - iq: '0x579CEa1889991f68aCc35Ff5c3dd0621fF29b0C9', - ohm: '0x383518188C0C6d7730D91b2c03a03C837814a899', - // rook: '0xfA5047c9c78B8877af97BDcb85Db743fD7313d4a', - // farm: '0xa0246c9032bC3A600820415aE600c6388619A14D', - // idle: '0x875773784Af8135eA0ef43b5a374AaD105c5D39e' - }, - uni_v3_pools: { - NOTE: "Call getPool here (Factory) to find it: 0x1F98431c8aD98523631AE4a59f267346ea31F984", - NOTE2: "Do hardhat verify with the v1.0.0 uniswap-v3-core fork", - 'Uniswap V3 FRAX/USDC': '0xc63B0708E2F7e69CB8A1df0e1389A98C35A76D52', // Uniswap V3 Pool - }, - pair_tokens: { - 'Uniswap FRAX/WETH': '0xFD0A40Bc83C5faE4203DEc7e5929B446b07d1C76', - 'Uniswap FRAX/USDC': '0x97C4adc5d28A86f9470C70DD91Dc6CC2f20d2d4D', - 'Uniswap V3 FRAX/USDC': '0xC36442b4a4522E871399CD717aBDD847Ab11FE88', // Uniswap V3 Positions NFT - 'Uniswap FRAX/FXS': '0xE1573B9D29e2183B1AF0e743Dc2754979A40D237', - 'Uniswap FXS/WETH': '0xecBa967D84fCF0405F6b32Bc45F4d36BfDBB2E81', - 'Uniswap FRAX/IQ': '0xd6c783b257e662ca949b441a4fcb08a53fc49914', - 'Uniswap FRAX/OHM': '0x2dce0dda1c2f98e0f171de8333c3c6fe1bbf4877', - // 'Sushi FRAX/FXS': '0xc218001e3D102e3d1De9bf2c0F7D9626d76C6f30', - // 'Sushi FXS/WETH': '0x61eB53ee427aB4E007d78A9134AaCb3101A2DC23', - // 'Curve FRAX-DAI-USDC-USDT': '0x83D2944d5fC10A064451Dc5852f4F47759F249B6', // Proxied Implementation: https://etherscan.io/address/0x2c7796c0590cc100d70af473993890d457cb2ac9#code - 'Curve FRAX3CRV-f-2': '0xd632f22692fac7611d2aa1c0d552930d43caed3b', // Proxied For: https://etherscan.io/address/0x5f890841f657d90e081babdb532a05996af79fe6 - 'Saddle alUSD/FEI/FRAX/LUSD': '0xd48cF4D7FB0824CC8bAe055dF3092584d0a1726A' - }, - staking_contracts: { - 'Uniswap FRAX/WETH': '0xD875628B942f8970De3CcEaf6417005F68540d4f', - 'Uniswap FRAX/USDC': '0xa29367a3f057F3191b62bd4055845a33411892b6', - 'Uniswap V3 FRAX/USDC': '0xCbe6ea4725e4ba34aa215B95239DfA6E8854B49a', // Old2: '0x1C21Dd0cE3bA89375Fc39F1B134AD15671022660', // Old1: '0xF397Abd7495EB6FE4697F45b5BA17166f03533b9' - 'Uniswap FRAX/FXS': '0xda2c338350a0E59Ce71CDCED9679A3A590Dd9BEC', - 'Uniswap FXS/WETH': '0xDc65f3514725206Dd83A8843AAE2aC3D99771C88', - 'Uniswap FRAX/IQ': '0xF37057823910653a554d996B49E3399DC87fAE1b', // V1: '0x35fc5Fd90e06c47c0D9dEBfEDB1daF55bCE14E6d', - 'Uniswap FRAX/OHM': '0xfC77A420f56Dec53e3b91D7FC936902e132335FF', - // 'Sushi FRAX/FXS': '0x35302f77E5Bd7A93cbec05d585e414e14B2A84a8', - // 'Sushi FXS/WETH': '0x74C370990C1181303D20e9f0252437a97518B95B', - // 'Curve FRAX-DAI-USDC-USDT': '0xB88107bFB7aa9b6A5eC8784374018073e76d4DF0', - // 'Curve FRAX3CRV-f-2': '0xdFb6ef63eA2753C6598fcA1b220358F17E4d137e' - // 'Saddle alUSD/FEI/FRAX/LUSD': "" - }, - external_farm_tokens: { - "Snowball S3F (FRAX + TUSD + USDT)": "", - // "SpiritSwap FRAX/FXS": "", - // "SpiritSwap FRAX/FTM": "", - // "QuickSwap FRAX/FXS": "0x4756ff6a714ab0a2c69a566e548b59c72eb26725", - // "QuickSwap FRAX/QUICK": "0x2aa7a18ceabf2ef893d2f7c0145cc45e6f10b223", - "Cream FRAX Lending": "", - "Curve FRAX3CRV-f-2": "", - "Yearn crvFRAX Vault (V2)": "", - "Sushi FRAX/FXS [Polygon]": "0xd53a56ae0f48c9a03660cd36c2e4ae20493a1eca", - "Sushi FRAX/USDC [Polygon]": "0x9e20a8d3501bf96eda8e69b96dd84840058a1cb0", - } - }, - bsc: { - main: { - FRAX: '0x29ced01c447166958605519f10dcf8b0255fb379', - FXS: '0xde2f075f6f14eb9d96755b24e416a53e736ca363', - }, - reward_tokens: { - cake: '0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82', - impossible_finance: '0xB0e1fc65C1a741b4662B813eB787d369b8614Af1', - }, - pair_tokens: { - // 'PancakeSwap FRAX/FXS': '0x444be928a0091affe2be000f3ff904bc51b0172c', - // 'PancakeSwap FRAX/BUSD': '0x5C2c4df29748144A7177B4185828693FE375AF00', - 'Impossible FRAX/IF': '0x9CA691841f1F5A0AE1B5A1eb125dE3c215f0b747', - 'Impossible FXS/IF': '0x725aFC77770e023E18C1a07Cc7E2d1a42bA5F123', - }, - staking_contracts: { - 'Impossible FRAX/IF': '0x45dD6e5f65A5a526c09A50D612e3516ed6AB47d2', - } - } - // ropsten: { - // main: { - // FRAX: '0x5cD30EC40b6da67B65cFCd7A6C8c692AE70232a4', - // FXS: '0xd7145834f0d3D2F47f441F9302A095bd607C408d', - // vesting: 'NOT_DEPLOYED_YET' - // }, - // weth: '0x9533696FdAd12ed1FC7917e9b56A8d549Df5d2b9', - // oracles: { - // FRAX_WETH: '0x6B1cA4438cb8f5E2797A4FC4F6F26CC9FF36C322', - // FRAX_USDC: '0x0d28d4330fDC8eE043B4336edA75Ae0A6c5dEE20', - // FRAX_USDT: '0x2c4C60255019334f1D73EEf25894248e0F419b50', - // FRAX_FXS: '0xBca2ADab420BB3928eEc843fa2039384Bfb19FD4', - // FXS_WETH: '0x87634e2b8e326925d8375995681808D754e56481', - // FXS_USDC: '0xdAf03fB7A1440Bfc724b3C7F4CF047C3aA4510A9', - // FXS_USDT: '0xDB0eD8ba93bcae27b624FFD0673FA75db11b4082', - // USDC_WETH: '0x0E6ad3EB50Fdd0EBcd45506dbF950b7d145128cc', - // USDT_WETH: '0x18390B775fd488c31a29c4E413ea04814554cFad' - // }, - // collateral: { - // USDC: '0x62463ed90eE009fbea795D1049D44992a3612c7A', - // USDT: '0xBdD17dE7975765bC79C15F76967e2B7981887DbF' - // }, - // governance: '0x4a8368662339D69377FF5bA77560DC6B907bCD85', - // pools: { - // USDC: '0xE0Df8E66BaE4aDdb8ec53C351cEC99e8A7240759', - // USDT: '0x4e61CF85ec7Aef00d3Fc02784C40Ff07283c2ceC' - // }, - // uniswap_other: { - // router: '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D', - // factory: '0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f' - // }, - // pricing: { swap_to_price: '0xfE421F7abb81Fc6D1E092a60139a12a3b6be8ba8' }, - // misc: { - // timelock: '0x6648307DFA2604B78595a1711118f92b04028eB4', - // migration_helper: '0xe13822b795EC5c5dD248a1CdC7B923B7d8c701D0' - // }, - // libraries: { - // UniswapV2OracleLibrary: '0x8A0C94E55d574C0652757C879BC89C9698076EF8', - // UniswapV2Library: '0x0E207C1332B7B9108417dE9134bd621CF212Db72', - // FraxPoolLibrary: '0x144E03F0eA54b67EB26C0CF5a06028E99670d0FB' - // }, - // pair_tokens: { - // 'Uniswap FRAX/WETH': '0x9A0b2d1C641561949f5f770711C3B05F86AB684e', - // 'Uniswap FRAX/USDC': '0x2Fa9D5bd5B04f12bD5e7be02a59C281Df66c817f', - // 'Uniswap FRAX/FXS': '0xC8b9A764d895E88F8D3383AeB599fE6F38503ef8', - // 'Uniswap FXS/WETH': '0x02F823CDc4C1adE61C51346CEDFE0bB242f554C0' - // }, - // staking_contracts: { - // 'Uniswap FRAX/WETH': '0xE970806d91699eB59F08D849b248fc294302C05c', - // 'Uniswap FRAX/USDC': '0xF02f75ffdA683fe98784E1CA048D779d5cE68174', - // 'Uniswap FRAX/FXS': '0x7a646162bE361c2ae96d57920a06200544cf0c4F', - // 'Uniswap FXS/WETH': '0x5B05E43546534f81CcBcb10D33B03Ac02fab1201' - // } - // }, - // ganache: { - // main: { - // FRAX: '0x4c2a7b591668988C6db9184d9df9394846Bc492d', - // FXS: '0xc2Bb9a3ae435AC36cC1eD2c4F64910B0CF8d8ec6', - // vesting: '0x68565D3dDDEe130152536d39eeD3c22A6653E584' - // }, - // weth: '0x9970c452f919b117b9A5dDa473Cf205B6446f104', - // oracles: { - // FRAX_WETH: '0xB6F388B031C74936c53d51Cd850b0a8A8879c136', - // FRAX_USDC: '0x3013CeBaF374D838426bb2f3EEF6DA86D2552c27', - // FRAX_USDT: '0x1a6B2699FE1E833C28C1c9CF69bc55b2aa4a821B', - // FRAX_6DEC: '0x0037b9708901674243F823bbCE425b455e1C7825', - // FRAX_FXS: '0xeb3d1033E0B1ADE4f122A0174142dD2827A29eFd', - // FXS_WETH: '0xD48FeeDBb2f79bCc61c1661Bb5C550dE5c03b052', - // FXS_USDC: '0xD234BD8098cECB9CcbFf4Bf997f9B77408EC7C78', - // FXS_USDT: '0x279dB552A0f507DCd6F073b8d687eF0927959DcF', - // FXS_6DEC: '0x687e2a83f24FA1584f7aC272Ef8f5F510ea8F0A9', - // USDC_WETH: '0x8564DA758dcb6577F87C6d9c1b53f13777018602', - // USDT_WETH: '0xeC5C28352B0e8F9Eaf12239c86996e964298d60c', - // '6DEC_WETH': '0x12711D46063C413dA53d079e88c757b003b3513e' - // }, - // collateral: { - // USDC: '0xff0B79ff7E0d0f5530dbb7Fa351cF9914Ab3f4E9', - // USDT: '0xD2A6475d9434CdE3Be7cD36debDC51C187be7dbD', - // '6DEC': '0x24ce4B5c5209678452fe236BD58A2e64F1d970b6' - // }, - // governance: '0xB6D19571bDC969673b7fA8080D5D80CD80b2D312', - // pools: { - // USDC: '0xeF6981031cCaFfc9B4761A1dc6C5adAa495438c1', - // USDT: '0x8c2B93A83D1f60329df986e4f4219830f8f0bE9d', - // '6DEC': '0xd32fE8cc271214d911003c0011dB1f9AD796602c' - // }, - // uniswap_other: { - // router: '0x8Be085050e221bd8Db17489bD853800e600f6f58', - // factory: '0xF70bB588d44509a214Ad260C84BA0cfB031c29c5' - // }, - // pricing: { swap_to_price: '0xeF2c3d7D30d2893b787c0546f9A97084b4A8F10b' }, - // misc: { - // timelock: '0xaD98E1e5fe7B9e79783373faE69632390f7825A0', - // migration_helper: '0xe40a86Fb20E497B423ff88c8deA4aa9994D4dC62' - // }, - // libraries: { - // UniswapV2OracleLibrary: '0xF9814413328Cc3B8B92Fd3B251461b34552f7f42', - // UniswapV2Library: '0x43098B53277892e7eb9Be480Ef7054124591cE16', - // FraxPoolLibrary: '0x992A40bfF600fd2A1B7C214F61904Db6931403af' - // }, - // pair_tokens: { - // 'Uniswap FRAX/WETH': '0x3483F272aba04b5dd819A4CdB3c4007dF909913c', - // 'Uniswap FRAX/USDC': '0xfBf1D205ADC586ad469A5a1a2a9451B2b4Bf1243', - // 'Uniswap FRAX/FXS': '0x7D6AD49359D3f9d0DCd7482FfD86B9C3b5a5a12D', - // // 'Uniswap FXS/WETH': '0x185c0F6A6e1D0998A22f3DA95BCc1F74b0A08Dd2' - // }, - // staking_contracts: { - // 'Uniswap FRAX/WETH': '0x13c9aE42c43DF2FB46218DF80b6Abad7D52a82C5', - // 'Uniswap FRAX/USDC': '0x3b9c2b598589578e640627d8975De51ea7928918', - // 'Uniswap FRAX/FXS': '0xd4119c5057237373c629eD9F83B79635a3e2e90b', - // // 'Uniswap FXS/WETH': '0x6135f354e143fbEB5fB159A76EB2590cf4f086b6' - // } - // } -} - - - - - - - - -export { }; // Force this file to be a module \ No newline at end of file diff --git a/truffle-config.js b/truffle-config.js deleted file mode 100644 index 3efcfbbf..00000000 --- a/truffle-config.js +++ /dev/null @@ -1,71 +0,0 @@ -const path = require('path'); -const envPath = path.join(__dirname, './.env'); -require('dotenv').config({ path: envPath }); - -// const HDWalletProvider = require("@truffle/hdwallet-provider"); -const HDWalletProvider = require("truffle-hdwallet-provider"); - -const providerFactory = () => { - return new HDWalletProvider( - process.env.MNEMONIC_PHRASE, - process.env.NETWORK_ENDPOINT, - 0, - 10 - ) - } - -module.exports = { - // Uncommenting the defaults below - // provides for an easier quick-start with Ganache. - // You can also follow this format for other networks; - // see - // for more details on how to specify configuration options! - // - networks: { - // development: { - // host: "127.0.0.1", - // port: 8545, // 7545 - // network_id: "*", - // // gas: 0x1ffffffffffffe - // }, - development: { - host: "127.0.0.1", - port: 8545, - network_id: "*", - // gas: 0x1ffffffffffffe - websockets: true, // Enable EventEmitter interface for web3 (default: false) - }, - mainnet: { - provider: providerFactory(), - network_id: 1, - gas: 8000000, - gasPrice: 115000000000, // 115 gwei, - }, - ropsten: { - provider: providerFactory(), - network_id: 3, - gas: 8000000, // Make sure this gas allocation isn't over 4M, which is the max - gasPrice: 30000000000, // 30 gwei, - }, - rinkeby: { - provider: providerFactory(), - network_id: 4, - gas: 8000000 // Sure this gas allocation isn't over 4M, which is the max - } - }, - compilers: { - solc: { - version: "0.6.11", - settings: { - optimizer: { - enabled: true, - runs: 100000 - } - } - } - }, - mocha: { - useColors: true - }, - plugins: ["truffle-contract-size"] -};